GRAFCET CON ARDUINO - ESTRUCTURA ALTERNATIVA

Page 1

SISTEMAS DE AUTOMATIZACIÓN SECUENCIALES IMPLEMENTADOS SOBRE ARDUINO CASO #2 ESTRUCTURA ALTERNATIVA 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 :) (っ◕‿◕)


SISTEMAS DE AUTOMATIZACIÓN SECUENCIALES IMPLEMENTADOS SOBRE ARDUINO

ARDUINO Acceso a PDF

https://play.google.com/books/s/370286768613/ebooks https://mega.nz/folder/a9thTIjA#bSAwbpbG3Z34DW3jJ_bMQg

ARDUINO Aprende a programar Arduino desde una solucio n LADDER o GRAFCET con metodologí as confiables https://youtube.com/playlist?list=PLHTERkK4EZJr7zDQNKjjEyxhErjllCCUy

ARDUINO BASADO EN LADDER Aprende a programar Arduino desde una solucio n LADDER con una metodología confiable https://youtube.com/playlist?list=PLHTERkK4EZJq9hjTGCDQmaLvi7CAyk_q_

GRAFCET CON ARDUINO Programa en Arduino sistemas secuenciales simulados en GRAFCET , con un metodo confiable 100% https://youtube.com/playlist?list=PLHTERkK4EZJpJEcByUotJ5YOIiC-Vmimt


2

JOVANNY DUQUE (1) RESUMEN Este trabajo describe un método para generar la programación equivalente en Arduino de un sistema secuencial de eventos discreto, previamente modelado en GRAFCET (IEC 60848), haciendo uso de los teoremas fundamentales de la lógica binodal.

Bajo este modelo, el programador se enfoca principalmente en solucionar de la manera más completa y precisa el comportamiento del automatismo, usando para ello los elementos y estructuras de GRAFCET, posteriormente, a cada una de las etapas le es aplicada la ecuación característica de activación/desactivación, derivada de la lógica binodal, que fácilmente son integradas al lenguaje de Arduino.

Al combinar la robustez del modelado basado en GRAFCET con la economía de la plataforma Arduino, se garantiza la viabilidad económica de múltiples proyectos que tradicionalmente solo podían ser ejecutados en costosos autómatas programables de alta gama.

Las pruebas se han orientado al control de sistemas electroneumáticos con múltiples modos de funcionamiento y variedad de estructuras secuenciales, que incluyen, temporizaciones y contajes, presentando un desempeño confiable de la programación.

Esta propuesta metodológica es pionera en fusionar la simpleza del teorema del binodo con el poder descriptivo del GRAFCET, representando un avance en la implementación de la norma IEC 80848.

PALABRAS CLAVES: AUTOMATIZACIÓN, GRAFCET, LÓGICA BINODAL, ARDUINO

KEYWORDS: Automatización, GRAFCET, lógica binodal, Arduino


1. INTRODUCCIÓN Uno de los retos que debe enfrentar el desarrollador de equipos y maquinarias, ya sea que trabaje en el entorno industrial o un estudiante de pregrado es hacer que su solución tecnológica sea posible fabricarla al menor costo, sin prescindir de la confiabilidad. Cuando se trata de proyectos de automatización, existen en el mercado equipos como los Autómatas Programable (PLC´s) , los cuales son equipos que aunque son el hardware aceptado por la industria, cubriendo las necesidades de confiabilidad, seguridad y fácil programación, presentan el inconveniente de su alto costo, de tal forma que al incorporarlo a un proyecto lo haría inviable. Actualmente existe la plataforma Arduino que ofrece controladores, capaces de ejecutar maniobras secuenciales de igual forma que lo hace un PLC, pero a una fracción de su precio.

El propósito de este trabajo es desarrollar una metodología que permita a un diseñador, implementar en el lenguaje “Programing de Arduino”, cualquier solución previamente realizada en GRAFCET, aplicando los teoremas de la lógica binodal a cada etapa.

La principal labor del diseñador de soluciones automatizadas será plasmar en forma gráfica en términos de etapas y transiciones, las especificaciones del funcionamiento esperado del proceso/sistema, siendo esta etapa en la que se sintetiza el GRAFCET solución, a partir de allí, se aplica la metodología planteada en este trabajo y se obtiene el código equivalente para cargar al Arduino.

La integración sinérgica de estas tecnologías de hardware y software, simplifica la programación de sistemas secuenciales en la plataforma Arduino, impulsar la innovación de nuevos dispositivos o productos, generando la posibilidad del surgimiento de emprendimientos de base tecnológica a partir de sus aplicaciones.

