• No se han encontrado resultados

ARDUINO GRAFCET - A+TEMPA- CONDICIONES OK FLUIDSIM P ARDUINO GRAFCET

N/A
N/A
Jovanny Duque

Academic year: 2022

Share "ARDUINO GRAFCET - A+TEMPA- CONDICIONES OK FLUIDSIM P ARDUINO GRAFCET"

Copied!
12
0
0

Texto completo

(1)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 1

CICLO DE TRABAJO (A+/TEMPORIZACIÓN/ A-) CON POSIBILIDAD DE ELEGIR ENTRE CU – CC O CX3 CON TEMP. ENTRE CICLOS

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

GRAFCET CON ARDUINO Programa en Arduino sistemas secuenciales simulados en GRAFCET , con un método confiable 100%

https://youtube.com/playlist?list=PLHTERkK4EZJpJEcByUotJ5YOIiC-Vmimt

ESPECIFICACIONES DEL CONTROL

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

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 el cilindro.

Debiendo quedar al final retraído en su posición inicial.

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

(2)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 2

GRAFCET EQUIVALENTE PARA ARDUINO

(3)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 3

ESQUEMA DE CONEXIÓN DE E / S SIMULACIÓN FLUID SIM P 4.2

(4)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 4

Actividad: Observa el video “1 GRAFCET FLUIDIM P 4.2” en el que se

describe un proyecto sencillo programado con GRAFCET usando el software FLUID SIMP 4.2 de FESTO, en el enlace

https://www.youtube.com/watch?v=ocYJqCrrSlk&t=11s

Actividad: Observa el video “2 GRAFCET FLUIDIM P 4.2” en el que se describe en detalle, como usar el editor de GRAFCET del software FLUID SIMP 4.2 de FESTO para modelar el sistema, en el enlace

https://www.youtube.com/watch?v=KcgWf2-GAsc

ESQUEMA DE CONEXIÓN DE E / S ARDUINO UNO

(5)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 5

CÓDIGO EQUIVALENTE PARA ARDUINO

//TRATAMIENTO PREVIO

// ETAPAS GRAFCET PRINCIPAL

int E1; int E2; int E3; int E4; int E5; int E10;

int E11; int E14; int E21;

// ETAPAS GRAFCET CICLO CONTINUO int E6; int E7; int E61;

// ETAPAS GRAFCET CICLO X 3 int E8; int E9; int E81;

// ETAPAS GRAFCET P EMERGENCIA int E12; int E13; int E120;

// DECLARACION DE LOS PINES DE ENTRADAS

int PIEZA = 2; int PE = 7; int CU = 3;

int CC = 4; int A_0 = 9; int A_1 = 10;

int CX3 = 13; int RESET = 8;

// DECLARACION DE LOS PINES DE LAS SALIDAS

int Y1 = 5; int Y2 = 6;

// DECLARACION E INICIALIZACION DE LAS MEMORIAS

int MCC = LOW; int MCX3 = LOW;

int FIN_CX3 = LOW; int EMERG = LOW;

// Variables asociadas a "temp1".

int T1;

int activado1 = 0; // Al principio no ha sido activado.

long inicio1, final1, actual1;

// Variables asociadas a “temp2".

int T2;

int activado2 = 0; // Al principio no ha sido activado.

long inicio2, final2, actual2;

// Variables asociadas a "temp3".

int T3;

int activado3 = 0; // Al principio no ha sido activado.

long inicio3, final3, actual3;

// Variables asociadas a CONTADOR int CONTADOR = 0; // INICIALIZACIÒN DEL CONTADOR

const int PSCONTADOR = 3; // PRESELEC DEL CONTADOR = # DE CICLOS

int ESTADOPREVIO_E3 = 0;

void setup ()

{ Serial.begin(9600);

//entradas//

pinMode (PIEZA, INPUT);

pinMode (PE, INPUT);

pinMode (CU, INPUT);

pinMode (CC, INPUT);

pinMode (A_0, INPUT);

pinMode (A_1, INPUT);

pinMode (CX3, INPUT);

pinMode (RESET, INPUT);

(6)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 6 //SALIDAS//

pinMode (Y1, OUTPUT);

pinMode (Y2, OUTPUT);

//ALGUNOS DISPOSITIVOS TRAEN UNA CONFIGURACION POR ESO ES NECESARIO COLOCAR LOS PUERTOS EN 0V

digitalWrite (Y1, LOW);

digitalWrite (Y2, LOW);

// ETAPAS DEL GRAFCET PRINCIPAL (ESTADO INICIAL)

E1 = HIGH; E2 = LOW; E3 = LOW; E4 = LOW;

E5 = LOW; E10 = LOW; E11 = LOW; E14 = LOW; E21 = LOW;

// ETAPAS DEL GRAFCET C CONTINUO (ESTADO INICIAL)

E6 = HIGH; E7 = LOW; E61 = LOW;

// ETAPAS DEL GRAFCET CCICLO X3 E8 = HIGH; E9 = LOW; E81 = LOW;

// ETAPAS GRAFCET PE

E12 = HIGH; E13 = LOW; E120 = LOW;

}

