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

IMPORTANTE
ATENCIN

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.

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

Publicacin 1756-PM007B-ES-P Julio 2008

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

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

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 botn derecho


del mouse en User-Defined

Haga clic con el botn derecho del mouse


en el tem que tiene el nombre
User-Defined.

courier

informacin que usted debe


proporcionar segn su aplicacin
(una variable)

Haga clic con el botn derecho


del mouse en
name_of_program

Usted debe identificar el programa


especfico en su aplicacin.
Normalmente es un nombre o una
variable que usted ha definido.

encerrado en
corchetes

una tecla del teclado

Presione [Enter].

Presione la tecla Enter.

Publicacin 1756-PM007B-ES-P Julio 2008

Prefacio

Notas:

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo

Programacin de texto estructurado

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:

Introduccin

Trmino

Definicin

Ejemplos

Asignacin
(vea la pgina 8)

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

tag := expression;

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)

Inmediatos

Un valor constante

Operadores

Un smbolo o mnemnico que especifica una


operacin dentro de una expresin

tag1 + tag2
tag1 >= value1

Funciones

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.

function(tag1)

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

Trmino

Definicin

Ejemplos

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

IF...THEN
CASE
FOR...DO
WHILE...DO
REPEAT...UNTIL
EXIT

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.

//comentario

Asignaciones

Captulo 1

