03 - programacion st.ppt [modo de compatibilidad] · 11/02/2009 1 iec 61131-3 programación en st...

32
11/02/2009 1 IEC 61131-3 Programación en ST 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 Introducción

Upload: others

Post on 15-Feb-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

11/02/2009

1

IEC 61131-3

Programación en STProgramación en ST

(StructuredStructured TextText)

11 de febrero de 2009

Antonio Cambronero , Product Engineer

OMRON Electronics Iberia S.A.U.

IEC 61131-3 ( Programación en ST )

IntroducciónIntroducción

11/02/2009

2

¿qué es y para que sirveStructured 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.

3

asignación.

Elementos de un programa en ST

Parte declarativa

4

Parte ejecutiva

11/02/2009

3

IEC 61131-3 ( Programación en ST )

Reglas de sintaxisReglas de sintaxis

Expresiones

• Son reglas para calcular un valor.

NOTANOTA: Tener siempre en : Tener siempre en cuenta la precedencia de cuenta la precedencia de los operadoreslos operadores

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

Ejemplos:

2.0 2.0 * 3.1415 * 3.1415 * radio* radio

ABS( ABS( temptemp ) / ) / presionpresion

Valvula1 AND NOT Valvula2Valvula1 AND NOT Valvula26

• El resultado de una función.

11/02/2009

4

La instrucción de asignación• Asigna el valor de la expresión de la derecha a la variable de la izquierda.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 longitudEj. Cálculo longitud R=5, PI=3,14159R=5, PI=3,14159Valor actual de la Valor actual de la

7

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

Ej. Cálculo longitudEj. Cálculo longitud

longitud := 2 * pi * r

R=5, PI=3,14159R=5, PI=3,14159

longitud := 2 * pi * r

Valor actual de la Valor actual de la

variable...variable...

longitud := 31.4159

DelimitadoresCualquier sentencia debe acabar siempre con un delimitador ( ; )

(* ------ Asignación ------*)a := a AND NOT b;(* ------ Asignación ------*)a := a AND NOT b;siempre con un delimitador ( ; )

No usar un delimitador dentro de

a := a AND NOT b;

(*------ Seleccción Simple ------*)IF a = TRUE THEN

a := a AND b;END_IF;

a := a AND NOT b;

(*------ Seleccción Simple ------*)IF a = TRUE THEN

a := a AND b;END_IF;

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

8

No usar un delimitador dentro de una sentencia

(*------ Selecció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;

11/02/2009

5

Añadir Comentarios

• Los comentarios se encierran entre paréntesis y asteriscos (* y *)• 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 ------*)a := a AND NOT b;

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

9

(*------ Selecció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;

Espacios, Retornos de Carro y Tabulaciones

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

• Excepciones:

• Palabras reservadas, nombres de variables, caracteres especiales,

(* ------ Asignación ------*)a := a AND NOT b;

(*------ Selección Simple ------*)IF a = TRUE THEN

a := a AND b;END_IF;

(* ------ Asignación ------*)a := a AND NOT b;

(*------ Selección Simple ------*)IF a = TRUE THEN

a := a AND b;END_IF;

10

variables, caracteres especiales, constantes.

• Siempre usarlos entre palabras reservadas y variables.

11/02/2009

6

Mayúsculas y Minúsculas

Uso indistinto de mayúsculas / minúsculas en cualquier 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;

(*------ Seleccción Simple ------*)if a = true then

a := a and b;

(*------ Selección Simple ------*)IF A = TRUE THEN

A := A AND B;

(*------ Selección Simple ------*)IF A = TRUE THEN

A := A AND B;

11

== a := a and b;endif;

a := a and b;endif;

A := A AND B;END_IF;

A := A AND B;END_IF;

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.

12

• Las variables no pueden comenzar con un numero (0 a 9)

11/02/2009

7

Constantes NuméricasLos valores numéricos se pueden expresar en...

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

- Decimal (sin prefijo) : 128- Hexadecimal : 16#4D2- Octal : 8#1355- Binario : 2#10010010

En constantes enteras o reales, se puede usar ( _ ) para formatear el

(*------ Seleccción Simple ------*)if chico_a = true then

a := 10;b := 16#A;c := 8#12;d := 2#1010;

endif;

(*------ Seleccción Simple ------*)if chico_a = true then

a := 10;b := 16#A;c := 8#12;d := 2#1010;

endif;

13

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

Real: 12_345.0, 1.2_345Enteros: -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'.• 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)$': 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)