//TRATAMIENTO SECUENCIAL

void loop ()

{

PIEZA = digitalRead (2);

PE = digitalRead (7);

CU = digitalRead (3);

CC = digitalRead (4);

A_0 = digitalRead (9);

A_1 = digitalRead (10);

CX3 = digitalRead (13);

RESET = digitalRead (8);

// ECUACIONES GRAFCET PRINCIPAL

E1 = ((E1 | (E14 & RESET) | (E14 & PE) | (E21 &

E21) | (E11 & PE) | (E5 & ((~MCC) & (~MCX3))) | (E10 & PE) | (E3 & PE) | (E4 & PE)) & (~E2));

E2 = ((E2 | (E10 & T2) | (E11 & T3) | (E1 & PIEZA

& A_0 & (CU | CC | CX3) & (~EMERG))) & (~E3) &

(~E21));

E21 = (((E21 | (E2 & PE))) & (~E1));

E3 = ((E3 | (E2 & A_1)) & (~E4) & (~E1));

E4 = ((E4 | (E3 & T1)) & (~E5) & (~E1));

E5 = ((E5 | (E4 & A_0)) & (~E1) & (~E10) & (~E11)

& (~E14));

E10 = ((E10 | (E5 & MCC & (~MCX3))) & (~E1) &

(~E2));

E11 = ((E11 | (E5 & MCX3 & (~MCC) &

(CONTADOR < PSCONTADOR))) & (~E1) &

(~E2));

E14 = ((E14 | (E5 & MCX3 & (~MCC) &

(CONTADOR >= PSCONTADOR))) & (~E1));

// ECUACIONES GRAFCET C CONTINUO E6 = ((E6 | (E61 & E61)) & (~E7));

E7 = ((E7 | (E6 & CC & (~MCX3) & (~FIN_CX3) &

(~EMERG))) & (~E61));

E61 = ((E61 | (E7 & (CU | (~PIEZA) | PE))) &

(~E6));

// ECUACIONES GRAFCET CX3 E8 = ((E8 | (E81 & E81)) & (~E9));

E9 = ((E9 | (E8 & CX3 & (~MCC) & (~EMERG))) &

(~E81));

E81 = ((E81 | (E9 & (CU | PE | (~PIEZA) | FIN_CX3))) & (~E8));

(7)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 7 // ECUACIONES GRAFCET P EMERGENCIA

E12 = ((E12 | (E120 & E120)) & (~E13));

E13 = ((E13 | (E12 & PE)) & (~E120));

E120 = ((E120 | (E13 & A_0)) & (~E12));

//TRATAMIENTO POSTERIOR

if (E1 == HIGH) { Serial.println("Etapa1");

Serial.print("VALOR DEL CONTADOR: ");

Serial.println(CONTADOR);}

if (E2 == HIGH) { digitalWrite (Y1, HIGH);

Serial.println("Etapa2");}

else {digitalWrite (Y1, LOW);}

if (E3 == HIGH) {

Serial.println("Etapa3 33333333");

activetemp1();}

else {desactivetemp1();}

if ((E3 & MCX3) != ESTADOPREVIO_E3) { if (E3 == HIGH)

{ CONTADOR++;

Serial.print("CONTADOR : " );

Serial.println(CONTADOR);

}

ESTADOPREVIO_E3 = E3;

}if (E4 == HIGH) {digitalWrite (Y2, HIGH);

Serial.println("Etapa4");}

else {digitalWrite (Y2, LOW);}

if (E5 == HIGH) {

Serial.println("Etapa5");}

if (E6 == HIGH) {

Serial.println("Etapa6");}

if (E7 == HIGH) {MCC = HIGH;

Serial.println("Etapa7 MCC");}

else {MCC = LOW;}

if (E8 == HIGH) {Serial.println("Etapa 8 ");}

if (E9 == HIGH) {MCX3 = HIGH;

Serial.println("Etapa9 MCX3");}

else {MCX3 = LOW;}

if (E10 == HIGH) {Serial.println("Etapa10");

activetemp2();}

else {desactivetemp2();}

if (E11 == HIGH) {Serial.println("Etapa11 ");

activetemp3();}

else {desactivetemp3();}

if (E12 == HIGH) {Serial.println("Etapa12");}

if (E13 == HIGH) {digitalWrite (Y1, LOW);

digitalWrite (Y2, HIGH);

EMERG = HIGH;

Serial.println("Etapa13 EMERG ");}

else {EMERG = LOW;}

if (E120 == HIGH) {

Serial.println("Etapa120 ");

digitalWrite (Y2, LOW);}

(8)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 8 if (E61 == HIGH) {

Serial.println("Etapa61");}

if (E81 == HIGH) {Serial.println("Etapa81");}

if (E14 == HIGH) {FIN_CX3 = HIGH;

CONTADOR = 0;

Serial.println("Etapa 14 ");}

else {FIN_CX3 = LOW;}

}

