• No se han encontrado resultados

PROYECTO IMPLEMENTACIÓN DE LADDER SOBRE ARDUINO ESTUDIO DE CASO 1

N/A
N/A
Protected

Academic year: 2021

Share "PROYECTO IMPLEMENTACIÓN DE LADDER SOBRE ARDUINO ESTUDIO DE CASO 1"

Copied!
9
0
0

Texto completo

(1)

PROYECTO IMPLEMENTACIÓN DE LADDER SOBRE ARDUINO ESTUDIO DE CASO 1

https://youtube.com/playlist?list=PLHTERkK4EZJq9hjTGCDQmaLvi7CAyk_q_

CONTROL DE CIRCUITOS ELECTRONEUMÁTICOS / ELECTROHIDRÁULICOS

Este ejemplo de aplicación representa las bases para el desarrollo de una metodología de automatización de tarjetas Arduino sobre el lenguaje LADDER.

Planteamiento de la situación:

Diseñe el Circuito de control eléctrico para g obernar los cilindros A y B según el diagrama Espacio- Fase (CASO ASIGNADO), tal que al dar la señal de inicio (CX3) , realice solo tres (3) ciclos completos con una temporización entre cada ciclo, una vez terminado, solo se podrá reiniciar, reseteando el contador de circuito.

A TENER EN CUENTA = Todos los proyectos usaran las mismas electroválvulas, al finalizar los 3 ciclos todos los relés deben estar desactivados, todos los proyectos usarán los mismos pines de entradas y salidas.

Diagrama Espacio - Fase

Circuito Electroneumático o Circuito Electrohidráulico

(2)

Circuito de control eléctrico

(3)

PINES DE ENTRADA Y SALIDA ARDUINO UNO

EN LA ESTACIÓN “ITSAINO”

(4)

// CÓDIGO ARDUINO - PINES DE ENTRADA Y SALIDA ARDUINO UNO EN LA ESTACIÓN “ITSAINO”

/// TRATAMIENTO PREVIO

/// DISPOSITIVO PARA REMACHAR /// I/ 0 AUTOINO OKOK //DECLARACION DE VARIABLES

//Declaración de las variables Ki corresponden a las reles/memorias utilizadas para el circuito/programa

//Declaración de las variables de las entradas corresponden a las Entradas de pulsador NO (Normalmente abiertos) utilizadas para el circuito/programa

// Declaración de las memorias asociadas a cada relé se declaran en estado inicial bajo o false.

int K1 = 0;

int K2 = 0;

int K3 = 0;

int K4 = 0;

int K5 = 0;

int K6 = 0;

int K7 = 0;

int K8 = 0;

int K_F_C= 0;

// Declaración de las variables de Entradas y Salidas.

// ENTRADAS

int CX3 ; //Entrada de Pulsador que harà la función de pulsador de 3 Ciclo

int R_ESET ; // Entrada de Pulsador que harà la función de resetear el contador int A_0 ; // Harà la función de sensor de entrada final de carrera

int A_1; // Harà la función de sensor de entrada final de carrera int B_0 ; // Harà la función de sensor de entrada final de carrera int B_1; // Harà la función de sensor de entrada final de carrera // SALIDAS

int Y1 = 2; // Pin de salida acoplada a la bobina Y1 de la electroválvula 4/3 BI A+

int Y2 = 3; // Pin de salida acoplada a la bobina Y2 de la electroválvula 4/3 BI A-

int Y3 = 4; // Pin de salida acoplada a la bobina Y3 de la electroválvula 4/2 MONO B+/-

(5)

// Variables asociadas a "temp1".

int T1 = 0; // Bit asociado al temporizador 1 int activado1 = 0; // Al principio no ha sido activado.

long inicio1, final1, actual1;

// Variables asociadas a "temp1".

int T2 = 0; // Bit asociado al temporizador 1 int activado2 = 0; // Al principio no ha sido activado.

long inicio2, final2, actual2;

// Variables asociadas al Contador 1

int CONTADOR1 = 0; // Representa el valor actual del contador o ciclos completos realizados const int PSCONTADOR1 = 3; // Preselect del Contador o # de ciclos , Representa el # de

ciclos que se desean realizar

int CONT1=0; // Es la variable que se activa cuando s cumplen los ciclos es decir cuando (CONTADOR1 >=PSCONTADOR1)

int ESTADOPREVIO_K7 = 0; // Estado previo del componente que incrementa el contador, CAMBIAR SEGÚN EL CASO

// en este caso K7 incrementa el contador void setup() {

// put your setup code here, to run once:

//Apertura del visualizador serial Serial.begin(9600);

//Declaración de puertos digitales de Entradas y Salidas pinMode(8, INPUT);

pinMode(9, INPUT);

pinMode(10, INPUT);

pinMode(11, INPUT);

pinMode(12, INPUT);

pinMode(13, INPUT);

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

//Algunos dispositivos traen una configuración "Sinking and Sourcing"

(6)

//por eso es necesario colocar los puertos de salida en 0v.

//Declaración del estado inicial de los pines de las salidas en bajo/apagadas digitalWrite(Y1, 0);

digitalWrite(Y2, 0);

digitalWrite(Y3, 0);

}

//TRATAMIENTO SECUENCIAL