(*inicio de comentario . . . fin de


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

Use una asignacin para cambiar el valor almacenado dentro de un tag. Una
asignacin tiene esta sintaxis:
tag := expression ;
donde:
Componente

Descripcin

tag

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.

expresin

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

Si el tag es de este tipo de


datos

Use este tipo de expresin

BOOL

Expresin BOOL

SINT
INT
DINT
REAL

Expresin numrica

Termina la asignacin.

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

Descripcin

tag

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.

expression

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

Publicacin 1756-PM007B-ES-P Julio 2008

Si el tag es de este tipo de


datos

Use este tipo de expresin

BOOL

Expresin BOOL

SINT
INT
DINT
REAL

Expresin numrica

Termina la asignacin.

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

Esto no es correcto

string1.DATA[0]:= 65;

string1.DATA[0] := A;

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

string1 := string2;

Para aadir o insertar una cadena de caracteres a un tag de cadena, use


cualquiera de estas instrucciones de cadena ASCII.

Expresiones

Para

Use esta instruccin

aadir caracteres al final de una cadena

CONCAT

insertar caracteres dentro de una cadena

INSERT

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

10

Usted puede aadir comentarios de usuario en lnea. Por


lo tanto, la conmutacin de lenguaje local no se aplica a su
lenguaje de programacin.

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

Entonces

Calcular un valor aritmtico

Use operadores y funciones aritmticas en la pgina 12.

Comparar dos valores o cadenas

Use operadores con relaciones en la pgina 13.

Verificar si las condiciones son verdaderas


o falsas

Use operadores lgicos en la pgina 14.

Comparar los bits dentro de valores

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

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

Las funciones aritmticas realizan operaciones matemticas. Especifique una


constante, un tag no booleano o una expresin para la funcin.

12

Para obtener

Use esta funcin

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

Raz cuadrada

SQRT (numeric_expression)

DINT, REAL

Tangente

TAN (numeric_expression)

REAL

Truncar

TRUNC (numeric_expression)

DINT, REAL

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Por ejemplo:
Use este formato

Ejemplo
Para esta situacin

Usted escribira

value1 operador value2

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.

gain_4_adj := gain_4+15;

operador value1

Si alarm y high_alarm son valores DINT y su


especificacin dice: Cambiar signo de high_alarm
y almacenar el resultado en alarm.

alarm:= -high_alarm;

funcin(numeric_expression)

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.

overtravel_POS :=
ABS(overtravel);

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

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.

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

El resultado es

Verdadera

Falsa

Use estos operadores con relaciones.

Publicacin 1756-PM007B-ES-P Julio 2008

Para esta comparacin:

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

13

Programacin de texto estructurado

Captulo 1

Por ejemplo:
Use este formato

EJEMPLO
Para esta situacin

Usted escribira

value1 operator value2

Si temp es un tag DINT y su especificacin dice: IF temp<100 THEN...


Si temp es menor que 100 entonces

stringtag1 operator stringtag2

Si bar_code y dest son tags de cadena y su


especificacin dice: Si bar_code es igual a
dest entonces

IF bar_code=dest THEN...

char1 operator char2

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

Para introducir un carcter ASCII


directamente en la expresin, introduzca
el valor decimal del carcter.
bool_tag := bool_expressions

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.

m
e
n
o
r

m
a
y
o
r

Caracteres ASCII

Cdigos
hexadecimales

1ab

$31$61$62

1b

$31$62

$41

AB

$41$42

$42

$61

ab

$61$62

AB < B
a>B

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.

14

Si la comparacin es

El resultado es

Verdadera

Falsa

0
Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Use estos operadores lgicos:


Para obtener

Use este operador

Tipo de datos

Y lgico

&, AND

BOOL

O lgico

OR

BOOL

O lgico exclusivo

XOR

BOOL

Complemento lgico

NOT

BOOL

Por ejemplo:
Use este formato

EJEMPLO
Para esta situacin

Usted escribira

BOOLtag

Si photoeye es un tag BOOL y su especificacin


dice: Si photoeye_1 est activado,
entonces

IF photoeye THEN...

NOT BOOLtag

Si photoeye es un tag BOOL y su especificacin


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


especificacin 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 especificacin dice: Si
photoeye1 y photoeye2 estn activados,
establezca open en verdadero.

open := photoeye1 & photoeye2;

Use operadores bit a bit


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

Publicacin 1756-PM007B-ES-P Julio 2008

Para obtener

Use este operador

Tipo ptimo de datos

Funcin Y

&, AND

DINT

Funcin O

OR

DINT

Funcin O exclusivo

XOR

DINT

Complemento de funcin

NOT

DINT

15

Programacin de texto estructurado

Captulo 1

Por ejemplo:
Use este formato
value1 operator value2

Ejemplo
Para esta situacin

Usted escribira

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.

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

Instrucciones

Operacin

1.

()

2.

funcin ()

3.

**

4.

- (cambiar signo)

5.

NOT

6.

*, /, MOD

7.

+, (restar)

8.

<, <=, >, >=

9.

=, <>

10.

&, AND

11.

XOR

12.

OR

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

Construcciones

Captulo 1

Las construcciones pueden programarse individualmente o anidadas dentro de


otras construcciones.
Si usted desea

Use esta construccin

Hacer algo si o cuando ocurra una condicin especfica

IF...THEN

Seleccionar qu hacer en base a un valor numrico

CASE...OF

Hacer algo un nmero especfico 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 condicin sea


verdadera

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

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

IF...THEN
Operandos:

Texto estructurado
IF bool_expression THEN
<enunciado>;
END_IF;

Operando

Tipo

Formato

Introduzca

bool_
expression

BOOL

Tag
Expresin

Expresin o tag BOOL que evala


respecto a un valor BOOL (expresin
BOOL)

Descripcin: La sintaxis es:


IF bool_expression1 THEN
<enunciado >;

.
.
.
Opcional

ELSIF bool_expression2 THEN


<enunciado>;

.
.
.
Opcional

Enunciados a ejecutarse cuando


bool_expression1 es verdadera

Enunciados a ejecutarse cuando


bool_expression2 es verdadera

ELSE
<enunciado>;

.
.
.

Enunciados a ejecutarse cuando


ambas expresiones son falsas

END_IF;
Para usar ELSIF o ELSE, siga estas pautas.
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

Entonces use esta


construccin

Hacer algo si o cuando las


condiciones son verdaderas

No hacer nada si las condiciones son


falsas

IFTHEN

Hacer algo distinto si las condiciones


son falsas

IFTHENESLE

No hacer nada si las condiciones son


falsas

IFTHENELSIF

Asignar enunciados predeterminados si


todas las condiciones son falsas

IFTHENELSIFELSE

Seleccionar entre enunciados


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

Indicadores de estado
aritmticos: No afectados
Condiciones de fallo: Ninguno
Ejemplo 1: IFTHEN
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;

Ejemplo 2: IFTHENELSE
Si usted desea esto

Introduzca este texto estructurado

Si el contacto de direccin del transportador = avance (1)


entonces

IF conveyor_direction THEN

luz = apagada
De lo contrario luz = encendida

light := 0;
ELSE
light [:=] 1;
END_IF;

[:=] 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)

