• No se han encontrado resultados

DISPOSITIVO PARA REMACHAR ELECTRONEUMÁTICO (A+/B+/TEMP/B-/A-/A+/A-)

N/A
N/A
Protected

Academic year: 2021

Share "DISPOSITIVO PARA REMACHAR ELECTRONEUMÁTICO (A+/B+/TEMP/B-/A-/A+/A-)"

Copied!
10
0
0

Texto completo

(1)

DISPOSITIVO PARA REMACHAR ELECTRONEUMÁTICO (A+/B+/TEMP/B-/A-/A+/A-)

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_

DIAGRAMA ESPACIO/FASE

ESPECIFICACIONES DEL CONTROL

1. El sistema de control debe permitir la selección entre Ciclo Único (CU), Ciclo Continuo (CC) o Ciclo X3.

(2)

2. El CC o CX3 deben quedar interrumpido (termina el ciclo actual y se detiene en posición inicial) por la acción de conmutar a CU (solicitud de parada a fin de Ciclo) o mediante el pulsador de Paro de Emergencia (PE) o cuando no hay más PIEZA (interruptor abierto).

3. El dispositivo se explora a través de un detector de PIEZA (interruptor cerrado), sin la presencia de PIEZA, no puede iniciar ningún ciclo.

4. Cuando se terminan las piezas en el depósito de gravedad y está en modo CC o Cx3, debe terminar el ciclo en el que está y al terminarlo, ha de pararse la instalación en su posición base (inicial).

5. Después de haber realizado los (3) tres ciclos del modo CX3 sólo puede iniciarse el funcionamiento en cualquier otro ciclo después de pulsar RESET. No debe haber ningún movimiento de a máquina al pulsar RESET, para iniciar cualquier ciclo deben usarse cualquiera de los pulsadores CU, CC o CX3.

6. Una vez accionado el pulsador de Paro de Emergencia, deben retornar inmediatamente todos los cilindros a la posición de partida, pero el sistema debe asegurar que el cilindro A regrese solo cuando el cilindro B lo haya hecho completamente. Debiendo quedar al final los dos cilindros retraídos en su posición inicial. Es decir primero verifica el retorno del cilindro B y después el retorno del cilindro A.

7. En el modo CC o en CX3 el sistema debe asegurar una temporización entre ciclos.

Aplicando los conocimientos adquiridos sobre control de sistemas electroneumáticos y apoyado n las m facilidades de simulación que ofrece el software Fluid Sim P se logró encontrar un circuito de control eléctrico que diera respuesta a cada una de las siete (7) especificaciones dadas anteriormente.

VER VIDEO DE APOYO

METODOLOGÍA PASO A PASO PARA REALIZAR CIRCUITOS ELECTRONEUMÁTICOS EN LADDER Realiza la simulación de un circuito electroneumático complejo paso a paso y siguiendo una

metodología.

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

(3)

8.

(4)

Fig. Circuito de control eléctrico que cumple con las especificaciones de control

(5)

COM1 PIN 7

PIN 6 PIN 23

PIN 27

Y1

Y3

A1 A2

A1 A2

3 4

PIN 25

Y2

A1 A2

PIN 14 4

1

PIN 15 A1

A0 1 4

1 4

B1 B0 1 4

1 4

PIN 16

PIN 18 C U

C

C

PE 1

PIN 13 PIN 12

PIN 8 C X 3

RESET

PIN 9

CONEXIÓN DE ENTRADAS Y SALIDAS ARDUINO MEGA

ENTRADAS

SALIDAS

+24 V

0V

+24 V 0V +24 V 0V

COM C

O N E X I Ó N

D E

E N T R A D A S

Y

S A L I D A S

ARDUINO MEGA

ALIMENTACIÓN DEL ARDUINO D

I S P O S I T I V O

P A R A

R E M A C H A R

Interruptor PIEZA

(6)

PROGRAMA EQUIVALENTE EN EL ARDUINO- IDE

/// TRATAMIENTO PREVIO

/// DISPOSITIVO PARA REMACHAR //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

