Está en la página 1de 8

Automática e Instrumentación SOLUCIONES Octubre 2004 / n.

º 355

Programación de controladores industriales

Estándares IEC 61131-3 e IEC


61499 [2ª parte: Lenguajes no gráficos]
Este artículo es el segundo de una serie de tres que pretende introducir
al lector en las ideas básicas de los estándares IEC 61131-3 y preparar el
terreno para presentar el estándar IEC 61499. En el primer artículo,
publicado el pasado mes de julio, se pasaba revista a los lenguajes
gráficos, mientras que este segundo está dedicado a los lenguajes de
texto, en concreto, Lista de Instrucciones y Texto Estructurado.

a selección del lenguaje a uti- fico usado para construir procedi- digo máquina. Es útil para pequeñas

L lizar para un desarrollo puede


estar basada en la naturaleza
de la aplicación, y viene determina-
mientos complejos a partir de una li-
brería de funciones.
El Diagrama de Contactos es un
aplicaciones que requieran de una
rápida ejecución para optimizar el
tiempo de proceso.
da por las preferencias del progra- excelente lenguaje gráfico para lógi-
74 mador. Sin embargo, a parte de los cas discretas. También tiene la habi- Introducción
gustos y preferencias de éste, exis- lidad de incluir instrucciones de blo- Recursos del estándar IEC
ten ciertas características de los di- ques funcionales dentro de una línea. 61131-3
ferentes lenguajes que deben tener- Los contactos y bobinas del diagra- Recurso es el nombre general asig-
se en consideración en momentos ma de contactos pueden ser usados nado a todo componente habilitado
cruciales, como lo es la selección del en el lenguaje diagrama de bloques para proporcionar acceso a las en-
lenguaje. funcionales para implementar control tradas/salidas y servicios que permi-
El Gráfico de Funciones Se- discreto o funciones. tan la ejecución de programas del
cuenciales, (GFS) o Grafcet, es un El Texto Estructurado es un len- IEC 61131-3. Normalmente, los PLC
lenguaje gráfico que ofrece estructura guaje similar al Pascal, que se emplea que pueden ejecutar programas del
general y coordinación a las secuen- para procedimientos complejos o cál- IEC 61131-3 son considerados como
cias del programa. Soporta seleccio- culos que no pueden ser fácilmente simples recursos; sin embargo, un
nes alternativas y secuencias para- implementados utilizando lenguajes PC que soporte la ejecución de pro-
lelas. gráficos. gramas de acuerdo al estándar tam-
Los Diagramas de Bloques Fun- La Lista de Instrucciones es un bién puede ser considerado como re-
cionales (DBF) son un lenguaje grá- lenguaje de bajo nivel, similar al có- curso.

Compatibilidad entre
Conceptos y abreviaciones diferentes marcas
PLC Programmable Logic Controller No es del todo posible ejecutar una
LD Ladder Diagram (Diagrama de Contactos) aplicación que corre perfectamente
FB Function Blocks (Bloques Funcionales) en un tipo de PLC en otro de dife-
IL Instruction List (Lista de Instrucciones) rente proveedor. Existen diferentes
ST Structured Text (Texto Estructurado) problemas que previenen la portabi-
SFC Sequential Function Chart (Diagrama Funcional) lidad directa de software del IEC
IEC International Electrotechnical Committee 61131-3:
POU Program Organization Unit (Unidad Organizacional • Las entradas y salidas de los PLC
de Programas) son, por lo general, direccionadas en
forma diferente.
Octubre 2004 / n.º 355 SOLUCIONES Automática e Instrumentación

• Es habitual que el ci- Características de