Sugar.Inlet [:=] 1;

Hasta que el interruptor de final de carrera de nivel alto


de azcar = alta (desactivado)

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

Introduzca este texto estructurado

Si la temperatura del tanque > 100

IF tank.temp > 200 THEN

entonces bomba = lenta


Si la temperatura del tanque > 200

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


ELSIF tank.temp > 100 THEN

entonces bomba = rpida


de lo contrario bomba = desactivada

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


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

Publicacin 1756-PM007B-ES-P Julio 2008

21

Programacin de texto estructurado

Captulo 1

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

CASE...OF
Operandos:

Texto estructurado
CASE numeric_expression OF
selector1: statement;
selectorN: statement;

Operando

Tipo

Formato

Introduzca

numeric_
expression

SINT
INT
DINT
REAL

Tag
Expresin

Tag o expresin que evala a un nmero


(expresin numrica)

selector

SINT
INT
DINT
REAL

Inmediato

El mismo tipo que numeric_expression

ELSE
statement;
END_CASE;

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

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

ELSE
<enunciado>;
opcional

.
.
.

Enunciados a ejecutarse cuando


numeric_expression de
cualquier selector

END_CASE;

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

Introduzca

Un valor

valor: enunciado

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

Introduzca este texto estructurado

Si el nmero de receta = 1 entonces

CASE recipe_number OF

Ingrediente A salida 1 = abierto (1)

1:

Ingrediente B salida 4 = abierto (1)

Ingredient_A.Outlet_1 :=1;
Ingredient_B.Outlet_4 :=1;

Si el nmero de receta = 2 3 entonces

2,3:

Ingrediente A salida 4 = abierto (1)

Ingredient_A.Outlet_4 :=1;
Ingredient_B.Outlet_2 :=1;

Ingrediente B salida 2 = abierto (1)


Si el nmero de receta = 4, 5, 6 7 entonces

4..7:

Ingrediente A salida 4 = abierto (1)

Ingredient_A.Outlet_4 :=1;
Ingredient_B.Outlet_2 :=1;

Ingrediente B salida 2 = abierto (1)


Si el nmero de receta = 8, 11, 12 13 entonces

8,11..13

Ingrediente A salida 1 = abierto (1)

Ingredient_A.Outlet_1 :=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;

[:=] 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

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

FORDO
Operandos:

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

Operando

Tipo

Formato

Descripcin

count

SINT
INT
DINT

Tag

Tag para almacenar la posicin de


conteo a medida que se ejecuta
FORDO

initial_ value

SINT
INT
DINT

Tag
Expresin
Inmediato

Debe evaluar con respecto a un nmero.


Especifica el valor inicial para el conteo.

final_ value

SINT
INT
DINT

Tag
Expresin
Inmediato

Especifica el valor final para el conteo, el


cual determina cundo salir del lazo.

increment

SINT
INT
DINT

Tag
Expresin
Inmediato

(opcional) Valor a incrementar el conteo


cada vez a travs del lazo

END_FOR;

Si usted no especifica un incremento, el


conteo se incrementa en un valor de 1.

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
BY increment

