GRAFCET GENERAL 2 SOBRE Arduino

Page 1

GRAFCET GENERAL 2 SOBRE

Arduino VIDEO DE APOYO : GRAFCET CON ARDUINO Programa en Arduino sistemas secuenciales simulados en GRAFCET , con un metodo confiable 100% https://youtube.com/playlist?list=PLHTERkK4EZJpJEcByUotJ5YOIiCVmimt

Hola jóvenes, en estos enlaces del BLOGG y DEL CANAL, pueden encontrar recursos sobre fundamentos de ingeniería mecatrónica como : SOLIDWORKS, PROGRAMACIÓN DE ARDUINO, HIDRÁULICA – LENGUAJE LADDER , LENGUAJE GRAFCET ,ELECTROHIDRÁULICA , NEUMÁTICA, ELECTRONEUMÁTICA, PLC M221, PLC SIEMEMS S7 1200, PLC SIEMENS S7 300 , FLUID SIM, FACTORY IO, CONTROL, entre otros https://www.mecatrónica.com.co/ https://mecatronicaitsa.blogspot.com/ http://www.youtube.com/c/Jovanny Duque?sub_confirmation=1_ Si te ha sido útil, regálame un Like, comenta y suscríbete :) (っ◕‿◕)


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

GRAFCET GENERICO PARA EL CONTROL DE CUATRO (4) LUCES USANDO CUATRO (4) PULSADORES NA. OBJETIVO: Realice la programación del GRAFCET asignado en la trarjeta ARDUINO UNO

ESQUEMA DE CONEXIÓN DE E / S PLC TWIDO

VIDEO DE APOYO : GRAFCET CON FLUIDSIM Usa el software Fluid Sim P para simular GRAFCET aplicados a sistemas electroneuma ticos, desde lo ma s sencillo a lo ma s complejo. https://youtube.com/playlist?list=PLHTERkK4EZJoUmPtqY8kKCboLIrGN8tYc

VIDEO DE APOYO :

VIDEO DE APOYO : GRAFCET GENERICO Elaborado por Ing. Jovanny Duque

pág. 1


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://youtube.com/playlist?list=PLHTERkK4EZJqYRyOEp40oJs2miTM35BKY AJUSTAR CON EL PROGRAMA DE ARDUINO ALGUNAS TRANSICIONES Y RECEPTIVIDADESSS (T1-T2-T3 AJUSTARLO EN EL FLUID SIN V 4.2

Elaborado por Ing. Jovanny Duque

pág. 2


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ PROGRAMACION ARDUINO //// GRAFCET GENERICO # 2 //// Ajustar exactamente al GRAFCET’s generico 2 okok funcionando (T1 VARIABLES TERMINADAS EN 1)

VER ANTACIONES EN EL ARCHIVO .INO DE ARDUINO HACER PRUEBAS CON CADA UNA int E1; int E2; int E3; int E4; int E5; int E6; int E7; int E8; int E9; int E10; int E11; int E12; int E13; int E14; int E15; int E16; int E17; int E18; int E19; int E20; int E21; int E22; int E23; int E24;

int S1 = 6; int S2 = 7; int S3 = 8; int S4 = 9;

Elaborado por Ing. Jovanny Duque

pág. 3


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ int L1 = 2; int L2 = 3; int L3 = 4; int L4 = 5;

int T1; int T2; int T3;

//temp1 int activado = 0; // Al principio no ha sido activado. long inicio, final, actual;

//temp2 int activado2 = 0; // Al principio no ha sido activado. long inicio2, final2, actual2;

//temp3 int activado3 = 0; // Al principio no ha sido activado. long inicio3, final3, actual3;