clo de ejecución difiera de Tabla 1. Tipos de datos enteros los lenguajes
un PLC a otro. definidos en IEC 61131-3 textuales del IEC
• Cada proveedor im- 61131-3
Tipo de dato Descripción Bits
plementa un subgrupo dis- Los lenguajes textuales
tinto de características del SINT Short integer 8 permiten una interacción
IEC 61131-3. INT Integer 16 directa con el controlador
• Distintos proveedores DINT Double integer 32 si así se requiere, ya que
pueden tener diferentes LINT Long integer 64 para ciertas instrucciones
valores para implementa- USINT Unsigned short integer 8 es posible manipular me-
ciones específicas de arre- UINT Unsigned integer 16 jor los recursos, lo que no
glos, cadenas de caracte- UDINT Unsigned double integer 32 es posible del todo con los
res, etcétera. ULINT Unsigned long integer 64 lenguajes gráficos. Es im-
• No existe un formato portante señalar que cual-
estandarizado de almace- quiera de los lenguajes
namiento para las aplica- gráficos puede ser repre-
ciones del IEC 61131-3.
Tabla 2: Comparación entre el TE y LI sentado con instrucciones
Lo anterior es producto Lista de Texto Estructurado de los lenguajes textua-
de la diversidad comercial Instrucciones les, en unos casos con ma-
WHILE Boiler<>0 DO
existente. Gracias a dicha usual: yor simplicidad o conve-
Var1:=Var1*2;
diversidad es posible, por lo LD Boiler niencia que en otros, como
Boiler:= Boiler-1;
general, encontrar una so- EQ 0 se podrá apreciar mas
END_WHILE
lución adecuada a las nece- JMPC final adelante. Lo anterior no
Erg:=Var1;
sidades de automatización. LD Var1 implica que sea más con-
MUL 2 veniente el uso de len-
Conversión entre guajes de texto para todo 75
ST Var1
diferentes lenguajes LD Boiler tipo de aplicaciones, pues
del IEC 61131-3 SUB 1 existen aplicaciones en las
La conversión directa en- ST Boiler cuales los algoritmos no
tre los diferentes lenguajes JMP usual requieren de demasiados
del IEC 61131-3 no es del final: recursos o tiempos críti-
todo posible; además, esta LD Var1 cos. En estas aplicaciones
conversión no fue un obje- ST Erg resulta más conveniente
tivo cuando se creó el es- el uso de alguno de los len-
tándar. Uno de los proble- guajes gráficos.
mas más evidentes se da
cuando se intenta representar arreglos Lenguajes de programación Programación con lenguajes
de variables en diagrama de contac- En IEC 61131-3 están definidos cua- textuales
tos, por mencionar sólo uno de ellos. tro lenguajes de programación, lo Elementos en común
que significa que se han definido tan- Parte de los elementos comunes en
Lenguajes no gráficos del to la sintaxis como su semántica. Dos los lenguajes del IEC 61131-3 son los
estándar IEC 61131-3 de los lenguajes son gráficos y los tipos de datos. La tabla 1 muestra los
Existen situaciones en las que el em- otros dos, que se tratan en este artí- diferentes tipos de datos enteros.
pleo de lenguajes gráficos no es del culo, son de texto:
todo satisfactorio o, simplemente, no • Texto estructurado Diferencias entre el texto
es posible utilizar las herramientas • Lista de instrucciones estructurado y lista de
adecuadas. Es aquí donde se hace • Diagrama de contactos instrucciones
latente el uso de lenguajes de texto, • Bloques funcionales Tal como el nombre indica, el texto
que permiten la manipulación de ins- La selección del lenguaje depende, estructurado está concebido para la
trucciones, imposible de implemen- en la mayoría de los casos, de la for- programación estructurada. Es decir,
tar en los lenguajes gráficos. Dentro mación del programador, de la es- para determinadas construcciones
de los lenguajes de texto se encuen- tructura del problema o del propio de uso frecuente, tales como bucles
tran Lista de Instrucciones (LI) y sistema de control. secuenciales, el lenguaje TE esta-
Texto Estructurado (TE). blece estructuras para la programa-
Automática e Instrumentación SOLUCIONES Octubre 2004 / n.º 355

