Estructura para el diseño de cursos c ursos virtuales Versión 2. Agosto de 2016
MÓDULO N° 3: LENGUAJE TEXTO ESTRUCTURADO
INFORMACIÓN ESPECÍFICA DEL MÓDULO Programa
Especialización Industrial
Tecnológica
en
Número y nombre del Módulo 3. Lenguaje Texto Estructurado módulo Duración del módulo
Dos (2) semanas
Autor del diseño
Luis Carlos Meneses Silva
Fecha de actualización
[email protected]
Automatización
Estructura para el diseño de cursos c ursos virtuales Versión 2. Agosto de 2016
TABLA DE CONTENIDO
MÓDULO N° 3: LENGUAJE TEXTO ESTRUCTURADO .................................................................... 1 INFORMACIÓN ESPECÍFICA DEL MÓDULO ...................................................................................... 1 INTRODUCCIÓN AL MÓDULO N°3 ....................................................................................................... 4 COMPETENCIAS COMPETENCIAS DEL MÓDULO N°3 Y ESTRUCTURA TEMÁTICA TEMÁTICA ..................... .......... ..................... .................... .............. 5 CONTENIDO DEL MÓDULO N°3 ............................................................................................................ 6 1. UNIDAD TEMÁTICA 1. DEFINICIONES Y CARACTERÍSTICAS DEL LENGUAJE TEXTO ESTRUCTURADO .......................................................................................................................... 6 1.1.
INTRODUCCIÓN ......................................................................................................................... 6
1.2.
MARCO CONCEPTUAL ............................................................................................................. 6
1.2.1.
Generalidades del lenguaje de programación (ST) ............................................. 6
1.2.2.
Expresione Expresioness............................ .......................................... ............................ ............................ ............................ ............................. ............................. ...................... ........7
1.2.3.
Operador y operando ...................................................................................................... 7
a.
Operadores Operadores........................... ......................................... ............................ ............................ ............................ ............................. ............................. ........................ ..........7
b.
Operando Operando ........................... ......................................... ............................ ............................. ............................. ............................ ............................ ........................ .......... 11
1.2.4.
Instrucciones ................................................................................................................... 11
1.3.
EJEMPLOS EJEMPLOS............................ .......................................... ............................ ............................. ............................. ............................ ............................ ............................ ................. ... 14
1.3.1.
Ejemplo temporizador motores ............................................................................... 14
1.3.2.
Ejemplo motor con alarma ......................................................................................... 17
1.4.
EJERCICIOS DE REFLEXIÓN ............................................................................................... 19
1.5.
CONCLUSIONES ....................................................................................................................... 20
1.6.
MATERIAL DE ESTUDIO ...................................................................................................... 20
2. UNIDAD TEMÁTICA 2. DESARROLLO DE PROGRAMAS EN TEXTO ESTRUCTURADO BAJO EL ESTÁNDAR IEC 61131-3 ..................................................................................................... 21 2.1.
INTRODUCCIÓN ...................................................................................................................... 21
2.1.1.
Programación con lenguaje Texto Estructurado ............................................... 21
Estructura para el diseño de cursos c ursos virtuales Versión 2. Agosto de 2016
2.1.2. 2.2.
Visualización .................................................................................................................... 27
MARCO CONCEPTUAL .......................................................................................................... 30
2.2.1.
Aplicación de programación. Máquina taladradora .................... ......... ..................... ..................... ........... 30
2.2.2.
Visualización del estado de proceso ....................................................................... 32
2.3.
EJERCICIOS DE REFLEXIÓN ............................................................................................... 37
2.4.
CONCLUSIONES ....................................................................................................................... 37
2.5.
MATERIAL DE ESTUDIO ...........................................¡Error! ...........................................¡Error! Marcador no definido.
3. OBJETOS DE APRENDIZAJE / RECURSOS DIGITALES SUGERIDOS PARA APOYAR EL MÓDULO.....................................................................................¡Error! ¡Error! Marcador no definido. 4.
ACTIVIDADES DE APRENDIZAJE DEL MÓDULO N°¡Error! N° ¡Error! Marcador no definido.
5.
PLAN DE EVALUACIÓN DEL MÓDULO N°1 ............... ¡Error! Marcador no definido.
6. REFERENCIAS BIBLIOGRÁFICAS UTILIZADAS UTILIZADAS EN EL MÓDULO N°1 ............... .......... ..... ¡Error! Marcador no definido.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
INTRODUCCIÓN AL MÓDULO N°3 Actualmente al hacer referencia a procesos industriales es importante resaltar la automatización de los mismos. Debido a la fuerte demanda que se encuentra en el mercado, por ejemplo, las grandes industrias han buscado migrar a procesos de producción y administrativos de la nueva era digital en la cual nos encontramos. Donde no se puede dejar de mencionar la presencia de PLC´s para el control de toda clase de dispositivos, utilizando lenguajes como LD, SFC, FBD, ST, IL o STL. En este módulo se aborda principalmente el lenguaje texto estructurado, utilizado en la mayoría de las marcas comerciales de PLC’s, de tal forma, que inicialmente se contextualiza al estudioso sobre las características principales, como se encuentra normalmente implementada su estructura y cómo influye en este lenguaje la IEC 61131-3. Finalmente se ilustra el tema objeto de estudio, mediante la realización de ejemplos prácticos, desarrollados en CODESYS V3.5. El texto estructurado es un lenguaje fácil de comprender tanto para las personas que están empezando en el mundo de la programación como para las personas que alguna vez han programados en C o PASCAL. Como los demás lenguajes de programación puede ser implementado en diferentes plataformas y aplicaciones. Usualmente es ut ilizado en control industrial para la programación de PLC’s como se mencionó anteriormente. Diseñado para expresar procesos llevando a cabo tareas específicas dirigidas a dispositivos y ordenadores. A comparación de los demás lenguajes utilizados en este ámbito, el lenguaje ST al igual que LD permiten una mayor flexibilidad a la hora de manejar tipos de datos y cálculos aritméticos, puesto que en ocasiones programar en interfaces gráficas implica cierto tipo de limitaciones, como lo son, la implementación de algunos operadores y que los programas podrían llegar a ser un poco más extenso.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
COMPETENCIAS DEL MÓDULO N°3 Y ESTRUCTURA TEMÁTICA Competencias del módulo
Estructura temática a abordar en el módulo
Reconoce las características del 1. Unidad temática 1: Definiciones y lenguaje de texto estructurado características del lenguaje texto que le permiten establecer las estructurado instrucciones adecuadas para desarrollar todo tipo de 1.1. Generalidades del lenguaje de aplicaciones de manera libre, programación (ST) comprimida y ordenada, de 1.2. Expresiones acuerdo con lo estudiado en el 1.3. Operador y operando módulo. 1.4. Instrucciones 1.5. Ejemplos de aplicación 2. Unidad temática 2: Desarrollo de programas en texto estructurado bajo el estándar IEC Desarrolla un programa en texto 61131-3 estructurado bajo el estándar IEC 61131-3, con el fin de dar solución 2.1. Aplicación de Programación. Máquina a una situación de su cotidianidad, taladradora. utilizando CODESYS V3.5 2.2. Visualización del estado de proceso
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
CONTENIDO DEL MÓDULO N°3 1. UNIDAD TEMÁTICA 1. DEFINICIONES Y CARACTERÍSTICAS DEL LENGUAJE TEXTO ESTRUCTURADO 1.1.
INTRODUCCIÓN
El lenguaje estructurado se puede definir como una herramienta que permite programar la mayoría de las marcas de PLC’s disponibles en el mercado actual , por lo cual, se considera de gran utilidad profundizar en este lenguaje, ya que a un nivel industrial en muchas ocasiones no es posible trabajar con una marca en específico de PLC ni se cuenta con la facilidad de cambiarse de marca, de tal forma, que el manejo de este lenguaje podría ampliar las oportunidades laborales y brindar competencias que destaquen a los futuros especialistas en tecnología en automatización industrial de la UMB Virtual como más competitivos y versátiles en el campo laboral. Por otro lado, y como se mencionó anteriormente (ST) es uno de los lenguajes que permite mayor libertad a la hora de manejar cierto tipo de operaciones, por lo cual será explicado de forma detallada la estructura del lenguaje de programación texto estructurado (ST), sus características y su sintaxis en la presente unidad, ilustrando mediante definiciones y ejemplos cada una de las expresiones e instrucciones posibles a la hora de programar en este lenguaje.
1.2.
MARCO CONCEPTUAL
1.2.1. Generalidades del lenguaje de programación (ST) El lenguaje de texto estructurado es un lenguaje de alto nivel, diseñado para expresar procesos, llevando a cabo tareas generalmente de tipo industrial, el cual cuenta con una composición específica (Ver figura 1). Se puede decir que este lenguaje es uno de los que permiten mayor libertad a la hora de programar un PLC a comparación de los demás lenguajes que en su mayoría suelen ser más gráficos, lo cual representa una debilidad ya que en ocasiones algunas expresiones se hacen difíciles de representar gráficamente limitando al programador o en su defecto haciendo los programas más extensos.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 1. Representación de una sección ST Tomado de: http://www2.schneider-electric.com/resources
La estructura del lenguaje (ST) está basada en expresiones donde se encuentran operando y operadores, e instrucciones como se muestra en la figura anterior. También se pueden hacer llamadas a bloques de función (FB). Lo cual es muy aconsejable puesto que escribir un programa en (ST) con el uso de los bloques de función facilita la reutilización de código, reduciendo errores. El lenguaje (ST) tiene gran cantidad de funciones disponibles facilitando el trabajo y desarrollo de los programas, además se recomienda hacer una descripción mediante comentarios. 1.2.2. Expresiones Una expresión es una construcción que devuelve un valor y se compone por un operando y un operador. Estas expresiones se ejecutan en orden de prioridad de los operadores, desde el más significativo hasta el menos significativo y así sucesivamente hasta que se ejecuten todas las operaciones necesarias.
1.2.3. Operador y operando a. Operadores Como se mencionó anteriormente los operadores son los símbolos encargados de ejecutar una operación aritmética, lógica o un procesamiento de función. Estos operadores se ejecutan en orden jerárquico como se ilustra en la tabla 1.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Tabla 1. Tabla de operadores y jerarquías OPERADOR SIGNIFICADO JERARQUÍA () Paréntesis 1 FUNCNAME Procesamiento de función 2 Negación 3 NOT Complemento 3 ** Potenciación 4 * Multiplicación 5 / División 5 MOD Módulo 5 + Adición 6 Sustracción 6 < Menor que 7 > Mayor que 7 <= Menor o igual que 7 >= Mayor o igual que 7 = Igualdad 8 <> Desigualdad 8 &,AND AND lógico 9 XOR OR exclusivo lógico 10 OR OR lógico 11 Tomado y adaptado de: http://www2.schneider-electric.com/resources
A continuación, se realiza una pequeña descripción para cada uno de los operadores asumiendo que se tienen conocimientos básicos en programación en otros lenguajes como C y C++, por ejemplo:
Paréntesis: Es utilizado para modificar la secuencia en la que se ejecuta una línea de código. No es lo mismo (X+4) * Y , que decir, X+4* Y . Procesamiento de función (FUNCNAME): Se utiliza para hacer el llamado de funciones elementales que están disponibles en bibliotecas estas funciones son definidas en leguaje C y no se pueden modificar desde ST, Negación: Invierte el signo del operando y de los valores que este pueda llegar a tener, en caso de ser una variable, su valor de salida será el opuesto. Por ejemplo, si X fuera 1, OUT: = -X, OUT seria -1. Complemento NOT: Provoca una inversión del operando por bits. Ejemplo, OUT es 0011001100 si IN1 es 1100110011, entonces, OUT: = NOT IN1.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Potenciación: Consta de dos operandos uno base y el otro exponente, el operando base es elevado a razón del valor del operando exponente. Operaciones aritméticas básicas: Multiplicación, división, adición y sustracción. Donde básicamente se ejecutan sobre los operando estas instrucciones teniendo en cuenta la jerarquía de los operadores. Se pueden ejecutar sobre todo tipo de dato y operando. Módulo (MOD): En MOD, el valor del primer operando se divide entre el valor del segundo operando, y el resto de la división (módulo) se emite como resultado. Menor y mayor que (<, >), (<=, >=): Compara el valor de cualquier operando con el valor de otro y si es mayor o menor o el caso que se defina ejecuta determinada línea de código. Igualdad y desigualdad: Compara el valor de cualquier operando con el valor de otro y si es igual o desigual ejecuta determinado tramo de código. AND, XOR Y OR lógico: En el caso de AND, OR y XOR se ejecuta la siguiente instrucción o expresión si y solo si los dos operandos cumplen con la condición lógica. En texto estructurado se puede utilizar con los tipos de datos BYTE, WORD y DWORD, esta operación se lleva a cabo por bits.
Como se puede observar la mayoría de expresiones son muy similares a las que se manejan en un lenguaje C. La implementación de varias instrucciones en CODESYS 3.5 se detalla a continuación en la Figura 2, en donde se puede observar una visualización sencilla que implementa el uso de la expresión AND y NOT para condicionar el estado de la variable booleana READY.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 2. Ejemplo AND Y NOT con visualización CODESYS 3.5. Fuente: El autor.
El indicador READY únicamente va a encender cuando CA_0 y CB_0 sean asignados con el valor booleano TRUE. Como se ha mencionado en varias ocasiones el lenguaje estructurado permite realizar operaciones aritméticas con facilidad. Estas operaciones nos permiten realizar asignaciones, poner un límite, incrementar una variable, realizar conteos, etc. en compañía de las instrucciones. Lo cual permite infinidad de aplicaciones. En la figura 3 observamos como K1 y K2 (operandos, en este caso dos variables enteras) son afectadas por la utilización de distintos operadores dependiendo de los valores que tome X y Y.
Figura 3. Ejemplo operaciones aritméticas implementadas en CODESYS 3.5. Fuente: El autor.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
b. Operando El operando es un valor de cualquier tipo que es afectado por otro de u mismo tipo. Un operando podría ser una variable, un literal, salidas y entradas, funciones de bloques, una dirección o una llamada de función. Los tipos de datos de los operandos en cuestión deben ser iguales para que puedan ser ejecutados. Además de esto los operandos no siempre se pueden implementar con todos los operadores como se muestra a continuación en la Tabla 2. Tabla 2. Tabla de operando posibles OPERADOR OPERANDO POSIBLE () Expresión FUNCNAME Expresión, literal, variable, dirección (todos los tipos de datos) NOT **
Expresión, literal, variable, dirección de los tipos de datos INT, DINT, UINT, UDINT o REAL Expresión, literal, variable, dirección de los tipos de datos BOOL, BYTE, WORD o DWORD Expresión, literal, variable, dirección de los tipos de datos REAL (base) e INT, DINT, UINT, UDINT o REAL (exponente) Expresión, literal, variable, dirección de los tipos de datos INT, DINT, UINT, UDINT o REAL
* / MOD Expresión, literal, variable, dirección de los tipos de datos INT, DINT, UINT o UDINT + Expresión, literal, variable, dirección de los tipos de datos INT, DINT, UINT, UDINT, REAL o TIME < Expresión, literal, variable, dirección de los tipos de datos BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE o TOD > <= &,AND Expresión, literal, variable, dirección de los tipos de datos BOOL, BYTE, WORD o DWORD XOR Tomado y adaptado de: http://www2.schneider-electric.com/resources
1.2.4. Instrucciones Las instrucciones se utilizan para hacer un control de las expresiones y de esta manera con los valores reintegrados hacer una asignación a un nuevo parámetro. En texto estructurado permite ejecutar instrucciones de manera condicional y cíclica. Normalmente una línea de instrucción está limitada por 300 caracteres. Una instrucción debe ser finalizada con punto y coma y las instrucciones que se pueden utilizar programando en texto estructurado son las siguientes (Ver tabla 3):
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Tabla 3. Tabla de instrucciones INSTRUCCIÓN EJEMPLO Asignación A: =B; CV: = CV + 1; C:=SIN(X); Llamada a un Bloque de CMD_TMR (IN: = %IX5, PT: =300); Funciones y uso de la salida A:=CMD_TMR.Q; FB RETURN RETURN; IF IF D: =B*B; IF D<0.0 THEN C: =A; ELSIF D=0.0 THEN C: =B; ELSE C:=D;END_IF; CASE CASE INT1 OF1: BOOL1: = TRUE; 2: BOOL2: = TRUE; ELSE BOOL1: = FALSE; BOOL2: = FALSE; END_CASE; FOR FOR J: =101; FOR I: =1 TO 100 BY 2 DO IF ARR[I] = 70 THEN J: =I; EXIT; END_IF;END_FOR; WHILE WHILE J<= 100 AND ARR[J] <> 70 DO J: =J+2; END_WHILE; REPEAT REPEAT J:=J+2;UNTIL J= 101 OR ARR[J] = 70END_REPEAT; EXIT EXIT; CONTINUE CONTINUE; JMP label1: i:=i+1; IF i=10 THEN JMP label2; END_IF JMP label1; label2: instrucción vacía ; Tomado y adaptado de: https://www.tecnical.cat
A continuación, se realiza una pequeña descripción para las instrucciones más relevantes asumiendo que se tienen conocimientos básicos en programación en otros lenguajes como C y C++, por ejemplo: Asignación: Una asignación es cuando remplazamos el valor inicial de una variable por una expresión o valor especifico. En este orden de ideas, una asignación consta de la variable seguida del símbolo de asignación (: =), el valor a asignar y punto y coma para finalizar la instrucción, (Ver tabla 4). Se pueden hacer Asignaciones de una variable a la otra, de un literal a una variable, de una operación a una variable, una asignación de un bloque de función a una variable y asignaciones múltiples. Llamar bloque de funciones: Se envían y reciben valores de un bloque de función ya existente, con el fin de transferir parámetros mediante la llamada de las instancias del FB. Los Bloques de función facilitan la implementación de funciones complejas utilizadas frecuente mente.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Instrucción RETURN: Esta instrucción puede ser utilizada en bloques de función y en subrutinas para salir de ellas saltándose la ejecución de algún tramo de código dependiendo de alguna condición especifica. Instrucción IF: La instrucción IF ejecuta una acción en el caso de que la condición del IF se cumpla lo que permite controlar la ejecución de las instrucciones. Generalmente encontramos IF…THEN… END IF, donde el THEN empieza, donde acaba la condición y empieza la instrucción y el END IF únicamente cumple con encerrar y finalizar el grupo de instrucciones. Se puede utilizar también la expresión ELSE o ELSEIF para ejecutar alguna acción como un aviso de error o una alarma etc. En caso de que la condición del IF no se cumpla. Instrucción CASE: Con la instrucción CASE se pueden controlar la ejecución de acciones diferentes mediante la dependencia del valor que tome una misma variable Instrucción FOR: La instrucción FOR es un bucle que permite programar procesos repetitivos donde se conoce de antemano la cantidad de repeticiones. Esta instrucción repite una secuencia hasta que termina el número de repeticiones definidas. El número de repeticiones de define al declarar la instrucción FOR. Instrucción WHILE: La instrucción WHILE es un bucle en el cual no se define la cantidad de repeticiones como ocurre en el caso de FOR. Utilizando WHILE solo deja de ejecutarse la instrucción cuando su condición es falsa. Instrucción REPEAT: La instrucción REPEAT ejecuta una secuencia varias veces hasta que se cumpla una determinada condición definida con la instrucción UNTIL la diferencia con los demás bucles es que solamente permite salir cuando ya se ha ejecutado como mínimo una vez. A continuación, se puede observar una implementación en CODESYS 3.5 de las instrucciones WHILE, ASIGNACIÓN, IF…THEN, EXIT Y LLAMADA DE FUNCIÓN utilizando un temporizador con el fin de integrar en una pequeña aplicación las instrucciones anteriormente descritas.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 4. Ejemplo instrucciones CODESYS 3.5. Fuente: El autor
1.3.
EJEMPLOS
1.3.1. Ejemplo temporizador motores En una industria, se requiere implementar una secuencia de dos motores que mueven unas poleas siempre en la misma dirección. La secuencia es la siguiente:
Presionar START. El motor 1 se mueve durante 4 segundos. El motor 1 se apaga. El motor 2 se mueve durante 2 segundos. El motor 2 se apaga.
Es necesario, tener en cuenta que el motor #1 solo inicia cuando se presiona START y el motor #2 no se puede encender hasta que el uno se apague. Desarrollo
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 5. Estado de motores en el tiempo CODESYS 3.5. Fuente: El autor.
Tabla de señales Tabla 3. Variables asociadas a motores y pulsadores ejemplo 1.3.1 VARIABLE EQUIPOS ASOCIADO DESCRIPCIÓN FUNCIONAL ENTRADAS DIGITALES START Botón inicio Da inicio al proceso SALIDAS DIGITALES M1 Motor 1 Permite la salida del motor 1 para su arranque. M2 Motor 2 Permite la salida del motor 2 para su arranque. Fuente: Autor
Inicialmente se define START, MOTOR1 Y MOTOR2 como variables booleanas y se asignan 2 funciones de bloque (temporizadores). Seguido de esto la primera instrucción está compuesta por un IF en el cual se expresa que el motor uno enciende únicamente cuando se presione el botón START.
Figura 6. Ejemplo reflexión inicial CODESYS 3.5. Fuente: El autor.
Se desarrolló una visualización sencilla para ilustrar el funcionamiento de los dos motores y el estado del botón START.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 7. Ejemplo reflexión START CODESYS 3.5. Fuente: El autor
Seguido de esto incluimos el temporizador asignado como entrada la variable booleana que corresponde al motor uno y un tiempo de 4 segundos obteniendo como salida una variable booleana llamada Q. Con la cual se condiciono mediante otro IF el apagado del motor 1 y el encendido del motor 2. Finalmente, en la figura 8 observamos como el motor uno está en funcionamiento y cuando TIME1 termina de ejecutar los cuatro segundos de espera se apaga y se enciende el motor 2 el cual mediante el temporizador 2 se mantiene encendido 2 segundos.
Figura 8. Ejemplo reflexión 2do motor CODESYS 3.5. Fuente: El autor.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
1.3.2. Ejemplo motor con alarma En una planta de tratamiento de agua potable, se necesita implementar una alarma para indicar cuando un motor supera 2 ciclos, la secuencia es la siguiente:
Se presiona el botón START Se enciende el motor Se enciende un indicador de alarma cuando el motor se enciende dos veces
Condiciones
El motor se enciende manualmente Debe ser posible resetear el contador La alarma se activa si el motor enciende más de una vez
Desarrollo Inicialmente se definieron las variables booleanas MOTOR, ALARM, RESET Y START y el contador que un bloque de función. Seguido de esto se declara que el motor enciende y apaga manualmente con el botón START.
Figura 9. Ejemplo reflexión inicial CODESYS 3.5. Fuente: El autor.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Al encenderse el motor se asigna este valor TRUE a la variable de entrada CU del Contador. El cual cuenta el primer ciclo de encendido del motor como se puede ver en la figura siguiente.
Figura 10. Ejemplo reflexión contador CODESYS 3.5. Fuente: El autor.
Cuando el motor realiza dos ciclos se activa la alarma como se observa a continuación. Esto depende de la variable tipo WORD CV del contador. Cuando CV es mayor o igual a 2 asigna a ALARM un valor de TRUE y de lo contrario FALSE.
Figura 11. Ejemplo reflexión alarma CODESYS 3.5. Fuente: El autor.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Finalmente, y como se puede observar en la siguiente figura existe un botón de RESET que esta enunciado en la llamada del Contador donde se resetea el valor de CV.
Figura 12. Ejemplo reflexión RESET CODESYS 3.5. Fuente: El autor.
1.4.
EJERCICIOS DE REFLEXIÓN
Asumamos que usted es el encargado de la automatización en la Ensambladora Mendoza Rodríguez S.A. y necesita desarrollar un sistema de automatización para dos motores con una alarma de finalización de ciclo. En el cual se ejecute la siguiente secuencia:
Se inicie con el botón START Enciende el motor 1 durante 3 segundos Enciende el motor dos durante 3 segundos Repite el ciclo cuatro veces el motor 1 y 3 el motor 2
Condiciones
El sistema se inicia con START El sistema es automático El motor dos solo se enciende cuando el motor 1 se apaga
De acuerdo al caso descrito, mencione:
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
1. Que lenguaje considera es el apropiado para dicha automatización, diferente al estudiado en la unidad. 2. Cuáles son las variables en cada ciclo de los motores 3. Cuál es la programación final para dar solución a la necesidad de la ensambladora Mendoza Rodríguez S.A. 1.5.
1.6.
CONCLUSIONES Es una ventaja conocer un len guaje que abarque varias marcas de PLC’s, debido a que podría facilitar la experiencia en una determinada industria y resultar más provechoso. El lenguaje de texto estructurado es fácil de aprender para aquellas personas que tienen experiencia programando otro tipo de lenguajes. El lenguaje de texto estructurado es similar a lenguajes como C++ y C, pues utiliza muchas instrucciones similares. El lenguaje de texto estructurado tiene gran cantidad de instrucciones con las que un programador puede desarrollar todo tipo de aplicaciones de manera libre, comprimida y ordenada. La utilización de bloques de función y comentarios facilitan el desarrollo de un programa debido a que permiten la reutilización de código. Es una buena idea hacer uso de los comentarios pues hace que el programa sea más fácil de entender y por ende de corregir o modificar. MATERIAL DE ESTUDIO
Temas que abordan
Referencia bibliográfica (APA)
Ubicación (el link web o la base de datos)
3S-Smart Software Solution GmbH. Programación en Texto (2010). User Manual for PLC Programming with Codesys 2.3. Estructurado
https://www.parkermotion.co m/manuals/Hauser/Compax3 /CoDeSys_Manual_V2p3.pdf
Texto estructurado y ejemplos aplicados en CODESYS V 3.5.
Tohid Alizadeh,. [Tohid Alizadeh]. (2016, agosto 19). Structured Text PLC programming in CODESYS.
https://www.youtube.com/wa tch?v=XYSP1wRmij4&index=3 &list=PL59Y6KWIp-Df9b8hUortXmdExWCgSB0M
Instrucciones y expresiones en lenguaje estructurado utilizando CODESYS.
(3S-Smart Software Solution GmbH, http://www.infoplc.net/desca 2010) rgas/42-codesys
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
2. UNIDAD TEMÁTICA 2. DESARROLLO DE PROGRAMAS EN TEXTO ESTRUCTURADO BAJO EL ESTÁNDAR IEC 61131-3
2.1.
INTRODUCCIÓN
Como se definió en la temática anterior el Texto Estructurado es una herramienta usada con frecuencia en la programación de PLC’s debido a su versatilidad a la hora de programar sentencias y condiciones que en otros lenguajes no se podrían definir, tales como: asignación de valores a variables, sentencias con condiciones o bucles, etcétera. En esta unidad, se abarcará la programación y visualización de problemas solucionados a partir del lenguaje de Texto Estructurado, además se explicará cómo realizar un código y la definición de variables, finalmente se realiza una visualización por estados de las variables que tenga un programa y la creación de visualización grafica de un programa en Codesys V3.5 Teniendo en cuenta los temas abordados en la unidad temática 2, a continuación, se explicará a través de ejemplos de aplicación el desarrollo de programas en texto estructurado bajo el estándar IEC 61131-3, es importante mencionar que la teoría en la cual se soporta lo abordado en esta unidad, se encuentra desarrollada en la Unidad 1, por lo tanto se recomienda estudiar detenidamente cada uno de los temas abordados y traerlos a colación en esta unidad. 2.1.1. Programación con lenguaje Texto Estructurado Teniendo en cuenta que la programación de un lenguaje, requiere de su aplicación para hacer más eficiente su comprensión, a continuación, se realizará la contextualización de programación con el lenguaje Texto Estructurado en el cual se verá la implementación de una sentencia, un operador y la creación de una ventana de visualización básica para la comprensión grafica de dicho ejercicio. Inicialmente se declaran las variables que se desean utilizar en el programa como se evidencia en la figura 13.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 13. Área de variables del software Codesys V3.5 Tomado de: Software Codesys V3.5.
Dicha declaración se realiza en el caso de conocer a priori cuales tipos de datos y variables se van a manejar en el programa, para ello se estudia el problema a desarrollar y se realiza un mapeo de las señales y variables necesarias para la creación del programa. Si no se realiza dicho mapeo debido a que el programa no requiere de una cantidad considerable de variables a declarar, se puede realizar durante la programación del programa como se ve en la figura 12. Como se observa en la figura 13, se asignó un valor a una variable sin declarar, al hacer esto se desplegará una ventana permitiendo declarar dicha variable para el programa, definiendo para el tipo de dato, su valor inicial o final si es requerido, el objeto para el cual va dirigido el cual se refiere al programa o aplicación creada y un comentario si es necesario.
Figura 13. Declaración de variables del software Codesys V3.5 Tomado de: Software Codesys V3.5.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Luego de ver cómo podemos declarar las variables usadas para el programa, procedemos a realizarlo. En este caso utilizaremos el operador IF para una sentencia la cual consiste en encender un bombillo y apagar otro con respecto al estado de un interruptor que se puede encontrar en 1 o 0.
Figura 14. Sentencia If implementada en software Codesys V3.5 Tomado de: Software Codesys V3.5.
En la figura anterior se puede observar la estructura de una sentencia IF junto con condición ELSE, podemos ver que la asignación de un valor a una variable se realiza mediante la forma “:= “ finalizando la asignación o instrucción mediante “ ; ” , del mismo modo al realizar la condición para el condicional puede definirse como se observa en la figura o de la forma “ Interruptor = TRUE “ demostrando que la variable se encuentra
presente o tiene asignado dicho valor. Teniendo el código completo procederemos a realizar la simulación y ver el comportamiento de cada variable; para ello es necesario compilar el programa para asegurar de que la sentencia está escrita correctamente, esto se puede hacer mediante la tecla F11 o el menú compilar (Ver figura 15).
Figura 15. Ventana de mensajes software Codesys V3.5 Tomado de: Software Codesys V3.5.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Luego de verificar el código luego de ser compilado, se procede a entrar en simulación para ello, por medio del menú En línea > Simulación entramos en modo simulación (Ver figura 16).
Figura 16. Ventana En línea software Codesys V3.5 Tomado de: Software Codesys V3.5.
Posterior a ello se inicia sesión en la simulación, para ello se puede realizar la combinación de teclas Alt+F8 o por medio del menú En línea > Iniciar Sesión. Luego de iniciar sesión podremos visualizar el estado actual de las variables como se evidencia a continuación (Ver figura 17).
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 17. Simulación software Codesys V3.5 Tomado de: Software Codesys V3.5.
En este punto se puede visualizar el estado de cada variable y su comportamiento según el cumplimiento de las condiciones descritas en la sentencia, para poder observar el comportamiento de la secuencia en su totalidad es necesario iniciar la secuencia, se puede iniciar mediante la tecla F5 y de este modo enviar valores preparados (Ver figura 18).
Figura 18. Testigo programa en ejecución software Codesys V3.5 Tomado de: Software Codesys V3.5.
Los valores preparados son estados que se pueden asignar a una o varias variables al mismo tiempo para posteriormente cumplir una condición o visualizar el cambio de estado una variable; dichas asignaciones se realizan por medio de la interface “Valor preparado” encontrada en la tabla de simulación de las variables.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura19. Visualización de estado de las variables en simulación software Codesys V3.5 Tomado de: Software Codesys V3.5.
En dicha taba el software Codesys V3.5 permite asignar un valor a cada variable dependiendo del tipo de dato que sea, en este caso se asignaran los datos contrarios a los estados en los que se encuentran, para ello se asigna el valor en la casilla definida en “valor preparado” para cada variable.
Figura 20. Valores Preparados de estado de las variables en simulación software Codesys V3.5 Tomado de: Software Codesys V3.5.
Ulteriormente de seleccionar el estado al cual se quiere cambiar cada variable se puede asignar mediante la combinación de las teclas Ctrl+F7 y cambiaran su estado como se evidencia en la figura.
Figura 21. Inscripción de valores preparados en simulación software Codesys V3.5 Tomado de: Software Codesys V3.5.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
De este modo se puede visualizar el comportamiento de los testigos “Lamp” y “Lamp2” al asignar valores entre “TRUE” y “FALSE” a la variable “Interruptor”.
Figura 22. Visualización de variables en simulación software Codesys V3.5 Tomado de: Software Codesys V3.5.
Como se puede observar la realización de un proyecto con Codesys V3.5 en Texto Estructurado (ST) es muy intuitivo y fácil, así mismo la simulación de las variables a pesar de no tener una interface gráfica es sencilla de comprender.
2.1.2. Visualización A continuación, se abarcará una pequeña parte de las herramientas que ofrece Codesys V3.5 para la visualización e interface gráfica de programas, esto con el fin de visualizar el ejercicio anteriormente planteado y realizar una introducción a una de las partes que componen el ejercicio que se verá al finalizar esta unidad. Teniendo en cuenta el ejercicio que se desarrolló en el anterior ítem crearemos y visualizaremos el comportamiento de las variables de dicho programa; para ello se procede a crear la ventana de visualización.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 23. Creación de ventana de visualización software Codesys V3.5 Tomado de: Software Codesys V3.5.
Al dirigirse a este menú y crear la visualización se desplegará una ventana la cual permite darle nombre.
Figura 24. Nombre de visualización software Codesys V3.5 Tomado de: Software Codesys V3.5.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
En las propiedades de visualización se encuentra una gran variedad de formas y dispositivos predeterminados, para este ejemplo usaremos dos testigos predeterminados como Lámparas y un interruptor de palanca.
Figura 25. Herramientas de visualización software Codesys V3.5 Tomado de: Software Codesys V3.5.
Luego de escoger los elementos que se desean utilizar en la visualización, se realiza la configuración de cada uno de ellos definiendo las variables que van a manejar.
Figura 26. Configuración de herramientas de visualización software Codesys V3.5 Tomado de: Software Codesys V3.5.
Luego de la configuración solo consta de entrar en simulación, iniciar sesión y ejecutar el programa, al simular dicho programa tendremos el siguiente resultado.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 27. Visualización en dos estados software Codesys V3.5 Tomado de: Software Codesys V3.5.
Como se evidencia en la figura anterior vemos cómo se comporta cada lámpara con respecto al valor que tenga el interruptor (TRUE o FALSE), teniendo en cuenta al análisis realizado al código. Finalmente se realizó la visualización de una sentencia IF programada bajo el lenguaje de Texto Estructurado.
2.2.
MARCO CONCEPTUAL
En la presente unidad se realiza la contextualización del desarrollo de programas de texto estructurado bajo la plataforma Codesys V3.5 tomando como referencia una aplicación, esto con el objetivo de lograr una mayor comprensión de la aplicación del lenguaje. El ejemplo a utilizar será el de una máquina taladradora de piezas con actuadores electroneumáticos (Figura 28) de ciclo único de perforación. En este ejemplo se verá el paso a paso del desarrollo de un programa y su visualización y control, basado en Texto Estructurado.
2.2.1. Aplicación de programación. Máquina taladradora La aplicación de la máquina taladradora (Figura 28) consiste en una máquina en la que se posiciona manualmente una pieza, se presiona un botón de START para dar la orden de inicio de perforación para que un cilindro neumático, controlador por una válvula electroneumática biestable, desciende con la broca, perfora y retorna a su posición inicial. En la tabla 4 se relaciona las señales de control de la máquina asociadas a las entradas y salidas del PLC.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 28. Máquina y secuencia Taladradora Tomado de: (Festo Didactic, 2009)
En la Figura 28 se observa la secuencia de funcionamiento de cada cilindro, y en la figura 28 el mapeo de señales que se usarán en este ejemplo. Tabla 4. Variables asociadas a motores y pulsadores ejemplo 1.3.1 VARIABLE EQUIPOS ASOCIADO DESCRIPCIÓN FUNCIONAL START Interruptor de inicio Da inicio al proceso CA_0 Cilindro A Posición retraído cilindro A CA_1 Cilindro A Posición afuera cilindro A CB_0 Cilindro B Posición retraído cilindro B CB_1 Cilindro B Posición afuera cilindro B Permite saber si la máquina está dispuesta para iniciar la READY secuencia K Condición de discriminación. Fuente: Autor
Para iniciar con la programación, se crea un proyecto Standard en Codesys V3.5 seleccionado el lenguaje texto estructurado. Posteriormente se procede a redactar las sentencias; en este caso se realiza la primera la cual define el estado de inicio de máquina tomando como condicionales todos los sensores en “FALSE” siendo el estado inicial de estos, esto con el fin de definir el valor inicial de los cilindros dándoles valores de “TRUE” a “CA_0” y “CB_0” (Figura 29).
Figura 29. Primera sentencia Codesys V3.5 Tomado de: Software Codesys V3.5.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Al tener el sensor de cilindro adentro tanto para A como para B (Figura 30), significa que la máquina esta lista para empezar, por ello se procede a colocar un testigo que nos indique dicho estado (Figura 31).
Figura 30. Segunda sentencia Codesys V3.5 Tomado de: Software Codesys V3.5.
2.2.2. Visualización del estado de proceso La visualización se realizará mediante lámparas ubicadas en los sensores de cada actuador y el testigo de “READY” el cual fue programado en la secuencia anterior
(Figura 31).
Figura 31. Visualización Taladradora “READY” Codesys V3.5 Tomado de: Software Codesys V3.5.
Luego de tener la maquina en el estado deseado (READY) se procede a programar la siguiente condición para posicionar la pieza con el cilindro A (Figura 32).
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 32. Tercera sentencia Codesys V3.5 Tomado de: Software Codesys V3.5.
Para ello se tuvo en cuenta el estado en el que se encuentra la máquina, en este caso la condición del operacional fue el estado “READY” y “START” para de esta manera apagar
el testigo del cilindro A (adentro) para encender el testigo del vástago fuera que es lo que se desea para posicionar la pieza a perforar; del mismo modo se apaga el testigo de “READY” debido que este indica el posicionamiento para CA_0 y CB_0, condición que e n
este punto ya no se cumple. Posteriormente se visualiza y se cambia el estado de “START” mediante el interruptor
de palanca (Figura 33).
Figura 33. Visualización salida de vástago cilindro A Codesys V3.5 Tomado de: Software Codesys V3.5.
Teniendo el vástago de A fuera significa que nuestra pieza esta lista para perforar, así que procedemos a taladrar interpretándolo como la salida del vástago del cilindro B. Para ello como se realizó en la sentencia anterior condicionamos en el operador el estado actual de los sensores para realizar el siguiente paso (Figura 34).
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 34. Cuarta sentencia Codesys V3.5 Tomado de: Software Codesys V3.5.
De esta manera con respecto al estado del cilindro A (fuera) y B (dentro) se condiciona el operacional para ulteriormente sacar el vástago del cilindro B el cual hace referencia a la perforación de la pieza (Figura 35).
Figura 35. Visualización salida de vástago cilindro B Codesys V3.5 Tomado de: Software Codesys V3.5.
Teniendo la pieza perforada se procede a retirar el taladro de la misma para ello como en las anteriores sentencias se condiciona el operacional y se devuelve el vástago de B como se muestra en la figura 36.
Figura 36. Quinta sentencia Codesys V3.5 Tomado de: Software Codesys V3.5.
Luego de condicionar el sensor CA_1 y CB_1 para el operacional se procede a devolver a su estado anterior el cilindro B, la visualización se puede observar en la figura 37.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 37. Visualización entrada de vástago cilindro B Codesys V3.5 Tomado de: Software Codesys V3.5.
Al tener la pieza perforada luego de su posicionamiento se procede a retirar la pieza de la estación, para ello se pondrá el vástago del cilindro A dentro. Para ello se debe tener en cuenta que la condición que vemos en la visualización se cumplió anteriormente en la sentencia número 4 como se ve en la figura 38, para evitar que estas dos condiciones se cumplan se creara una variable que al entrar en esta sentencia este en “FALSE” y al volver a la sentencia anterior este en “TRUE”, de esta manera las condici ones que se
cumplan tanto para esta caso como para el anterior serán distintas, por consiguiente no se cumplirán al tiempo.
Figura 38. Sexta sentencia Codesys V3.5 Tomado de: Software Codesys V3.5.
Se debe tener en cuenta que al preguntar por esta vari able “K” en “FALSE” en cualquier sentencia posterior a esta o al inicio del programa se debe cambiar a “TRUE” para que
de este modo la sentencia anterior a esta que es aquella que se debe cumplir primero, se cumpla, esto se verá finalizando el ejemplo para dejarlo a punto.
Estructura para el diseño de cursos virtuales Versión 2. Agosto de 2016
Figura 39. Visualización entrada de vástago cilindro A Codesys V3.5 Tomado de: Software Codesys V3.5.
Este sería el estado final de la máquina, recordando que se pasó por cada uno de los estados de la máquina por medio de cada sentencia (Figura 39). Ahora se procede a dejar a punto el programa acondicionando la variable “K” para la primera condición de
CA_1 y CB_0 para el set fuera del vástago del cilindro B (Figura 40).
Figura 40. Visualización entrada de vástago cilindro A Codesys V3.5 Tomado de: Software Codesys V3.5.