IEC 61131-3
Programación en ST
(Structured Text)
24 de marzo de 2013
Antonio Cambronero , Product Engineer
OMRON Electronics Iberia S.A.U.
www.infoPLC.net
Introducción
IEC 61131-3 ( Programación en ST )
3
¿qué es y para que sirve
Structured Text (ST)?
• Lenguaje de alto nivel (similar a
PASCAL).
• Utilizado en control industrial.
• Definido por IEC 61131-3.
• Incluye sentencias de control y
asignación.
4
Elementos de un programa en ST
Parte declarativa
Parte ejecutiva
Reglas de sintaxis
IEC 61131-3 ( Programación en ST )
NOTA: Tener siempre en
cuenta la precedencia de
los operadores
Ejemplos:
2.0 * 3.1415 * radio
ABS( temp ) / presion
Valvula1 AND NOT Valvula2
6
Expresiones
• Son reglas para calcular un valor.
• Los tipos pueden ser: booleano, real, entero, etc.
• Los operadores pueden ser:
• Una constante
• El valor de una variable.
• El resultado de una función.
7
La instrucción de asignación
Se escribe la expresión Se evalúa el resultado Se asigna a la variable
• Asigna el valor de la expresión de la derecha a la variable de la
izquierda.
• El operador de asignación es :=
• No confundir el operador de asignación, con el de comparación
• (Asignación) := (comparación) =
Ej. Cálculo longitud
longitud := 2 * pi * r
R=5, PI=3,14159
longitud := 2 * pi * r
Valor actual de la
variable...
longitud := 31.4159
8
Delimitadores
Cualquier sentencia debe acabar
siempre con un delimitador ( ; )
No usar un delimitador dentro de
una sentencia
(* ------ Asignación ------*)
a := a AND NOT b;
(*------ Seleccción Simple ------*)
IF a = TRUE THEN
a := a AND b;
END_IF;
(*------ Selección Simple ------*)
IF a = TRUE ; THEN
a := a AND b;
END_IF;
9
Añadir Comentarios
• Los comentarios se encierran entre paréntesis y asteriscos (* y *)
• Se puede usar cualquier carácter dentro del comentario.
• Los comentarios pueden comprender varias líneas.
(* ------ Asignación ------*)
a := a AND NOT b;
(*------ Selección Simple ------*)
IF a = TRUE THEN
a := a AND b;
END_IF;
10
Espacios, Retornos de Carro y
Tabulaciones
• Se puede usar cualquier número de
estos caracteres dentro del código ST.
• Excepciones:
• Palabras reservadas, nombres de
variables, caracteres especiales,
constantes.
• Siempre usarlos entre palabras
reservadas y variables.
(* ------ Asignación ------*)
a := a AND NOT b;
(*------ Selección Simple ------*)
IF a = TRUE THEN
a := a AND b;
END_IF;
11
Mayúsculas y Minúsculas
Uso indistinto de mayúsculas / minúsculas en cualquier
sentencia o nombre de variable
=
(*------ Seleccción Simple ------*)
if a = true then
a := a and b;
endif;
(*------ Selección Simple ------*)
IF A = TRUE THEN
A := A AND B;
END_IF;
12
Nombres de variable
• Los siguientes caracteres no se pueden utilizar en nombres de
variables:
• ! “ # $ % & ‘ ( ) - = ^ \ | @ [ ] { } ; : + * , < >
. / ? ¿
• Los nombre de variables pueden ser de hasta 30,000 caracteres
de longitud.
• Las variables no pueden comenzar con un numero (0 a 9)
13
Constantes Numéricas
Los valores numéricos se pueden expresar en...
- Decimal (sin prefijo) : 128
- Hexadecimal : 16#4D2
- Octal : 8#1355
- Binario : 2#10010010
En constantes enteras o reales, se puede usar ( _ ) para formatear el
literal, esto mejora lectura del código.
Real: 12_345.0, 1.2_345
Enteros: -1_23, 1_234_567, 2#1100_0100, 16#FF_0F
(*------ Seleccción Simple ------*)
if chico_a = true then
a := 10;
b := 16#A;
c := 8#12;
d := 2#1010;
endif;
Constantes de Texto • El numero de caracteres en una variable de tipo STRING es de 1 a 255.
• Una constante de texto se pone entre comillas → 'AAA'.
• Las mayúsculas y minúsculas son discriminadas.
• Un carácter $ seguido de dos dígitos numéricos son interpretados como un
hexadecimal.
• $02 → #02 hexadecimal
• Un carácter $ seguido de una letra es interpretado como:
$$: carácter $ (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 pagina (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)
15
Tipos de datos (I)
Símbolo Contenido Tamaño Rango de valores
BOOL Datos de bit 1 0 (falso), 1 (verdadero)
INT Entero 16 -32.768 a +32.767
DINT Entero Doble 32 −2,147,483,648 a +2,147,483,647
LINT Entero Largo 64 −9,223,372,036,854,775,808 a
+9,223,372,036,854,775,807
UINT Entero sin signo 16 &0 a 65,535
UINT BCD Entero sin signo BCD WORD ( #0000 a #FFFF ) ó ( &0 a 65,535 )
UDINT Entero doble sin signo 32 &0 a 4,294,967,295
UDINT BCD Entero doble sin signo
BCD
DWORD #00000000 a #FFFFFFFF ó
&0 a 4,294,967,295
ULINT Entero largo sin signo 64 &0 a 18,446,744,073,709,551,615
ULINT BDC Entero largo sin signo
BCD
LWORD #0000000000000000 a #FFFFFFFFFFFFFFFF ó
&0 a 18,446,744,073,709,551,615
16
Tipos de datos (II) Símbolo Contenido Tamaño Rango de valores
REAL Numero real 32 −3.402823 × 10 38 a −1.175494 × 10−38, 0,
+1.175494 × 10−38 a +3.402823 × 10 38
LREAL Numero real largo 64 −1.79769313486232 × 10308 a
−2.22507385850720 × 10−308 , 0,
2.22507385850720 × 10−308 a
1.79769313486232 × 10308
WORD Dato de 16-bits 16 ( #0000 a #FFFF ) ó ( &0 a 65,535 )
DWORD Dato de 32-bits 32 #00000000 a #FFFFFFFF ó
&0 a 4,294,967,295
LWORD Dato de 64-bits 64 #0000000000000000 a #FFFFFFFFFFFFFFFF
ó &0 a 18,446,744,073,709,551,615
STRING Cadena de texto Variable De 0 a 255 bytes.
FUNCTION
BLOCK
Instancia de bloque de
función
--- ---
CHANNEL Word WORD
NUMBER Constante ó numero -- No soportado en ST
17
Texto estructurado.
• Funciones matemáticas soportadas:
– Suma (+)
– Resta (-)
– Multiplicación (*)
– División (/)
• Funciones de bit soportadas:
– Bitwise AND (AND o &)
– Bitwise OR (OR)
– OR Exclusiva OR (XOR)
– NOT (NOT)
18
Operadores.
• Operadores soportados:
– Paréntesis ( brackets () )
– Índice de Matriz ( square brackets [ ] )
– Operador de Asignación (:=)
– Operador de Comparación Menor Que (<)
– Operador de Comparación Menor o Igual Que (<=)
– Operador de Comparación Mayor Que (>)
– Operador de Comparación Mayor o Igual Que (>=)
– Operador de Comparación Igual (=)
– Operador de Comparación Distinto Que (<>)
19
Operadores Símbolo Tipo de operación Tipos de datos soportados por los operadores. Prioridad
1: alta,
11:baja
[ ] ( ) Expresión / Tablas [ índices ] 1
Función () Evaluación de una función Dependiendo de la función. 2
** Exponenciación REAL, LREAL 3
NOT Complemento BOOL, WORD, DWORD, LWORD 4
* Multiplicación INT, DINT, UINT, UDINT, ULINT, REAL, LREAL 5
/ División INT, DINT, LINT, UINT, UDINT, ULINT, REAL,
LREAL
+ - Suma / Resta INT, DINT, LINT, UINT, UDINT, ULINT, REAL,
LREAL
6
< > <=
>=
Comparaciones BOOL, INT, DINT, LINT, UINT, UDINT, ULINT,
WORD, DWORD, LWORD, REAL, LREAL
7
= < > Igualdad / Desigualdad BOOL, INT, DINT, LINT, UINT, UDINT, ULINT,
WORD, DWORD, LWORD, REAL, LREAL
8
AND & Operación Booleana AND BOOL, WORD, DWORD, LWORD 9
XOR Operación Booleana XOR BOOL, WORD, DWORD, LWORD 10
OR Operación Booleana OR BOOL, WORD, DWORD, LWORD 11
20
Palabras reservadas.
– TRUE, FALSE
– IF, THEN, ELSE, ELSEIF, END_IF
– DO, WHILE, END_WHILE
– REPEAT, UNTIL, END_REPEAT
– FOR, TO, BY, END_FOR
– CASE, OF, ELSE, END_CASE
22
Sentencias 1/2
Sentencia Función Ejemplo
; Final de sentencia END_IF ;
(* *) Comentario (* Comentario *)
:= Asignación A := B
IF, THEN, ELSE, ELSEIF,
END_IF
Condicional simple IF a < b THEN c := a END_IF;
CASE OF, ELSE, END_CASE Condicional compuesta CASE a OF
1: b := 1;
2: b := 2;
ELSE
b := 3;
END_CASE;
23
Sentencias 2/2
Sentencia Función Ejemplo
FOR, TO, BY, DO, END_FOR Bucle con n repeticiones. FOR d := 1 TO 5
b := d * 2;
END_FOR;
WHILE, DO, END_WHILE Bucle con condición inicial. WHILE a < 15 DO
b := b + 3;
END_WHILE;
REPEAT, UNTIL, END_REPEAT Bucle con condición final. REPEAT
d := d + 1;
UNTIL d < 15
END_REPEAT;
EXIT Sale del proceso de un bucle. WHILE true
a := a + 1;
IF a > 4 THEN EXIT END_IF;
END_WHILE;
RETURN Sale del bloque de función RETURN;
24
Colores usados en el código.
Palabras reservadas: Azul
Comentarios: Verde
Errores: Rojo
Resto de cosas: Negro
Los colores NO pueden ser
personalizados.
Sentencias de control
IEC 61131-3 ( Programación en ST )
26
Sentencia IF • Ejecuta de forma condicional un grupo de instrucciones,
dependiendo del valor de una expresión.
• Sintaxis:
IF expression1 THEN statement-list1
[ ELSIF expression2 THEN statement-list2 ]
[ ELSE statement-list3 ]
END_IF;
27
Sentencia IF (condición simple)
Sintaxis de la declaración:
IF <condition> THEN
<expression_1>;
ELSE
<expression_2>;
END_IF;
28
Sentencia IF (condición simple)
Sintaxis de la declaración:
IF <condition_1> THEN
IF <condition_2> THEN
<expression_1>;
ELSE
<expression_2>:
END_IF;
END_IF;
29
Sentencia IF (múltiple condiciones)
Sintaxis de la declaración:
IF <condition_1> THEN <expression_1>;
ELSIF <condition_2> THEN <expression_2>;
ELSIF <condition_3> THEN <expression_3>;
...
ELSIF <condition_n> THEN <expression_n>;
ELSE
<expression_m>;
END_IF;
30
Sentencia IF (múltiple condiciones)
31
Sentencia IF (Ejemplos)
IF A>0 AND B>1 THEN
X:=10; Y:=20;
ELSE
X:=0; Y:=0;
END_IF;
IF A>0 THEN X:=10;
ELSIF B=1 THEN X:=1;
ELSIF B=2 THEN X:=2;
ELSE
X:=0;
END_IF;
IF A>0 THEN
X:=10;
ELSE
X:=0;
END_IF;
IF A THEN X:=10;
ELSE X:=0;
END_IF;
32
Sentencia CASE
• Ejecuta uno de varios grupos de instrucciones según el valor de
una expresión.
• Sintaxis:
CASE <ecuación_entera> OF
<ecuación_entera_valor_1>: <expresión_1>;
<ecuación_entera_valor_2>: <expresión_2>;
...
<ecuación_entera_valor_n>: <expresión_n>;
ELSE
<expresión_m>;
END_CASE;
<ecuación_entera> -> INT, DINT, LINT, UINT, UDINT, ULINT
33
Sentencia CASE
34
Sentencia CASE (Ejemplos)
CASE A OF
1: X:=1;
2: X:=2;
3: X:=3;
ELSE
Y:=0;
END_CASE;
CASE A OF
1: X:=1;
2,5: X:=2;
6..10: X:=3;
11,12,15..20: X:=4;
ELSE
Y:=0;
END_CASE;
35
Sentencia FOR
• Repite un grupo de instrucciones un número de veces
especificado.
• Sintaxis:
FOR control variable := <integer_expression1> TO <integer_expression2> [ BY <integer_expression3> ]
DO
<statement-list>;
END_FOR;
<integer_expression1> : valor inicial de la variable de control.
<integer_expression2> : valor final de la variable de control.
<integer_expression3> : incrementos de la variable de control.
<integer_expressionX> : (INT, DINT, LINT, UINT, UDINT, ULINT).
36
Sentencia FOR
37
Sentencia FOR (Ejemplos)
FOR i:=0 TO 100 DO
array[i]:=0;
END_FOR;
IF i=101 THEN
a:=TRUE;
ELSE
a:=FALSE;
END_IF;
FOR n:=0 TO 50 BY 5 DO
SP[n]:=100;
END_FOR;
38
Sentencia WHILE
• Ejecuta una serie de instrucciones siempre que una condición
dada sea True.
• Sintaxis:
WHILE <expression> DO
<statement-list>;
END_WHILE;
39
Sentencia WHILE
40
Sentencia WHILE (Ejemplos)
A:=0;
WHILE A<=1000 DO
A:=A+7;
END_WHILE;
n:=1;
WHILE X<3000 DO
X:=X*2;
DATA[n]:=X;
n:=n+1;
END_WHIE;
41
Sentencia REPEAT
• Ejecuta una serie de instrucciones hasta que una condición sea
True.
• Sintaxis:
REPEAT
<statement-list>;
UNTIL <expression> END_REPEAT;
42
Sentencia REPEAT
43
Sentencia REPEAT (Ejemplos)
A:=1;
TOTAL:=0;
REPEAT
TOTAL:=TOTAL+A;
A:=A+1;
UNTIL A>10 END_REPEAT;
44
Sentencia EXIT
• Fuerza la salida de un bucle ( FOR, WHILE, REPEAT )
• Sintaxis:
FOR (WHILE, REPEAT) expression ...
IF <condition> THEN EXIT;
END_IF;
...
END_FOR (WHILE, REPEAT);
A := 10;
45
Sentencia RETURN
• La operativa de RETURN depende de donde se use el programa.
• Programa ST: • Fuerza el final de la tarea ST que esta siendo ejecutada y ejecuta la siguiente
tarea.
• ST usado en SFC: • Fuerza el final de la acción que esta siendo ejecutada y ejecuta la siguiente
programa de acción o programa de transición.
• ST usado en FB: • Fuerza el final de bloque de función ST que contiene el RETURN, retorna a
el sitio donde fue llamada la FB y ejecuta la siguiente instrucción.
• Sintaxis:
RETURN;
46
Llamadas a Bloques de Función
• Método 1:
• Usando este método se pasan los valores a los argumentos específicos.
• Los argumentos de las variables de entrada deben de estar al principio de
la lista, o justo después de la variable EN, si esta en la lista.
• Las variables de salida pueden ser omitidas, si los datos no son usados.
• Las especificaciones del método 2, no pueden ser usadas junto a las
especificaciones de este método, en una misma llamada a una FB.
A( B:=C, ………… , D=>E )
47
Llamadas a Bloques de Función
• Método 2:
• Usando este método se pasan y reciben los valores justo en el orden en el
que se han declarado en el bloque de función.
• Los argumentos de las variables de entrada deben de estar al principio de
la lista, o justo después de la variable EN, si esta en la lista.
• Las variables de salida pueden ser omitidas si los datos no son usados,
pero deben de ser omitidas de derecha a izquierda.
• Las especificaciones del método 1, no pueden ser usadas junto a las
especificaciones de este método, en una misma llamada a una FB.
A( C, ………… , E )
48
• Método 1: • Instance_FB(EN:=A, FB_IN1:=IN1, FB_IN2:=IN2, FB_IN3:=IN3,
FB_OUT1=>OUT1, FB_OUT2=>OUT2, FB_OUT3=>OUT3, ENO=>B)
• Instance_FB( FB_IN1:=IN1, FB_IN2:=IN2, FB_IN3:=IN3,
FB_OUT1=>OUT1, FB_OUT2=>OUT2, FB_OUT3=>OUT3 )
• Instance_FB(EN:=A, FB_IN1:=IN1, FB_OUT1=>OUT1, FB_IN2:=IN2,
FB_OUT2=>OUT2, FB_IN3:=IN3, FB_OUT3=>OUT3, ENO=>B)
• Método 2: • Instance_FB( IN1, IN2, IN3, OUT1, OUT2, OUT3 )
• Instance_FB( IN1, IN2, IN3, OUT1 )
• Instance_FB( IN1, IN2, IN3, OUT1, OUT3 )
Llamadas a Bloques de Función
(Ejemplos)
Librería de Funciones
IEC 61131-3 ( Programación en ST )
50
Funciones
Tipo de función Utilidad
Funciones numéricas Valor absoluto, funciones trigonométricas, etc…
Funciones para manejo de strings Manejo de cadenas de caracteres.
Funciones de expansión OMRON Funciones de expansión al lenguaje estándar.
Conversiones de tipos de datos Conversiones entre tipos de datos.
51
Funciones numéricas (I)
Función Tipo de datos de
argumentos
Tipo de datos
devueltos
Descripción
ABS (arg) INT, DINT, LINT, UINT, UDINT,
ULINT, REAL, LREAL
INT, DINT, LINT, UINT,
UDINT, ULINT, REAL,
LREAL
Valor absoluto
SQRT (arg) REAL, LREAL REAL, LREAL Raíz cuadrada
LN (arg) REAL, LREAL REAL, LREAL Logaritmo natural: LOGe
LOG (arg) REAL, LREAL REAL, LREAL Logaritmo: LOG10
EXP (arg) REAL, LREAL REAL, LREAL Exponencial natural: earg
EXPT (arg) Base REAL, LREAL REAL, LREAL Exponencial: baseexpo
Exponente INT, DINT,
LINT, UINT,
UDINT, ULINT
52
Funciones numéricas (II) Función Tipo de datos de
argumentos
Tipo de datos
devueltos
Descripción
SIN (arg) REAL, LREAL REAL, LREAL Sino
COS (arg) REAL, LREAL REAL, LREAL Coseno
TAN (arg) REAL, LREAL REAL, LREAL Tangente
ASIN (arg) REAL, LREAL REAL, LREAL Arco Seno
ACOS (arg) REAL, LREAL REAL, LREAL Arco Coseno
ATAN (arg) REAL, LREAL REAL, LREAL Arco Tangente
53
Funciones para cadenas de texto (I) Función Tipo de datos de
argumentos
Tipo de datos
devueltos
Descripción
LEN (string) String STRING INT Devuelve la longitud
de un texto.
LEFT (<texto fuente>,
<numero de caracteres>)
Texto
fuente
STRING STRING Extrae caracteres de
un texto comenzando
por la izquierda. Numero de
caracteres
INT, UINT
RIGHT (<texto fuente>,
<numero de caracteres>)
Texto
fuente
STRING STRING Extrae caracteres de
un texto comenzando
por la derecha. Numero de
caracteres
INT, UINT
MID (<texto fuente>,
<numero de caracteres>,
<posición>)
Texto
fuente
STRING STRING Extrae caracteres de
un texto.
Numero de
caracteres
INT, UINT
Posición INT, UINT
La posición del primer carácter en las cadenas de texto es 1
54
Funciones para cadenas de texto (II) Función Tipo de datos de
argumentos
Tipo de datos
devueltos
Descripción
CONCAT(<texto
fuente1>, <texto
fuente2>, …..) Hasta 32 argumentos
Texto
fuente
STRING STRING Une cadenas de texto.
INSERT (<texto fuente>,
<texto a insertar>,
<posición>)
Texto
fuente
STRING STRING Inserta un cadena de
texto dentro de otra.
Texto a
insertar
STRING
Posición INT, UINT
DELETE (<texto fuente>,
<numero de caracteres>,
<posición>)
Texto
fuente
STRING STRING Borra caracteres de un
cadenas de texto.
Numero de
caracteres
INT, UINT
Posición INT, UINT
La posición del primer carácter en las cadenas de texto es 1
55
Funciones para cadenas de texto (III) Función Tipo de datos de
argumentos
Tipo de datos
devueltos
Descripción
REPLACE (<texto
fuente>, <texto a insertar>,
<numero de caracteres>,
<posición>)
Texto
fuente
STRING STRING Reemplaza caracteres
dentro de un cadena
de texto. Texto a
insertar
STRING
Numero de
caracteres
INT, UINT
Posición INT, UINT
FIND (<texto fuente>,
<texto a buscar>)
Texto
fuente
STRING INT Busca una cadena
dentro de otra cadena
de texto. Texto a
insertar
STRING
La posición del primer carácter en las cadenas de texto es 1
56
Funciones de expansión OMRON (I) Función Tipo de datos de
argumentos
Tipo de datos
devueltos
Descripción
WRITE_TEXT (<texto a
escribir>, <Nombre del
directorio y el fichero>,
<Delimitador>,
<Parámetros>)
Texto a
escribir
STRING --- Escribe una cadena de
texto en la tarjeta de
memoria. Nombre del
directorio y
el fichero
STRING
Delimitador STRING
Parámetros INT, UINT,
WORD
57
Funciones de expansión OMRON (II) Función Tipo de datos de
argumentos
Datos
devueltos
Descripción
TXD_CPU ( <texto> ) Texto STRING --- Transmite una cadena
de texto por el puerto
RS-232 de la CPU.
TXD_SCB ( <texto>,
<puerto serie> )
Texto STRING --- Transmite una cadena
de texto por un puerto
serie de la SCB. Puerto serie INT, UINT,
WORD
TXD_SCU ( <texto>,
<Numero Unidad SCU>,
<Puerto serie>, <Puerto
lógico interno> )
Texto STRING --- Transmite una cadena
de texto por un puerto
serie de la SCU. Numero
Unidad SCU
INT, UINT,
WORD
Puerto serie INT, UINT,
WORD
Puerto lógico
interno
INT, UINT,
WORD
58
Funciones de expansión OMRON (III) Función Tipo de datos de
argumentos
Datos
devueltos
Descripción
RXD_CPU ( <carga>,
<numero caracteres> )
Carga STRING --- Recibe una cadena de
texto por el puerto RS-
232 de la CPU. Numero
caracteres
INT, UINT,
WORD
RXD_SCB ( <carga>,
<numero caracteres>, <puerto
serie> )
Carga STRING --- Recibe una cadena de
texto por un puerto
serie de la SCB. Numero
caracteres
INT, UINT,
WORD
Puerto serie INT, UINT,
WORD
RXD_SCU ( <carga>,
<numero caracteres>,
<numero Unidad SCU>,
<puerto serie>, <puerto lógico
interno> )
Carga STRING --- Recibe una cadena de
texto por un puerto
serie de la SCU. Numero
caracteres
INT, UINT,
WORD
Numero
Unidad SCU
INT, UINT,
WORD
Puerto serie INT, UINT,
WORD
Puerto lógico
interno
INT, UINT,
WORD
59
Funciones de expansión OMRON (IV)
Función Tipo de datos
de argumentos
Tipo de datos
devueltos
Descripción
DEG_TO_RAD (arg) REAL, LREAL REAL, LREAL Devuelve la longitud de
un texto.
RAD_TO_DEG ( arg) REAL, LREAL REAL, LREAL Extrae caracteres de un
texto comenzando por la
izquierda.
60
Conversión entre tipo de datos
B := from_TO_to( valor );
B := REAL_TO_INT(valor);
NOTA: Los tipos reales son redondeados
B := tipo_dato_origen_TO_STRING( valor );
B := STRING_TO _tipo_dato_destino( valor );
B := REAL_TO_STRING(valor);
B := STRING_TO _UINT(valor);
– Funciones de conversión de tipos de datos.
– Funciones de conversión de texto a números.
Restricciones
IEC 61131-3 ( Programación en ST )
Restricciones
– No hay limite en el anidamiento de las instrucciones IF, CASE, FOR, WHILE ó REPEAT.
– No es posible llamar a instrucciones Ladder desde el ST.
– Desde un programa ST es posible llamar a FB’s.
– Hasta 8 niveles de anidamiento, en las llamadas a FB’s.
Restricciones
– Los entero solamente pueden ser asignados a variables de tipo WORD, DWORD, INT, DINT, UINT, UDINT ó ULINT.
– Los números reales solamente se pueden asignar a variables de tipo REAL ó LREAL.
– Los bits (TRUE, FALSE) pueden solamente ser asignados a variables de tipo BOOL.
– Los tipos de datos deben de estar en concordancia con el ST.
¡¡¡ Gracias por la atención !!!
Antonio Cambronero Berlanga
Product Engineer
Omron Electronics Iberia, S.A.