ción. Esto ofrece la ventaja de redu- • Basada para la reutilización de taxis parecida a la de Pascal, si bien
cir la probabilidad de errores y con- software. la diferencia reside precisamente en
ferir mayor claridad al programa. En • Lista de entradas y salidas al- que el TE fue creado pensando en
la tabla 2 se comparan dos secuen- macenadas en el proyecto. aplicaciones de control industrial.
cias de programa en los lenguajes LI Resulta además muy apropiado para
y TE con idéntico significado: un bu- POUS cálculos aritméticos complicados. El
cle secuencial para el cálculo de se- • Programación bien estructurada, lenguaje es fácil de leer y de utilizar,
gundas potencias en lenguaje LI lo que facilita la reutilización de có- especialmente cuando se utilizan
y TE. digo identificadores apropiados y sufi-
Como se puede observar, la pro- • Interface bien definida, gracias cientes y buenos comentarios.
gramación en el lenguaje TE del bu- a lo cual otras variables pueden ser
cle secuencial no sólo es más breve, usadas en otros proyectos. Llamada a un bloque
sino también considerablemente más • La reutilización de bloques fun- funcional
fácil de leer, lo que se hace más evi- cionales ahorra tiempo y dinero. Puede ser invocada una instancia de
dente en el caso de bucles secuen- un bloque funcional llamando a la
ciales entrelazados en construcciones SFC instancia del BF con valores de los pa-
de mayor envergadura. La descrip- • Ayuda a dividir programas gran- rámetros de entrada apropiados. En
ción del significado del código se tra- des en pequeños módulos y bien es- el supuesto de que estos valores no
tará mas adelante. tructurados. sean suministrados, se toman en con-
• Desarrollo descendente o as- sideración automáticamente los de la
Texto estructurado cendente, lo que mejora la estructu- ejecución anterior. Si el BF no ha
El texto estructurado es un poderoso ración. sido llamado con anterioridad, cual-
lenguaje con raíces en Ada, Pascal y • Lenguajes diferentes en el pro- quier parámetro de entrada que no
C. Puede ser muy útil en la definición grama. Existe la posibilidad de utili- haya sido asignado puede tomar va-
de complejos algoritmos de bloques zar los cuatro lenguajes del están- lores por defecto de acuerdo a como
76 funcionales, los cuales pueden ade- dar, o incluso es posible utilizar SFC fueron definidos en el BF.
más ser usados por otros lenguajes. para definir algún paso. Una llamada a un bloque funcional
El empleo de un estándar brinda • Facilidad de depuración y loca- en lenguaje TE se realiza escribien-
numerosos beneficios para usuarios lización de errores, debido a la vi- do el nombre de la instancia del blo-
y programadores, entre los cuales se sualización gráfica de cual es el es- que, asignando a continuación, y en-
pueden destacar los siguientes: tado activo y el valor de las variables. tre paréntesis, los valores que se
• Reduce la necesidad de forma- desee a los parámetros. La forma en
ción y actualización de los recursos General la que se realiza la llamada a la fun-
humanos. • Ahorra tiempo de entrenamien- ción se muestra a continuación:
• Se puede lograr que el código to a los programadores.
sea reutilizable en gran medida. • Habilita desarrollo de software BloqueFuncionInstancia
• Reduce malos entendidos y erro- en paralelo por más programadores. (Parametroentrada1:=
res. El texto estructurado o TE puede ValorExpresion1,
• Se trata de técnicas de progra- ser además utilizado para expresar el Parametroentrada2:=
mación ampliamente usadas en con- comportamiento de las funciones, ValorExpresion2, …);
trol industrial. bloques funcionales y programas.
• Permite combinar distintos com- Este lenguaje permite la represen- En el siguiente ejemplo se llama a
ponentes de diferentes programas, tación de los pasos, las acciones y un temporizador con asignaciones
proyectos, lugares compañías y países. las transiciones. para los parámetros IN y PT. A con-
• Presenta una mejor vista gene- El lenguaje de texto estructurado tinuación, se asigna la variable de re-
ral a través de la estructura y la mo- es un lenguaje de alto nivel con sin- sultado Q a la variable A. La variable
dularidad. de resultado se activa, como en el len-
• Permite un ahorro de la inversión guaje LI, con el nombre del bloque
necesaria a través de la estandariza- funcional seguido de un punto y del
ción. nombre de la variable:

Variables CMD_TMR(IN := %IX5, PT := 300);


• Mejor documentación debido al ■ Apariencia de POUs en la plataforma A:=CMD_TMR.Q
uso de nombres y símbolos. TwinCAT de Beckhof.
Octubre 2004 / n.º 355 SOLUCIONES Automática e Instrumentación

Gracias a la alta jerarquía de dise-


