Está en la página 1de 32

11/02/2009

IEC 61131-3
Programación en ST
(Structured Text)

11 de febrero de 2009
Antonio Cambronero , Product Engineer OMRON Electronics Iberia S.A.U.

IEC 61131-3 ( Programación en ST )

Introducción

1
¿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.

Elementos de un programa en ST
Parte declarativa

Parte ejecutiva
IEC 61131-3 ( Programación en ST )

Reglas de sintaxis

Expresiones
Son reglas para calcular un valor.
Los tipos pueden ser: booleano, real, entero, etc.
Los operadores pueden ser:
NOTA: Tener siempre en cuenta la precedencia de los operadores
• Una constante
• El valor de una variable.
• El resultado de una función.

Ejemplos:
2.0 * 3.1415 * radio ABS( temp ) / presion
Valvula1 AND NOT Valvula2
La instrucción de asignación
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) =

Valor actual de la variable...


Ej. Cálculo longitud R=5, PI=3,14159
longitud := 31.4159
longitud := 2 * pi * r longitud := 2 * pi * r

Se escribe la expresión Se evalúa el resultado Se asigna a la variable

Delimitadores
Cualquier sentencia debe acabar siempre con un delimitador
(* ------ ( ;Asignación*)
)
Asignación------*)
(* ------
a :=aa:=AND NOT
a AND NOTb;b;

(*------ Seleccción
(*------ SeleccciónSimple------*)
Simple*)
IF aIF= aTRUE
= TRUETHEN
THEN
aa:=:=a aAND
AND b;
b; END_IF;
END_IF;

No usar un delimitador dentro de una sentencia


(*------ Selección
(*------ Simple------*)
Selección Simple*)
IF aIF=aTRUE
= TRUE; ;THEN
THEN
aa:=:=a aAND
AND b;
b; END_IF;
END_IF;
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*)
------ Asignación------*)
IF a = TRUE THEN a := a AND NOT b;
a := a AND b; END_IF;
(*------ Selección Simple------*)
IF a = TRUE THEN
a := a AND b;
END_IF;

Espacios, Retornos de Carroy Tabulaciones


Se puede usar cualquier número de estos caracteres dentro del código ST.

Excepciones:

Palabras reservadas, nombres de variables, caracteres especiales, constantes.


(* ------
(* ------ Asignación*)
Asignación------*)
Siempre usarlos entre palabras reservadas y variables.
a := aa := a AND
AND NOT
NOT b;b;

0 (*------ Selección
(*------ Simple------*)
Selección Simple*)
IF a IF
= aTRUE
= TRUE THEN
THEN
a := aaAND
:= ab;AND b;
END_IF;
END_IF;
Mayúsculas y Minúsculas
Uso indistinto de mayúsculas / minúsculas en cualquier sentencia o nombre de varia

(*------ Selección Simple------*) (*------ Seleccción Simple------*)


(*------ Selección Simple*) (*------ Seleccción Simple*)
IF A = TRUE THEN IF A = TRUE THEN if a = true then if a = true then
A := A AND A := A AND B; END_IF; a := a and b; = a := a and b; endif;
B; END_IF; endif;

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)

2
Constantes Numéricas
Los valores numéricos se pueden expresar en...

(*------ Seleccción Simple------*)(*------ Seleccción Simple*)


if chico_a = true then
Decimal (sin prefijo) : 128 a := 10;
if chico_a = true then a := 10;
b := 16#A; c := 8#12;
Hexadecimal : 16#4D2
b := 16#A;
c := 8#12;
d := 2#1010;
endif;
Octal : 8#1355
d := 2#1010;
endif;
Binario : 2#10010010

En constantes enteras o reales, se puede usar ( _ ) para formatear el literal, esto mejora lectura del