void setup() { // put your setup code here, to run once: //APERTURA DEL VISUALIZADOR SERIAL Serial.begin(9600);

//DECLARACION DE PUERTOS DIGITALES

//entradas// pinMode(6, INPUT); pinMode(7, INPUT); pinMode(8, INPUT); pinMode(9, INPUT);

Elaborado por Ing. Jovanny Duque

pág. 4


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ //salidas// pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT);

//ALGUNOS DISPOSITIVOS TRAEN UNA CONFIGURACION POR ESO ES NECESARIO COLOCAR LOS PUERTOS EN 0V digitalWrite(L1, LOW); digitalWrite(L2, LOW); digitalWrite(L3, LOW); digitalWrite(L4, LOW);

// DECLARACION DEL ESTADO DE LAS ETAPAS E1 = HIGH; E2 = LOW; E3 = LOW; E4 = LOW; E5 = LOW; E6 = LOW; E7 = LOW; E8 = LOW; E9 = LOW; E10 = LOW; E11 = LOW; E12 = LOW; E13 = LOW; E14 = LOW; E15 = LOW; E16 = LOW; E17 = LOW; E18 = LOW; E19 = LOW; E20 = LOW; E21 = LOW; Elaborado por Ing. Jovanny Duque

pág. 5


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ E22 = LOW; E23 = LOW; E24 = LOW; } void loop() { // put your main code here, to run repeatedly: //CAPTURAR VALORES DE PUERTOS DIGITALES DE ENTRADA S1 = digitalRead(6); S2 = digitalRead(7); S3 = digitalRead(8); S4 = digitalRead(9);

//TRATAMIENTO SECUENCIAL

E1 = ((E1 | (T2 & E10) | (E22 & E20 & S4)) & (~E2) & (~E8)); E2 = ((E2 | (E1 & S1)) & (~E3)); E3 = ((E3 | (E2 & S2)) & (~E4) & (~E7)); E4 = ((E4 | (E3 & S1 & S2)) & (~E5) & (~E7)); E5 = ((E5 | (E4 & S3) | (E7 & (S1 | S3))) & (~E9)); E7 = ((E7 | (E3 & T1)) & (~E5) & (~E8) & (~E4)); E8 = ((E8 | (E1 & S3) | (E7 & S4)) & (~E11) & (~E12) & (~E15)); E9 = ((E9 | (E5 & S2)) & (~E10)); E10 = ((E10 | (E9 & S1)) & (~E1)); E11 = ((E11 | (E8 & T3)) & (~E13)); E12 = ((E12 | (E8 & T3)) & (~E14)); E15 = ((E15 | (E8 & T3)) & (~E16) & (~E19)); E13 = ((E13 | (E11 & S1 & E14)) & (~E17) & (~E24)); E14 = ((E14 | (E12 & S2)) & (~E17) & (~E24)); E16 = ((E16 | (E15 & S3) | (E19 & S1)) & (~E18)); E18 = ((E18 | (E16 & S1 & S3)) & (~E17) & (~E24)); E19 = ((E19 | (E15 & S4)) & (~E16)); E17 = ((E17 | (E13 & E14 & E18 & S4)) & (~E22)); E24 = ((E24 | (E13 & E14 & E18 & S4)) & (~E20)); E22 = ((E22 | (E17 & S1)) & (~E1)); Elaborado por Ing. Jovanny Duque

pág. 6


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ E20 = ((E20 | (E24 & S2)) & (~E1)); delay(100); // ???????????????????????????????????????????????

//TRATAMIENTO POSTERIOR if (E1 == HIGH) { Serial.println("Etapa1"); } if (E2 == HIGH) { Serial.println("Etapa2"); }

if (E3 == HIGH) { Serial.println("Etapa3"); activetemp1(); }

else { desactivetemp1(); }

if (E4 == HIGH) { Serial.println("Etapa4"); }

if (E5 == HIGH) { Serial.println("Etapa5"); }

if (E9 == HIGH) { Serial.println("Etapa9"); }

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

Elaborado por Ing. Jovanny Duque

pág. 7


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ activetemp2();

} else { desactivetemp2(); }

if (E7 == HIGH) { Serial.println("Etapa7"); }

if (E8 == HIGH) { Serial.println("Etapa8"); activetemp3(); }

else { desactivetemp3(); }

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

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

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

if (E15 == HIGH) { Serial.println("Etapa15"); }

if (E13 == HIGH) { Serial.println("Etapa13"); }

if (E14 == HIGH) { Serial.println("Etapa14"); } Elaborado por Ing. Jovanny Duque