ño que se puede generar en los pro- Tabla 3. Operadores del lenguaje Texto
gramas, es posible definir un POU Estructurado
como una red de bloques funciona- Operación Símbolo
les, y éstos pueden contener ins-
trucciones de cualquiera de los len- Entre paréntesis (“expresión”)
guajes estandarizados, incluso del Llamada a funciones NomFunción (parámetros)
mismo BF. Lo anterior permite divi- Potenciar **
dir problemas grandes en pequeños Negar -—
bloques (teniendo en cuenta la fun- Operaciones *, /, +, —
cionalidad). Módulo MOD
Comparar <, >, <=, >=
Instrucciones en el lenguaje de Booleana AND, XOR, OR
texto estructurado
Consideraciones generales dencia del estándar IEC 61131-3: riable, dirección) al cual se asigna el
El IEC61131-3 no establece límites en • Trasciende la barrera regional, valor de la expresión del lado dere-
el nivel de complejidad que pueda ser cultural y filosófica. cho junto con := como operador de
expresado en el TE. Sin embargo, • Trasciende el “factor confort”. asignación.
no es del todo libre, y existen cier- • Trasciende el factor “modas en Ejemplo:
tas limitaciones en algunas imple- la automatización”. Var1 := Var2 * 10;
mentaciones. Por mencionar algu- Después de la ejecución, Var1 tie-
nas, la extensión de expresiones, Instrucción RETURN ne un valor diez veces superior a
instrucciones y comentarios, nú- La instrucción RETURN se puede Var2.
mero de opciones en CASE y algunas utilizar para terminar una función
otras. que, por ejemplo, es dependiente de Instrucciones condicionales
Debido a la diversidad de produc- una condición. Las instrucciones condicionales son 77
tos, el estándar también establece, Sintaxis: utilizadas para manipular el flujo de
para soluciones dependientes, una RETURN; ejecución del programa. Este tipo de
lista de características críticas que fa- instrucciones permite seleccionar
vorecen la portabilidad del software. Evaluación de expresiones qué instrucciones se deberán ejecu-
Existen situaciones en las cuales el Una expresión es una construcción tar y cuáles no. Con la instrucción IF
desarrollo de ciertas tareas de auto- que devuelve un valor después de su se puede comprobar una condición
matización requiere algoritmos com- evaluación. Las expresiones se com- y ejecutar instrucciones en función
plejos o soluciones que requieren ponen de operadores y operandos. de esta condición.
priorizar la ejecución. Es en estos Un operando puede ser una cons- La selección de instrucciones por
casos cuando los lenguajes de pro- tante, una variable, una llamada a medio del constructor IF THEN de-
gramación textuales aparecen como funciones u otra expresión. La eva- pende del valor devuelto por el ope-
una solución viable. luación de una expresión se realiza rador, que puede ser una operación
Para clarificar lo anterior, si el pro- mediante la ejecución de los opera- booleana sencilla o tan compleja
ceso requiere de la solución de un al- dores según determinadas reglas de como se requiera. La sintaxis del
goritmo muy elaborado, con requisi- enlace. El operador con el enlace constructor se muestra a continua-
tos matemáticos, el lenguaje que más fuerte se ejecuta primero, a con- ción:
conviene utilizar es el de Texto Es- tinuación el operador que le sigue Sintaxis:
tructurado. Y ello debido a la diver- en intensidad de enlace, etc., hasta IF <expresión booleana> THEN
sidad de código con que cuenta: bu- que se hayan ejecutado todos los <instrucciones…>
cles, funciones matemáticas operadores. Los operadores con la END_IF;
prediseñadas, etc. En cambio, si en misma fuerza de enlace inician su La expresión booleana puede ser
algunas partes del proceso existen ejecución de izquierda a derecha. cualquier expresión que devuelva
tiempos críticos, lo anterior requie- La tabla 3 muestra los operadores VERDADERO o FALSO como ex-
re una solución que dé prioridad al TE por orden de fuerza de enlace. presión lógica.
tiempo de ejecución, y el mejor len-
guaje de cara a este requisito es el de Operador de asignación Instrucción de selección CASE
Lista de Instrucciones. En el lado izquierdo de una asigna- La instrucción condicional CASE per-
Destacan tres puntos de trascen- ción se encuentra un operando (va- mite la selección de instrucciones
Automática e Instrumentación SOLUCIONES Octubre 2004 / n.º 355

Algoritmo de ejemplo: Elevador

imilar al
S primer ar- a) b) c) Texto Estructurado

