Está en la página 1de 32

11/02/2009

IEC 61131-3
Programación en ST
(Structured
Structured Text)
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
11/02/2009

¿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

2
11/02/2009

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
NOTA
cuenta la precedencia de
• Una constante los operadores
• El valor de una variable.
• El resultado de una función.

Ejemplos:
2.0 * 3.1415 * radio
ABS( temp ) / presion
Valvula1 AND NOT Valvula2
6

3
11/02/2009

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
Ej. Cálculo longitud R=5, PI=3,14159
variable...
longitud := 2 * pi * r longitud := 2 * pi * r
longitud := 31.4159

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

Delimitadores
Cualquier sentencia debe acabar (* ------ Asignación ------*)
a := a AND NOT b;
siempre con un delimitador ( ; )
(*------ Seleccción Simple ------*)
IF a = TRUE THEN
a := a AND b;
END_IF;

No usar un delimitador dentro de (*------ Selección Simple ------*)


IF a = TRUE ; THEN
una sentencia a := a AND b;
END_IF;

4
11/02/2009

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;

Espacios, Retornos de Carro y


Tabulaciones
• Se puede usar cualquier número de
estos caracteres dentro del código ST. (* ------ Asignación ------*)
a := a AND NOT b;

• Excepciones: (*------ Selección Simple ------*)


IF a = TRUE THEN
a := a AND b;
• Palabras reservadas, nombres de END_IF;
variables, caracteres especiales,
constantes.

• Siempre usarlos entre palabras


reservadas y variables.
10

5
11/02/2009

Mayúsculas y Minúsculas
Uso indistinto de mayúsculas / minúsculas en cualquier
sentencia o nombre de variable

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


IF A = TRUE THEN if a = true then
A := A AND B; = a := a and b;
END_IF; endif;

11

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)

12

6
11/02/2009

Constantes Numéricas
Los valores numéricos se pueden expresar en...
(*------ Seleccción Simple ------*)
if chico_a = true then
- Decimal (sin prefijo) : 128 a := 10;
- Hexadecimal : 16#4D2 b := 16#A;
c := 8#12;
- 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 código.

Real: 12_345.0, 1.2_345


Enteros: -1_23, 1_234_567, 2#1100_0100, 16#FF_0F

13

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)

7
11/02/2009

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

15

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

16

8
11/02/2009

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)

17

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 (<>)

18

9
11/02/2009

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, 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
19

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

20

10
11/02/2009

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.

21

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;

22

11
11/02/2009

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;

23

Colores usados en el código.

Palabras reservadas: Azul


Comentarios: Verde
Errores: Rojo
Resto de cosas: Negro

Los colores NO pueden ser


personalizados.

24

12
11/02/2009

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;

26

13
11/02/2009

Sentencia IF (condición simple)


Sintaxis de la declaración:

IF <condition> THEN
<expression_1>;
ELSE
<expression_2>;
END_IF;

27

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

28

14
11/02/2009

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;

29

Sentencia IF (múltiple condiciones)

30

15
11/02/2009

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

IF A>0 THEN X:=10;


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

31

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


32

16
11/02/2009

Sentencia CASE

33

Sentencia CASE (Ejemplos)

CASE A OF CASE A OF
1: X:=1; 1: X:=1;
2: X:=2; 2,5: X:=2;
3: X:=3; 6..10: X:=3;
ELSE 11,12,15..20: X:=4;
Y:=0; ELSE
END_CASE; Y:=0;
END_CASE;

34

17
11/02/2009

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).

35

Sentencia FOR

36

18
11/02/2009

Sentencia FOR (Ejemplos)

FOR i:=0 TO 100 DO FOR n:=0 TO 50 BY 5 DO


array[i]:=0; SP[n]:=100;
END_FOR; END_FOR;

IF i=101 THEN
a:=TRUE;
ELSE
a:=FALSE;
END_IF;

37

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

• Sintaxis:

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

38

19
11/02/2009

Sentencia WHILE

39

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;

40

20
11/02/2009

Sentencia REPEAT
• Ejecuta una serie de instrucciones hasta que una condición sea
True.

• Sintaxis:

REPEAT
<statement-list>;
UNTIL <expression> END_REPEAT;

41

Sentencia REPEAT

42

21
11/02/2009

Sentencia REPEAT (Ejemplos)

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

43

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;

44

22
11/02/2009

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

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 )

46

23
11/02/2009

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.
• 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 )

47

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 )

48

24
11/02/2009

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.

50

25
11/02/2009

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

51

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

52

26
11/02/2009

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
<numero de caracteres>) fuente un texto comenzando
Numero de INT, UINT por la izquierda.
caracteres
RIGHT (<texto fuente>, Texto STRING STRING Extrae caracteres de
<numero de caracteres>) fuente un texto comenzando
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


53

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


54

27
11/02/2009

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


55

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

56

28
11/02/2009

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 cadena
<puerto serie> ) Puerto serie INT, UINT,
de texto por un puerto
WORD serie de la SCB.

TXD_SCU ( <texto>, Texto STRING --- Transmite una cadena


<Numero Unidad SCU>, de texto por un puerto
Numero INT, UINT,
<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

57

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> ) texto por el puerto RS-
Numero INT, UINT,
caracteres WORD 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>, serie de la SCU.
caracteres WORD
<puerto serie>, <puerto lógico
interno> ) Numero INT, UINT,
Unidad SCU WORD
Puerto serie INT, UINT,
WORD
Puerto lógico INT, UINT,
58 interno WORD

29
11/02/2009

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.

59

Conversión entre tipo de datos


– Funciones de conversión de tipos de datos.
B := from_TO_to( valor ); NOTA: Los tipos reales
NOTA:
son redondeados

B := REAL_TO_INT(valor);
– Funciones de conversión de texto a números.
B := tipo_dato_origen_TO_STRING( valor );
B := STRING_TO _tipo_dato_destino( valor );

B := REAL_TO_STRING(valor);
B := STRING_TO _UINT(valor);

60

30
11/02/2009

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.

31
11/02/2009

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.

32

También podría gustarte