//La designación Y1 y Y2 corresponde a los pine de salidas acoplada a las bobinas de la electroválvula 5/2 biestable

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 K9 = 0;

int K10 = 0;

int K11= 0;

int K12= 0;

int K13= 0;

int K14 = 0;

int K20 = 0;

int K_FIN_CICLO = 0;

int KCC = 0;

int KCX3 = 0;

int R_ESET=0;

// Las memorias asociadas a cada relé se declaran en estado inicial bajo o false.

int CU ;// Hará la función de pulsador de Ciclo Unico int CC ;// Harà la función de pulsador de Ciclo Continuo int CX3 ;// Harà la función de pulsador de 3 Ciclo

int PIEZA; // Harà la función de indicar si hay o no pieza

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 int PE; // Harà la función de boton de Paro de Emergencia

int Y1 = 23; // Pin de salida acoplada a las bobinas de la electroválvula 5/2 BI A+

int Y2 = 25; // Pin de salida acoplada a las bobinas de la electroválvula 5/2 BI A- int Y3 = 27; // Pin de salida acoplada a las bobinas de la electroválvula 5/2 MONO B+/-

// Variables asociadas a "temp1".

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

long inicio1, final1, actual1;

// Variables asociadas a "temp1".

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

long inicio2, final2, actual2;

(7)

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(6, INPUT);

pinMode(7, INPUT);

pinMode(8, INPUT);

pinMode(9, INPUT);

pinMode(12, INPUT);

pinMode(13, INPUT);

pinMode(14, INPUT);

pinMode(15, INPUT);

pinMode(16, INPUT);

pinMode(18, INPUT);

pinMode(23, OUTPUT);

pinMode(25, OUTPUT);

pinMode(27, OUTPUT);

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

//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, LOW);

digitalWrite(Y2, LOW);

digitalWrite(Y3, LOW);

}

//TRATAMIENTO SECUENCIAL void loop() {

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

//Capturar valores de puertos digitales de entrada

CU = digitalRead(6); CC = digitalRead(7); CX3 = digitalRead(8);

R_ESET = digitalRead(9); PIEZA = digitalRead(12); PE = digitalRead(13);

A_0 = digitalRead(14); A_1 = digitalRead(15);

B_0 = digitalRead(16); B_1 = digitalRead(18);

if ((( ( (CU | CC | CX3 | T2) & PIEZA & A_0 & B_0 & PE) | K1)) & (!K5)& (!K12) &

(!K14)& (CONTADOR1< PSCONTADOR1)) {K1 = 1;}

else { K1 = 0;}

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

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

if (K3) { activetemp1(); } else { desactivetemp1(); }

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

if ((((K4 & B_0) | K5)) & (!K6)& (!K12)& (!K14)) {K5 = 1; } else { K5 = 0; }

(8)

if ((((K5 & A_0) | K6)) & (!K7)& (!K12)& (!K14)) {K6 = 1;} else {K6 = 0; }

if ((((K6 & A_1) | K7)) & (!K12)& (!K14)& (!K_FIN_CICLO)) {K7 = 1;} else { K7 = 0; } if (K7 & A_0) { K_FIN_CICLO = 1;} else {K_FIN_CICLO = 0;}

if ((K_FIN_CICLO | K8) & (!K9) & (KCC | KCX3)) { K8 = 1;}else { K8 = 0;}

if (K8) { activetemp2(); } else { desactivetemp2(); }

if (T2) { K9 = 1;}else { K9 = 0;}

if (KCX3 & K_FIN_CICLO) { K20 = 1; } else { K20 = 0; } if (K20 != ESTADOPREVIO_K20) {

if (K20 == HIGH) { CONTADOR1++;

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

Serial.println(CONTADOR1); } ESTADOPREVIO_K20 = K20;

}

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

if ((CC | KCC) && (!CU)&& PIEZA && PE && (CONTADOR1< PSCONTADOR1) && (!KCX3) ) {KCC = 1;}

else {KCC = 0;}