IF(NOT B4 OR B5) THEN


Lista de Instrucciones

LDN B4
tículo publica- OR B5
M1:= FALSE;
do en el mes de M2I:= FALSE; NOT
M2D:= FALSE; JMPC else1_0
julio del año en M3:= FALSE; LD FALSE
curso, el ejem- M4S:= FALSE; ST M1
M4B:= TRUE; LD FALSE
plo se desarro- END_IF ST M2I
lla sobre la base IF B1 THEN LD FALSE
IF (NOT B2) THEN ST M2D
funcional de un WHILE (NOT B4) DO LD FALSE
ST M3
elevador fabri- a) posición inicial o de carga del palet; b) movimiento vertical;
c) posición final o de descarga del palet.
M1 := FALSE;
M2I := FALSE; LD FALSE
cado por la fir- M2D:=FALSE; ST M4S
M4S := FALSE; LD TRUE
ma Flexlink. Cuenta con tres cintas transportadoras, de las cuales una M4B := TRUE; ST M4B
de ellas proporciona movimiento vertical. La finalidad de este ejemplo prác- END_WHILE; else1_0:
M2D:= TRUE; end1_0:
tico será, a grandes rasgos, la de construir un bloque funcional utilizando M1 := TRUE; LDN B1
ELSE JMPC else2_0
el lenguaje de texto estructurado y presentar, en forma de tabla compa- M1 := FALSE; LD B2
rativa, el código del bloque funcional del elevador en el lenguaje de lista M2D:= FALSE; JMPC else3_0
M4S := TRUE; while4_0:
de instrucciones. WHILE (NOT B5) DO LD B4
Numerando los transportadores que forman el elevador, considérese la M4S:= TRUE; JMPC endwhile4_0
END_WHILE; LD FALSE
numeración de acuerdo a la trayectoria que recorre el palet. Esto signifi- M2I:= TRUE; ST M1
WHILE (NOT B3) DO LD FALSE
ca que el primer transportador es el de la esquina inferior izquierda. Des- M3:= TRUE; ST M2I
cribiendo a grandes rasgos las principales posiciones del elevador refe- END_WHILE; LD FALSE
M2I:= FALSE; ST M2D
renciadas en la figura superior: M4B:= TRUE; LD FALSE
a. En esta posición inicial es en la que el primer transportador transfie- M3:=FALSE; ST M4S
78 END_IF; LD TRUE
re el palet al segundo, el cual proporcionará un poco más tarde el movi- END_IF; ST M4B
JMP while4_0
miento vertical. endwhile4_0:
b. Una vez finalizado el movimiento vertical, mediante el cual el segun- LD TRUE
ST M2D
do transportador alcanza la posición superior, la siguiente etapa es la des- LD TRUE
carga del palet. ST M1
JMP end3_0
c. Dicha descarga se re- else3_0:
LD FALSE
aliza mediante la transfe- ST M1
rencia del palet del se- LD FALSE
ST M2D
gundo transportador al LD TRUE
tercero. Una vez transfe- ST M4S
while5_0:
rido, el segundo trans- LD B5
JMPC endwhile5_0
portador regresa a la po- LD TRUE
sición inicial para esperar ST M4S
JMP while5_0
el siguiente palet. endwhile5_0:
LD TRUE
ST M2I
Diagrama de flujo while6_0:
LD B3
A continuación es posible JMPC endwhile6_0
seguir el proceso revi- LD TRUE
ST M3
sando el diagrama de flu- JMP while6_0
endwhile6_0:
jo. Dicho diagrama repre- LD FALSE
senta todas las etapas de ST M2I
LD TRUE
funcionamiento normal, ST M4B
esto indica que para sim- LD FALSE
ST M3
plificar, no se incluyen las end3_0:
else2_0:
posibles fallas en las que end2_0:
pudiera incurrir el siste-
Diagrama de flujo del algoritmo de control del eleva- ma.
dor La elaboración de un Tabla comparativa del Bloque Funcional entre TE y LI.
Octubre 2004 / n.º 355 SOLUCIONES Automática e Instrumentación

dependiendo del valor de una ex-


