Módulo 3. Texto Estructurado
Módulo 3. Texto Estructurado
Módulo 3. Texto Estructurado
TABLA DE CONTENIDO
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.
1.1. INTRODUCCIÓN
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.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.
a. Operadores
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:
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
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.
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
El indicador READY únicamente va a encender cuando CA_0 y CB_0 sean asignados con
el valor booleano TRUE.
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.
- Expresión, literal, variable, dirección de los tipos de datos INT, DINT, UINT, UDINT o
REAL
NOT 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
XOR DWORD
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
1.3. EJEMPLOS
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
Tabla de señales
Condiciones
Desarrollo
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.
Condiciones
1.5. CONCLUSIONES
Es una ventaja conocer un lenguaje 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.
2.1. INTRODUCCIÓN
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.
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.
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
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.
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.
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.
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).
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 en
este punto ya no se cumple.
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
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).
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.
Se debe tener en cuenta que al preguntar por esta variable “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
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).
Al tener dicha variable como se observa en el código completo del ejercicio nos
permitirá que estas dos condiciones sean discriminantes una frente a la otra y evitar
que se cumplan al tiempo.
Preguntas de reflexión:
2.4. CONCLUSIONES