opcional {

Si no especifica un incremento, el lazo se


incrementa en un valor de 1.

DO
<enunciado>;
IF bool_expression THEN
EXIT;

opcional

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_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?

Efectuado x
nmero de veces?

No

no

enunciado 1
enunciado 2
enunciado 3
enunciado 4

enunciado 1
enunciado 2
enunciado 3
enunciado 4

Salir ?

Resto de la rutina

No
Resto de la rutina

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

Tipo de fallo

Cdigo de fallo

La construccin tiene un lazo


excesivamente largo

Ejemplo 1:

26

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. Aadir 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;

Publicacin 1756-PM007B-ES-P Julio 2008

Captulo 1

Programacin de texto estructurado

Ejemplo 2:
Si usted desea esto

Introduzca este texto estructurado

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:

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;

a. Establezca el tag Quantity = Inventory[position].Qty. Esto


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

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

Use el lazo WHILEDO para continuar haciendo algo, siempre y cuando


ciertas condiciones sean verdaderas.

WHILEDO
Operandos:

Texto estructurado
WHILE bool_expression DO
<statement>;
END_WHILE;

IMPORTANTE

Operando

Tipo

Formato

Introduzca

bool_
expression

BOOL

Tag
Expresin

Expresin o tag BOOL que evala


respecto a un valor BOOL

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

Enunciados a ejecutarse mientras


bool_expression1 es verdadera

IF bool_expression2 THEN
EXIT;

Opcional

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

Falsa

Falsa
Expresin BOOL

Verdadera

Verdadera

Enunciado 1
Enunciado 2
Enunciado 3
Enunciado 4

Enunciado 1
Enunciado 2
Enunciado 3
Enunciado 4

Salir ?

Resto de la rutina

No
Resto de la rutina

Mientras bool_expression es verdadero, el


controlador ejecuta slo los enunciados dentro
del lazo WHILEDO.

28

Para detener el lazo antes de que las condiciones


sean verdaderas, use un enunciado EXIT.

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

Tipo de fallo

Cdigo de fallo

La construccin tiene un lazo


excesivamente largo

Ejemplo 1:
Si usted desea esto

Introduzca este texto estructurado

El lazo WHILE...DO evala sus condiciones primero. Si las


condiciones son verdaderas, entonces el controlador ejecuta
los enunciados dentro del lazo.

pos := 0;

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.

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

Introduzca este texto estructurado

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.

element_number := 0;

Publicacin 1756-PM007B-ES-P Julio 2008

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;

29

Programacin de texto estructurado

Captulo 1

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

REPEATUNTIL
Operandos:

Texto estructurado
REPEAT
<statement>;
UNTIL bool_expression
END_REPEAT;

Operando

Tipo

Formato

Introduzca

bool_
expression

BOOL

Tag
Expresin

Expresin o tag BOOL que evala


respecto a un valor BOOL (expresin
BOOL)

Asegrese de no repetir dentro del lazo demasiadas veces en un solo escn.

IMPORTANTE

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

Enunciados a ejecutarse mientras


bool_expression1 es falsa

IF bool_expression2 THEN
Opcional

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

Enunciado 1
Enunciado 2
Enunciado 3
Enunciado 4

Salir ?

Verdadera

No

Falsa

Expresin BOOL

Verdadera

Resto de la rutina
Falsa
Resto de la rutina

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

Tipo de fallo

Cdigo de fallo

La construccin tiene un lazo


excesivamente largo.

Ejemplo 1:
Si usted desea esto

Introduzca este texto estructurado

El lazo REPEAT...UNTIL ejecuta los enunciados en la


construccin y luego determina si las condiciones son
verdaderas antes de ejecutar los enunciados nuevamente.

pos := -1;

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.

Publicacin 1756-PM007B-ES-P Julio 2008

REPEAT
pos := pos + 2;
UNTIL ((pos = 101) OR (structarray[pos].value = targetvalue))
end_repeat;

31

Programacin de texto estructurado

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

element_number := 0;

32

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;

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

Use uno de estos formatos

En una sola lnea

//comment

Al final de una lnea de texto


estructurado

(*comment*)
/*comment*/

Dentro de una lnea de texto


estructurado

(*comment*)
/*comment*/

Que abarque ms de una lnea

(*start of comment . . . end of comment*)


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

Por ejemplo:
Formato

Ejemplo

//comentario

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.

También podría gustarte