presión que devuelve un resultado
diagrama de flujo es casi siempre de gran utilidad. Esto se debe a que el entero. El grupo de instrucciones
diagrama no depende del lenguaje que se utilizará para codificar la solu- tiene un entero como valor selector,
ción. En particular, el diagrama que se presenta se ha empleado para pro- que concuerda con el valor de la ex-
gramar el control del elevador en el PTC de Nematron, que utiliza un presión entera que es ejecutada. Con
lenguaje gráfico muy cercano a un diagrama de flujo. Y ahora en la solu- la instrucción CASE es posible reu-
ción del algoritmo que contiene el bloque funcional que se presenta. nir varias instrucciones condiciona-
Una vez analizado el algoritmo se genera el código, y de este último es das con la misma variable en una sola
posible obtener el bloque funcional, que se presenta en la tabla inferior. construcción. El constructor CASE
tiene la siguiente sintaxis general:
Código del elevador encapsulado en un bloque funcional
La diferencia entre ambos códigos es evidente en lo que respecta a can- Sintaxis:
tidad; sin embargo, no se realizaron pruebas de tiempo de procesamien- CASE <expresión entera> OF
to, debido a que el proceso que se lleva a cabo en el elevador no contie- <valor entero1>:<instrucciones… 1>
ne tiempos críticos. <valor entero2>:<instrucciones… n>
El nombre del Bloque Funcional que contiene el código es INICIAR; de …
este BF se puede declarar tantas instancias como sean necesarias sin que ELSE
esto afecte al BF original. <instrucciones…>
END_CASE
Bloque Funcional
El Bloque Funcional tal como aparece en la ilustración asemeja a un cir- El <valor entero> puede definir un
cuito electrónico integrado (chip), incluso la idea de encapsular soluciones valor, varios valores o un rango de va-
probadas es básicamente la misma y motivó a encapsular hardware en lores.
circuitos integrados. Esto permite tener software re-usable. Una instrucción CASE se ejecuta
según el siguiente esquema: 79
• Si la variable <expresión entera>
tiene el valor <valor entero i>, se eje-
Bloque
cuta la instrucción <instrucciones i>
Funcional Declaración de Variables
• Si <Var 1> no tiene ninguno de
los valores indicados, se ejecuta
FUNCTION_BLOCK INICIAR
INICIA <ELSE-instrucciones>
VAR_INPUT
INICIAR • Si ha de ejecutarse la misma ins-
B1: BOOL; (*detector del primer transportador*)
var1 B1 M1 trucción para varios valores de la
B2: BOOL; (*detector del segundo transportador*)
var2 B2 M2 misma variable, estos valores se pue-
B3: BOOL; (*detector del tercer transportador*)
var3 B3 M2D den escribir uno tras otro, separa-
B4: BOOL; (*detector inferior de movimiento
var4 B4 M3 dos por comas, condicionando así la
vertical*)
var5 B5 M4B instrucción común.
B5: BOOL; (*detector superior de movimiento
M4S
vertical*)
Instrucciones para iteración
END_VAR
Este tipo de instrucciones es espe-
VAR_OUTPUT
cialmente útil para situaciones en las
M1: BOOL; (*Motor del transportador 1*)
que es necesaria la repetición de una
M2I: BOOL; (*Motor del transportador 2, descarga*)
o más instrucciones un numero de-
M2D: BOOL; (*Motor del transportador 2, carga*)
terminado de veces, dependiendo de
M3: BOOL; (*Motor del transportador 3*)
la condición. Con el bucle secuencial
M4B: BOOL; (*Motor bajar transportador*)
FOR se pueden programar procesos
M4S: BOOL; (*Motor subir transportador*)
repetidos.
END_VAR
Sintaxis:
VAR
var :INT;
END_
FOR <var> := <inicial> TO <final>
{BY <incremento/decremento>} DO
Bloque Funcional y su declaración de variables. <instrucciones>
END_FOR;
Automática e Instrumentación SOLUCIONES Octubre 2004 / n.º 355

El constructor FOR … DO permi- potentes que el bucle secuencial infinitas.


