GRAFCET COMPLETO CON FLUIDSIM Y ARDUINO

Page 1

GRAFCET GENERICO PARA EL CONTROL DE TRES (3) LUCES USANDO CUATRO (4) PULSADORES NA. GRAFCET GENÉRICO https://youtube.com/playlist?list=PLHTERkK4EZJqYRyOEp40oJs2miTM35BKY GRAFCET CON ARDUINO Programa en Arduino sistemas secuenciales simulados en GRAFCET , con un método confiable 100%

https://youtube.com/playlist?list=PLHTERkK4EZJpJEcByUotJ5YOIiC-Vmimt 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 S1

3

4

PIN 6

S2

3

L1

4

PIN 7

S3

PIN 2

A2

4 3 S4

1

4

L2 PIN 8

PIN 3 A2

PIN 9

A2

4

A1

L4

3

3

A1

L3 PIN 4

3

A1

PIN 5

4

A2

A1

4 COM1 SALIDAS

+24 V

0V

COM

+24 V

0V

ENTRADAS

1


GRAFCET DESCRIPCIÓN DEL PROCESO EN TERMINOS DE ETAPAS Y TRANSICIONES

2


//TRATAMIENTO PREVIO 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 S1=6; int S2=7; int S3=8; int S4=9; int L1=2; int L2=3; int L3=4; int L4=5; int T1; int activado1=0; long inicio1, final1, actual1; int T2; int activado2=0; long inicio2, final2, actual2; int T3; int activado3=0; long inicio3, final3, actual3;

void setup() { Serial.begin(9600); pinMode(6,INPUT); pinMode(7,INPUT); pinMode(8,INPUT); pinMode(9,INPUT); pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); digitalWrite(L1,LOW); digitalWrite(L2,LOW); digitalWrite(L3,LOW); digitalWrite(L4,LOW); 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; }

//TRATAMIENTO SECUENCIAL

void loop( ) { S1=digitalRead(6); S2=digitalRead(7); S3=digitalRead(8); S4=digitalRead(9); E1=((E1|(S4&E13&E14))&(~E2)&(~E7)&(~E8)); E2=((E2|(S1&E1)|(T1&E6))&(~E3)); E3=((E3|((S3|S2)&E2))&(~E6)&(~E4)); E4=((E4|((S1&S2)&(E3)))&(~E5)&(~E7)); E5=((E5|(T2&E4)|(S1&S3&E7)|(T3&E10)|(S1&E 8))&(~E11)&(~E12)); E6=((E6|(E3&S3&S4))&(~E2)); E7=((E7|(E1&S2)|(E4&S3))&(~E5)); E8=((E8|(E1&S3))&(~E5)&(~E9)); E9=((E9|(E8&S2))&(~E10)); E10=((E10|(E9&S1))&(~E5)); E11=((E11|(E5&S4))&(~E13)); E12=((E12|(E5&S4))&(~E14)); E13=((E13|(E11&S1))&(~E1)); E14=((E14|(E12&S2))&(~E1));

//TRATAMIENTO POSTERIOR if (E1==HIGH){ Serial.println("Etapa1"); } if (E2==HIGH){ Serial.println("Etapa2"); digitalWrite(L1,HIGH); } else{ digitalWrite(L1,LOW); } if (E3==HIGH){ Serial.println("Etapa3");

3


digitalWrite(L2,HIGH); } else{ digitalWrite(L2,LOW); } if (E4==HIGH){ Serial.println("Etapa4"); digitalWrite(L1,HIGH); activetemp2(); } else{ digitalWrite(L1,LOW); desactivetemp2(); } if (E5==HIGH){ Serial.println("Etapa5"); } if (E6==HIGH){ Serial.println("Etapa6"); digitalWrite(L3,HIGH); activetemp1(); } else{ digitalWrite(L3,LOW); desactivetemp1(); } if (E7==HIGH){ Serial.println("Etapa7"); digitalWrite(L2,HIGH); } else{ digitalWrite(L2,LOW); } if (E8==HIGH){ Serial.println("Etapa8"); digitalWrite(L3,HIGH); } else{ digitalWrite(L3,LOW); } if (E9==HIGH){ Serial.println("Etapa9"); digitalWrite(L2,HIGH); } else{ digitalWrite(L2,LOW); } if (E10==HIGH){ Serial.println("Etapa10"); digitalWrite(L3,HIGH); activetemp3(); } else{

digitalWrite(L3,LOW); desactivetemp3(); } if (E11==HIGH){ Serial.println("Etapa11"); digitalWrite(L1,HIGH); digitalWrite(L2,HIGH); } else{ digitalWrite(L1,LOW); digitalWrite(L2,LOW); } if (E12==HIGH){ Serial.println("Etapa12"); digitalWrite(L3,HIGH); } else{ digitalWrite(L3,LOW); } if (E13==HIGH){ Serial.println("Etapa13"); } if (E14==HIGH){ Serial.println("Etapa14"); } } void activetemp1() { if(E6 == HIGH && activado1==0){ activado1=1; inicio1= millis(); final1= inicio1 + 4000; } actual1=millis(); if(activado1 == 1 && (actual1>final1)){ T1=HIGH; } else { T1=LOW; } } void desactivetemp1(){ activado1=0; inicio1=0; final1=0; actual1=0; } void activetemp2(){ if(E4 == HIGH && activado2==0){ activado2=1; inicio2= millis(); final2= inicio2 + 10000;

4


} actual2=millis(); if(activado2 == 1 && (actual2>final2)){ T2=HIGH; } else { T2=LOW; } } void desactivetemp2(){ activado2=0; inicio2=0; final2=0; actual2=0; } void activetemp3(){ if(E10 == HIGH && activado3==0){ activado3=1; inicio3= millis(); final3= inicio3 + 5000; } actual3=millis();

________________________ __________ 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://mecatronicaitsa.blogspot.com/

if(activado3 == 1 && (actual3>final3)){ T3=HIGH; } else { T3=LOW; } } void desactivetemp3(){ activado3=0; inicio3=0; final3=0; actual3=0; }

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.co m/c/JovannyDuque?su b_confirmation=1_ 5


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.