Está en la página 1de 36

Texto estructurado de los controladores Logix5000

Manual de programacin
(Nmeros de catlogo 1756 ControlLogix,

1769 CompactLogix, 1789 SoftLogix, 1794 FlexLogix, PowerFlex 700S con DriveLogix)

Informacin importante para el usuario


Los equipos de estado slido tienen caractersticas de funcionamiento distintas de las de los equipos electromecnicos. La publicacin Safety Guidelines for the Application, Installation and Maintenance of Solid State Controls (publicacin SGI-1.1 disponible en su oficina local de ventas de Rockwell Automation o en lnea en http://literature.rockwellautomation.com) describe algunas diferencias importantes entre los equipos de estado slido y los dispositivos electromecnicos de lgica cableada. Debido a esta diferencia y tambin a la gran variedad de usos de los equipos de estado slido, toda persona encargada de la aplicacin de estos equipos debe asegurarse de la idoneidad de cada una de las aplicaciones concebidas con ellos. En ningn caso Rockwell Automation, Inc. ser responsable ni asumir ninguna obligacin por daos indirectos o consecuentes que resulten del uso o de la aplicacin 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 instalacin en particular, Rockwell Automation, Inc. no puede asumir responsabilidad u obligacin alguna por el uso de estos equipos basado en ejemplos y diagramas. Rockwell Automation, Inc. no asume ninguna obligacin de patente con respecto al uso de la informacin, los circuitos, los equipos o el software descritos en este manual. Se prohibe la reproduccin total o parcial del contenido de este manual sin la autorizacin por escrito de Rockwell Automation, Inc. Este manual contiene notas de seguridad en todas las situaciones en que se estimen necesarias.
ADVERTENCIA

Identifica informacin sobre prcticas o circunstancias que pueden provocar una explosin en un ambiente peligroso, lo que podra causar lesiones personales o la muerte, daos materiales o prdidas econmicas.

IMPORTANTE ATENCIN

Identifica informacin importante para la correcta aplicacin y comprensin del producto. Identifica informacin sobre prcticas o circunstancias que podran provocar lesiones personales o la muerte, daos materiales o prdidas econmicas. Los mensajes de Atencin le ayudan a identificar y evitar un peligro, y a reconocer las consecuencias.

PELIGRO DE 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.

PELIGRO DE 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 podran estar a temperaturas peligrosas.

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.

Contenido
Prefacio
Propsito de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Cmo usar ese manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Captulo 1 Programacin de texto estructurado


Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Asignaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Especifique una asignacin no retentiva. . . . . . . . . . . . . . . . . . . . . . 9 Asigne un carcter ASCII a una cadena.. . . . . . . . . . . . . . . . . . . . . 10 Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Use operadores y funciones aritmticas . . . . . . . . . . . . . . . . . . . . . 12 Use operadores con relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Use operadores lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Use operadores bit a bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Determine el orden de ejecucin . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Construcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Algunas palabras clave estn reservadas para uso futuro. . . . . . . . 18 IF...THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 CASE...OF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 FORDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 WHILEDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 REPEATUNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Servicio de asistencia tcnica de Rockwell Automation . . . . . . . . . . . . 36 Asistencia para la instalacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Devolucin de productos nuevos . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Publicacin 1756-PM007B-ES-P Julio 2008

Contenido

Publicacin 1756-PM007B-ES-P Julio 2008

Prefacio

Propsito de este manual

Este manual muestra cmo programar los controladores Logix5000 con el lenguaje de programacin 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 programacin de procedimientos comunes de los controladores Logix5000, publicacin 1756-PM001. El trmino controlador Logix5000 se refiere a cualquier controlador basado en el sistema de operacin Logix5000, tales como: controladores CompactLogix controladores ControlLogix controladores DriveLogix controladores FlexLogix controladores SoftLogix5800

Cmo usar ese manual


El texto en cursiva Identifica

Algunas secciones tienen un formato distinto al resto del texto.


Por ejemplo Haga clic con el botn derecho del mouse en User-Defined Haga clic con el botn derecho del mouse en name_of_program Presione [Enter]. Significa Haga clic con el botn derecho del mouse en el tem que tiene el nombre User-Defined. Usted debe identificar el programa especfico en su aplicacin. Normalmente es un nombre o una variable que usted ha definido. Presione la tecla Enter.

el nombre de un tem que usted ve en la pantalla o en un ejemplo informacin que usted debe proporcionar segn su aplicacin (una variable) una tecla del teclado

courier

encerrado en corchetes

Publicacin 1756-PM007B-ES-P Julio 2008

Prefacio

Notas:

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo

Programacin de texto estructurado

Introduccin

El texto estructurado es un lenguaje de programacin textual que usa enunciados para definir lo que se va a ejecutar. El texto estructurado trata indistintamente las maysculas y las minsculas. Use tabulaciones y retornos de carro (nuevas lneas) para facilitar la lectura del texto estructurado. stos no tienen ningn efecto en la ejecucin del texto estructurado. El texto estructurado trata indistintamente las maysculas y las minsculas. El texto estructurado puede contener estos componentes:
Definicin Use un enunciado de asignacin para asignar valores a los tags. El operador := es el operador de asignacin. Termine la asignacin con un signo de punto y coma ;. Ejemplos tag := expression;

Trmino Asignacin (vea la pgina 8)

Expresin Una expresin es parte de una asignacin completa o de un enunciado (vea la pgina 10) de construccin. Una expresin evala segn un nmero (expresin numrica) o segn un estado de verdadero o falso (expresin BOOL). Una expresin contiene: Tags rea con nombre de la memoria, donde se value1 almacenan los datos (BOOL, SINT,INT,DINT, REAL, de cadena) Un valor constante Un smbolo o mnemnico que especifica una operacin dentro de una expresin Cuando se ejecuta, una funcin produce un valor. Use parntesis para contener el operando de una funcin. Aunque su sintaxis es similar, las funciones se diferencian de las instrucciones porque las funciones slo pueden usarse en expresiones. Las instrucciones no pueden usarse en expresiones. 4 tag1 + tag2 tag1 >= value1 function(tag1)

Inmediatos Operadores Funciones

instruction(); Instruccin Una instruccin es un enunciado autnomo. (vea la pgina 16) Una instruccin usa parntesis para contener sus operandos. instruction(operand); Segn la instruccin, puede haber, cero, uno o mltiples operandos. Cuando se ejecuta, una instruccin produce uno o ms valores que son instruction(operand1, operand2,operand3); parte de una estructura de datos. Termine la instruccin 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 slo pueden usarse en expresiones.

Publicacin 1756-PM007B-ES-P Julio 2008

Programacin de texto estructurado

Captulo 1

Trmino

Definicin

Ejemplos IF...THEN CASE FOR...DO WHILE...DO REPEAT...UNTIL EXIT //comentario (*inicio de comentario . . . fin de comentario*) /*inicio de comentario . . . fin de comentario*/

Construccin Un enunciado condicional usado para activar el cdigo de texto (vea la pgina 18) estructurado (por ej., otros enunciados). Termine la construccin con un signo de punto y coma ;.

Comentario Texto que explica o aclara lo que hace una seccin del texto (vea la pgina 33) estructurado. Use comentarios para facilitar la interpretacin del texto estructurado. Los comentarios no tienen ningn efecto en la ejecucin del texto estructurado. Los comentarios pueden aparecer en cualquier lugar del texto estructurado.

Asignaciones

Use una asignacin para cambiar el valor almacenado dentro de un tag. Una asignacin tiene esta sintaxis: tag := expression ; donde:
Componente tag := expresin Descripcin Representa el tag que est obteniendo el nuevo valor. El tag debe ser de tipo BOOL, SINT, INT, DINT o REAL. Es el smbolo de asignacin. Representa el nuevo valor que se va a asigna al tag. Si el tag es de este tipo de datos BOOL SINT INT DINT REAL ; Termina la asignacin. Use este tipo de expresin Expresin BOOL Expresin numrica

El tag retiene el valor asignado hasta que otra asignacin cambia el valor. La expresin puede ser simple, como un valor inmediato u otro nombre de tag, o la expresin puede ser compleja e incluir varios operadores y/o funciones. SUGERENCIA Los datos del mdulo de E/S se actualizan de manera asncrona a la ejecucin de la lgica. Si usted hace referencia a una entrada mltiples veces en la lgica, la entrada podra cambiar de estado entre las distintas referencias. Si necesita que la entrada tenga el mismo estado en cada referencia, almacene en el bfer el valor de entrada y haga referencia a dicho tag en el bfer.

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Especifique una asignacin no retentiva.


La asignacin no retentiva es diferente de la asignacin regular descrita anteriormente, porque el tag en una asignacin 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 automtico (esto slo se aplica si usted incorpora la asignacin en la accin del paso, o si usa la accin para llamar a una rutina de texto estructurado mediante una instruccin JSR). Una asignacin no retentiva tiene esta sintaxis: tag [:=] expression ; donde:
Componente tag [:=] expression Descripcin Representa el tag que est obteniendo el nuevo valor. El tag debe ser de tipo BOOL, SINT, INT, DINT o REAL. Es el smbolo de asignacin no retentiva. Representa el nuevo valor que se va a asignar al tag. Si el tag es de este tipo de datos BOOL SINT INT DINT REAL ; Termina la asignacin. Use este tipo de expresin Expresin BOOL Expresin numrica

Publicacin 1756-PM007B-ES-P Julio 2008

Programacin de texto estructurado

Captulo 1

Asigne un carcter ASCII a una cadena.


Use el operador de asignacin para asignar un carcter ASCII a un elemento del miembro DATA de un tag de cadena. Para asignar un carcter, especifique el valor del carcter o el nombre del tag, el miembro DATA y el elemento del carcter.
Esto es correcto string1.DATA[0]:= 65; string1.DATA[0]:= string2.DATA[0]; Esto no es correcto string1.DATA[0] := A; string1 := string2;

Para aadir o insertar una cadena de caracteres a un tag de cadena, use cualquiera de estas instrucciones de cadena ASCII.
Para aadir caracteres al final de una cadena insertar caracteres dentro de una cadena Use esta instruccin CONCAT INSERT

Expresiones

Una expresin es el nombre de un tag, una ecuacin o una comparacin. Para escribir una expresin, use uno de estos elementos. Nombre de tag que almacene el valor (variable) Nmero que usted introduce directamente en una expresin (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 combinacin de maysculas y minsculas. Por ejemplo, estas tres variaciones de AND son aceptables: AND, And, and. Para requisitos ms complejos, use parntesis para agrupar expresiones dentro de expresiones. Esto hace que toda la expresin sea ms fcil de leer y asegura que la expresin se ejecute en la secuencia deseada.
IMPORTANTE

Usted puede aadir comentarios de usuario en lnea. Por lo tanto, la conmutacin de lenguaje local no se aplica a su lenguaje de programacin.

10

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

En texto estructurado usted usa dos tipos de expresiones: Expresin BOOL: Una expresin que produce ya sea el valor BOOL de 1 (verdadero) o 0 (falso). Una expresin Bool usa tags bool, operadores con relaciones y operadores lgicos para comparar valores o verificar si las condiciones son verdaderas o falsas. Por ejemplo, tag1>65. Una expresin Bool simple puede ser un tag BOOL sencillo. Normalmente usted usa expresiones BOOL para condicionar la ejecucin de otra lgica. Expresin numrica: Una expresin que calcula un valor entero o de coma flotante (punto flotante). Una expresin numrica usa operadores aritmticos, funciones aritmticas y operadores bit a bit. Por ejemplo, tag1+5. A menudo usted anida una expresin numrica dentro de una expresin BOOL. Por ejemplo, (tag1+5)>65. Use la siguiente tabla para seleccionar operadores para sus expresiones:
Si usted desea Calcular un valor aritmtico Comparar dos valores o cadenas Verificar si las condiciones son verdaderas o falsas Comparar los bits dentro de valores Entonces Use operadores y funciones aritmticas en la pgina 12. Use operadores con relaciones en la pgina 13. Use operadores lgicos en la pgina 14. Use operadores bit a bit en la pgina 15.

Publicacin 1756-PM007B-ES-P Julio 2008

11

Programacin de texto estructurado

Captulo 1

Use operadores y funciones aritmticas


Usted puede combinar mltiples operadores y funciones en expresiones aritmticas. Los operadores aritmticos calculan nuevos valores.
Para Sumar Restar/cambiar signo Multiplicar Exponente (x a la potencia de y) Dividir Modulo-dividir Use este operador + * ** / MOD Tipo ptimo de datos DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL DINT, REAL

Las funciones aritmticas realizan operaciones matemticas. Especifique una constante, un tag no booleano o una expresin para la funcin.
Para obtener Valor absoluto Arco coseno Arco seno Arco tangente Coseno Radianes a grados Logaritmo natural Logaritmo base 10 Grados a radianes Seno Raz cuadrada Tangente Truncar Use esta funcin ABS (numeric_expression) ACOS (numeric_expression) ASIN (numeric_expression) ATAN (numeric_expression) COS (numeric_expression) DEG (numeric_expression) LN (numeric_expression) LOG (numeric_expression) RAD (numeric_expression) SIN (numeric_expression) SQRT (numeric_expression) TAN (numeric_expression) TRUNC (numeric_expression) Tipo ptimo de datos DINT, REAL REAL REAL REAL REAL DINT, REAL REAL REAL DINT, REAL REAL DINT, REAL REAL DINT, REAL

12

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Por ejemplo:
Use este formato value1 operador value2 Ejemplo Para esta situacin Si gain_4 y gain_4_adj son tags DINT y su especificacin dice: Aadir 15 a gain_4 y almacenar el resultado en gain_4_adj. Si alarm y high_alarm son valores DINT y su especificacin dice: Cambiar signo de high_alarm y almacenar el resultado en alarm. Si overtravel y overtravel_POS son tags DINT y su especificacin dice: Calcular el valor absoluto de overtravel y almacenar el resultado en overtravel_POS. Si adjustment y position son tags DINT y sensor1 y sensor2 son tags REAL y su especificacin dice: Encontrar el valor absoluto del sensor1 y sensor2 promedio, aadir el ajuste y guardar el resultado en position. Usted escribira gain_4_adj := gain_4+15;

operador value1

alarm:= -high_alarm;

funcin(numeric_expression)

overtravel_POS := ABS(overtravel);

value1 operador (funcin((value2+value3)/2)

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

Use operadores con relaciones


Los operadores con relaciones comparan dos valores o cadenas para proporcionar un resultado verdadero o falso. El resultado de una operacin con relaciones es un valor BOOL.
Si la comparacin es Verdadera Falsa El resultado es 1 0

Use estos operadores con relaciones.


Para esta comparacin: Igual Menor que Menor o igual que Mayor que Mayor o igual que Diferente Use este operador: = < <= > >= <> Tipo ptimo de datos: DINT, REAL, string DINT, REAL, string DINT, REAL, string DINT, REAL, string DINT, REAL, string DINT, REAL, string

Publicacin 1756-PM007B-ES-P Julio 2008

13

Programacin de texto estructurado

Captulo 1

Por ejemplo:
Use este formato value1 operator value2 stringtag1 operator stringtag2 EJEMPLO Para esta situacin Usted escribira Si temp es un tag DINT y su especificacin dice: IF temp<100 THEN... Si temp es menor que 100 entonces Si bar_code y dest son tags de cadena y su especificacin dice: Si bar_code es igual a dest entonces Si bar_code es un tag de cadena y su especificacin dice: Si bar_code.DATA[0] es igual a A entonces IF bar_code=dest THEN...

char1 operator char2 Para introducir un carcter ASCII directamente en la expresin, introduzca el valor decimal del carcter. bool_tag := bool_expressions

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

Si count y length son tags DINT, done es un tag BOOL y su especificacin dice Si el conteo es mayor o igual que la longitud, ya termin el conteo.

done := (count >= length);

Cmo se evalan 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 telefnico, el orden de las cadenas determina cul es mayor.
Caracteres ASCII 1ab
m e n o r m a y o r

Cdigos hexadecimales $31$61$62 $31$62 $41 $41$42 $42 $61 $61$62 a>B AB < B

1b A AB B a ab

Las cadenas son iguales si sus caracteres coinciden. Los caracteres distinguen entre minsculas y maysculas. La A mayscula ($41) no es igual a la a minscula ($61).

Use operadores lgicos


Los operadores lgicos le permiten verificar si mltiples condiciones son verdaderas o falsas. El resultado de una operacin lgica es un valor BOOL.
Si la comparacin es Verdadera Falsa
14

El resultado es 1 0
Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Use estos operadores lgicos:


Para obtener Y lgico O lgico O lgico exclusivo Complemento lgico Use este operador &, AND OR XOR NOT Tipo de datos BOOL BOOL BOOL BOOL

Por ejemplo:
Use este formato
BOOLtag

EJEMPLO Para esta situacin Si photoeye es un tag BOOL y su especificacin dice: Si photoeye_1 est activado, entonces Si photoeye es un tag BOOL y su especificacin dice: Si photoeye est desactivado, entonces Si photoeye es un tag BOOL, temp es un tag DIN y su especificacin dice: Si photoeye est activado y la temp es menor que 100 entonces Si photoeye es un tag BOOL, temp es un tag DIN y su especificacin dice: Si photoeye est activado o la temp es menor que 100 entonces Si photoeye1 y photoeye2 son tags BOOL y su especificacin dice: Si: photoeye1 est activado mientras que photoeye2 est desactivado o photoeye1 est desactivado mientras que photoeye2 est activado entonces Si photoeye1 y photoeye2 son tags BOOL, open es un tag BOOL y su especificacin dice: Si photoeye1 y photoeye2 estn activados, establezca open en verdadero. Usted escribira IF photoeye THEN...

NOT BOOLtag

IF NOT photoeye THEN...

expression1 & expression2

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

expression1 OR expression2

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

expression1 XOR expression2

IF photoeye1 XOR photoeye2 THEN...

BOOLtag := expression1 & expression2

open := photoeye1 & photoeye2;

Use operadores bit a bit


Los operadores bit a bit manipulan los bits dentro de un valor basado en dos valores.
Para obtener Funcin Y Funcin O Funcin O exclusivo Complemento de funcin Use este operador &, AND OR XOR NOT Tipo ptimo de datos DINT DINT DINT DINT

Publicacin 1756-PM007B-ES-P Julio 2008

15

Programacin de texto estructurado

Captulo 1

Por ejemplo:
Use este formato value1 operator value2 Ejemplo Para esta situacin Si input1, input2 y result1 son tags DINT y su especificacin dice: Calcule el resultado de la funcin de input1 y input2. Guarde el resultado en result1. Usted escribira result1 := input1 AND input2;

Determine el orden de ejecucin


Las operaciones que usted escribe en una expresin 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 expresin contiene mltiples operadores o funciones, agrupe las condiciones en parntesis ( ). Esto asegura el orden correcto de ejecucin y facilita la lectura de la expresin.
Orden 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Operacin () funcin () ** - (cambiar signo) NOT *, /, MOD +, (restar) <, <=, >, >= =, <> &, AND XOR OR

Instrucciones

Los enunciados de texto estructurado tambin pueden ser instrucciones. Una instruccin de texto estructurado se ejecuta cada vez que se escanea. Una instruccin de texto estructurado dentro de una construccin se ejecuta cada vez que las condiciones de la construccin son verdaderas. Si las condiciones de la construccin son falsas, los enunciados dentro de la construccin no se escanean. No existe una condicin de rengln o transicin de estado que active la ejecucin. Esto es diferente de las instruccin de bloque de funciones que usan EnableIn para activar la ejecucin. Las instrucciones de texto estructurado se ejecutan como si EnableIn siempre estuviera establecido.

16

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Esto tambin es diferente de las instrucciones de lgica de escalera que usan condicin de entrada de rengln para activar la ejecucin. Algunas instrucciones de lgica de escalera de rels slo se ejecutan cuando la condicin de entrada de rengln cambia de falso a verdadero. stas son instrucciones de lgica de escalera de rels transicionales. En texto estructurado, las instrucciones se ejecutan cada vez que son escaneadas, a menos que usted condicione previamente la ejecucin de la instruccin de texto estructurado. Por ejemplo, la instruccin ABL es una instruccin transicional en lgica de escalera de rels. En este ejemplo, la instruccin ABL slo se ejecuta en un escn cuando tag_xic cambia de borrado a establecido. La instruccin 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 instruccin ABL se ejecuta en cada escn en que tag_xic se establece, no slo cuando tag_xic cambia de borrado a establecido. Si desea que la instruccin ABL se ejecute slo cuando tag_xic cambia de borrado a establecido, tiene que condicionar la instruccin de texto estructurado. Use un impulso para activar la ejecucin.
osri_1.InputBit := tag_xic; OSRI(osri_1); IF (osri_1.OutputBit) THEN ABL(0,serial_control); END_IF;

Publicacin 1756-PM007B-ES-P Julio 2008

17

Programacin de texto estructurado

Captulo 1

Construcciones

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


Si usted desea Hacer algo si o cuando ocurra una condicin especfica Seleccionar qu hacer en base a un valor numrico Hacer algo un nmero especfico de veces antes de hacer otra cosa Continuar haciendo algo siempre y cuando ciertas condiciones sean verdaderas Seguir haciendo algo hasta que una condicin sea verdadera Use esta construccin IF...THEN CASE...OF FOR...DO WHILE...DO REPEAT...UNTIL

Algunas palabras clave estn reservadas para uso futuro


Estas construcciones no estn disponibles: GOTO REPEAT El software RSLogix 5000 no le permite usarlas.

18

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

IF...THEN
Operandos:

Use IFTHEN para hacer algo si o cuando ocurra una condicin especfica.

Texto estructurado
IF bool_expression THEN <enunciado>; END_IF;

Operando bool_ expression

Tipo BOOL

Formato Tag Expresin

Introduzca Expresin o tag BOOL que evala respecto a un valor BOOL (expresin BOOL)

Descripcin: La sintaxis es:


IF bool_expression1 THEN <enunciado >;

. . .
Opcional

Enunciados a ejecutarse cuando bool_expression1 es verdadera

ELSIF bool_expression2 THEN <enunciado>;

. . .
Opcional

Enunciados a ejecutarse cuando bool_expression2 es verdadera

ELSE <enunciado>;

. . .
END_IF; Para usar ELSIF o ELSE, siga estas pautas.

Enunciados a ejecutarse cuando ambas expresiones son falsas

1. Para seleccionar entre varios posibles grupos de enunciados, aada uno o ms 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, aada un enunciado ELSE.

Publicacin 1756-PM007B-ES-P Julio 2008

19

Programacin de texto estructurado

Captulo 1

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


Si usted desea Hacer algo si o cuando las condiciones son verdaderas Y No hacer nada si las condiciones son falsas Hacer algo distinto si las condiciones son falsas Seleccionar entre enunciados alternativos (o grupos de enunciados) en base a condiciones de entrada No hacer nada si las condiciones son falsas Asignar enunciados predeterminados si todas las condiciones son falsas Entonces use esta construccin IFTHEN IFTHENESLE IFTHENELSIF IFTHENELSIFELSE

Indicadores de estado aritmticos: No afectados Condiciones de fallo: Ninguno Ejemplo 1: IFTHEN


Si usted desea esto Si rechaza > 3 entonces transportador = desactivado (0) alarma = activada (1) Introduzca este texto estructurado IF rejects > 3 THEN conveyor := 0; alarm := 1; END_IF;

Ejemplo 2: IFTHENELSE
Si usted desea esto Si el contacto de direccin del transportador = avance (1) entonces luz = apagada De lo contrario luz = encendida ELSE light [:=] 1; END_IF; Introduzca este texto estructurado IF conveyor_direction THEN light := 0;

[:=] 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 automtico (esto se aplica slo si usted incorpora la asignacin en la accin del paso, o si usa la accin para llamar a una rutina de texto estructurado mediante una instruccin JSR).

20

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Ejemplo 3: IFTHENELSIF
Si usted desea esto Introduzca este texto estructurado

Si el interruptor de final de carrera de nivel bajo de azcar IF Sugar.Low & Sugar.High THEN = baja (activado) y el interruptor de final de carrera de nivel alto de azcar = no alta (activado) entonces vlvula de entrada = abierta (activada) Hasta que el interruptor de final de carrera de nivel alto de azcar = alta (desactivado) Sugar.Inlet [:=] 1; ELSIF NOT(Sugar.High) THEN Sugar.Inlet := 0; END_IF;

[:=] 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 automtico (esto se aplica slo si usted incorpora la asignacin en la accin del paso, o si usa la accin para llamar a una rutina de texto estructurado mediante una instruccin JSR).

Ejemplo 4: IFTHENELSIFELSE
Si usted desea esto Si la temperatura del tanque > 100 entonces bomba = lenta Si la temperatura del tanque > 200 entonces bomba = rpida de lo contrario bomba = desactivada ELSE pump.fast :=0; pump.slow :=0; pump.off :=1; END_IF; Introduzca este texto estructurado IF tank.temp > 200 THEN pump.fast :=1; pump.slow :=0; pump.off :=0; ELSIF tank.temp > 100 THEN pump.fast :=0; pump.slow :=1; pump.off :=0;

Publicacin 1756-PM007B-ES-P Julio 2008

21

Programacin de texto estructurado

Captulo 1

CASE...OF
Operandos:

Use CASE para seleccionar qu hacer en base a un valor numrico.

Texto estructurado
CASE numeric_expression OF selector1: statement; selectorN: statement; ELSE statement; END_CASE; selector

Operando
numeric_ expression

Tipo SINT INT DINT REAL SINT INT DINT REAL

Formato Tag Expresin

Introduzca Tag o expresin que evala a un nmero (expresin numrica)

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 ms probable que est dentro de un rango de valores que una coincidencia exacta de un valor especfico.

Descripcin: La sintaxis es:


CASE numeric_expression OF selector1 : <enunciado>; . . . <enunciado>;
Enunciados a ejecutarse cuando numeric_expression = selector1

Especifique todos los valores de selector alternativos (rutas) que necesite

selector2 :

. . .
selector3 : <enunciado>;

Enunciados a ejecutarse cuando numeric_expression = selector2

. . .
ELSE <enunciado>;
opcional

Enunciados a ejecutarse cuando numeric_expression = selector3

. . .
END_CASE;

Enunciados a ejecutarse cuando numeric_expression de cualquier selector

22

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

La sintaxis para introducir los valores de selector es:


Cuando el selector es Un valor Mltiples y diferentes valores Un rango de valores Introduzca valor: enunciado value1, value2, valueN : <enunciado> Use una coma (,) para separar cada valor. value1...valueN : <enunciado> Use dos puntos (..) para identificar el rango. Valores distintos ms un rango de valores valuea, valueb, value1...valueN : <enunciado>

La construccin CASE es similar a un enunciado de interruptor en los lenguajes de programacin C o C++. Sin embargo, con la construccin CASE el controlador ejecuta slo los enunciados asociados con el primer valor de selector coincidente. La ejecucin siempre se interrumpe despus de los enunciados de dicho selector y va al enunciado END_CASE.

Indicadores de estado aritmticos: No afectados Condiciones de fallo: Ninguno Ejemplo

Publicacin 1756-PM007B-ES-P Julio 2008

23

Programacin de texto estructurado

Captulo 1

Ejemplo
Si usted desea esto Si el nmero de receta = 1 entonces Ingrediente A salida 1 = abierto (1) Ingrediente B salida 4 = abierto (1) Si el nmero de receta = 2 3 entonces Ingrediente A salida 4 = abierto (1) Ingrediente B salida 2 = abierto (1) Si el nmero de receta = 4, 5, 6 7 entonces Ingrediente A salida 4 = abierto (1) Ingrediente B salida 2 = abierto (1) Si el nmero de receta = 8, 11, 12 13 entonces Ingrediente A salida 1 = abierto (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; 8,11..13 Ingredient_A.Outlet_1 :=1; Ingredient_B.Outlet_4 :=1; 4..7: Ingredient_A.Outlet_4 :=1; Ingredient_B.Outlet_2 :=1; 2,3:

Introduzca este texto estructurado


CASE recipe_number OF 1: Ingredient_A.Outlet_1 :=1; Ingredient_B.Outlet_4 :=1; Ingredient_A.Outlet_4 :=1; Ingredient_B.Outlet_2 :=1;

[:=] le indica al controlador que tambin 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 automtico (esto se aplica slo si usted incorpora la asignacin en la accin del paso, o si usa la accin para llamar a una rutina de texto estructurado mediante una instruccin JSR).

24

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

FORDO
Operandos:

Use el lazo FORDO para hacer algo un nmero especfico de veces, antes de hacer otra cosa.

Texto estructurado
FOR count:= initial_value TO final_value BY increment DO <statement>; END_FOR;

Operando count

Tipo SINT INT DINT SINT INT DINT SINT INT DINT SINT INT DINT

Formato Tag

Descripcin Tag para almacenar la posicin de conteo a medida que se ejecuta FORDO Debe evaluar con respecto a un nmero. Especifica el valor inicial para el conteo. Especifica el valor final para el conteo, el cual determina cundo salir del lazo. (opcional) Valor a incrementar el conteo cada vez a travs del lazo Si usted no especifica un incremento, el conteo se incrementa en un valor de 1.

initial_ value

Tag Expresin Inmediato Tag Expresin Inmediato Tag Expresin Inmediato

final_ value

increment

IMPORTANTE

Asegrese de no iterar dentro del lazo demasiadas veces en un solo escn. El controlador no ejecuta ningn 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 construccin diferente, por ejemplo IF...THEN.

Descripcin: La sintaxis es:


FOR count := initial_value TO final_value
opcional {

BY increment DO <enunciado>; IF bool_expression THEN EXIT; END_IF;

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

opcional

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

END_FOR;

Publicacin 1756-PM007B-ES-P Julio 2008

25

Programacin de texto estructurado

Captulo 1

Estos diagramas muestran cmo se ejecuta un lazo FOR...DO y cmo un enunciado EXIT sale del lazo anticipadamente.
Efectuado x nmero de veces? No enunciado 1 enunciado 2 enunciado 3 enunciado 4 Resto de la rutina S Efectuado x nmero de veces? no enunciado 1 enunciado 2 enunciado 3 enunciado 4 Salir ? No Resto de la rutina S

El lazo FORDO se ejecuta un nmero especfico de veces.

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

Indicadores de estado aritmticos: No afectados Condiciones de fallo:


Ocurre un fallo mayor si La construccin tiene un lazo excesivamente largo Tipo de fallo 6 Cdigo de fallo 1

Ejemplo 1:
Si usted desea esto 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. Aadir 1 a subscript. 4. Si subscript es con respecto a 31, repita 2 y 3. De lo contrario, parar. Introduzca este texto estructurado For subscript:=0 to 31 by 1 do array[subscript] := 0; End_for;

26

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Ejemplo 2:
Si usted desea esto Un tipo de datos definido por el usuario (estructura)almacena esta informacin acerca de un tem en su inventario. ID de cdigo 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 especfico (use su cdigo de barras) y determine la cantidad que hay en inventario. 1. Obtenga el tamao (nmero 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 cdigo 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.

Introduzca este texto estructurado 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;

El cdigo de barras es un tag de cadena que almacena el cdigo de barras del tem que usted est buscando. Por ejemplo, cuando position = 5, compare Barcode con Inventory[5].ID. 4. Aadir 1 a position. 5. Si position es con respecto a (Inventory_Items -1), repita 3 y 4. Puesto que los nmeros de elemento comienzan en 0, el ltimo elemento es 1 menos el nmero de elementos en la matriz. De lo contrario, parar.

Publicacin 1756-PM007B-ES-P Julio 2008

27

Programacin de texto estructurado

Captulo 1

WHILEDO
Operandos:

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

Texto estructurado
WHILE bool_expression DO <statement>; END_WHILE;

Operando bool_ expression

Tipo BOOL

Formato Tag Expresin

Introduzca Expresin o tag BOOL que evala respecto a un valor BOOL

IMPORTANTE

Asegrese de no iterar dentro del lazo demasiadas veces en un solo escn. El controlador no ejecuta ningn 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 construccin diferente, por ejemplo IF...THEN.

Descripcin: La sintaxis es:


WHILE bool_expression1 DO <statement>; IF bool_expression2 THEN
Opcional Enunciados a ejecutarse mientras bool_expression1 es verdadera

EXIT; END_IF;

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

END_WHILE; Estos diagramas muestran cmo se ejecuta un lazo WHILE...DO y cmo un enunciado EXIT sale del lazo anticipadamente.
Expresin BOOL Verdadera Enunciado 1 Enunciado 2 Enunciado 3 Enunciado 4 Resto de la rutina Falsa Expresin BOOL Verdadera Enunciado 1 Enunciado 2 Enunciado 3 Enunciado 4 Salir ? No Resto de la rutina Falsa

Mientras bool_expression es verdadero, el controlador ejecuta slo los enunciados dentro del lazo WHILEDO.

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

28

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Indicadores de estado aritmticos: No afectados Condiciones de fallo:


Ocurre un fallo mayor si La construccin tiene un lazo excesivamente largo Tipo de fallo 6 Cdigo de fallo 1

Ejemplo 1:
Si usted desea esto El lazo WHILE...DO evala 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 construccin 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. Introduzca este texto estructurado pos := 0; While ((pos <= 100) & structarray[pos].value <> targetvalue)) do pos := pos + 2; String_tag.DATA[pos] := SINT_array[pos]; end_while;

Ejemplo 2:
Si usted desea esto Mover caracteres ASCII desde una matriz SINT a un tag de cadena. (En una matriz SINT, cada elemento retiene un carcter). Pare cuando llegue al retorno de carro. 1. Inicializar Element_number a 0. 2. Cuente el nmero 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 carcter en SINT_array[element_number] = 13 (valor decimal del retorno de carro), entonces pare. 4. Establezca String_tag[element_number] = el carcter en SINT_array[element_number]. 5. Aadir 1 a element_number. Esto permite al controlador verificar el siguiente carcter en SINT_array. 6. Establezca el miembro Length de String_tag = element_number. (As registra el nmero 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. Introduzca este texto estructurado 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;

Publicacin 1756-PM007B-ES-P Julio 2008

29

Programacin de texto estructurado

Captulo 1

REPEATUNTIL
Operandos:

Use el lazo REPEATUNTIL para continuar haciendo algo hasta que las condiciones sean verdaderas.

Texto estructurado
REPEAT <statement>; UNTIL bool_expression END_REPEAT;

Operando bool_ expression

Tipo BOOL

Formato Tag Expresin

Introduzca Expresin o tag BOOL que evala respecto a un valor BOOL (expresin BOOL)

IMPORTANTE

Asegrese de no repetir dentro del lazo demasiadas veces en un solo escn. El controlador no ejecuta ningn 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 construccin diferente, por ejemplo IF...THEN.

Descripcin: La sintaxis es:


REPEAT <statement>; IF bool_expression2 THEN
Opcional Enunciados a ejecutarse mientras bool_expression1 es falsa

EXIT; END_IF;

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

UNTIL bool_expression1 END_REPEAT;

30

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Estos diagramas muestran cmo se ejecuta un lazo REPEAT...UNTIL y cmo un enunciado EXIT sale del lazo anticipadamente.
Enunciado 1 Enunciado 2 Enunciado 3 Enunciado 4 Expresin BOOL Falsa Resto de la rutina Falsa Resto de la rutina Enunciado 1 Enunciado 2 Enunciado 3 Enunciado 4 Salir ? No Expresin BOOL Verdadera

Verdadera

Mientras bool_expression sea falso, el controlador ejecuta slo los enunciados dentro del lazo REPEATUNTIL.

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

Indicadores de estado aritmticos: No afectados Condiciones de fallo:


Ocurre un fallo mayor si La construccin tiene un lazo excesivamente largo. Tipo de fallo 6 Cdigo de fallo 1

Ejemplo 1:
Si usted desea esto El lazo REPEAT...UNTIL ejecuta los enunciados en la construccin 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 evala su condicin. 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. Introduzca este texto estructurado pos := -1; REPEAT pos := pos + 2; UNTIL ((pos = 101) OR (structarray[pos].value = targetvalue)) end_repeat;

Publicacin 1756-PM007B-ES-P Julio 2008

31

Programacin de texto estructurado

Captulo 1

Ejemplo 2:
Si usted desea esto Mover caracteres ASCII de una matriz SINT a un tag de cadena (en una matriz SINT, cada elemento retiene un carcter). Pare cuando llegue al retorno de carro. 1. Inicializar Element_number a 0. 2. Cuente el nmero 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 carcter en SINT_array[element_number]. 4. Aada 1 a element_number. Esto le permite al controlador verificar el siguiente carcter en SINT_array. 5. Establezca el miembro Length de String_tag = element_number. (As registra el nmero 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 carcter en SINT_array[element_number] = 13 (valor decimal del retorno de carro), entonces pare. De lo contrario, vaya a 3. Introduzca este texto estructurado 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

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Comentarios

Para facilitar la interpretacin del texto estructurado, aada comentarios. Los comentarios le permiten usar lenguaje comn para describir cmo funciona su texto estructurado. Los comentarios no tienen ningn efecto en la ejecucin del texto estructurado. Los comentarios de texto estructurado se descargan a la memoria del controlador y estn disponibles para descarga. Para aadir comentarios a su texto estructurado:
Para aadir un comentario En una sola lnea Al final de una lnea de texto estructurado Dentro de una lnea de texto estructurado Que abarque ms de una lnea Use uno de estos formatos //comment (*comment*) /*comment*/ (*comment*) /*comment*/ (*start of comment . . . end of comment*) /*start of comment . . . end of comment*/

Por ejemplo:
Formato //comentario Ejemplo Al comienzo de una lnea //Check conveyor belt direction IF conveyor_direction THEN... Al final de una lnea ELSE //If conveyor isnt moving, set alarm light light := 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 recirculacin. 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 nmero de elementos en la matriz Inventory y almacena el valor en el tag Inventory_Items*/ SIZE(Inventory,0,Inventory_Items);

Publicacin 1756-PM007B-ES-P Julio 2008

33

Servicio de asistencia tcnica de Rockwell Automation

Rockwell Automation ofrece informacin tcnica en la Internet para proporcionarle asistencia al momento de utilizar sus productos. En http://support.rockwellautomation.com, puede encontrar manuales tcnicos, una base de conocimientos con respuestas a preguntas frecuentes, notas tcnicas y de aplicacin, ejemplos de cdigo y vnculos a Service Packs de software, as como un vnculo llamado MySupport que se puede personalizar para sacar el mximo provecho de todas estas herramientas. Con el fin de brindarle un nivel adicional de asistencia tcnica para la instalacin, configuracin y resolucin de problemas por telfono, ofrecemos los programas de asistencia tcnica TechConnect Support. Si desea obtener ms informacin, pngase en contacto con el representante o distribuidor local de Rockwell Automation, o vistenos en http://support.rockwellautomation.com.

Asistencia para la instalacin


Si se le presenta un problema durante las 24 horas posteriores a la instalacin, revise la informacin en este manual. Tambin puede llamar a un nmero especial de asistencia tcnica al cliente a fin de recibir ayuda inicial para poner en servicio el producto: En los Estados Unidos 1.440.646.3434 Lunes a viernes de las 08:00 a las 17:00, hora oficial del Este de EE.UU.

Fuera de Estados Pngase en contacto con el representante local de Unidos Rockwell Automation para cualquier consulta relacionada con asistencia tcnica.

Devolucin de productos nuevos


Rockwell Automation prueba todos sus productos para asegurarse de que funcionan correctamente al enviarse desde el punto de fabricacin. No obstante, si el producto no funciona y es necesario devolverlo, siga estos procedimientos: En los Estados Unidos Pngase en contacto con el distribuidor. Debe proporcionar al distribuidor un nmero de caso de asistencia tcnica (llame al nmero de telfono indicado anteriormente para obtenerlo) a fin de completar el proceso de devolucin.

Fuera de Estados Pngase en contacto con el representante local de Unidos Rockwell Automation para obtener informacin sobre el procedimiento de devolucin.

Publicacin 1756-PM007B-ES-P Julio 2008 36


Reemplaza a la publicacin 1756-PM007A-ES-P Julio de 2007 Copyright 2008 Rockwell Automation, Inc. Todos los derechos reservados. Impreso en los EE.UU.