te que las instrucciones dentro del FOR, ya que no es necesario conocer Instrucción EXIT
bloque sean repetidas el número de antes de la ejecución el número de Si la instrucción EXIT se encuentra
veces determinado por la condición. pasos del bucle secuencial. En cier- en un bucle secuencial FOR, WHILE
La parte entre llaves {} es opcional. tos casos, sólo podrá trabajar con es- o REPEAT, el bucle secuencial inte-
<instrucciones> se ejecutará mien- tos dos tipos de bucles secuencia- rior se termina, independientemen-
tras el contador <inicial> no sea su- les. No obstante, si el número de te de la condición de cancelación.
perior a <final>. Esto se comprueba pasos de bucle secuencial está claro,
antes de la ejecución de <instruc- se dará preferencia a un bucle se- Lista de instrucciones (LI)
ciones>, de modo que <instruccio- cuencial FOR, ya que no se permiten Una Lista de Instrucciones se com-
nes> no se ejecuta nunca si <inicial> los bucles secuenciales infinitos. pone de una serie de instrucciones
es superior a <final>. Siempre que se o mnemónicos. Cada instrucción se
haya ejecutado <instrucciones>, Bucle secuencial REPEAT inicia en una nueva línea, contiene un
<var> aumenta en <incremento/de- El bucle secuencial REPEAT se dis- operador y, según sea el tipo de ope-
cremento>. El tamaño de paso pue- tingue de los bucles secuenciales ración, incluye uno o varios operan-
de tener cualquier valor entero. Si fal- WHILE por el hecho de que la con- dos separados por comas. Delante
ta éste, automáticamente se ajusta a dición de cancelación se comprueba de una instrucción se puede encon-
1. Por lo tanto, el bucle secuencial se solamente después de la ejecución trar una marca de identificación se-
tiene que terminar, ya que <var> sólo del bucle secuencial, de modo que el guida por dos puntos (:).
se hace más grande. bucle secuencial se ejecuta por lo Un comentario ha de ser el último
menos una vez, independientemen- elemento de una línea. Se pueden
Bucle secuencial WHILE te de la condición de cancelación. insertar líneas vacías entre las ins-
El bucle secuencial WHILE se pue- trucciones.
de utilizar igual que el bucle se- Sintaxis:
cuencial FOR, con la diferencia de REPEAT Ejemplo:
80 que la condición de cancelación pue- <Instrucciones> LD 17 (*almacena 17*)
de ser cualquier expresión booleana. UNTIL <Condición> ST var (* Comentario *)
Esto significa que se indica una con- END_REPEAT; GE 5
dición que, en caso de cumplirse, <Instrucciones> se ejecuta hasta JMPC salto (* salta a donde se en-
produce la ejecución del bucle se- que <Condición> es TRUE. cuentra la etiqueta salto *)
cuencial. LD idword
Si <Condición> es TRUE desde la EQ istruct.sdword
Sintaxis: primera evaluación, <Instrucciones> ST test
WHILE <Condición> DO se ejecuta exactamente una vez. Si salto:
<Instrucciones> a <Condición> no se le asigna nun-
END_WHILE; ca el valor TRUE, <Instrucciones> se Modificadores y operadores en
repite de forma infinita, con lo cual lenguaje LI
La ejecución de <Instrucciones> se produce un error de tiempo de En el lenguaje LI se pueden utilizar
se repite mientras <Condición> sea ejecución. los siguientes operadores y modifi-
TRUE. Si <Condición> tiene el valor Para el caso de bucles tales como cadores.
FALSE desde la primera evaluación, el WHILE y REPEAT, es indispensa-
<Instrucciones> no se ejecuta nun- ble tener especial cuidado en las con- Modificadores:
ca. Si <Condición> no tiene nunca el diciones que regulan la ejecución, ya • C en JMP, CAL, RET: la instruc-
valor FALSE, <instrucciones> se re- que podrían producirse ejecuciones ción sólo se ejecuta si el resultado de
pite de forma infinita, con lo cual se la expresión anterior es TRUE.
produce un error de tiempo de fun- • N en JMPC, CALC, RETC: la ins-
Tabla 5. Tabla comparativa
cionamiento. El programador ha de trucción sólo se ejecuta si el resultado
en el uso del paréntesis
asegurarse que no se produzca nin- de la expresión anterior es FALSE.
gún bucle secuencial infinito y, para a) b) • N en el resto: negación del ope-
ello, tendrá que poner especial cui- LD 2 LD 2 rando (no del acumulador)
dado de la condición en la parte de MUL 2 MUL( 2 En la tabla 4 se muestran los ope-
instrucción del bucle secuencial. ADD 3 ADD 3 radores del lenguaje LI con sus po-
Los bucles secuenciales WHILE y ST Erg ) ST Erg sibles modificadores y su corres-
REPEAT son, en cierto sentido, más pondiente significado.
Octubre 2004 / n.º 355 SOLUCIONES Automática e Instrumentación