11/02/2009

8

Tipos de datos (I)SímboloSímbolo ContenidoContenido TamañoTamaño Rango de valoresRango de valores

BOOL Datos de bit 1 0 (falso), 1 (verdadero)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

15

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

Tipos de datos (II)SímboloSímbolo ContenidoContenido TamañoTamaño Rango de valoresRango de valores

REAL Numero real 32 −3.402823 × 10 38 a −1.175494 × 10−38, 0,REAL Numero real 32 −3.402823 × 10 a −1.175494 × 10 , 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

16

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

11/02/2009

9

Texto estructurado.

• Funciones matemáticas soportadas:• Funciones matemáticas soportadas:– Suma (+)– Resta (-)– Multiplicación (*)– División (/)

• Funciones de bit soportadas:– Bitwise AND (AND o &)

17

– Bitwise AND (AND o &)– Bitwise OR (OR)– OR Exclusiva OR (XOR)– NOT (NOT)

Operadores.• Operadores soportados:– Paréntesis ( brackets () )– 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 (>)

18

– Operador de Comparación Mayor o Igual Que (>=)– Operador de Comparación Igual (=)– Operador de Comparación Distinto Que (<>)

11/02/2009

10

OperadoresSí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

19

< > <= >=

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

Palabras reservadas.

– TRUE, FALSE

– IF, THEN, ELSE, ELSEIF, END_IF

– DO, WHILE, END_WHILE

– REPEAT, UNTIL, END_REPEAT

20

– FOR, TO, BY, END_FOR

– CASE, OF, ELSE, END_CASE

11/02/2009

11

Tipos de DatosSí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

21

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

SentenciaSentencia FunciónFunción EjemploEjemploSentenciaSentencia FunciónFunción EjemploEjemplo; 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 OF1: b := 1;2: b := 2;

22

2: b := 2;ELSE

b := 3;END_CASE;

11/02/2009

12

Sentencias 2/2

Sentencia Función EjemploFOR, 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 DOb := b + 3;

END_WHILE;

REPEAT, UNTIL, END_REPEAT Bucle con condición final. REPEATd := d + 1;

UNTIL d < 15END_REPEAT;

23

END_REPEAT;

EXIT Sale del proceso de un bucle. WHILE truea := 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: AzulComentarios: VerdeErrores: RojoResto de cosas: Negro

24

Los colores NO pueden ser personalizados.

11/02/2009

13

IEC 61131-3 ( Programación en ST )

Sentencias de controlSentencias de control

Sentencia IF• Ejecuta de forma condicional un grupo de instrucciones, dependiendo del valor de una expresión.dependiendo del valor de una expresión.

• Sintaxis:

IF expression1 THEN statement-list1

[ ELSIF expression2 THEN statement-list2 ]

26

[ ELSE statement-list3 ]

END_IF;

11/02/2009

14

Sentencia IF (condición simple)

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

IF <condition> THEN<expression_1>;

ELSE<expression_2>;

END_IF;

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:Sintaxis de la declaración:Sintaxis de la declaración:

IF <condition_1> THENIF <condition_2> THEN

<expression_1>;ELSE

<expression_2>:END_IF;

END_IF

Sintaxis de la declaración:

IF <condition_1> THENIF <condition_2> THEN

<expression_1>;ELSE

<expression_2>:END_IF;

END_IF

28

END_IF;END_IF;

11/02/2009

15

Sentencia IF (múltiple condiciones)

Sintaxis de la declaración: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

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

29

ELSE<expression_m>;

END_IF;

ELSE<expression_m>;

END_IF;

Sentencia IF (múltiple condiciones)

30

11/02/2009

16

Sentencia IF (Ejemplos)

IF A>0 THENIF A>0 THEN IF A THEN X:=10;ELSE X:=0;IF A THEN X:=10;ELSE X:=0;

IF A>0 AND B>1 THENIF A>0 AND B>1 THENIF A>0 THEN X:=10;