if ((CX3| KCX3) && PE && PIEZA && (!CU) && (CONTADOR1< PSCONTADOR1) && (!KCC) ) {KCX3 = 1;} else {KCX3 = 0;}

if (((((!PE) & (!B_0)) | K10)) & (!K11)& (!K12)) {K10 = 1;} else { K10 = 0; }

if (K10 & B_0 & A_0) { K11= 1;} else {K11 = 0;}

if (((K10 & B_0 & (!A_0)) | K12) & (!K13)) {K12 = 1;} else { K12 = 0; }

if (K12 & A_0) { K13= 1; } else {K13 = 0;}

if ((((!PE) & B_0) | K14) & (!A_0)) { K14 = 1; } else { K14 = 0; }

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

if (K1 | K6) {digitalWrite(Y1, HIGH); } else {digitalWrite(Y1, LOW); }

if (K2) {digitalWrite(Y3, HIGH); } else { digitalWrite(Y3, LOW); }

if (K5 | K7 | K12 | K14) {digitalWrite(Y2, HIGH); } else {digitalWrite(Y2, LOW);}

// ACTIVAR LUCES CON LAS BOBINAS

if (K1 | K6) {digitalWrite(29, HIGH);}else {digitalWrite(29, LOW);}

if (K2) {digitalWrite(33, HIGH); } else {digitalWrite(33, LOW);}

if (K5 | K7 | K12 | K14) {digitalWrite(31, HIGH);}else {digitalWrite(31, LOW);}

(9)

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

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

//SUBRUTINA TEMPORIZADOR 1

//- - - -

void activetemp1() {

if (K3 && activado1 == 0) { // Si K1 esta activa y no ha sido activado=0 antes...

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

inicio1 = millis();

final1 = inicio1 + 3000;

}

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

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

} else { T1 = LOW;

}

}

//- - - -

void desactivetemp1() { T1 = LOW;

activado1 = 0; inicio1 = 0;

final1 = 0; actual1 = 0;

}

//- - - -

//SUBRUTINA TEMPORIZADOR 2

//- - - -

void activetemp2() {

if (K8 && activado2 == 0) { // Si XX esta activa y no ha sido activado=0 antes...

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

inicio2 = millis();

final2 = inicio2 + 3000;

}

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

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

} else { T2 = LOW;

} }

//- - - -

void desactivetemp2() { T2 = LOW;

activado2 = 0; inicio2 = 0;

final2 = 0; actual2 = 0;

}

//- - - -

(10)

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_co nfirmation=1_

__________________________________

y Amigos/as en el BLOGG MEKATRONICA J DUKE 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

El funcionamiento CC (Ciclo Continuo) o funcionamiento en CX3, deben quedar interrumpido (termina el ciclo actual y se detiene) por la acción del pulsador de STOP, por

El dispositivo se explora a través de un detector de pieza, cuando no hay piezas en el depósito, no ha de iniciar un ciclo o ha de pararse la instalación en su posición

El sistema de control debe permitir la selección entre Ciclo Único (CU), Ciclo Continuo (CC) o Ciclo X3 (CX3).. El CC o CX3 deben quedar interrumpido (termina el ciclo actual y

El dispositivo se explora a través de un detector de pieza, cuando no hay piezas en el depósito, ha de pararse la instalación en su posición base, debiendo quedar interrumpido

El CC o CX3 deben quedar interrumpido (termina el ciclo actual y se detiene en posición inicial) por la acción de conmutar a CU (solicitud de parada a fin de Ciclo) o mediante

El sistema de control neumático por Cascada debe permitir la selección entre Ciclo Único (CU), Ciclo Continuo (CC) o Ciclox3 (Cx3). Cualquier ciclo (CU), (CC) o (Cx3) debe iniciar

Después de haber realizado los (3) tres ciclos del modo CX3 sólo puede iniciarse el funcionamiento en cualquier otro ciclo después de pulsar RESET. No debe haber ningún movimiento

El CC debe quedar interrumpido (termina el ciclo actual y se detiene) por la acción de conmutar a CU o mediante el pulsador de Paro de Emergencia (PE).. El dispositivo se