Para finalizar con el estándar IEC


Tabla 4: Resumen de Nemónicos del IEC 61131-3 61131-3, es importante mencionar
el gran impacto que está teniendo
Operador Descripción en el campo del control industrial. La
intención del estándar no es restrin-
LD Establecer resultado actual igual al operando gir las innovaciones de las compañí-
TE Almacenar resultado actual en la posición as proveedoras de PLC, sino ofrecer
del operando un mejor servicio al consumidor.
S Ajustar el operando de Bool en TRUE cuando Implementar un estándar en un
el resultado actual es FALSE área relativamente grande trae con-
R Ajustar el operando de Bool en FALSE cuando sigo numerosos beneficios para usua-
el resultado actual es TRUE rios y programadores. Los beneficios
AND, OR, XOR AND, OR, XOR, por bits son varios y dependen de las áreas de
ADD, SUB, MUL, DIV Suma Resta Multiplicación División aplicación. Sólo por mencionar al-
GT, EQ, NE, LE, LT >, =, <>, <=, < gunos de ellos:
JMP Saltar a la marca • Reduce desperdicio de recursos
CAL Llamar a Bloque de Funciones humanos, en entrenamiento, depu-
RET Volver de la llamada a un Bloque de Funciones ración, mantenimiento y consulto-
) Evaluar operación de repuesta ría.
• Apoya en la creación de solu-
ción de alto nivel con grandes posi-
Resumen de mnemónicos del se encuentra ")"; de esta forma, como bilidad de reusabilidad.
lenguaje Lista de operando para MUL, se calcula el va- • Reduce malas interpretaciones
Instrucciones lor 5. y por consiguiente la disminución de
Ejemplo de un programa en lengua- errores.
je LI con uso de algunos modifica- Conclusiones • Técnicas de programación utili- 81
dores: En este artículo se han revisado al- zadas en una área amplia del control
gunas características relevantes del industrial.
LD TRUE (*Cargar TRUE en el lenguaje Texto Estructurado y Lista • Posibilidad de combinar diversos
acumulador*) de Instrucciones, que pueden resu- componentes de diferentes progra-
ANDN BOOL1 (*ejecutar AND con mirse a continuación: mas, proyectos, localidades, compa-
el valor negado de BOOL1*) • Al ser TE un lenguaje rico en ñías y países.
JMPC marca (*si el resultado es sintaxis, puede ser utilizado para pro- • Incrementa la conectividad y co-
TRUE, saltar a la etiqueta gramar una gran cantidad de aplica- municación entre los distintos de-
"marca"*) ciones industriales partamentos y compañías.
LDN BOOL2 (*Guardar el valor ne- • TE puede ser utilizado para asig-
gado de *) nar valores a variables de diferente
ST ERG (*BOOL2 en ERG*) tipo. José Luis Martínez Lastra (Dr)
marke: • Las expresiones que soporta TE Institute of Production
LD BOOL2 (*Guardar el valor de pueden ser tan complejas como lo Engineering
*) requiera el problema. Tampere University of
ST ERG (*BOOL2 en ERG*) • Las expresiones pueden conte- Technology
ner funciones o valores de variables
En el lenguaje LI, también es po- de salida de los bloques funcionales. Omar Jehovani López Orozco
sible incluir paréntesis después de • Dentro de las facilidades que (MSc)
una operación. De este modo, el va- ofrece este lenguaje están: instruc- Institute of Production
lor del paréntesis se considera como ciones condicionales, de repetición, Engineering
operando. y para llamada de funciones y bloques Tampere University of
En el caso a), (ver tabla 5) el va- funcionales. Technology
lor de Erg es 7. En cambio, si se in- • Además, puede ser utilizado para
troducen paréntesis, se obtiene 10 describir la funcionalidad de funcio-
como valor para Erg, porque la ope- nes, bloques funcionales y progra-
ración MUL sólo se evalúa cuando mas.

También podría gustarte