Академический Документы
Профессиональный Документы
Культура Документы
IEC 61131-3
Programacin en ST
(Structured Text) Structured Text
11 de febrero de 2009 Antonio Cambronero , Product Engineer OMRON Electronics Iberia S.A.U.
Introduccin
11/02/2009
Elementos de un programa en ST
Parte declarativa
Parte ejecutiva
11/02/2009
Reglas de sintaxis
Expresiones
Son reglas para calcular un valor. Los tipos pueden ser: booleano, real, entero, etc. Los operadores pueden ser: NOTA: NOTA: Tener siempre en
Una constante El valor de una variable. El resultado de una funcin.
Ejemplos: 2.0 * 3.1415 * radio ABS( temp ) / presion Valvula1 AND NOT Valvula2
6
11/02/2009
La instruccin de asignacin
Asigna el valor de la expresin de la derecha a la variable de la izquierda. El operador de asignacin es := No confundir el operador de asignacin, con el de comparacin
(Asignacin)
:=
R=5, PI=3,14159
(comparacin)
longitud := 2 * pi * r
longitud := 2 * pi * r
longitud := 31.4159
Se asigna a la variable
Se escribe la expresin
Se evala el resultado
Delimitadores
Cualquier sentencia debe acabar siempre con un delimitador ( ; )
(* ------ Asignacin ------*) a := a AND NOT b; (*------ Selecccin Simple ------*) IF a = TRUE THEN a := a AND b; END_IF;
11/02/2009
Aadir Comentarios
Los comentarios se encierran entre parntesis y asteriscos (* y *) Se puede usar cualquier carcter dentro del comentario. Los comentarios pueden comprender varias lneas.
(* ------ Asignacin ------*) a := a AND NOT b; (*------ Seleccin Simple ------*) IF a = TRUE THEN a := a AND b; END_IF;
(* ------ Asignacin ------*) a := a AND NOT b; (*------ Seleccin Simple ------*) IF a = TRUE THEN a := a AND b; END_IF;
11/02/2009
Maysculas y Minsculas
Uso indistinto de maysculas / minsculas en cualquier sentencia o nombre de variable
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
11/02/2009
Constantes Numricas
Los valores numricos se pueden expresar en... - Decimal (sin prefijo) - Hexadecimal - Octal - Binario : 128 : 16#4D2 : 8#1355 : 2#10010010
(*------ Selecccin Simple ------*) if chico_a = true then a := 10; b := 16#A; c := 8#12; d := 2#1010; endif;
En constantes enteras o reales, se puede usar ( _ ) para formatear el literal, esto mejora lectura del cdigo.
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 maysculas y minsculas son discriminadas. Un carcter $ seguido de dos dgitos numricos son interpretados como un hexadecimal. $02 #02 hexadecimal Un carcter $ seguido de una letra es interpretado como: $$: carcter $ (Cdigo ASCII: #24) $': comilla simple (Cdigo ASCII: #27) $L $l: final de lnea (LF) (Cdigo ASCII: #0A) $N $n: nueva lnea (CR + LF) (Cdigo ASCII: #0D0A) $P $p: final de pagina (FF) (Cdigo ASCII: #0C) $R $r: Retorno de carro (CR) (Cdigo ASCII: #0D) $T $t: Tabulacin horizontal (Tab) (Cdigo ASCII: #09)
11/02/2009
Contenido
Datos de bit 1
Tamao
16 32 64 16 WORD 32 DWORD 64 LWORD
Rango de valores
0 (falso), 1 (verdadero) -32.768 a +32.767 2,147,483,648 a +2,147,483,647 9,223,372,036,854,775,808 a +9,223,372,036,854,775,807 &0 a 65,535 ( #0000 a #FFFF ) ( &0 a 65,535 ) &0 a 4,294,967,295 #00000000 a #FFFFFFFF &0 a 4,294,967,295 &0 a 18,446,744,073,709,551,615 #0000000000000000 a #FFFFFFFFFFFFFFFF &0 a 18,446,744,073,709,551,615
15
Contenido
Numero real Numero real largo
Tamao
32 64
Rango de valores
3.402823 10 38 a 1.175494 1038, 0, +1.175494 1038 a +3.402823 10 38 1.79769313486232 10308 a 2.22507385850720 10308 , 0, 2.22507385850720 10308 a 1.79769313486232 10308 ( #0000 a #FFFF ) ( &0 a 65,535 ) #00000000 a #FFFFFFFF &0 a 4,294,967,295 #0000000000000000 a #FFFFFFFFFFFFFFFF &0 a 18,446,744,073,709,551,615 De 0 a 255 bytes. ---
Dato de 16-bits Dato de 32-bits Dato de 64-bits Cadena de texto Instancia de bloque de funcin Word Constante numero
16 32 64 Variable --WORD --
No soportado en ST
11/02/2009
Texto estructurado.
Funciones matemticas soportadas: Suma (+) Resta (-) Multiplicacin (*) Divisin (/) Funciones de bit soportadas: Bitwise AND (AND o &) Bitwise OR (OR) OR Exclusiva OR (XOR) NOT (NOT)
17
Operadores.
Operadores soportados:
Parntesis ( brackets () ) ndice de Matriz ( square brackets [ ] ) Operador de Asignacin (:=) Operador de Comparacin Menor Que (<) Operador de Comparacin Menor o Igual Que (<=) Operador de Comparacin Mayor Que (>) Operador de Comparacin Mayor o Igual Que (>=) Operador de Comparacin Igual (=) Operador de Comparacin Distinto Que (<>)
18
11/02/2009
Operadores
Smbolo Tipo de operacin Tipos de datos soportados por los operadores. Prioridad 1: alta, 11:baja
1 Dependiendo de la funcin. REAL, LREAL BOOL, WORD, DWORD, LWORD INT, DINT, UINT, UDINT, ULINT, REAL, LREAL INT, DINT, LINT, UINT, UDINT, ULINT, REAL, LREAL INT, DINT, LINT, UINT, UDINT, ULINT, REAL, LREAL BOOL, INT, DINT, LINT, UINT, UDINT, ULINT, WORD, DWORD, LWORD, REAL, LREAL BOOL, INT, DINT, LINT, UINT, UDINT, ULINT, WORD, DWORD, LWORD, REAL, LREAL BOOL, WORD, DWORD, LWORD BOOL, WORD, DWORD, LWORD BOOL, WORD, DWORD, LWORD 6 7 8 9 10 11 2 3 4 5 []() Funcin () ** NOT * / + < > <= >= = AND XOR OR
19
Expresin / Tablas [ ndices ] Evaluacin de una funcin Exponenciacin Complemento Multiplicacin Divisin Suma / Resta Comparaciones Igualdad / Desigualdad Operacin Booleana AND Operacin Booleana XOR Operacin Booleana OR
<> &
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
Smbolo BOOL INT UINT DINT UDINT LINT ULINT WORD DWORD LWORD REAL LREAL STRING
21
Tipo de dato Booleano Entero (Integer) Entero sin Signo (Unsigned Integer) Entero Doble (Doble Integer) Entero Doble sin Signo (Unsigend Doble Integer) Entero Largo (Long Integer) Entero Largo sin Signo (Unsigned Long Integer) Secuencia de bit de 16 bits Secuencia de bit de 32 bits Secuencia de bit de 64 bits Numero real. Nmero real largo Cadena de texto
Sentencias 1/2
Sentencia
; (* *) := IF, THEN, ELSE, ELSEIF, END_IF CASE OF, ELSE, END_CASE
Funcin
Final de sentencia Comentario Asignacin Condicional simple Condicional compuesta END_IF ;
Ejemplo
(* Comentario *) A := B IF a < b THEN c := a END_IF; CASE a OF 1: b := 1; 2: b := 2; ELSE b := 3; END_CASE;
22
11
11/02/2009
Sentencias 2/2
Sentencia
FOR, TO, BY, DO, END_FOR
Funcin
Bucle con n repeticiones.
Ejemplo
FOR d := 1 TO 5 b := d * 2; END_FOR; WHILE a < 15 DO b := b + 3; END_WHILE; REPEAT d := d + 1; UNTIL d < 15 END_REPEAT; WHILE true a := a + 1; IF a > 4 THEN EXIT END_IF; END_WHILE; RETURN;
EXIT
RETURN
23
24
12
11/02/2009
Sentencias de control
Sentencia IF
Ejecuta de forma condicional un grupo de instrucciones, dependiendo del valor de una expresin. Sintaxis:
IF expression1 THEN statement-list1 [ ELSIF expression2 THEN statement-list2 ] [ ELSE statement-list3 ] END_IF;
26
13
11/02/2009
27
28
14
11/02/2009
29
30
15
11/02/2009
Sentencia IF (Ejemplos)
IF A>0 THEN X:=10; ELSE X:=0; END_IF; IF A THEN X:=10; ELSE X:=0; END_IF;
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;
31
Sentencia CASE
Ejecuta uno de varios grupos de instrucciones segn el valor de una expresin. Sintaxis:
CASE <ecuacin_entera> OF <ecuacin_entera_valor_1>: <expresin_1>; <ecuacin_entera_valor_2>: <expresin_2>; ... <ecuacin_entera_valor_n>: <expresin_n>; ELSE <expresin_m>; END_CASE;
16
11/02/2009
Sentencia CASE
33
34
17
11/02/2009
Sentencia FOR
Repite un grupo de instrucciones un nmero 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
37
Sentencia WHILE
Ejecuta una serie de instrucciones siempre que una condicin dada sea True. Sintaxis:
WHILE <expression> DO <statement-list>; END_WHILE;
38
19
11/02/2009
Sentencia WHILE
39
40
20
11/02/2009
Sentencia REPEAT
Ejecuta una serie de instrucciones hasta que una condicin sea True. Sintaxis:
REPEAT <statement-list>; UNTIL <expression> END_REPEAT;
41
Sentencia REPEAT
42
21
11/02/2009
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. Fuerza el final de la accin que esta siendo ejecutada y ejecuta la siguiente programa de accin o programa de transicin. Fuerza el final de bloque de funcin ST que contiene el RETURN, retorna a el sitio donde fue llamada la FB y ejecuta la siguiente instruccin.
ST usado en SFC:
ST usado en FB:
Sintaxis:
RETURN;
45
A(
B:=C,
, D=>E )
46
23
11/02/2009
A(
C,
, E )
47
Mtodo 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
Librera de Funciones
Funciones
Tipo de funcin
Funciones numricas Funciones para manejo de strings Funciones de expansin OMRON Conversiones de tipos de datos
Utilidad
Valor absoluto, funciones trigonomtricas, etc Manejo de cadenas de caracteres. Funciones de expansin al lenguaje estndar. Conversiones entre tipos de datos.
50
25
11/02/2009
ABS (arg) SQRT (arg) LN (arg) LOG (arg) EXP (arg) EXPT (arg)
Raz cuadrada Logaritmo natural: LOGe Logaritmo: LOG10 Exponencial natural: earg Exponencial: baseexpo
51
Descripcin Sino Coseno Tangente Arco Seno Arco Coseno Arco Tangente
SIN (arg) COS (arg) TAN (arg) ASIN (arg) ACOS (arg) ATAN (arg)
52
26
11/02/2009
Descripcin Devuelve la longitud de un texto. Extrae caracteres de un texto comenzando por la izquierda. Extrae caracteres de un texto comenzando por la derecha. Extrae caracteres de un texto.
53
CONCAT(<texto
fuente1>, <texto fuente2>, ..) Hasta 32 argumentos
STRING
STRING
54
27
11/02/2009
REPLACE (<texto
fuente>, <texto a insertar>, <numero de caracteres>, <posicin>)
WRITE_TEXT (<texto a
escribir>, <Nombre del directorio y el fichero>, <Delimitador>, <Parmetros>)
56
28
11/02/2009
Datos devueltos
---
Descripcin Transmite una cadena de texto por el puerto RS-232 de la CPU. Transmite una cadena de texto por un puerto serie de la SCB. Transmite una cadena de texto por un puerto serie de la SCU.
TXD_CPU ( <texto> )
Texto Puerto serie Texto Numero Unidad SCU Puerto serie Puerto lgico interno
STRING INT, UINT, WORD STRING INT, UINT, WORD INT, UINT, WORD INT, UINT, WORD
---
---
57
Datos devueltos
---
Descripcin Recibe una cadena de texto por el puerto RS232 de la CPU. Recibe una cadena de texto por un puerto serie de la SCB.
RXD_SCU ( <carga>,
<numero caracteres>, <numero Unidad SCU>, <puerto serie>, <puerto lgico interno> )
Carga Numero caracteres Numero Unidad SCU Puerto serie Puerto lgico interno
58
29
11/02/2009
59
30
11/02/2009
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 FBs. Hasta 8 niveles de anidamiento, en las llamadas a FBs.
31
11/02/2009
Restricciones
Los entero solamente pueden ser asignados a variables de tipo WORD, DWORD, INT, DINT, UINT, UDINT ULINT. Los nmeros 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.
32