ELSIF B=1 THEN X:=1;ELSIF THEN

IF A>0 THEN X:=10;ELSIF B=1 THEN X:=1;ELSIF THEN

X:=10;ELSE

X:=0;END_IF;

X:=10;ELSE

X:=0;END_IF;

ELSE X:=0;END_IF;ELSE X:=0;END_IF;

31

X:=10; Y:=20;ELSE

X:=0; Y:=0;END_IF;

X:=10; Y:=20;ELSE

X:=0; Y:=0;END_IF;

ELSIF B=2 THEN X:=2;ELSE

X:=0;END_IF;

ELSIF B=2 THEN X:=2;ELSE

X:=0;END_IF;

Sentencia CASE• Ejecuta uno de varios grupos de instrucciones según el valor de una expresión.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>;...

:

32

<ecuación_entera_valor _n>: <expresión_n>;ELSE

<expresión_m>;END_CASE;

<ecuación_entera> -> INT , DINT, LINT , UINT, UDINT, ULINT

11/02/2009

17

Sentencia CASE

33

Sentencia CASE (Ejemplos)

CASE A OF1: X:=1;2: X:=2;3: X:=3;

ELSEY:=0;

CASE A OF1: X:=1;2: X:=2;3: X:=3;

ELSEY:=0;

CASE A OF1: X:=1;2,5: X:=2;6..10: X:=3;11,12,15..20: X:=4;

ELSE

CASE A OF1: X:=1;2,5: X:=2;6..10: X:=3;11,12,15..20: X:=4;

ELSE

34

END_CASE;END_CASE;ELSE

Y:=0;END_CASE;

ELSEY:=0;

END_CASE;

11/02/2009

18

Sentencia FOR• Repite un grupo de instrucciones un número de veces especificado.especificado.

• Sintaxis:

FOR control variable := < integer_expression1> TO <integer_expression2> [ BY <integer_expression3> ]

DO<statement-list> ;

END_FOR;

35

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

Sentencia FOR

36

11/02/2009

19

Sentencia FOR (Ejemplos)

FOR i:=0 TO 100 DOarray[i]:=0;

END_FOR;

IF i=101 THENa:=TRUE;

ELSE

FOR i:=0 TO 100 DOarray[i]:=0;

END_FOR;

IF i=101 THENa:=TRUE;

ELSE

FOR n:=0 TO 50 BY 5 DOSP[n]:=100;

END_FOR;

FOR n:=0 TO 50 BY 5 DOSP[n]:=100;

END_FOR;

37

ELSEa:=FALSE;

END_IF;

ELSEa:=FALSE;

END_IF;

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

• Sintaxis:

WHILE <expression> DO<statement-list> ;

END_WHILE;

38

END_WHILE;

11/02/2009

20

Sentencia WHILE

39

Sentencia WHILE (Ejemplos)

A:=0;A:=0;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;

n:=1;WHILE X<3000 DO

X:=X*2;

40

X:=X*2;DATA[n]:=X;n:=n+1;

END_WHIE;

X:=X*2;DATA[n]:=X;n:=n+1;

END_WHIE;

11/02/2009

21

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

• Sintaxis:

REPEAT<statement-list> ;

UNTIL <expression> END_REPEAT;

41

UNTIL <expression> END_REPEAT;

Sentencia REPEAT

42

11/02/2009

22

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;

43

Sentencia EXIT• Fuerza la salida de un bucle ( FOR, WHILE, REPEAT )

• Sintaxis:

FOR ( WHILE, REPEAT) expression...

IF <condition> THEN EXIT ;

44

END_IF;...

END_FOR( WHILE, REPEAT);

A := 10;

11/02/2009

23

Sentencia RETURN• La operativa de RETURN depende de donde se use el programa.

•• Programa STPrograma ST: • Fuerza el final de la tarea ST que esta siendo ejecutada y ejecuta la siguiente tarea.

•• ST usado en SFCST 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 FBST usado en FB:

45

•• ST usado en FBST 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;

Llamadas a Bloques de Función

• Método 1:• 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.

46

A( B:=C, ………… , D=>E )

11/02/2009

24

Llamadas a Bloques de Función

• Método 2:• 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.

47

A( C, ………… , E )