void loop() {

// put your main code here, to run repeatedly:

//Capturar valores de puertos digitales de entrada CX3 = digitalRead(8); R_ESET = digitalRead(9);

A_0 = digitalRead(10); A_1 = digitalRead(11);

B_0 = digitalRead(12); B_1 = digitalRead(13);

if ( ( ((CX3 | T2) & A_0 & B_0) | K1) & (!K5) & (!CONT1)) { K1 = 1; } else { K1 = 0; }

if (((K1 & A_1) | K2) & (!K4) ) { K2 = 1; } else {K2 = 0; }

if (((K2 & B_1) | K3) & (!K4)) { K3 = 1;} else {K3 = 0;}

if (K3) { activetemp1();}

else {desactivetemp1(); }

if ((T1 | K4) & (!K5) ) {K4 = 1;}

else {K4 = 0; }

if (((K4 & B_0) | K5) & (!K6)) {K5 = 1;}

else {K5 = 0;}

if (((K5 & A_0) | K6) & (!K7)) { K6 = 1;}

else { K6 = 0; }

if (((K6 & A_1) | K7) & (!K_F_C)) {K7 = 1; }

(7)

else {K7 = 0;}

if (((K7 & A_0) | K_F_C) & (!K8)) {K_F_C = 1;}

else {K_F_C = 0;}

if (K_F_C) {activetemp2();}

else { desactivetemp2(); } if (T2) { K8 = 1;}

else {K8 = 0;}

if (K7 != ESTADOPREVIO_K7) { if (K7 == 1) {CONTADOR1++;

Serial.print("Numero de Ciclos : ");

Serial.println(CONTADOR1); } ESTADOPREVIO_K7 = K7;

}

if ( CONTADOR1 >=PSCONTADOR1) {CONT1=1;}

else {CONT1=0;}

if (R_ESET) {CONTADOR1 = 0; CONT1=0; Serial.println(CONTADOR1); Serial.print("Numero de Ciclos : "); }

// TRATAMIENTO POSTERIOR - ACTIVACIÓN DE LAS SALIDAS/ ACCIONES

if (K1 | K6) {digitalWrite(Y1,1); } else {digitalWrite(Y1, 0); }

if (K2) {digitalWrite(Y3, 1);}

else {digitalWrite(Y3, 0);}

if (K5 | K7 ) {digitalWrite(Y2, 1);}

else {digitalWrite(Y2, 0);}

} // Fin del Void Loop

//SUBRUTINAS DE TEMPORIZACIÓN (Par cada temporización se asigna un subprograma

//activetempx y un desactivetempx usando para ello comparaciones con el comando millis

(8)

//SUBRUTINA TEMPORIZADOR 1

//- - - void activetemp1() {

if (activado1 == 0) { // Si no ha sido activado=0 antes...

activado1 = 1; // marca activado=1 y guarda el tiempo de inicio.

inicio1 = millis();

final1 = inicio1 + 2000;

}

actual1 = millis(); // Consulta el tiempo actual.

if (activado1 == 1 && (actual1 > final1) ) {T1 = 1;}

else {T1 = 0;}

}

//- - - void desactivetemp1() {

T1 = 0;

activado1 = 0; inicio1 = 0;

final1 = 0; actual1 = 0;

}

//- - - //SUBRUTINA TEMPORIZADOR 2

//- - - void activetemp2() {

if (activado2 == 0) { // Si no ha sido activado=0 antes...

activado2 = 1; // marca activado=1 y guarda el tiempo de inicio.

inicio2 = millis();

final2 = inicio2 + 2000;

}

actual2 = millis(); // Consulta el tiempo actual.

if (activado2 == 1 && (actual2 > final2) ) {T2 = 1;}

else {T2 = 0;}

}

//- - - void desactivetemp2() {

T2 = 0;

activado2 = 0; inicio2 = 0;

final2 = 0; actual2 = 0;

}

(9)

Jóvenes, este material ha sido elaborado con mucho gusto.

Si te es útil Regálame un Like, comenta y suscríbete :) (っ◕‿◕) Te invito al CANAL DE YOUTUBE MEKATRONICA

para conocer más

http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_

__________________________________

y Amigos/as en el BLOGG MEKATRONICA podrás encontrar cantidad de recursos sobre SOLIDWORKS, HIDRÁULICA - ELECTROHIDRÁULICA , NEUMÁTICA, ELECTRONEUMÁTICA, CONTROL, PLC M221, PLC SIEMEMS S7 1200, PLC SIEMENS S7 300 , FLUID SIM FACTORY

IO, entre otros

https://mecatronica-itsa.blogspot.com/

Referencias

Documento similar

DS N° 012-2014-TR Registro Único de Información sobre accidentes de trabajo, incidentes peligrosos y enfermedades ocupacionales y modificación del art.110º del Reglamento de la Ley

Petición de decisión prejudicial — Cour constitutionnelle (Bélgica) — Validez del artículo 5, apartado 2, de la Directiva 2004/113/CE del Consejo, de 13 de diciembre de 2004, por

El contar con el financiamiento institucional a través de las cátedras ha significado para los grupos de profesores, el poder centrarse en estudios sobre áreas de interés

Fuente de emisión secundaria que afecta a la estación: Combustión en sector residencial y comercial Distancia a la primera vía de tráfico: 3 metros (15 m de ancho)..

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

You may wish to take a note of your Organisation ID, which, in addition to the organisation name, can be used to search for an organisation you will need to affiliate with when you

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the