Documentos de Académico
Documentos de Profesional
Documentos de Cultura
controladores Logix5000
Manual de programacin
(Nmeros de catlogo 1756 ControlLogix,
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.
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
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
Contenido
Prefacio
El texto en
Identifica
Por ejemplo
Significa
cursiva
courier
encerrado en
corchetes
Presione [Enter].
Prefacio
Notas:
Captulo
Introduccin
Trmino
Definicin
Ejemplos
Asignacin
(vea la pgina 8)
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
Inmediatos
Un valor constante
Operadores
tag1 + tag2
tag1 >= value1
Funciones
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.
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
Use una asignacin para cambiar el valor almacenado dentro de un tag. Una
asignacin tiene esta sintaxis:
tag := expression ;
donde:
Componente
Descripcin
tag
:=
Es el smbolo de asignacin.
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
Captulo 1
Descripcin
tag
[:=]
expression
BOOL
Expresin BOOL
SINT
INT
DINT
REAL
Expresin numrica
Termina la asignacin.
Captulo 1
Esto no es correcto
string1.DATA[0]:= 65;
string1.DATA[0] := A;
string1.DATA[0]:= string2.DATA[0];
string1 := string2;
Expresiones
Para
CONCAT
INSERT
10
Captulo 1
Entonces
11
Captulo 1
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
12
Para obtener
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
Captulo 1
Por ejemplo:
Use este formato
Ejemplo
Para esta situacin
Usted escribira
gain_4_adj := gain_4+15;
operador value1
alarm:= -high_alarm;
funcin(numeric_expression)
overtravel_POS :=
ABS(overtravel);
position := adjustment +
ABS((sensor1 + sensor2)/2);
El resultado es
Verdadera
Falsa
Igual
Menor que
<
<=
Mayor que
>
>=
Diferente
<>
13
Captulo 1
Por ejemplo:
Use este formato
EJEMPLO
Para esta situacin
Usted escribira
IF bar_code=dest THEN...
IF bar_code.DATA[0]=65 THEN...
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
14
Si la comparacin es
El resultado es
Verdadera
Falsa
0
Publicacin 1756-PM007B-ES-P Julio 2008
Captulo 1
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
IF photoeye THEN...
NOT BOOLtag
expression1 OR expression2
Para obtener
Funcin Y
&, AND
DINT
Funcin O
OR
DINT
Funcin O exclusivo
XOR
DINT
Complemento de funcin
NOT
DINT
15
Captulo 1
Por ejemplo:
Use este formato
value1 operator value2
Ejemplo
Para esta situacin
Usted escribira
Instrucciones
Operacin
1.
()
2.
funcin ()
3.
**
4.
- (cambiar signo)
5.
NOT
6.
*, /, MOD
7.
+, (restar)
8.
9.
=, <>
10.
&, AND
11.
XOR
12.
OR
16
Captulo 1
17
Construcciones
Captulo 1
IF...THEN
CASE...OF
FOR...DO
WHILE...DO
REPEAT...UNTIL
18
Captulo 1
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
.
.
.
Opcional
.
.
.
Opcional
ELSE
<enunciado>;
.
.
.
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.
19
Captulo 1
IFTHEN
IFTHENESLE
IFTHENELSIF
IFTHENELSIFELSE
Indicadores de estado
aritmticos: No afectados
Condiciones de fallo: Ninguno
Ejemplo 1: IFTHEN
Si usted desea esto
conveyor := 0;
alarm := 1;
END_IF;
Ejemplo 2: IFTHENELSE
Si usted desea esto
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
Captulo 1
Ejemplo 3: IFTHENELSIF
Si usted desea esto
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;
Ejemplo 4: IFTHENELSIFELSE
Si usted desea esto
21
Captulo 1
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
selector
SINT
INT
DINT
REAL
Inmediato
ELSE
statement;
END_CASE;
IMPORTANTE
selector1 :
<enunciado>;
.
.
.
selector2 :
<enunciado>;
.
.
.
selector3 :
<enunciado>;
.
.
.
ELSE
<enunciado>;
opcional
.
.
.
END_CASE;
22
Captulo 1
Introduzca
Un valor
valor: enunciado
Mltiples y diferentes
valores
Un rango de valores
value1...valueN : <enunciado>
Use dos puntos (..) para identificar el rango.
Valores distintos ms un
rango de valores
Indicadores de estado
aritmticos: No afectados
Condiciones de fallo: Ninguno
Ejemplo
23
Captulo 1
Ejemplo
Si usted desea esto
CASE recipe_number OF
1:
Ingredient_A.Outlet_1 :=1;
Ingredient_B.Outlet_4 :=1;
2,3:
Ingredient_A.Outlet_4 :=1;
Ingredient_B.Outlet_2 :=1;
4..7:
Ingredient_A.Outlet_4 :=1;
Ingredient_B.Outlet_2 :=1;
8,11..13
Ingredient_A.Outlet_1 :=1;
Ingredient_B.Outlet_4 :=1;
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
Captulo 1
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
initial_ value
SINT
INT
DINT
Tag
Expresin
Inmediato
final_ value
SINT
INT
DINT
Tag
Expresin
Inmediato
increment
SINT
INT
DINT
Tag
Expresin
Inmediato
END_FOR;
IMPORTANTE
opcional {
DO
<enunciado>;
IF bool_expression THEN
EXIT;
opcional
END_IF;
END_FOR;
25
Captulo 1
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
Indicadores de estado
aritmticos: No afectados
Condiciones de fallo:
Ocurre un fallo mayor si
Tipo de fallo
Cdigo de fallo
Ejemplo 1:
26
For subscript:=0 to 31 by 1 do
array[subscript] := 0;
End_for;
Captulo 1
Ejemplo 2:
Si usted desea esto
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;
27
Captulo 1
WHILEDO
Operandos:
Texto estructurado
WHILE bool_expression DO
<statement>;
END_WHILE;
IMPORTANTE
Operando
Tipo
Formato
Introduzca
bool_
expression
BOOL
Tag
Expresin
IF bool_expression2 THEN
EXIT;
Opcional
END_IF;
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
28
Captulo 1
Indicadores de estado
aritmticos: No afectados
Condiciones de fallo:
Ocurre un fallo mayor si
Tipo de fallo
Cdigo de fallo
Ejemplo 1:
Si usted desea esto
pos := 0;
Ejemplo 2:
Si usted desea esto
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;
29
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
IMPORTANTE
IF bool_expression2 THEN
Opcional
EXIT;
END_IF;
UNTIL bool_expression1
END_REPEAT;
30
Captulo 1
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
Indicadores de estado
aritmticos: No afectados
Condiciones de fallo:
Ocurre un fallo mayor si
Tipo de fallo
Cdigo de fallo
Ejemplo 1:
Si usted desea esto
pos := -1;
REPEAT
pos := pos + 2;
UNTIL ((pos = 101) OR (structarray[pos].value = targetvalue))
end_repeat;
31
Captulo 1
Ejemplo 2:
Si usted desea esto
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;
Captulo 1
Comentarios
//comment
(*comment*)
/*comment*/
(*comment*)
/*comment*/
Por ejemplo:
Formato
Ejemplo
//comentario
(*comentario*)
/*comment*/
33
Servicio de asistencia
tcnica de
Rockwell Automation
1.440.646.3434
Lunes a viernes de las 08:00 a las 17:00, hora oficial del Este de EE.UU.
Copyright 2008 Rockwell Automation, Inc. Todos los derechos reservados. Impreso en los EE.UU.