IEC Programación en ST (Structured Text)

Documentos relacionados
11/02/2009 IEC de febrero de 2009 Antonio Cambronero, Product Engineer OMRON Electronics Iberia S.A.U. IEC ( Programación en ST )

Contenido de la Presentación

FUNCIONAMIENTO DIGITAL DE UN SISTEMA. EL SISTEMA BINARIO. Sistema Digital. Fr. Casares. Sistema Digital. Sistema Digital

GUÍA BÁSICA DE SCHEME v.4

Tema 2. El lenguaje JAVA

El lenguaje C. 1. Identificadores, constantes y variables

Principios de Computadoras II

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Estatutos de Control C# Estatutos de Decisión (Selección)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE)

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

LENGUAJE. Tema 2 Elementos de un programa

Elementos de un programa en C

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Datos y tipos de datos

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Tema 2. El lenguaje de programación Java (Parte 1)

Curso de Programación Avanzada en C

PLCopen / IEC

Elementos léxicos del lenguaje de programación Java

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre

FUNDAMENTOS DE INFORMÁTICA

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

4. Operadores Operador asignación

Programación en Pascal

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Operadores y Expresiones

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Java para programadores

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Programación en java. Estructuras algorítmicas

Tema 3.- Predicados y sentencias condicionales

Operadores. Javier Fernández Rivera -

SENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro

Sistemas de numeración, operaciones y códigos.

Curso de Java Introducción a la Programación III

Tema 3 Elementos básicos de programación

Fundamentos de JAVA. Angel Kuri Enero, /2/2006

Elementos léxicos del lenguaje de programación C

Tema 4. Operadores y Expresiones

Práctica de constantes, expresiones y operadores. Programación en C 1

INICIACIÓN A LA PROGRAMACIÓN II

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

MATEMÁTICA D INTRODUCCIÓN A SCILAB. Por: Dr. Javier Francesconi

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores

Ficha de Aprendizaje N 13

U i n d id d a 3. El Element os á bá i s cos de un programa

1 Estructura básica de un programa C++

Computación II. Introducción a Visual Basic

Shell Script Sistemas Operativos III - ITS EMT - CETP

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Soporte Técnico. PROGRAMACIÓN AVANZADA DE PLC s

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

PROCEDIMIENTOS Y FUNCIONES DE LA PROGRAMACIÓN (VISUAL BASIC)

Fundamentos de Programación Visual Basic

Guía práctica de estudio 05: Diagramas de flujo

Aprender a programar con Turbo Pascal. Turbo pascal

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

Funciones & Estructuras de control

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Curso Introducción JAVA Pág.: 1

TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN

Funciones y subrutinas

Programación de PLC con CX-PROGRAMMER Versión 2

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

La calculadora de Windows

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

Se guardan en archivos con extencion c y los cabezales con extension h

Datos y tipos de datos

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Fundamentos del Lenguaje de Programación Java

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

Programación orientada a objetos. Resumen de Temas Unidad 4: Sobrecarga

1 ELEMENTOS BASICOS DEL LENGUAJE

Programación básica C++

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

Manual de formación para soluciones generales en automatización Totally Integrated Automation (T I A )

Ubicación e historia

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

Introducción a la Programación 11 O. Humberto Cervantes Maceda

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

ACTIONSCRIPT (AS) Proyectos II. Audiovisuales. Dpto. Escultura. UPV. [sintaxis elemental]

TEMA 4. ESTRUCTURAS DE CONTROL

Índice general. Capítulo 1 Conceptos básicos. Capítulo 2 Controles básicos I. Pág. N. 1

Capítulo 2 REPRESENTACIÓN DE LOS DATOS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Herramientas computacionales para la matemática MATLAB:Introducción

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

EXAMEN PARCIAL TRABAJO INTEGRADOR (TI) EVALUACIÓN CONTINUA PESO PORCENTUAL PESO PORCENTUAL 1 30% 06-MAY-14 30% 03-MAY-14 20% 20%

Transcripción:

www.infoplc.net IEC 61131-3 Programación en ST (Structured Text) 24 de marzo de 2013 Antonio Cambronero, Product Engineer OMRON Electronics Iberia S.A.U.

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

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

Elementos de un programa en ST Parte declarativa Parte ejecutiva 4

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: Una constante El valor de una variable. El resultado de una función. NOTA: Tener siempre en cuenta la precedencia de los operadores Ejemplos: 2.0 * 3.1415 * radio ABS( temp ) / presion Valvula1 AND NOT Valvula2 6

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) = 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 Se escribe la expresión Se evalúa el resultado Se asigna a la variable 7

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

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

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. (* ------ Asignación ------*) a := a AND NOT b; (*------ Selección Simple ------*) IF a = TRUE THEN a := a AND b; END_IF; Siempre usarlos entre palabras reservadas y variables. 10

Mayúsculas y Minúsculas Uso indistinto de mayúsculas / minúsculas en cualquier sentencia o nombre de variable (*------ Selección Simple ------*) IF A = TRUE THEN A := A AND B; END_IF; = (*------ Seleccción Simple ------*) if a = true then a := a and b; 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