• Método 1:

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_I N2:=IN2, FB_OUT2=>OUT2, FB_IN3:=IN3, FB_OUT3=>OUT3, ENO=>B)

48

• Método 2:• Instance_FB( IN1, IN2, IN3, OUT1, OUT2, OUT3 )

• Instance_FB( IN1, IN2, IN3, OUT1 )

• Instance_FB( IN1, IN2, IN3, OUT1, OUT3 )

11/02/2009

25

IEC 61131-3 ( Programación en ST )

Librería de FuncionesLibrerí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

11/02/2009

26

Funciones numéricas (I)Función Tipo de datos de

argumentosTipo de datosdevueltos

Descripciónargumentos devueltos

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

51

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

argumentosTipo 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

52

11/02/2009

27

Funciones para cadenas de texto (I)Función Tipo de datos de

argumentosTipo de datos devueltos

Descripción

LEN ( ) String STRING INT Devuelve la longitud 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 comenzandopor la izquierda.Numero de

caracteresINT, UINT

RIGHT (<texto fuente>,<numero de caracteres>)

Texto fuente

STRING STRING Extrae caracteres de un texto comenzandopor la derecha.Numero de INT, UINT

53

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 1La 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

argumentosTipo 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

54

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 1La posición del primer carácter en las cadenas de texto es 1

11/02/2009

28

Funciones para cadenas de texto (III)Función Tipo de datos de

argumentosTipo de datos devueltos

Descripción

REPLACE (<textofuente>, <texto a insertar>, <numero de caracteres>,

<posición>)

Texto fuente

STRING STRING Reemplaza caracteres dentro de un cadena de texto.Texto a

insertarSTRING

Numero de caracteres

INT, UINT

Posición INT, UINT

FIND (<texto fuente>,

)Texto fuente

STRING INT Busca una cadena dentro de otra cadena

55

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

insertarSTRING

La posición del primer carácter en las cadenas de texto es 1La 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

argumentosTipo 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

56

11/02/2009

29

Funciones de expansión OMRON (II)Función Tipo de datos de

argumentosDatos 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

Texto STRING --- Transmite una cadena de texto por un puerto serie de la SCU.

Numero INT, UINT,

57

<Puerto serie>, <Puerto

lógico interno> )serie de la SCU.

NumeroUnidad SCU

INT, UINT, WORD

Puerto serie INT, UINT, WORD

Puerto lógico interno

INT, UINT, WORD

Funciones de expansión OMRON (III)Función Tipo de datos de

argumentosDatos devueltos

Descripción

RXD_CPU ( <carga>, Carga STRING --- Recibe una cadena deRXD_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 detexto por un puerto serie de la SCB.

Numero caracteres

INT, UINT, WORD

Puerto serie INT, UINT, WORD

RXD_SCU ( <carga>, Carga STRING --- Recibe una cadena de

58

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.

Numerocaracteres

INT, UINT, WORD

NumeroUnidad SCU

INT, UINT, WORD

Puerto serie INT, UINT, WORD

Puerto lógico interno

INT, UINT, WORD

11/02/2009

30

Funciones de expansión OMRON (IV)Función Tipo de datos

de argumentosTipo de datos devueltos

Descripciónde 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 );

B := REAL_TO_INT(valor);

B := from_TO_to( valor );

B := REAL_TO_INT(valor);

NOTANOTA: Los tipos reales : Los tipos reales son redondeadosson redondeados

B := tipo_dato_origen_TO_STRING( valor );B := tipo_dato_origen_TO_STRING( valor );

– Funciones de conversión de texto a números.

60

B := tipo_dato_origen_TO_STRING( valor );B := STRING_TO _tipo_dato_destino( valor );

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

B := tipo_dato_origen_TO_STRING( valor );B := STRING_TO _tipo_dato_destino( valor );

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

11/02/2009

31

IEC 61131-3 ( Programación en ST )

RestriccionesRestricciones

Restricciones

– No hay limite en el anidamiento de las – 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 – Hasta 8 niveles de anidamiento, en las llamadas a FB’s.

11/02/2009

32

Restricciones

– Los entero solamente pueden ser asignados a – 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.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 EngineerProduct Engineer

Omron Electronics Iberia, S.A.