36
Manual de programación (Números de catálogo 1756 ControlLogix, 1769 CompactLogix, 1789 SoftLogix, 1794 FlexLogix, PowerFlex 700S con DriveLogix) Texto estructurado de los controladores Logix5000

Texto Estructurado de Loscontroladores Logix5000

Embed Size (px)

Citation preview

Page 1: Texto Estructurado de Loscontroladores Logix5000

Manual de programación

(Números de catálogo 1756 ControlLogix, 1769 CompactLogix, 1789 SoftLogix,

1794 FlexLogix, PowerFlex 700S con DriveLogix)

Texto estructurado de los controladores Logix5000

Page 2: Texto Estructurado de Loscontroladores Logix5000

Información importante para el usuarioLos equipos de estado sólido tienen características de funcionamiento distintas de las de los equipos electromecánicos. La publicación Safety Guidelines for the Application, Installation and Maintenance of Solid State Controls (publicación SGI-1.1 disponible en su oficina local de ventas de Rockwell Automation o en línea en http://literature.rockwellautomation.com) describe algunas diferencias importantes entre los equipos de estado sólido y los dispositivos electromecánicos de lógica cableada. Debido a esta diferencia y también a la gran variedad de usos de los equipos de estado sólido, toda persona encargada de la aplicación de estos equipos debe asegurarse de la idoneidad de cada una de las aplicaciones concebidas con ellos.

En ningún caso Rockwell Automation, Inc. será responsable ni asumirá ninguna obligación por daños indirectos o consecuentes que resulten del uso o de la aplicación de estos equipos.

Los ejemplos y los diagramas de este manual se incluyen únicamente con fines ilustrativos. Debido a las numerosas variables y los muchos requisitos asociados con cualquier instalación en particular, Rockwell Automation, Inc. no puede asumir responsabilidad u obligación alguna por el uso de estos equipos basado en ejemplos y diagramas.

Rockwell Automation, Inc. no asume ninguna obligación de patente con respecto al uso de la información, los circuitos, los equipos o el software descritos en este manual.

Se prohibe la reproducción total o parcial del contenido de este manual sin la autorización por escrito de Rockwell Automation, Inc.

Este manual contiene notas de seguridad en todas las situaciones en que se estimen necesarias.

Allen-Bradley, Rockwell Automation, and TechConnect son marcas comerciales de Rockwell Automation, Inc.

Las marcas comerciales no pertenecientes a Rockwell Automation son propiedad de sus respectivas empresas.

ADVERTENCIAIdentifica información sobre prácticas o circunstancias que pueden provocar una explosión en un ambiente peligroso, lo que podría causar lesiones personales o la muerte, daños materiales o pérdidas económicas.

IMPORTANTE Identifica información importante para la correcta aplicación y comprensión del producto.

ATENCIÓN Identifica información sobre prácticas o circunstancias que podrían provocar lesiones personales o la muerte, daños materiales o pérdidas económicas. Los mensajes de Atención le ayudan a identificar y evitar un peligro, y a reconocer las consecuencias.

PELIGRODE CHOQUE

Puede haber etiquetas en el exterior o en el interior del equipo (por ejemplo, en un variador o un motor) para advertir sobre la posible presencia de voltaje peligroso.

PELIGRODE QUEMADURA

Puede haber etiquetas en el exterior o en el interior del equipo (por ejemplo, en un variador o un motor) para advertir sobre superficies que podrían estar a temperaturas peligrosas.

Page 3: Texto Estructurado de Loscontroladores Logix5000

ContenidoPrefacio Propósito de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Cómo usar ese manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Capítulo 1Programación de texto estructurado

Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Asignaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Especifique una asignación no retentiva. . . . . . . . . . . . . . . . . . . . . . 9Asigne un carácter ASCII a una cadena.. . . . . . . . . . . . . . . . . . . . . 10

Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Use operadores y funciones aritméticas . . . . . . . . . . . . . . . . . . . . . 12Use operadores con relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Use operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Use operadores bit a bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Determine el orden de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Construcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Algunas palabras clave están reservadas para uso futuro. . . . . . . . 18IF...THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19CASE...OF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22FOR…DO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25WHILE…DO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28REPEAT…UNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Servicio de asistencia técnica de Rockwell Automation . . . . . . . . . . . . 36

Asistencia para la instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Devolución de productos nuevos . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Publicación 1756-PM007B-ES-P – Julio 2008 3

Page 4: Texto Estructurado de Loscontroladores Logix5000

Contenido

4 Publicación 1756-PM007B-ES-P – Julio 2008

Page 5: Texto Estructurado de Loscontroladores Logix5000

Prefacio

Propósito de este manual Este manual muestra cómo programar los controladores Logix5000 con el lenguaje de programación de texto estructurado. Este manual es uno de un conjunto de manuales relacionados que muestran los procedimientos comunes para programar y operar los controladores Logix5000. Para obtener una lista completa de manuales de procedimientos comunes, consulte el documento Manual de programación de procedimientos comunes de los controladores Logix5000, publicación 1756-PM001.

El término controlador Logix5000 se refiere a cualquier controlador basado en el sistema de operación Logix5000, tales como:

• controladores CompactLogix• controladores ControlLogix• controladores DriveLogix• controladores FlexLogix• controladores SoftLogix5800

Cómo usar ese manual Algunas secciones tienen un formato distinto al resto del texto.

El texto en Identifica Por ejemplo Significa

cursiva el nombre de un ítem que usted ve en la pantalla o en un ejemplo

Haga clic con el botón derecho del mouse en User-Defined …

Haga clic con el botón derecho del mouse en el ítem que tiene el nombre User-Defined.

courier información que usted debe proporcionar según su aplicación (una variable)

Haga clic con el botón derecho del mouse en name_of_program …

Usted debe identificar el programa específico en su aplicación. Normalmente es un nombre o una variable que usted ha definido.

encerrado en corchetes

una tecla del teclado Presione [Enter]. Presione la tecla Enter.

Publicación 1756-PM007B-ES-P – Julio 2008 5

Page 6: Texto Estructurado de Loscontroladores Logix5000

Prefacio

Notas:

6 Publicación 1756-PM007B-ES-P – Julio 2008

Page 7: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1

Programación de texto estructurado

Introducción El texto estructurado es un lenguaje de programación textual que usa enunciados para definir lo que se va a ejecutar.

• El texto estructurado trata indistintamente las mayúsculas y las minúsculas.

• Use tabulaciones y retornos de carro (nuevas líneas) para facilitar la lectura del texto estructurado. Éstos no tienen ningún efecto en la ejecución del texto estructurado.

El texto estructurado trata indistintamente las mayúsculas y las minúsculas. El texto estructurado puede contener estos componentes:

Término Definición Ejemplos

Asignación(vea la página 8)

Use un enunciado de asignación para asignar valores a los tags. El operador := es el operador de asignación.Termine la asignación con un signo de punto y coma “;”.

tag := expression;

Expresión(vea la página 10)

Una expresión es parte de una asignación completa o de un enunciado de construcción. Una expresión evalúa según un número (expresión numérica) o según un estado de verdadero o falso (expresión BOOL).

Una expresión contiene:

Tags Área con nombre de la memoria, donde se almacenan los datos (BOOL, SINT,INT,DINT, REAL, de cadena)

value1

Inmediatos Un valor constante 4

Operadores Un símbolo o mnemónico que especifica una operación dentro de una expresión

tag1 + tag2tag1 >= value1

Funciones Cuando se ejecuta, una función produce un valor. Use paréntesis para contener el operando de una función. Aunque su sintaxis es similar, las funciones se diferencian de las instrucciones porque las funciones sólo pueden usarse en expresiones. Las instrucciones no pueden usarse en expresiones.

function(tag1)

Instrucción(vea la página 16)

Una instrucción es un enunciado autónomo. Una instrucción usa paréntesis para contener sus operandos. Según la instrucción, puede haber, cero, uno o múltiples operandos.Cuando se ejecuta, una instrucción produce uno o más valores que son parte de una estructura de datos. Termine la instrucción con un signo de punto y coma “;”.Aunque su sintaxis es similar, las instrucciones difieren de las funciones en que las instrucciones no pueden usarse en expresiones. Las funciones sólo pueden usarse en expresiones.

instruction();

instruction(operand);

instruction(operand1, operand2,operand3);

Publicación 1756-PM007B-ES-P – Julio 2008 7

Page 8: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

Asignaciones Use una asignación para cambiar el valor almacenado dentro de un tag. Una asignación tiene esta sintaxis:

tag := expression ;

donde:

El tag retiene el valor asignado hasta que otra asignación cambia el valor.

La expresión puede ser simple, como un valor inmediato u otro nombre de tag, o la expresión puede ser compleja e incluir varios operadores y/o funciones.

Construcción(vea la página 18)

Un enunciado condicional usado para activar el código de texto estructurado (por ej., otros enunciados). Termine la construcción con un signo de punto y coma “;”.

IF...THENCASEFOR...DOWHILE...DOREPEAT...UNTILEXIT

Comentario(vea la página 33)

Texto que explica o aclara lo que hace una sección del texto estructurado.

• Use comentarios para facilitar la interpretación del texto estructurado.

• Los comentarios no tienen ningún efecto en la ejecución del texto estructurado.

• Los comentarios pueden aparecer en cualquier lugar del texto estructurado.

//comentario

(*inicio de comentario . . . fin de comentario*)

/*inicio de comentario . . . fin de comentario*/

Término Definición Ejemplos

Componente Descripción

tag Representa el tag que está obteniendo el nuevo valor. El tag debe ser de tipo BOOL, SINT, INT, DINT o REAL.

:= Es el símbolo de asignación.

expresión Representa el nuevo valor que se va a asigna al tag.

Si el tag es de este tipo de datos

Use este tipo de expresión

BOOL Expresión BOOL

SINTINTDINTREAL

Expresión numérica

; Termina la asignación.

SUGERENCIA Los datos del módulo de E/S se actualizan de manera asíncrona a la ejecución de la lógica. Si usted hace referencia a una entrada múltiples veces en la lógica, la entrada podría cambiar de estado entre las distintas referencias. Si necesita que la entrada tenga el mismo estado en cada referencia, almacene en el búfer el valor de entrada y haga referencia a dicho tag en el búfer.

8 Publicación 1756-PM007B-ES-P – Julio 2008

Page 9: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

Especifique una asignación no retentiva.

La asignación no retentiva es diferente de la asignación regular descrita anteriormente, porque el tag en una asignación no retentiva se restablece a cero cada vez que el controlador:

• entra al modo marcha. • deja el paso de un SFC si usted configura el SFC para restablecimiento

automático (esto sólo se aplica si usted incorpora la asignación en la acción del paso, o si usa la acción para llamar a una rutina de texto estructurado mediante una instrucción JSR).

Una asignación no retentiva tiene esta sintaxis:

tag [:=] expression ;

donde:

Componente Descripción

tag Representa el tag que está obteniendo el nuevo valor.El tag debe ser de tipo BOOL, SINT, INT, DINT o REAL.

[:=] Es el símbolo de asignación no retentiva.

expression Representa el nuevo valor que se va a asignar al tag.

Si el tag es de este tipo de datos

Use este tipo de expresión

BOOL Expresión BOOL

SINTINTDINTREAL

Expresión numérica

; Termina la asignación.

Publicación 1756-PM007B-ES-P – Julio 2008 9

Page 10: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

Asigne un carácter ASCII a una cadena.

Use el operador de asignación para asignar un carácter ASCII a un elemento del miembro DATA de un tag de cadena. Para asignar un carácter, especifique el valor del carácter o el nombre del tag, el miembro DATA y el elemento del carácter.

Para añadir o insertar una cadena de caracteres a un tag de cadena, use cualquiera de estas instrucciones de cadena ASCII.

Expresiones Una expresión es el nombre de un tag, una ecuación o una comparación. Para escribir una expresión, use uno de estos elementos.

• Nombre de tag que almacene el valor (variable)• Número que usted introduce directamente en una expresión (valor

inmediato)• Funciones, tales como: ABS, TRUNC• Operadores, tales como: +, -, <, >, And, Or

A medida que usted escriba las expresiones, siga estas reglas generales.

• Use cualquier combinación de mayúsculas y minúsculas. Por ejemplo, estas tres variaciones de “AND” son aceptables: AND, And, and.

• Para requisitos más complejos, use paréntesis para agrupar expresiones dentro de expresiones. Esto hace que toda la expresión sea más fácil de leer y asegura que la expresión se ejecute en la secuencia deseada.

Esto es correcto Esto no es correcto

string1.DATA[0]:= 65; string1.DATA[0] := A;

string1.DATA[0]:= string2.DATA[0]; string1 := string2;

Para Use esta instrucción

añadir caracteres al final de una cadena CONCAT

insertar caracteres dentro de una cadena INSERT

IMPORTANTE Usted puede añadir comentarios de usuario en línea. Por lo tanto, la conmutación de lenguaje local no se aplica a su lenguaje de programación.

10 Publicación 1756-PM007B-ES-P – Julio 2008

Page 11: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

En texto estructurado usted usa dos tipos de expresiones:

Expresión BOOL: Una expresión que produce ya sea el valor BOOL de 1 (verdadero) o 0 (falso).

• Una expresión Bool usa tags bool, operadores con relaciones y operadores lógicos para comparar valores o verificar si las condiciones son verdaderas o falsas. Por ejemplo, tag1>65.

• Una expresión Bool simple puede ser un tag BOOL sencillo. • Normalmente usted usa expresiones BOOL para condicionar la

ejecución de otra lógica.

Expresión numérica: Una expresión que calcula un valor entero o de coma flotante (punto flotante).

• Una expresión numérica usa operadores aritméticos, funciones aritméticas y operadores bit a bit. Por ejemplo, tag1+5.

• A menudo usted anida una expresión numérica dentro de una expresión BOOL. Por ejemplo, (tag1+5)>65.

Use la siguiente tabla para seleccionar operadores para sus expresiones:

Si usted desea Entonces

Calcular un valor aritmético Use operadores y funciones aritméticas en la página 12.

Comparar dos valores o cadenas Use operadores con relaciones en la página 13.

Verificar si las condiciones son verdaderas o falsas

Use operadores lógicos en la página 14.

Comparar los bits dentro de valores Use operadores bit a bit en la página 15.

Publicación 1756-PM007B-ES-P – Julio 2008 11

Page 12: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

Use operadores y funciones aritméticas

Usted puede combinar múltiples operadores y funciones en expresiones aritméticas.

Los operadores aritméticos calculan nuevos valores.

Las funciones aritméticas realizan operaciones matemáticas. Especifique una constante, un tag no booleano o una expresión para la función.

Para Use este operador Tipo óptimo de datos

Sumar + DINT, REAL

Restar/cambiar signo - DINT, REAL

Multiplicar * DINT, REAL

Exponente (x a la potencia de y) ** DINT, REAL

Dividir / DINT, REAL

Modulo-dividir MOD DINT, REAL

Para obtener Use esta función Tipo óptimo de datos

Valor absoluto ABS (numeric_expression) DINT, REAL

Arco coseno ACOS (numeric_expression) REAL

Arco seno ASIN (numeric_expression) REAL

Arco tangente ATAN (numeric_expression) REAL

Coseno COS (numeric_expression) REAL

Radianes a grados DEG (numeric_expression) DINT, REAL

Logaritmo natural LN (numeric_expression) REAL

Logaritmo base 10 LOG (numeric_expression) REAL

Grados a radianes RAD (numeric_expression) DINT, REAL

Seno SIN (numeric_expression) REAL

Raíz cuadrada SQRT (numeric_expression) DINT, REAL

Tangente TAN (numeric_expression) REAL

Truncar TRUNC (numeric_expression) DINT, REAL

12 Publicación 1756-PM007B-ES-P – Julio 2008

Page 13: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

Por ejemplo:

Use operadores con relaciones

Los operadores con relaciones comparan dos valores o cadenas para proporcionar un resultado verdadero o falso. El resultado de una operación con relaciones es un valor BOOL.

Use estos operadores con relaciones.

Use este formato Ejemplo

Para esta situación Usted escribiría

value1 operador value2 Si gain_4 y gain_4_adj son tags DINT y su especificación dice: “Añadir 15 a gain_4 y almacenar el resultado en gain_4_adj.”

gain_4_adj := gain_4+15;

operador value1 Si alarm y high_alarm son valores DINT y su especificación dice: “Cambiar signo de high_alarm y almacenar el resultado en alarm.”

alarm:= -high_alarm;

función(numeric_expression) Si overtravel y overtravel_POS son tags DINT y su especificación dice: “Calcular el valor absoluto de overtravel y almacenar el resultado en overtravel_POS.”

overtravel_POS := ABS(overtravel);

value1 operador (función((value2+value3)/2) Si adjustment y position son tags DINT y sensor1 y sensor2 son tags REAL y su especificación dice: “Encontrar el valor absoluto del sensor1 y sensor2 promedio, añadir el ajuste y guardar el resultado en position.”

position := adjustment + ABS((sensor1 + sensor2)/2);

Si la comparación es El resultado es

Verdadera 1

Falsa 0

Para esta comparación: Use este operador: Tipo óptimo de datos:

Igual = DINT, REAL, string

Menor que < DINT, REAL, string

Menor o igual que <= DINT, REAL, string

Mayor que > DINT, REAL, string

Mayor o igual que >= DINT, REAL, string

Diferente <> DINT, REAL, string

Publicación 1756-PM007B-ES-P – Julio 2008 13

Page 14: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

Por ejemplo:

Cómo se evalúan las cadenas

Los valores hexadecimales de los caracteres ASCII determinan si una cadena es menor o mayor que otra cadena.

• Cuando las dos cadenas se clasifican como en un directorio telefónico, el orden de las cadenas determina cuál es mayor.

• Las cadenas son iguales si sus caracteres coinciden. • Los caracteres distinguen entre minúsculas y mayúsculas. La “A”

mayúscula ($41) no es igual a la “a” minúscula ($61).

Use operadores lógicos

Los operadores lógicos le permiten verificar si múltiples condiciones son verdaderas o falsas. El resultado de una operación lógica es un valor BOOL.

Use este formato EJEMPLO

Para esta situación Usted escribiría

value1 operator value2 Si temp es un tag DINT y su especificación dice: “Si temp es menor que 100° entonces…”

IF temp<100 THEN...

stringtag1 operator stringtag2 Si bar_code y dest son tags de cadena y su especificación dice: “Si bar_code es igual a dest entonces…”

IF bar_code=dest THEN...

char1 operator char2

Para introducir un carácter ASCII directamente en la expresión, introduzca el valor decimal del carácter.

Si bar_code es un tag de cadena y su especificación dice: “Si bar_code.DATA[0] es igual a ’A’ entonces…”

IF bar_code.DATA[0]=65 THEN...

bool_tag := bool_expressions Si count y length son tags DINT, done es un tag BOOL y su especificación dice ”Si el conteo es mayor o igual que la longitud, ya terminó el conteo.”

done := (count >= length);

Caracteres ASCII Códigos hexadecimales

1ab $31$61$62

1b $31$62

A $41

AB $41$42

B $42

a $61

ab $61$62

Si la comparación es El resultado es

Verdadera 1

Falsa 0

mayor

menor

AB < B

a > B

14 Publicación 1756-PM007B-ES-P – Julio 2008

Page 15: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

Use estos operadores lógicos:

Por ejemplo:

Use operadores bit a bit

Los operadores bit a bit manipulan los bits dentro de un valor basado en dos valores.

Para obtener Use este operador Tipo de datos

Y lógico &, AND BOOL

O lógico OR BOOL

O lógico exclusivo XOR BOOL

Complemento lógico NOT BOOL

Use este formato EJEMPLO

Para esta situación Usted escribiría

BOOLtag Si photoeye es un tag BOOL y su especificación dice: “Si photoeye_1 está activado, entonces…”

IF photoeye THEN...

NOT BOOLtag Si photoeye es un tag BOOL y su especificación dice: “Si photoeye está desactivado, entonces…”

IF NOT photoeye THEN...

expression1 & expression2 Si photoeye es un tag BOOL, temp es un tag DIN y su especificación dice: “Si photoeye está activado y la temp es menor que 100° entonces…”

IF photoeye & (temp<100) THEN...

expression1 OR expression2 Si photoeye es un tag BOOL, temp es un tag DIN y su especificación dice: “Si photoeye está activado o la temp es menor que 100° entonces…”

IF photoeye OR (temp<100) THEN...

expression1 XOR expression2 Si photoeye1 y photoeye2 son tags BOOL y su especificación dice: “Si:

• photoeye1 está activado mientras que photoeye2 está desactivado o

• photoeye1 está desactivado mientras que photoeye2 está activado

entonces…”

IF photoeye1 XOR photoeye2 THEN...

BOOLtag := expression1 & expression2 Si photoeye1 y photoeye2 son tags BOOL, open es un tag BOOL y su especificación dice: “Si photoeye1 y photoeye2 están activados, establezca open en verdadero”.

open := photoeye1 & photoeye2;

Para obtener Use este operador Tipo óptimo de datos

Función Y &, AND DINT

Función O OR DINT

Función O exclusivo XOR DINT

Complemento de función NOT DINT

Publicación 1756-PM007B-ES-P – Julio 2008 15

Page 16: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

Por ejemplo:

Determine el orden de ejecución

Las operaciones que usted escribe en una expresión se realizan en un orden predeterminado, no necesariamente de izquierda a derecha.

• Las operaciones de igual orden se realizan de izquierda a derecha. • Si una expresión contiene múltiples operadores o funciones, agrupe las

condiciones en paréntesis “( )”. Esto asegura el orden correcto de ejecución y facilita la lectura de la expresión.

Instrucciones Los enunciados de texto estructurado también pueden ser instrucciones. Una instrucción de texto estructurado se ejecuta cada vez que se escanea. Una instrucción de texto estructurado dentro de una construcción se ejecuta cada vez que las condiciones de la construcción son verdaderas. Si las condiciones de la construcción son falsas, los enunciados dentro de la construcción no se escanean. No existe una condición de renglón o transición de estado que active la ejecución.

Esto es diferente de las instrucción de bloque de funciones que usan EnableIn para activar la ejecución. Las instrucciones de texto estructurado se ejecutan como si EnableIn siempre estuviera establecido.

Use este formato Ejemplo

Para esta situación Usted escribiría

value1 operator value2 Si input1, input2 y result1 son tags DINT y su especificación dice: “Calcule el resultado de la función de input1 y input2. Guarde el resultado en result1.”

result1 := input1 AND input2;

Orden Operación

1. ( )

2. función (…)

3. **

4. - (cambiar signo)

5. NOT

6. *, /, MOD

7. +, – (restar)

8. <, <=, >, >=

9. =, <>

10. &, AND

11. XOR

12. OR

16 Publicación 1756-PM007B-ES-P – Julio 2008

Page 17: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

Esto también es diferente de las instrucciones de lógica de escalera que usan condición de entrada de renglón para activar la ejecución. Algunas instrucciones de lógica de escalera de relés sólo se ejecutan cuando la condición de entrada de renglón cambia de falso a verdadero. Éstas son instrucciones de lógica de escalera de relés transicionales. En texto estructurado, las instrucciones se ejecutan cada vez que son escaneadas, a menos que usted condicione previamente la ejecución de la instrucción de texto estructurado.

Por ejemplo, la instrucción ABL es una instrucción transicional en lógica de escalera de relés. En este ejemplo, la instrucción ABL sólo se ejecuta en un escán cuando tag_xic cambia de borrado a establecido. La instrucción ABL no se ejecuta cuando tag_xic permanece establecido ni cuando se borra tag_xic.

En texto estructurado, si usted escribe este ejemplo como:

IF tag_xic THEN ABL(0,serial_control);

END_IF;

la instrucción ABL se ejecuta en cada escán en que tag_xic se establece, no sólo cuando tag_xic cambia de borrado a establecido.

Si desea que la instrucción ABL se ejecute sólo cuando tag_xic cambia de borrado a establecido, tiene que condicionar la instrucción de texto estructurado. Use un impulso para activar la ejecución.

osri_1.InputBit := tag_xic;

OSRI(osri_1);

IF (osri_1.OutputBit) THEN

ABL(0,serial_control);

END_IF;

Publicación 1756-PM007B-ES-P – Julio 2008 17

Page 18: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

Construcciones Las construcciones pueden programarse individualmente o anidadas dentro de otras construcciones.

Algunas palabras clave están reservadas para uso futuro

Estas construcciones no están disponibles:

• GOTO• REPEAT

El software RSLogix 5000 no le permite usarlas.

Si usted desea Use esta construcción

Hacer algo si o cuando ocurra una condición específica IF...THEN

Seleccionar qué hacer en base a un valor numérico CASE...OF

Hacer algo un número específico de veces antes de hacer otra cosa

FOR...DO

Continuar haciendo algo siempre y cuando ciertas condiciones sean verdaderas

WHILE...DO

Seguir haciendo algo hasta que una condición sea verdadera

REPEAT...UNTIL

18 Publicación 1756-PM007B-ES-P – Julio 2008

Page 19: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

IF...THEN Use IF…THEN para hacer algo si o cuando ocurra una condición específica.

Operandos:

Texto estructurado

Descripción: La sintaxis es:

Para usar ELSIF o ELSE, siga estas pautas.

1. Para seleccionar entre varios posibles grupos de enunciados, añada uno o más enunciados ELSIF.

• Cada enunciado ELSIF representa una ruta alternativa.• Especifique todas las rutas ELSIF que necesite.• El controlador ejecuta el primer enunciado IF o ELSIF verdadero y

se salta el resto de los enunciados ELSIFs y ELSE.

2. Para hacer algo cuando todas las condiciones IF o ELSIF son falsas, añada un enunciado ELSE.

Operando Tipo Formato Introduzca

bool_ expression

BOOL TagExpresión

Expresión o tag BOOL que evalúa respecto a un valor BOOL (expresión BOOL)

IF bool_expression THEN

<enunciado>;

END_IF;

IF bool_expression1 THEN

<enunciado >; Enunciados a ejecutarse cuando bool_expression1 es verdadera

.

.

.

OpcionalELSIF bool_expression2 THEN

<enunciado>; Enunciados a ejecutarse cuando bool_expression2 es verdadera

.

.

.

OpcionalELSE

<enunciado>; Enunciados a ejecutarse cuando ambas expresiones son falsas

.

.

.

END_IF;

Publicación 1756-PM007B-ES-P – Julio 2008 19

Page 20: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

Esta tabla resume combinaciones de IF, THEN, ELSIF, and ELSE.

Indicadores de estado aritméticos:

No afectados

Condiciones de fallo: Ninguno

Ejemplo 1: IF…THEN

Ejemplo 2: IF…THEN…ELSE

[:=] le indica al controlador que restablezca la luz cada vez que el controlador: • entre al modo marcha.• deje el paso de un SFC si usted configura el SFC para restablecimiento

automático (esto se aplica sólo si usted incorpora la asignación en la acción del paso, o si usa la acción para llamar a una rutina de texto estructurado mediante una instrucción JSR).

Si usted desea Y Entonces use esta construcción

Hacer algo si o cuando las condiciones son verdaderas

No hacer nada si las condiciones son falsas

IF…THEN

Hacer algo distinto si las condiciones son falsas

IF…THEN…ESLE

Seleccionar entre enunciados alternativos (o grupos de enunciados) en base a condiciones de entrada

No hacer nada si las condiciones son falsas

IF…THEN…ELSIF

Asignar enunciados predeterminados si todas las condiciones son falsas

IF…THEN…ELSIF…ELSE

Si usted desea esto Introduzca este texto estructurado

Si rechaza > 3 entonces IF rejects > 3 THEN

transportador = desactivado (0) conveyor := 0;

alarma = activada (1) alarm := 1;

END_IF;

Si usted desea esto Introduzca este texto estructurado

Si el contacto de dirección del transportador = avance (1) entonces

IF conveyor_direction THEN

luz = apagada light := 0;

De lo contrario luz = encendida ELSE

light [:=] 1;

END_IF;

20 Publicación 1756-PM007B-ES-P – Julio 2008

Page 21: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

Ejemplo 3: IF…THEN…ELSIF

[:=] le indica al controlador que restablezca Sugar.Inlet cada vez que el controlador:

• entre al modo marcha.• deje el paso de un SFC si usted configura el SFC para restablecimiento

automático (esto se aplica sólo si usted incorpora la asignación en la acción del paso, o si usa la acción para llamar a una rutina de texto estructurado mediante una instrucción JSR).

Ejemplo 4: IF…THEN…ELSIF…ELSE

Si usted desea esto Introduzca este texto estructurado

Si el interruptor de final de carrera de nivel bajo de azúcar = baja (activado) y el interruptor de final de carrera de nivel alto de azúcar = no alta (activado) entonces

IF Sugar.Low & Sugar.High THEN

válvula de entrada = abierta (activada) Sugar.Inlet [:=] 1;

Hasta que el interruptor de final de carrera de nivel alto de azúcar = alta (desactivado)

ELSIF NOT(Sugar.High) THEN

Sugar.Inlet := 0;

END_IF;

Si usted desea esto Introduzca este texto estructurado

Si la temperatura del tanque > 100 IF tank.temp > 200 THEN

entonces bomba = lenta pump.fast :=1; pump.slow :=0; pump.off :=0;

Si la temperatura del tanque > 200 ELSIF tank.temp > 100 THEN

entonces bomba = rápida pump.fast :=0; pump.slow :=1; pump.off :=0;

de lo contrario bomba = desactivada ELSE

pump.fast :=0; pump.slow :=0; pump.off :=1;

END_IF;

Publicación 1756-PM007B-ES-P – Julio 2008 21

Page 22: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

CASE...OF Use CASE para seleccionar qué hacer en base a un valor numérico.

Operandos:

Texto estructurado

Descripción: La sintaxis es:

Operando Tipo Formato Introduzca

numeric_expression

SINTINTDINTREAL

TagExpresión

Tag o expresión que evalúa a un número (expresión numérica)

selector SINTINTDINTREAL

Inmediato El mismo tipo que numeric_expression

IMPORTANTE Si usa valores REAL, use un rango de valores para un selector porque un valor REAL es más probable que esté dentro de un rango de valores que una coincidencia exacta de un valor específico.

CASE numeric_expression OF

selector1: statement;

selectorN: statement;

ELSE

statement;

END_CASE;

CASE numeric_expression OF

Especifique todos los valores de selector

alternativos (rutas) que necesite

selector1 : <enunciado>;...

Enunciados a ejecutarse cuando numeric_expression = selector1

selector2 : <enunciado>;...

Enunciados a ejecutarse cuando numeric_expression = selector2

selector3 : <enunciado>;...

Enunciados a ejecutarse cuando numeric_expression = selector3

opcional

ELSE

<enunciado>;...

Enunciados a ejecutarse cuando numeric_expression ¼ de cualquier selector

END_CASE;

22 Publicación 1756-PM007B-ES-P – Julio 2008

Page 23: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

La sintaxis para introducir los valores de selector es:

La construcción CASE es similar a un enunciado de interruptor en los lenguajes de programación C o C++. Sin embargo, con la construcción CASE el controlador ejecuta sólo los enunciados asociados con el primer valor de selector coincidente. La ejecución siempre se interrumpe después de los enunciados de dicho selector y va al enunciado END_CASE.

Indicadores de estado aritméticos:

No afectados

Condiciones de fallo: Ninguno

Ejemplo

Cuando el selector es Introduzca

Un valor valor: enunciado

Múltiples y diferentes valores

value1, value2, valueN : <enunciado>

Use una coma (,) para separar cada valor.

Un rango de valores value1...valueN : <enunciado>

Use dos puntos (..) para identificar el rango.

Valores distintos más un rango de valores

valuea, valueb, value1...valueN : <enunciado>

Publicación 1756-PM007B-ES-P – Julio 2008 23

Page 24: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

Ejemplo

[:=] le indica al controlador que también restablezca los tags de salida cada vez que el controlador:

• entre al modo marcha.• deje el paso de un SFC si usted configura el SFC para restablecimiento

automático (esto se aplica sólo si usted incorpora la asignación en la acción del paso, o si usa la acción para llamar a una rutina de texto estructurado mediante una instrucción JSR).

Si usted desea esto Introduzca este texto estructurado

Si el número de receta = 1 entonces CASE recipe_number OF

Ingrediente A salida 1 = abierto (1) 1: Ingredient_A.Outlet_1 :=1;

Ingrediente B salida 4 = abierto (1) Ingredient_B.Outlet_4 :=1;

Si el número de receta = 2 ó 3 entonces 2,3: Ingredient_A.Outlet_4 :=1;

Ingrediente A salida 4 = abierto (1) Ingredient_B.Outlet_2 :=1;

Ingrediente B salida 2 = abierto (1)

Si el número de receta = 4, 5, 6 ó 7 entonces 4..7: Ingredient_A.Outlet_4 :=1;

Ingrediente A salida 4 = abierto (1) Ingredient_B.Outlet_2 :=1;

Ingrediente B salida 2 = abierto (1)

Si el número de receta = 8, 11, 12 ó 13 entonces 8,11..13 Ingredient_A.Outlet_1 :=1;

Ingrediente A salida 1 = abierto (1) Ingredient_B.Outlet_4 :=1;

Ingrediente B salida 4 = abierto (1)

De lo contrario, todas las salidas = cerradas (0) ELSE

Ingredient_A.Outlet_1 [:=]0;

Ingredient_A.Outlet_4 [:=]0;

Ingredient_B.Outlet_2 [:=]0;

Ingredient_B.Outlet_4 [:=]0;

END_CASE;

24 Publicación 1756-PM007B-ES-P – Julio 2008

Page 25: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

FOR…DO Use el lazo FOR…DO para hacer algo un número específico de veces, antes de hacer otra cosa.

Operandos:

Texto estructurado

Descripción: La sintaxis es:

Operando Tipo Formato Descripción

count SINTINTDINT

Tag Tag para almacenar la posición de conteo a medida que se ejecuta FOR…DO

initial_ value SINTINTDINT

TagExpresiónInmediato

Debe evaluar con respecto a un número.Especifica el valor inicial para el conteo.

final_ value SINTINTDINT

TagExpresiónInmediato

Especifica el valor final para el conteo, el cual determina cuándo salir del lazo.

increment SINTINTDINT

TagExpresiónInmediato

(opcional) Valor a incrementar el conteo cada vez a través del lazo

Si usted no especifica un incremento, el conteo se incrementa en un valor de 1.

FOR count:= initial_value TO final_value BY increment DO

<statement>;

END_FOR;

IMPORTANTE Asegúrese de no iterar dentro del lazo demasiadas veces en un solo escán.

• El controlador no ejecuta ningún otro enunciado en la rutina mientras no se complete el lazo.

• Si el tiempo que se requiere para completar el lazo es mayor que el temporizador de control (watchdog) para la tarea, se produce un fallo mayor.

• Considere usar una construcción diferente, por ejemplo IF...THEN.

FOR count := initial_value

TO final_value

opcional { BY increment Si no especifica un incremento, el lazo se incrementa en un valor de 1.

DO

<enunciado>;

opcional

IF bool_expression THEN

EXIT; Si existen condiciones en las que usted desee salir del lazo anticipadamente, use otros enunciados, tal como la construcción IF...THEN, para condicionar un enunciado EXIT

END_IF;

END_FOR;

Publicación 1756-PM007B-ES-P – Julio 2008 25

Page 26: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

Estos diagramas muestran cómo se ejecuta un lazo FOR...DO y cómo un enunciado EXIT sale del lazo anticipadamente.

Indicadores de estado aritméticos:

No afectados

Condiciones de fallo:

Ejemplo 1:

enunciado 1enunciado 2enunciado 3enunciado 4…

¿Efectuado x número de veces?

No

Resto de la rutina

enunciado 1enunciado 2enunciado 3enunciado 4…¿Salir ?

¿Efectuado x número de veces?

no

Resto de la rutina

No

El lazo FOR…DO se ejecuta un número específico de veces.

Para detener el lazo antes de que el conteo llegue al último valor, use un enunciado EXIT.

Ocurre un fallo mayor si Tipo de fallo Código de fallo

La construcción tiene un lazo excesivamente largo

6 1

Si usted desea esto Introduzca este texto estructurado

Restablecer los bits 0 – 31 en una matriz de BOOLs:1. Inicializar el tag subscript a 0.2. Restablecer la matriz[ subscript ] . Por ejemplo,

cuando subscript = 5, restablecer matriz[5].3. Añadir 1 a subscript.4. Si subscript es £ con respecto a 31, repita 2 y 3.De lo contrario, parar.

For subscript:=0 to 31 by 1 do

array[subscript] := 0;

End_for;

26 Publicación 1756-PM007B-ES-P – Julio 2008

Page 27: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

Ejemplo 2:

Si usted desea esto Introduzca este texto estructurado

Un tipo de datos definido por el usuario (estructura)almacena esta información acerca de un ítem en su inventario.

• ID de código de barras del ítem (tipo de datos de cadena)

• Cantidad en inventario del ítem (tipo de datos DINT)Una matriz de la estructura anterior contiene un elemento para cada ítem diferente en su inventario. Usted desea buscar la matriz para un producto específico (use su código de barras) y determine la cantidad que hay en inventario.

1. Obtenga el tamaño (número de ítems) de la matriz Inventory y almacene el resultado en Inventory_Items (tag DINT).

2. Inicialice el tag position a 0.3. Si el código de barras coincide con el ID de un ítem en

la matriz, entonces:a. Establezca el tag Quantity = Inventory[position].Qty. Esto

produce la cantidad en inventario del ítem.b. Pare.

El código de barras es un tag de cadena que almacena el código de barras del ítem que usted está buscando. Por ejemplo, cuando position = 5, compare Barcode con Inventory[5].ID.4. Añadir 1 a position.5. Si position es £ con respecto a (Inventory_Items -1),

repita 3 y 4. Puesto que los números de elemento comienzan en 0, el último elemento es 1 menos el número de elementos en la matriz.

De lo contrario, parar.

SIZE(Inventory,0,Inventory_Items);

For position:=0 to Inventory_Items – 1 do

If Barcode = Inventory[position].ID then

Quantity := Inventory[position].Qty;

Exit;

End_if;

End_for;

Publicación 1756-PM007B-ES-P – Julio 2008 27

Page 28: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

WHILE…DO Use el lazo WHILE…DO para continuar haciendo algo, siempre y cuando ciertas condiciones sean verdaderas.

Operandos:

Texto estructurado

Descripción: La sintaxis es:

Estos diagramas muestran cómo se ejecuta un lazo WHILE...DO y cómo un enunciado EXIT sale del lazo anticipadamente.

Operando Tipo Formato Introduzca

bool_ expression

BOOL TagExpresión

Expresión o tag BOOL que evalúa respecto a un valor BOOL

WHILE bool_expression DO

<statement>;

END_WHILE;

IMPORTANTE Asegúrese de no iterar dentro del lazo demasiadas veces en un solo escán.

• El controlador no ejecuta ningún otro enunciado en la rutina mientras no se complete el lazo.

• Si el tiempo que se requiere para completar el lazo es mayor que el temporizador de control (watchdog) para la tarea, se produce un fallo mayor.

• Considere usar una construcción diferente, por ejemplo IF...THEN.

WHILE bool_expression1 DO

<statement>; Enunciados a ejecutarse mientras bool_expression1 es verdadera

Opcional

IF bool_expression2 THEN

EXIT; Si existen condiciones en las que usted desee salir del lazo anticipadamente, use otros enunciados, tal como la construcción IF...THEN, para condicionar un enunciado EXIT

END_IF;

END_WHILE;

Mientras bool_expression es verdadero, el controlador ejecuta sólo los enunciados dentro del lazo WHILE…DO.

Para detener el lazo antes de que las condiciones sean verdaderas, use un enunciado EXIT.

Enunciado 1Enunciado 2Enunciado 3Enunciado 4…¿Salir ?

Expresión BOOL

Verdadera

Falsa

Resto de la rutina

No

Enunciado 1Enunciado 2Enunciado 3Enunciado 4…

Expresión BOOL

Verdadera

Falsa

Resto de la rutina

28 Publicación 1756-PM007B-ES-P – Julio 2008

Page 29: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

Indicadores de estado aritméticos:

No afectados

Condiciones de fallo:

Ejemplo 1:

Ejemplo 2:

Ocurre un fallo mayor si Tipo de fallo Código de fallo

La construcción tiene un lazo excesivamente largo

6 1

Si usted desea esto Introduzca este texto estructurado

El lazo WHILE...DO evalúa sus condiciones primero. Si las condiciones son verdaderas, entonces el controlador ejecuta los enunciados dentro del lazo.

Esto es diferente del lazo REPEAT...UNTIL porque el lazo REPEAT...UNTIL ejecuta los enunciados en la construcción y luego determina si las condiciones son verdaderas antes de ejecutar los enunciados nuevamente. Los enunciados en un lazo REPEAT...UNTIL siempre se ejecutan por lo menos una vez. Es posible que nunca se ejecuten los enunciados en un lazo WHILE...DO.

pos := 0;

While ((pos <= 100) & structarray[pos].value <> targetvalue)) do

pos := pos + 2;

String_tag.DATA[pos] := SINT_array[pos];

end_while;

Si usted desea esto Introduzca este texto estructurado

Mover caracteres ASCII desde una matriz SINT a un tag de cadena. (En una matriz SINT, cada elemento retiene un carácter). Pare cuando llegue al retorno de carro.

1. Inicializar Element_number a 0.2. Cuente el número de elementos en SINT_array (la

matriz que contiene los caracteres ASCII) y almacene el resultado en SINT_array_size (tag DINT).

3. Si el carácter en SINT_array[element_number] = 13 (valor decimal del retorno de carro), entonces pare.

4. Establezca String_tag[element_number] = el carácter en SINT_array[element_number].

5. Añadir 1 a element_number. Esto permite al controlador verificar el siguiente carácter en SINT_array.

6. Establezca el miembro Length de String_tag = element_number. (Así registra el número de caracteres que hay hasta el momento en String_tag).

7. Si element_number = SINT_array_size, entonces pare. (Usted está al final de la matriz y ésta no contiene un retorno de carro).

8. Vaya a 3.

element_number := 0;

SIZE(SINT_array, 0, SINT_array_size);

While SINT_array[element_number] <> 13 do

String_tag.DATA[element_number] := SINT_array[element_number];

element_number := element_number + 1;

String_tag.LEN := element_number;

If element_number = SINT_array_size then

exit;

end_if;

end_while;

Publicación 1756-PM007B-ES-P – Julio 2008 29

Page 30: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

REPEAT…UNTIL Use el lazo REPEAT…UNTIL para continuar haciendo algo hasta que las condiciones sean verdaderas.

Operandos:

Texto estructurado

Descripción: La sintaxis es:

Operando Tipo Formato Introduzca

bool_ expression

BOOL TagExpresión

Expresión o tag BOOL que evalúa respecto a un valor BOOL (expresión BOOL)

REPEAT

<statement>;

UNTIL bool_expression

END_REPEAT;

IMPORTANTE Asegúrese de no repetir dentro del lazo demasiadas veces en un solo escán.

• El controlador no ejecuta ningún otro enunciado en la rutina mientras no se complete el lazo.

• Si el tiempo que se requiere para completar el lazo es mayor que el temporizador de control (watchdog) para la tarea, se produce un fallo mayor.

• Considere usar una construcción diferente, por ejemplo IF...THEN.

REPEAT

<statement>; Enunciados a ejecutarse mientras bool_expression1 es falsa

Opcional

IF bool_expression2 THEN

EXIT; Si existen condiciones en las que usted desee salir del lazo anticipadamente, use otros enunciados, tal como la construcción IF...THEN, para condicionar un enunciado EXIT.

END_IF;

UNTIL bool_expression1

END_REPEAT;

30 Publicación 1756-PM007B-ES-P – Julio 2008

Page 31: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

Estos diagramas muestran cómo se ejecuta un lazo REPEAT...UNTIL y cómo un enunciado EXIT sale del lazo anticipadamente.

Indicadores de estado aritméticos:

No afectados

Condiciones de fallo:

Ejemplo 1:

Mientras bool_expression sea falso, el controlador ejecuta sólo los enunciados dentro del lazo REPEAT…UNTIL.

Para detener el lazo antes de que las condiciones sean falsas, use un enunciado EXIT.

Enunciado 1Enunciado 2Enunciado 3Enunciado 4…

Expresión BOOL

Falsa

Verdadera

Resto de la rutinaExpresión BOOL

Falsa

Verdadera

Resto de la rutina

Enunciado 1Enunciado 2Enunciado 3Enunciado 4…¿Salir ?

No

Ocurre un fallo mayor si Tipo de fallo Código de fallo

La construcción tiene un lazo excesivamente largo.

6 1

Si usted desea esto Introduzca este texto estructurado

El lazo REPEAT...UNTIL ejecuta los enunciados en la construcción y luego determina si las condiciones son verdaderas antes de ejecutar los enunciados nuevamente.

Esto es diferente del lazo WHILE...DO porque el lazo WHILE...DO primero evalúa su condición. Si las condiciones son verdaderas, entonces el controlador ejecuta los enunciados dentro del lazo. Los enunciados en un lazo REPEAT...UNTIL siempre se ejecutan por lo menos una vez. Es posible que nunca se ejecuten los enunciados en un lazo WHILE...DO.

pos := -1;

REPEAT

pos := pos + 2;

UNTIL ((pos = 101) OR (structarray[pos].value = targetvalue))

end_repeat;

Publicación 1756-PM007B-ES-P – Julio 2008 31

Page 32: Texto Estructurado de Loscontroladores Logix5000

Programación de texto estructurado Capítulo 1

Ejemplo 2:

Si usted desea esto Introduzca este texto estructurado

Mover caracteres ASCII de una matriz SINT a un tag de cadena (en una matriz SINT, cada elemento retiene un carácter). Pare cuando llegue al retorno de carro.

1. Inicializar Element_number a 0.2. Cuente el número de elementos en SINT_array (la

matriz que contiene los caracteres ASCII) y almacene el resultado en SINT_array_size (tag DINT).

3. Establezca String_tag[element_number] = el carácter en SINT_array[element_number].

4. Añada 1 a element_number. Esto le permite al controlador verificar el siguiente carácter en SINT_array.

5. Establezca el miembro Length de String_tag = element_number. (Así registra el número de caracteres que hay hasta el momento en String_tag).

6. Si element_number = SINT_array_size, entonces pare (está al final de la matriz y ésta no contiene un retorno de carro).

7. Si el carácter en SINT_array[element_number] = 13 (valor decimal del retorno de carro), entonces pare.

De lo contrario, vaya a 3.

element_number := 0;

SIZE(SINT_array, 0, SINT_array_size);

Repeat

String_tag.DATA[element_number] := SINT_array[element_number];

element_number := element_number + 1;

String_tag.LEN := element_number;

If element_number = SINT_array_size then

exit;

end_if;

Until SINT_array[element_number] = 13

end_repeat;

32 Publicación 1756-PM007B-ES-P – Julio 2008

Page 33: Texto Estructurado de Loscontroladores Logix5000

Capítulo 1 Programación de texto estructurado

Comentarios Para facilitar la interpretación del texto estructurado, añada comentarios. • Los comentarios le permiten usar lenguaje común para describir cómo

funciona su texto estructurado. • Los comentarios no tienen ningún efecto en la ejecución del texto

estructurado.

Los comentarios de texto estructurado se descargan a la memoria del controlador y están disponibles para descarga. Para añadir comentarios a su texto estructurado:

Por ejemplo:

Para añadir un comentario Use uno de estos formatos

En una sola línea //comment

(*comment*)

/*comment*/

Al final de una línea de texto estructurado

Dentro de una línea de texto estructurado

(*comment*)

/*comment*/

Que abarque más de una línea (*start of comment . . . end of comment*)

/*start of comment . . . end of comment*/

Formato Ejemplo

//comentario Al comienzo de una línea//Check conveyor belt directionIF conveyor_direction THEN...

Al final de una líneaELSE //If conveyor isn’t moving, set alarm lightlight := 1;END_IF;

(*comentario*) Sugar.Inlet[:=]1;(*open the inlet*)

IF Sugar.Low (*low level LS*)& Sugar.High (*high level LS*)THEN...

(*Controla la velocidad de la bomba de recirculación. La velocidad depende de la temperatura del tanque*).IF tank.temp > 200 THEN...

/*comment*/ Sugar.Inlet:=0;/*close the inlet*/

IF bar_code=65 /*A*/ THEN...

/*Obtiene el número de elementos en la matriz Inventory y almacena el valor en el tag Inventory_Items*/SIZE(Inventory,0,Inventory_Items);

Publicación 1756-PM007B-ES-P – Julio 2008 33

Page 34: Texto Estructurado de Loscontroladores Logix5000
Page 35: Texto Estructurado de Loscontroladores Logix5000
Page 36: Texto Estructurado de Loscontroladores Logix5000

Publicación 1756-PM007B-ES-P – Julio 2008 36Reemplaza a la publicación 1756-PM007A-ES-P – Julio de 2007 Copyright © 2008 Rockwell Automation, Inc. Todos los derechos reservados. Impreso en los EE.UU.

Servicio de asistencia técnica de Rockwell Automation

Rockwell Automation ofrece información técnica en la Internet para proporcionarle asistencia al momento de utilizar sus productos. En http://support.rockwellautomation.com, puede encontrar manuales técnicos, una base de conocimientos con respuestas a preguntas frecuentes, notas técnicas y de aplicación, ejemplos de código y vínculos a Service Packs de software, así como un vínculo llamado MySupport que se puede personalizar para sacar el máximo provecho de todas estas herramientas.

Con el fin de brindarle un nivel adicional de asistencia técnica para la instalación, configuración y resolución de problemas por teléfono, ofrecemos los programas de asistencia técnica TechConnect Support. Si desea obtener más información, póngase en contacto con el representante o distribuidor local de Rockwell Automation, o visítenos en http://support.rockwellautomation.com.

Asistencia para la instalación

Si se le presenta un problema durante las 24 horas posteriores a la instalación, revise la información en este manual. También puede llamar a un número especial de asistencia técnica al cliente a fin de recibir ayuda inicial para poner en servicio el producto:

Devolución de productos nuevos

Rockwell Automation prueba todos sus productos para asegurarse de que funcionan correctamente al enviarse desde el punto de fabricación. No obstante, si el producto no funciona y es necesario devolverlo, siga estos procedimientos:

En los Estados Unidos

1.440.646.3434Lunes a viernes de las 08:00 a las 17:00, hora oficial del Este de EE.UU.

Fuera de Estados Unidos

Póngase en contacto con el representante local de Rockwell Automation para cualquier consulta relacionada con asistencia técnica.

En los Estados Unidos

Póngase en contacto con el distribuidor. Debe proporcionar al distribuidor un número de caso de asistencia técnica (llame al número de teléfono indicado anteriormente para obtenerlo) a fin de completar el proceso de devolución.

Fuera de Estados Unidos

Póngase en contacto con el representante local de Rockwell Automation para obtener información sobre el procedimiento de devolución.