//SUBRUTINA TEMPORIZADOR 1 void activetemp1() {

if (E3 == HIGH && activado1 == 0) { // Si ha pulsado HIGH y no ha sido activado=0 antes...

activado1 = 1; //

marca activado=1 y guarda el tiempo de inicio.

inicio1 = millis();

final1 = inicio1 + 1000; //

Tiempo final es inicio más 8 segundos.

}

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

if (activado1 == 1 && (actual1 > final1) ) { //

Si fue activado=1 y el tiempo actual es mayor que el final....

T1 = HIGH;

}

else {

T1 = LOW;

}

}

void desactivetemp1() { T1 = LOW;

activado1 = 0;// haz un parpadeo.

inicio1 = 0;

final1 = 0;

actual1 = 0;

}

//SUBRUTINA TEMPORIZADOR 2 void activetemp2() {

if (E10 == HIGH && activado2 == 0) {// Si ha pulsado HIGH y no ha sido activado=0 antes...

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

inicio2 = millis();

final2 = inicio2 + 2000; // Tiempo final es inicio mas 2 segundos.

}

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

if (activado2 == 1 && (actual2 > final2)) {// Si fue activado=1 y el tiempo actual es mayor que el final....

T2 = HIGH;}

else {T2 = LOW;}

}

void desactivetemp2() { T2 = LOW;

activado2 = 0;// haz un parpadeo.

inicio2 = 0;

final2 = 0;

(9)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 9 actual2 = 0;

}

//SUBRUTINA TEMPORIZADOR 3 void activetemp3() {

if (E11 == HIGH && activado3 == 0) {// Si ha pulsado HIGH y no ha sido activado=0 antes...

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

inicio3 = millis();

final3 = inicio3 + 2000; // Tiempo final es inicio mas 2 segundos.

}

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

if (activado3 == 1 && (actual3 > final3)) {// Si fue activado=1 y el tiempo actual es mayor que el final....

T3 = HIGH;}

else {T3 = LOW;}

}

void desactivetemp3() { T3 = LOW;

activado3 = 0;// haz un parpadeo.

inicio3 = 0;

final3 = 0;

actual3 = 0;

}

(10)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 10 // ECUACIONES GRAFCET PRINCIPAL

E1 = ((E1 | (E14 & RESET) | (E14 & PE) | (E21 & E21) | (E11 & PE) | (E5 & ((~MCC) & (~MCX3))) | (E10 & PE) | (E3 & PE) | (E4 & PE)) & (~E2));

E2 = ((E2 | (E10 & T2) | (E11 & T3) | (E1 & PIEZA & A_0 & (CU | CC | CX3) & (~EMERG))) & (~E3) & (~E21));

E21 = (((E21 | (E2 & PE))) & (~E1));

E3 = ((E3 | (E2 & A_1)) & (~E4) & (~E1));

E4 = ((E4 | (E3 & T1)) & (~E5) & (~E1));

E5 = ((E5 | (E4 & A_0)) & (~E1) & (~E10) & (~E11) & (~E14));

E10 = ((E10 | (E5 & MCC & (~MCX3))) & (~E1) & (~E2));

E11 = ((E11 | (E5 & MCX3 & (~MCC) & (CONTADOR < PSCONTADOR))) & (~E1) & (~E2));

E14 = ((E14 | (E5 & MCX3 & (~MCC) & (CONTADOR >= PSCONTADOR))) & (~E1));

// ECUACIONES GRAFCET C CONTINUO

E6 = ((E6 | (E61 & E61)) & (~E7));

E7 = ((E7 | (E6 & CC & (~MCX3) & (~FIN_CX3) & (~EMERG))) & (~E61));

E61 = ((E61 | (E7 & (CU | (~PIEZA) | PE))) & (~E6));

// ECUACIONES GRAFCET CX3

E8 = ((E8 | (E81 & E81)) & (~E9));

E9 = ((E9 | (E8 & CX3 & (~MCC) & (~EMERG))) & (~E81));

E81 = ((E81 | (E9 & (CU | PE | (~PIEZA) | FIN_CX3))) & (~E8));

// ECUACIONES GRAFCET P EMERGENCIA

E12 = ((E12 | (E120 & E120)) & (~E13));

E13 = ((E13 | (E12 & PE)) & (~E120));

E120 = ((E120 | (E13 & A_0)) & (~E12));

(11)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 11

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/

(12)

Elaborado por el Ing. Jovanny Duque Docente de la Institución Universitaria - ITSA Pág. 12

Referencias

Documento similar