METODOLOGÍA PARA LA IMPLEMENTACIÓN DE CIRCUITOS ELÉCTRICOS PROGRAMADOS SOBRE ARDUINO
ARDUINO Acceso a PDF
https://play.google.com/books/s/370286768613/ebooks https://mega.nz/folder/a9thTIjA#bSAwbpbG3Z34DW3jJ_bMQg ARDUINO Aprende a programar Arduino desde una solución LADDER o GRAFCET con metodologías confiables https://youtube.com/playlist?list=PLHTERkK4EZJr7zDQNKjjEyxhErjllCCUy
ARDUINO BASADO EN LADDER Aprende a programar Arduino desde una solución LADDER con una metodología confiable https://youtube.com/playlist?list=PLHTERkK4EZJq9hjTGCDQmaLvi7CAyk_q_ Ing. Jovanny Rafael Duque
PLC´s o Arduinos Autómata programable - PLC
PLC Basados en Arduino
EDITORES LADDER PARA ARDUINO Outseal PLC
LD Micro
Soap Box
Easy Ladder V2.5
PLC BASADO EN ARDUINO - HARDWARE
HARDWARE CONEXIÓN DEL PROTOTIPO AL BANCO DE PRUEBAS ELECTRONEUMÁTICAS PLC BASADO EN ARDUINO
PLC BASADO EN ARDUINO - HARDWARE
Conexión del prototipo al banco de pruebas electroneumáticas
METODOLOGÍA - LENGUAJE LADDER Al pulsar CX3, la salida del PLC (H1) solo hará una secuencia de encendido y apagado intermitente por (4) cuatro ciclos de encendido (2s) y apagado (2s). Una vez realizados los 4 ciclos deberá accionarse el pulsador RESET para habilitar una nueva secuencia. 1) Especificaciones del sistema: Documentación del proceso
2) Simulación del proceso
VIDEO : CIRCUITOS ELÉCTRICOS FLUIDSIM
https://youtu.be/D thNIWzYofo
DEFINICIÓN DE LOS TIPOS DE CONTACTOS LO QUE ESTÁ CONECTADO SI SON
=
SI SON
3) Determinación de cantidad de E/S, temporizadores, contadores, etc.
LA LÓGICA QUE NECESITO 4) Selección del Arduino
5) Conexión de E/S - Direcciones asignadas -Tipos NO/NC -Tipos de contactos en editor LADDER (Normal Negado)
VIDEO ASOCIADO https://youtu.be/fJ2c 8X2PD4Y
6) Programación
/// TRATAMIENTO //ANTES
DEL
void
setup
PREVIO ()
// DECLARACIÓN DE VARIABLES int K1 = 0; int K2 = 0; int K3 = 0; // Las memorias = Relee. int RESET = 6; int CX3 = 7 ; // Pines de entrada. int H1 = 2; // Pin de salida del LED // Variables asociadas a "temp1". int T1 = 0 ; // Bit/memoria asociado al temporizador 1 int tiempo1 = 1000;//Tiempo de T1 int activado1 = 0; // Al principio no ha sido activado. long inicio1, final1, actual1; // Variables de la subrutina de T1
// Variables asociadas a "temp2". int T2 = 0 ; // Bit/memoria asociado al temporizador int tiempo2 = 1000; // Tiempo asignado a la Temporización 2 int activado2 = 0; // Al principio no ha sido activado. long inicio2, final2, actual2; // Variables de la subrutina de T2 // Variables asociadas al Contador 1 int CONTADOR1 = 0; // Guarda el numero de ciclos transcurridos const int PSCONTADOR1 = 3; // Preselect del Contador int ESTADOPREVIO_T1 = 0; // Estado previo del componente que incrementa el contador. int CONT1 = 0; // Es la variable que se activa cuando se cumplen los ciclos.
void setup()
{ //Apertura del "Monitor Serial.begin(9600);
serie"
//Declaración de puertos (pines) entrada como de salida pinMode(6, INPUT); pinMode(7, INPUT); pinMode(2, OUTPUT);
digitales tanto de
//Declaración del estado inicial salidas en bajo/apagadas digitalWrite(H1,0); }
de los pines de las
if ((T1 | K2) & (!K3)) { K2 = 1;} else {K2 = 0; }
6) Programación
if (K2) {activetemp2(); } else {desactivetemp2();} if (T2) {K3 = 1; } else {K3 = 0; }
//TRATAMIENTO
if (T1 != ESTADOPREVIO_T1) { if (T1 == 1) { CONTADOR1++; Serial.print("Numero de Ciclos : Serial.println(CONTADOR1); } ESTADOPREVIO_T1 = T1; }
SECUENCIAL
void loop(){
if ( CONTADOR1 >= PSCONTADOR1) { CONT1 = 1;} else { CONT1 = 0; }
RESET = digitalRead(6); CX3 = digitalRead(7);
if (!RESET == 1) { CONTADOR1 = 0; CONT1 = 0; Serial.print("Numero de Ciclos : Serial.println(CONTADOR1); }
if ((CX3 | K1 | T2) & (!CONT1) & (!T1)) {K1 = 1; } else {K1 = 0; } if (K1) {activetemp1(); } // Si se activa K1 corre Subrutina de temporización "void activetemp1()" else {desactivetemp1();
");
// TRATAMIENTO POSTERIOR if (K1) {digitalWrite(H1, 1);} else { digitalWrite(H1, 0); }
}
// Fin
del
Void Loop
");
6) Programación
//SUBRUTINAS DE TEMPORIZACIÓN //SUBRUTINAS
TEMPORIZADOR 1
void activetemp1() { if (activado1 == 0) { activado1 = 1; inicio1 = millis(); final1 = inicio1 + tiempo1; } actual1 = millis(); if (activado1 == 1 & (actual1 >= final1) ) { T1 = 1; } else {T1 = 0; } }
void desactivetemp1() { T1 = 0; activado1 = 0; inicio1 = 0; final1 = 0; actual1 = 0; } //- - - - - - - - - - - - - -
//SUBRUTINAS TEMPORIZADOR 2 void activetemp2() { if (activado2 == 0) { activado2 = 1; inicio2 = millis(); final2 = inicio2 + tiempo2; } actual2 = millis(); if (activado2 == 1 & (actual2 >= final2)) { T2 = 1; } else { T2 = 0; } } //- - - - - - - - - - - - - - - - void desactivetemp2() { T2 = 0; activado2 = 0; inicio2 = 0; final2 = 0; actual2 = 0; } //- - - - - - - - - - - - - 7) Configurar la comunicación 8) Pruebas y ajustes
DISPOSITIVO PARA EMBUTIR
DEFINICIÓN DEL TIPO DE CONTACTO (Normal o Negado)
IMPLEMENTACIÓN DEL PROGRAMA
https://youtu.be/cP4GUn4yiC4
IMPLEMENTACIÓN DEL PROGRAMA https://youtu.be/raeSWl7fr_M
GRACIAS