Constantes Numéricas Los valores numéricos se pueden expresar en... - Decimal (sin prefijo) : 128 - Hexadecimal : 16#4D2 - Octal : 8#1355 - Binario : 2#10010010 (*------ Seleccción 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 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)

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 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 10 308 a 2.22507385850720 10 308, 0, 2.22507385850720 10 308 a 1.79769313486232 10 308 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 16

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

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 < > <= >= 19 Comparaciones BOOL, INT, DINT, LINT, UINT, UDINT, ULINT, WORD, DWORD, LWORD, REAL, LREAL = < > Igualdad / Desigualdad BOOL, INT, DINT, LINT, UINT, UDINT, ULINT, 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 6 7 8

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

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 CASE OF, ELSE, END_CASE Condicional compuesta CASE a OF 1: b := 1; 2: b := 2; ELSE b := 3; END_CASE; IF a < b THEN c := a END_IF; 22

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: Comentarios: Errores: Resto de cosas: Azul Verde Rojo Negro Los colores NO pueden ser personalizados. 24

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

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

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

30 Sentencia IF (múltiple condiciones)

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 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; 32 <ecuación_entera> -> INT, DINT, LINT, UINT, UDINT, ULINT

33 Sentencia CASE

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

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

36 Sentencia FOR

Sentencia FOR (Ejemplos) FOR i:=0 TO 100 DO array[i]:=0; END_FOR; FOR n:=0 TO 50 BY 5 DO SP[n]:=100; 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

39 Sentencia WHILE

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

Sentencia REPEAT Ejecuta una serie de instrucciones hasta que una condición sea True. Sintaxis: REPEAT <statement-list>; UNTIL <expression> END_REPEAT; 41

42 Sentencia REPEAT

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

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

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

IEC 61131-3 ( Programación en ST ) Librería de Funciones

Funciones Tipo de función Funciones numéricas Funciones para manejo de strings Funciones de expansión OMRON Conversiones de tipos de datos Utilidad Valor absoluto, funciones trigonométricas, etc Manejo de cadenas de caracteres. Funciones de expansión al lenguaje estándar. Conversiones entre tipos de datos. 50

Funciones numéricas (I) Función ABS (arg) Tipo de datos de argumentos INT, DINT, LINT, UINT, UDINT, ULINT, REAL, LREAL Tipo de datos devueltos INT, DINT, LINT, UINT, UDINT, ULINT, REAL, LREAL Descripción Valor absoluto SQRT (arg) REAL, LREAL REAL, LREAL Raíz cuadrada LN (arg) REAL, LREAL REAL, LREAL Logaritmo natural: LOG e LOG (arg) REAL, LREAL REAL, LREAL Logaritmo: LOG 10 EXP (arg) REAL, LREAL REAL, LREAL Exponencial natural: e arg EXPT (arg) Base REAL, LREAL REAL, LREAL Exponencial: base expo Exponente INT, DINT, LINT, UINT, UDINT, ULINT 51

Funciones numéricas (II) Función Tipo de datos de argumentos Tipo de datos devueltos SIN (arg) REAL, LREAL REAL, LREAL Sino Descripción 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

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>) RIGHT (<texto fuente>, <numero de caracteres>) MID (<texto fuente>, <numero de caracteres>, <posición>) Texto fuente Numero de caracteres Texto fuente Numero de caracteres Texto fuente Numero de caracteres Posición STRING STRING Extrae caracteres de un texto comenzando por la izquierda. INT, UINT STRING STRING Extrae caracteres de un texto comenzando por la derecha. INT, UINT STRING STRING Extrae caracteres de un texto. INT, UINT INT, UINT 53 La posición del primer carácter en las cadenas de texto es 1

Funciones para cadenas de texto (II) Función CONCAT(<texto fuente1>, <texto fuente2>,..) Hasta 32 argumentos INSERT (<texto fuente>, <texto a insertar>, <posición>) Tipo de datos de argumentos Texto fuente Texto fuente Texto a insertar Posición Tipo de datos devueltos Descripción STRING STRING Une cadenas de texto. STRING STRING Inserta un cadena de texto dentro de otra. STRING INT, UINT DELETE (<texto fuente>, <numero de caracteres>, <posición>) Texto fuente Numero de caracteres Posición STRING STRING Borra caracteres de un cadenas de texto. INT, UINT INT, UINT 54 La posición del primer carácter en las cadenas de texto es 1

Funciones para cadenas de texto (III) Función REPLACE (<texto fuente>, <texto a insertar>, <numero de caracteres>, <posición>) Tipo de datos de argumentos Texto fuente Texto a insertar Numero de caracteres Posición Tipo de datos devueltos Descripción STRING STRING Reemplaza caracteres dentro de un cadena de texto. STRING INT, UINT INT, UINT FIND (<texto fuente>, <texto a buscar>) Texto fuente Texto a insertar STRING INT Busca una cadena dentro de otra cadena de texto. STRING 55 La posición del primer carácter en las cadenas de texto es 1

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

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> ) TXD_SCU ( <texto>, <Numero Unidad SCU>, <Puerto serie>, <Puerto lógico interno> ) Texto STRING --- Transmite una cadena Puerto serie de texto por un puerto serie de la SCB. INT, UINT, WORD Texto STRING --- Transmite una cadena de texto por un puerto serie de la SCU. Numero Unidad SCU Puerto serie Puerto lógico interno INT, UINT, WORD INT, UINT, WORD INT, UINT, WORD 57

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

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

Conversión entre tipo de datos Funciones de conversión de tipos de datos. B := from_to_to( valor ); NOTA: Los tipos reales 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

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