METODOLOGÍA PARA LA IMPLEMENTACIÓN DE CIRCUITOS ELÉCTRICOS SOBRE
ARDUINO
VIDEO EXPLICATIVO
ARDUINO BASADO EN LADDER
https://youtube.com/playlist?list=PLHTERkK4EZJq9hjTGCDQmaLvi7CAyk_q_
Aprende a programar Arduino desde una solución LADDER con una metodología confiable
CIRCUITOS ELÉCTRICOS FLUIDSIM
https://youtu.be/DthNIWzYofo
https://youtu.be/fJ2c8X2PD4Y
PLC´s o Arduinos
Autómata programable - PLC PLC Basados en Arduino
EDITORES LADDER PARA ARDUINO
Outseal PLC Soap Box
LD Micro Easy Ladder V2.5
PLC BASADO EN ARDUINO - HARDWARE
PLC BASADO EN ARDUINO
CONEXIÓN DEL PROTOTIPO AL BANCO DE PRUEBAS
ELECTRONEUMÁTICAS
HARDWARE
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
3) Determinación de cantidad de E/S,
temporizadores, contadores, etc.
4) Selección del Arduino
VIDEO ASOCIADO https://youtu.be/fJ2c 8X2PD4Y
5) Conexión de E/S - Direcciones
asignadas -Tipos NO/NC -Tipos de
contactos en editor LADDER
(Normal Negado)
LA LÓGICA QUE NECESITO LO QUE ESTÁ CONECTADO
SI SON
SI SON =
// 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 serie"
Serial.begin(9600);
//Declaración de puertos (pines) digitales tanto de entrada como de salida
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(2, OUTPUT);
//Declaración del estado inicial de los pines de las salidas en bajo/apagadas
digitalWrite(H1,0); }
/// TRATAMIENTO PREVIO
//ANTES DEL void setup () // 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 6) Programación
if ((T1 | K2) & (!K3)) { K2 = 1;}
else {K2 = 0; }
if (K2) {activetemp2(); } else {desactivetemp2();}
if (T2) {K3 = 1; } else {K3 = 0; }
if (T1 != ESTADOPREVIO_T1) { if (T1 == 1) {
CONTADOR1++;
Serial.print("Numero de Ciclos : ");
Serial.println(CONTADOR1); } ESTADOPREVIO_T1 = T1; }
if ( CONTADOR1 >= PSCONTADOR1) { CONT1 = 1;}
else { CONT1 = 0; }
if (!RESET == 1) {
CONTADOR1 = 0; CONT1 = 0;
Serial.print("Numero de Ciclos : ");
Serial.println(CONTADOR1); }
// TRATAMIENTO POSTERIOR
if (K1) {digitalWrite(H1, 1);}
else { digitalWrite(H1, 0); }
}
// Fin del Void Loop//TRATAMIENTO SECUENCIAL void loop() {
RESET = digitalRead(6);
CX3 = digitalRead(7);
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();
6) Programación
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;
}
//- - - - //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; }
}
7) Configurar la comunicación 8) Pruebas y ajustes 6) Programación
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