pág. 8


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ if (E16 == HIGH) { Serial.println("Etapa16"); }

if (E18 == HIGH) { Serial.println("Etapa18"); }

if (E19 == HIGH) { Serial.println("Etapa19"); }

if (E17 == HIGH) { Serial.println("Etapa17"); }

if (E24 == HIGH) { Serial.println("Etapa24"); }

if (E20 == HIGH) { Serial.println("Etapa20"); }

if (E22 == HIGH) { Serial.println("Etapa22"); } //SALIDAS if (E2 == HIGH | E4 == HIGH | E11 == HIGH) { digitalWrite(L1, HIGH); } else { digitalWrite(L1, LOW); } if (E3 == HIGH | E15 == HIGH | E22 == HIGH) { digitalWrite(L2, HIGH); } else { digitalWrite(L2, LOW); } if (E7 == HIGH | E8 == HIGH | E12 == HIGH | E24 == HIGH) { digitalWrite(L3, HIGH); Elaborado por Ing. Jovanny Duque

pág. 9


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ } else { digitalWrite(L3, LOW); } if (E9 == HIGH | E13 == HIGH) { digitalWrite(L4, HIGH); } else { digitalWrite(L4, LOW); } } //SUBRUTINA TEMPORIZADOR 1 void activetemp1() { if (E3 == HIGH && activado == 0) { activado = 1;

// Si ha pulsado HIGH y no ha sido activado=0 antes...

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

inicio = millis(); final = inicio + 8000;

// Tiempo final es inicio mas 8 segundos.

} actual = millis();

// Consulta el tiempo actual.

if (activado == 1 && (actual > final) ) { // Si fue activado=1 y el tiempo actual es mayor que el final.... T1 = HIGH; activado = 0;// haz un parpadeo. inicio = 0; final = 0; actual = 0; } else { T1 = LOW; } } void desactivetemp1() { activado = 0;// haz un parpadeo. inicio = 0; final = 0; actual = 0; } void activetemp2() { if (E10 == HIGH && activado2 == 0) { Elaborado por Ing. Jovanny Duque

// Si ha pulsado HIGH y no ha sido activado=0 antes... pág. 10


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

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

inicio2 = millis(); final2 = inicio2 + 2000;

// Tiempo final es inicio mas 8 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; activado2 = 0;// haz un parpadeo. inicio2 = 0; final2 = 0; actual2 = 0; } else { T2 = LOW; } } void desactivetemp2() {

activado2 = 0;// haz un parpadeo. inicio2 = 0; final2 = 0; actual2 = 0;

} void activetemp3() { if (E8 == HIGH && activado3 == 0) { activado3 = 1;

// Si ha pulsado HIGH y no ha sido activado=0 antes...

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

inicio3 = millis(); final3 = inicio3 + 3000;

// Tiempo final es inicio mas 8 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; Elaborado por Ing. Jovanny Duque

pág. 11


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ activado3 = 0;// haz un parpadeo. inicio3 = 0; final3 = 0; actual3 = 0;

} else { T3 = LOW; } } void desactivetemp3() { activado3 = 0;// haz un parpadeo. inicio3 = 0; final3 = 0; actual3 = 0; }

Jovenes, este material ha sido elaborado con mucho gusto. Si te es util Rega lame un Like, comenta y suscríbete :) (っ◕‿◕) Te invito al CANAL DE YOUTUBE MEKATRONICA para conocer ma s

http://www.youtube.com/c/JovannyDuque?sub _confirmation=1_ y Amigos/as en el BLOGG MEKATRONICA podras encontrar cantidad de recursos sobre SOLIDWORKS, HIDRAULICA - ELECTROHIDRAULICA , NEUMATICA, ELECTRONEUMATICA, CONTROL, PLC M221, PLC SIEMEMS S7 1200, PLC SIEMENS S7 300 , FLUID SIM FACTORY IO, entre otros

https://mecatronica-itsa.blogspot.com/ Elaborado por Ing. Jovanny Duque

pág. 12


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

Elaborado por Ing. Jovanny Duque

pág. 13


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.