GRAFCET GENERICO PARA EL CONTROL DE TRES (3) LUCES USANDO CUATRO (4) PULSADORES NA.
GRAFCET CON ARDUINO
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/JovannyDu que?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 TRES (3) LUCES USANDO CUATRO (4) PULSADORES NA.
GRAFCET CON ARDUINO Programa en Arduino sistemas secuenciales simulados en GRAFCET , con un metodo confiable 100% https://youtube.com/playlist?list=PLHTERkK4EZJpJEcByUotJ5YOIiCVmimt OBJETIVO: Usar cada una de las tres (3) estructuras de programación GRAFCET, realizar saltos adelante, reenvíos hacia atrás, saltos a otras etapas, manejo de temporizaciones, manejo memorias, etc.
ESQUEMA DE CONEXIÓN DE E / S ARDUINO
1
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ GRAFCET DESCRIPCIÓN DEL PROCESO EN TERMINOS DE ETAPAS Y TRANSICIONES
2
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ LOGICA BINODAL La automatización de ciertos mecanismos puede volverse una tarea laboriosa y compleja. [10], propone una estrategia rápida e intuitiva usando la lógica binodal. Allí, se genera un gráfico representativo de la dinámica del sistema, similar al usado en el lenguaje GRAFCET, y se obtienen directamente ecuaciones lógicas que describen el comportamiento del sistema aplicando teoremas binodales. Para entender el método es necesario conocer los siguientes conceptos:
Binodo: Estado o situación en el que puede presentarse un dispositivo. Por lo general dos situaciones del tipo ON/OFF que serán disjuntas y complementarias. VDA: Variables que permiten la conmutación del binodo, se denominan variables de acción.
Expresiones matemáticas: Son el conjunto de variables relacionadas mediante operaciones binodales que definirán el comportamiento de un sistema.
A continuación se presenta el binodo que tendrá los estados S (activo) y 𝑆̅ (inactivo).
Al lado izquierdo de S se presentan las (v.d.a) variables de activación del binodo 𝑀𝑖 y al lado derecho las corresponde a las (v.d.d) variables de desactivación del binodo, que permiten conmutar al binodo a los dos estados mencionados:
𝑃𝑗
Figura 2. Activación y desactivación del binodo Las expresiones matemáticas que regirán al binodo serán:
𝑛
𝑚
𝑆(𝑡) = [(𝑆 + ∑ 𝑀𝑖 ) ∗ ∏ 𝑖=1
(1)
𝑗=1
̅𝑗 ] 𝑃 3
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ Extrapolando lo anterior para sintetizar el método GRAFCET:
(2)
𝐸(𝑖) : Es el valor actual de la variable de la etapa i 𝐸(𝑖+1) Es el valor actual de las variables de las etapas que suceden a 𝐸(𝑖) 𝐸(𝑖−1) Es el valor actual de las variables de las etapas que preceden a 𝐸(𝑖) t 𝑖 = Es el valor de la transiciones i que preceden a 𝐸(𝑖)
n: número de transiciones que preceden a 𝐸(𝑖) m: número de transiciones que suceden a 𝐸(𝑖) ∑𝑛𝑖=1 𝐸𝑖−1 ∗ t 𝑖 : Condición de activación es cualquier situación en la que una etapa precedente esté activa y se
cumpla su receptividad, haciendo que se active la etapa 𝐸(𝑖) y se desactiven la etapa o etapas 𝐸𝑖−1 simultáneamente.
Una etapa estará activa cuando ella misma lo esté o se cumpla cualquiera de las condiciones de activación y que no estén ninguna de las etapas que las suceden activas.
4
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_
//TRATAMIENTO PREVIO
long inicio3, final3, actual3;
int E1; int E2; int E3; int E4;
void setup() { Serial.begin(9600);
int E5;
pinMode(6,INPUT);
int E6;
pinMode(7,INPUT);
int E7;
pinMode(8,INPUT);
int E8;
pinMode(9,INPUT);
int E9;
pinMode(2,OUTPUT);
int E10;
pinMode(3,OUTPUT);
int E11;
pinMode(4,OUTPUT);
int E12;
pinMode(5,OUTPUT);
int E13;
digitalWrite(L1,LOW);
int E14;
digitalWrite(L2,LOW);
int S1=6;
digitalWrite(L3,LOW);
int S2=7;
digitalWrite(L4,LOW);
int S3=8;
E1=HIGH;
int S4=9;
E2=LOW;
int L1=2;
E3=LOW;
int L2=3;
E4=LOW;
int L3=4;
E5=LOW;
int L4=5;
E6=LOW;
int T1;
E7=LOW;
int activado1=0;
E8=LOW;
long inicio1, final1, actual1;
E9=LOW;
int T2;
E10=LOW;
int activado2=0;
E11=LOW;
long inicio2, final2, actual2;
E12=LOW;
int T3;
E13=LOW;
int activado3=0;
E14=LOW;
5
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ }
} if (E2==HIGH){ Serial.println("Etapa2");
//TRATAMIENTO SECUENCIAL
digitalWrite(L1,HIGH);
void loop( ) {
}
S1=digitalRead(6);
else{ digitalWrite(L1,LOW);
S2=digitalRead(7); S3=digitalRead(8);
}
S4=digitalRead(9); if (E3==HIGH){ E1=((E1|(S4&E13&E14))&(~E2)&(~E7)&(~E8));
Serial.println("Etapa3");
E2=((E2|(S1&E1)|(T1&E6))&(~E3));
digitalWrite(L2,HIGH);
E3=((E3|((S3|S2)&E2))&(~E6)&(~E4));
}
E4=((E4|((S1&S2)&(E3)))&(~E5)&(~E7));
else{
E5=((E5|(T2&E4)|(S1&S3&E7)|(T3&E10)|(S1&E8))&(~E 11)&(~E12)); E6=((E6|(E3&S3&S4))&(~E2));
digitalWrite(L2,LOW); } if (E4==HIGH){
E7=((E7|(E1&S2)|(E4&S3))&(~E5));
Serial.println("Etapa4");
E8=((E8|(E1&S3))&(~E5)&(~E9));
digitalWrite(L1,HIGH);
E9=((E9|(E8&S2))&(~E10)); E10=((E10|(E9&S1))&(~E5)); E11=((E11|(E5&S4))&(~E13));
activetemp2(); } else{
E12=((E12|(E5&S4))&(~E14));
digitalWrite(L1,LOW);
E13=((E13|(E11&S1))&(~E1)); E14=((E14|(E12&S2))&(~E1));
desactivetemp2(); } if (E5==HIGH){ Serial.println("Etapa5"); }
//TRATAMIENTO POSTERIOR if (E1==HIGH){ Serial.println("Etapa1");
if (E6==HIGH){ Serial.println("Etapa6"); digitalWrite(L3,HIGH);
6
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ activetemp1();
}
}
else{
else{
digitalWrite(L3,LOW);
digitalWrite(L3,LOW);
desactivetemp3();
desactivetemp1();
}
}
if (E11==HIGH){
if (E7==HIGH){
Serial.println("Etapa11");
Serial.println("Etapa7");
digitalWrite(L1,HIGH);
digitalWrite(L2,HIGH);
digitalWrite(L2,HIGH);
}
}
else{
else{
digitalWrite(L2,LOW);
digitalWrite(L1,LOW);
}
digitalWrite(L2,LOW);
if (E8==HIGH){ Serial.println("Etapa8");
} if (E12==HIGH){
digitalWrite(L3,HIGH);
Serial.println("Etapa12");
}
digitalWrite(L3,HIGH);
else{ digitalWrite(L3,LOW);
} else{
}
digitalWrite(L3,LOW);
if (E9==HIGH){ Serial.println("Etapa9");
} if (E13==HIGH){
digitalWrite(L2,HIGH);
Serial.println("Etapa13");
}
}
else{
if (E14==HIGH){
digitalWrite(L2,LOW); }
Serial.println("Etapa14"); }
if (E10==HIGH){ Serial.println("Etapa10");
}
digitalWrite(L3,HIGH); activetemp3();
void activetemp1() {
7
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ if(E6 == HIGH && activado1==0){
T2=LOW;
activado1=1; inicio1= millis();
} }
final1= inicio1 + 4000; }
void desactivetemp2(){ activado2=0; inicio2=0; final2=0; actual2=0;
actual1=millis();
}
if(activado1 == 1 && (actual1>final1)){
void activetemp3(){
T1=HIGH;
if(E10 == HIGH && activado3==0){
} else {
activado3=1;
T1=LOW;
inicio3= millis();
}
final3= inicio3 + 5000;
}
}
void desactivetemp1(){
actual3=millis();
activado1=0; inicio1=0; final1=0; actual1=0; }
if(activado3 == 1 && (actual3>final3)){ T3=HIGH;
void activetemp2(){
} else {
if(E4 == HIGH && activado2==0){
T3=LOW;
activado2=1; inicio2= millis();
} }
final2= inicio2 + 10000; }
void desactivetemp3(){ activado3=0; inicio3=0; final3=0; actual3=0;
actual2=millis();
}
if(activado2 == 1 && (actual2>final2)){ T2=HIGH; } else {
8
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_
Jovenes, este material ha sido elaborado con mucho gusto. Si te es util Rega lame un Like, comenta y suscríbete :) (っ◕‿◕)
https://mecatronicaitsa.blogspot.com/
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 J DUKE 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
9