Real:12_345.0, 1.2_345
Enteros: -1_23, 1_234_567, 2#1100_0100, 16#FF_0F

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 $ comilla
$$:
(Código
simple
ASCII: #24)
final de línea $':
(LF)
(Código
nueva
ASCII:
línea#27)
(CR (Código
+ LF) final
ASCII:
de pagina
#0A) (FF)
(Código
Retorno
ASCII:
de carro
#0D0A)(CR)
(Código ASCII: #0C) (Código ASCII
$L ó $l:
$N ó $n:
$P ó $p:
$R ó $r:
$T ó $t: Tabulación horizontal (Tab) (Código ASCII: #09)
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 DWORD #00000000 a #FFFFFFFF ó
BCD &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 LWORD #0000000000000000 a #FFFFFFFFFFFFFFFF ó
BCD &0 a 18,446,744,073,709,551,615

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 Instancia de bloque de --- ---
BLOCK función
CHANNEL Word WORD
NUMBER Constante ó numero -- No soportado en ST
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)

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 (<>)
Operadores
Símbolo Tipo de operación Tipos de datos soportados por los Prioridad
operadores. 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, 6
LREAL
< > <= Comparaciones BOOL, INT, DINT, LINT, UINT, UDINT, ULINT, 7
>= WORD, DWORD, LWORD, REAL, LREAL
= <> Igualdad / Desigualdad BOOL, INT, DINT, LINT, UINT, UDINT, ULINT, 8
WORD, DWORD, LWORD, REAL, LREAL
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

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
Tipos de Datos
Símbolo Tipo de dato Nº de bits
BOOL Booleano 1
INT Entero (Integer) 16
UINT Entero sin Signo (Unsigned Integer) 16
DINT Entero Doble (Doble Integer) 32
UDINT Entero Doble sin Signo (Unsigend Doble Integer) 32
LINT Entero Largo (Long Integer) 64
ULINT Entero Largo sin Signo (Unsigned Long Integer) 64
WORD Secuencia de bit de 16 bits 16
DWORD Secuencia de bit de 32 bits 32
LWORD Secuencia de bit de 64 bits 64
REAL Numero real. 32
LREAL Número real largo 64
STRING Cadena de texto Max. 255 car.

Sentencias 1/2
Sentencia Función Ejemplo
; Final de sentencia END_IF ;
(* *) Comentario (* Comentario *)
:= Asignación A := B

IF, THEN, ELSE, ELSEIF, Condicional simple IF a < b THEN c := a END_IF;


END_IF
CASE OF, ELSE, END_CASE Condicional compuesta CASE a OF
1: b := 1;
2: b := 2;
ELSE
b := 3;
END_CASE;

2
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;

Colores usados en el código.

Palabras reservadas: Comentarios:


Azul
Errores:
Verde Rojo Negro
Resto de cosas:

Los colores NO pueden ser personalizados.

4
IEC 61131-3 ( Programación en ST )

Sentencias de control

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;
Sentencia IF (condición simple)

Sintaxis
Sintaxis de la de la declaración:
declaración:

IFIF<condition>
<condition> THEN
<expression_1>;
THEN
7ELSE
<expression_1>;
<expression_2>;
ELSE
END_IF;
<expression_2>;

Sentencia IF (condición simple)


Sintaxis de la
Sintaxis de la declaración:

IF <condition_1>
IF <condition_1> THEN
THEN
IF <condition_2> THEN
IF <condition_2>
<expression_1>;
THEN
ELSE <expression_1>;
<expression_2>:
ELSE
END_IF;<expression_2>:
END_IF;
END_IF;
Sentencia IF (múltiple condiciones)
Sintaxis de la declaración:

IF <condition_1> THEN <expression_1>; ELSIF <condition_2> THEN <expression_2>;


Sintaxis de la
...
IF <condition_1>
ELSIF <condition_n> THEN <expression_1>;
THEN <expression_n>;
ELSE ELSIF <condition_2> THEN
<expression_m>;
<expression_2>; ELSIF <condition_3>
END_IF; THEN <expression_3>;

...
ELSIF <condition_n> THEN
<expression_n>;
<expression_m>
9 ;
END_IF;

Sentencia IF (múltiple condiciones)


Sentencia IF (Ejemplos)
IFIFA>0
A>0THEN
THEN IF A THEN
IF X:=10;
A THEN ELSE X:=0; END_IF;
X:=10;
X:=10;
X:=10; ELSE X:=0;
ELSE
ELSE END_IF;
X:=0;
X:=0;
END_IF;
END_IF;

IF A>0 THEN X:=10;


IF ELSIF B=1 X:=10;
A>0 THEN THEN X:=1; ELSIF B=2 THEN X:=2;
IF A>0
IF A>0 ELSE
AND AND
B>1 B>1
THENTHEN ELSIF B=1 THEN X:=1;
X:=10; X:=0;
X:=10;Y:=20;
Y:=20; ELSIF B=2 THEN X:=2;
ELSE ELSE END_IF; ELSE
X:=0;Y:=0;
X:=0; Y:=0; X:=0;
END_IF;
END_IF; END_IF;

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


Sentencia CASE

Sentencia CASE (Ejemplos)

CASE
CASE A
A OF
OF CASE A OF
1:
1: X:=1;
X:=1; 1: X:=1;
X:=1;
2:
2: X:=2;
X:=2; 2,5: X:=2;
X:=2;
3:
3: X:=3;
X:=3; 6..10: X:=3;
X:=3;
ELSE
ELSE 11,12,15..20: X:=4;
X:=4;
Y:=0;
Y:=0; ELSE
END_CASE; Y:=0;
END_CASE;
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).


5

Sentencia FOR
Sentencia FOR (Ejemplos)
FOR i:=0 TO 100 DO
array[i]:=0;
END_FOR;

IF i=101 THEN
a:=TRUE;
FOR i:=0 TO 100 DO FORFOR n:=0
n:=0 TO TO
50 50
BY BY
5 5 DO
ELSE
array[i]:=0; DO SP[n]:=100;
a:=FALSE;
END_FOR; END_FOR;
SP[n]:=100;
END_IF;
IF i=101 THEN
a:=TRUE;
ELSE
a:=FALSE;
END_IF;

Sentencia WHILE
Ejecuta una serie de instrucciones siempre que una condición dada sea True.

Sintaxis:

WHILE <expression> DO
<statement-list>;
END_WHILE
Sentencia WHILE

Sentencia WHILE (Ejemplos)


A:=0;
WHILE A<=1000 DO
A:=A+7;
END_WHILE; 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;
n:=1;
WHILE X<3000 DO
X:=X*2;
DATA[n]:=X;
n:=n+1;
END_WHIE;
Sentencia REPEAT
Ejecuta una serie de instrucciones hasta que una condición sea
True.

Sintaxis:

REPEAT
<statement-list>;
UNTILEND_REPEAT

Sentencia REPEAT
Sentencia REPEAT (Ejemplos)
A:=1; TOTAL:=0; REPEAT
TOTAL:=TOTAL+A; A:=A+1;
UNTIL A>10 END_REPEAT;

A:=1;
TOTAL:=0;
REPEAT
TOTAL:=TOTAL+A;
A:=A+1;
UNTIL A>10 END_REPEAT;

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;


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

Sintaxis:
RETURN;
5

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 )
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ó
Las variables de salida pueden ser omitidas si los datos no son usados, pero deben de ser omitidas de derecha a izquie
Las especificaciones del método 1, no pueden ser usadas junto a las especificaciones de este método, en una misma ll

A(C,………… , E )

Llamadas a Bloques de Función (Ejemplos)


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 )
IEC 61131-3 ( Programación en ST )

Librería de Funciones

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.

0
Funciones numéricas (I)

Función Tipo de datos de Tipo de datos Descripción


argumentos devueltos
ABS (arg) INT, DINT, LINT, UINT, UDINT, INT, DINT, LINT, UINT, Valor absoluto
ULINT, REAL, LREAL UDINT, ULINT, REAL,
LREAL
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

Funciones numéricas (II)


Función Tipo de datos de Tipo de datos Descripción
argumentos devueltos
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

2
Funciones para cadenas de texto (I)
Función Tipo de datos de Tipo de datos Descripción
argumentos devueltos
LEN (string) String STRING INT Devuelve la longitud
de un texto.
LEFT (<texto fuente>, Texto STRING STRING Extrae caracteres de
fuente un texto comenzando
<numero de caracteres>)
Numero de INT, UINT por la izquierda.
caracteres
RIGHT (<texto fuente>, Texto STRING STRING Extrae caracteres de
fuente un texto comenzando
<numero de caracteres>)
Numero de INT, UINT por la derecha.
caracteres
MID (<texto fuente>, Texto STRING STRING Extrae caracteres de
<numero de caracteres>, fuente un texto.
<posición>) Numero de INT, UINT
caracteres
Posición INT, UINT

La posición del primer carácter en las cadenas de texto es 1

Funciones para cadenas de texto (II)


Función Tipo de datos de Tipo de datos Descripción
argumentos devueltos
CONCAT(<texto Texto STRING STRING Une cadenas de texto.
fuente1>, <texto fuente
fuente2>, …..)
Hasta 32 argumentos
INSERT (<texto fuente>, Texto STRING STRING Inserta un cadena de
<texto a insertar>, fuente texto dentro de otra.
<posición>) Texto a STRING
insertar
Posición INT, UINT

DELETE (<texto fuente>, Texto STRING STRING Borra caracteres de un


<numero de caracteres>, fuente cadenas de texto.
<posición>) Numero de INT, UINT
caracteres
Posición INT, UINT

La posición del primer carácter en las cadenas de texto es 1


4
Funciones para cadenas de texto (III)
Función Tipo de datos de Tipo de datos Descripción
argumentos devueltos
REPLACE (<texto Texto STRING STRING Reemplaza caracteres
fuente>, <texto a insertar>, fuente dentro de un cadena
<numero de caracteres>, Texto a STRING de texto.
<posición>) insertar
Numero de INT, UINT
caracteres
Posición INT, UINT

FIND (<texto fuente>, Texto STRING INT Busca una cadena


fuente dentro de otra cadena
<texto a buscar>)
Texto a STRING de texto.
insertar

La posición del primer carácter en las cadenas de texto es 1

Funciones de expansión OMRON (I)


Función Tipo de datos de Tipo de datos Descripción
argumentos devueltos
WRITE_TEXT (<texto a Texto a STRING --- Escribe una cadena de
escribir>, <Nombre del escribir texto en la tarjeta de
directorio y el fichero>, Nombre del STRING memoria.
<Delimitador>, directorio y
<Parámetros>) el fichero
Delimitador STRING
Parámetros INT, UINT,
WORD

6
Funciones de expansión OMRON (II)
Función Tipo de datos de Datos Descripción
argumentos devueltos
TXD_CPU ( <texto> ) Texto STRING --- Transmite una cadena
de texto por el puerto
RS-232 de la CPU.
TXD_SCB ( <texto>, Texto STRING --- Transmite una
<puerto serie> ) Puerto serie INT, UINT, cadena de texto por
WORD un puerto serie de la
SCB.
TXD_SCU ( <texto>, Texto STRING --- Transmite una cadena
<Numero Unidad SCU>, Numero INT, UINT, de texto por un puerto
<Puerto serie>, <Puerto serie de la SCU.
Unidad SCU WORD
lógico interno> )
Puerto serie INT, UINT,
WORD
Puerto lógico INT, UINT,
interno WORD

Funciones de expansión OMRON (III)


Función Tipo de datos de Datos Descripción
argumentos devueltos
RXD_CPU ( <carga>, Carga STRING --- Recibe una cadena de
<numero caracteres> ) Numero INT, UINT, texto por el puerto
caracteres WORD RS- 232 de la CPU.
RXD_SCB ( <carga>, Carga STRING --- Recibe una cadena de
<numero caracteres>, <puerto Numero INT, UINT, texto por un puerto
serie> ) caracteres WORD serie de la SCB.
Puerto serie INT, UINT,
WORD
RXD_SCU ( <carga>, Carga STRING --- Recibe una cadena de
<numero caracteres>, Numero INT, UINT, texto por un puerto
<numero Unidad SCU>, caracteres WORD serie de la SCU.
<puerto serie>, <puerto lógico
Numero INT, UINT,
interno> ) Unidad SCU WORD
Puerto serie INT, UINT,
WORD
Puerto lógico INT, UINT,
interno WORD
8
Funciones de expansión OMRON (IV)

Función Tipo de datos Tipo de datos Descripción


de argumentos devueltos
DEG_TO_RAD (arg) REAL, LREAL REAL, LREAL Convierte de grados a
radianes.
RAD_TO_DEG ( arg) REAL, LREAL REAL, LREAL Convierte de radianes a
grados.

Conversión entre tipo de datos


Funciones de conversión de tipos de datos.
NOTA: Los tipos reales son redondeados

BB:=
:= from_TO_to(
from_TO_to( valor
valor););
Funciones de conversión de texto a números.
B B:=:= REAL_TO_INT(valor);
B := tipo_dato_origen_TO_STRING( valor );

B := tipo_dato_origen_TO_STRING( valor
BB:=:=STRING_TO
); STRING_TO _tipo_dato_destino( valor
_tipo_dato_destino( );
valor
);
B := REAL_TO_STRING(valor); B := STRING_TO _UINT(valor);
B := REAL_TO_STRING(valor);
B := STRING_TO _UINT(valor);
IEC 61131-3 ( Programación en ST )

Restricciones

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, IN
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.

También podría gustarte