Aunque el lenguaje “Programming” usado para Arduino es ampliamente conocido por los desarrolladores, está aún alejado de ser aceptado para las aplicaciones de automatización industrial, en parte porque los PLC`s se basan en la norma internacional IEC 6131-3 que ofrece 5 lenguajes de programación.

2. MATERIALES Y MÉTODOS Para encontrar una solución a un problema de automatización, es necesario que el programador tenga la mayor información y detalles del funcionamiento deseado del proceso/sistema, y que esté en capacidad de representar estas especificaciones en términos de Etapas y transiciones, aplicando la sintaxis de GRAFCET.


2

2.1 GRAFCET Es el lenguaje de programación con más alto nivel de abstracción tanto así, que sirve como un medio de comunicación entre los diseñadores y los operarios de sistemas automatizados.

El GRAFCET es un potente lenguaje gráfico de programación para autómatas, evolucionado a partir de las redes de Petri [1], que permite representar los sistemas secuenciales de eventos discretos. Es resultado de las investigaciones hechas por la AFCET (Association Française pour la Cybernétique Economique et Technique) y reconocido como norma internacional IEC-848 (Preparation of function charts for control systems) en 2002. El GRAFCET se compone de etapas interconectadas con transiciones. Fig. 1. La sintaxis del gráfico debe ser tal que al recorrer el programa, por cualquier camino posible, deben alternarse siempre una etapa y una única transición. Sin importar la complejidad del sistema secuencial, este puede ser modelado como una combinación de tres estructuras básicas: Estructura lineal, divergencia y convergencia en <<O>> (subprocesos alternativos), divergencia y convergencia en <<Y>> (subprocesos simultáneos).

Estructuras y elementos del GRAFCET Su uso en el ámbito industrial y académico ha ido en incremento, no solo en cursos de automatización, mecatrónica como por parte de fabricantes de controladores que incorporan el (Secuenctial Funtion Char ) SFC como un editor gráfico de GRAFCET, esto debido a debido a su simplicidad y porque genera automatismos que pueden ser ejecutados en un PLC casi directamente.


3

2.2 LOGICA BINODAL La automatización de ciertos mecanismos puede volverse una tarea laboriosa y compleja. A. Ramos, 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 y 𝑆̅. Al lado izquierdo se presentan las V.D.A que pueden conmutar al binodo a los estados mencionados antes:

Las expresiones matemáticas que regirán al binodo serán:

𝑛

𝑚

𝑆(𝑡) = [(𝑆 + ∑ 𝑀𝑖 ) ∗ ∏ 𝑖=1

𝑗=1

Donde 𝑀𝑖 corresponde a las (v.d.a) variables de activación del binodo (v.d.d) variables de desactivación del binodo.

Extrapolando lo anterior para sintetizar el método GRAFCET:

̅𝑗 ] 𝑃

y 𝑃𝑗 corresponde a las


4 𝑛

𝐸(𝑖) = [(𝐸(𝑖) + ∑ 𝐸𝑇𝐴𝑃𝐴𝑖−1 ∗ 𝐶𝑂𝑁𝐷𝐼𝐶𝐼𝑂𝑁𝐸𝑆𝑖 ) ∗ ∏ 𝑖=1

𝑛

̅​̅​̅​̅​̅​̅​̅​̅​̅​̅ 𝐸𝑇𝐴𝑃𝐴𝑖+1]

𝑖=1

Las ecuaciones de estado obtenidas anteriormente pueden definirse como el algoritmo que describirá el proceso, este algoritmo se codifico en lenguaje C para implementarlo en ARDUINO , teniendo en cuenta tratamientos previos como la declaración de variables, declaración de puertos de entrada y salida digital y demás consideraciones.

Las operaciones booleanas de suma, producto y negación deben hacerse usando la siguiente sintaxis:

&

Corresponde a la operación booleana AND o producto.

|

Corresponde a la operación booleana OR o suma.

~

Corresponde a la función booleana NOT o de negación.

El gráfico neto de Petri es un equivalente uno a uno de un diagrama de lógica de escalera, y por lo tanto cualquiera de las representaciones puede ser traducida algorítmicamente a la otra sin pérdida de información.

Dentro de las multiples formas en las que se pudo elaborar el GRAFCET del proyecto, se decidió por una que contuviera cada una de las tres(3) estructuras secuenciales (lineal, alternativas y simultaneas) además de incluir al menos un (1) temporizador y un (1) contador.

3. METODOLOGÍA (ESTUDIO DE CASOS) Para validar la funcionalidad de la metodología se plantean la realización de (4) cuatro casos programados: estructura lineal, estructura alternativa, estructura simultánea , estructura repetitiva. Para ello se requerirán unos equipos mínimos para la “Implementación de GRAFCET sobre ARDUINO usando lógica binodal”

A continuación se indico los elementos electrónicos que requerirán cada


5

1X Placa de Arduino ( Arduino uno , Mega u otro) + Cable de comunicación 5X Led de 5 Vdc 5 X Resistencias de 220 Ohm (para conexión de Led ) 10 X pulsadores Normalmente abiertos para conexión a protoboar 10 Resistencias de 10 K Ohm

(para conexión pulsadores)

1X Protoboar 1X Computador con software Arduino

La idea general es que cada participante cuente con una placa Arduino que tenga conectado seis ( 6 ) pulsadores Normalmente Abiertos a los pines (6,7,8,9,10 y 11) y cuatro (4) Leds conectados a los pines ( 2,3,4 y 5 ),

Esquema para la conexión de Pulsadores y Leds en el Arduino

CASO # 2

ESTRUCTURA ALTERNATIVA CON ARDUINO


6

//TRATAMIENTO PREVIO //Decalaración de variables utilizadas para el programa //La designación E corresponde a una "Etapa" // La designación S corresponde a los pulsadores de entrada asociados a las transiciones int E6;

// Etapa 6

int E7; int E8; int E9; int E10;

int S6 = 6; //Pulsador S6 conectado al pin 6 de Arduino int S7 = 7; int S8 = 8; int S9 = 9; int S10 = 10; int Y2 = 2; //Salida Y2 conectada al pin 2 de Arduino int Y3 = 3; int Y4 = 4; int T1 ;

// Bit asociado al temporizador 1

// Variables asociadas a "temp1". 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(6, INPUT);


7

pinMode(7, INPUT); pinMode(8, INPUT); pinMode(9, INPUT); pinMode(10, INPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); //Algunos dispositivos traen una configuración "Sinking and Sourcing" por eso es necesario colocar los puertos de salida en 0v. digitalWrite(Y2, LOW); digitalWrite(Y3, LOW); digitalWrite(Y4, LOW);

//Declaración del estado inicial de las etapas E6 = HIGH; //La Etapa 6 es una Etapa inicial, debe estar activa al inicio del programa E7 = LOW; E8 = LOW; E9 = LOW; E10 = LOW; }

void loop() { //Capturar valores de puertos digitales de entrada S6 = digitalRead(6); S7 = digitalRead(7); S8 = digitalRead(8); S9 = digitalRead(9); S10 = digitalRead(10);

//TRATAMIENTO SECUENCIAL


8

E6 = ((E6 | (E9 & S8) | (E10 & S10)) & (~E7) & (~E8)); //Ecuación binaria correspondiente al estado 6 E7 = ((E7 | (E6 & S6 & S7 )) & (~E9)); //Ecuación binaria correspondiente al estado 7 E9 = ((E9 | ( E7 & T1 )) & (~E6)); //Ecuación binaria correspondiente al estado9 E8 = ((E8 | (E6 & S6 & S8)) & (~E10)); //Ecuación binaria correspondiente al estado 8 E10 = ((E10 | (E8 & S9)) & (~E6)); //Ecuación binaria correspondiente al estado 10

// TRATAMIENTO POSTERIOR if (E6 == HIGH) { Serial.println("Etapa6"); } if (E7 == HIGH) { digitalWrite(Y3, HIGH); Serial.println("Etapa7"); activetemp1(); } else {

digitalWrite(Y3, LOW);

desactivetemp1(); }

if (E9 == HIGH) { digitalWrite(Y2, HIGH); Serial.println("Etapa9"); } else { digitalWrite(Y2, LOW); }

if (E8 == HIGH) { digitalWrite(Y4, HIGH); Serial.println("Etapa8"); } else { digitalWrite(Y4, LOW); }


9

if (E10 == HIGH) { Serial.println("Etapa10"); } } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //SUBRUTINA TEMPORIZADOR 1 //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void activetemp1() { if (E7 == HIGH && activado1 == 0) { activado1 = 1;

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

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

inicio1 = millis(); final1 = inicio1 + 5000;

// Tiempo final es inicio más 5 segundos.

} actual1 = millis();

// Consulta el tiempo actual.

if (activado1 == 1 && (actual1 > final1) ) { T1 = HIGH; } else { T1 = LOW; } } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void desactivetemp1() { activado1 = 0;// inicio1 = 0; final1 = 0; actual1 = 0; } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


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.