1.- Introducción
Este articulo es la primera parte de una serie de dos.
En el control industrial se utiliza la norma estándar internacional IEC 61131-3 que define los lenguajes de programación de los Controladores Lógicos Programables (PLC). Uno de ellos es el Texto Estructurado (Structured Text - ST) que es un lenguaje textual de alto nivel similar a PASCAL.
Un programa en ST se compone de declaraciones. Hay dos tipos de declaraciones: de asignación, para asignar un valor a una variable y de control, como sentencias de selección y sentencias de repetición.
Las declaraciones se componen de los siguientes elementos:
Variables, Constantes, Operadores y Funciones.
2.- Composición del Texto Estructurado
Operador de asignación:
El operador de asignación es y asigna el valor de la expresión de la derecha a la variable de la izquierda. Se utiliza para establecer valores iniciales, almacenar resultados de cálculo e incrementar las variables.
Ejemplos:
Asignamos a A el valor 4.
Asignamos a B el doble del valor de C.
Asignamos a D el valor de E.
Asignamos a F el valor “cierto” (1 lógico)(on).
Asignamos a G el valor “falso” (0 lógico)(off).
Operador de comparación:
El operador de comparación es no confundir el operador de asignación, con el de comparación.
Ejemplos:
comparamos el valor de A con 4.
comparamos el valor de B con el doble del valor de C.
Colores usados en el código
El CX-Programmer muestra automáticamente texto en los colores siguientes:
Palabras reservadas: Azul
Comentarios: Verde
Errores: Rojo
Resto de cosas: Negro
Los colores NO los podemos personalizar.
Delimitador de instrucciones:
Las declaraciones de asignación y control deben acabar siempre con un delimitador de punto y coma ( ; ), no se pueden completar simplemente usando un retorno de carro.
Ejemplos:
No se puede usar un delimitador dentro de una sentencia ya que se producirá un error de sintaxis.
Ejemplo:
Comentarios:
Los comentarios se encierran entre paréntesis y asteriscos (* y *). Se puede usar cualquier carácter dentro del comentario excepto paréntesis y asteriscos. Los comentarios pueden comprender varias líneas. No se admite anidamiento dentro de los comentarios.
Ejemplos:
Espacios, Retornos de Carro y Tabulaciones:
Se pueden utilizar cualquier número de espacios, retornos de carro y tabulaciones en cualquier lugar dentro de las sentencias. Se recomienda usarlos entre palabras reservadas y ecuaciones para facilitar su mejor comprensión.
No podemos utilizar espacios, retornos de carro y tabulaciones dentro de palabras reservadas, nombres de variables, caracteres especiales y constantes (valores numéricos).
Ejemplos:
Mayúsculas y Minúsculas:
Es indistinto el uso de mayúsculas y minúsculas en cualquier sentencia o nombre de variable.
Ejemplos:
Nombres de variables:
Los caracteres siguientes no se pueden utilizar en nombres de variables:
Las variables no pueden comenzar por un número (0 a 9).
No se pueden utilizar espacios en nombres de variables.
Prioridad entre operadores:
Las operaciones que requieran prioridad las pondremos entre paréntesis.
Ejemplo:
Cadenas de Texto:
- El número máximo de caracteres alfanuméricos en una cadena de texto (tipo STRING) es de 255.
- Las cadenas de texto no distinguen entre mayúsculas y minúsculas.
- Una cadena de texto se tiene que poner entre comillas → 'AAA'.
Notación |
Descripción |
‘A’ |
Indica la cadena de texto "A" (ASCII 41) |
‘ ’ |
Indica una cadena de texto que contiene un único espacio (ASCII 20) |
‘’ |
Indica una cadena de texto vacía |
- Un carácter \( seguido de dos dígitos numéricos se interpretan como un hexadecimal.
\)02 → #02 hexadecimal
- Un carácter \( seguido de una letra se interpreta como:
Notación |
Descripción |
|
'\)\(' |
Carácter de \) (signo del dollar) |
(Código ASCII: #24) |
'\('' |
Comilla simple |
(Código ASCII: #27) |
'\)L' ó '\(l' |
Final de línea (LF) |
(Código ASCII: #0A) |
'\)N' ó '\(n' |
Nueva línea (CR + LF) |
(Código ASCII: #0D0A) |
'\)P' ó '\(p' |
Final de página (FF) |
(Código ASCII: #0C) |
'\)R' ó '\(r' |
Retorno de carro (CR) |
(Código ASCII: #0D) |
'\)T' ó '$t' |
Tabulación horizontal (Tab) |
(Código ASCII: #09) |
Constantes Numéricas:
Los valores numéricos se pueden expresar en decimal, hexadecimal, octal o binario de la siguiente forma:
Ejemplo, para el valor decimal 12:
- Decimal (sin prefijo): 12
- Hexadecimal: 16#C
- Octal: 8#14
- Binario: 2#1100
Operadores o Funciones (de más a menos prioridad):
Operador |
Tipo de operación |
( ) [ ] |
Expresión/Tablas[índices] |
Función () |
Evaluación de una función |
** |
Exponenciación |
NOT |
Complemento |
* / |
Multiplicación / División |
+ - |
Suma / Resta |
< > <= >= |
Comparaciones |
= < > |
Igualdad / Desigualdad |
AND & |
Operación Booleana AND |
XOR |
Operación Booleana XOR |
OR |
Operación Booleana OR |
Sentencias o declaraciones:
Sentencias o Declaraciones |
Función |
; |
Final de declaración |
(* *) |
Comentario |
:= |
Asignación |
IF, THEN, ELSE, ELSIF, END_IF |
Condicional simple |
CASE OF, ELSE, END_CASE |
Condicional compuesta |
FOR, TO, BY, DO, END_FOR |
Bucle con n repeticiones |
WHILE, DO, END_WHILE |
Bucle con condición inicial |
REPEAT, UNTIL, END_REPEAT |
Bucle con condición final |
EXIT |
Sale del proceso de un bucle |
RETURN |
Sale del bloque de función |
3.- Sentencias de control
Sentencia IF:
Esta sentencia se utiliza para ejecutar una expresión cuando se cumple una condición especificada. Si la condición no se cumple, se ejecuta una expresión diferente.
IF se debe utilizar junto con END_IF.
IF - Condición Simple:
Sintaxis:
Diagrama de flujo:
Sintaxis:
Diagrama de flujo:
IF - Condición Múltiple:
Sintaxis:
Diagrama de flujo:
Ejemplos:
HASTA AQUÍ LA PRIMERA PARTE