Este documento presenta una metodología para traducir automatismos simulados en GRAFCET a código equivalente en Arduino. Explica conceptos como binodo, variables de acción y expresiones lógicas binarias. Aplica esta metodología a un sistema electroneumático simulado en GRAFCET, traduciendo su diagrama a un programa en Arduino con declaraciones de variables, ecuaciones lógicas y subrutinas de temporización.
ARDUINO GRAFCET - Metodología para la adaptación de automatismos simulados en GRAFCET a código equivalente de Arduino.pdf
1. Metodología para la
adaptación de
automatismos
simulados en
GRAFCET a código
equivalente de
Arduino
https://youtube.com/playlist?list=PLHTERkK4EZJoUmPtq
Y8kKCboLIrGN8tYc
GRAFCET CON ARDUINO Programa en Arduino
sistemas secuenciales simulados en GRAFCET , con un
método confiable 100%
https://youtube.com/playlist?list=PLHTERkK4EZJpJEcBy
UotJ5YOIiC-Vmimt
2. Metodología para la adaptación de automatismos simulados en GRAFCET a código equivalente
de Arduino
Guía Elaborada por Ing. Jovanny Duque 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
(1)
Las expresiones matemáticas que regirán al binodo serán:
(1)
Extrapolando lo anterior para sintetizar el método GRAFCET:
(2)
: Es el valor actual de la variable de la etapa i
Es el valor actual de las variables de las etapas que suceden a
Es el valor actual de las variables de las etapas que preceden a
= Es el valor de la transiciones i que preceden a
n: número de transiciones que preceden a
3. Metodología para la adaptación de automatismos simulados en GRAFCET a código equivalente
de Arduino
Guía Elaborada por Ing. Jovanny Duque 2
m: número de transiciones que suceden a
: 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
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.
A) IMPLEMENTACIÓN DE LA METODOLOGÍA PARA TRADUCIR AL LENGUAJE
“PROCESSING” APLICADA A UN SISTEMA ELECTRONEUMÁTICO SIMULADO EN
GRAFCET
La organización de fases de programación explicadas en el apartado anterior, se verán aplicadas el a
continuación en un sistema electroneumático.
Planteamiento de la situación
El sistema electroneumático consiste de un cilindro de doble efecto al cual están acopladas dos (2)
válvulas reguladoras de caudal unidireccional, para variación de la velocidad en ambos sentidos y una
electroválvula monoestable 5/2 para el accionamiento de salida y entrada del vástago.
Se debe gobernar el cilindro A según el diagrama Espacio- Fase mostrado en la figura Nº B , tal que al
dar la señal de inicio con e pulsador (CX3) , realice tres (3) ciclos temporizados (A+/T1/A-), al final de
los cuales debe quedar detenido en su posición inicial, una vez terminado, solo se podrá reiniciar la
secuencia , reseteando el contador con el pulsador (RESET), para posteriormente llevarlo a la Etapa
inicial con el accionamiento del pulsador (INICIO).
4. Metodología para la adaptación de automatismos simulados en GRAFCET a código equivalente
de Arduino
Guía Elaborada por Ing. Jovanny Duque 3
Solución propuesta en GRAFCET
Para la implementación de esta metodología se seleccionó sistema electroneumático debido a que
se requieren pocos componentes para su montaje, pero en su solución hecha en GRAFCET se
pueden apreciar la utilización combinada de las estructuras lineal, alternativa, simultánea y
reenvíos, por lo que su solución engloba en gran parte el alcance de la propuesta de
automatización con Arduino.
En este ejemplo de aplicación, se refleja el uso de entradas digitales, salidas digitales,
temporizaciones, contadores, memorias , los cuales son los elementos que constituyen la base para
automatizar sistemas electromecánicos y/o mecatrónicos.
5. Metodología para la adaptación de automatismos simulados en GRAFCET a código equivalente
de Arduino
Guía Elaborada por Ing. Jovanny Duque 4
Fig. 1 GRAFCET
Actividad, Simula el GRAFCET siguiendo las indicaciones de este video.
Nombre del archivo GRAFCET FLUID SIM CX3 FULL
https://youtu.be/FFGBXnqjY80
6. Metodología para la adaptación de automatismos simulados en GRAFCET a código equivalente
de Arduino
Guía Elaborada por Ing. Jovanny Duque 5
COM
COM1
PIN 9
PIN 8
PIN 2
+24 V
RESET
S0
Y1
A2 A1
4
3
PIN 11
PIN 10
A_0
4
3
3 4
PIN 12
INICIO
A_1
4
3
3 4
CX3
Los pasos que se han de seguir en este proyecto van a ser similares para todas la demás experiencias
que se puedan realizar con el equipo y en cada caso se desarrollan completamente las 5 fases del
proceso .
Con la realización de estas prácticas se sientan las bases para programar cualquier GRAFCET que
sea una combinación de las estructuras básicas en las que estén involucrados sistemas
electromecánicos y/o electroneumáticos.
Fig. 2 Esquema de conexión de entradas /salidas en Arduino
electromecánicos y/o electroneumáticos.
ENTRADAS
SALIDAS
0V
+24 V 0V
7. Metodología para la adaptación de automatismos simulados en GRAFCET a código equivalente
de Arduino
Guía Elaborada por Ing. Jovanny Duque 6
Como resultado de aplicar los lineamientos de la metodología al GRAFCET obtenido, se obtiene el
programa equivalente en IDE del Arduino
// Programa equivalente en IDE del Arduino del GRAFCET simulado en Fluid Sim
//TRATAMIENTO PREVIO (Declaración de variables asociadas a etapas,
//entradas, salidas, memorias, temporizadores y contadores y void setup,
//declaración del tipo de variable y definición del estado inicial de
//las mismas – solo en el primer ciclo)
//Declaración de variables utilizadas para el programa
//La designación E corresponde a una “Etapa"
int E1; int E2; int E3; int E4; int E5; int E6; int E7; int E8;
int CX3 = 8; int RESET = 9; int INICIO = 12;
int A_0 = 10; int A_1 = 11;
int Y1 = 2;
// Variables asociadas al Contador
int CONTADOR = 0;
const int PSCONTADOR = 3; // Preselect del Contador o # de ciclos
int ESTADOPREVIO_E2 = 0; // previous state of the Step
// Variables asociadas al "TEMPORIZADOR 1".
int T1; // Bit asociado al temporizador 1
int tiempo1 = 3000; // Temporización de 3 segundos
int activado1 = 0; // Al principio no ha sido activado.
long inicio1, final1, actual1;
void setup() {
//Apertura del visualizador serial
Serial.begin(9600);
//Declaración de puertos digitales
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(2, OUTPUT);
//Algunos dispositivos traen una configuración "Sinking and Sourcing"
//por eso es necesario colocar los puertos de salida en 0v.
digitalWrite(Y1, LOW);
//Declaración del estado inicial de las etapas
E1 = HIGH; //La Etapa 1 es una Etapa inicial
E2 = LOW; E3 = LOW; E4 = LOW;
E5 = LOW; E6 = LOW; E7 = LOW; E8 = LOW; // las etapas comunes inicialmente en estado bajo o
inativas
}
8. Metodología para la adaptación de automatismos simulados en GRAFCET a código equivalente
de Arduino
Guía Elaborada por Ing. Jovanny Duque 7
//-----------------------------------------------------------------------------------
//TRATAMIENTO SECUENCIAL o void loop (contiene las instrucciones que se ejecutan cíclicamente
// entre ellas la lectura de los puertos de entrada, la evaluación del estado de las ECUACIONES
// de cada etapa, la ejecución de las acciones de cada etapa (TRATAMIENTO POSTERIOR)
void loop() {
//Capturar valores de puertos digitales de entrada
CX3 = digitalRead(8);
RESET = digitalRead(9);
A_0 = digitalRead(10);
A_1 = digitalRead(11);
INICIO = digitalRead(12);
// Ecuaciones booleanas derivadas de la lógica binodal para cada ETAPA
E1 = ( (E1 | (E6 & E8 & INICIO )) & (~E2)); //Ecuación binaria correspondiente al estado1
E2 = ((E2 | (E1 & CX3 ) | (E5 & (CONTADOR < PSCONTADOR))) & (~E3));
//Ecuación binaria correspondiente al estado2
E3 = ((E3 | (E2 & A_1)) & (~E4)); //Ecuación binaria correspondiente al estado3
E4 = ((E4 | (E3 & T1)) & (~E5)); //Ecuación binaria correspondiente al estado4
E5 = ((E5 | (E4 & A_0)) & (~E2) & (~E6) & (~E7)); //Ecuación binaria correspondiente al estado4
E6 = ((E6 | (E5 & (CONTADOR >= PSCONTADOR))) & (~E1) );
E7 = ((E7 | (E5 & (CONTADOR >= PSCONTADOR))) & (~E8) );
E8 = ((E8 | (E7 & RESET)) & (~E1));
delay(50); // solo para ayuda de visualización en el monitor serie
// TRATAMIENTO POSTERIOR
if (E1 == 1) {
Serial.println("Etapa1");
CONTADOR = 0; }
if (E2 == 1) {
Serial.println("Etapa2");
digitalWrite(Y1, 1); }
if (E2 != ESTADOPREVIO_E2) {
if (E2 == 1)
{CONTADOR++;
Serial.print("Numero de Ciclos : ");
Serial.println(CONTADOR); }
ESTADOPREVIO_E2 = E2;
}
if (E3 == 1) {
Serial.println("Etapa3");
activetemp1();
9. Metodología para la adaptación de automatismos simulados en GRAFCET a código equivalente
de Arduino
Guía Elaborada por Ing. Jovanny Duque 8
Serial.print("Numero de Ciclos : ");
Serial.println(CONTADOR);
}
else { desactivetemp1(); }
if (E4 == 1) {
Serial.println("Etapa4");
digitalWrite(Y1, 0); }
if (E5 == 1) { Serial.println("Etapa5"); }
if (E6 == 1) { Serial.println("Etapa6"); }
if (E7 == 1) { Serial.println("Etapa7"); }
if (E8 == 1) {
Serial.println("Etapa8");
CONTADOR = 0;
Serial.print("Numero de Ciclos : ");
Serial.println(CONTADOR);
}
}
//-----------------------------------------------------------------------------------
//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 (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 + tiempo1;
}
actual1 = millis(); // Consulta el tiempo actual.
if (activado1 == 1 && (actual1 > final1) ) {
T1 = 1;
}
else {
T1 = 0;
}
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void desactivetemp1() {
T1 = 0;
activado1 = 0; inicio1 = 0;
final1 = 0; actual1 = 0;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
10. Metodología para la adaptación de automatismos simulados en GRAFCET a código equivalente
de Arduino
Guía Elaborada por Ing. Jovanny Duque 9
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_c
onfirmation=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/