Загрузил segundo victor rudas caja

1756-rm003 -es-p

Реклама
Instrucciones generales de los
controladores Logix5000™
Manual de referencia
Números de catálogo 1756-L1x,
1756-L5x, 1756-L6x, 1768-L4x, 1769L30, 1769-L31, 1769-L32C, 1769-L32E,
1769-L35CR, 1769-L35E, 1789-L60,
1794-L34, 20D
Información importante para el usuario
Los equipos de estado sólido tienen características de funcionamiento distintas de las de los equipos electromecánicos.
El documento Safety Guidelines for the Application, Installation and Maintenance of Solid State Controls
(publicación SGI-1.1 disponible en la oficina de ventas local del Rockwell Automation o en línea en
http://literature.rockwellautomation.com) describe algunas diferencias importantes entre los equipos de estado sólido y
los dispositivos electromecánicos de lógica cableada. Debido a esta diferencia y también a la gran variedad de usos de los
equipos de estado sólido, toda persona encargada de la aplicación de estos equipos debe asegurarse de la idoneidad de
cada una de las aplicaciones concebidas con estos equipos.
En ningún caso Rockwell Automation, Inc. será responsable ni asumirá ninguna obligación por daños indirectos o
consecuentes que resulten del uso o de la aplicación de estos equipos.
Los ejemplos y diagramas presentados en este manual se incluyen únicamente con fines ilustrativos. Debido a las
numerosas variables y requisitos asociados con cualquier instalación en particular, Rockwell Automation, Inc. no puede
asumir responsabilidad u obligación alguna por el uso de estos equipos basado en ejemplos y diagramas.
Rockwell Automation, Inc. no asume ninguna obligación de patente con respecto al uso de la información, los circuitos,
los equipos o el software descritos en este manual.
Se prohíbe la reproducción total o parcial del contenido de este manual sin la autorización escrita de
Rockwell Automation, Inc.
Este manual contiene notas de seguridad en cada circunstancia en que se estimen necesarias.
ADVERTENCIA
IMPORTANTE
ATENCIÓN
PELIGRO DE CHOQUE
PELIGRO DE QUEMADURA
Identifica información sobre prácticas o circunstancias que pueden provocar una explosión en un
ambiente peligroso, lo que podría causar lesiones personales o la muerte, daños materiales o
pérdidas económicas.
Identifica información importante para la correcta aplicación y comprensión del producto.
Identifica información sobre prácticas o circunstancias que pueden provocar lesiones personales
o la muerte, daños materiales o pérdidas económicas. Los mensajes de Atención le ayudan a
identificar y evitar un peligro, y a reconocer las consecuencias.
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 un voltaje peligroso.
Puede haber etiquetas en el exterior o en el interior del equipo (por ejemplo, en un variador o un
motor) para advertir sobre superficies que podrían estar a temperaturas peligrosas.
Allen-Bradley, Rockwell Automation y TechConnect son marcas comerciales de Rockwell Automation, Inc.
Las marcas comerciales no pertenecientes a Rockwell Automation son propiedad de sus respectivas empresas.
Índice
Prefacio
Instrucciones generales de
controladores Logix5000™
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A quién está dirigido este manual . . . . . . . . . . . . . . . . .
Propósito de este manual . . . . . . . . . . . . . . . . . . . . . . .
Información común para todas las instrucciones. . . . . . .
Convenciones y términos relacionados. . . . . . . . . . . . . .
Establecer y borrar . . . . . . . . . . . . . . . . . . . . . . . . . .
Condición de renglón de lógica de escalera de relés .
Estados del bloque de funciones . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
23
24
25
25
25
26
27
Capítulo 1
Instrucciones basadas en
Logix para alarmas y eventos
FactoryTalk
(ALMD, ALMA)
3Publicación 1756-RM003K-ES-P – Julio 2008
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alarma digital (ALMD). . . . . . . . . . . . . . . . . . . . . . . . . . .
Diagramas de estado cuando se requiere
confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diagramas de estado cuando no se requiere
confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Confirmación de alarma ALMD requerida y enclavada .
Confirmación de alarma ALMD requerida y no
enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Confirmación de alarma ALMD no requerida y
enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Confirmación de alarma ALMD no requerida y no
enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alarma Analógica (ALMA) . . . . . . . . . . . . . . . . . . . . . . . .
Diagramas de estado cuando se requiere
confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diagramas de estado cuando no se requiere
confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Confirmación de condición de nivel ALMA requerida .
Confirmación de condición de nivel ALMA no
requerida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Confirmación de velocidad de cambio ALMA
requerida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Confirmación de velocidad de cambio ALMA
no requerida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configure una instrucción de alarma . . . . . . . . . . . . . . . .
Introduzca el texto del mensaje de alarma . . . . . . . . . . . .
Variables de la cadena de mensaje . . . . . . . . . . . . . . .
Versiones de los mensajes de alarma en múltiples
idiomas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Monitoreo del estado de alarma. . . . . . . . . . . . . . . . . . . .
Almacenamiento de alarmas en el búfer. . . . . . . . . . . . . .
Acceda programáticamente a información de alarmas . . . .
Suprima o inhabilite alarmas . . . . . . . . . . . . . . . . . . . . . .
Ejecución de alarma basada en el controlador . . . . . . . . .
Uso de la memoria del controlador. . . . . . . . . . . . . . .
Tiempo de escán . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 29
. . 30
. . 36
. . 37
. . 38
. . 39
. . 39
. . 40
. . 42
. . 54
. . 55
. . 57
. . 58
. . 59
.
.
.
.
.
.
.
.
60
62
65
66
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
67
68
69
70
71
72
73
75
3
Índice
Capítulo 2
Instrucciones de bits
(XIC, XIO, OTE, OTL, OTU, ONS,
OSR, OSF, OSRI, OSFI)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Examinar si está cerrado (XIC). . . . . . . . . . . . . . . . . . .
Examinar si está abierto (XIO) . . . . . . . . . . . . . . . . . . .
Activación de salida (OTE) . . . . . . . . . . . . . . . . . . . . .
Enclavamiento de salida (OTL) . . . . . . . . . . . . . . . . . .
Desenclavamiento de salida (OTU) . . . . . . . . . . . . . . .
Un impulso (ONS) . . . . . . . . . . . . . . . . . . . . . . . . . . .
Un impulso en flanco ascendente (OSR) . . . . . . . . . . .
Un impulso en flanco descendente (OSF) . . . . . . . . . .
Un impulso en flanco ascendente con entrada (OSRI) .
Un impulso en flanco descendente con entrada (OSFI).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
77
78
80
82
84
86
88
91
94
96
99
Capítulo 3
Instrucciones de temporizador y
contador
(TON, TOF, RTO, TONR, TOFR,
RTOR, CTU, CTD, CTUD, RES)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Temporizador de retardo a la conexión (TON). . . . . .
Temporizador de retardo a la desconexión (TOF) . . .
Temporizador retentivo activado (RTO) . . . . . . . . . . .
Temporizador de retardo a la conexión con
restablecimiento (TONR) . . . . . . . . . . . . . . . . . . . . . .
Temporizador de retardo a la desconexión con
restablecimiento (TOFR) . . . . . . . . . . . . . . . . . . . . . .
Temporizador retentivo activado con restablecimiento
(RTOR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conteo progresivo (CTU) . . . . . . . . . . . . . . . . . . . . .
Conteo regresivo (CTD) . . . . . . . . . . . . . . . . . . . . . .
Conteo progresivo/regresivo (CTUD) . . . . . . . . . . . . .
Restablecer (RES) . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
103
104
108
112
. . . . 116
. . . . 120
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
124
128
132
136
141
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mensaje (MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Códigos de error MSG . . . . . . . . . . . . . . . . . . . . . . . . . . .
Códigos de error . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Códigos de error extendidos . . . . . . . . . . . . . . . . . . .
Códigos de error PLC y SLC (.ERR) . . . . . . . . . . . . . . .
Códigos de error de transferencia en bloques . . . . . . .
Especifique los detalles de configuración . . . . . . . . . . . . .
Especifique mensajes de lectura y escritura de la tabla
de datos CIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Reconfigure un módulo de E/S. . . . . . . . . . . . . . . . . .
Especifique mensajes genéricos CIP . . . . . . . . . . . . . .
Especifique mensajes PLC-5 . . . . . . . . . . . . . . . . . . . .
Especifique mensajes SLC. . . . . . . . . . . . . . . . . . . . . .
Especifique mensajes de transferencia en bloques . . . .
Especifique mensajes PLC-3 . . . . . . . . . . . . . . . . . . . .
Especifique mensajes PLC-2 . . . . . . . . . . . . . . . . . . . .
Ejemplos de configuración MSG . . . . . . . . . . . . . . . . . . .
Especifique los detalles de comunicación. . . . . . . . . . . . .
.
.
.
.
.
.
.
.
143
144
152
152
154
156
158
159
.
.
.
.
.
.
.
.
.
.
160
161
162
163
165
165
166
167
168
169
Capítulo 4
Instrucciones de entrada/salida
(MSG, GSV, SSV, IOT)
4
Publicación 1756-RM003K-ES-P – Julio 2008
Índice
Especifique una ruta . . . . . . . . . . . . . . . . . . . . . . .
Para transferencia en bloques. . . . . . . . . . . . . . . . .
Especifique un método de comunicación o una
dirección de módulo . . . . . . . . . . . . . . . . . . . . . . .
Seleccione una opción de caché. . . . . . . . . . . . . . .
Pautas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Obtener valor del sistema (GSV) y establecer valor del
sistema (SSV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objetos GSV/SSV . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Acceso al objeto CONTROLLER . . . . . . . . . . . . . . .
Acceso al objeto CONTROLLERDEVICE . . . . . . . . .
Acceso al objeto CST . . . . . . . . . . . . . . . . . . . . . . .
Acceso al objeto DF1 . . . . . . . . . . . . . . . . . . . . . . .
Acceso al objeto FAULTLOG . . . . . . . . . . . . . . . . .
Acceso al objeto MESSAGE. . . . . . . . . . . . . . . . . . .
Acceso al objeto MODULE . . . . . . . . . . . . . . . . . . .
Acceso al objeto MOTIONGROUP . . . . . . . . . . . . .
Acceso al objeto PROGRAM . . . . . . . . . . . . . . . . . .
Acceso al objeto ROUTINE. . . . . . . . . . . . . . . . . . .
Acceso al objeto SERIALPORT . . . . . . . . . . . . . . . .
Acceso al objeto TASK . . . . . . . . . . . . . . . . . . . . . .
Acceso al objeto WALLCLOCKTIME . . . . . . . . . . . .
Ejemplo de programación GSV/SSV . . . . . . . . . . . . . . .
Obtenga información de fallo . . . . . . . . . . . . . . . . .
Establezca los indicadores de habilitación e
inhabilitación. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Salida inmediata (IOT) . . . . . . . . . . . . . . . . . . . . . . . .
. . . 169
. . . 172
. . . 172
. . . 173
. . . 175
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
176
179
180
181
183
184
187
188
190
191
192
193
193
195
197
198
198
. . . 200
. . . 201
Capítulo 5
Instrucciones de comparación
(CMP, EQU, GEQ, GRT, LEQ, LES,
LIM, MEQ, NEQ)
Publicación 1756-RM003K-ES-P – Julio 2008
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comparar (CMP) . . . . . . . . . . . . . . . . . . . . . . . . . .
Expresiones CMP . . . . . . . . . . . . . . . . . . . . . . .
Operadores válidos . . . . . . . . . . . . . . . . . . . . .
Expresiones de formato . . . . . . . . . . . . . . . . . .
Determine el orden de operación . . . . . . . . . . .
Use cadenas en una expresión . . . . . . . . . . . . .
Igual a (EQU) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mayor o igual que (GEQ) . . . . . . . . . . . . . . . . . . .
Mayor que (GRT) . . . . . . . . . . . . . . . . . . . . . . . . .
Menor o igual que (LEQ). . . . . . . . . . . . . . . . . . . .
Menor que (LES) . . . . . . . . . . . . . . . . . . . . . . . . . .
Límite (LIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Máscara igual que (MEQ) . . . . . . . . . . . . . . . . . . .
Introducción de un valor de máscara inmediato
Diferente de (NEQ) . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
205
206
208
208
209
209
210
211
215
219
223
227
231
237
238
242
5
Índice
Capítulo 6
Instrucciones de cálculo/
matemáticas
(CPT, ADD, SUB, MUL, DIV, MOD,
SQR, SQRT, NEG, ABS)
Introducción . . . . . . . . . . . . . . . . . . .
Calcular (CPT) . . . . . . . . . . . . . . . . .
Operadores válidos . . . . . . . . . . .
Expresiones de formato . . . . . . . .
Determine el orden de operación .
Sumar (ADD) . . . . . . . . . . . . . . . . . .
Restar (SUB) . . . . . . . . . . . . . . . . . . .
Multiplicar (MUL) . . . . . . . . . . . . . . .
Dividir (DIV) . . . . . . . . . . . . . . . . . .
Módulo (MOD) . . . . . . . . . . . . . . . . .
Raíz cuadrada (SQR) . . . . . . . . . . . . .
Cambiar signo (NEG) . . . . . . . . . . . .
Valor absoluto (ABS). . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
247
248
250
250
251
252
255
258
261
266
270
274
277
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mover (MOV) . . . . . . . . . . . . . . . . . . . . . . . . . .
Mover con máscara (MVM) . . . . . . . . . . . . . . . .
Introduzca un valor de máscara inmediato . .
Movimiento enmascarado con receptor (MVMT).
Distribuir campo de bits (BTD) . . . . . . . . . . . . .
Distribuir campo de bits con receptor (BTDT) . .
Borrar (CLR) . . . . . . . . . . . . . . . . . . . . . . . . . . .
Intercambiar byte (SWPB) . . . . . . . . . . . . . . . . .
Y a nivel de bits (AND) . . . . . . . . . . . . . . . . . . .
O a nivel de bits (OR) . . . . . . . . . . . . . . . . . . . .
O exclusivo a nivel de bits (XOR) . . . . . . . . . . .
NO a nivel de bits (NOT) . . . . . . . . . . . . . . . . .
Y booleano (BAND) . . . . . . . . . . . . . . . . . . . . .
O booleano (BOR) . . . . . . . . . . . . . . . . . . . . . .
O exclusivo booleano (BXOR). . . . . . . . . . . . . .
NO booleano (BNOT) . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
281
283
285
286
288
292
295
298
300
304
307
310
314
317
320
323
326
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
329
330
330
331
333
335
344
345
345
346
347
352
353
353
Capítulo 7
Instrucciones de movimiento/
lógicas
(MOV, MVM, BTD, MVMT, BTDT,
CLR, SWPB, AND, OR, XOR, NOT,
BAND, BOR, BXOR, BNOT)
Capítulo 8
Instrucciones de matriz
(archivo)/misceláneas
(FAL, FSC, COP, CPS, FLL, AVE,
SRT, STD, SIZE)
6
Introducción . . . . . . . . . . . . . . . . . . . . . . . .
Selección del modo de operación . . . . . . . .
Modo Todos . . . . . . . . . . . . . . . . . . . . .
Modo numérico . . . . . . . . . . . . . . . . . . .
Modo incremental . . . . . . . . . . . . . . . . .
Aritmética y lógica de archivo (FAL) . . . . . .
Expresiones FAL . . . . . . . . . . . . . . . . . .
Operadores válidos . . . . . . . . . . . . . . . .
Expresiones de formato . . . . . . . . . . . . .
Determine el orden de operación . . . . . .
Búsqueda y comparación de archivos (FSC) .
Expresiones FSC . . . . . . . . . . . . . . . . . .
Operadores válidos . . . . . . . . . . . . . . . .
Expresiones de formato . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Publicación 1756-RM003K-ES-P – Julio 2008
Índice
Determine el orden de operación . . . . . . . . . . . .
Use cadenas en una expresión . . . . . . . . . . . . . .
Copiar archivo (COP) Copiar archivo síncrono (CPS)
Llenar archivo (FLL) . . . . . . . . . . . . . . . . . . . . . . . .
Promedio de archivo (AVE) . . . . . . . . . . . . . . . . . . .
Clasificación de archivo (SRT) . . . . . . . . . . . . . . . . .
Desviación estándar de archivo (STD) . . . . . . . . . . .
Tamaño en elementos (SIZE). . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
354
355
356
362
366
371
376
381
Capítulo 9
Instrucciones de matriz
(archivo)/desplazamiento
(BSL, BSR, FFL, FFU, LFL, LFU)
Introducción . . . . . . . . . . . . . . . . . . . . . . . .
Desplazamiento de bits a la izquierda (BSL) .
Desplazamiento de bits a la derecha (BSR). .
Carga FIFO (FFL) . . . . . . . . . . . . . . . . . . . .
Descarga FIFO (FFU) . . . . . . . . . . . . . . . . .
Carga LIFO (LFL). . . . . . . . . . . . . . . . . . . . .
Descarga LIFO (LFU). . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
385
386
390
394
400
406
412
Introducción . . . . . . . . . . . . . . . . . . . . . . . . .
Secuenciador de entrada (SQI) . . . . . . . . . . .
Introduzca un valor de máscara inmediato
Use SQI sin SQO . . . . . . . . . . . . . . . . . . .
Secuenciador de salida (SQO) . . . . . . . . . . . .
Introduzca un valor de máscara inmediato
Uso de SQI con SQO . . . . . . . . . . . . . . . .
Restablecimiento de la posición de SQO. .
Carga de secuenciador (SQL). . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
419
420
421
423
424
425
427
427
428
Capítulo 10
Instrucciones de secuenciador
(SQI, SQO, SQL)
Capítulo 11
Instrucciones de control de
programa
(JMP, LBL, JSR, RET, SBR, JXR,
TND, MCR, UID, UIE, AFI,
NOP, EOT, SFP, SFR, EVENT)
Publicación 1756-RM003K-ES-P – Julio 2008
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Saltar a etiqueta (JMP)
Etiqueta (LBL). . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Salto a subrutina (JSR)
Subrutina (SBR) Retorno (RET) . . . . . . . . . . . . . . . .
Salto a rutina externa (JXR) . . . . . . . . . . . . . . . . . . .
Fin temporal (TND). . . . . . . . . . . . . . . . . . . . . . . . .
Restablecimiento de control maestro (MCR) . . . . . . .
Inhabilitación de interrupción de usuario (UID)
Habilitación de interrupción de usuario (UIE) . . . . .
Instrucción siempre falso (AFI) . . . . . . . . . . . . . . . .
Sin operación (NOP) . . . . . . . . . . . . . . . . . . . . . . . .
Fin de transición (EOT) . . . . . . . . . . . . . . . . . . . . . .
Pausa SFC (SFP) . . . . . . . . . . . . . . . . . . . . . . . . . . .
Restablecer SFC (SFR) . . . . . . . . . . . . . . . . . . . . . . .
Activar tarea de evento (EVENT) . . . . . . . . . . . . . . .
Determine programáticamente si una instrucción
EVENT activó una tarea . . . . . . . . . . . . . . . . . . .
. . . . . 433
. . . . . 434
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
436
447
450
452
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
454
456
457
458
460
462
464
. . . . . 464
7
Índice
Capítulo 12
Instrucciones For/Break
(FOR, FOR...DO, BRK, EXIT, RET)
Introducción . . . . .
For (FOR) . . . . . . .
Interrumpir (BRK) .
Retornar (RET) . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
469
470
473
474
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comparación de bits de archivo (FBC). . . . . . . . .
Selección del modo de búsqueda . . . . . . . . . .
Detección de diagnóstico (DDT) . . . . . . . . . . . . .
Selección del modo de búsqueda . . . . . . . . . .
Transición de datos (DTR). . . . . . . . . . . . . . . . . .
Introduzca un valor de máscara inmediato . . .
Proporcional integral derivativo (PID) . . . . . . . . .
Configure una instrucción PID. . . . . . . . . . . . . . .
Especifique el ajuste. . . . . . . . . . . . . . . . . . . .
Especifique la configuración. . . . . . . . . . . . . .
Especificación de alarmas. . . . . . . . . . . . . . . .
Especificación de escalado . . . . . . . . . . . . . . .
Uso de instrucciones PID . . . . . . . . . . . . . . . . . .
Bloqueo de acción integral y transferencia sin
perturbaciones de manual a automático . . . . .
Temporización de la instrucción PID . . . . . . .
Reinicio sin problemas . . . . . . . . . . . . . . . . . .
Suavizado derivativo . . . . . . . . . . . . . . . . . . .
Establezca la banda muerta . . . . . . . . . . . . . .
Use límite de salida . . . . . . . . . . . . . . . . . . . .
Ganancia anticipativa o polarización de salida
Lazos en cascada . . . . . . . . . . . . . . . . . . . . . .
Control de relación . . . . . . . . . . . . . . . . . . . .
Teoría de PID . . . . . . . . . . . . . . . . . . . . . . . . . . .
Proceso PID . . . . . . . . . . . . . . . . . . . . . . . . .
Proceso PID con lazos maestro/esclavo . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
477
478
480
486
488
494
495
497
502
503
504
504
505
505
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
507
508
512
513
514
514
515
515
516
517
517
517
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
519
520
523
526
529
532
535
Capítulo 13
Instrucciones especiales
(FBC, DDT, DTR, PID)
Capítulo 14
Instrucciones trigonométricas
(SIN, COS, TAN, ASN, ASIN, ACS,
ACOS, ATN, ATAN)
8
Introducción . . . . . . .
Seno (SIN) . . . . . . . .
Coseno (COS) . . . . . .
Tangente (TAN) . . . .
Arco seno (ASN) . . . .
Arco coseno (ACS) . .
Arco tangente (ATN) .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Publicación 1756-RM003K-ES-P – Julio 2008
Índice
Capítulo 15
Instrucciones matemáticas
avanzadas
(LN, LOG, XPY)
Introducción . . . . . . . . . . . .
Logaritmo natural (LN) . . . .
Logaritmo base 10 (LOG) . .
X a la potencia de Y (XPY) .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
539
540
543
546
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
549
550
553
556
559
561
Introducción . . . . . . . . . . . . . . . . . . . . .
Ejecución de la instrucción. . . . . . . .
Códigos de error ASCII . . . . . . . . . .
Tipos de datos de cadena. . . . . . . . .
Prueba ASCII para línea de búfer (ABL) .
Caracteres ASCII en el búfer (ACB) . . . .
Borrar ASCII búfer (ACL) . . . . . . . . . . . .
Líneas de handshake ASCII (AHL) . . . . .
Lectura ASCII (ARD) . . . . . . . . . . . . . . .
Lectura ASCII de línea (ARL) . . . . . . . . .
Escritura ASCII con anexo (AWA) . . . . .
Escritura ASCII (ASCII Write (AWT)) . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
565
566
568
569
570
573
575
577
581
585
589
594
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
599
600
601
603
605
607
609
Capítulo 16
Instrucciones de conversión
matemática
(DEG, RAD, TOD, FRD, TRN,
TRUNC)
Introducción . . . . . . . . . .
Grados (DEG). . . . . . . . .
Radianes (RAD) . . . . . . .
Convertir a BCD (TOD). .
Convertir a entero (FRD) .
Truncar (TRN). . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
Capítulo 17
Instrucciones para puerto serie
ASCII
(ABL, ACB, ACL, AHL, ARD, ARL,
AWA, AWT)
Capítulo 18
Instrucciones de cadena ASCII
(CONCAT, DELETE, FIND, INSERT,
MID)
Introducción . . . . . . . . . . . . . . . . . . . .
Tipos de datos de cadena. . . . . . . .
Concatenación de cadenas (CONCAT) .
Eliminación de cadena (DELETE). . . . .
Encontrar cadena (FIND). . . . . . . . . . .
Insertar cadena (INSERT). . . . . . . . . . .
Cadena central (MID) . . . . . . . . . . . . .
.
.
.
.
.
.
.
Capítulo 19
Instrucciones de conversión ASCII Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
Tipos de datos de cadena. . . . . . . . . . . . . . . . . . . . . . . 613
(STOD, STOR, DTOS, RTOS, UPPER,
Cadena
en DINT (STOD). . . . . . . . . . . . . . . . . . . . . . . . . . 614
LOWER)
Cadena en REAL (STOR) . . . . . . . .
DINT en cadena (DTOS) . . . . . . . .
REAL en cadena (RTOS) . . . . . . . .
Mayúsculas (UPPER) . . . . . . . . . . .
Minúsculas (Lower Case (LOWER))
Publicación 1756-RM003K-ES-P – Julio 2008
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
616
619
621
623
625
9
Índice
Capítulo 20
Instrucciones de depuración
(BPT, TPT)
Introducción . . . . . . . . . . . . .
Puntos de interrupción (BPT)
Formato de cadena . . . . .
Puntos de rastreo (TPT). . . . .
Formato de cadena . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
627
627
628
631
631
Introducción . . . . . . . . . . . . . .
Valores inmediatos . . . . . . . . .
Conversiones de datos . . . . . .
SINT o INT en DINT . . . . .
Entero en REAL . . . . . . . . .
DINT en SINT o INT . . . . .
REAL en un número entero
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
635
635
635
637
639
639
640
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Selección de elementos de bloques de funciones . . . . . .
Enclavamiento de datos. . . . . . . . . . . . . . . . . . . . . . . . .
Orden de ejecución. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resolución de un lazo . . . . . . . . . . . . . . . . . . . . . . .
Resolución del flujo de datos entre dos bloques . . . .
Creación de un retardo de escán . . . . . . . . . . . . . . .
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Respuestas de bloque de funciones a condiciones de
overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modos de temporización . . . . . . . . . . . . . . . . . . . . . . .
Parámetros de instrucción comunes para modos de
temporización . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descripción general de los modos de temporización .
Control de programa/operador . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
641
641
642
644
645
647
647
648
Apéndice A
Atributos comunes
Apéndice B
Atributos de bloque de funciones
10
. . 648
. . 649
. . 651
. . 653
. . 654
Publicación 1756-RM003K-ES-P – Julio 2008
Índice
Apéndice C
Programación de texto
estructurado
Índice
Publicación 1756-RM003K-ES-P – Julio 2008
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sintaxis del texto estructurado . . . . . . . . . . . . . . . . . .
Asignaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Especifique una asignación no retentiva . . . . . . . .
Asigne un carácter ASCII a una cadena . . . . . . . . .
Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Use funciones y operadores aritméticos . . . . . . . .
Use operadores relacionales . . . . . . . . . . . . . . . . .
Use operadores lógicos . . . . . . . . . . . . . . . . . . . .
Use operadores a nivel de bits . . . . . . . . . . . . . . .
Determine el orden de ejecución . . . . . . . . . . . . .
Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Construcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Algunas palabras clave están reservadas para uso
futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IF...THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CASE...OF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FOR…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WHILE…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
REPEAT…UNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Códigos de caracteres ASCII . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
659
659
661
662
663
663
665
666
668
669
669
670
671
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
671
672
675
678
681
684
687
697
11
Índice
12
Publicación 1756-RM003K-ES-P – Julio 2008
Resumen de cambios
Introducción
Esta versión del documento contiene información nueva y actualizada.
Para encontrar la información nueva y actualizada, busque barras de
cambio como las mostradas al lado de este párrafo.
Información actualizada
Este documento contiene los siguientes cambios.
Cambio
13Publicación 1756-RM003K-ES-P – Julio 2008
Página
Capítulo 1 – Se combinaron las instrucciones de alarma digital (ALMD)
y de alarma analógica (ALMA) en un capítulo. Se añadió información
sobre configuración, cadenas de mensajes y estados.
29
Capítulo 4 – Se añadieron nuevos atributos de objeto de controlador
GSV/SSV.
180
Capítulo 20 – Se añadieron instrucciones de depuración (PPT, TPT).
627
13
Resumen de cambios
Notas:
14
Publicación 1756-RM003K-ES-P – Julio 2008
Ubicación de instrucciones
Dónde se encuentran las instrucciones
Use esta tabla de ubicación de instrucciones para encontrar
detalles de referencia acerca de las instrucciones Logix (las
instrucciones atenuadas en color gris están disponibles en
otros manuales). Esta tabla de ubicación de instrucciones
también indica los lenguajes de programación disponibles
para las instrucciones.
Si la tabla de ubicación indica:
La instrucción se encuentra en:
un número de página
este manual
control de movimiento
Logix5000 Controllers Motion Instruction Set Reference Manual,
publicación 1756-RM007
PhaseManager
PhaseManager User Manual, publicación LOGIX-UM001
control de procesos
Logix5000 Controllers Process Control and Drives Instruction Set
Reference Manual, publicación 1756-RM006
15Publicación 1756-RM003K-ES-P – Julio 2008
15
Ubicación de instrucciones
Instrucción:
Ubicación:
Lenguajes:
Instrucción:
Ubicación:
Lenguajes:
ABL
609
lógica de escalera
de relés
texto estructurado
AWA
589
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
texto estructurado
bloque de funciones
AWT
594
lógica de escalera
de relés
texto estructurado
317
lógica de escalera
de relés
texto estructurado
Y booleano
texto estructurado
bloque de funciones
326
texto estructurado
bloque de funciones
320
texto estructurado
bloque de funciones
BPT
Puntos de interrupción
627
lógica de escalera
de relés
BRK
473
lógica de escalera
de relés
386
lógica de escalera
de relés
390
lógica de escalera
de relés
295
lógica de escalera
de relés
295
texto estructurado
bloque de funciones
144
lógica de escalera
de relés
texto estructurado
144
lógica de escalera
de relés
texto estructurado
323
texto estructurado
bloque de funciones
Control coordinado
control de
procesos
texto estructurado
bloque de funciones
CLR
295
lógica de escalera
de relés
texto estructurado
206
lógica de escalera
de relés
601
lógica de escalera
de relés
texto estructurado
356
lógica de escalera
de relés
texto estructurado
523
lógica de escalera
de relés
texto estructurado
bloque de funciones
Prueba ASCII para línea de
búfer
ABS
277
Valor absoluto
ACB
573
Caracteres ASCII en el búfer
ACL
575
Borrar ASCII búfer
ACS
532
Arco coseno
ADD
252
Suma
AFI
456
Instrucción siempre falso
AHL
577
Líneas de handshake ASCII
ALM
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
bloque de
funciones, texto
estructurado
lógica de escalera
de relés
texto estructurado
bloque de funciones
Escritura ASCII con anexo
Escritura ASCII
BAND
BNOT
NO booleano
BOR
O booleano
Interrupción
BSL
Desplazamiento de bit a la
izquierda
lógica de escalera
de relés
BSR
lógica de escalera
de relés
texto estructurado
BTD
Desplazamiento de bit a la
derecha
Distribuir campo de bits
Alarma
control de
procesos
texto estructurado
bloque de funciones
BTDT
ALMA
42
lógica de escalera
de relés
texto estructurado
bloque de funciones
BTR
Alarma analógica
ALMD
30
Alarma digital
AND
304
Y a nivel de bits
ARD
581
Lectura ASCII
ARL
585
Lectura ASCII de línea
ASN
529
Arco seno
ATN
535
Arco tangente
AVE
Promedio de archivo
16
366
lógica de escalera
de relés
texto estructurado
bloque de funciones
lógica de escalera
de relés
texto estructurado
bloque de funciones
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
texto estructurado
bloque de funciones
lógica de escalera
de relés
texto estructurado
bloque de funciones
lógica de escalera
de relés
Distribuir campo de bits con
receptor
Mensaje
BTW
Mensaje
BXOR
O exclusivo booleano
CC
Borrar
CMP
Comparar
CONCAT
Concatenar cadenas
COP
Copiar archivo
COS
Coseno
Publicación 1756-RM003K-ES-P – Julio 2008
Ubicación de instrucciones
Instrucción:
Ubicación:
Lenguajes:
Instrucción:
Ubicación:
Lenguajes:
CPS
356
lógica de escalera
de relés
texto estructurado
FAL
335
lógica de escalera
de relés
lógica de escalera
de relés
FBC
478
lógica de escalera
de relés
394
lógica de escalera
de relés
400
lógica de escalera
de relés
Copiar archivo síncrono
CPT
248
Calcular
CTD
132
Conteo regresivo
CTU
128
Conteo progresivo
CTUD
136
Conteo progresivo/regresivo
D2SD
Dispositivo discreto de
2 estados
D3SD
Dispositivo discreto de
3 estados
DDT
control de
procesos
lógica de escalera
de relés
texto estructurado
bloque de funciones
Descarga FIFO
texto estructurado
bloque de funciones
Generador de funciones
control de
procesos
texto estructurado
bloque de funciones
FIND
605
lógica de escalera
de relés
texto estructurado
control de
procesos
362
lógica de escalera
de relés
470
lógica de escalera
de relés
559
lógica de escalera
de relés
bloque de funciones
347
lógica de escalera
de relés
215
lógica de escalera
de relés
texto estructurado
bloque de funciones
219
lógica de escalera
de relés
texto estructurado
bloque de funciones
176
lógica de escalera
de relés
texto estructurado
control de
procesos
texto estructurado
bloque de funciones
Filtro pasaaltos
control de
procesos
texto estructurado
bloque de funciones
ICON
641
bloque de funciones
IMC
Control de modelos interno
control de
procesos
texto estructurado
bloque de funciones
INSERT
607
lógica de escalera
de relés
texto estructurado
texto estructurado
bloque de funciones
486
FLL
FOR
FRD
DEG
553
lógica de escalera
de relés
texto estructurado
bloque de funciones
Grados
603
Eliminar cadena
DFF
FGEN
lógica de escalera
de relés
texto estructurado
bloque de funciones
Derivada
FFU
Llenar archivo
control de
procesos
DERV
FFL
Carga FIFO
Tiempo muerto
DELETE
Comparación de bits de
archivo
Encontrar cadena
Detección de diagnóstico
DEDT
lógica de escalera
de relés
Aritmética y lógica de
archivo
control de
procesos
lógica de escalera
de relés
texto estructurado
texto estructurado
bloque de funciones
Instrucción FOR
Convertir en entero
FSC
Búsqueda y comparación de
archivos
GEQ
Mayor o igual que
GRT
Mayor que
Circuito multivibrador D
control de
procesos
texto estructurado
bloque de funciones
DIV
261
lógica de escalera
de relés
texto estructurado
bloque de funciones
GSV
619
lógica de escalera
de relés
texto estructurado
Límite superior/inferior
Dividir
DTOS
DINT en cadena
DTR
494
Transición de datos
EOT
458
Fin de transición
EQU
206
Igual a
lógica de escalera
de relés
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
texto estructurado
bloque de funciones
Obtener valor del sistema
HLL
HPF
Conector de cable de entrada
Insertar cadena
texto estructurado
bloque de funciones
INTG
Selección mejorada
control de
procesos
Integrador
control de
procesos
texto estructurado
bloque de funciones
EVENT
464
lógica de escalera
de relés
texto estructurado
IOT
201
lógica de escalera
de relés
texto estructurado
ESEL
Activar tarea de evento
Publicación 1756-RM003K-ES-P – Julio 2008
Salida inmediata
17
Ubicación de instrucciones
Instrucción:
Ubicación:
Lenguajes:
Instrucción:
Ubicación:
Lenguajes:
IREF
641
bloque de funciones
MAG
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
Paro de eje de movimiento
control de
movimiento
lógica de escalera
de relés
texto estructurado
MASR
control de
lógica de escalera
de relés
texto estructurado
Referencia de entrada
JKFF
Circuito multivibrador JK
JMP
control de
procesos
436
lógica de escalera
de relés
texto estructurado
bloque de funciones
447
lógica de escalera
de relés
Impulso de eje de
movimiento
434
lógica de escalera
de relés
MAM
Saltar a subrutina externa
LBL
Etiqueta
LDL2
Aplicar diagnósticos de
conexión de movimiento
lógica de escalera
de relés
Saltar a subrutina
JXR
MAHD
434
Saltar a etiqueta
JSR
texto estructurado
bloque de funciones
Engranaje de eje de
movimiento
MAH
Posición inicial de eje de
movimiento
MAJ
Mover eje de movimiento
control de
procesos
texto estructurado
bloque de funciones
MAOC
Avance-retardo
control de
procesos
texto estructurado
bloque de funciones
MAPC
LEQ
223
lógica de escalera
de relés
texto estructurado
bloque de funciones
MAR
Avance-retardo de segundo
orden
LDLG
Menor o igual que
LES
227
Menor que
LFL
406
Carga LIFO
LFU
412
Descarga LIFO
LIM
Filtro pasabajos
MAAT
Aplicar ajuste a eje de
movimiento
MAFR
MAS
lógica de escalera
de relés
texto estructurado
bloque de funciones
Leva de tiempo de eje de
movimiento
(1)
625
lógica de escalera
de relés
texto estructurado
bloque de funciones
MATC
MAVE
Promedio móvil
MAW
Observar brazo de
movimiento
lógica de escalera
de relés
texto estructurado
MAXC
control de
procesos
texto estructurado
bloque de funciones
MCCD
control de
movimiento
lógica de escalera
de relés
texto estructurado
MCCM
control de
Restablecimiento de fallo de movimiento
eje de movimiento
18
Desactivación de eje de
movimiento
540
Minúsculas
LPF
MASD
lógica de escalera
de relés
bloque de funciones
Logaritmo base 10
LOWER
lógica de escalera
de relés
Registro de brazo de
movimiento
231
Logaritmo natural
LOG
lógica de escalera
de relés
Leva de posición de eje de
movimiento
Restablecer desactivación de movimiento
eje de movimiento
Límite
LN
lógica de escalera
de relés
texto estructurado
bloque de funciones
Leva de salida de brazo de
movimiento
lógica de escalera
de relés
texto estructurado
Captura máxima
Dinámica de cambio
coordinado de movimiento
Movimiento circular
coordinado de movimiento
MCCP
Perfil de leva de cálculo de
movimiento
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
procesos
texto estructurado
bloque de funciones
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
procesos
texto estructurado
bloque de funciones
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
Publicación 1756-RM003K-ES-P – Julio 2008
Ubicación de instrucciones
Instrucción:
Ubicación:
Lenguajes:
Instrucción:
Ubicación:
Lenguajes:
MCD
control de
movimiento
lógica de escalera
de relés
texto estructurado
MGSR
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
609
lógica de escalera
de relés
texto estructurado
control de
procesos
texto estructurado
bloque de funciones
Dinámica de cambio de
movimiento
MCLM
Movimiento lineal de
coordenadas de movimiento
MCR
452
Restablecimiento de control
maestro
MCSD
Desactivación de
coordenadas de movimiento
MCS
Paro de coordenadas de
movimiento
MCSR
Restablecimiento de
desactivación de
coordenadas de movimiento
MCT
Transformada de
coordenadas de movimiento
Variador directo de
movimiento desactivado
MDOC
Variador directo de
movimiento activado
MDR
Registro de desarme de
movimiento
MDW
Observar desarme de
movimiento
MEQ
Desactivación de grupo de
movimiento
MGS
IMMC
Control multivariable
modular
control de
procesos
texto estructurado
bloque de funciones
control de
movimiento
lógica de escalera
de relés
texto estructurado
MOD
266
lógica de escalera
de relés
texto estructurado
bloque de funciones
control de
movimiento
lógica de escalera
de relés
texto estructurado
MOV
283
lógica de escalera
de relés
control de
lógica de escalera
de relés
texto estructurado
Módulo
Mover
MRAT
control de
movimiento
control de
movimiento
control de
control de
movimiento
control de
movimiento
control de
movimiento
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
texto estructurado
Ajuste de eje de movimiento movimiento
de marcha
MRHD
control de
Diagnósticos de conexión de movimiento
movimiento de marcha
MRP
237
lógica de escalera
de relés
texto estructurado
bloque de funciones
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
144
lógica de escalera
de relés
texto estructurado
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
procesos
texto estructurado
bloque de funciones
258
lógica de escalera
de relés
texto estructurado
bloque de funciones
control de
procesos
bloque de funciones
Multiplexor
MVM
285
lógica de escalera
de relés
288
texto estructurado
bloque de funciones
274
lógica de escalera
de relés
texto estructurado
bloque de funciones
MSF
Servo de movimiento
desactivado
MSG
Mensaje
MSO
Servo de movimiento
activado
MSTD
Desviación estándar de
movimiento
MUL
MUX
control de
movimiento
lógica de escalera
de relés
texto estructurado
control de
lógica de escalera
de relés
texto estructurado
MVMT
lógica de escalera
de relés
texto estructurado
NEG
control de
Posición de estroboscopio de movimiento
grupo de movimiento
Publicación 1756-RM003K-ES-P – Julio 2008
lógica de escalera
de relés
texto estructurado
control de
movimiento
Posición de redefinir
movimiento
Multiplicar
Paro de grupo de movimiento movimiento
MGSP
MINC
lógica de escalera
de relés
texto estructurado
Máscara igual que
MGSD
Cadena central
control de
movimiento
Leva de salida de
movimiento
desactivación de movimiento
MDO
MID
Captura mínima
MCTP
control de
Posición de transformada de movimiento
cálculo de movimiento
MDF
lógica de escalera
de relés
Restablecimiento de
desactivación de grupo de
movimiento
Mover con máscara
Mover con máscara con
receptor
Cambiar signo
19
Ubicación de instrucciones
Instrucción:
Ubicación:
Lenguajes:
Instrucción:
Ubicación:
Lenguajes:
NEQ
242
lógica de escalera
de relés
texto estructurado
bloque de funciones
PFL
PhaseManager
lógica de escalera
de relés
texto estructurado
457
lógica de escalera
de relés
PID mejorado
control de
procesos
texto estructurado
bloque de funciones
314
lógica de escalera
de relés
texto estructurado
bloque de funciones
PID
497
lógica de escalera
de relés
texto estructurado
texto estructurado
bloque de funciones
Proporcional + Integral
control de
procesos
texto estructurado
bloque de funciones
Filtro de muesca
control de
procesos
OCON
641
bloque de funciones
Multiplicador de impulsos
control de
procesos
texto estructurado
bloque de funciones
88
lógica de escalera
de relés
Proporcional de posición
control de
procesos
texto estructurado
bloque de funciones
POVR
PhaseManager
307
lógica de escalera
de relés
texto estructurado
bloque de funciones
Comando de anulación de
fase de equipo
lógica de escalera
de relés
texto estructurado
PhaseManager
lógica de escalera
de relés
texto estructurado
PhaseManager
lógica de escalera
de relés
texto estructurado
PhaseManager
lógica de escalera
de relés
texto estructurado
PhaseManager
lógica de escalera
de relés
texto estructurado
553
lógica de escalera
de relés
texto estructurado
bloque de funciones
control de
texto estructurado
bloque de funciones
Diferente de
NOP
Sin operación
NOT
NO a nivel de bits
NTCH
Conector de cable de salida
ONS
O a nivel de bits
OREF
641
bloque de funciones
99
texto estructurado
bloque de funciones
94
lógica de escalera
de relés
Referencia de salida
OSFI
Un impulso en flanco
descendente con entrada
OSF
Un impulso en flanco
descendente
OSRI
91
texto estructurado
bloque de funciones
91
lógica de escalera
de relés
82
lógica de escalera
de relés
84
lógica de escalera
de relés
86
lógica de escalera
de relés
PhaseManager
lógica de escalera
de relés
texto estructurado
Activación de salida
OTL
Enclavamiento de salida
OTU
Desenclavamiento de salida
PATT
Conectar a fase de equipo
PCLF
PhaseManager
Fallo de borrado de fase de
equipo
PCMD
Desconectar de fase de
equipo
20
lógica de escalera
de relés
texto estructurado
PhaseManager
lógica de escalera
de relés
texto estructurado
PhaseManager
lógica de escalera
de relés
texto estructurado
Comando de fase de equipo
PDET
PI
PMUL
PPD
Fase de equipo en pausa
PRNP
Parámetros de nueva fase de
equipo
PSC
Estado de fase completo
Solicitud externa de fase de
equipo
RAD
Un impulso en flanco
ascendente
OTE
Proporcional integral
derivativo
PXRQ
Un impulso en flanco
ascendente con entrada
OSR
PIDE
POSP
Un impulso
OR
Fallo de fase de equipo
Radianes
RESD
Restablecimiento dominante procesos
RES
141
lógica de escalera
de relés
436 y 474
lógica de escalera
de relés
texto estructurado
bloque de funciones
control de
procesos
texto estructurado
bloque de funciones
Rampa y estabilización
control de
procesos
texto estructurado
bloque de funciones
RTO
112
lógica de escalera
de relés
124
texto estructurado
bloque de funciones
Restablecer
RET
Retorno
RLIM
Limitador de régimen
RMPS
Temporizador retentivo
activado
RTOR
Temporizador retentivo
activado con
restablecimiento
Publicación 1756-RM003K-ES-P – Julio 2008
Ubicación de instrucciones
Instrucción:
Ubicación:
Lenguajes:
Instrucción:
Ubicación:
Lenguajes:
RTOS
621
lógica de escalera
de relés
texto estructurado
SSV
176
lógica de escalera
de relés
texto estructurado
lógica de escalera
de relés
texto estructurado
bloque de funciones
STD
376
lógica de escalera
de relés
614
lógica de escalera
de relés
texto estructurado
616
lógica de escalera
de relés
texto estructurado
255
lógica de escalera
de relés
texto estructurado
bloque de funciones
300
lógica de escalera
de relés
texto estructurado
526
lógica de escalera
de relés
texto estructurado
bloque de funciones
450
lógica de escalera
de relés
556
lógica de escalera
de relés
bloque de funciones
120
texto estructurado
bloque de funciones
108
lógica de escalera
de relés
116
texto estructurado
bloque de funciones
104
lógica de escalera
de relés
control de
procesos
texto estructurado
bloque de funciones
TPT
Puntos de rastreo
631
lógica de escalera
de relés
561
lógica de escalera
de relés
bloque de funciones
561
texto estructurado
454
lógica de escalera
de relés
texto estructurado
REAL en cadena
SBR
436
Subrutina
SCL
Establecer valor del sistema
Desviación estándar de
archivo
STOD
control de
procesos
texto estructurado
bloque de funciones
control de
procesos
texto estructurado
bloque de funciones
control de
procesos
bloque de funciones
Establecer dominante
control de
procesos
texto estructurado
bloque de funciones
SFP
460
lógica de escalera
de relés
texto estructurado
462
lógica de escalera
de relés
texto estructurado
520
lógica de escalera
de relés
texto estructurado
bloque de funciones
TND
lógica de escalera
de relés
texto estructurado
Convertir en BCD
control de
procesos
texto estructurado
bloque de funciones
Temporizador de retardo a la
desconexión con
restablecimiento
control de
procesos
texto estructurado
bloque de funciones
TOF
420
lógica de escalera
de relés
TONR
428
lógica de escalera
de relés
Temporizador de retardo a la
conexión con
restablecimiento
424
lógica de escalera
de relés
TON
lógica de escalera
de relés
bloque de funciones
TOT
Escalar
SCRV
Curva en S
SEL
Seleccionar
SETD
Pausa SFC
SFR
Restablecer SFC
SIN
Seno
SIZE
381
Tamaño en elementos
SNEG
Cambiar signo seleccionado
SOC
Controlador de segundo
orden
SQI
Secuenciador de entrada
SQL
Carga de secuenciador
SQO
Secuenciador de salida
SQR
270
Raíz cuadrada
SQRT
Dividir rango de tiempo
proporcional
SSUM
Sumador seleccionado
Cadena en REAL
SUB
SWPB
Intercambiar byte
TAN
Tangente
Fin temporal
TOD
TOFR
Temporizador de retardo a la
desconexión
Temporizador de retardo a la
conexión
Totalizador
270
texto estructurado
371
lógica de escalera
de relés
texto estructurado
TRN
control de
procesos
texto estructurado
bloque de funciones
TRUNC
control de
procesos
texto estructurado
bloque de funciones
Clasificación de archivo
SRTP
STOR
Restar
Raíz cuadrada
SRT
Cadena en DINT
Publicación 1756-RM003K-ES-P – Julio 2008
Truncar
Truncar
UID
Inhabilitación de interrupción
de usuario
21
Ubicación de instrucciones
Instrucción:
Ubicación:
Lenguajes:
UIE
454
lógica de escalera
de relés
texto estructurado
control de
procesos
texto estructurado
bloque de funciones
623
lógica de escalera
de relés
texto estructurado
78
lógica de escalera
de relés
80
lógica de escalera
de relés
310
lógica de escalera
de relés
texto estructurado
bloque de funciones
546
lógica de escalera
de relés
texto estructurado
bloque de funciones
Habilitación de interrupción
de usuario
UPDN
Acumulador progresivo/
regresivo
UPPER
Mayúsculas
XIC
Examinar si está cerrado
XIO
Examinar si está abierto
XOR
O exclusivo a nivel de bits
XPY
X a la potencia de Y
(1)
22
Publicación 1756-RM003K-ES-P – Julio 2008
Prefacio
Instrucciones generales de controladores
Logix5000™
Introducción
Este manual es uno de varios manuales de instrucciones del sistema
Logix5000.
Tarea/meta
Documentos
Programar el controlador para aplicaciones
secuenciales
Manual de referencia de instrucciones generales de controladores Logix5000,
publicación 1756-RM003
Usted se encuentra aquí
Programar el controlador para aplicaciones
de procesos o de variadores
Logix5000 Controllers Process Control and Drives Instructions Reference Manual,
publicación 1756-RM006
Programar el controlador para aplicaciones
de control de movimiento
Logix5000 Controllers Motion Instruction Set Reference Manual, publicación
1756-RM007
Programar el controlador para usar fases de
equipo
PhaseManager User Manual, publicación LOGIX-UM001
Importar un archivo de texto o tags en un
proyecto
Logix5000 Controllers Import/Export Reference Manual, publicación 1756-RM084
Exportar un proyecto o tags a un archivo de
texto
Convertir una aplicación de PLC-5 o SLC 500 Logix5550 Controller Converting PLC-5 or SLC 500 Logic to Logix5550 Logic Reference
en una aplicación Logix5000
Manual, publicación 1756-6.8.5
A quién está dirigido este
manual
Este documento proporciona al programador los detalles acerca de
cada una de las instrucciones disponibles para un controlador basado
en Logix. El usuario ya debe estar familiarizado con la manera en que
el controlador basado en Logix almacena y procesa datos.
Los programadores sin experiencia deben leer todos los detalles de
una instrucción antes de usarla. Los programadores con experiencia
pueden consultar la información sobre las instrucciones para verificar
detalles.
23Publicación 1756-RM003K-ES-P – Julio 2008
23
Prefacio
Instrucciones generales de controladores Logix5000™
Propósito de este manual
Este manual proporciona una descripción de cada instrucción en este
formato:
Esta sección
Proporciona este tipo de información
Nombre de la instrucción
identifica la instrucción
define si la instrucción es una instrucción de entrada o de salida
Operandos
lista de todos los operandos de la instrucción
si está disponible en lógica de escalera de relés, describe los operandos
si está disponible en texto estructurado, describe los operandos
si está disponible en bloque de funciones, describe los operandos
Los pines mostrados en un bloque de funciones predeterminado son sólo los pines
predeterminados. La tabla de operandos indica todos los pines posibles para un
bloque de funciones.
Estructura de la instrucción indica los bits y valores de estado de control de la instrucción, si los hay
Descripción
describes el uso de la instrucción
define cualquier diferencia cuando la instrucción está habilitada e inhabilitada,
si corresponde
Indicadores de estado
aritmético
define si la instrucción afecta o no los indicadores de estado aritmético
consulte el apéndice Atributos comunes
Condiciones de fallo
define si la instrucción genera o no genera fallos menores o mayores
de ser así, define el tipo de fallo y el código
Ejecución
especifica cómo funciona la instrucción
Ejemplo
proporciona por lo menos un ejemplo de programación en cada lenguaje de programación
disponible
incluye una descripción que explica cada ejemplo
Los siguientes iconos ayudan a identificar información específica del
lenguaje:
Este icono
Indica este lenguaje de programación
lógica de escalera de relés
texto estructurado
bloque de funciones
24
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones generales de controladores Logix5000™
Información común para
todas las instrucciones
Prefacio
El conjunto de instrucciones Logix5000 tiene algunos atributos
comunes:
Para esta información
Vea este apéndice
atributos comunes
El apéndice Atributos comunes define:
• indicadores de estado aritmético
• tipos de datos
• palabras clave
atributos de bloques de
funciones
El apéndice Atributos de bloque de funciones:
• control del programa y del operador
• modos de temporización
Convenciones y términos
relacionados
Establecer y borrar
Este manual usa las funciones de establecer y borrar para definir el
estado de los bits (booleanos) y los valores (no booleanos):
Este término
Significa
establecer
el bit se establece en 1 (ON)
un valor se establece en cualquier número que no sea
cero
borrar
el bit se pone en 0 (desactivado)
todos los bits de un valor se ponen en 0
Si un operando o parámetro acepta más de un tipo de datos, los tipos
de datos en negrita indican tipos de datos óptimos. Las instrucciones
se ejecutan más rápidamente y requieren menos memoria si todos los
operandos de instrucción usan el mismo tipo de datos óptimos,
típicamente DINT o REAL.
Publicación 1756-RM003K-ES-P – Julio 2008
25
Prefacio
Instrucciones generales de controladores Logix5000™
Condición de renglón de lógica de escalera de relés
El controlador evalúa las instrucciones de lógica de escalera según la
condición de renglón que precede a la instrucción (condición de
entrada del renglón). Según la condición de entrada de renglón y la
instrucción, el controlador establece la condición de renglón que
sigue la instrucción (condición de salida de renglón), lo cual, a su vez,
afecta cualquier instrucción subsiguiente.
instrucción de entrada
condición
de entrada
de renglón
instrucción de salida
condición
de salida
de renglón
Si la condición de entrada de renglón de una instrucción de entrada
es verdadera, el controlador evalúa la instrucción y establece la
condición de renglón de entrada según los resultados de la
instrucción. Si la instrucción se evalúa como verdadera, la condición
de salida del renglón es verdadera; si la instrucción se evalúa como
falsa, la condición de salida del renglón es falsa.
El controlador también preescanea las instrucciones. El preescán es un
escán especial de todas las rutinas en el controlador. El controlador
escanea todas las rutinas principales y subrutinas durante el preescán,
pero ignora saltos que podrían omitir la ejecución de las
instrucciones. El controlador ejecuta todos los lazos FOR y llamadas
de subrutina. Si una subrutina se llama más de una vez, se ejecuta
cada vez que se llama. El controlador usa el preescán de las
instrucciones de lógica de escalera de relés para restablecer E/S no
retentivas y valores internos.
Durante el preescán, los valores de entrada no están actualizados y no
se escriben las salidas. Las siguientes condiciones generan un
preescán:
• Conmutar del modo de programación al modo de marcha
• Entrar automáticamente al modo de marcha tras encender la
unidad.
Un preescán no se produce para un programa cuando:
• El programa se prioriza mientras el controlador está en
ejecución.
• El programa se desprioriza cuando el controlador entra al modo
de marcha.
26
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones generales de controladores Logix5000™
Prefacio
Estados del bloque de funciones
IMPORTANTE
Cuando se programa un bloque de funciones, es necesario restringir el rango de
unidades de ingeniería a +/-10+/-15 puesto que los cálculos de punto flotante (coma
flotante) internos se realizan usando un punto flotante (coma flotante) de precisión
simple. Las unidades de ingeniería que no se están dentro de este rango pueden
provocar una pérdida de exactitud si los resultados se acercan a las limitaciones de
punto flotante (coma flotante) de precisión simple (+/-10+/-38).
El controlador evalúa las instrucciones de bloques de funciones según
el estado de condiciones diferentes.
Posible condición
Descripción
preescán
El preescán para las rutinas de bloques de funciones es igual que para las rutinas de lógica de escalera de
relés. La única diferencia radica en que el parámetro EnableIn para cada instrucción de bloque de funciones
se borra durante el preescán.
primer escán de instrucción El primer escán de instrucción se refiere a la primera vez que se ejecuta una instrucción después del
preescán. El controlador usa el primer escán de instrucción para leer las entradas actuales y determinar el
estado apropiado en que estarán
primera ejecución de
instrucción
La primera ejecución de instrucción se refiere a la primera vez que la instrucción se ejecuta con una nueva
instancia de estructura de datos. El controlador usa la primera ejecución de instrucción para generar
coeficientes y otros almacenamientos de datos que no cambian para un bloque de funciones después de
una descarga inicial.
Cada instrucción de bloque de funciones incluye también los
parámetros EnableIn y EnableOut:
• las instrucciones de bloques de funciones se ejecutan
normalmente cuando se establece EnableIn.
• cuando EnableIn se borra, la instrucción de bloque de funciones
ejecuta la lógica de preescán, la lógica de post-escán o
simplemente omite la ejecución del algoritmo normal.
• EnableOut es similar a EnableIn; sin embargo, si la ejecución del
bloque de funciones detecta una condición de overflow,
EnableOut también se borra.
• la ejecución del bloque de funciones se reanuda desde donde se
detuvo cuando EnableIn cambió de borrado a establecido. Sin
embargo, hay algunas instrucciones de bloques de funciones
que especifican una funcionalidad especial, tal como la función
de reinicialización, cuando EnableIn cambia de borrado a
establecido. Para las instrucciones de bloques de funciones con
parámetros basados en tiempo, cada vez que el modo de
temporización es sobremuestreo, la instrucción siempre se
reanuda donde se detuvo cuando EnableIn cambió de borrado a
establecido.
Si el parámetro EnableIn no está cableado, la instrucción siempre se
ejecuta como normal y EnableIn permanece establecido. Si usted
borra EnableIn, éste cambia para establecerse la próxima vez que se
ejecute la instrucción.
Publicación 1756-RM003K-ES-P – Julio 2008
27
Prefacio
Instrucciones generales de controladores Logix5000™
Notas:
28
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
1
Instrucciones basadas en Logix para alarmas
y eventos FactoryTalk
(ALMD, ALMA)
Introducción
Si desea
detectar alarmas basadas en condiciones
booleanas (verdadero/falso)
Estas instrucciones de alarma basadas en Logix están disponibles en
lógica de escalera de relés, texto estructurado y diagrama de bloques
de funciones. Cuando se usan con las versiones 5.0 y posteriores del
software FactoryTalk View SE, estas instrucciones crean un sistema de
alarmas con su paquete de visualización. El controlador detecta
condiciones de alarma y publica eventos para los servidores de
alarmas y eventos de FactoryTalk View que propagan las alarmas a los
clientes Factory Talk View SE suscritos para recibir notificaciones.
Use esta instrucción
ALMD
Disponible en estos lenguajes
lógica de escalera de relés
Vea la página
30
texto estructurado
bloque de funciones
detectar alarmas en base al nivel o velocidad
de cambio de un valor
ALMA
lógica de escalera de relés
42
texto estructurado
bloque de funciones
29Publicación 1756-RM003K-ES-P – Julio 2008
29
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Alarma digital (ALMD)
La instrucción ALMD detecta alarmas basadas en condiciones
booleanas (verdadero/falso) Los parámetros de control de programa
(Prog) y de operador (Oper) proporcionan una interface para los
comandos de alarma.
Operandos:
Lógica de escalera de relés
En la lógica de escalera de relés, la entrada de condición de alarma
(In) se obtiene a partir de la condición de renglón.
Operando
Tipo
Formato
Descripción
tag ALMD
ALARM_DIGITAL
Estructura
Estructura ALMD
In
BOOL
Tag
Inmediato
Texto estructurado solamente.
El valor se copia a In cuando se ejecuta la instrucción. El valor
de entrada de alarma es comparado para determinar si existe
una alarma.
ProgAck
BOOL
Tag
Inmediato
El valor se copia a ConfProg (ProgAck) cuando se ejecuta la
instrucción. En la transición de borrado a establecido, confirma
la alarma (si se requiere confirmación).
ProgReset
BOOL
Tag
Inmediato
El valor se copia a RestabProg (ProgReset) cuando se ejecuta
la instrucción. En la transición de borrado a establecido, borra
la alarma (si se requiere).
ProgDisable
BOOL
Tag
Inmediato
El valor se copia a InhabProg (ProgDisable) cuando se ejecuta
la instrucción. Cuando se establece, inhabilita la alarma
(no anula los comandos de habilitación).
ProgEnable
BOOL
Tag
Inmediato
El valor se copia a HabilitProg (ProgEnable) cuando se ejecuta
la instrucción. Cuando se establece, habilita la alarma
(tiene precedencia sobre los comandos de inhabilitación).
MinDurationPRE
DINT
Inmediato
Lógica de escalera de relés solamente.
Especifica la duración de la alarma antes de que sea reportada
(milisegundos).
MinDurationACC
DINT
Inmediato
Lógica de escalera de relés solamente.
Indica el número de milisegundos que han transcurrido desde
que se cumplió la condición de la alarma.
Texto estructurado
ALMD(ALMD, In, ProgAck,
ProgReset, ProgDisable,
ProgEnable);
30
Los operandos son iguales a los de la instrucción ALMD de lógica
de escalera de relés, con algunas excepciones como se indicó
anteriormente.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Bloque de funciones
Operando
Tipo
Formato
Descripción
tag ALMD
ALARM_DIGITAL
Estructura
Estructura ALMD
Estructura ALARM_DIGITAL
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Lógica de escalera de relés:
Corresponde al estado del renglón. No afecta el procesamiento.
Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción siempre se ejecuta.
In
BOOL
La entrada de señal digital para la instrucción.
La opción predeterminada es borrado.
Lógica de escalera de relés:
Sigue la condición del renglón. Se establece si la condición del renglón es verdadera.
Se borra si la condición del renglón es falsa.
Texto estructurado:
Copiado del operando de instrucción.
InFault
BOOL
Indicador de estado deficiente para la entrada. El usuario puede establecer InFault para
indicar que la señal de entrada tiene un error. Cuando se establece, la instrucción establece
InFaulted (Status.1). Cuando se borra, la instrucción borra InFaulted (Status.1). En cualquier
caso, la instrucción continúa evaluando In en lo que respecta a las condiciones de alarma.
La opción predeterminada es borrado (buen estado).
Condition
BOOL
Especifica cómo se activa la alarma. Cuando se establece la condición, se activa la condición
de alarma cuando In se establece. Cuando se borra la condición, se activa la condición de
alarma cuando In se borra.
La opción predeterminada es establecido.
Publicación 1756-RM003K-ES-P – Julio 2008
31
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Parámetro de
entrada
Tipo de datos
Descripción
AckRequired
BOOL
Especifica si se requiere confirmación de alarma. Cuando se establece, requiere
confirmación. Cuando se borra, no se requiere confirmación y siempre se establece Acked.
La opción predeterminada es establecido.
Latched
BOOL
Especifica si la alarma está enclavada. Las alarmas enclavadas permanecen InAlarm cuando
la condición de alarma se hace falsa, hasta que se reciba un comando de restablecimiento
(Reset). Cuando se establece, se enclava la alarma. Cuando se borra, se desenclava la
alarma.
Una alarma enclavada sólo puede restablecerse cuando la condición de alarma es falsa.
La opción predeterminada es borrado.
ProgAck
BOOL
Se establece mediante el programa de usuario para confirmar la alarma. Requiere que una
transición cambie de borrado a establecido mientras la alarma no está confirmada.
La opción predeterminada es borrado.
Lógica de escalera de relés:
Copiado del operando de instrucción.
Texto estructurado:
Copiado del operando de instrucción.
OperAck
BOOL
Se establece mediante la interface del operador para confirmar la alarma. Requiere que una
transición cambie de borrado a establecido mientras la alarma no está confirmada.
La instrucción borra este parámetro.
La opción predeterminada es borrado.
ProgReset
BOOL
Se establece mediante el programa de usuario para restablecer la alarma. Requiere que una
transición cambie de borrado a establecido mientras la alarma está InAlarm y la condición In
no está en alarma.
La opción predeterminada es borrado.
Lógica de escalera de relés:
Copiado del operando de instrucción.
Texto estructurado:
Copiado del operando de instrucción.
OperReset
BOOL
Se establece mediante la interface del operador para restablecer la alarma. Requiere que
una transición cambie de borrado a establecido mientras la alarma está InAlarm y la
condición In no está en alarma. La instrucción de alarma borra este parámetro.
La opción predeterminada es borrado.
ProgSuppress
BOOL
Se establece mediante el programa de usuario para suprimir la alarma.
La opción predeterminada es borrado.
OperSuppress
BOOL
Se establece mediante la interface del operador para suprimir la alarma. La instrucción de
alarma borra este parámetro.
La opción predeterminada es borrado.
32
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Parámetro de
entrada
Tipo de datos
Descripción
ProgUnsuppress
BOOL
Se establece mediante el programa de usuario para cancelar la supresión de la alarma. Tiene
precedencia sobre los comandos de supresión.
La opción predeterminada es borrado.
OperUnsuppress
BOOL
Se establece mediante la interface del operador para cancelar la supresión de la alarma.
Tiene precedencia sobre los comandos de supresión. La instrucción de alarma borra este
parámetro.
La opción predeterminada es borrado.
ProgDisable
BOOL
Se establece mediante el programa de usuario para inhabilitar la alarma.
La opción predeterminada es borrado.
Lógica de escalera de relés:
Copiado del operando de instrucción.
Texto estructurado:
Copiado del operando de instrucción.
OperDisable
BOOL
Se establece mediante la interface del operador para inhabilitar la alarma. La instrucción de
alarma borra este parámetro.
La opción predeterminada es borrado.
ProgEnable
BOOL
Se establece mediante el programa de usuario para habilitar la alarma. Tiene precedencia
sobre un comando de inhabilitación.
La opción predeterminada es borrado.
Lógica de escalera de relés:
Copiado del operando de instrucción.
Texto estructurado:
Copiado del operando de instrucción.
OperEnable
BOOL
Se establece mediante la interface del operador para habilitar la alarma. Tiene precedencia
sobre un comando de inhabilitación. La instrucción de alarma borra este parámetro.
La opción predeterminada es borrado.
AlarmCountReset
BOOL
Se establece mediante el programa de usuario para restablecer el conteo de alarmas. Una
transición que cambia de borrado a establecido restablece el conteo de alarmas a cero.
La opción predeterminada es borrado.
UseProgTime
BOOL
Especifica si se usa el reloj del controlador o el valor ProgTime para aplicar sello de hora a
eventos de cambio de estado. Cuando se establece, el valor de ProgTime proporciona el sello
de hora. Cuando se borra, el reloj del controlador proporciona el sello de hora.
La opción predeterminada es borrado.
Publicación 1756-RM003K-ES-P – Julio 2008
33
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Parámetro de
entrada
Tipo de datos
Descripción
ProgTime
LINT
Si UseProgTime se establece, este valor se usa para proporcionar el valor de sello de hora
para todos los eventos. Esto permite que la aplicación aplique sellos de hora obtenidos del
origen de la alarma, tal como un módulo de entrada de secuencia de eventos.
Severity
DINT
Severidad de la alarma. Esto no afecta el procesamiento de alarmas por parte del
controlador, pero puede usarse para clasificar y filtrar funciones en el subscriptor de alarmas.
Válido = 1...1000 (1000 = más severa; 1 = menos severa).
Valor predeterminado = 500.
MínDurationPRE
DINT
Preajuste de duración mínima (milisegundos) para que la condición de alarma permanezca
verdadera antes de que la alarma sea marcada como InAlarm y se envíe notificación de
alarma a los clientes. El controlador recolecta los datos de alarma tan pronto como se
detecta la condición de alarma; por lo tanto, no se pierden datos durante la espera hasta
cumplir con la duración mínima.
Válido = 0...2,147,483,647.
Valor predeterminado = 0.
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
Habilitación de salida.
InAlarm
BOOL
Estado activo de alarma. Se establece cuando la alarma está activa. Se borra cuando la
alarma no está activa (estado normal).
Acked
BOOL
Estado de alarma confirmada. Se establece cuando la alarma está confirmada. Se borra
cuando la alarma no está confirmada.
Acked siempre se establece cuando AckRequired se borra.
InAlarmUnack
BOOL
Combinación de alarma activa y estado confirmado. Se establece cuando la alarma está
activa (InAlarm está establecido) y no confirmada (Acked está borrado). Se borra cuando la
alarma está normal (inactiva), confirmada, o ambas.
Suppressed
BOOL
Estado suprimido de la alarma. Se establece cuando la alarma está suprimida. Se borra
cuando la alarma no está suprimida.
Disabled
BOOL
Estado inhabilitado de la alarma. Se establece cuando la alarma está inhabilitada. Se borra
cuando la alarma está habilitada.
MínDurationACC
DINT
Tiempo transcurrido desde que se detectó la alarma Cuando este valor llega a
MínDuraciónPRE, la alarma se activa (InAlarm está establecido) y se envía una notificación a
los clientes.
AlarmCount
DINT
Número de veces que se activó la alarma (InAlarm está establecido). Si se llega al valor
máximo, el contador deja el valor en el máximo valor de conteo.
InAlarmTime
LINT
Sello de hora de la detección de alarma.
AckTime
LINT
Sello de hora de confirmación de alarma. Si la alarma no requiere confirmación, este sello de
hora es igual a la hora de la alarma.
RetToNormalTime
LINT
Sello de hora del retorno de la alarma al estado normal.
AlarmCountResetTime LINT
Sello de hora que indica cuándo se restableció la alarma.
DeliveryER
Error de entrega del mensaje de notificación de alarma. Se establece cuando hay un error de
entrega: es decir, ningún subscriptor de alarma estaba suscrito o por lo menos un suscriptor
no recibió el último mensaje de estado de cambio de alarma. Se borra cuando la entrega es
exitosa o está en curso.
34
BOOL
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Parámetro de salida Tipo de datos
Descripción
DeliveryDN
BOOL
Entrega del mensaje de notificación de alarma realizada. Se establece cuando la entrega es
exitosa: por lo menos un suscriptor estaba suscrito y todos los suscriptores recibieron
correctamente el último mensaje de estado de cambio de alarma. Se borra cuando la entrega
no se realizó correctamente o está en curso.
DeliveryEN
BOOL
Estado de entrega del mensaje de notificación de alarma. Se establece cuando la entrega
está en curso. Se borra cuando la entrega no está en curso.
NoSubscriber
BOOL
La alarma no tenía suscriptores cuando se intentó entregar el mensaje más reciente. Se
establece cuando no hay suscriptores. Se borra cuando hay por lo menos un suscriptor.
NoConnection
BOOL
Los subscriptores de la alarma no estaban conectados cuando se intentó entregar el mensaje
más reciente. Se establece cuando todos los suscriptores están desconectados. Se borra
cuando por lo menos un suscriptor está conectado o cuando no hay suscriptores.
CommError
BOOL
Error de comunicación al entregar un mensaje de alarma. Se establece cuando hay errores de
comunicación y se han usado todos los reintentos. Esto significa que un suscriptor estaba
suscrito y tenía una conexión, pero el controlador no recibió confirmación de la entrega del
mensaje. Se borra cuando todos los suscriptores conectados confirman recepción del
mensaje de alarma.
AlarmBuffered
BOOL
Mensaje de alarma almacenado en el búfer debido a error de comunicación (ComError está
establecido) o pérdida de conexión (NoConnection está establecido). Se establece cuando el
mensaje de alarma se almacena en el búfer por lo menos para un suscriptor. Se borra cuando
el mensaje de alarma no se almacena en el búfer.
Subscribers
DINT
Número de suscriptores para esta alarma.
SubscNotified
DINT
Número de suscriptores notificados correctamente acerca del cambio de estado de alarma
más reciente.
Status
DINT
Indicadores de estado combinados:
Status.0 = InstructFault.
Status.1 = InFaulted.
Status.2 = SeverityInv.
InstructFault (Status.0) BOOL
Existen condiciones de error de instrucción. Éste no es un error menor ni mayor del
controlador. Verifique los bits de estado restantes para determinar lo que ocurrió.
InFaulted (Status.1)
BOOL
El programa del usuario estableció InFault para indicar datos de entrada de mala calidad.
La alarma continúa evaluando In en lo que respecta a la condición de alarma.
SeverityInv (Status.2)
BOOL
La severidad de la alarma no es válida.
Si la severidad <1, la instrucción usa Severity = 1.
Si la severidad >1000, la instrucción usa Severity = 1000.
Descripción La instrucción ALMD detecta alarmas con base en condiciones
booleanas (verdadero/falso)
La instrucción ALMD proporciona funcionalidad adicional cuando se
usa con el software RSLinx Enterprise y FactoryTalk View SE. Usted
puede mostrar alarmas en las pantallas Alarm Summary, Alarm
Banner, Alarm Status Explorer y Alarm Log Viewer del software
FactoryTalk View SE.
Publicación 1756-RM003K-ES-P – Julio 2008
35
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
El software RSLinx Enterprise se encarga de las alarmas en el
controlador. Use los parámetros de salida para monitorear la
instrucción a fin de ver el estado de suscripción de alarmas y para
mostrar cambios de estado de alarmas. Si se pierde una conexión con
el software RSLinx Enterprise, el controlador puede almacenar en el
búfer datos de alarmas brevemente hasta que se restaure la conexión.
Diagramas de estado cuando se requiere confirmación
Enclavado
= Falso
Latched
= False
InAlarm = Falso
En== Condition,
Condición,MinDurationACC
MinDurationACC >=
>= Min
DurationPRE
In
MinDurationPRE
InAlarm = False
Acked
= Verdadero
Acked = True
Ack11
Ack
InAlarm = Falso
IInn
InAlarm = False
Acked==False
Falso
Acked
ón n
dici itio
C=onCond
=
!
In In !
EE
nPPRR
atio
r
u
D
Min
C >=
C
C
C
A
A
n
ttioion In
I!n= !C
uurraa
=oCnod
ininDD
M
M
,
,
nitdioicn
nn
o
ó
i
i
t
c
i
ión
d
n
Co
== C
InAlarm = Verdadero
InAlarm = True
Acked = Falso
Acked = False
1
Ack
Ack1
InAlarm = Verdadero
InAlarm = True
Acked
= Verdadero
Acked = True
Enclavado
= Verdadero
Latched
= True
InAlarm = Falso
In== Condition,
Condición, MinDurationACC
MinDurationACC >=
>= MinDurationPRE
In
MinDurationPRE
InAlarm
= Verdadero
InAlarm = True
Acked == Falso
False
Acked
InAlarm = False
Acked
= Verdadero
Acked
= True
2
2
!= Condición,
Reset
In != In
Condition,
Reset
InIn!
=!=CC
onodnd
itiioció
n,nR,
eRsees 2 2
tet
1
Ack
Ack1
InAlarm
= Verdadero
InAlarm = True
Acked
= Verdadero
Acked
= True
1
La
1 alarma puede confirmarse de diferentes maneras: ProgAck, OperAck, clientes
Alarm can be acked by several different ways: ProgAck, OperAck, clients (RSLogix 5000
(software
RSLogix
5000,
software RSView).
software,
RSView
software).
2
La
2 alarma puede restablecerse de diferentes maneras: ProgReset, OperReset, clientes
Alarm can be reset by several different ways: ProgReset, OperReset, clients (RSLogix 5000
(software
RSLogix
5000,
software RSView).
software,
RSView
software).
36
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Diagramas de estado cuando no se requiere confirmación
Enclavado
Latched
= False=
Falso
In = Condición, MinDurationACC >=
In = Condition, MinDurationACC
>= MinDurationPRE
MinDurationPRE
InAlarm
= Falso
InAlarm = False
InAlarm
= Verdadero
InAlarm
= True
Acked= =True
Acked
Verdadero
InAlarm
= Verdadero
InAlarm
= True
Acked= =True
Acked
Verdadero
In In
!=!=Condición
Condition
Enclavado
Latched
= True=
Verdadero
In = Condición, MínDuraciónACC >=
MínDuraciónPRE
In = Condition, MinDurationACC
>= MinDurationPRE
InAlarm
Falso
InAlarm == False
In In
!=!=Condición,
Resset
Condition, Reset
1
1
1 La alarma puede restablecerse de diferentes maneras: ProgReset, OperReset, clientes
1
Alarm can be reset by several different ways: ProgReset, OperReset, clients (RSLogix 5000
(software
RSLogixsoftware)
5000, software RSView).
software, RSView
Indicadores de estado
aritmético: ninguno
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
InAlarma se borra y Acked se establece.
Todas las peticiones del operador, sellos de hora e
indicadores de entrega se borran.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como falsa.
EnableIn y EnableOut se borran.
El Parámetro In se borra y la instrucción realiza una
evaluación para determinar el estado de la alarma.
condición de entrada de
renglón es verdadera
La condición de salida de renglón se establece como
verdadera.
EnableIn y EnableOut se establecen
El Parámetro In se establece y la instrucción realiza una
evaluación para determinar el estado de la alarma.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
37
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Condición
Acción de bloque de funciones
Acción de texto estructurado
preescán
Todas las peticiones del operador, sellos de hora e
indicadores de entrega se borran.
Todas las peticiones del operador, sellos de hora e
indicadores de entrega se borran.
InAlarm se borra y Acked se establece.
InAlarm se borra y Acked se establece.
primer escán de instrucción Ninguna.
Ninguna.
primera ejecución de
instrucción
Ninguna.
Ninguna.
EnableIn se borra
La instrucción no se ejecuta.
La instrucción se ejecuta.
EnableOut se borra.
EnableOut siempre se establece.
La instrucción se ejecuta.
La instrucción se ejecuta.
EnableOut se establece.
EnableOut siempre se establece.
Ninguna.
Ninguna.
EnableIn se establece
post-escán
Confirmación de alarma ALMD requerida y enclavada
38
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Confirmación de alarma ALMD requerida y no enclavada
Confirmación de alarma ALMD no requerida y enclavada
Publicación 1756-RM003K-ES-P – Julio 2008
39
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Confirmación de alarma ALMD no requerida y no enclavada
Ejemplo: Se combinan dos señales de fallo de motor, de manera que si se
presenta uno de ellos, se activa una alarma de fallo de motor.
Confirme programáticamente la alarma con una transición de borrado
a establecido del valor del tag Motor101Ack. La lógica de la aplicación
debe borrar Motor101Ack.
Lógica de escalera de relés
40
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Texto estructurado
Motor101FaultConditions := Motor101Overtemp OR
Motor101FailToStart;
ALMD(Motor101Fault,Motor101FaultConditions,Motor101Ack,
0,0,0 );
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
41
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Alarma Analógica (ALMA)
La instrucción ALMA detecta alarmas basadas en el nivel o velocidad
de cambio de un valor analógico. Los parámetros de control de
programa (Prog) y de operador (Oper) proporcionan una interface
para los comandos de alarma.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
tag ALMA
ALARM_ANALOG
Estructura
Estructura ALMA
In
REAL
DINT
INT
SINT
Tag
inmediato
El valor se copia a In cuando se ejecuta la instrucción. El valor
de entrada de alarma, que se compara con los límites de
alarma para detectar las condiciones de la alarma.
ProgAckAll
BOOL
Tag
Inmediato
El valor se copia a ProgAckAll cuando se ejecuta la
instrucción. En la transición de borrado a establecido, confirma
todas las condiciones de alarma que requieren confirmación.
ProgDisable
BOOL
Tag
Inmediato
El valor se copia a ProgDisable cuando se ejecuta la
instrucción. Cuando se establece, inhabilita la alarma
(no anula los comandos de habilitación).
ProgEnable
BOOL
Tag
Inmediato
El valor se copia a ProgEnable cuando se ejecuta la
instrucción. Cuando se establece, habilita la alarma
(tiene precedencia sobre los comandos de inhabilitación).
HHlimit
REAL
Inmediato
Lógica de escalera de relés solamente.
Límite de alarma alta alta.
HLimit
REAL
Inmediato
Lógica de escalera de relés solamente.
Límite de alarma alta.
LLimit
REAL
Inmediato
Lógica de escalera de relés solamente.
Límite de alarma baja.
LLLimit
REAL
Inmediato
Lógica de escalera de relés solamente.
Límite de alarma baja baja.
42
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Texto estructurado
ALMA(ALMA, In, ProgAckAll,
ProgDisable, ProgEnable);
Los operandos son iguales a los de la instrucción ALMD de lógica
de escalera de relés, con algunas excepciones como se indicó
anteriormente.
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
Operando
Tipo
Formato
Descripción
tag ALMA
ALARM_ANALOG
Estructura
Estructura ALMA
43
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Estructura ALARM_ANALOG
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Lógica de escalera de relés:
Corresponde al estado del renglón. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
Texto estructurado:
Ningún efecto. La instrucción siempre se ejecuta.
Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
In
REAL
El valor de entrada de alarma, el cual se compara con los límites de alarma para detectar las
condiciones de la alarma.
Valor predeterminado = 0.0.
Lógica de escalera de relés:
Copiado del operando de instrucción.
Texto estructurado:
Copiado del operando de instrucción.
InFault
BOOL
Indicador de estado deficiente para la entrada. El usuario puede establecer InFault para indicar
que la señal de entrada tiene un error. Cuando se establece, la instrucción establece InFaulted
(Status.1). Cuando se borra, la instrucción borra InFaulted (Status.1). En cualquier caso, la
instrucción continúa evaluando In en lo que respecta a las condiciones de alarma.
La opción predeterminada es borrado (buen estado).
HHEnabled
BOOL
Detección de condición de alarma alta alta. Se establece para habilitar la detección de la
condición de alarma alta alta. Se borra para inhabilitar la detección de la condición de alarma
alta alta.
La opción predeterminada es establecido.
HabilitadaA
BOOL
Detección de condición de alarma alta. Se establece para habilitar la detección de la condición
de alarma alta. Se borra para inhabilitar la detección de la condición de alarma alta.
La opción predeterminada es establecido.
LEnabled
BOOL
Detección de condición de alarma baja. Se establece para habilitar la detección de la condición
de alarma baja. Se borra para inhabilitar la detección de la condición de alarma baja.
La opción predeterminada es establecido.
LLEnabled
BOOL
Detección de condición de alarma baja baja. Se establece para habilitar la detección de la
condición de alarma baja baja. Se borra para inhabilitar la detección de la condición de alarma
baja baja.
La opción predeterminada es establecido.
44
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Parámetro de
entrada
Tipo de datos
Descripción
AckRequired
BOOL
Especifica si se requiere confirmación de alarma. Cuando se establece, requiere confirmación.
Cuando se borra, la confirmación no se requiere y HHAcked, HAcked, LAcked, LLAcked,
ROCPosAcked y ROCNegAcked siempre se establecen.
La opción predeterminada es establecido.
ProgAckAll
BOOL
Se establece mediante el programa de usuario para confirmar todas las condiciones de esta la
alarma. Requiere que una transición cambie de borrado a establecido mientras las condiciones
de alarma no están confirmadas.
La opción predeterminada es borrado.
Lógica de escalera de relés:
Copiado del operando de instrucción.
Texto estructurado:
Copiado del operando de instrucción.
OperAckAll
BOOL
Se establece mediante la interface del operador para confirmar todas las condiciones de esta la
alarma. Requiere que una transición cambie de borrado a establecido mientras las condiciones
de alarma no están confirmadas. La instrucción de alarma borra este parámetro.
La opción predeterminada es borrado.
HHProgAck
BOOL
Confirmación de programa alta alta. Se establece mediante el programa de usuario para
confirmar una condición alta alta. Requiere que una transición cambie de borrado a establecido
mientras la condición de alarma no está confirmada.
La opción predeterminada es borrado.
HHOperAck
BOOL
Confirmación de operador alta alta. Se establece mediante la interface de operador para
confirmar una condición alta alta. Requiere que una transición cambie de borrado a establecido
mientras la condición de alarma no está confirmada. La instrucción de alarma borra este
parámetro.
La opción predeterminada es borrado.
HProgAck
BOOL
Confirmación de programa alta. Se establece mediante el programa de usuario para confirmar
una condición alta. Requiere que una transición cambie de borrado a establecido mientras la
condición de alarma no está confirmada.
La opción predeterminada es borrado.
HOperAck
BOOL
Confirmación de operador alta. Se establece mediante la interface de operador para confirmar
una condición alta. Requiere que una transición cambie de borrado a establecido mientras la
condición de alarma no está confirmada. La instrucción de alarma borra este parámetro.
La opción predeterminada es borrado.
LProgAck
BOOL
Confirmación de programa baja. Se establece mediante el programa de usuario para confirmar
una condición baja. Requiere que una transición cambie de borrado a establecido mientras la
condición de alarma no está confirmada.
La opción predeterminada es borrado.
LOperAck
BOOL
Confirmación de operador baja. Se establece mediante la interface de operador para confirmar
una condición baja. Requiere que una transición cambie de borrado a establecido mientras la
condición de alarma no está confirmada. La instrucción de alarma borra este parámetro.
La opción predeterminada es borrado.
Publicación 1756-RM003K-ES-P – Julio 2008
45
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Parámetro de
entrada
Tipo de datos
Descripción
LLProgAck
BOOL
Confirmación de programa baja baja. Se establece mediante el programa de usuario para
confirmar una condición baja baja. Requiere que una transición cambie de borrado a
establecido mientras la condición de alarma no está confirmada.
La opción predeterminada es borrado.
LLOperAck
BOOL
Confirmación de operador baja baja. Se establece mediante la interface de operador para
confirmar una condición baja baja. Requiere que una transición cambie de borrado a
establecido mientras la condición de alarma no está confirmada. La instrucción de alarma borra
este parámetro.
La opción predeterminada es borrado.
ROCPosProgAck
BOOL
Confirmación de programa de velocidad de cambio positiva. Se establece mediante el programa
de usuario para confirmar una condición de velocidad de cambio positiva. Requiere que una
transición cambie de borrado a establecido mientras la condición de alarma no está
confirmada.
La opción predeterminada es borrado.
ROCPosOperAck
BOOL
Confirmación de operador de velocidad de cambio positivo. Se establece mediante la interface
de operador para confirmar una condición de velocidad de cambio positiva. Requiere que una
transición cambie de borrado a establecido mientras la condición de alarma no está
confirmada. La instrucción de alarma borra este parámetro.
La opción predeterminada es borrado.
ROCNegProgAck
BOOL
Confirmación de programa de velocidad de cambio negativa. Se establece mediante el
programa de usuario para confirmar una condición de velocidad de cambio negativa. Requiere
que una transición cambie de borrado a establecido mientras la condición de alarma no está
confirmada.
La opción predeterminada es borrado.
ROCNegOperAck
BOOL
Confirmación de operador de velocidad de cambio negativa. Se establece mediante la interface
de operador para confirmar una condición de velocidad de cambio negativa. Requiere que una
transición cambie de borrado a establecido mientras la condición de alarma no está
confirmada. La instrucción de alarma borra este parámetro.
La opción predeterminada es borrado.
ProgSuppress
BOOL
Se establece mediante el programa de usuario para suprimir la alarma.
La opción predeterminada es borrado.
OperSuppress
BOOL
Se establece mediante la interface del operador para suprimir la alarma. La instrucción de
alarma borra este parámetro.
La opción predeterminada es borrado.
ProgUnsuppress
BOOL
Se establece mediante el programa de usuario para cancelar la supresión de la alarma. Tiene
precedencia sobre los comandos de supresión.
La opción predeterminada es borrado.
OperUnsuppress
BOOL
Se establece mediante la interface del operador para cancelar la supresión de la alarma. Tiene
precedencia sobre los comandos de supresión. La instrucción de alarma borra este parámetro.
La opción predeterminada es borrado.
46
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Parámetro de
entrada
Tipo de datos
Descripción
ProgDisable
BOOL
Se establece mediante el programa de usuario para inhabilitar la alarma.
Capítulo 1
La opción predeterminada es borrado.
Lógica de escalera de relés:
Copiado del operando de instrucción.
Texto estructurado:
Copiado del operando de instrucción.
OperDisable
BOOL
Se establece mediante la interface del operador para inhabilitar la alarma. La instrucción de
alarma borra este parámetro.
La opción predeterminada es borrado.
ProgEnable
BOOL
Se establece mediante el programa de usuario para habilitar la alarma. Tiene precedencia
sobre un comando de inhabilitación.
La opción predeterminada es borrado.
Lógica de escalera de relés:
Copiado del operando de instrucción.
Texto estructurado:
Copiado del operando de instrucción.
OperEnable
BOOL
Se establece mediante la interface del operador para habilitar la alarma. Tiene precedencia
sobre un comando de inhabilitación. La instrucción de alarma borra este parámetro.
La opción predeterminada es borrado.
AlarmCountReset
BOOL
Se establece mediante el programa de usuario para reinicializar los conteos de alarmas para
todas las condiciones. Una transición que cambia de borrado a establecido pone en cero los
conteos de alarmas.
La opción predeterminada es borrado.
HHlimit
REAL
Límite de alarma alta alta.
Válido = HLimit < HHLimit < valor con punto flotante (coma flotante) positivo máximo.
Valor predeterminado = 0.0.
HHSeverity
DINT
Severidad de la condición de alarma alta alta. Esto no afecta el procesamiento de alarmas por
parte del controlador, pero puede usarse para clasificar y filtrar funciones en el subscriptor de
alarmas.
Válido = 1...1000 (1000 = la más severa; 1 = la menos severa).
Valor predeterminado = 500.
HLimit
REAL
Límite de alarma alta.
Válido = LLimit < HLimit < HHLimit.
Valor predeterminado = 0.0.
Publicación 1756-RM003K-ES-P – Julio 2008
47
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Parámetro de
entrada
Tipo de datos
Descripción
HSeverity
DINT
Severidad de la condición de alarma alta. Esto no afecta el procesamiento de alarmas por parte
del controlador, pero puede usarse para clasificar y filtrar funciones en el subscriptor de
alarmas.
Válido = 1...1000 (1000 = la más severa; 1 = la menos severa).
Valor predeterminado = 500.
LLimit
REAL
Límite de alarma baja.
Válido = LLLimit < LLimit < HLimit.
Valor predeterminado = 0.0.
LSeverity
DINT
Severidad de la condición de alarma baja. Esto no afecta el procesamiento de alarmas por parte
del controlador, pero puede usarse para clasificar y filtrar funciones en el subscriptor de
alarmas.
Válido = 1...1000 (1000 = la más severa; 1 = la menos severa).
Valor predeterminado = 500.
LLLimit
REAL
Límite de alarma baja baja.
Válido = valor con punto flotante (coma flotante) negativo máximo < LLLimit < LLimit.
Valor predeterminado = 0.0.
LLSeverity
DINT
Severidad de la condición de alarma baja baja. Esto no afecta el procesamiento de alarmas por
parte del controlador, pero puede usarse para clasificar y filtrar funciones en el subscriptor de
alarmas.
Válido = 1...1000 (1000 = la más severa; 1 = la menos severa).
Valor predeterminado = 500.
MínDurationPRE
DINT
Preajuste de duración mínima (milisegundos) para que una condición de nivel de alarma
permanezca verdadera antes de que la condición sea marcada como InAlarm y se envíe
notificación de la alarma a los clientes. El controlador recolecta datos de alarmas tan pronto
como se detecta la condición de alarma; por lo tanto, no se pierden datos durante la espera
hasta cumplir con la duración mínima. No se aplica a condiciones de velocidad de cambio.
MinDurationPRE sólo se aplica a la primera excursión de normal en cualquier dirección. Por
ejemplo, una vez que la condición alta sobrepasa el tiempo de espera, la condición alta alta se
activa inmediatamente, mientras que una condición baja esperará el período de tiempo de
espera.
Válido = 0...2,147,483,647.
Valor predeterminado = 0.
48
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Parámetro de
entrada
Tipo de datos
Descripción
Deadband
REAL
Banda muerta para detectar que los niveles de alarma alta alta, alta, baja y baja baja han
regresado a lo normal.
Una banda muerta diferente de cero puede reducir la vibración de la condición de alarma si el
valor In está cambiando continuamente pero permanece cerca del nivel de umbral de la
condición. El valor de la banda muerta no afecta la transición al estado InAlarm (activo). Una
vez que una condición de nivel está activa, pero antes de que la condición regrese al estado
inactivo (normal), el valor In debe, o bien:
• caer por debajo del umbral menos la banda muerta (para condiciones alta y alta alta).
o bien
• subir por encima del umbral más la banda muerta (para condiciones baja y baja baja).
La banda muerta no se usa para condicionar la medición del tiempo de duración mínima.
Válido = 0 ≤ Deadband < Span desde la primera alarma baja habilitada hasta la primera alarma
alta habilitada.
Valor predeterminado = 0.0.
ROCPosLimit
REAL
Límite para una velocidad de cambio creciente, en unidades por segundo. La detección se
habilita para cualquiera valor > 0.0 si ROCPeriod también es > 0.0.
Válido = 0.0...valor con punto flotante (coma flotante) máximo posible.
Valor predeterminado = 0.0.
ROCPosSeverity
DINT
Severidad de la condición de velocidad de cambio creciente. Esto no afecta el procesamiento de
alarmas por parte del controlador, pero puede usarse para clasificar y filtrar funciones en el
subscriptor de alarmas.
Válido = 1...1000 (1000 = más severa; 1 = menos severa).
Valor predeterminado = 500.
ROCNegLimit
REAL
Límite para una velocidad de cambio decreciente, en unidades por segundo. La detección se
habilita para cualquiera valor > 0.0 si ROCPeriod también es > 0.0.
Válido = 0.0...valor con punto flotante (coma flotante) máximo posible.
Valor predeterminado = 0.0.
ROCNegSeverity
DINT
Severidad de la condición de velocidad de cambio decreciente. Esto no afecta el procesamiento
de alarmas por parte del controlador, pero puede usarse para clasificar y filtrar funciones en el
subscriptor de alarmas.
Válido = 1...1000 (1000 = más severa; 1 = menos severa).
Valor predeterminado = 500.
ROCPeriod
REAL
Período de tiempo en segundos para calcular (intervalo de muestreo) el valor de la velocidad de
cambio. Cada vez que expira el intervalo de muestreo, se almacena una nueva muestra de In, y
se calcula ROC.
La detección de velocidad de cambio se habilita para cualquiera valor > 0.0.
Válido = 0.0...valor con punto flotante (coma flotante) máximo posible.
Valor predeterminado = 0.0.
Publicación 1756-RM003K-ES-P – Julio 2008
49
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Parámetro de salida
Tipo de datos
Descripción
EnableOut
BOOL
Habilitación de salida.
InAlarm
BOOL
Estado activo de alarma. Se establece cuando cualquier condición de alarma está activa.
Se borra cuando todas las condiciones de alarma no están activas (estado normal).
AnyInAlarmUnack
BOOL
Alarma activa y estado confirmado combinados. Se establece cuando una condición de
alarma se ha detectado y no está confirmada. Se borra cuando todas las alarmas son
normales (inactivas), confirmadas, o ambas.
HHInAlarm
BOOL
Estado de condición de alarma alta alta. Se establece cuando existe una condición de
alarma alta alta. Se borra cuando no existe una condición de alarma alta alta.
HInAlarm
BOOL
Estado de condición de alarma alta. Se establece cuando existe una condición de alarma
alta. Se borra cuando no existe una condición de alarma alta.
LInAlarm
BOOL
Estado de condición de alarma baja. Se establece cuando existe una condición de alarma
baja. Se borra cuando no existe una condición de alarma baja.
LLInAlarm
BOOL
Estado de condición de alarma baja baja. Se establece cuando existe una condición de
alarma baja baja. Se borra cuando no existe una condición de alarma baja baja.
ROCPosInAlarm
BOOL
Estado de condición de alarma de velocidad de cambio positiva. Se establece cuando existe
una condición de velocidad de cambio positiva. Se borra cuando no existe una condición de
velocidad de cambio positiva.
ROCNegInAlarm
BOOL
Estado de condición de alarma de velocidad de cambio negativa. Se establece cuando
existe una condición de velocidad de cambio negativa. Se borra cuando no existe una
condición de velocidad de cambio negativa.
ROC
REAL
Velocidad de cambio calculada del valor In. Este valor se actualiza cuando la instrucción se
escanea después de cada ROCPeriod transcurrido. El valor ROC se usa para evaluar
condiciones de ROCPosInAlarm y ROCNegInAlarm.
ROC = (muestra actual de In – muestra previa de In)/ROCPeriod
HHAcked
BOOL
Estado confirmado de condición alta alta. Se establece cuando se confirma una condición
alta alta. Siempre se establece cuando AckRequired se borra. Se borra cuando no se
confirma una condición alta alta.
HAcked
BOOL
Estado confirmado de condición alta. Se establece cuando se confirma una condición alta.
Siempre se establece cuando AckRequired se borra. Se borra cuando no se confirma una
condición alta.
LAcked
BOOL
Estado de confirmación de condición baja. Se establece cuando se confirma una condición
baja. Siempre se establece cuando AckRequired se borra. Se borra cuando no se confirma
una condición baja.
LLAcked
BOOL
Estado de confirmación de condición baja baja. Se establece cuando se confirma una
condición baja baja. Siempre se establece cuando AckRequired se borra. Se borra cuando
no se confirma una condición baja baja.
ROCPosAcked
BOOL
Estado de confirmación de condición de velocidad de cambio positiva. Se establece cuando
se confirma una condición de velocidad de cambio positiva. Siempre se establece cuando
AckRequired se borra. Se borra cuando no se confirma una condición de velocidad de
cambio positiva.
ROCNegAcked
BOOL
Estado de confirmación de condición de velocidad de cambio negativa. Se establece
cuando se confirma una condición de velocidad de cambio negativa. Siempre se establece
cuando AckRequired se borra. Se borra cuando no se confirma una condición de velocidad
de cambio negativa.
HHInAlarmUnack
BOOL
Estado no confirmado y condición alta alta activa combinado. Se establece cuando la
condición alta alta está activa (HHInAlarm está establecido) y no confirmada. Se borra
cuando la condición alta alta es normal (inactiva), confirmada, o ambas.
50
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Parámetro de salida
Tipo de datos
Descripción
HInAlarmUnack
BOOL
Estado no confirmado y condición alta activa combinado. Se establece cuando la condición
alta está activa (HInAlarm está establecido) y no confirmada. Se borra cuando la condición
alta es normal (inactiva), confirmada, o ambas.
LInAlarmUnack
BOOL
Estado no confirmado y condición baja activa combinado. Se establece cuando la condición
baja está activa (LInAlarm está establecido) y no confirmada. Se borra cuando la condición
baja es normal (inactiva), confirmada, o ambas.
LLInAlarmUnack
BOOL
Estado no confirmado y condición baja baja activa combinado. Se establece cuando la
condición baja baja está activa (LLInAlarm está establecido) y no confirmada. Se borra
cuando la condición baja baja es normal (inactiva), confirmada, o ambas.
ROCPosInAlarmUnack
BOOL
Estado no confirmado y condición de velocidad de cambio positiva activa combinado. Se
establece cuando la condición de velocidad de cambio positiva está activa (ROCPosInAlarm
está establecido) y no confirmada. Se borra cuando la condición de velocidad de cambio
positiva es normal (inactiva), confirmada, o ambas.
ROCNegInAlarmUnack
BOOL
Estado no confirmado y condición de velocidad de cambio negativa activa combinado.
Se establece cuando la condición de velocidad de cambio negativa está activa
(ROCNegInAlarm está establecido) y no confirmada. Se borra cuando la condición de
velocidad de cambio negativa es normal (inactiva), confirmada, o ambas.
Suppressed
BOOL
Estado suprimido de la alarma. Se establece cuando la alarma está suprimida. Se borra
cuando la alarma no está suprimida.
Disabled
BOOL
Estado inhabilitado de la alarma. Se establece cuando la alarma está inhabilitada. Se borra
cuando la alarma está habilitada.
MínDurationACC
DINT
Tiempo transcurrido desde que se detectó una condición de alarma. Cuando este valor llega
a MinDurationPRE, todas las condiciones de nivel de alarma detectadas se activan
(xInAlarm está establecido) y se envía una notificación a los clientes.
HHInAlarmTime
LINT
Sello de hora cuando la instrucción ALMA detectó que el valor In excedió el límite de
condición alta alta para la transición más reciente al estado activo.
HHAlarmCount
DINT
El número de veces que se activó la condición alta alta. Si se llega al valor máximo,
el contador deja el valor en el máximo valor de conteo.
HInAlarmTime
LINT
Sello de hora cuando la instrucción ALMA detectó que el valor In excedió el límite de
condición alta para la transición más reciente al estado activo.
HAlarmCount
DINT
El número de veces que se activó la condición alta. Si se llega al valor máximo, el contador
deja el valor en el máximo valor de conteo.
LInAlarmTime
LINT
Sello de hora cuando la instrucción ALMA detectó que el valor In excedió el límite de
condición baja para la transición más reciente al estado activo.
LAlarmCount
DINT
El número de veces que se activó la condición baja. Si se llega al valor máximo, el contador
deja el valor en el máximo valor de conteo.
LLInAlarmTime
LINT
Sello de hora cuando la instrucción ALMA detectó que el valor In excedió el límite de
condición baja baja para la transición más reciente al estado activo.
LLAlarmCount
DINT
El número de veces que se activó la condición baja baja. Si se llega al valor máximo,
el contador deja el valor en el máximo valor de conteo.
ROCPosInAlarmTime
LINT
Sello de hora cuando la instrucción ALMA detectó que el valor In excedió el límite de
condición de velocidad de cambio positiva para la transición más reciente al estado activo.
ROCPosInAlarmCount
DINT
El número de veces que se activó la condición de velocidad de cambio positiva. Si se llega
al valor máximo, el contador deja el valor en el máximo valor de conteo.
ROCNegInAlarmTime
LINT
Sello de hora cuando la instrucción ALMA detectó que el valor In excedió el límite de
condición de velocidad de cambio negativa para la transición más reciente al estado activo.
ROCNegAlarmCount
DINT
El número de veces que se activó la condición de velocidad de cambio negativa. Si se llega
al valor máximo, el contador deja el valor en el máximo valor de conteo.
Publicación 1756-RM003K-ES-P – Julio 2008
51
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Parámetro de salida
Tipo de datos
Descripción
AckTime
LINT
Sello de hora de la confirmación de condición más reciente. Si la alarma no requiere
confirmación, este sello de hora es igual a la hora de la alarma de condición más reciente.
RetToNormalTime
LINT
Sello de hora del retorno de la alarma al estado normal.
AlarmCountResetTime
LINT
Sello de hora que indica cuándo se restableció la alarma.
DeliveryER
BOOL
Error de entrega del mensaje de notificación de alarma. Se establece cuando hay un error
de entrega: ningún subscriptor de alarma estaba suscrito, o por lo menos un suscriptor no
recibió el último mensaje de estado de cambio de alarma. Se borra cuando la entrega se
realiza correctamente o está en curso.
DeliveryDN
BOOL
Entrega del mensaje de notificación de alarma realizada. Se establece cuando la entrega se
realiza correctamente: por lo menos un suscriptor estaba suscrito y todos los suscriptores
recibieron correctamente el último mensaje de estado de cambio de alarma. Se borra
cuando la entrega no se realiza correctamente o está en curso.
DeliveryEN
BOOL
Estado de entrega del mensaje de notificación de alarma. Se establece cuando la entrega
está en curso. Se borra cuando la entrega no está en curso.
NoSubscriber
BOOL
La alarma no tenía suscriptores cuando se intentó entregar el mensaje más reciente. Se
establece cuando no hay suscriptores. Se borra cuando hay por lo menos un suscriptor.
NoConnection
BOOL
Los subscriptores de la alarma no estaban conectados cuando se intentó entregar el
mensaje más reciente. Se establece cuando todos los suscriptores están desconectados.
Se borra cuando por lo menos un suscriptor está conectado o cuando no hay suscriptores.
CommError
BOOL
Error de comunicación al entregar un mensaje de alarma. Se establece cuando hay errores
de comunicación y se han usado todos los reintentos. Esto significa que un suscriptor
estaba suscrito y tenía una conexión, pero el controlador no recibió confirmación de la
entrega del mensaje. Se borra cuando todos los suscriptores conectados confirman la
recepción del mensaje de alarma.
AlarmBuffered
BOOL
Mensaje de alarma almacenado en el búfer debido a error de comunicación (ComError está
establecido) o pérdida de conexión (NoConnection está establecido). Se establece cuando
el mensaje de alarma se almacena en el búfer por lo menos para un suscriptor. Se borra
cuando el mensaje de alarma no se almacena en el búfer.
Subscribers
DINT
Número de suscriptores para esta alarma.
SubscNotified
DINT
Número de suscriptores notificados correctamente acerca del cambio de estado de alarma
más reciente.
Status
DINT
Indicadores de estado combinados:
Status.0 = InstructFault.
Status.1 = InFaulted.
Status.2 = SeverityInv.
Status.3 = AlarmLimitsInv.
Status.4 = DeadbandInv.
Status.5 = ROCPosLimitInv.
Status.6 = ROCNegLimitInv.
Status.7 = ROCPeriodInv.
InstructFault (Status.0)
52
BOOL
Existen condiciones de error de instrucción. Éste no es un error menor ni mayor del
controlador. Verifique los bits de estado restantes para determinar lo que ocurrió.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Parámetro de salida
Tipo de datos
Descripción
InFaulted (Status.1)
BOOL
El programa del usuario estableció InFault para indicar datos de entrada de mala calidad.
La alarma continúa evaluando In en lo que respecta a las condiciones de alarma.
SeverityInv (Status.2)
BOOL
La severidad de la alarma no es válida.
Si la severidad <1, la instrucción usa Severity = 1.
Si a severidad >1000, la instrucción usa Severity = 1000.
AlarmLimitsInv
(Status.3)
BOOL
La configuración de límite de alarma no es válida (por ejemplo, LLimit < LLLimit). Si no es
válido, la instrucción borra todos los bits activos de condiciones de nivel. No se podrán
detectar nuevas condiciones de nivel hasta que se borre el fallo.
DeadbandInv (Status.4)
BOOL
La configuración de la banda muerta no es válida. Si no es válida, la instrucción usa
Deadband = 0.0.
Válido = 0 ≤ Deadband < Span desde la primera alarma baja habilitada hasta la primera
alarma alta habilitada.
ROCPosLimitInv
(Status.5)
BOOL
Límite de velocidad de cambio positiva no válido. Si no es válido, la instrucción usa
ROCPosLimit = 0.0, lo cual inhabilita la detección de velocidad de cambio positiva.
ROCNegLimitInv
(Status.6)
BOOL
Límite de velocidad de cambio negativa no válido. Si no es válido, la instrucción usa
ROCNegLimit = 0.0, lo cual inhabilita la detección de velocidad de cambio negativa.
ROCPeriodInv (Status.7)
BOOL
Período de velocidad de cambio no válido. Si no es válido, la instrucción usa
ROCPeriod = 0.0, lo cual inhabilita la detección de velocidad de cambio.
Descripción La instrucción ALMA detecta alarmas según el nivel o velocidad de
cambio de un valor.
La instrucción ALMA proporciona funcionalidad adicional cuando se
usa con el software RSLinx Enterprise y FactoryTalk View SE. Usted
puede mostrar alarmas en las pantallas Alarm Summary, Alarm
Banner, Alarm Status Explorer y Alarm Log Viewer en el software
FactoryTalk View SE.
El software RSLinx Enterprise se suscribe a alarmas en el controlador.
Use los parámetros de salida para monitorear la instrucción a fin de
ver el estado de suscripción de alarmas y para mostrar cambios de
estado de alarmas. Si se pierde una conexión al software RSLinx
Enterprise, el controlador puede almacenar en el búfer datos de
alarmas brevemente hasta que se restaure la conexión.
Publicación 1756-RM003K-ES-P – Julio 2008
53
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Diagramas de estado cuando se requiere confirmación
InIn>=>=HLimit,
>=MinDurationPRE
MinDurationPRE
HLimit,MinDurationACC
MinDurationACC >=
HinAlarm==False
False
HInAlarm
HAcked==True
True
HAcked
Ack1 1
Ack
HinAlarm
= False
False
HInAlarm =
HAcked
False
HAcked =
= False
InIn<<
((HHLLi
imiit
m
t
nd)
dbaand)
Deaadb
- e
mitit - D
ERE
(HHLliim
PnRP
iotnio
InIn<< (
arta
nuDru
iniD
M
M
==
CC>>
AACC
ttioionn
uurraa
D
n
in
Mi
itit,, M
InIn>=>=HHLimit,
>=MinDurationPRE
MinDurationPRE
HHLimit,MinDurationACC
MinDurationACC >=
- Dee
aaddb
baannd
d))
im
HLLim
>==H
InIn>
1
Ack1
Ack
HinAlarm
= True
HInAlarm = True
HAcked
= True
True
HAcked =
H alarm condition can be acked by several different ways: HProgAck, HOperAck, ProgAckAll, OperAckAll,
HHinAlarm
= False
HHInAlarm = False
HHAcked
HHAcked == False
False
InIn>=<=LLimit,
>=MinDurationPRE
MinDurationPRE
LLimit,MinDurationACC
MinDurationACC >=
Ack1
Ack1
LinAlarm
= False
LInAlarm = False
LAcked
False
LAcked =
= False
nd))
dbaand
IInn <>
Deaadb
(LLLLiim
it+- De
m
it
miitt +
i
(LLLlim
PREE
- De
PnR
InIn <> (
adba
atiotino
uurar
ndd)
ininDD
)
M
M
=
=
>>
ACCCC
A
tiioonn
uurraat
inDD
n
i
M
,
it,itM
Lim
Lim
=<=LL
InI>n
1
HH alarm condition can be acked by several different ways: HHProgAck, HHOperAck, ProgAckAll, OperAckAll,
LLinAlarm
= False
False
LLInAlarm =
LAcked ==True
LLAcked
True
LLinAlarm
= True
LLInAlarm = True
LAcked ==False
LLAcked
False
)
anndd)
b
a
d
b
a
Deead
> ((LL
it +- D
LLLLim
it
E
m
i
R
imiitt (LLLLLLim
oPnRPE
+D
Deead
rtioatni
IInn >< (
Ack1
adbba
uDrua
Ack1
anndd)
iniDn
MM
=
)
=
>
CC>
C
C
A
ionnA
urraattio
inDDu
Min
it,, M
t
i
im
m
LLinAlarm
= True
LLLi
LLInAlarm = True
==LLL
LAcked ==True
InIn><
LLAcked
True
IInn <
1
1
Ack1
Ack
Ack1
Ack
LLinAlarm = False
LLInAlarm = False
LAcked
LLAcked==False
False
LinAlarm
= True
LInAlarm = True
LAcked
True
LAcked =
= True
11
La
de alarma
LLacked
puedebyconfirmarse
de diferentes
maneras:LLOperAck,
LLProgAck,ProgAckAll,
LLOperAck,OperAckAll,
ProgAckAll,
LLcondición
alarm condition
can be
several different
ways: LLProgAck,
clients (RSLogix
5000(software
software, RSView
OperAckAll,
clientes
RSLogixsoftware).
5000, software RSView).
L alarm condition can be acked by several different ways: LProgAck, LOperAck, ProgAckAll, OperAckAll,
In(CurrentSample)
In(PreviousSample)
In(Current
Sample) -- In(Previou
sSample)
ROCPeriod
ROCPeriod
Donde se recolecta una nueva muestra en el
Where a new sample is collected on the
siguiente escán después de que haya transcurrido
next scan after the ROCPeriod has elapsed.
ROCPeriod
ROC
ROC <=
<= -RocNegLimit
-RocNegLimit
ROC <=
ROC
>= RocPosLimit
RocPosLimit
RocPosInAlarm
= False
False
RocPosInAlarm =
RocPosAcked =
= True
RocPosAcked
True
RROOC
C<<
Ack11
Ack
RocPosInAlarm
= False
False
RocPosInAlarm =
RocPosAcked = False
RocPosAcked
1
1
54
RRooc
cPPoo
ssLLim
imiitt
miitt
ssLLiim
cPPoo
Rooc
<>== R
C
C
RO
HHinAlarm
True
HHInAlarm =
= True
HHAcked
HHAcked =
= True
True
InIn>=<=LLLimit,
>= MinDurationPRE
MinDurationPRE
LLLimit,MinDurationACC
MinDurationACC >=
LinAlarm = True
LInAlarm = True
LAcked
= False
False
LAcked =
ProgAckAll,
OperAckAll,
clientes
(software
RSLogix 5000, software RSView).
clients (RSLogix
5000 software,
RSView
software).
ROC ==
ROC
1
Ack1
Ack
ProgAckAll,
OperAckAll,
clientes
(software
RSLogix 5000, software RSView).
clients (RSLogix
5000 software,
RSView
software).
1 La condición de alarma H puede confirmarse de diferentes maneras: LProgAck, LOperAck,
1
I
HHinAlarm
= True
True
HHInAlarm =
HHAcked
False
HHAcked =
= False
1 La condición de alarma HH puede confirmarse de diferentes maneras: HHProgAck, HHOperAck,
ProgAckAll,
OperAckAll,
clientes
(software
RSLogix 5000, software RSView).
clients (RSLogix
5000 software,
RSView
software).
LinAlarm
False
LInAlarm == False
LAcked
= True
True
LAcked =
ndd) )
dbbaan
IInn<<
eeaad
-- DD
(H(HHH
t
i
it
m
LLim
E
PRE
imiitt
HHLLiim
PoRn
-- DDe
< ((HH
ranti
eaadd
rautio
uD
n
bbaann IInn
i
D
in
MM
dd))
>=>=
ACCC
AnC
taiotino
r
a
r
u
DDu
Minin
M
im
miitt,,
HLLi
=H
=
>
>
Inn
1
Ack1
Ack
1 La condición de alarma H puede confirmarse de diferentes maneras: HProgAck, HOperAck,
1
HHinAlarm
False
HHInAlarm == False
HHAcked
= True
True
HHAcked =
HinAlarm
True
HInAlarm =
= True
HAcked = False
HAcked
it
Limit
PoossLim
RocPosInAlarm
= True
True
RocPosInAlarm =
RocPosAcked
= False
False
RocPosAcked =
RocNegInAlarm
False
RocNegInAlarm == False
RocNegAcked
= True
True
RocNegAcked =
cP
< RRooc
<
ROOCC
R
Ack1 1
Ack
Ack11
Ack
RocPosInAlarm
True
RocPosInAlarm == True
RocPosAcked = True
True
La
condición de alarma ROCPos puede confirmarse de diferentes maneras: RocPosProgAck, RocPosOperAck,
ROCPos alarm condition can be acked by several different ways: RocPosProgAck, RocPosOperAck, ProgAckAll,
l,
ProgAckAll,
OperAckAll,
clientes
(softwareRSView
RSLogixsoftware).
5000, software RSView).
OperAckAll, clients
(RSLogix
5000 software,
RocNegInAlarm
False
RocNegInAlarm == False
RocNegAcked =
RocNegAcked
= False
False
1
RROOC
C<>R
imitit
Lim
NeeggL
-Rooc
cNNeg
egLLi
miitt
im
occN
< --RRo
C>
OC
RO
R
it
Limit
im
NegeLg
RooccN
R
=
<=
OCC<
RRO
RocNegInAlarm
= True
True
RocNegInAlarm =
RocNegAcked = False
RocNegAcked
1
Ack1
Ack
RocNegInAlarm
True
RocNegInAlarm == True
RocNegAcked =
RocNegAcked
= True
True
La
condición de alarma ROCNeg puede confirmarse de diferentes maneras: RocNegProgAck, RocNegOperAck,
1
ROCNeg alarm condition can be acked by several different ways: RocNegProgAck, RocNegOperAck, ProgAckAll,
,
ProgAkkAll,
clientes
5000, software RSView).
OperAckAll,OperAckAll,
clients (RSLogix
5000(software
software, RSLogix
RSView software).
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Diagramas de estado cuando no se requiere confirmación
In >=
HLimit,MinDurationACC
MinDurationACC >=
>= MinDurationPRE
In >=
HLimit,
MinDurationPRE
HinAlarm = False
HAcked = True
HinAlarm = True
HInAlarm = False
HInAlarm = True
HAcked = True
< (HLimit- -Deadband)
Deadband)
In In
< (HLimit
LLLimit,MinDurationACC
MinDurationACC >=
>= MinDurationPRE
In In
<=>=LLimit,
MinDurationPRE
LinAlarm = True
LinAlarm = False
LInAlarm = False
LAcked = True
LInAlarm = True
LAcked = True
HHinAlarm ==True
HHInAlarm
True
HHAcked ==True
HHAcked
True
LLinAlarm = True
LLAcked = True
(LLimit +- Deadband)
InIn> <(LLimit
Deadband)
In >=
HHLimit,MinDurationACC
MinDurationACC >=
In >=
HHLimit,
>=MinDurationPRE
MinDurationPRE
HHinAlarm == False
HHInAlarm
False
(HHLimit -- Deadband)
InIn< <(HHLimit
Deadband)
In >=
LLLimit,MinDurationACC
MinDurationACC >=
In <=
LLLimit,
>=MinDurationPRE
MinDurationPRE
LLinAlarm = False
LLInAlarm = False
LLAcked = True
LLInAlarm = True
< (LLLimit+- Deadband)
In In
> (LLLimit
Deadband)
ROC
ROC= =
In(CurrentSample)
In(Current
Sample) -- In(PreviousSample)
In(PreviousSample)
ROCPeriod
ROCPeriod
Donde
una nueva
muestraonenthe
el siguiente
Wheresearecolecta
new sample
is collected
escán
después
de the
queROCPeriod
haya transcurrido
ROCPeriod
next scan
after
has elapsed.
ROC>=>= ROCPosLimit
ROCPosLimit
ROC
RocPosInAlarm ==False
RocPosInAlarm
False
RocPosInAlarm ==True
RocPosInAlarm
True
RocPosAcked
= True
RocPosAcked
= True
RocNegInAlarm ==True
RocNegInAlarm
True
RocNegAcked
= True
RocNegAcked
= True
ROC<> ROCPosLimit
ROCPosLimit
ROC
ROC<=
>=-ROCNegLimit
-ROCNegLimit
ROC
RocNegInAlarm == False
RocNegInAlarm
False
ROC>> -ROCNegLimit
-ROCNegLimit
ROC
Indicadores de estado
aritmético: Los indicadores de estado aritmético se establecen para la salida ROC.
Condiciones de fallo:
Fallo menor
Tipo de fallo
Código de fallo
Overflow ROC
4
4
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
Todos los parámetros xInAlarm se borran y se confirman
todas las condiciones de alarma.
Todas las peticiones del operador, sellos de hora e
indicadores de entrega se borran.
condición de entrada de
renglón es falsa
La instrucción no se ejecuta.
EnableOut se borra.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
55
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Condición
Acción de bloque de funciones
Acción de texto estructurado
preescán
Todas las peticiones del operador, sellos de hora e
indicadores de entrega se borran.
Todas las peticiones del operador, sellos de hora e
indicadores de entrega se borran.
Todos los parámetros xInAlarm se borran y se
confirman todas las condiciones de alarma.
Todos los parámetros xInAlarm se borran y se
confirman todas las condiciones de alarma.
primer escán de instrucción Ninguna.
Ninguna.
primera ejecución de
instrucción
Ninguna.
Ninguna.
EnableIn se borra
La instrucción no se ejecuta.
La instrucción se ejecuta.
EnableOut se borra.
EnableOut siempre se establece.
La instrucción se ejecuta.
La instrucción se ejecuta.
EnableOut se establece.
EnableOut siempre se establece.
Ninguna.
Ninguna.
EnableIn se establece
post-escán
56
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Confirmación de condición de nivel ALMA requerida
Publicación 1756-RM003K-ES-P – Julio 2008
57
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Confirmación de condición de nivel ALMA no requerida
58
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Confirmación de velocidad de cambio ALMA requerida
Publicación 1756-RM003K-ES-P – Julio 2008
59
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Confirmación de velocidad de cambio ALMA no requerida
Ejemplo: Se activa una alarma de tanque si el nivel del tanque sobrepasa el
límite de alarma alta o alta alta. Confirme programáticamente todas las
condiciones de alarma con una transición de borrado a establecido
del valor de tag Tank32LevelAck. La lógica de la aplicación debe
borrar Tank32LevelAck.
60
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Lógica de escalera de relés
Texto estructurado
ALMA(Tank32Level,Tank32LT,Tank32LevelAck,0, 0);
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
61
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Configure una instrucción
de alarma
Después de introducir una alarma ALMD o ALMA y especificar el
nombre de tag de la alarma, use el diálogo Alarm Configuration para
especificar los detalles del mensaje.
Haga clic aquí para configurar la instrucción.
El diálogo Properties de la instrucción de alarma incluye la ficha
Configuration.
62
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Para cada instrucción de alarma, configure esta información.
Opción
Descripción
Condition – Instrucción ALMD
Condición para activar la alarma.
Seleccione Input=1 para una alarma activa cuando In=1. Seleccione Input=0 para una
alarma activa cuando In=0.
Input Level – Instrucción ALMA
Nivel de entrada (High High, High, Low o Low Low) o velocidad de cambio de entrada
(positiva o negativa) para activar una alarma.
Input Rate of Change – Instrucción ALMA
Seleccione las condiciones de la alarma e introduzca los límites para dichas condiciones.
Inhabilite las condiciones de velocidad de cambio introduciendo un 0 para el período o
límite.
Severity
Seleccione un rango de severidades entre 1...1000 para clasificar la importancia de una
condición de alarma. Una severidad de 1 es para alarmas de baja prioridad, mientras que
una severidad de 1000 es para una condición de emergencia.
De manera predeterminada, en el sistema FactoryTalk Alarms and Events los rangos de
severidad se asignan a prioridades de la siguiente manera:
• 1...250 son de baja prioridad
• 251...500 son de prioridad media.
• 501...750 son de alta prioridad.
• 751...1000 son de prioridad urgente.
Usted puede configurar la asignación de severidad a prioridad en el sistema FactoryTalk
Alarms and Events. Remítase a la ayuda de FactoryTalk para obtener detalles.
Minimum Duration
Introduzca el tiempo en ms que una condición de alarma debe estar activa antes de que se
reporte la alarma.
Latched – Instrucción ALMD
Seleccione enclavado (Latched) si desea que la alarma permanezca activa (InAlarm)
después de que la condición de alarma regresa al estado inactivo (normal). Las alarmas
enclavadas requieren un comando de restablecimiento para cambiar a normal. El comando
de restablecimiento debe recibirse después de que la condición regrese al estado normal.
Los comandos de confirmación no borrarán una alarma enclavada.
Deadband – Instrucción ALMA
Especifique un valor de banda muerta para reducir la vibración de la condición de alarma
causada por pequeñas fluctuaciones en el valor In.
El valor de banda muerta no afecta el límite de alarma para la transición al estado activo y,
además, no se usa durante el intervalo de duración mínima.
Una vez que una condición de nivel de activa (InAlarm), permanecerá activa hasta que el
valor In regrese dentro del límite mediante la banda muerta especificada. Por ejemplo, si el
límite alto es 80, el límite bajo es 20 y la banda muerta es 5, la condición alta se activará
cuando el valor sea ≥ 80 y regresará a lo normal cuando el valor sea ≤ 75; la condición baja
se activará cuando el valor sea ≤ 20 y regresará a lo normal cuando el valor sea ≥ ≤ 25.
La banda muerta no tiene ningún efecto en las condiciones de alarma de velocidad de
cambio.
Acknowledgement Required
Las alarmas están configuradas de manera predeterminada para requerir confirmación. La
confirmación indica que un operador tiene conocimiento de la condición de alarma, ya sea
que las condiciones hayan regresado a lo normal o no.
Borre el ajuste Acknowledgement Required si desea que la alarma aparezca y desaparezca
del resumen de alarmas en el HMI sin interacción del operador.
Las alarmas que no requieren confirmación siempre tienen establecido el estado Acked.
Si una alarma digital se configura como enclavada, el comando de restablecimiento
también reconoce la alarma.
Publicación 1756-RM003K-ES-P – Julio 2008
63
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Opción
Descripción
Alarm class
Use la clase de alarma para agrupar alarmas relacionadas. Especifique exactamente la
misma clase de alarma para cada alarma que usted desea mantener en la misma clase.
La clase de alarma permite distinguir mayúsculas de minúsculas.
Por ejemplo, especifique Zona de tanques A para agrupar todas las alarmas de los tanques
de un área específica. O especifique la clase Lazos de control para agrupar todas las
alarmas de lazos PID.
Después de ello podrá mostrar y filtrar alarmas en la interface operador-máquina (HMI)
según la clase. Por ejemplo, un operador puede mostrar todas las alarmas de tanques o
todas las alarmas de lazo PID.
La clase de alarma no limita las alarmas a las que se subscribe un objeto del resumen de
alarmas. Use la clase de alarmas para filtrar las alarmas que se muestran a un operador una
vez que éstas han sido recibidas por el objeto del resumen de alarmas. El software
FactoryTalk View puede filtrar la clase de alarma sustituyendo comodines por caracteres.
View command
Ejecute un comando en la estación del operador cuando lo solicite el operador para una
alarma específica. Esto permite que un operador ejecute cualquier comando de FactoryTalk
View estándar, tal como llamar a plantillas y pantallas específicas, ejecutar macros,
acceder a archivos de ayuda e iniciar aplicaciones externas. Cuando se produce la condición
de alarma y se muestra al operador, un botón en las pantallas de resumen e indicador deja
que el operador ejecute un comando de visualización asociado.
Tenga cuidado a fin de ingresar la sintaxis de comando correcta y pruebe el comando en
tiempo de ejecución, ya que cuando se introduce el comando no se realiza una verificación
de errores.
Usted puede editar todos los aspectos de la configuración de alarmas
fuera de línea y en línea. Las ediciones en línea de las alarmas nuevas
y existentes se envían inmediatamente a los suscriptores de
FactoryTalk (los terminales de HMI de versiones anteriores que están
encuestando [polling] los tags no se actualizan automáticamente).
Los suscriptores de FactoryTalk no tienen que volver a suscribirse
para recibir información actualizada. Los cambios en línea
automáticamente se propagan desde la estructura de alarmas del
controlador al resto de la arquitectura.
64
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Introduzca el texto del
mensaje de alarma
Capítulo 1
Introduzca el texto de mensaje apropiado que se mostrará cuando
una condición de alarma está activa (InAlarm). Para una instrucción
ALMD, usted introduce la información del mensaje en la ficha
Configuration. Para una instrucción ALMA, usted introduce la
información de mensaje en la ficha Message.
Para definir un mensaje de alarma, especifique esta información.
Opción
Descripción
Message String
La cadena de mensaje contiene la información que se mostrará al operador respecto a la
alarma. Además de introducir texto, también puede incorporar información variable. En el
editor de mensaje de alarma, seleccione la variable que desee y añádala en cualquier lugar
de la cadena de mensaje.
La cadena de mensaje puede tener un máximo de 255 caracteres, incluidos los caracteres
que especifican las variables incorporadas (no el número de caracteres en los valores reales
de las variables incorporadas). Por ejemplo, /*S:0 %Tag1*/ especifica un tag de cadena y
añade 13 caracteres a la longitud total de la cadena, pero el valor real del tag de cadena
podría tener 82 caracteres.
Usted no puede acceder programáticamente a la cadena del mensaje de alarma desde el
tag de alarma. Para cambiar el mensaje de alarma basado en eventos específicos, configure
uno de los tags asociados como tipo de datos de cadena e incorpore dicho tag asociado en
el mensaje.
Usted puede tener versiones de los mensajes en múltiples idiomas. El idioma adicional se
introduce mediante la utilidad de importación/exportación. Para obtener más información,
vea la página 67.
Publicación 1756-RM003K-ES-P – Julio 2008
65
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Opción
Descripción
Associated tags
Puede seleccionar hasta cuatro tags adicionales desde el proyecto del controlador para
asociarlos con la alarma. Los valores de estos tags se envían con un mensaje de alarma al
servidor de alarmas. Por ejemplo, una alarma digital para una válvula de alivio de presión
también podría incluir información tal como la velocidad de la bomba y la temperatura del
tanque.
Los tags asociados pueden ser de cualquier tipo de datos atómico (BOOL, DINT, INT, SINT o
REAL) o un STRING. Pueden ser elementos en un UDT o una matriz. No se permiten
referencias a matrices variables. Si la alarma está bajo el control del controlador, los tags
asociados también deben estar bajo el control del controlador.
Opcionalmente, incorpore los tags asociados en la cadena de texto de mensaje.
Los valores de tag asociados siempre se envían con la alarma, visibles para el operador e
introducidos en el registro del historial, independientemente de que los haya incorporado
en la cadena de mensaje.
Variables de la cadena de mensaje
Puede incorporar esta información variable en una cadena de
mensaje.
Variable
Se incorpora en la cadena de mensaje
Código predeterminado añadido a la cadena
de mensaje
Alarm name
El nombre de la alarma, que consiste en el nombre del /*S:0 %AlarmName*/
controlador, nombre del programa y nombre de tag.
Por ejemplo,
[Zone1Controller]Program:Main.MyAlarmTagName.
Condition name
La condición que activa la alarma:
/*S:0 %ConditionName*/
• la alarma digital muestra el disparo;
• la alarma analógica muestra HiHi, Hi, Lo, LoLo,
ROC_POS ó ROC_NEG.
Input value
El valor de entrada para la alarma:
/*N:5 %InputValue NOFILL DP:0*/
• la alarma digital muestra 0 ó 1;
• la alarma analógica muestra el valor de la variable
de entrada que está monitoreando.
Limit value
El umbral de la alarma:
/*N:5 %LimitValue NOFILL DP:0*/
• la alarma digital muestra 0 ó 1;
• la alarma analógica muestra la verificación de
rango configurada actual para la condición de
alarma analógica.
Severity
La severidad configurada de la condición de alarma.
/*N:5 %Severity NOFILL DP:0*/
Values of associated tags
El valor de un tag configurado para incluirse con el
evento de alarma.
/*N:5 %Tag1 NOFILL DP:0*/
66
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
El código varía según el tipo de tag que seleccione, cuántos dígitos o
caracteres hay en un valor de tag y si desea rellenar los bits vacíos con
espacios o ceros a la izquierda. Por ejemplo:
Tag
Código
Valor BOOL
/*N:1 %Tag1 NOFILL DP:0*/
Valor DINT, 9 dígitos, relleno con espacio a la izquierda
/*N:9 %Tag2 SPACEFILL DP:0*/
Valor de entrada REAL, 9 dígitos (incluye decimal)
3 dígitos después del decimal, relleno con ceros a la
izquierda.
/*N:9 %InputValue NOFILL DP:3*/
Valor REAL, 8 dígitos (incluye decimal) 4 dígitos después
del decimal, relleno con ceros a la izquierda.
/*N:8 %Tag3 ZEROFILL DP:4*/
Valor de cadena, sin ancho fijo
/*S:0 %Tag4*/
Valor de cadena, 26 caracteres, ancho fijo
/*S:26 %Tag4*/
Toda esta información variable se incluye con los datos de alarma,
visibles para el operador e introducidos en el registro de historial,
independientemente de que usted haya incorporado la información
en el texto del mensaje.
Versiones de los mensajes de alarma en múltiples idiomas
Usted puede mantener mensajes de alarmas en varios idiomas.
Introduzca los diversos idiomas en las versiones de idiomas asociados
del software de programación RSLogix 5000 o en un archivo de
importación/exportación (.CSV o .TXT).
Usted puede acceder al texto del mensaje de alarma desde un archivo
de importación/exportación (.CSV o .TXT) y añadir líneas adicionales
para las versiones traducidas de la cadena de mensaje original. Los
mensajes en diferentes idiomas usan códigos de lenguaje ISO en la
columna TIPO. El texto de mensaje de alarma, que incluye los
códigos de variable incorporados para el operador, está en la columna
DESCRIPCIÓN. El ESPECIFICADOR identifica la condición de la
alarma.
Publicación 1756-RM003K-ES-P – Julio 2008
67
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Use la utilidad de importación/exportación para crear y traducir
cadenas de mensajes en múltiples idiomas. El formato de
importación/exportación .TXT admite caracteres de doble byte, por lo
tanto usted puede usar este formato para todos los idiomas, inclusive
chino, japonés y coreano. El formato de importación/exportación
.CVS no admite caracteres de doble byte.
Los mensajes de importación y exportación siempre realizan una
fusión. Al eliminar un mensaje en un archivo .CSV o .TXT no se
elimina el mensaje del archivo .ACD. Para eliminar un mensaje,
importe el archivo .CSV o .TXT con los campos tipo, nombre y
especificador llenados pero con la descripción en blanco.
Monitoreo del estado de
alarma
68
En la ficha Status del diálogo de alarma, monitoree la condición de
una alarma, confirme una alarma, inhabilite una alarma, suprima una
alarma o restablezca una alarma. Use las selecciones del diálogo para
ver cómo se comporta una alarma sin necesidad de tener un HMI en
operación.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Almacenamiento de
alarmas en el búfer
Capítulo 1
Para recibir mensajes de alarma basados en el controlador, los clientes
de alarmas (como el servidor RSLinx Enterprise) deben establecer una
suscripción a las alarmas en el controlador Logix. El controlador
mantiene una conexión con cada suscriptor y monitorea el estado de
dicha conexión.
A medida que ocurren cambios de estado de alarma, las instrucciones
de alarma almacenan en caché la información necesaria (como sellos
de hora y valores de tag asociados) y solicitan la transmisión del
mensaje de alarma a todos los suscriptores. El mecanismo de
publicación entrega los mensajes de alarma a cada suscriptor tan
rápido como sea posible.
Si algún suscriptor no confirma recibo del mensaje de alarma, o si la
conexión a un suscriptor conocido no es buena, el mecanismo de
publicación almacena los mensajes de alarma no entregados en un
búfer de 100 KB. Cada suscriptor tiene su propio búfer; por lo tanto,
los problemas de comunicación con un suscriptor no interfieren con
la entrega de mensajes de alarmas a otros suscriptores. Cuando el
búfer está lleno, se descartan los mensajes de alarma más nuevos. El
búfer se crea cuando el suscriptor establece su conexión inicial y se
mantiene por un tiempo configurable (0...120 minutos, siendo el valor
predeterminado 20 minutos) después de que un suscriptor pierde su
conexión.
Cuando el suscriptor restablece una conexión dentro del intervalo de
tiempo de espera del búfer, obtiene el estado actual de todas las
alarmas, comienza a recibir mensajes de alarma actuales y también
carga los mensajes que puedan haberse acumulado en el búfer. Aun si
el búfer estuviera lleno y los mensajes fueras descartados, los
suscriptores se sincronizan de manera exacta con el estado actual de
las alarmas (inclusive los sellos de hora más recientes de
InAlarmTime, RetToNormalTime y AckTime.
El almacenamiento en el búfer continúa hasta llenarse. Una vez lleno,
el búfer deja de añadir transiciones de alarmas hasta que el suscriptor
deje un espacio disponible en el búfer.
Publicación 1756-RM003K-ES-P – Julio 2008
69
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Acceda programáticamente
a información de alarmas
Cada instrucción de alarma tiene una estructura de alarma que
almacena información de configuración y ejecución de alarma. La
estructura de alarma incluye tanto elementos de control de programa
y de operador, como elementos de operador. Las instrucciones de
alarma no usan ajustes de modo para determinar si el acceso al
programa o el acceso al operador están activos; por lo tanto, estos
elementos siempre están activos.
Existen tres maneras de realizar acciones en una instrucción de
alarma.
Acceso
Programa de usuario
Elementos de estructura de
alarmas
• ProgAck
• ProgReset
• ProgSuppress
• ProgDisable
• ProgEnable
HMI personalizado
• OperAck
• OperReset
• OperSuppress
• OperDisable
• OperEnable
Consideraciones
Use la lógica del controlador para acceder programáticamente a
elementos del sistema de alarmas. Por ejemplo, el programa de
control puede determinar si se inhabilitará una serie de alarmas
relacionadas con una sola causa raíz. Por ejemplo, el programa de
control podría inhabilitar una instrucción de alarma,
MyDigitalAlarm de tipo de datos ALARM_DIGITAL, mediante
acceso al miembro de tag MyDigitalAlarm.ProgDisable.
Cree una plantilla de HMI personalizada para acceder a elementos
del sistema de alarmas. Por ejemplo, si el operador necesita retirar
una herramienta, en lugar de inhabilitar manualmente o suprimir
alarmas individualmente desde las pantallas de alarmas, el
operador puede presionar una tecla de inhabilitación que brinda
acceso a un tag MyDigitalAlarm.OperDisable.
Los parámetros del operador trabajan con cualquier interface de
Rockwell Automation o de otros fabricantes para permitir el control
de estados de alarma.
Cuando se establece un parámetro del operador, la instrucción
evalúa si puede responder a la petición, y posteriormente
restablece siempre el parámetro.
Objeto HMI estándar
No accesible
La interacción normal del operador se realiza a través de objetos del
resumen de alarmas, indicador de alarma y explorador de estado de
alarmas en la aplicación FactoryTalk View. Esta interacción es
similar a la opción de HMI personalizada antes descrita, pero no
hay interacción ni visibilidad programática.
Cuando usted crea una instrucción de alarma, debe crear y asignar un
tag del tipo de datos correcto para dicha alarma. Por ejemplo, cree
MyDigitalAlarm del tipo de datos ALARM_DIGITAL. En lógica de
escalera de relés, estos parámetros de instrucción deben introducirse
en la instrucción:
• ProgAck
• ProgReset
• ProgDisable
• ProgEnable
En lógica de escalera de relés y en texto estructurado, el valor o tag
que usted asigna a un parámetro de instrucción (como ProgAck) se
escribe automáticamente en el miembro del tag de alarma (por ej.,
MyAnalogAlarm.ProgAck) cada vez que se escanea la instrucción.
70
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
En lógica de escalera de relés y en texto estructurado, si usted desea
acceder programáticamente a la estructura de alarmas, asigne el tag de
estructura al parámetro en la instrucción. Por ejemplo, para usar
MyAnalogAlarm.ProgAck en lógica, asigne el tag
MyAnalogAlarm.ProgAck al parámetro ProgAck.
Suprima o inhabilite
alarmas
Publicación 1756-RM003K-ES-P – Julio 2008
Suprima alarmas para retirar las alarmas cuya existencia usted conoce
desde el HMI, pero mantenga las alarmas activas. Esto le permitirá
borrar el resumen de alarmas mientras que usted está resolviendo una
alarma conocida sin continuar viendo información de alarmas. Una
alarma suprimida no aparece en las pantallas de indicadores o
resumen de operador, pero una alarma suprimida igualmente se envía
a los suscriptores, se registra en la base de datos históricos, puede
cambiar el estado de alarma, tener sello de hora y responder a otras
interacciones programáticas o del operador.
• Cuando una alarma se suprime, ésta continúa funcionando
normalmente, monitorea el parámetro In en lo que respecta a
las condiciones de alarma y responde a peticiones de
confirmación. Todos los suscriptores son notificados de este
evento, y todo mensaje de alarma generado mientras la alarma
se encuentra en estado suprimido incluye el estado suprimido.
Los clientes de alarmas pueden responder de manera diferente a
las alarmas suprimidas. Por ejemplo, las alarmas suprimidas
pueden registrarse en la base de datos históricos pero no
pueden anunciarse al operador.
• Cuando una alarma no está suprimida, todos los suscriptores
son notificados y los mensajes de alarma a los suscriptores ya no
incluyen el estado suprimido.
Inhabilite una alarma para tratar la alarma como si ésta no existiera en
el programa de control. Una alarma inhabilitada no cambia el estado
de alarma ni se registra en la base de datos históricos. Una alarma
inhabilitada aun se rastrea y puede rehabilitarse en el explorador de
estado de alarmas en el software FactoryTalk View SE.
• Cuando una alarma está inhabilitada, todas sus condiciones se
establecen en el estado inicial (InAlarm se borra y Acked se
establece). El parámetro In no es monitoreado en lo que
respecta a las condiciones de alarma. Todos los suscriptores son
notificados de este evento.
71
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
• Cuando una alarma se habilita, comienza a monitorear el
parámetro In en lo que respecta a las condiciones de alarma.
Todos los suscriptores son notificados de este evento.
Ejecución de alarma
basada en el controlador
Las alarmas basadas en el controlador procesan entradas provenientes
de dos fuentes.
Fuente
Descripción
Miembros de tag de alarma
Los miembros de tag de alarma en su mayor parte se procesan cuando la aplicación del
usuario escanea la instrucción de alarma. Esto incluye lo siguiente:
• procesamiento de cambios a los parámetros de configuración;
• evaluación de la condición de alarma;
• medición del tiempo transcurrido para MinDuration;
• captura de los sellos de hora de InAlarmTime y RetToNormalTime;
• captura de valores de tag asociados;
• procesamiento de los comandos Prog y Oper;
Además, estos miembros de estado de tag de alarma se actualizan a medida que los
mensajes de alarma se entregan a cada suscriptor, de manera asíncrona con el escán del
programa:
• DeliveryEN, DeliveryER, DeliveryDN
• NoSubscriber, NoConnection, CommError, AlarmBuffered, SubscNotified
Mensajes de clientes
Los mensajes de clientes son procesados a medida que se reciben, de manera asíncrona
con el escán del programa.
• Comandos restablecer, confirmar, inhabilitar/habilitar y suprimir/cancelar supresión
desde un terminal RSLogix 5000.
• Comandos restablecer, confirmar, inhabilitar/habilitar y suprimir/cancelar supresión
desde un suscriptor de alarmas FactoryTalk View SE.
Tenga cuidado al determinar dónde colocar las instrucciones de
alarma en la aplicación. La exactitud de los sellos de hora se ve
afectada por la rapidez con que se escanea la instrucción después de
que la condición de alarma cambia de estado. Los cálculos de
acumulación de tiempo de MinDuration y la velocidad de cambio
requieren escaneo repetido, dentro de los intervalos de tiempo
determinados por la aplicación de usuario. Las instrucciones de
alarma deben continuar escaneándose después de que la condición
de alarma se hace falsa, de modo que pueda detectarse la transición
de ReturnToNormal. Por ejemplo, si usted desea una exactitud de
10 ms en los sellos de hora, podría colocar las instrucciones de alarma
que necesitan dicha resolución en una tarea periódica de 10 ms.
72
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Uso de la memoria del controlador
Como pauta, use los siguientes tamaños de alarma para hacer un
cálculo general del uso de memoria del controlador:
• Típicamente, 1 KB por alarma digital sin tags asociados
Ejemplo de alarma digital
Tamaño aproximado
Alarma digital sin tags asociados y esta configuración:
1012 bytes
• Mensaje de alarma: Fallo de contactor
• Clase de alarma: Zona de tanques A
Alarma digital con dos tags asociados y esta configuración:
1100 bytes
• Mensaje de alarma: Fallo de contactor
• Clase de alarma: Zona de tanques A
• Tag asociado 1 = tipo de datos DINT
• Tag asociado 2 = tipo de datos DINT
Alarma digital con dos tags asociados y esta configuración:
1522 bytes
• Mensaje de alarma: Fallo de contactor
• Clase de alarma: Zona de tanques A
• Tag asociado 1 = tipo de datos DINT
• Tag asociado 2 = tipo de datos STRING
Publicación 1756-RM003K-ES-P – Julio 2008
73
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
• Típicamente, 2.2 KB por alarma analógica sin tags asociados
Ejemplo de alarma analógica
Tamaño aproximado
Alarma analógica sin tags asociados y esta configuración:
2228 bytes
• Mensaje de alarma HH: Alarma de nivel
• Mensaje de alarma H: Alarma de nivel
• Mensaje de alarma L: Alarma de nivel
• Mensaje de alarma LL: Alarma de nivel
• Mensaje positivo de velocidad de cambio: Se llena demasiado rápido
• Mensaje negativo de velocidad de cambio: Se vacía demasiado rápido
• Clase de alarma: Zona de tanques A
Alarma analógica con dos tags asociados y esta configuración:
2604 bytes
• Mensaje de alarma HH: Alarma de nivel
• Mensaje de alarma H: Alarma de nivel
• Mensaje de alarma L: Alarma de nivel
• Mensaje de alarma LL: Alarma de nivel
• Mensaje positivo de velocidad de cambio: Se llena demasiado rápido
• Mensaje negativo de velocidad de cambio: Se vacía demasiado rápido
• Clase de alarma: Zona de tanques A
• Tag asociado 1 = tipo de datos DINT
• Tag asociado 2 = tipo de datos DINT
Alarma analógica con dos tags asociados y esta configuración:
4536 bytes
• Mensaje de alarma HH: Alarma de nivel
• Mensaje de alarma H: Alarma de nivel
• Mensaje de alarma L: Alarma de nivel
• Mensaje de alarma LL: Alarma de nivel
• Mensaje positivo de velocidad de cambio: Se llena demasiado rápido
• Mensaje negativo de velocidad de cambio: Se vacía demasiado rápido
• Clase de alarma: Zona de tanques A
• Tag asociado 1 = tipo de datos DINT
• Tag asociado 2 = tipo de datos STRING
Las cadenas de mensaje más largas, al igual que las cadenas de
mensaje para múltiples idiomas, consumen memoria adicional de su
controlador.
El uso real de memoria depende de cómo se configura la alarma, de
la longitud del mensaje y de los tags asociados pasados con la alarma.
74
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Capítulo 1
Tiempo de escán
Estos tiempos de ejecución muestran cómo las instrucciones ALMD y
ALMA afectan el tiempo de escán total.
Estado de renglón
Tiempos de ejecución
Alarma digital
(ALMD)
Alarma analógica
(ALMA)
8 μs
17 μs
Renglón
verdadero
8 μs
60 μs
Renglón
falso
35 μs
17 μs
Renglón
verdadero
35 μs
126 μs
Sin cambio de estado Renglón
de alarma
falso
Cambio de estado de
alarma
Un cambio de estado de alarma es un evento que cambia la condición
de la alarma, tal como confirmar o suprimir la alarma. Minimice el
potencial de que un gran número de alarmas cambie de estado
simultáneamente (ráfagas de alarmas) creando dependencias en
alarmas relacionadas. Las grandes ráfagas de alarmas pueden tener un
efecto considerable en el tiempo de escán del código de aplicación.
Publicación 1756-RM003K-ES-P – Julio 2008
75
Capítulo 1
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Notas:
76
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
2
Instrucciones de bits
(XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Introducción
Si desea
habilitar salidas cuando se establece un bit.
Use las instrucciones de bits (tipo relé) para monitorear y controlar el
estado de los bits.
Use esta instrucción
XIC
Disponible en estos lenguajes
lógica de escalera de relés
Vea la página
78
texto estructurado(1)
habilitar salidas cuando se borra un bit.
XIO
lógica de escalera de relés
texto estructurado
establecer un bit
OTE
80
(1)
lógica de escalera de relés
82
texto estructurado(1)
establecer un bit (retentivo)
OTL
lógica de escalera de relés
texto estructurado
borrar un bit (retentivo)
OTU
lógica de escalera de relés
texto estructurado
84
(1)
86
(1)
ONS
establecer un bit por un escán cada vez que el
renglón se hace verdadero
OSR
lógica de escalera de relés
91
establecer un bit por un escán cada vez que el
renglón se hace falso
OSF
lógica de escalera de relés
94
establecer un bit por un escán cada vez que el
bit de entrada se establece en el bloque de
funciones
OSRI
texto estructurado
bloque de funciones
96
establecer un bit por un escán cada vez que el
bit de entrada se borra en el bloque de
funciones
OSFI
texto estructurado
bloque de funciones
99
(1)
lógica de escalera de relés
88
habilitar salidas por un escán cada vez que el
renglón se hace verdadero
texto estructurado
(1)
No hay una instrucción equivalente en texto estructurado. Use otra programación en texto estructurado para lograr el mismo resultado. Vea la descripción de la
instrucción.
77Publicación 1756-RM003K-ES-P – Julio 2008
77
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Examinar si está cerrado
(XIC)
La instrucción XIC examina el bit de datos para determinar si está
establecido.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
bit de datos
BOOL
tag
bit que se va a probar
Texto estructurado
El texto estructurado no tiene una instrucción XIC, pero usted puede
lograr los mismos resultados usando una construcción IF...THEN.
IF data_bit THEN
<statement>;
END_IF;
Consulte el Apéndice 641B, Atributos de bloque de funciones para
obtener información sobre la sintaxis de las construcciones en texto
estructurado.
Descripción: La instrucción XIC examina el bit de datos para determinar si está
establecido.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
examinar bit
de datos
bit de datos = 0
la condición de salida de
renglón se establece como
falsa
bit de datos = 1
la condición de salida de
renglón se establece como
verdadera
fin
post-escán
78
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Capítulo 2
Ejemplo 1: Si se establece limit_switch_1, esto habilita la siguiente instrucción
(la condición de salida de renglón es verdadera).
Lógica de escalera de relés
Texto estructurado
IF limit_switch THEN
<statement>;
END_IF;
Ejemplo 2: Si se establece S:V (indica que ocurrió un overflow), esto habilita la
siguiente instrucción (la condición de salida del renglón es
verdadera).
Lógica de escalera de relés
Texto estructurado
IF S:V THEN
<statement>;
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
79
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Examinar si está abierto
(XIO)
La instrucción XIO examina el bit de datos para determinar si está
borrado.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
bit de datos
BOOL
tag
bit que se va a probar
Texto estructurado
El texto estructurado no tiene una instrucción XIO, pero usted puede
lograr los mismos resultados usando una construcción IF...THEN.
IF NOT data_bit THEN
<statement>;
END_IF;
Consulte el Apéndice 641B, Atributos de bloque de funciones para
obtener información sobre la sintaxis de las construcciones en texto
estructurado.
Descripción: La instrucción XIO examina el bit de datos para determinar si está
borrado.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
examinar bit de
datos
bit de datos = 0
la condición de salida de
renglón se establece como
verdadera
bit de datos = 1
la condición de salida de
renglón se establece como
falsa
fin
post-escán
80
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Capítulo 2
Ejemplo 1: Si se borra limit_switch_2, esto habilita la siguiente instrucción
(la condición de salida de renglón es verdadera).
Lógica de escalera de relés
Texto estructurado
IF NOT limit_switch_2 THEN
<statement>;
END_IF;
Ejemplo 2: Si S:V se borra (indica que no ocurrió un overflow), esto habilita la
siguiente instrucción (la condición de salida del renglón es
verdadera).
Lógica de escalera de relés
Texto estructurado
IF NOT S:V THEN
<statement>;
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
81
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Activación de salida (OTE)
La instrucción OTE establece o borra el bit de datos.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
bit de datos
BOOL
tag
bit que se va a establecer o borrar
Texto estructurado
El texto estructurado no tiene una instrucción OTE, pero usted puede
lograr los mismos resultados usando una asignación no retentiva.
data_bit [:=] BOOL_expression;
Consulte el Apéndice 641B, Atributos de bloque de funciones para
obtener información sobre la sintaxis de asignaciones y expresiones
en texto estructurado.
Descripción: Cuando se habilita la instrucción OTE, el controlador establece el bit
de datos. Cuando se inhabilita la instrucción OTE, el controlador borra
el bit de datos.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit de datos se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
El bit de datos se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El bit de datos se establece.
La condición de salida de renglón se establece como verdadera.
post-escán
El bit de datos se borra.
La condición de salida de renglón se establece como falsa.
82
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Capítulo 2
Ejemplo: Cuando se establece switch, la instrucción OTE establece (activa)
light_1. Cuando se borra switch, la instrucción OTE borra (desactiva)
light_1.
Lógica de escalera de relés
Texto estructurado
light_1 [:=] switch;
Publicación 1756-RM003K-ES-P – Julio 2008
83
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Enclavamiento de salida
(OTL)
La instrucción OTL establece (enclava) el bit de datos.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
bit de datos
BOOL
tag
bit que se va a establecer
Texto estructurado
El texto estructurado no tiene una instrucción OTL, pero usted puede
lograr los mismos resultados usando una construcción IF...THEN y
una asignación.
IF BOOL_expression THEN
data_bit := 1;
END_IF;
Consulte el Apéndice 641B, Atributos de bloque de funciones para
obtener información sobre la sintaxis de construcciones, expresiones
y asignaciones en texto estructurado.
Descripción: Cuando se habilita, la instrucción OTL establece el bit de datos. El bit
de datos permanece establecido hasta que es borrado, generalmente
por una instrucción OTU. Cuando se inhabilita, la instrucción OTL no
cambia el estado del bit de datos.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit de datos no se modifica.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
El bit de datos no se modifica.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El bit de datos se establece.
La condición de salida de renglón se establece como verdadera.
post-escán
El bit de datos no se modifica.
La condición de salida de renglón se establece como falsa.
84
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Capítulo 2
Ejemplo: Cuando se habilita, la instrucción OTL establece light_2. Este bit de
datos permanece establecido hasta que es borrado, generalmente por
una instrucción OTU.
Lógica de escalera de relés
Texto estructurado
IF BOOL_expression THEN
light_2 := 1;
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
85
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Desenclavamiento de
salida (OTU)
La instrucción OTU borra (desenclava) el bit de datos.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
bit de datos
BOOL
tag
bit que se va a borrar
Texto estructurado
El texto estructurado no tiene una instrucción OTU, pero usted puede
lograr los mismos resultados usando una construcción IF...THEN y
una asignación.
IF BOOL_expression THEN
data_bit := 0;
END_IF;
Consulte el Apéndice 641B, Atributos de bloque de funciones para
obtener información sobre la sintaxis de construcciones, expresiones
y asignaciones en texto estructurado.
Descripción: Cuando se habilita, la instrucción OTU borra el bit de datos. Cuando
se inhabilita, la instrucción OTU no cambia el estado del bit de datos.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit de datos no se modifica.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
El bit de datos no se modifica.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El bit de datos se borra.
La condición de salida de renglón se establece como verdadera.
post-escán
El bit de datos no se modifica.
La condición de salida de renglón se establece como falsa.
86
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Capítulo 2
Ejemplo: Cuando se habilita, la instrucción OTU borra light_2.
Lógica de escalera de relés
Texto estructurado
IF BOOL_expression THEN
light_2 := 0;
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
87
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Un impulso (ONS)
La instrucción ONS habilita o inhabilita el resto del renglón,
dependiendo del estado del bit de almacenamiento.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
storage bit
BOOL
tag
bit de almacenamiento interno
almacena la condición de entrada del renglón
desde la última vez que se ejecutó la
instrucción
Texto estructurado
El texto estructurado no tiene una instrucción ONS, pero usted puede
lograr los mismos resultados usando una construcción IF...THEN.
IF BOOL_expression AND NOT storage_bit THEN
<statement>;
END_IF;
storage_bit := BOOL_expression;
Consulte el Apéndice 641B, Atributos de bloque de funciones para
obtener información sobre la sintaxis de construcciones y expresiones
en texto estructurado.
Descripción: Cuando se habilita y el bit de almacenamiento se borra, la instrucción
ONS habilita el resto del renglón. Cuando se inhabilita o cuando el bit
de almacenamiento se establece, la instrucción ONS inhabilita el resto
del renglón.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
88
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Capítulo 2
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit de almacenamiento se establece para evitar una activación no válida durante el
primer escán.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
El bit de almacenamiento se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
examinar bit de
almacenamiento
bit de
almacenamiento = 0
el bit de almacenamiento
se establece
la condición de salida de
renglón se establece como
verdadera
bit de
almacenamiento = 1
el bit de almacenamiento
permanece establecido
la condición de salida de
renglón se establece como
falsa
post-escán
fin
El bit de almacenamiento se borra.
La condición de salida de renglón se establece como falsa.
Ejemplo: Normalmente una instrucción ONS está precedida por una instrucción
de entrada, porque la instrucción ONS se escanea cuando ésta se
habilita y cuando se inhabilita para que funcione correctamente. Una
vez que la instrucción ONS se habilita, la condición de entrada de
renglón debe borrarse, o el bit de almacenamiento debe borrarse para
que la instrucción ONS se habilite nuevamente.
Publicación 1756-RM003K-ES-P – Julio 2008
89
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
En todo escán en que limit_switch_1 se borra o storage_1 se
establece, este renglón no tiene efecto. En todo escán en que
limit_switch_1 se establece y storage_1 se borra, la instrucción ONS
establece storage_1 y la instrucción ADD incrementa sum en 1.
Siempre que limit_switch_1 permanezca esta blecido, sum permanece
con el mismo valor. limit_switch_1 debe cambiar de borrado a
establecido nuevamente para que se incremente sum nuevamente.
Lógica de escalera de relés
Texto estructurado
IF limit_switch_1 AND NOT storage_1 THEN
sum := sum + 1;
END_IF;
storage_1 := limit_switch_1;
90
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Un impulso en flanco
ascendente (OSR)
Capítulo 2
La instrucción OSR establece o borra el bit de salida, dependiendo del
estado del bit de almacenamiento.
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como OSRI; vea la página 96.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
storage bit
BOOL
tag
bit de almacenamiento interno
almacena la condición de entrada del renglón
desde la última vez que se ejecutó la
instrucción
output bit
BOOL
tag
bit que se va a establecer
Descripción: Cuando se habilita y el bit de almacenamiento está borrado, la
instrucción OSR establece el bit de salida. Cuando se habilita y el bit
de almacenamiento está establecido o cuando se inhabilita, la
instrucción OSR borra el bit de salida.
condición de entrada
del renglón
bit de almacenamiento
bit de salida
la instrucción
se ejecuta
la instrucción se restablece durante
la siguiente ejecución del escán
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
91
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit de almacenamiento se establece para evitar una activación no válida durante el
primer escán.
El bit de salida se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
El bit de almacenamiento se borra.
El bit de salida no se modifica.
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
examinar bit de
almacenamiento
bit de
almacenamiento = 0
bit de
almacenamiento = 1
el bit de almacenamiento se
establece
el bit de salida se establece
la condición de salida de
renglón se establece como
verdadera
el bit de almacenamiento
permanece establecido
el bit de salida se borra la
condición de salida de
renglón se establece como
verdadera
post-escán
fin
El bit de almacenamiento se borra.
El bit de salida no se modifica.
La condición de salida de renglón se establece como falsa.
92
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Capítulo 2
Ejemplo: Cada vez que limit_switch_1 cambia de borrado a establecido, la
instrucción OSR establece output_bit_1 y la instrucción ADD
incrementa sum en 5. Siempre que limit_switch_1 permanezca
establecido, sum permanece con el mismo valor. El limit_switch_1
debe cambiar de borrado a establecido nuevamente para que sum se
incremente nuevamente. Usted puede usar output_bit_1 en varios
renglones para activar otras operaciones.
Publicación 1756-RM003K-ES-P – Julio 2008
93
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Un impulso en flanco
descendente (OSF)
La instrucción OSF establece o borra el bit de salida dependiendo del
estado del bit de almacenamiento.
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como OSFI; vea la página 99.
Operandos:
Operandos de lógica de escalera de relés
Operando
Tipo
Formato
Descripción
storage bit
BOOL
tag
bit de almacenamiento interno
almacena la condición de entrada del renglón
desde la última vez que se ejecutó la
instrucción
output bit
BOOL
tag
bit que se va a establecer
Descripción: Cuando se inhabilita y el bit de almacenamiento está establecido, la
instrucción OSF establece el bit de salida. Cuando se inhabilita y el bit
de almacenamiento está borrado o cuando se habilita, la instrucción
OSF borra el bit de salida.
condición de
entrada del renglón
bit de
almacenamiento
bit de salida
la instrucción
se ejecuta
la instrucción se restablece
durante la siguiente
ejecución del escán
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
94
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Capítulo 2
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit de almacenamiento se borra para evitar una activación no válida durante el primer
escán.
El bit de salida se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es falsa
examinar bit de
almacenamiento
bit de
almacenamiento = 0
bit de
almacenamiento = 1
el bit de almacenamiento
permanece borrado
el bit de salida se borra la
condición de salida de
renglón se establece como
falsa
el bit de almacenamiento
se borra
el bit de salida se establece
la condición de salida de
renglón se establece como
falsa
condición de entrada de renglón es verdadera
fin
El bit de almacenamiento se establece.
El bit de salida se borra.
La condición de salida de renglón se establece como verdadera.
post-escán
Nótese que la condición de entrada del renglón es falsa arriba.
Ejemplo: Cada vez que limit_switch_1 cambia de establecido a borrado, la
instrucción OSF establece output_bit_2 y la instrucción ADD
incrementa sum en 5. Siempre que limit_switch_1 permanezca
borrado, sum permanece con el mismo valor. El limit_switch_1 debe
cambiar de establecido a borrado nuevamente para que sum se
incremente nuevamente. Usted puede usar output_bit_2 en varios
renglones para activar otras operaciones.
Publicación 1756-RM003K-ES-P – Julio 2008
95
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Un impulso en flanco
ascendente con entrada
(OSRI)
La instrucción OSRI establece el bit de salida por un ciclo de
ejecución cuando el bit de entrada cambia de borrado a establecido.
Esta instrucción está disponible en lógica de escalera de relés como
OSR; vea la página 91.
Operandos:
OSRI(OSRI_tag);
Texto estructurado
Operando
Tipo
Formato
Descripción
tag OSRI
FBD_ONESHOT
estructura
estructura OSRI
Bloque de funciones
Operando
Tipo
Formato
Descripción
tag OSRI
FBD_ONESHOT
estructura
estructura OSRI
Estructura FBD_ONESHOT
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
InputBit
BOOL
Bit de entrada. Esto es equivalente a la condición del renglón para la instrucción OSR de
lógica de escalera de relés.
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
OutputBit
BOOL
Bit de salida
96
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Capítulo 2
Descripción: Cuando InputBit se establece y InputBitn-1 se borra, la instrucción
OSRI establece OutputBit. Cuando InputBitn-1 se establece o cuando
InputBit se borra, la instrucción OSRI borra OutputBit.
InputBit
InputBitn-1
OutputBit
la instrucción
se ejecuta
la instrucción se restablece durante
la siguiente ejecución del escán
40048
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de bloque de funciones
Acción de texto estructurado
preescán
Ninguna.
Ninguna.
primer escán de instrucción InputBit n-1 se establece.
InputBit n-1 se establece.
primera ejecución de
instrucción
InputBit n-1 se establece.
InputBit n-1 se establece.
EnableIn se borra
EnableOut se borra, la instrucción no efectúa
ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece
En una transición de borrado a establecido de
InputBit, la instrucción establece InputBit n-1.
En una transición de borrado a establecido de
InputBit, la instrucción establece InputBit n-1.
La instrucción se ejecuta.
EnableIn siempre se establece.
EnableOut se establece.
La instrucción se ejecuta.
Ninguna.
Ninguna.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
97
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Ejemplo: Cuando limit_switch1 cambia de borrado a establecido, la instrucción
OSRI establece OutputBit por un escán.
Texto estructurado
OSRI_01.InputBit := limit_switch1;
OSRI(OSRI_01);
State := OSRI_01.OutputBit;
Bloque de funciones
98
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Un impulso en flanco
descendente con entrada
(OSFI)
Capítulo 2
La instrucción OSFI establece OutputBit por un ciclo de ejecución
cuando InputBit cambia de establecido a borrado.
Esta instrucción está disponible en lógica de escalera de relés como
OSF; vea la página 94.
Operandos:
OSFI(OSFI_tag);
Texto estructurado
Operando
Tipo
Formato
Descripción
tag OSFI
FBD_ONESHOT
estructura
estructura OSFI
Bloque de funciones
Operando
Tipo
Formato
Descripción
tag OSFI
FBD_ONESHOT
estructura
estructura OSFI
Estructura FBD_ONESHOT
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
InputBit
BOOL
Bit de entrada. Esto es equivalente a la condición del renglón para la instrucción OSF de
lógica de escalera de relés
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
OutputBit
BOOL
Bit de salida
Publicación 1756-RM003K-ES-P – Julio 2008
99
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Descripción: Cuando InputBit se borra y InputBit n-1 se establece, la instrucción
OSFI establece OutputBit. Cuando InputBit n-1 se borra o cuando
InputBit se establece, la instrucción OSFI borra OutputBit.
InputBit
InputBit n-1
OutputBit
la instrucción
se ejecuta
la instrucción se restablece durante
la siguiente ejecución del escán
40047
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de bloque de funciones
Acción de texto estructurado
preescán
Ninguna.
Ninguna.
primer escán de instrucción InputBit n-1 se borra.
InputBit n-1 se borra.
primera ejecución de
instrucción
InputBit n-1 se borra.
InputBit n-1 se borra.
EnableIn se borra
EnableOut se borra, la instrucción no efectúa
ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece
En una transición de borrado a establecido de
InputBit, la instrucción borra InputBit n-1.
En una transición de borrado a establecido de
InputBit, la instrucción borra InputBit n-1.
La instrucción se ejecuta.
EnableIn siempre se establece.
EnableOut se establece.
La instrucción se ejecuta.
Ninguna.
Ninguna.
post-escán
100
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Capítulo 2
Ejemplo: Cuando limit_switch1 cambia de establecido a borrado, la instrucción
OSFI establece OutputBit por un escán.
Texto estructurado
OSFI_01.InputBit := limit_switch1;
OSFI(OSFI_01);
Output_state := OSFI_01.OutputBit;
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
101
Capítulo 2
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Notas:
102
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
3
Instrucciones de temporizador y contador
(TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Introducción
Si desea
Los temporizadores y contadores controlan operaciones en base a
tiempo o número de eventos.
Use esta instrucción
Disponible en estos lenguajes
Vea la página
establecer el tiempo durante el cual un
temporizador está habilitado
TON
lógica de escalera de relés
104
establecer el tiempo durante el cual un
temporizador está inhabilitado
TOF
lógica de escalera de relés
108
acumular tiempo
RTO
lógica de escalera de relés
112
establecer el tiempo durante el cual un
temporizador está habilitado con
restablecimiento incorporado en el bloque de
funciones
TONR
texto estructurado
116
establecer el tiempo durante el cual un
temporizador está inhabilitado con
restablecimiento incorporado en el bloque de
funciones
TOFR
acumular tiempo con restablecimiento
incorporado en el bloque de funciones
RTOR
bloque de funciones
texto de estructura
120
bloque de funciones
texto estructurado
124
bloque de funciones
conteo progresivo
CTU
lógica de escalera de relés
128
conteo regresivo
CTD
lógica de escalera de relés
132
conteo progresivo y regresivo en el bloque de
funciones
CTUD
texto estructurado
136
bloque de funciones
restablecer un temporizador o un contador
RES
lógica de escalera de relés
141
La base de tiempo para todos los temporizadores es 1 ms.
103Publicación 1756-RM003K-ES-P – Julio 2008
103
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporizador de retardo a
la conexión (TON)
La instrucción TON es un temporizador no retentivo que acumula el
tiempo cuando la instrucción está habilitada (la condición de entrada
del renglón es verdadera).
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como TONR; vea la página 116.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Timer
TIMER
tag
estructura de temporizador
Preset
DINT
inmediato
período de retardo (acumulación de tiempo)
Acum
DINT
inmediato
el tiempo en ms contado por el temporizador
el valor inicial es típicamente 0
Estructura TIMER
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción TON está habilitada.
.TT
BOOL
El bit de temporización indica que se está ejecutando una operación de temporización.
.DN
BOOL
El bit de efectuado se establece cuando .ACC ≥ .PRE.
.PRE
DINT
El valor de preajuste especifica el valor (en unidades de 1 ms) al que debe llegar el valor
acumulado para que la instrucción establezca el bit .DN.
.ACC
DINT
El valor acumulado especifica el número de milisegundos que han transcurrido desde que se
habilitó la instrucción TON.
Descripción: La instrucción TON acumula tiempo hasta que:
• la instrucción TON se inhabilita
• .ACC ≥ .PRE
La base de tiempo siempre es 1 ms. Por ejemplo, en un temporizador
de 2 segundos, introduzca 2000 como valor .PRE.
104
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Cuando se inhabilita la instrucción TON, se borra el valor .ACC.
condición de entrada del renglón
bit de habilitación de temporizador (.EN)
bit de temporizador temporizando (.TT)
bit de temporizador expirado (.DN)
Retardo
a la
conexión
preajuste
valor acumulado de temporizador (.ACC) 0
el temporizador no
llegó al valor .PRE
16649
Un temporizador se ejecuta restando la hora de su último escán de la
hora actual:
ACC = ACC + (current_time - last_time_scanned)
Después de que se actualiza el ACC, el temporizador establece
last_time_scanned = current_time. Esto deja el temporizador
listo para el siguiente escán.
IMPORTANTE
Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.
De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del
temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de
69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de
69 minutos si lo coloca en una:
• subrutina
• sección de código comprendida entre las instrucciones JMP y LBL
• diagrama de función secuencial (SFC)
• evento o tarea periódica
• rutina de estado de una fase
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo mayor si
Publicación 1756-RM003K-ES-P – Julio 2008
Tipo de fallo
Código de fallo
.PRE < 0
4
34
.ACC < 0
4
34
105
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
Los bits .EN, .TT y .DN se borran.
El valor .ACC se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
Los bits .EN, .TT y .DN se borran.
El valor .ACC se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
examine el bit .DN
Bit .DN = 1
Bit .DN = 0
examine el bit .EN
Bit .EN = 0
el bit .EN se establece
el bit .TT se establece
last_time = current_time
Bit .EN = 1
el bit .TT se establece
.ACC = .ACC + (current_time - last_time)
last_time = current_time
.ACC ≥ .PRE
examine .ACC
.ACC < .PRE
.DN se establece
el bit .TT se borra
el bit .EN se
establece
el valor .ACC
retorna al valor
inicial
sí
no
la condición de salida de
renglón se establece como
verdadera
.ACC = 2,147,483,647
fin
post-escán
106
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Ejemplo: Cuando limit_switch_1 se establece, light_2 se enciende por 180 ms.
(timer_1 está temporizando). Cuando timer_1.acc llega a 180, light_2
se apaga y light_3 se enciende. Light_3 permanece encendida hasta
que se inhabilita la instrucción TON. Si limit_switch_1 se borra
mientras que timer_1 está temporizando light_2 se apaga.
Publicación 1756-RM003K-ES-P – Julio 2008
107
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporizador de retardo a
la desconexión (TOF)
La instrucción TOF es un temporizador no retentivo que acumula el
tiempo cuando la instrucción está habilitada (la condición de entrada
del renglón es falsa).
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como TOFR; vea la página 120.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Timer
TIMER
tag
estructura de temporizador
Preset
DINT
inmediato
período de retardo (acumulación de tiempo)
Acum
DINT
inmediato
total de ms que contó el temporizador
el valor inicial es típicamente 0
Estructura TIMER
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción TOF está habilitada.
.TT
BOOL
El bit de temporización indica que se está ejecutando una operación de temporización.
.DN
BOOL
El bit de efectuado se borra cuando .ACC ≥ .PRE.
.PRE
DINT
El valor de preajuste especifica el valor (en unidades de 1 ms) al que debe llegar el valor
acumulado para que la instrucción borre el bit .DN.
.ACC
DINT
El valor acumulado especifica el número de milisegundos que han transcurrido desde que se
habilitó la instrucción TOF.
Descripción: La instrucción TOF acumula tiempo hasta que:
• la instrucción TOF se inhabilita
• .ACC ≥ .PRE
La base de tiempo siempre es 1 ms. Por ejemplo, en un temporizador
de 2 segundos, introduzca 2000 para el valor .PRE.
108
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Cuando se inhabilita la instrucción TOF, se borra el valor .ACC.
condición de entrada del renglón
bit de habilitación de temporizador (.EN)
bit de temporizador temporizando (.TT)
bit de temporizador expirado (.DN)
retardo a la
desconexión
preajuste
valor acumulado de temporizador (.ACC)
0
16650
el temporizador no llegó al valor .PRE
Un temporizador se ejecuta restando la hora de su último escán de la
hora actual:
ACC = ACC + (current_time - last_time_scanned)
Después de que se actualiza el ACC, el temporizador establece
last_time_scanned = current_time. Esto deja el temporizador
listo para el siguiente escán.
IMPORTANTE
Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.
De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del
temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de
69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de
69 minutos si lo coloca en una:
• subrutina
• sección de código comprendida entre las instrucciones JMP y LBL
• diagrama de función secuencial (SFC)
• evento o tarea periódica
• rutina de estado de una fase
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo mayor si
Publicación 1756-RM003K-ES-P – Julio 2008
Tipo de fallo
Código de fallo
.PRE < 0
4
34
.ACC < 0
4
34
109
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
Los bits .EN, .TT y .DN se borran.
El valor .ACC se establece para coincidir con el valor .PRE.
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es falsa
examine el bit .DN
Bit .DN = 0
Bit .DN = 1
examine el bit .EN
Bit .EN = 1
el bit .EN se borra
el bit .TT se establece
last_time = current_time
Bit .EN = 0
el bit .TT se establece
.ACC = .ACC + (current_time - last_time)
last_time = current_time
examine .ACC
.ACC ≥ .PRE
.ACC < .PRE
el valor .ACC
retorna al
valor inicial
.DN se borra
el bit .TT se borra
el bit .EN se borra
no
sí
la condición de salida de
renglón se establece como
falsa
.ACC = 2,147,483,647
fin
condición de entrada de renglón es verdadera
Los bits .EN, .TT y .DN se establecen.
El valor .ACC se borra.
La condición de salida de renglón se establece como verdadera.
post-escán
110
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Ejemplo: Cuando limit_switch_2 se borra, light_2 se enciende durante 180 ms
(timer_2 está temporizando). Cuando timer_2.acc llega a 180, light_2
se apaga y light_3 se enciende. Light_3 permanece encendida hasta
que se habilita la instrucción TOF. Si limit_switch_2 se establece
mientras que timer_2 está temporizando light_2 se apaga.
Publicación 1756-RM003K-ES-P – Julio 2008
111
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporizador retentivo
activado (RTO)
La instrucción RTO es un temporizador retentivo que acumula tiempo
cuando la instrucción está habilitada.
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como RTOR; vea la página 124.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Timer
TIMER
tag
estructura de temporizador
Preset
DINT
inmediato
período de retardo (acumulación de tiempo)
Acum
DINT
inmediato
número de ms que contó el temporizador
el valor inicial es típicamente 0
Estructura TIMER
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción RTO está habilitada.
.TT
BOOL
El bit de temporización indica que se está ejecutando una operación de temporización.
.DN
BOOL
El bit de efectuado indica que .ACC ≥ .PRE.
.PRE
DINT
El valor de preajuste especifica el valor (en unidades de 1 ms) al que debe llegar el valor
acumulado para que la instrucción establezca el bit .DN.
.ACC
DINT
El valor acumulado especifica el número de milisegundos que han transcurrido desde que se
habilitó la instrucción RTO.
Descripción: La instrucción RTO acumula tiempo hasta que se inhabilita. Cuando la
instrucción RTO se inhabilita, retiene su valor .ACC. Usted debe borrar
el valor .ACC, normalmente con una instrucción RES que referencia la
misma estructura TIMER.
112
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
La base de tiempo siempre es 1 ms. Por ejemplo, en un temporizador
de 2 segundos, introduzca 2000 para el valor .PRE.
condición de entrada del renglón
bit de habilitación de temporizador (.EN)
condición de renglón que controla la instrucción RES
bit de temporizador temporizando (.TT)
bit de temporizador expirado (.DN)
preajuste
16651
valor acumulado de temporizador (.ACC)
0
el temporizador no llegó al valor .PRE
Un temporizador se ejecuta restando la hora de su último escán de la
hora actual:
ACC = ACC + (current_time - last_time_scanned)
Después de que se actualiza el ACC, el temporizador establece
last_time_scanned = current_time. Esto deja el temporizador
listo para el siguiente escán.
IMPORTANTE
Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.
De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del
temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de
69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de
69 minutos si lo coloca en una:
• subrutina
• sección de código comprendida entre las instrucciones JMP y LBL
• diagrama de función secuencial (SFC)
• evento o tarea periódica
• rutina de estado de una fase
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo mayor si
Publicación 1756-RM003K-ES-P – Julio 2008
Tipo de fallo
Código de fallo
.PRE < 0
4
34
.ACC < 0
4
34
113
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
Los bits .EN, .TT y .DN se borran.
El valor .ACC no se modifica.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
Los bits .EN y .TT se borran.
El bit .DN no se modifica.
El valor .ACC no se modifica.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón
es verdadera
examine el bit .DN
Bit .DN = 1
Bit .DN = 0
examine el bit .EN
Bit .EN = 0
el bit .EN se establece
el bit .TT se establece
last_time = current_time
Bit .EN = 1
el bit .TT se establece
.ACC = .ACC + (current_time - last_time)
last_time = current_time
examine .ACC
.ACC < .PRE
el valor .ACC
retorna al
valor inicial
sí
.ACC ≥ .PRE
.DN se establece
el bit .TT se borra
el bit .EN se
establece
no
la condición de salida de
renglón se establece como
verdadera
.ACC = 2,147,483,647
fin
post-escán
114
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Ejemplo: Cuando limit_switch_1 se establece, light_1 se enciende por 180 ms
(timer_2 está temporizando). Cuando timer_3.acc llega a 180, light_1
se apaga y light_2 se enciende. Light_2 permanece hasta que timer_3
se restablece. Si limit_switch_2 se borra mientras que timer_3 está
temporizando light_1 permanece encendida. Cuando limit_switch_2
se establece, la instrucción RES restablece timer_3 (borra los bits de
estado y el valor .ACC).
Publicación 1756-RM003K-ES-P – Julio 2008
115
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporizador de retardo
a la conexión con
restablecimiento (TONR)
La instrucción TONR es un temporizador no retentivo que acumula
tiempo cuando TimerEnable está establecido.
Esta instrucción está disponible en lógica de escalera de relés como
dos instrucciones separadas: TON (vea página 104) y RES
(vea página 141).
Operandos:
TONR(TONR_tag);
Texto estructurado
Variable
Tipo
Formato
Descripción
tag TONR
FBD_TIMER
estructura
estructura TONR
Bloque de funciones
Operando
Tipo
Formato
Descripción
tag TONR
FBD_TIMER
estructura
estructura TONR
Estructura FBD_TIMER
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
TimerEnable
BOOL
Si se establece, permite que el temporizador se ejecute y acumule tiempo.
La opción predeterminada es borrado.
PRE
DINT
Valor prefijado en el temporizador. Éste es un valor expresado en unidades de 1 ms al que
ACC debe llegar antes de que concluya la temporización. Si no es válido, la instrucción
establece el bit apropiado en Status y el temporizador no se ejecuta.
Válido = 0 hasta el entero positivo máximo
Reset
BOOL
Petición para restablecer el temporizador. Cuando se establece, el temporizador se
restablece.
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
ACC
BOOL
Tiempo acumulado en milisegundos.
EN
BOOL
Salida de temporizador habilitado. Indica que la instrucción de temporizador está habilitada.
TT
BOOL
Salida de temporizador temporizando. Cuando se establece, se está ejecutando una
operación de temporización.
116
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Parámetro de
entrada
Tipo de datos
Descripción
DN
BOOL
Salida de temporización efectuada. Indica cuando el tiempo acumulado es mayor o igual que
el valor de preajuste.
Status
DINT
Estado del bloque de funciones.
InstructFault (Status.0) BOOL
La instrucción detectó uno de los siguientes errores de ejecución. Éste no es un error menor
ni mayor del controlador. Verifique los bits de estado restantes para determinar lo que
ocurrió.
PresetInv (Status.1)
El valor de preajuste no es válido.
BOOL
Descripción: La instrucción TONR acumula tiempo hasta que:
• la instrucción TONR se inhabilita
• ACC ≥ PRE
La base de tiempo siempre es 1 ms. Por ejemplo, en un temporizador
de 2 segundos, introduzca 2000 para el valor .PRE.
TimerEnable
bit de habilitación (EN)
bit de temporizador temporizando (TT)
bit de temporizador expirado (.DN)
Retardo
a la
conexión
preajuste
valor acumulado de temporizador (.ACC) 0
el temporizador no
llegó al valor PRE
16649
Establezca el parámetro de entrada Reset para restablecer la
instrucción. Si TimerEnable se establece cuando Reset se establece,
la instrucción TONR comienza la temporización nuevamente cuando
Reset se borra.
Un temporizador se ejecuta restando la hora de su último escán de la
hora actual:
ACC = ACC + (current_time - last_time_scanned)
Publicación 1756-RM003K-ES-P – Julio 2008
117
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Después de que se actualiza el ACC, el temporizador establece
last_time_scanned = current_time. Esto deja el temporizador
listo para el siguiente escán.
IMPORTANTE
Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.
De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del
temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de
69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de
69 minutos si lo coloca en una:
• subrutina
• sección de código comprendida entre las instrucciones JMP y LBL
• diagrama de función secuencial (SFC)
• evento o tarea periódica
• rutina de estado de una fase
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de bloque de funciones
Acción de texto estructurado
preescán
Ninguna.
Ninguna.
primer escán de instrucción Los bits EN, TT y DN se borran.
Los bits EN, TT y DN se borran.
El valor ACC se establece en 0.
El valor ACC se establece en 0.
Los bits EN, TT y DN se borran.
Los bits EN, TT y DN se borran.
El valor ACC se establece en 0.
El valor ACC se establece en 0.
EnableIn se borra
EnableOut se borra, la instrucción no efectúa
ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece
Cuando EnableIn cambia de borrado a establecido,
la instrucción se inicializa según lo descrito para el
primer escán de la instrucción.
EnableIn siempre se establece.
primera ejecución de
instrucción
La instrucción se ejecuta.
La instrucción se ejecuta.
EnableOut se establece.
restablecimiento
Cuando el parámetro de entrada Reset se establece, Cuando el parámetro de entrada Reset se establece,
la instrucción borra EN, TT y DN y establece
la instrucción borra EN, TT y DN y establece
ACC = cero.
ACC = cero.
post-escán
Ninguna.
118
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Ejemplo: En cada escán que limit_switch1 se establece, la instrucción TONR
incrementa el valor ACC en una cantidad equivalente al tiempo
transcurrido hasta que el valor ACC llega al valor PRE. Cuando
ACC ≥ PRE, el parámetro DN se establece y timer_state se establece.
Texto estructurado
TONR_01.Preset := 500;
TONR_01.Reset : = reset;
TONR_O1.TimerEnable := limit_switch1;
TONR(TONR_01);
timer_state := TONR_01.DN;
Ejemplo de bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
119
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporizador de retardo a
la desconexión con
restablecimiento (TOFR)
La instrucción TOFR es un temporizador no retentivo que acumula
tiempo cuando TimerEnable está borrado.
Esta instrucción está disponible en lógica de escalera de relés como
dos instrucciones separadas: TOF (vea página 108) y RES
(vea página 141).
Operandos:
TOFR(TOFR_tag);
Texto estructurado
Variable
Tipo
Formato
Descripción
TOFR tag
FBD_TIMER
estructura
estructura TOFR
Operandos de bloque de funciones
Operando
Tipo
Formato
Descripción
TOFR tag
FBD_TIMER
estructura
estructura TOFR
Estructura FBD_TIMER
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
TimerEnable
BOOL
Si se borra, permite que el temporizador se ejecute y acumule tiempo.
La opción predeterminada es borrado.
PRE
DINT
Valor prefijado en el temporizador. Éste es un valor en unidades de 1 ms al que ACC debe
llegar antes de que concluya la temporización. Si no es válido, las instrucciones establecen
el bit apropiado en Status y el temporizador no se ejecuta.
Válido = 0 hasta el entero positivo máximo
Reset
BOOL
Petición para restablecer el temporizador. Cuando se establece, el temporizador se
restablece.
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
ACC
BOOL
Tiempo acumulado en milisegundos.
EN
BOOL
Salida de temporizador habilitado. Indica que la instrucción de temporizador está habilitada.
TT
BOOL
Salida de temporizador temporizando. Cuando se establece, se está ejecutando una
operación de temporización.
120
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Parámetro de
entrada
Tipo de datos
Descripción
DN
BOOL
Salida de temporizador expirado. Indica cuando el tiempo acumulado es mayor o igual que el
valor de preajuste.
Status
DINT
Estado del bloque de funciones.
InstructFault (Status.0) BOOL
La instrucción detectó uno de los siguientes errores de ejecución. Éste no es un error menor
ni mayor del controlador. Verifique los bits de estado restantes para determinar lo que
ocurrió.
PresetInv (Status.1)
El valor de preajuste no es válido.
BOOL
Descripción: La instrucción TOFR acumula tiempo hasta que:
• la instrucción TOFR se inhabilita
• ACC ≥ PRE
La base de tiempo siempre es 1 ms. Por ejemplo, en un temporizador
de 2 segundos, introduzca 2000 para el valor .PRE.
TimerEnable
bit de habilitación (EN)
bit de temporizador temporizando (TT)
bit de temporizador expirado (.DN)
retardo a la
desconexión
preajuste
valor acumulado de temporizador (.ACC)
0
16650
el temporizador no llegó al valor PRE
Establezca el parámetro de entrada Reset para restablecer la
instrucción. Si TimerEnable se borra cuando Reset se establece, la
instrucción TOFR no comienza a temporizar nuevamente hasta que se
Reset se borra.
Un temporizador se ejecuta restando la hora de su último escán de la
hora actual:
ACC = ACC + (current_time - last_time_scanned)
Publicación 1756-RM003K-ES-P – Julio 2008
121
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Después de que se actualiza el ACC, el temporizador establece
last_time_scanned = current_time. Esto deja el temporizador
listo para el siguiente escán.
IMPORTANTE
Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.
De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del
temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de
69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de
69 minutos si lo coloca en una:
• subrutina
• sección de código comprendida entre las instrucciones JMP y LBL
• diagrama de función secuencial (SFC)
• evento o tarea periódica
• rutina de estado de una fase
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de bloque de funciones
Acción de texto estructurado
preescán
Ninguna.
Ninguna.
primer escán de instrucción Los bits EN, TT y DN se borran.
Los bits EN, TT y DN se borran.
El valor ACC se establece en PRE.
El valor ACC se establece en PRE.
Los bits EN, TT y DN se borran.
Los bits EN, TT y DN se borran.
El valor ACC se establece en PRE.
El valor ACC se establece en PRE.
EnableIn se borra
EnableOut se borra, la instrucción no efectúa
ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece
Cuando EnableIn cambia de borrado a establecido, la EnableIn siempre se establece.
instrucción se inicializa según lo descrito para el
primer escán de la instrucción.
La instrucción se ejecuta.
primera ejecución de
instrucción
La instrucción se ejecuta.
EnableOut se establece.
restablecimiento
Cuando el parámetro de entrada Reset se establece,
la instrucción borra EN, TT y DN, y establece
ACC = PRE. Tenga presente que esto es diferente a
usar una instrucción RES en una instrucción TOF.
Cuando el parámetro de entrada Reset se establece,
la instrucción borra EN, TT y DN, y establece
ACC = PRE. Tenga presente que esto es diferente a
usar una instrucción RES en una instrucción TOF.
post-escán
Ninguna.
Ninguna.
Ejemplo: En cada escán después de que limit_switch1 se borra, la instrucción
TOFR incrementa el valor ACC en una cantidad equivalente al tiempo
transcurrido hasta que el valor ACC llega al valor PRE. Cuando
ACC ≥ PRE, el parámetro DN se borra y timer_state2 se establece.
122
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Texto estructurado
TOFR_01.Preset := 500
TOFR_01.Reset := reset;
TOFR_O1.TimerEnable := limit_switch1;
TOFR(TOFR_01);
timer_state2 := TOFR_01.DN;
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
123
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporizador retentivo
activado con
restablecimiento (RTOR)
La instrucción RTOR es un temporizador retentivo que acumula
tiempo cuando TimerEnable está establecido.
Esta instrucción está disponible en lógica de escalera de relés como
dos instrucciones separadas: RTO (vea página 112) y RES
(vea página 141).
Operandos:
RTOR(RTOR_tag);
Texto estructurado
Variable
Tipo
Formato
Descripción
RTOR tag
FBD_TIMER
estructura
estructura RTOR
Operandos de bloque de funciones
Operando
Tipo
Formato
Descripción
RTOR tag
FBD_TIMER
estructura
estructura RTOR
Estructura FBD_TIMER
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
TimerEnable
BOOL
Si se establece, permite que el temporizador se ejecute y acumule tiempo.
La opción predeterminada es borrado.
PRE
DINT
Valor prefijado en el temporizador. Éste es un valor expresado en unidades de 1 ms al que
ACC debe llegar antes de que concluya la temporización. Si no es válido, la instrucción
establece el bit apropiado en Status y el temporizador no se ejecuta.
Válido = 0 hasta el entero positivo máximo
Reset
BOOL
Petición para restablecer el temporizador. Cuando se establece, el temporizador se
restablece.
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
ACC
DINT
Tiempo acumulado en milisegundos. Este valor queda retenido aun cuando la entrada
TimerEnable se borra. Ésta es la diferencia entre el comportamiento de este bloque y el del
bloque TONR.
EN
BOOL
Salida de temporizador habilitado. Indica que la instrucción de temporizador está habilitada.
TT
BOOL
Salida de temporizador temporizando. Cuando se establece, se está ejecutando una
operación de temporización.
124
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Parámetro de
entrada
Tipo de datos
Descripción
DN
BOOL
Salida de temporizador expirado. Indica cuando el tiempo acumulado es mayor o igual que el
valor de preajuste.
Status
DINT
Estado del bloque de funciones.
InstructFault (Status.0) BOOL
La instrucción detectó uno de los siguientes errores de ejecución. Éste no es un error menor
ni mayor del controlador. Verifique los bits de estado restantes para determinar lo que
ocurrió.
PresetInv (Status.1)
El valor de preajuste no es válido.
BOOL
Descripción: La instrucción RTOR acumula tiempo hasta que se inhabilita. Cuando
la instrucción RTOR se inhabilita, retiene su valor .ACC. Usted debe
borrar el valor .ACC usando la entrada de restablecimiento.
La base de tiempo siempre es 1 ms. Por ejemplo, en un temporizador
de 2 segundos, introduzca 2000 para el valor .PRE.
TimerEnable
bit de habilitación (EN)
Reset
bit de temporizador temporizando (TT)
bit de temporizador expirado (.DN)
preajuste
16651
valor acumulado de temporizador (.ACC)
0
el temporizador no llegó al valor PRE
Establezca el parámetro de entrada Reset para restablecer la
instrucción. Si TimerEnable se establece cuando Reset se establece,
la instrucción RTOR comienza la temporización nuevamente cuando
Reset se borra.
Un temporizador se ejecuta restando la hora de su último escán de la
hora actual:
ACC = ACC + (current_time - last_time_scanned)
Publicación 1756-RM003K-ES-P – Julio 2008
125
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Después de que se actualiza el ACC, el temporizador establece
last_time_scanned = current_time. Esto deja el temporizador
listo para el siguiente escán.
IMPORTANTE
Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.
De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del
temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de
69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de
69 minutos si lo coloca en una:
• subrutina
• sección de código comprendida entre las instrucciones JMP y LBL
• diagrama de función secuencial (SFC)
• evento o tarea periódica
• rutina de estado de una fase
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de bloque de funciones
Acción de texto estructurado
preescán
Ninguna.
Ninguna.
primer escán de instrucción Los bits EN, TT y DN se borran.
Los bits EN, TT y DN se borran.
El valor .ACC no se modifica.
El valor .ACC no se modifica.
Los bits EN, TT y DN se borran.
Los bits EN, TT y DN se borran.
El valor .ACC no se modifica.
El valor .ACC no se modifica.
EnableIn se borra
EnableOut se borra, la instrucción no efectúa
ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece
Bloque de funciones:
EnableIn siempre se establece.
Cuando EnableIn cambia de borrado a establecido,
la instrucción se inicializa según lo descrito para el
primer escán de la instrucción.
La instrucción se ejecuta.
primera ejecución de
instrucción
La instrucción se ejecuta.
EnableOut se establece.
restablecimiento
Cuando el parámetro de entrada Reset se establece, Cuando el parámetro de entrada Reset se establece,
la instrucción borra EN, TT y DN y establece
la instrucción borra EN, TT y DN y establece
ACC = cero.
ACC = cero.
post-escán
Ninguna.
126
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Ejemplo: En cada escán que limit_switch1 se establece, se establece, la
instrucción RTOR incrementa el valor ACC en una cantidad
equivalente al tiempo transcurrido hasta que el valor ACC llega al
valor PRE. Cuando ACC ≥ PRE, el parámetro DN se establece y
timer_state3 se establece.
Texto estructurado
RTOR_01.Preset := 500
RTOR_01.Reset := reset;
RTOR_O1.TimerEnable := limit_switch1;
RTOR(RTOR_01);
timer_state3 := RTOR_01.DN;
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
127
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Conteo progresivo (CTU)
La instrucción CTU cuenta progresivamente.
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como CTUD; vea la página 136.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Counter
COUNTER
tag
estructura de contador
Preset
DINT
inmediato
valor superior hasta donde contar
Acum
DINT
inmediato
número de veces que contó el contador
el valor inicial es típicamente 0
Estructura COUNTER
Mnemónico
Tipo de datos
Descripción
.CU
BOOL
El bit de habilitación de conteo progresivo indica que la instrucción CTU está habilitada.
.DN
BOOL
El bit de efectuado indica que .ACC ≥ .PRE.
.OV
BOOL
El bit de overflow indica que el contador excedió el límite superior de 2,147,483,647, por lo
que el contador regresa a -2,147,483,648 y comienza nuevamente el conteo progresivo.
.UN
BOOL
El bit de underflow indica que el contador excedió el límite inferior de -2,147,483,648, por lo
que el contador regresa a 2,147,483,647 y comienza nuevamente el conteo regresivo.
.PRE
DINT
El valor de preajuste especifica el valor al que debe llegar el valor acumulado para que la
instrucción establezca el bit .DN.
.ACC
DINT
El valor acumulado especifica el número de transiciones que contó la instrucción.
128
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Descripción: Cuando se habilita y el bit .CU se borra, la instrucción CTU
incrementa el contador en uno. Cuando se habilita y el bit .CU se
establece, o cuando se inhabilita, la instrucción CTU retiene su
valor .ACC.
condición de entrada del renglón
bit de habilitación de conteo progresivo (.CU)
bit de conteo progresivo efectuado (.DN)
preajuste
valor acumulado de contador (.ACC)
16636
El valor acumulado continúa incrementándose, incluso después de
que se establece el bit .DN. Para borrar el valor acumulado, use una
instrucción RES que referencie la estructura de contador o escriba 0 en
el valor acumulado.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
129
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit .CU se establece para evitar incrementos no válidos durante el primer escán del
programa.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
El bit .EN se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
bit .CU = 0
examine el bit .CU
el bit .CU se establece
el valor .ACC
retorna al valor
inicial
.ACC = .ACC + 1
sí
no
bit .CU = 1
el bit .UN se borra
el bit .DN se borra
el bit .OV se borra
el bit .UN = 1
examine el bit .UN
el bit .UN = 0
examine el bit .UN
el bit .UN = 0
el bit .UN = 1
examine el bit .OV
el bit .OV = 0
el bit .OV se
establece
el bit .OV = 1
examine .ACC
.ACC ≥ .PRE
.ACC < .PRE
el bit .DN se borra
el bit .DN se
establece
la condición de salida de
renglón se establece como
verdadera
fin
post-escán
130
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Ejemplo: Después de que limit_switch_1 cambia de inhabilitado a habilitado
10 veces, el bit .DN se establece y light_1 se enciende. Si
limit_switch_1 continúa cambiando de inhabilitado a habilitado,
counter_1 continúa incrementando su conteo y el bit .DN permanece
establecido. Cuando limit_switch_2 se habilita, la instrucción RES
restablece counter_1 (borra el bit de estado y el valor .ACC) y light_1
se apaga.
Publicación 1756-RM003K-ES-P – Julio 2008
131
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Conteo regresivo (CTD)
La instrucción CTD cuenta regresivamente.
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como CTUD; vea la página 136.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Counter
COUNTER
tag
estructura de contador
Preset
DINT
inmediato
valor inferior hasta donde contar
Acum
DINT
inmediato
número de veces que contó el contador
el valor inicial es típicamente 0
Estructura COUNTER
Mnemónico
Tipo de datos
Descripción
.CD
BOOL
El bit de habilitación de conteo regresivo indica que la instrucción CTD está habilitada.
.DN
BOOL
El bit de efectuado indica que .ACC ≥ .PRE.
.OV
BOOL
El bit de overflow indica que el contador excedió el límite superior de 2,147,483,647, por lo
que el contador regresa a -2,147,483,648 y comienza nuevamente el conteo progresivo.
.UN
BOOL
El bit de underflow indica que el contador excedió el límite inferior de -2,147,483,648, por lo
que el contador regresa a 2,147,483,647 y comienza nuevamente el conteo regresivo.
.PRE
DINT
El valor de preajuste especifica el valor al que debe llegar el valor acumulado para que la
instrucción establezca el bit .DN.
.ACC
DINT
El valor acumulado especifica el número de transiciones que contó la instrucción.
132
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Descripción: La instrucción CTD normalmente se usa con una instrucción CTU que
referencia la misma estructura de contador.
Cuando se habilita y el bit .CD se borra, la instrucción CTD
decrementa el contador en uno. Cuando se habilita y el bit .CD se
establece, o cuando se inhabilita, la instrucción CTD retiene su
valor .ACC.
condición de entrada del renglón
bit de habilitación de conteo regresivo (.CD)
bit de conteo regresivo efectuado (.DN)
valor acumulado de contador (.ACC)
preajuste
16637
El valor acumulado continúa decrementándose, aun después de que
se establece el bit .DN. Para borrar el valor acumulado, use una
instrucción RES que referencie la estructura de contador o escriba 0 en
el valor acumulado.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
133
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit .CD se establece para evitar decrementos no válidos durante el primer escán del
programa.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
El bit .CD se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
el bit .CD = 0
examine el bit .CD
el bit .CD se establece
el valor .ACC
retorna al
valor inicial
.ACC = .ACC - 1
sí
no
el bit .CD = 1
el bit .OV se borra
el bit .DN se borra
el bit .UN se borra
el bit .OV = 1
examine el bit .OV
el bit .OV = 0
examine el bit .UN
el bit .UN = 0
el bit .UN = 1
examine el bit .OV
el bit .OV = 0
el bit .UN se
establece
el bit .OV = 1
examine .ACC
.ACC ≥ .PRE
.ACC < .PRE
el bit .DN se borra
el bit .DN se
establece
la condición de salida de
renglón se establece como
verdadera
fin
post-escán
134
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Ejemplo: Un transportador lleva partes a una zona de almacenamiento
intermedio. Cada vez que entra una parte, limit_switch_1 se habilita
y counter_1 se incrementa en 1. Cada vez que sale una parte,
limit_switch_2 se habilita y counter_1 se decrementa en 1. Si hay
100 partes en la zona de almacenamiento intermedio (counter_1.dn
se establece), conveyor_a se activa y detiene el transportador para que
no lleve más partes hasta que la zona de almacenamiento intermedio
tenga espacio para más partes.
Publicación 1756-RM003K-ES-P – Julio 2008
135
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Conteo progresivo/
regresivo (CTUD)
La instrucción CTUD incrementa en uno el conteo cuando CUEnable
cambia de borrado a establecido. La instrucción decrementa en uno el
conteo cuando CDEnable cambia de borrado a establecido.
Esta instrucción está disponible en lógica de escalera de relés como
tres instrucciones separadas: CTU (ver página 128), CTD
(ver página 132), y RES (ver página 141).
Operandos:
CTUD(CTUD_tag);
Texto estructurado
Variable
Tipo
Formato
Descripción
CTUD tag
FBD_COUNTER
estructura
estructura CTUD
Bloque de funciones
Operando
Tipo
Formato
Descripción
CTUD tag
FBD_COUNTER
estructura
estructura CTUD
Estructura FBD_COUNTER
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
CUEnable
BOOL
Habilita el conteo progresivo. Cuando la entrada cambia de borrado a establecido,
el acumulador se incrementa en uno.
La opción predeterminada es borrado.
136
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Parámetro de
entrada
Tipo de datos
Descripción
CDEnable
BOOL
Habilita el conteo regresivo. Cuando la entrada cambia de borrado a establecido,
el acumulador se decrementa en uno.
Capítulo 3
La opción predeterminada es borrado.
PRE
DINT
Valor de preajuste del contador. Éste es el valor al cual debe llegar el valor acumulado para
que se establezca DN.
Válido = cualquier número entero
El valor predeterminado es 0.
Reset
BOOL
Petición para restablecer el temporizador. Cuando se establece, el contador se restablece.
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
ACC
DINT
Valor acumulado.
CU
BOOL
Conteo progresivo habilitado.
CD
BOOL
Conteo regresivo habilitado.
DN
BOOL
Conteo efectuado. Se establece cuando el valor acumulado es mayor o igual que el valor de
preajuste.
OV
BOOL
Overflow del contador. Indica que el contador excedió el límite superior de 2,147,483,647.
Seguidamente el contador regresa a −2,147,483,648 y comienza nuevamente el conteo
regresivo.
UN
BOOL
Underflow del contador. Indica que el contador excedió el límite inferior de −2,147,483,648.
Seguidamente el contador regresa a 2,147,483,647 y comienza nuevamente el conteo
regresivo.
Descripción Cuando se habilita y CUEnable se establece, la instrucción CTUD
incrementa el contador en uno. Cuando se habilita y CDEnable se
establece, la instrucción CTUD decrementa el contador en uno.
Ambos parámetros de entrada CUEnable y CDEnable pueden
alternarse durante el mismo escán. La instrucción ejecuta el conteo
progresivo antes del conteo regresivo.
Publicación 1756-RM003K-ES-P – Julio 2008
137
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Conteo progresivo
CUEnable
bit de habilitación de conteo progresivo (CU)
bit de conteo progresivo efectuado (.DN)
preajuste
valor acumulado de contador (ACC)
16636
Conteo regresivo
CDEnable
bit de habilitación de conteo regresivo (CD)
bit de conteo regresivo efectuado (.DN)
valor acumulado de contador (ACC)
preajuste
16637
Cuando se inhabilita, la instrucción CTUD retiene su valor acumulado.
Establezca el parámetro de entrada Reset de la estructura
FBD_COUNTER para restablecer la instrucción.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
138
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Capítulo 3
Ejecución:
Condición
Acción de bloque de funciones
Acción de texto estructurado
preescán
No se requiere inicialización.
No se requiere inicialización.
primer escán de instrucción CUEnablen-1 y CDEnablen-1 se establecen.
CUEnablen-1 y CDEnablen-1 se establecen.
primera ejecución de
instrucción
CUEnablen-1 y CDEnablen-1 se establecen.
CUEnablen-1 y CDEnablen-1 se establecen.
EnableIn se borra
EnableOut se borra, la instrucción no efectúa
ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece
La instrucción establece CUEnablen-1 y CDEnablen-1. La instrucción establece CUEnablen-1 y CDEnablen-1.
En una transición de borrado a establecido de
EnableIn:
• La instrucción se ejecuta.
EnableIn siempre se establece.
La instrucción se ejecuta.
• EnableOut se establece.
restablecimiento
Cuando se establece, la instrucción borra
CUEnablen-1, CDEnablen-1, CU, CD, DN, OV y UN y
establece ACC = cero.
Cuando se establece, la instrucción borra
CUEnablen-1, CDEnablen-1, CU, CD, DN, OV y UN y
establece ACC = cero.
post-escán
Ninguna.
Ninguna.
Ejemplo: Cuando limit_switch1 cambia de borrado a establecido, CUEnable se
establece por un escán y la instrucción CTUD incrementa el valor ACC
en 1. Cuando ACC ≥ PRE, el parámetro DN se establece, lo cual
habilita la instrucción de bloque de funciones después de la
instrucción CTUD.
Texto estructurado
CTUD_01.Preset := 500;
CTUD_01.Reset := Restart;
CTUD_O1.CUEnable := limit_switch1;
CTUD(CTUD_01);
counter_state := CTUD_01.DN;
Publicación 1756-RM003K-ES-P – Julio 2008
139
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Bloque de funciones
140
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Restablecer (RES)
Capítulo 3
La instrucción RES restablece una estructura TIMER, COUNTER o
CONTROL.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
estructura
TIMER
tag
estructura que se va a restablecer
CONTROL
COUNTER
Descripción: Cuando se habilita, la instrucción RES borra estos elementos:
Cuando se usa una
instrucción RES para
La instrucción borra
TIMER
el valor .ACC
los bits de estado de control
COUNTER
el valor .ACC
los bits de estado de control
CONTROL
el valor .POS
los bits de estado de control
ATENCIÓN
Puesto que la instrucción RES borra el valor .ACC, el bit .DN y
el bit .TT, no use la instrucción RES para restablecer un
temporizador TOF.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
141
Capítulo 3
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La instrucción RES restablece la estructura especificada.
La condición de salida de renglón se establece como verdadera.
post-escán
142
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
4
Instrucciones de entrada/salida
(MSG, GSV, SSV, IOT)
Introducción
Las instrucciones de entrada/salida leen o escriben datos desde o
hacia el controlador, o un bloque de datos desde o hacia otro módulo
en otra red.
Si desea
enviar datos desde o hacia otro módulo
Use esta instrucción
MSG
Disponible en estos lenguajes
lógica de escalera de relés
Vea la página
144
texto estructurado
obtener información de estado del controlador
GSV
lógica de escalera de relés
176
texto estructurado
establecer información de estado del
controlador
SSV
lógica de escalera de relés
176
texto estructurado
• enviar valores de salida a un módulo de E/S
o controlador consumidor en un punto
específico de su lógica
IOT
lógica de escalera de relés
201
texto estructurado
• activar una tarea de evento en otro
controlador
143Publicación 1756-RM003K-ES-P – Julio 2008
143
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Mensaje (MSG)
La instrucción MSG lee o escribe asíncronamente un bloque de datos
en otro módulo de una red.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Message
control
MESSAGE
tag
estructura de mensaje
Texto estructurado
MSG(MessageControl);
Los operandos son iguales a los de la instrucción MSG de lógica de
escalera de relés.
Estructura MESSAGE
ATENCIÓN
Si usted revisa los bits de estado más de una vez
El controlador cambia los bits DN, ER, EW y ST de manera asíncrona con el escán
de la lógica. Use una copia de los bits si los verifica en más de un lugar en la
lógica. De lo contrario, los bits pueden cambiar durante el escán y la lógica no
funcionará según lo esperado.
Una manera de hacer una copia es usar la palabra FLAGS. Copie la palabra
FLAGS a otro tag y verifique los bits en la copia.
IMPORTANTE
No cambie los siguientes bits de estado de una instrucción MSG:
• DN
• EN
• ER
• EW
• ST
No cambie esos bits por sí mismos ni como parte de la palabra FLAGS. Si lo hace,
el controlador puede sufrir un fallo no recuperable. El controlador borra el
proyecto de su memoria cuando sufre un fallo no recuperable.
144
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Mnemónico
Tipo de
datos
Descripción
.FLAGS
INT
El miembro .FLAGS proporciona acceso a los miembros de estado (bits) en una palabra de 16 bits.
Este bit:
Es este miembro:
2
.EW
4
.ER
5
.DN
6
.ST
7
.EN
8
.TO
9
.EN_CC
Importante: No cambie los bits EW, ER, DN ni ST del miembro FLAGS. Por ejemplo, no borre toda la
palabra FLAGS. El controlador ignora el cambio y usa los valores de los bits almacenados
internamente.
.ERR
INT
Si el bit .ER está establecido, la palabra de código de error identifica los códigos de error de la
instrucción MSG.
.EXERR
INT
La palabra de código de error extendida especifica información adicional de algunos códigos de
error.
.REQ_LEN
INT
La longitud solicitada especifica cuántas palabras la instrucción de mensaje intentará transferir.
.DN_LEN
INT
La longitud efectuada identifica cuántas palabras se transfirieron realmente.
.EW
BOOL
Se establece el bit de habilitación/espera cuando el controlador detecta que una solicitud de
mensaje ha entrado en la cola. El controlador restablece el bit .EW cuando se establece el bit .ST.
Importante: No cambie el bit EW. El controlador ignora el cambio y usa el valor del bit almacenado
internamente.
.ER
BOOL
Se establece el bit de error cuando el controlador detecta el fallo de una transferencia. El bit .ER se
restablece la próxima vez que la condición de entrada de renglón cambia de falsa a verdadera.
Importante: No cambie el bit ER.
.DN
BOOL
Se establece el bit de efectuado cuando se transfiere correctamente el último paquete del mensaje.
El bit .DN se restablece la próxima vez que la condición de entrada de renglón cambia de falsa a
verdadera.
Importante: No cambie el bit DN.
.ST
BOOL
Se establece el bit de arranque cuando el controlador comienza a ejecutar la instrucción MSG.
El bit .ST se restablece cuando se establece el bit .DN o .ER.
Importante: No cambie el bit ST. El controlador ignora el cambio y usa el valor del bit almacenado
internamente.
.EN
BOOL
Se establece el bit de habilitación cuando la condición de entrada de renglón se hace verdadera y
permanece establecida hasta que se establece el bit .DN o .ER y la condición de entrada de renglón
es falsa. Si la condición de entrada de renglón se hace falsa, pero los bits .DN y .ER se borran, el
bit .EN permanece establecido.
Importante: No cambie el bit EN.
.TO
BOOL
Si se establece manualmente el bit .TO, el controlador interrumpe el procesamiento del mensaje y
establece el bit .ER.
.EN_CC
BOOL
El bit de habilitación de caché determina cómo administrar la conexión MSG. Consulte Seleccione
una opción de caché en la página 4-173. Las conexiones para instrucciones MSG a través del puerto
serie no se guardan en la memoria caché aunque se establezca el bit .EN_CC.
.ERR_SRC
SINT
Usado por el software RSLogix 5000 para mostrar la ruta de error en el cuadro de diálogo Message
Configuration
Publicación 1756-RM003K-ES-P – Julio 2008
145
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Mnemónico
Tipo de
datos
Descripción
.DestinationLink
INT
Para cambiar el vínculo de destino de un DH+ o CIP con mensaje de ID de origen, establezca este
miembro en el valor requerido.
.DestinationNode
INT
Para cambiar el nodo de destino de un DH+ o CIP con mensaje de ID de origen, establezca este
miembro en el valor requerido.
.SourceLink
INT
Para cambiar el vínculo de origen de un DH+ o CIP con mensaje de ID de origen, establezca este
miembro en el valor requerido.
.Class
INT
Para cambiar el parámetro Class de un mensaje genérico de CIP, establezca este miembro en el valor
requerido.
.Attribute
INT
Para cambiar el parámetro Attribute de un mensaje genérico de CIP, establezca este miembro en el
valor requerido.
.Instance
DINT
Para cambiar el parámetro Instance de un mensaje genérico de CIP, establezca este miembro en el
valor requerido.
.LocalIndex
DINT
Si usted usa un asterisco [*] para eliminar el número de elemento de la matriz local, el LocalIndex
proporciona el número de elemento. Para cambiar el número de elemento, establezca este miembro
en el valor requerido.
Si el mensaje:
La matriz local es el:
lee datos
Elemento de destino
escribe datos
Elemento de origen
.Channel
SINT
Para enviar el mensaje a través de un canal diferente del módulo 1756-DHRIO, establezca este
miembro en el valor requerido. Use el carácter ASCII A o B.
.Rack
SINT
Para cambiar el número de rack en un mensaje de transferencia en bloques, establezca este
miembro en el número de rack requerido (octal).
.Group
SINT
Para cambiar el número de grupo en un mensaje de transferencia en bloques, establezca este
miembro en el número de grupo requerido (octal).
.Slot
SINT
Para cambiar el número de ranura en un mensaje de transferencia en bloques, establezca este
miembro en el número de ranura requerido.
.Path
STRING
Si el mensaje se
envía a través de
esta red:
Especifique el número de ranura en:
E/S remotas
universales
octal
ControlNet
decimal (0-15)
Para enviar el mensaje a un controlador diferente, establezca este miembro en la nueva ruta.
• Introduzca la ruta en valores decimales.
• Omita las comas [,]
Por ejemplo, para una ruta de 1, 0, 2, 42, 1, 3, introduzca $01$00$02$2A$01$03.
Para llegar a un dispositivo y crear automáticamente una porción o toda la nueva cadena, haga clic
con el botón derecho del mouse en un tag de cadena y seleccione Go to Message Path Editor.
.RemoteIndex
146
DINT
Si usted usa un asterisco [*] para designar el número de elemento de la matriz remota, el
RemoteIndex proporciona el número de elemento. Para cambiar el número de elemento, establezca
este miembro en el valor requerido.
Si el mensaje:
La matriz remota es el:
lee datos
Elemento de origen
escribe datos
Elemento de destino
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Mnemónico
Tipo de
datos
Descripción
.RemoteElement
STRING
Para especificar un tag o dirección diferente en el controlador al cual se envía el mensaje, establezca
este miembro en el valor requerido. Introduzca el tag o dirección en caracteres ASCII.
.UnconnnectedTimeout DINT
.ConnectionRate
DINT
.TimeoutMultiplier
SINT
Si el mensaje:
La matriz remota es el:
lee datos
Elemento de origen
escribe datos
Elemento de destino
Tiempo de espera para un mensaje no conectado o para hacer una conexión. El valor predeterminado
es 30 segundos.
Si el mensaje es
Entonces
no conectado
El bit ER se activa si el controlador no recibe una respuesta dentro del tiempo
UnconnectedTimeout.
conectado
El bit ER se activa si el controlador no recibe una respuesta para hacer la
conexión dentro del tiempo UnconnectedTimeout.
Tiempo de espera para un mensaje conectado una vez que tiene una conexión. Este tiempo de
espera es para la respuesta proveniente del otro dispositivo acerca del envío de datos.
• Este tiempo de espera se aplica solamente después de que se hace la conexión.
• El tiempo de espera = ConnectionRate x TimeoutMultiplier.
• El valor predeterminado de ConnectionRate es 7.5 segundos.
• El valor predeterminado de TimeoutMultiplier es 0 (que es un factor de multiplicación de 4).
• El tiempo de espera predeterminado para los mensajes conectados es 30 segundos
(7.5 segundos x 4 = 30 segundos).
• Para cambiar el tiempo de espera, cambie ConnectionRate y deje TimeoutMultiplier en el valor
predeterminado.
Descripción La instrucción MSG transfiere los elementos de datos.
Ésta es una instrucción transicional:
• En la lógica de escalera de relés, cambie la condición de
entrada del renglón de borrado a establecido cada vez que
deba ejecutarse la instrucción.
• En texto estructurado, condicione la instrucción de manera
que sólo se ejecute cuando ocurra una transición. Consulte el
Apéndice B.
Publicación 1756-RM003K-ES-P – Julio 2008
147
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
El tamaño de cada elemento depende de los tipos de datos que usted
especifica y del tipo de comando de mensaje que usa.
conexión con .EN_CC = 1
condición de entrada de renglón
bit .EN
bit .EW
conexión con .EN_CC = 0
bit .ST
bit .DN o bit .ER
41382
1
148
2
3
4
5
6
7
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Donde
1
Descripción
Donde
condición de entrada de renglón es verdadera
5
Capítulo 4
Descripción
el mensaje se envía
.EN se establece
.ST se establece
.EW se establece
.EW se borra
la conexión está abierta*
2
el mensaje se envía
6
.ST se establece
mensaje efectuado o con error
condición de entrada de renglón todavía es
verdadera
.EW se borra
.DN o .ER se establece
.ST se borra
La conexión está cerrada (si .EN_CC = 0)
3
mensaje efectuado o con error
7
la condición de entrada de renglón se hace falsa y
.DN o .ER se establece
condición de entrada de renglón es falsa
.EN se borra
.DN o .ER se establece
.ST se borra
La conexión está cerrada (si .EN_CC = 0)
.EN se borra (la condición de entrada de renglón es
falsa)
4
condición de entrada de renglón es verdadera
.DN o .ER se estableció previamente
.EN se establece
.EW se establece
la conexión está abierta*
.DN o .ER se borra
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
149
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Condición
Acción de lógica de escalera de relés
condición de entrada de renglón es falsa
(no se aplica a texto estructurado)
Acción de texto estructurado
bit .EN = 1
examine el bit .EN
bit .EN = 0
bit .EW = 1
examine el bit .EW
bit .EW = 0
bit .ST = 1
examine el bit .ST
bit .ST = 0
bit .DN = 1
examine el bit .DN
bit .DN = 0
bit .ER = 1
bit .ER = 0
examine el bit .ER
comando de
transferencia en
bloques
sí
no
la ruta de acceso
del módulo es
válida
sí
no
bit .DN = 1
sí
examine el bit .DN
bit .DN = 0
el bit .EN se borra
conexión de
módulo en
ejecución
no
ejecute la petición de
mensaje
bit .ER = 1
examine el bit .ER
el bit .ER se
establece
el bit .EW se establece
bit .ER = 0
la condición de salida de renglón
se establece como falsa
fin
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
150
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
EnableIn se establece
n. a.
EnableIn siempre se establece.
Capítulo 4
La instrucción se ejecuta.
ejecución de la instrucción
bit .EN = 1
bit .EN = 0
examine el bit .EN
bit .EW = 1
examine el bit .EW
examine el bit .EW
bit .EW = 1
bit .EW = 0
bit .EW = 0
bit .ST = 1
examine el bit .ST
examine el bit .ST
bit .ST = 1
bit .ST = 0
bit .ST = 0
los bits .EW, .ST, .TO, .DN y .ER se
borran y el bit
.EN se establece
bit .DN = 1
examine el bit .DN
el bit .EN se
establece
bit .DN = 0
bit .ER = 1
bit .ER = 0
examine el bit .ER
comando de
transferencia en
bloques
sí
la ruta de acceso
del módulo es
válida
no
sí
no
sí
conexión de
módulo en
ejecución
no
los bits .EW, .ST, .TO, .DN y .ER se borran
el bit .EN se establece
ejecute la petición de mensaje
el bit .EW se establece
el bit .ER se
establece
la condición de salida de
renglón se establece
como falsa
fin
post-escán
La condición de salida de renglón se establece como
falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
151
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Códigos de error MSG
Los códigos de error dependen del tipo de instrucción MSG.
Códigos de error
El software RSLogix 5000 no siempre muestra la descripción completa.
Código de error Descripción
(hex)
Se muestra en el software
0001
Fallo de conexión (vea los códigos de error extendidos)
idéntico a la descripción
0002
Recurso insuficiente
idéntico a la descripción
0003
Valor no válido
idéntico a la descripción
0004
Error de sintaxis IOI (vea los códigos de error extendidos)
idéntico a la descripción
0005
Destino desconocido, clase no compatible, instancia no
definida o elemento de estructura no definido (vea los códigos
de error extendidos)
idéntico a la descripción
0006
Espacio de paquete insuficiente
idéntico a la descripción
0007
Conexión perdida
idéntico a la descripción
0008
Servicio no compatible
idéntico a la descripción
0009
Error en segmento de datos o valor de atributo no válido
idéntico a la descripción
000A
Error de lista de atributos
idéntico a la descripción
000B
El estado ya existe
idéntico a la descripción
000C
Conflicto de modelo de objeto
idéntico a la descripción
000D
El objeto ya existe
idéntico a la descripción
000E
Atributo no se puede establecer
idéntico a la descripción
000F
Permiso denegado
idéntico a la descripción
0010
Conflicto de estado de dispositivo
idéntico a la descripción
0011
La respuesta no cabe
idéntico a la descripción
0012
Fragmento primitivo
idéntico a la descripción
0013
Datos de comando insuficientes
idéntico a la descripción
0014
Atributo no compatible
idéntico a la descripción
0015
Demasiados datos
idéntico a la descripción
001A
Petición de puente demasiado grande
idéntico a la descripción
001B
Respuesta de puente demasiado grande
idéntico a la descripción
001C
Lista de atributos insuficiente
idéntico a la descripción
001D
Lista de atributos no válida
idéntico a la descripción
001E
Error de servicio incorporado
idéntico a la descripción
152
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Código de error Descripción
(hex)
Se muestra en el software
001F
Fallo relacionado con la conexión (vea los códigos de error
extendidos)
idéntico a la descripción
0022
Respuesta no válida recibida
idéntico a la descripción
0025
Error de segmento clave
idéntico a la descripción
0026
Error IOI no válido
idéntico a la descripción
0027
Atributo inesperado en lista
idéntico a la descripción
0028
Error DeviceNet – ID de miembro no válido
idéntico a la descripción
0029
Error DeviceNet – miembro no se puede establecer
idéntico a la descripción
00D1
El módulo no se encuentra en estado de marcha
error desconocido
00FB
Puerto de mensajes no compatible
error desconocido
00FC
Tipo de mensaje no compatible
error desconocido
00FD
Mensaje no inicializado
error desconocido
00FE
Expiración de mensaje
error desconocido
00FF
Error general (vea los códigos de error extendidos)
error desconocido
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo 4
153
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Códigos de error extendidos
El software RSLogix 5000 no muestra ningún texto para los códigos de
error extendidos.
Estos son los códigos de error extendidos para el código de
error 0001.
Código de
error
extendido
(hex.):
Descripción
Código de
error
extendido
(hex.):
Descripción
0100
Conexión en uso
0203
Expiración de conexión
0103
Transporte no compatible
0204
Expiración de mensaje no conectado
0106
Conflicto de propiedad
0205
Error de parámetro de envío no conectado
0107
No se encontró la conexión
0206
Mensaje demasiado grande
0108
Tipo de conexión no válido
0301
No hay memoria de búfer
0109
Tamaño de conexión no válido
0302
Ancho de banda no disponible
0110
Módulo no configurado
0303
No hay protectores disponibles
0111
EPR no compatible
0305
Coincidencia de firma
0114
Módulo incorrecto
0311
Porte no disponible
0115
Tipo incorrecto de dispositivo
0312
Dirección de vínculo no disponible
0116
Revisión incorrecta
0315
Tipo de segmento no válido
0118
Formato de configuración no válido
0317
Conexión no programada
011A
Aplicación sin conexiones
Estos son los códigos de error extendidos para el código de
error 001F.
Código de error
extendido (hex.):
Descripción
0203
Expiración de conexión
Estos son los códigos de error extendidos para el código de
error 0004 y 0005.
154
Código de error
extendido (hex.):
Descripción
0000
estado extendido fuera de memoria
0001
estado extendido fuera de instancias
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Estos son los códigos de error extendidos para el código de
error 00FF.
Código de
error
extendido
(hex.):
Descripción
Código de
error
extendido
(hex.):
Descripción
2001
IOI excesivo
2107
Tipo no válido o no compatible
2002
Valor de parámetro incorrecto
2108
Controlador en modo de carga o descarga
2018
Rechazo de semáforo
2109
201B
Tamaño demasiado pequeño
Intento para cambiar el número de dimensiones
de registro
201C
Tamaño no válido
210A
Nombre de símbolo no válido
2100
Fallo de privilegio
210B
El símbolo no existe
2101
Posición no válida de interruptor de llave
210E
La búsqueda entró en fallo
2102
Contraseña no válida
210F
La tarea no se puede iniciar
2103
No se emitió contraseña
2110
No se puede escribir
2104
Dirección fuera de rango
2111
No se puede leer
2105
Dirección y cuántas fuera de rango
2112
Rutina compartida no editable
2106
Datos en uso
2113
Controlador en modo con fallo
2114
Modo de marcha inhibido
Publicación 1756-RM003K-ES-P – Julio 2008
155
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Códigos de error PLC y SLC (.ERR)
Logix, revisión de firmware 10.x y posteriores, proporciona nuevos
códigos de error asociados con tipos de mensajes PLC y SLC
(mensajes PCCC).
• Este cambio permite que el software RSLogix 5000 muestre una
descripción significativa para muchos de los errores.
Anteriormente, el software no daba una descripción de ninguno
de los errores asociados con el código de error 00F0.
• El cambio también hace que los códigos de errores sean más
coherentes con los errores devueltos por otros controladores,
tales como los controladores PLC-5.
La siguiente tabla muestra el cambio en los códigos de error de R9.x y
anteriores hasta R10.x y posteriores. Como resultado del cambio, el
miembro .ERR retorna un valor único por cada error PCCC. .EXERR ya
no se requiere para estos errores.
Códigos de error PLC y SLC (hex)
R9.x y anteriores
R10.x y posteriores
.ERR
.ERR
.EXERR
Descripción
.EXERR
0010
1000
Comando o formato prohibido proveniente del procesador local
0020
2000
El módulo de comunicación no funciona
0030
3000
Nodo remoto ausente, desconectado o desactivado
0040
4000
Procesador conectado pero en fallo (hardware)
0050
5000
Número de estación incorrecto
0060
6000
La función solicitada no está disponible
0070
7000
El procesador está en el modo de programación
0080
8000
El archivo de compatibilidad del procesador no existe
0090
9000
El nodo remoto no puede almacenar temporalmente el comando
00B0
B000
El procesador está descargando, por lo que no es accesible
00F0
0001
F001
El procesador convirtió la dirección incorrectamente
00F0
0002
F002
Dirección incompleta
00F0
0003
F003
Dirección incorrecta
00F0
0004
F004
Formato de dirección prohibido – no se encontró el símbolo
00F0
0005
F005
Formato de dirección prohibido – El símbolo tiene 0 o es mayor que el máximo
número de caracteres aceptados por el dispositivo
00F0
0006
F006
El archivo de direcciones no existe en el procesador receptor
00F0
0007
F007
El archivo de destino es demasiado pequeño para el número de palabras
solicitado
00F0
0008
F008
No puede completarse la solicitud
La situación cambió durante la operación con múltiples paquetes
00F0
0009
F009
Los datos o el archivo son demasiado grandes
Memoria no disponible
156
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Códigos de error PLC y SLC (hex) (cont.)
R9.x y anteriores
R10.x y posteriores
Descripción
.ERR
.EXERR
.ERR
00F0
000A
F00A
El procesador receptor no puede poner en paquetes la información solicitada
00F0
000B
F00B
Error de privilegio; acceso denegado
00F0
000C
F00C
La función solicitada no está disponible
00F0
000D
F00D
La petición es redundante
00F0
000E
F00E
El comando no puede ejecutarse
00F0
000F
F00F
Overflow; overflow de histograma
00F0
0010
F010
Sin acceso
00F0
0011
F011
El tipo de datos solicitado no coincide con los datos disponibles
00F0
0012
F012
Parámetros de comando incorrectos
00F0
0013
F013
Existe referencia de dirección a área eliminada
00F0
0014
F014
Fallo de ejecución de comando por razón desconocida
.EXERR
Overflow de histograma PLC-3
00F0
0015
F015
Error de conversión de datos
00F0
0016
F016
El escáner no está disponible para comunicarse con un adaptador de
rack 1771
00F0
0017
F017
El adaptador no está disponible para comunicarse con el módulo
00F0
0018
F018
La respuesta del modulo 1771 no fue válida
00F0
0019
F019
Etiqueta duplicada
00F0
001A
F01A
Propietario de archivo activo – el archivo está en uso
00F0
001B
F01B
Propietario de programa activo – alguien está descargando o editando en
línea
00F0
001C
F01C
El archivo de disco tiene protección contra escritura o no es accesible (fuera
de línea solamente)
00F0
001D
F01D
El archivo de disco lo está usando otra aplicación
Actualización no realizada (fuera de línea solamente)
Publicación 1756-RM003K-ES-P – Julio 2008
157
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Códigos de error de transferencia en bloques
Estos son los códigos de error específicos para la transferencia en
bloques de Logix5000.
Código de error Descripción
(hex)
Se muestra en el
software
00D0
El escáner no recibió una respuesta de transferencia en bloques del módulo de
transferencia en bloques dentro de los 3.5 segundos siguientes a la petición
error desconocido
00D1
La suma de comprobación de la respuesta de lectura no coincidió con la suma de
comprobación del flujo de datos
error desconocido
00D2
El escáner solicitó una lectura o una escritura, pero el módulo de transferencia en bloques
respondió lo opuesto
error desconocido
00D3
El escáner solicitó una longitud y el módulo de transferencia en bloques respondió con una
longitud diferente
error desconocido
00D6
El escáner recibió una respuesta del módulo de transferencia en bloques indicando que la
petición de escritura falló.
error desconocido
00EA
El escáner no estaba configurado para comunicarse con el rack que contendría este módulo error desconocido
de transferencia en bloques
00EB
La ranura lógica especificada no está disponible para el tamaño de rack dado
error desconocido
00EC
Actualmente está en curso una petición de transferencia en bloques y se requiere una
respuesta antes de que pueda comenzar otra petición.
error desconocido
00ED
El tamaño de la petición de transferencia en bloques no es coherente con las peticiones de
tamaño de transferencia en bloques válidas
error desconocido
00EE
El tipo de la petición de transferencia en bloques no es coherente con la BT_READ
o BT_WRITE esperada
error desconocido
00EF
El escáner no pudo encontrar una ranura disponible en la tabla de transferencia en bloques
para aceptar la petición de transferencia en bloques
error desconocido
00F0
El escáner recibió una petición para restablecer los canales de E/S remotas mientras que
había transferencias en bloques pendientes
error desconocido
00F3
Las colas para las transferencias en bloques remotas están llenas
error desconocido
00F5
Los canales de comunicación están configurados para el rack o ranura solicitada
error desconocido
00F6
Ningún canal de comunicación está configurado para E/S remotas
error desconocido
00F7
El tiempo de espera de la transferencia en bloques, establecido en la instrucción, expiró
antes de concluir
error desconocido
00F8
Error en el protocolo de transferencia en bloques – transferencia en bloques no solicitada
error desconocido
00F9
Los datos de la transferencia en bloques se perdieron debido a un canal de comunicación
defectuoso
error desconocido
00FA
El módulo de transferencia en bloques solicitó una longitud diferente a la instrucción de
transferencia en bloques asociada
error desconocido
00FB
La suma de comprobación de la transferencia en bloque de lectura era incorrecta
error desconocido
00FC
Hubo una transferencia no válida de datos de transferencia en bloques de escritura entre el error desconocido
adaptador y el módulo de transferencia en bloques
00FD
El tamaño de la transferencia en bloques más el tamaño del índice en la tabla de datos de
transferencias en bloques era mayor que el tamaño del archivo de tablas de datos de
transferencia en bloques
158
error desconocido
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Especifique los detalles
de configuración
Capítulo 4
Después de introducir la instrucción MSG y de especificar la estructura
MESSAGE, use el cuadro de diálogo Message Configuration para
especificar los detalles del mensaje.
Haga clic aquí para configurar la instrucción MSG
Los detalles que usted configura dependen del tipo de mensaje que
selecciona.
42976
Si el dispositivo receptor es un
Seleccione uno de estos tipos de
mensaje
Vea la página
Controlador Logix5000
Lectura de tabla de datos CIP
160
Escritura de tabla de datos CIP
Módulo de E/S que usted configura
usando el software RSLogix 5000
Reconfiguración de módulo
161
CIP genérico
162
Controlador PLC-5
TypedRead PLC5
163
TypedWrite PLC5
Lectura de rango de palabras PLC5
Escritura de rango de palabras PLC5
Controlador SLC
Controlador MicroLogix
Módulo de transferencia en bloques
TypedRead SLC
165
TypedWrite SLC
Lectura de transferencia en bloques
165
Escritura de transferencia en bloques
Procesador PLC-3
TypedRead PLC3
166
TypedWrite PLC3
Lectura de rango de palabras PLC3
Escritura de rango de palabras PLC3
Procesador PLC-2
Lectura no protegida PLC2
167
Escritura no protegida PLC2
Publicación 1756-RM003K-ES-P – Julio 2008
159
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Usted debe especificar esta información de configuración:
Para esta propiedad
Elemento de origen
Especifique
• Si selecciona un tipo de mensaje de lectura, el elemento de origen es la dirección de los datos que desea
leer en el dispositivo receptor. Use la sintaxis del dispositivo receptor.
• Si selecciona un tipo de mensaje de escritura, el tag de origen es el primer elemento del tag que usted
desea enviar al dispositivo receptor.
Número de elementos
Elemento de destino
El número de elementos que usted lee/escribe depende del tipo de datos que usa. Un elemento se refiere a un
segmento de datos asociados. Por ejemplo, el tag timer1 es un elemento que consiste en una estructura de
control del temporizador.
• Si selecciona un tipo de mensaje de lectura, el elemento de destino es el primer elemento del tag en el
controlador Logix5000 donde desea almacenar los datos que lee desde el dispositivo receptor.
• Si selecciona un tipo de mensaje de escritura, el elemento de destino es la dirección del lugar en el
dispositivo receptor donde desea escribir los datos.
Especifique mensajes de lectura y escritura de la tabla de
datos CIP
Los tipos de mensajes de lectura y escritura de la tabla de datos CIP
transfieren datos entre controladores Logix5000.
Seleccione este comando
Si desea
Lectura de tabla de datos CIP
leer datos de otro controlador.
Los tipos de Source y Destination deben coincidir.
Escritura de tabla de datos CIP
escribir datos a otro controlador.
Los tipos de Source y Destination deben coincidir.
160
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Reconfigure un módulo de E/S
Utilice el mensaje de reconfiguración de módulo para enviar la nueva
información de configuración a un módulo de E/S. Durante la
reconfiguración:
• Los módulos de entrada continúan enviando datos de entrada al
controlador.
• Los módulos de salida continúan controlando sus dispositivos
de salida.
Un mensaje de reconfiguración de módulo requiere estas propiedades
de configuración:
En esta propiedad
Seleccione
Tipo de mensaje
Reconfiguración de módulo
Ejemplo: Para reconfigurar un módulo de E/S:
1. Cambie al nuevo valor el miembro requerido del tag de
configuración del módulo.
2. Envíe al módulo un mensaje de reconfiguración de módulo.
Cuando reconfigure[5] se establece, establezca la alarma alta en 60 en
el módulo local en la ranura 4. Seguidamente el mensaje de
reconfiguración de módulo envía al módulo el nuevo valor de alarma.
La instrucción de un impulso impide que el renglón envíe múltiples
mensajes al módulo mientras reconfigure[5] está activado.
Lógica de escalera de relés
Texto estructurado
IF reconfigure[5] AND NOT reconfigure[6]THEN
Local:4:C.Ch0Config.HAlarmLimit := 60;
IF NOT change_Halarm.EN THEN
MSG(change_Halarm);
END_IF;
END_IF;
reconfigure[6] := reconfigure[5];
Publicación 1756-RM003K-ES-P – Julio 2008
161
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Especifique mensajes genéricos CIP
Un mensaje genérico CIP realiza una acción específica en un módulo
de E/S.
Si desea
En esta propiedad
Escriba o seleccione
Realizar una prueba de impulso en un
módulo de salida digital
Tipo de mensaje
CIP genérico
Tipo de servicio
Prueba de impulso
Origen
tag_name de tipo INT [5]
Esta matriz contiene:
Destino
Restablecer los fusibles electrónicos en Tipo de mensaje
un módulo de salida digital
Tipo de servicio
Origen
tag_name[0]
máscara de bit de puntos a probar
(pruebe sólo un punto a la vez)
tag_name[1]
reservado, dejar 0
tag_name[2]
anchura de impulso (centenares de
μsegundos; generalmente 20)
tag_name[3]
retardo de cruce por cero para E/S
ControlLogix (centenares de μsegundos;
generalmente 40)
tag_name[4]
verificar el retardo
dejar en blanco
CIP genérico
Restablecer fusible
electrónico
tag_name de tipo DINT
Este tag representa una máscara de bit de los puntos en los cuales se
restablecen los fusibles
Destino
Restablecer diagnósticos enclavados en Tipo de mensaje
un módulo de entrada digital
Tipo de servicio
Origen
dejar en blanco
CIP genérico
Restablecer diagnósticos enclavados (I)
tag_name de tipo DINT
Este tag representa una máscara de bit de los puntos en los cuales se
restablecen los diagnósticos.
Restablecer diagnósticos enclavados en Tipo de mensaje
un módulo de salida digital
Tipo de servicio
Origen
CIP genérico
Restablecer diagnósticos enclavados (O)
tag_name de tipo DINT
Este tag representa una máscara de bit de los puntos en los cuales se
restablecen los diagnósticos.
162
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Si desea
En esta propiedad
Escriba o seleccione
Desenclavar la alarma de un módulo de
entrada analógico
Tipo de mensaje
CIP genérico
Tipo de servicio
Seleccione la alarma que desea desenclavar:
Capítulo 4
• Desenclavar todas las alarmas (I)
• Desenclavar alarma alta analógica (I)
• Desenclavar alarma alta alta analógica (I)
• Desenclavar alarma baja analógica (I)
• Desenclavar alarma baja baja analógica (I)
• Desenclavar alarma de régimen (I)
Desenclavar la alarma de un módulo de
salida analógico
Instancia
Canal de la alarma que desea desenclavar
Tipo de mensaje
CIP genérico
Tipo de servicio
Seleccione la alarma que desea desenclavar:
• Desenclavar todas las alarmas (O)
• Desenclavar alarma alta (O)
• Desenclavar alarma baja (O)
• Desenclavar alarma de rampa (O)
Instancia
Canal de la alarma que desea desenclavar
Especifique mensajes PLC-5
Use los tipos de mensajes PLC-5 para comunicarse con los
controladores PLC-5.
Seleccione este comando
Si desea
TypedRead PLC5
Leer datos de números enteros de 16 bits, con punto flotante (coma flotante) o de tipo
de cadena y mantener la integridad de los datos. Vea Tipos de datos para mensajes
TypedRead y TypedWrite de PLC5 en la página 164.
TypedWrite PLC5
Escribir datos de números enteros de 16 bits, con punto flotante (coma flotante) o de
tipo de cadena y mantener la integridad de los datos. Vea Tipos de datos para mensajes
TypedRead y TypedWrite de PLC5 en la página 164
Lectura de rango de palabras
PLC5
Leer un rango continuo de palabras de 16 bits en la memoria PLC-5 independientemente
del tipo de datos.
Este comando comienza en la dirección especificada como el elemento de origen y lee
secuencialmente el número de palabras de 16 bits solicitado.
Los datos del elemento de origen se almacenan a partir de la dirección especificada
como tag de destino.
Escritura de rango de palabras
PLC5
Escribir un rango continuo de palabras de 16 bits en la memoria Logix5000,
independientemente del tipo de datos a la memoria PLC-5.
Este comando comienza en la dirección especificada en el tag de origen y lee
secuencialmente el número de palabras de 16 bits solicitado.
Los datos del tag de origen se almacenan a partir de la dirección especificada como el
elemento de destino en el procesador PLC-5.
Publicación 1756-RM003K-ES-P – Julio 2008
163
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
La siguiente tabla muestra los tipos de datos a usar con mensajes
TypedRead de PLC5 y mensajes TypedWrite de PLC5.
Tipos de datos para mensajes TypedRead y TypedWrite de PLC5
Para este tipo de datos
PLC-5
Use este tipo de datos Logix5000
B
INT
F
REAL
N
INT
DINT (solamente escriba valores DINT a un controlador
PLC-5 si el valor es ≥ −32,768 y ≤ 32,767.)
S
INT
ST
STRING
Los comandos TypedRead y TypedWrite también funcionan con los
procesadores SLC 5/03 (OS303 y posteriores), procesadores SLC 5/04
(OS402 y posteriores) y procesadores SLC 5/05.
Los diagramas siguientes muestran la diferencia entre los comandos
de tipo (TypedWrite/TypedRead) y de rango de palabras. El ejemplo
usa comandos de lectura de un procesador PLC-5 a un controlador
Logix5000.
Comando TypedRead
palabras de 16 bits en
procesador PLC-5
Comando de lectura de rango de palabras
palabras de 32 bits en
controlador Logix5000
palabras de 32 bits en
controlador Logix5000
1
1
1
2
1
2
2
2
4
3
3
3
3
4
4
4
Los comandos TypedWrite/TypedRead mantienen la
estructura y el valor de los datos.
164
palabras de 16 bits en
procesador PLC-5
Los comandos de rango de palabras llenan el tag de destino
contiguamente. La estructura y valor de los datos se cambian
según el tipo de datos de destino.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Especifique mensajes SLC
Use los tipos de mensajes SLC para comunicarse con los controladores
SLC y MicroLogix. La siguiente tabla muestra los tipos de datos que la
instrucción le permite acceder. La tabla también muestra el tipo de
datos Logix5000 correspondiente.
Para este tipo de datos SLC o
MicroLogix
Use este tipo de datos Logix5000
F
REAL
L (controladores MicroLogix 1200 y 1500)
DINT
N
INT
Especifique mensajes de transferencia en bloques
Los tipos de mensajes de transferencia en bloques se usan para
comunicarse con módulos de transferencia en bloques mediante una
red de E/S remotas universales.
Si desea
Seleccione este
comando
leer los datos de un módulo de transferencia en bloques
Lectura de transferencia en
bloques
Este tipo de mensaje reemplaza la instrucción BTR.
escribir datos en un módulo de transferencia en bloques
Escritura de transferencia
en bloques
Este tipo de mensaje reemplaza la instrucción BTW.
Para configurar un mensaje de transferencia en bloques, siga estas
pautas:
• Los tags de origen (para BTW) y destino (para BTR) deben ser
suficientemente grandes para aceptar los datos solicitados,
excepto por las estructuras MESSAGE, AXIS y MODULE.
• Especifique la cantidad de números enteros de 16 bits (INT) que
desea enviar o recibir. Puede especificar de 0 a 64 números
enteros.
Si usted desea que el
Especifique
módulo de transferencia en bloques determine
cuántos enteros de 16 bits enviar (BTR).
0 para el número de
elementos
controlador envíe 64 enteros (BTW).
Publicación 1756-RM003K-ES-P – Julio 2008
165
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Especifique mensajes PLC-3
Los tipos de mensaje PLC-3 han sido diseñados para los procesadores
PLC-3.
Seleccione este comando
Si desea
TypedRead PLC3
leer números enteros o datos de tipo REAL.
Para enteros, este comando lee enteros de 16 bits del procesador PLC-3 y los almacena
en matrices de datos SINT, INT o DINT en el controlador Logix5000, y mantiene la
integridad de los datos.
Este comando también lee datos de punto flotante (coma flotante) del PLC-3 y los
almacena en un tag de tipo de datos REAL en el controlador Logix5000.
TypedWrite PLC3
escribir números enteros o datos tipo REAL.
Este comando escribe datos SINT o INT en el archivo de números enteros PLC-3, y
mantiene la integridad de los datos. Usted puede escribir datos DINT siempre y cuando
estén comprendidos dentro de un tipo de datos INT (−32,768 ≥ ≤ 32,767).
Este comando también escribe datos de tipo REAL del controlador Logix5000 en un
archivo de valores con punto flotante (coma flotante) PLC-3.
Lectura de rango de palabras
PLC3
leer un rango continuo de palabras de 16 bits en la memoria PLC-3 independientemente
del tipo de datos.
Este comando comienza en la dirección especificada en el elemento de origen y lee
secuencialmente el número de palabras de 16 bits solicitado.
Los datos del elemento de origen se almacenan a partir de la dirección especificada
como tag de destino.
Escritura de rango de palabras
PLC3
escribir un rango continuo de palabras de 16 bits de la memoria Logix5000
independientemente del tipo de datos a la memoria PLC-3.
Este comando comienza en la dirección especificada en el tag de origen y lee
secuencialmente el número de palabras de 16 bits solicitado.
Los datos del tag de origen se almacenan a partir de la dirección especificada como el
elemento de destino en el procesador PLC-3.
166
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Los diagramas siguientes muestran la diferencia entre los comandos
TypedWrite/TypedRead y de rango de palabras. El ejemplo usa los
comandos de lectura de un procesador PLC-3 a un controlador
Logix5000.
Comando TypedRead
palabras de 16 bits en
el procesador PLC-3
Comando de lectura de rango de palabras
palabras de 32 bits en el
controlador Logix5000
palabras de 16 bits en
el procesador PLC-3
palabras de 32 bits en el
controlador Logix5000
1
1
1
2
1
2
2
2
4
3
3
3
3
4
4
4
Los comandos TypedWrite/TypedRead mantienen la
estructura y el valor de los datos.
Los comandos de rango de palabras llenan el tag de destino
contiguamente. La estructura y el valor de los datos se
cambian según el tipo de datos de destino.
Especifique mensajes PLC-2
Los tipos de mensaje PLC-2 han sido diseñados para los procesadores
PLC-2.
Seleccione este comando
Si desea
Lectura no protegida PLC2
leer palabras de 16 bits de cualquier área de la tabla de datos PLC-2 o el archivo de
compatibilidad PLC-2 de otro procesador.
Escritura no protegida PLC2
escribir palabras de 16 bits en cualquier área de la tabla de datos PLC-2 o el archivo de
compatibilidad PLC-2 de otro procesador.
La transferencia de mensaje usa palabras de 16 bits; por lo tanto,
asegúrese de que el tag Logix5000 almacena apropiadamente los
datos transferidos (generalmente como una matriz INT).
Publicación 1756-RM003K-ES-P – Julio 2008
167
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Ejemplos de configuración
MSG
Los ejemplos siguientes muestran tags de origen y destino, así como
elementos para diferentes combinaciones de controladores.
Para las instrucciones MSG que provienen de un controlador
Logix5000 y escriben en otro procesador:
Ruta de mensaje
Ejemplo de origen y destino
Logix5000 → Logix5000
tag de origen
array_1[0]
tag de destino
array_2[0]
Puede usar un tag de alias para el tag de origen (en el controlador Logix5000 de
origen).
No puede usar un tag de alias para el tag de destino. El destino debe ser un tag de
base.
Logix5000 → PLC-5
tag de origen
array_1[0]
Logix5000 → SLC
elemento de destino
N7:10
Puede usar un tag de alias para el tag de origen (en el controlador Logix5000 de
origen).
Logix5000 → PLC-2
tag de origen
array_1[0]
elemento de destino
010
Para las instrucciones MSG que provienen de un controlador
Logix5000 y leen de otro controlador:
Ruta de mensaje
Ejemplo de origen y destino
Logix5000 → Logix5000
tag de origen
array_1[0]
tag de destino
array_2[0]
No puede usar un tag de alias para el tag de origen. El origen debe ser un tag de base.
Puede usar un tag de alias para el tag de destino (en el controlador Logix5000 de
origen).
Logix5000 → PLC-5
elemento de origen
N7:10
Logix5000 → SLC
tag de destino
array_1[0]
Puede usar un tag de alias para el tag de destino (en el controlador Logix5000 de
origen).
Logix5000 → PLC-2
168
elemento de origen
010
tag de destino
array_1[0]
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Especifique los detalles
de comunicación
Capítulo 4
Para configurar una instrucción MSG, usted especifica estos detalles
en la ficha Communication.
Especifique una ruta
Especifique un método de comunicación
o una dirección de módulo
Seleccione una opción de caché
Especifique una ruta
La ruta de acceso muestra la ruta que sigue el mensaje para llegar al
destino. La misma utiliza ya sea los nombres de la configuración de
E/S del controlador, los números que usted escribe, o ambos.
Si
Entonces
La configuración de E/S del controlador
tiene el módulo que obtiene el mensaje.
Use el botón Browse para seleccionar el módulo.
La configuración de E/S del controlador
tiene sólo el módulo de comunicación local.
1. Use el botón Browse para seleccionar el módulo de comunicación local.
La configuración de E/S del controlador no
tiene ninguno de los módulos que necesita
para el mensaje.
Escriba la ruta.
Publicación 1756-RM003K-ES-P – Julio 2008
2. Escriba el resto de la ruta.
169
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Ejemplo
La configuración de E/S del controlador
tiene el módulo que obtiene el mensaje.
Haga clic en el botón Browse y seleccione el módulo.
La configuración de E/S del controlador
tiene sólo el módulo de comunicación local.
Vaya al módulo de comunicación local.
Vaya al puerto EtherNet/IP….
a la dirección de 10.10.10.10.
Vaya a través del backplane…
al módulo en la ranura 0.
La configuración de E/S del controlador no
tiene ninguno de los módulos que necesita
para el mensaje.
Vaya a través del backplane…
al módulo de comunicación local en la ranura 1
Vaya al puerto ControlNet….
al nodo 4
Vaya a través del backplane…
al módulo en la ranura 0.
Para escribir una ruta, use este formato:
port, next_address, port, next_address, …
170
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Donde
port
Capítulo 4
Es
Para esta red
Tipo
backplane
1
DF1 (canal 0 serie, serie)
2
ControlNet
EtherNet/IP
DH+ canal A
DH+ canal B
3
DF1 canal 1
(canal 1 serie)
next_address
backplane
número de ranura del módulo
DF1 (serie)
dirección de estación (0-254)
ControlNet
número de nodo (1-99 decimal)
DH+
8# seguido del número de nodo (1-77 octal)
Por ejemplo, para especificar la dirección de nodo octal de 37, escriba 8#37.
EtherNet/IP
Usted puede especificar un módulo en una red EtherNet/IP usando cualquiera de
estos formatos:
Dirección IP (por ejemplo, 10.10.10.10)
Dirección IP:Puerto (por ejemplo, 10.10.10.10:24)
Nombre DNS (por ejemplo, tanques)
Nombre DNS:Puerto (por ejemplo, tanques:24)
Publicación 1756-RM003K-ES-P – Julio 2008
171
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Para transferencia en bloques
Para mensajes de transferencia en bloques, añada los siguientes
módulos a la configuración de E/S del controlador:
Para transferencias en
bloques mediante esta red
ControlNet
Añada estos módulos a la configuración de E/S
• módulo de comunicación local (por ejemplo, el módulo 1756-CNB)
• módulo adaptador remoto (por ejemplo, el módulo 1771-ACN)
E/S remotas universales
• módulo de comunicación local (por ejemplo, el módulo 1756-DHRIO)
• un módulo adaptador remoto (por ejemplo, el módulo 1771-ASB) para cada rack o porción de un rack
en el chasis
• módulo de transferencia en bloques (opcional)
Especifique un método de comunicación o una dirección de
módulo
Use la tabla siguiente para seleccionar un método de comunicación o
dirección de módulo para el mensaje.
Si el dispositivo de destino
es un
Seleccione
Y especifique
Controlador Logix5000
CIP
no se requieren otras especificaciones
DH+
Canal:
Canal A o B del módulo 1756-DHRIO que está
conectado a la red DH+
Controlador SLC por una red
DH+
Vínculo de origen:
La identificación de vínculo asignada al
backplane del controlador en la tabla de
encaminamiento del módulo 1756-DHRIO.
(El nodo de origen en la tabla de
encaminamiento es automáticamente el número
de ranura del controlador).
Procesador PLC-3
Vínculo de destino
La identificación de vínculo de la red DH+
remota donde reside el dispositivo receptor
Procesador PLC-2
Nodo de destino:
Dirección de estación del dispositivo receptor, en
octal
Controlador PLC-5 por una red
EtherNet/IP
Controlador PLC-5 por una red
ControlNet
Controlador SLC 5/05
Controlador PLC-5 por una red
DH+
Si sólo hay un vínculo DH+ y usted no usó el software RSLinx para
configurar el módulo DH/RIO para vínculos remotos, especifique 0 tanto
para el vínculo de origen como para el vínculo de destino.
172
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Si el dispositivo de destino
es un
Seleccione
CIP con ID de origen
Aplicación en una estación de
trabajo que recibe un mensaje
no solicitado encaminado por
una red Ethernet/IP o ControlNet
a través de RSLinx.
(Esto permite que la
aplicación reciba datos de
un controlador)
Capítulo 4
Y especifique
Vínculo de origen:
ID remoto del tema en el software RSLinx
Vínculo de destino:
ID de vínculo virtual configurado en RSLinx
(0-65535)
Nodo de destino:
ID de destino (0-77 octal) proporcionado por la
aplicación a RSLinx. Para el tema DDE en
RSLinx, use 77.
El número de ranura del controlador ControlLogix se usa como nodo de
origen.
Módulo de transferencia en
bloques mediante una red de
E/S remotas universales
Módulo de transferencia en
bloques mediante una red
ControlNet
RIO
ControlNet
Canal:
Canal A o B del módulo 1756-DHRIO que está
conectado a la red RIO
Rack
Número de rack (octal) del módulo
Grupo
Número de grupo del módulo
Ranura
Número de ranura donde está el módulo
Ranura
Número de ranura donde está el módulo
Seleccione una opción de caché
Dependiendo de cómo usted configure una instrucción MSG, puede
usar una conexión para enviar o recibir datos.
Este tipo de mensaje
Y este método de comunicación
✓
Lectura o escritura de datos CIP
PLC2, PLC3, PLC5 o SLC (todos los tipos)
Usa una conexión
CIP
CIP con ID de origen
DH+
✓
CIP genérico
su opción (1)
Lectura o escritura de transferencia en
bloques
✓
(1)
Puede conectar mensajes genéricos CIP. Pero para la mayoría de las aplicaciones, recomendamos que deje no
conectados los mensajes genéricos CIP.
Si una instrucción MSG usa una conexión, usted tiene la opción de
dejar la conexión abierta (en caché) o cerrar la conexión cuando haya
acabado de transmitir el mensaje.
Publicación 1756-RM003K-ES-P – Julio 2008
Si usted
Entonces
Almacena en caché la
conexión
La conexión se mantiene abierta una vez finalizada la
instrucción MSG. Así se optimiza el tiempo de ejecución.
El abrir una conexión cada vez que se ejecuta el mensaje
aumenta el tiempo de ejecución.
No almacena en caché
la conexión
La conexión se cierra una vez finalizada la instrucción MSG.
Así se libera la conexión para otros usos.
173
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
El controlador tiene los siguientes límites en el número de conexiones
que usted puede poner en caché:
Si tiene esta revisión de
software y firmware
11.x o anterior
Puede almacenar en caché
• mensajes de transferencia en bloques para hasta
16 conexiones
• otros tipos de mensajes para hasta 16 conexiones
12.x o posterior
hasta 32 conexiones
Si varios mensajes van al mismo dispositivo, es posible que los
mensajes puedan compartir una conexión.
Si las instrucciones MSG son para
Y
Entonces
diferentes dispositivos
el mismo dispositivo
Cada instrucción MSG usa 1 conexión.
están habilitadas simultáneamente
Cada instrucción MSG usa 1 conexión.
NO están habilitadas simultáneamente
Las instrucciones MSG comparten la misma
conexión. (es decir, juntas cuentan como
1 conexión).
EJEMPLO
Comparta una conexión
Si el controlador alterna entre enviar un mensaje de lectura de
transferencia en bloque y un mensaje de escritura de
transferencia en bloques al mismo módulo, ambos mensajes se
cuentan como 1 conexión. Almacenar en caché ambos
mensajes se cuenta como 1 en la lista de caché.
174
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Pautas
Cuando planifique y programe sus instrucciones MSG, siga estas
pautas:
Pauta
Detalles
1. Para cada instrucción MSG, cree un tag de
control.
Cada instrucción MSG requiere su propio tag de control.
• Tipo de datos = MESSAGE
• Alcance = controlador
• El tag no puede ser parte de una matriz ni de un tipo de datos definido por el usuario.
2. Mantenga los datos de origen y/o destino al Una instrucción MSG puede acceder sólo a tags que están en la carpeta de tags del
alcance del controlador.
controlador (alcance del controlador).
Si su mensaje es a un dispositivo que usa enteros de 16 bits, tal como un controlador
3. Si su MSG es a un dispositivo que usa
enteros de 16 bits, use un búfer de INT en el PLC-5® o SLC 500™, y éste transfiere enteros (no valores REAL), use un búfer de INT en
el mensaje y DINT en todo el proyecto.
MSG y DINT en todo el proyecto.
Así se aumenta la eficiencia de su proyecto porque los controladores Logix se ejecutan
más eficientemente y usan menos memoria cuando trabajan con enteros de 32 bits
(DINT).
Para convertir entre INT y DINT, consulte Logix5000 Controllers Common Procedures,
publicación 1756-PM001.
4. Almacene en caché los MSG conectados
que se ejecutan con mayor frecuencia.
Almacene en caché la conexión para dichas instrucciones MSG que se ejecutan con
más frecuencia, hasta el número máximo permitido por la revisión del controlador.
Esto optimiza el tiempo de ejecución porque el controlador no tiene que abrir una
conexión cada vez que se ejecuta el mensaje.
5. Si desea habilitar más de 16 MSG
simultáneamente, use el mismo tipo de
estrategia de administración.
Si usted habilita más de 16 MSG a la vez, algunas instrucciones MSG pueden
experimentar retardos al ingresar en la cola. Para garantizar la ejecución de cada
mensaje, use una de estas opciones.
• Habilite cada mensaje en secuencia.
• Habilite los mensajes en grupos.
• Programe un mensaje para comunicarse con varios dispositivos. Para obtener más
información, consulte Logix5000 Controllers Common Procedures, publicación
1756-PM001.
• Programe la lógica para coordinar la ejecución de mensajes. Para obtener más
información, consulte Logix5000 Controllers Common Procedures, publicación
1756-PM001.
6. Mantenga el número de MSG no
conectados y no almacenados en caché en
un valor menor que el número de búferes no
conectados.
El controlador puede tener 10 - 40 búferes no conectados. El número predeterminado
es 10.
• Si todos los búferes no conectados se usan cuando una instrucción deja la cola de
mensajes, se produce un error en la instrucción y no transfiere los datos.
• Usted puede aumentar el número de búferes no conectados (40 máx.), pero continúe
siguiendo las pautas 5.
• Para aumentar el número de búferes no conectados, consulte Logix5000 Controllers
Common Procedures, publicación 1756-PM001.
Publicación 1756-RM003K-ES-P – Julio 2008
175
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Obtener valor del sistema
(GSV) y establecer valor del
sistema (SSV)
Las instrucciones GSV/SSV reciben y envían datos de sistema del
controlador que se almacenan en los objetos.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Class name
nombre
nombre del objeto
Instance name
nombre
nombre de objeto específico cuando el objeto requiere un
nombre
Attribute Name
nombre
atributo del objeto
el tipo de datos depende del atributo que usted selecciona
Destination (GSV)
SINT
tag
destino de los datos del atributo
tag
el tag que contiene los datos que desea copiar al atributo
INT
DINT
REAL
estructura
Source (SSV)
SINT
INT
DINT
REAL
estructura
Texto estructurado
GSV(ClassName,InstanceName,AttributeName,Dest);
SSV(ClassName,InstanceName,AttributeName,Source);
Los operandos son iguales que para las instrucciones GSV y SSV de
lógica de escalera de relés.
176
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Descripción: Las instrucciones GSV/SSV reciben y envían datos de sistema del
controlador que se almacenan en objetos. El controlador almacena
datos del sistema en objetos. No hay un archivo de estado,
a diferencia del procesador PLC-5.
Cuando se habilita, la instrucción GSV recupera la información
especificada y la coloca en el destino. Cuando se habilita, la
instrucción SSV establece el atributo especificado con datos del
origen.
Cuando se introduce una instrucción GSV o SSV, el software de
programación muestra las clases de objetos válidas, nombres de
objetos y nombres de atributos para cada instrucción. Para la
instrucción GSV, usted puede obtener valores para todos los atributos
disponibles. Para la instrucción SSV, el software muestra sólo los
atributos que usted puede establecer (SSV).
ATENCIÓN
Utilice las instrucciones GSV y SSV con precaución. Los cambios en los objetos
pueden provocar una operación inesperada del controlador o lesiones al personal.
Usted debe probar y confirmar que las instrucciones no cambien datos que usted no
desea que cambien.
Las instrucciones GSV y SSV escriben o leen más allá de un miembro hacia otros
miembros de un tag. Si el tag es demasiado pequeño, las instrucciones no escriben
ni leen los datos. En lugar de ello, registran un fallo menor.
Ejemplo 1
Member_A es demasiado pequeño para el atributo. Por lo tanto, la instrucción GSV
escribe el último valor a Member_B.
Ejemplo 2
My_Tag es demasiado pequeño para el atributo. Por lo tanto, la instrucción GSV se
detiene y registra un fallo menor.
La sección de objetos GSV/SSV muestra los atributos de cada objeto
y sus tipos de datos asociados. Por ejemplo, el atributo
MajorFaultRecord del objeto Program necesita un tipo de datos
DINT[11].
Publicación 1756-RM003K-ES-P – Julio 2008
177
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo menor si
Tipo de fallo
Código de fallo
dirección de objeto no válida
4
5
se especificó un objeto que no es compatible con
GSV/SSV
4
6
atributo no válido
4
6
no se proporcionó suficiente información para
una instrucción SSV
4
6
el destino GSV no es suficientemente grande
para retener los datos solicitados
4
7
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como Ninguna
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
la instrucción se ejecuta
Obtenga o establezca el valor especificado.
post-escán
La condición de salida de renglón se establece como Ninguna.
falsa.
178
Obtenga o establezca el valor especificado.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Objetos GSV/SSV
Capítulo 4
Cuando introduce una instrucción GSV/SSV, usted especifica el objeto
y su atributo al cual desea tener acceso. En ciertos casos, existirá más
de una instancia del mismo tipo de objeto, por lo que también puede
ser necesario especificar el nombre del objeto. Por ejemplo, puede
haber varias tareas en su aplicación. Cada tarea tiene su propio objeto
TASK al cual usted accede mediante el nombre de la tarea.
ATENCIÓN
Para la instrucción GSV, sólo el tamaño especificado de datos
se copia al destino. Por ejemplo, si el atributo está especificado
como un SINT y el destino es un DINT, sólo los 8 bits inferiores
del destino DINT se actualizan, dejando los 24 bits sin ningún
cambio.
Se puede obtener acceso a los siguientes objetos:
Publicación 1756-RM003K-ES-P – Julio 2008
Para obtener información acerca de
este objeto
Vea esta página o publicación
AXIS
ControlLogix Motion Module Setup and
Configuration Manual, publicación
1756-UM006
CONTROLLER
180
CONTROLLERDEVICE
181
CST
183
DF1
184
FAULTLOG
187
MESSAGE
188
MODULE
190
MOTIONGROUP
191
PROGRAM
192
ROUTINE
193
SERIALPORT
193
TASK
195
WALLCLOCKTIME
197
179
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Acceso al objeto CONTROLLER
El objeto CONTROLLER proporciona información de estado acerca de
la ejecución de un controlador.
Atributo
Tipo de datos
Instrucción
Descripción
TimeSlice
INT
GSV
El porcentaje de la CPU disponible que se asigna a las
comunicaciones.
SSV
Los valores válidos son 10-90. Este valor no puede cambiarse
cuando el interruptor de llave del controlador se encuentra en
la posición de marcha.
ControllerLogTotalEntryCou
nt
DINT
SSV
Número de entradas de registro del controlador desde la
última actualización de firmware.
GSV
El número se restablecerá si la RAM entra en un mal estado.
El número tiene como límite el DINT más alto.
ControllerLogExecutionMod DINT
ificationCount
SSV
GSV
Número de entradas de registro del controlador que se originó
a partir de un cambio de propiedades de programa/tarea, una
edición en línea o un cambio del segmento de tiempo del
controlador. También puede configurarse para incluir entradas
de registro que se originan a partir de forzados.
El número se restablecerá si la RAM entra en un mal estado.
El número no tiene como límite el mayor DINT, y puede ocurrir
un salto entre los valores extremos (rollover).
ControllerLogUnsavedEntry
Count
DINT
GSV
Número de entradas en el registro del controlador que todavía
tienen que almacenarse en el medio físico extraíble.
Rango de 0 al número máximo de entradas.
ControllerLogAutoWrite
BOOL
MSG
Indicador usado para determinar si la escritura automática del
registro del controlador al medio físico extraíble está
habilitada.
0 = la escritura automática está inhabilitada (fallo).
1 = el registro del controlador tratará de escribir al medio físico
extraíble cuando el registro esté al 80% de su capacidad.
ExecutionCountConfigureM DINT
ask
MSG
Matriz de bits usada para determinar qué hará que se
incremente el conteo de modificación de ejecución.
0 = predeterminado (todo excepto los forzados).
1 = forzados incluidos (todo además de los forzados).
180
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Acceso al objeto CONTROLLERDEVICE
El objeto CONTROLLERDEVICE identifica el hardware físico del
controlador.
Atributo
Tipo de datos
Instrucción
Descripción
DeviceName
SINT[33]
GSV
La cadena ASCII que identifica el número de catálogo del
controlador y la tarjeta de memoria.
El primer byte contiene un conteo del número de caracteres
ASCII retornados en la cadena de matriz.
ProductCode
ProductRev
INT
INT
GSV
GSV
Identifica el tipo de controlador.
Controlador Logix
Código de producto
CompactLogix5320
43
CompactLogix5330
44
CompactLogix5335E
65
ControlLogix5550
3
ControlLogix5553
50
ControlLogix5555
51
ControlLogix5561
54
ControlLogix5562
55
ControlLogix5563
56
DriveLogix5720
48
FlexLogix5433
41
FlexLogix5434
42
SoftLogix5860
15
Identifica la revisión del producto actual. La visualización debe
ser hexadecimal.
El byte inferior contiene la revisión mayor; el byte superior
contiene la revisión menor.
SerialNumber
DINT
GSV
Número de serie del dispositivo.
El número de serie se asigna cuando se construye el
dispositivo.
Publicación 1756-RM003K-ES-P – Julio 2008
181
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Atributo
Tipo de datos
Instrucción
Descripción
Status
INT
GSV
Bits que identifican el estado:
Los bits 3-0 están reservados
Bits de estado de dispositivo
Bits 7-4:
0000
Significado:
reservado
0001
actualización de la memoria flash en curso
0010
reservado
0011
reservado
0100
la memoria flash está defectuosa
0101
con fallo
0110
marcha
0111
programa
Bits de estado de fallo
Bits 11-8:
0001
Significado:
fallo menor recuperable
0010
fallo menor no recuperable
0100
fallo mayor recuperable
1000
fallo mayor no recuperable
Bits de estado específicos para Logix5000
Type
INT
GSV
Bits 13-12:
01
Significado:
interruptor de llave en marcha
10
interruptor de llave en programa
11
interruptor de llave en modo remoto
Bits 15-14
Significado
01
el controlador está cambiando de modos
10
modo de depuración si el controlador está
en el modo de marcha
Identifica el dispositivo como controlador.
Controlador = 14
Vendor
INT
GSV
Identifica el suministrador del dispositivo.
Allen-Bradley = 0001
182
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Acceso al objeto CST
El objeto CST (hora coordinada del sistema) proporciona la hora
coordinada del sistema para los dispositivos en un chasis.
Atributo
Tipo de datos
Instrucción
Descripción
CurrentStatus
INT
GSV
El estado actual de la hora coordinada del sistema. Los bits
identifican:
CurrentValue
DINT[2]
GSV
Bit:
Significado
0
el hardware del temporizador entró en fallo: el hardware
del temporizador interno del dispositivo está en un estado
de fallo
1
rampa habilitada: el valor actual de los 16+ bits inferiores
del temporizador aumentan en rampa al valor solicitado
en lugar de quedarse en el valor inferior. El método de
sincronización por puntos para la red específica manipula
estos bits.
2
maestro de hora del sistema: el objeto CST es la fuente de
hora del maestro en el sistema ControlLogix
3
sincronizado: el objeto de CST maestro sincroniza el
CurrentValue de 64 bits del objeto CST mediante una
actualización de hora del sistema
4
maestro de red local: el objeto CST es la fuente de hora
del maestro de la red local
5
en el modo de relevo: el objeto CST actúa en un modo de
relevo de tiempo
6
se detectó un maestro duplicado: se ha detectado un
maestro de hora duplicado en la red local. Este bit siempre
es 0 en los nodos dependientes de la hora.
7
no se usa
8-9
00 = nodo dependiente de la hora
01 = nodo maestro de hora
10 = nodo de relé de hora
11 = no se usa
10-15
no se usa
Valor actual del temporizador. DINT[0] contiene los 32 bits inferiores;
DINT[1] contiene los 32 bits superiores.
La fuente del temporizador se ajusta para coincidir con el valor
suministrado en los servicios de actualización y de la sincronización
de red de comunicación local. El ajuste representa un aumento en
rampa hasta el valor solicitado o un establecimiento inmediato en el
valor solicitado, según se reporte en el atributo CurrentStatus.
Publicación 1756-RM003K-ES-P – Julio 2008
183
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Acceso al objeto DF1
El objeto DF1 proporciona una interface al driver de comunicación
que se puede configurar para el puerto serie.
Atributo
Tipo de
datos
Instrucción
Descripción
ACKTimeout
DINT
GSV
La cantidad de tiempo que se debe esperar por la confirmación de
una transmisión de mensaje (punto a punto y maestro solamente).
El valor válido es 0-32,767. Retardo en conteos de períodos de
20 ms. El valor predeterminado es 50 (1 segundo).
DiagnosticCounters
offset de palabra
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
INT[19]
GSV
DF1 punto a punto
firma (0x0043)
bits de módem
paquetes enviados
paquetes recibidos
paquetes no entregados
no se usa
NAK recibidos
ENQ enviados
paquetes deficientes con NAK
sin memoria enviado NAK
recibidos paquetes duplicados
recibidos caracteres deficientes
conteo de recuperaciones DCD
conteo de módem perdido
no se usa
no se usa
no se usa
no se usa
ENQ enviados
DuplicateDetection
SINT
GSV
Matriz de contadores de diagnóstico para el driver de
comunicación DF1.
DF1 esclavo
firma (0x0042)
bits de módem
paquetes enviados
paquetes recibidos
paquetes no entregados
mensajes reenviados
NAK recibidos
paquetes de encuesta recibidos
paquetes deficientes sin ACK
sin memoria sin ACK
recibidos paquetes duplicados
no se usa
conteo de recuperaciones DCD
conteo de módem perdido
no se usa
no se usa
no se usa
no se usa
no se usa
Habilita la detección de mensajes duplicados.
Valor:
0
no cero
EmbeddedResponseEnable
SINT
GSV
1
SINT
GSV
Significado:
detección de mensajes duplicados inhabilitada
detección de mensajes duplicados inhabilitada
Habilita la funcionalidad de respuesta incorporada (punto a punto
solamente).
Valor:
0
ENQTransmitLimit
maestro
firma (0x0044)
bits de módem
paquetes enviados
paquetes recibidos
paquetes no entregados
mensajes reenviados
no se usa
no se usa
paquetes deficientes sin ACK
no se usa
recibidos paquetes duplicados
no se usa
conteo de recuperaciones DCD
conteo de módem perdido
máximo de tiempo de escán prioritario
último tiempo de escán prioritario
máximo de tiempo de escán normal
último tiempo de escán normal
no se usa
Significado:
se inicia solamente después de que se recibe uno
(opción predeterminada)
habilitado incondicionalmente
El número de consultas (ENQ) que se envían después del tiempo
de espera de ACK (punto a punto solamente).
Los valores válidos son 0-127. El ajuste predeterminado es 3.
EOTSuppression
SINT
GSV
Habilita la supresión de transmisiones de EOT como respuesta a
los paquetes de encuesta (esclavo solamente).
Valor:
0
no cero
184
Significado:
supresión de EOT inhabilitada
supresión de EOT habilitada
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Atributo
Tipo de
datos
Instrucción
Descripción
ErrorDetection
SINT
GSV
Especifica el esquema de detección de errores.
Valor:
0
1
MasterMessageTransmit
SINT
GSV
Capítulo 4
Significado:
BCC (predeterminado)
CRC
Valor actual de la transmisión de mensaje del maestro (maestro
solamente).
Valor:
0
1
Significado:
entre encuestas de estación
en secuencia de encuesta (en lugar del número de
estación del maestro)
El valor predeterminado es 0.
NAKReceiveLimit
SINT
GSV
El número de NAK recibidos como respuesta a un mensaje antes
de detener la transmisión (comunicación punto a punto
solamente).
Los valores válidos son 0-127. El valor predeterminado es 3.
NormalPollGroupSize
INT
GSV
El número de estaciones que se encuestan en la matriz de nodos
de encuesta normal después de encuestarse todas las estaciones
en la matriz de nodos de encuesta prioritaria (maestro solamente).
Los valores válidos son 0-255. El valor predeterminado es 0.
PollingMode
SINT
GSV
Modo de encuesta actual (maestro solamente).
Valor:
0
1
2
3
Significado:
basado en mensajes; no permite a los esclavos
iniciar mensajes
basado en mensajes, pero permite a los esclavos
iniciar mensajes (predeterminado)
estándar, transferencia de un solo mensaje por
escán de nodo
estándar, transferencia de varios mensajes por
escán de nodo
La configuración predeterminada es 1.
ReplyMessageWait
DINT
GSV
El tiempo (actuando como maestro) que se debe esperar después
de recibirse un ACK antes de encuestarse el esclavo en busca de
una respuesta (maestro solamente).
Valores válidos de 0-65,535. Retardo en conteos de períodos de
20 ms. La configuración predeterminada es 5 períodos (100 ms).
StationAddress
INT
GSV
Dirección de estación actual del puerto serie.
Valores válidos de 0-254. El valor predeterminado es 0.
SlavePollTimeout
DINT
GSV
La cantidad de tiempo en ms que espera el esclavo hasta que el
maestro realiza una encuesta antes de que el esclavo indique que
no puede transmitir debido a la inactividad del maestro (esclavo
solamente).
Valores válidos de 0-32,767. Retardo en conteos de períodos de
20 ms. La configuración predeterminada es 3000 períodos
(1 minuto).
Publicación 1756-RM003K-ES-P – Julio 2008
185
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Atributo
Tipo de
datos
Instrucción
Descripción
TransmitRetries
SINT
GSV
El número de veces que se puede volver a enviar un mensaje sin
obtenerse una confirmación (maestro y esclavo solamente).
Valores válidos de 0-127. El valor predeterminado es 3.
PendingACKTimeout
DINT
SSV
Valor pendiente para el atributo ACKTimeout.
PendingDuplicateDetection
SINT
SSV
Valor pendiente para el atributo DuplicateDetection.
PendingEmbeddedResponse
Enable
SINT
SSV
Valor pendiente para el atributo EmbeddedResponse.
PendingENQTransmitLimit
SINT
SSV
Valor pendiente para el atributo ENQTransmitLimit.
PendingEOTSuppression
SINT
SSV
Valor pendiente para el atributo EOTSuppression.
PendingErrorDetection
SINT
SSV
Valor pendiente para el atributo ErrorDetection.
PendingNormalPollGroupSize
INT
SSV
Valor pendiente para el atributo NormalPollGroupSize.
PendingMasterMessage
Transmit
SINT
SSV
Valor pendiente para el atributo MasterMessageTransmit.
PendingNAKReceiveLimit
SINT
SSV
Valor pendiente para el atributo NAKReceiveLimit.
PendingPollingMode
SINT
SSV
Valor pendiente para el atributo PollingMode.
PendingReplyMessageWait
DINT
SSV
Valor pendiente para el atributo ReplyMessageWait.
PendingStationAddress
INT
SSV
Valor pendiente para el atributo StationAddress.
PendingSlavePollTimeout
DINT
SSV
Valor pendiente para el atributo SlavePollTimeout.
PendingTransmitRetries
SINT
SSV
Valor pendiente para el atributo TransmitRetries.
Para aplicar los valores en cualquiera de los atributos DF1 pendientes:
1. Use una instrucción SSV para establecer el valor del atributo
pendiente.
Usted puede establecer tantos atributos pendientes como desee,
usando una instrucción SSV por cada atributo pendiente.
2. Use una instrucción MSG para aplicar el valor. La instrucción
MSG aplica cada atributo pendiente establecido. Configure la
instrucción MSG como:
Ficha MSG Configuration
Campo
Valor
Configuración
Message Type
CIP genérico
Service Code
0d hex
Tipo de objeto
a2
Object ID
1
Object Attribute
dejar en blanco
Source
dejar en blanco
Number of Elements
0
Destination
dejar en blanco
Path
ruta de comunicación consigo
mismo (1,s donde s = número
de ranura del controlador)
Comunicación
186
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Acceso al objeto FAULTLOG
El objeto FAULTLOG proporciona información de fallo acerca del
controlador.
Atributo
Tipo de datos
Instrucción
Descripción
MajorEvents
INT
GSV
Cuántos fallos mayores han ocurrido desde la última vez que
se restableció este contador.
SSV
MinorEvents
INT
GSV
Cuántos fallos menores han ocurrido desde la última vez que
se restableció este contador.
SSV
MajorFaultBits
MinorFaultBits
DINT
DINT
Publicación 1756-RM003K-ES-P – Julio 2008
GSV
Los bits individuales indican la razón del fallo mayor actual.
SSV
Bit:
1
3
4
5
6
7
8
11
GSV
Los bits individuales indican la razón del fallo menor actual.
SSV
Bit:
4
6
9
10
Significado:
corte de energía
E/S
ejecución de instrucción (programa)
administrador de fallos
temporizador de control (watchdog)
pila
cambio de modo
control de movimiento
Significado:
ejecución de instrucción (programa)
temporizador de control (watchdog)
puerto serie
batería
187
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Acceso al objeto MESSAGE
Usted puede acceder al objeto MESSAGE a través de las instrucciones
GSV/SSV. Especifique el nombre del tag de mensaje para determinar
qué objeto MESSAGE desea. El objeto MESSAGE proporciona una
interface para configurar y activar las comunicaciones entre
dispositivos similares. Este objeto reemplaza el tipo de datos MG del
procesador PLC-5.
Atributo
Tipo de datos
Instrucción
Descripción
ConnectionPath
SINT[130]
GSV
SSV
Datos para configurar la ruta de conexión. Los dos primeros bytes
(byte inferior y byte superior) representan la longitud en bytes de la
ruta de conexión.
GSV
Régimen de paquetes solicitado de la conexión.
ConnectionRate
DINT
SSV
MessageType
Port
TimeoutMultiplier
SINT
SINT
SINT
GSV
Especifica el tipo de mensaje.
SSV
Valor:
0
GSV
Indica el puerto por el que se debe enviar el mensaje.
SSV
Valor:
1
2
GSV
Determina cuándo una conexión se debe considerar como que ha
sobrepasado el tiempo de espera y se ha cerrado.
Significado:
no inicializado
Significado:
backplane
puerto serie
SSV
Valor:
0
1
2
UnconnectedTimeout
DINT
GSV
SSV
Significado:
la conexión sobrepasará el tiempo de espera en un
lapso igual a 4 veces el régimen de actualización
(predeterminado)
la conexión sobrepasará el tiempo de espera en un
lapso igual a 8 veces el régimen de actualización
la conexión sobrepasará el tiempo de espera en un
lapso igual a 16 veces el régimen de actualización
El tiempo de espera, en microsegundos, para todos los
mensajes no conectados. La opción predeterminada es
30,000,000 microsegundos (30 segundos).
Siga los pasos que aparecen a continuación para cambiar un atributo
MESSAGE:
1. Use una instrucción GSV para obtener el atributo MessageType
y guárdelo en un tag.
2. Use una instrucción SSV para establecer MessageType en 0.
3. Use una instrucción SSV para establecer el atributo MESSAGE
que desea cambiar.
4. Use una instrucción SSV para establecer el atributo MessageType
nuevamente al valor original que usted obtuvo en el paso 1.
188
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Ejemplo: El ejemplo siguiente cambia el atributo ConnectionPath de modo que
el mensaje se envíe a un controlador diferente. Cuando msg_path está
activado, establece la ruta del mensaje msg_1 en el valor de
msg_1_path. Esto hace que se envíe el mensaje a un controlador
diferente.
Donde
Es
msg_1
mensaje cuyo atributo usted desea cambiar
msg_1_type
tag que almacena el valor del atributo MessageType
tag_a
tag que almacena un 0.
msg_1_path
tag de matriz que almacena la nueva ruta de conexión para el
mensaje
Lógica de escalera de relés
msg_path
msg_path
0
GSV
GSV
Get
Value
GetSystem
System
Value
Class
name
Message
Class
name
MESSAGE
Instance
name
msg_1
Instance
name
msg_1
AttributeName
Name MessageType
Attribute
MessageType
Dest
msg_1_type
Dest
msg_1_type
22
SSV
SSV
Set
System
Value
Set
System
Value
Class
name
Message
Class
name
MESSAGE
Instance
name
msg_1
Instance
name
msg_1
Attribute
Name
ConnectionPath
Attribute
Name ConnectionPath
Source
msg_1_path[0]
Source
msg_1path[0]
66
1
msg_1.EN
msg_1.EN
/
SSV
SSV
Set
Value
SetSystem
System
Value
Class
name
Message
Class
name
MESSAGE
Instance
name
msg_1
Instance
name
msg_1
Attribute
Name MessageType
Attribute
Name
MessageType
Source
tag_a
Source
tag_a
00
SSV
SSV
Set
Value
SetSystem
System
Value
Class
name
Message
Class
name
MESSAGE
Instance
name
msg_1
Instance
name
msg_1
Attribute
Name
MessageType
Attribute
Name MessageType
Source
msg_1_type
Source
msg_1_type
22
MSG
MSG
Tipo
– Escritura
de tabla
de Write
datos CIP
Type
- CIP Data
Table
Message
Control
msg_1 ...
Message
Control
msg_1
EN
EN
DN
DN
ER
ER
Texto estructurado
IF msg_path THEN
GSV(MESSAGE,msg_1,MessageType,msg_1_type);
SSV(MESSAGE,msg_1,MessageType,tag_a);
SSV(MESSAGE,msg_1,ConnectionPath,msg_1_path[0]);
SSV(MESSAGE,msg_1,MessageType,msg_1_type);
END_IF;
IF NOT msg_1.EN THEN
MSG(msg_1);
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
189
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Acceso al objeto MODULE
El objeto MODULE proporciona información de estado acerca de un
módulo. Para seleccionar un objeto MODULE determinado, establezca
el operando Object Name de la instrucción GSV/SSV en el nombre del
módulo. El módulo especificado deberá estar presente en la sección
I/O Configuration del organizador del controlador y deberá tener un
nombre de dispositivo.
Atributo
Tipo de datos
Instrucción
Descripción
EntryStatus
INT
GSV
Especifica el estado actual de la entrada de mapa especificada. Los
12 bits inferiores se deben enmascarar cuando se realiza una operación
de comparación. Solamente los bits 12-15 son válidos.
Valor:
16#0000
Significado:
Reserva: el controlador se está encendiendo.
16#1000
Con fallo: cualquiera de las conexiones del objeto
MODULE al módulo asociado entran en fallo. No se debe
usar este valor para determinar si el módulo ha entrado en
fallo puesto que el objeto MODULE sale periódicamente de
este estado cuando intenta volver a conectarse al módulo.
En lugar de ello, realice una prueba para determinar si hay
un estado de marcha (16#4000). Verifique si hay un
FaultCode diferente de 0 para determinar si un módulo ha
entrado en fallo. Una vez que han entrado en fallo, los
atributos FaultCode y FaultInfo son válidos hasta que se
corrige la condición de fallo.
16#2000
Validando: el objeto MODULE está verificando la
integridad del objeto MODULE antes de establecer las
conexiones al módulo.
16#3000
Conectándose: el objeto MODULE está iniciando las
conexiones al módulo.
16#4000
Funcionando: todas las conexiones al módulo han sido
establecidas y los datos se transfieren correctamente.
16#5000
Desactivándose: el objeto MODULE está en proceso de
desactivar todas las conexiones al módulo.
16#6000
Inhibido: el objeto MODULE se inhibe (el bit de inhibición
está establecido en el atributo de modo).
16#7000
En espera: no funciona el objeto MODULE primario del
cual depende este objeto MODULE.
FaultCode
INT
GSV
Un número que identifica un fallo del módulo, si ocurre.
FaultInfo
DINT
GSV
Proporciona información específica acerca del código de fallo del objeto
MODULE.
ForceStatus
INT
GSV
Especifica el estado de los forzados.
Bit:
0
1
2-15
190
Significado:
forzados instalados (1=sí, 0=no)
forzados habilitados (1=sí, 0=no)
no se usa
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Atributo
Tipo de datos
Instrucción
Descripción
Instance
DINT
GSV
Proporciona el número de instancia de este objeto MODULE.
LEDStatus
INT
GSV
Especifica el estado actual del indicador LED de E/S en la parte frontal del
controlador.
Valor:
0
Significado:
LED apagado: No hay objetos MODULE configurados para
el controlador (no hay módulos en la sección I/O
Configuration del organizador del controlador).
1
Rojo parpadeante: Ninguno de los objetos MODULE está
en ejecución.
2
Verde parpadeante: Por lo menos uno de los objetos
MODULE no está en ejecución.
3
Verde fijo: Todos los objetos Module están en ejecución.
Nota: No introduzca un nombre de objeto con este atributo puesto que el
atributo se aplica a toda la colección de módulos.
Mode
INT
GSV
Especifica el modo actual del objeto MODULE.
SSV
Bit:
0
Significado:
Si se establece, hace que se genere un fallo mayor si
cualquiera de las conexiones del objeto MODULE entran en
fallo mientras el controlador esté en el modo de marcha.
2
Si se establece, hace que el objeto MODULE entre en el
estado inhibido después de desactivar todas las
conexiones al módulo.
Acceso al objeto MOTIONGROUP
El objeto MOTIONGROUP proporciona información de estado acerca
de un grupo de ejes para el módulo servo. Especifique el nombre de
tag del grupo de control de movimiento para determinar el objeto
MOTIONGROUP deseado.
Atributo
Tipo de datos
Instrucción
Descripción
Instance
DINT
GSV
Proporciona el número de instancia de este objeto
MOTION_GROUP.
Publicación 1756-RM003K-ES-P – Julio 2008
191
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Acceso al objeto PROGRAM
El objeto PROGRAM proporciona información de estado acerca de un
programa. Especifique el nombre del programa para determinar el
objeto PROGRAM deseado.
Atributo
Tipo de datos
Instrucción
Descripción
DisableFlag
SINT
GSV
Controla la ejecución de este programa.
SSV
Valor:
0
1
Significado:
ejecución habilitada
ejecución inhabilitada
Instance
DINT
GSV
Proporciona el número de instancia de este objeto PROGRAM.
LastScanTime
DINT
GSV
El tiempo necesario para que se ejecutara este programa la última
vez que se ejecutó. El tiempo se representa en microsegundos.
SSV
MajorFaultRecord
DINT[11]
GSV
Registra los fallos mayores para este programa.
SSV
Recomendamos que usted cree una estructura definida por el
usuario para simplificar el acceso al atributo MajorFaultRecord:
Nombre:
Tipo de datos:
Estilo:
Descripción:
TimeLow
DINT
Decimal
los 32 bits inferiores de un valor de sello de hora de fallo
TimeHigh
DINT
Decimal
los 32 bits superiores de un valor de sello de hora de fallo
Type
INT
Decimal
tipo de fallo (programa, E/S, etc.)
Code
INT
Decimal
código único para el fallo (depende del tipo de fallo)
Info
DINT[8]
Hexadecimal
información específica del fallo (depende del código y tipo de
fallo)
MaxScanTime
DINT
GSV
El tiempo de ejecución máximo registrado para este programa.
El tiempo se representa en microsegundos.
SSV
MinorFaultRecord
DINT[11]
GSV
Registra los fallos menores para este programa
SSV
Recomendamos que usted cree una estructura definida por el
usuario para simplificar el acceso al atributo MinorFaultRecord:
Nombre:
Tipo de datos:
Estilo:
Descripción:
TimeLow
DINT
Decimal
los 32 bits inferiores de un valor de sello de hora de fallo
TimeHigh
DINT
Decimal
los 32 bits superiores de un valor de sello de hora de fallo
Type
INT
Decimal
tipo de fallo (programa, E/S, etc.)
Code
INT
Decimal
código único para el fallo (depende del tipo de fallo)
Info
DINT[8]
Hexadecimal
información específica del fallo (depende del código y tipo de
fallo)
SFCRestart
INT
GSV
no se usa – reservado para uso futuro
SSV
192
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Acceso al objeto ROUTINE
El objeto ROUTINE proporciona información de estado acerca de una
rutina. Especifique el nombre de la rutina para determinar el objeto
ROUTINE deseado.
Atributo
Tipo de datos
Instrucción
Descripción
Instance
DINT
GSV
Proporciona el número de instancia de este objeto ROUTINE.
Los valores válidos son 0-65,535.
Acceso al objeto SERIALPORT
El objeto SERIALPORT proporciona una interface al puerto de
comunicación serie.
Atributo
Tipo de datos
Instrucción
Descripción
BaudRate
DINT
GSV
Especifica la velocidad en baudios.
Los valores válidos son 110, 300, 600, 1200, 2400, 4800, 9600 y
19200 (predeterminado).
DataBits
SINT
GSV
Especifica el número de bits de datos por carácter.
Valor:
7
8
Parity
SINT
GSV
Especifica la paridad.
Valor:
0
1
2
RTSOffDelay
INT
GSV
Significado:
7 bits de datos (ASCII solamente)
8 bits de datos (opción predeterminada)
Significado:
sin paridad (no predeterminado)
paridad impar (ASCII solamente)
paridad par
La cantidad de tiempo necesario para retardar la desconexión de
la línea RTS después de la transmisión del último carácter.
El valor válido es 0-32,767. Retardo en conteos de períodos de
20 ms. El valor predeterminado es 0 ms.
RTSSendDelay
INT
GSV
La cantidad de tiempo necesario para retardar la transmisión del
primer carácter de un mensaje después de activar la línea RTS.
El valor válido es 0-32,767. Retardo en conteos de períodos de
20 ms. El valor predeterminado es 0 ms.
StopBits
SINT
GSV
Especifica el número de bits de fin.
Valor:
1
2
Significado:
1 bit de fin (opción predeterminada)
2 bits de fin (ASCII solamente)
PendingBaudRate
DINT
SSV
Valor pendiente para el atributo BaudRate.
PendingDataBits
SINT
SSV
Valor pendiente para el atributo DataBits.
PendingParity
SINT
SSV
Valor pendiente para el atributo Parity.
Publicación 1756-RM003K-ES-P – Julio 2008
193
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Atributo
Tipo de datos
Instrucción
Descripción
PendingRTSOffDelay
INT
SSV
Valor pendiente para el atributo RTSOffDelay.
PendingRTSSendDelay
INT
SSV
Valor pendiente para el atributo RTSSendDelay.
PendingStopBits
SINT
SSV
Valor pendiente para el atributo StopBits.
Para aplicar los valores para cualquiera de los atributos SERIALPORT
pendientes:
1. Use una instrucción SSV para establecer el valor para el atributo
pendiente.
Usted puede establecer tantos atributos pendientes como desee,
usando una instrucción SSV para cada atributo pendiente.
2. Use una instrucción MSG para aplicar el valor. La instrucción
MSG aplica cada atributo pendiente establecido. Configure las
instrucciones MSG como:
Ficha MSG Configuration
Campo
Valor
Configuration
Message Type
CIP genérico
Service Code
0d hex
Object Type
6f hex
Object ID
1
Object Attribute
dejar en blanco
Source
dejar en blanco
Number of Elements
0
Destination
dejar en blanco
Path
ruta de comunicación consigo mismo
(1,s donde s = número de ranura del
controlador)
Communication
194
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Acceso al objeto TASK
El objeto TASK proporciona información de estado acerca de una
tarea. Especifique el nombre de la tarea para determinar el objeto
TASK deseado.
Atributo
Tipo de datos
Instrucción
Descripción
DisableUpdateOutputs
DINT
GSV
Habilita o inhabilita el procesamiento de salidas al final de una
tarea.
SSV
EnableTimeOut
DINT
GSV
SSV
InhibitTask
DINT
GSV
SSV
Instance
DINT
GSV
Para:
Establezca el atributo en:
habilitar el procesamiento de
salidas al final de la tarea
0
inhabilitar el procesamiento de
salidas al final de la tarea
1 (o cualquier valor excepto
cero)
Habilita o inhabilita la función de tiempo de espera de una tarea de
evento.
Para:
Establezca el atributo en:
inhabilitar la función de tiempo
de espera
0
habilitar la función de tiempo de
espera
1 (o cualquier valor excepto
cero)
Evita que se ejecute la tarea. Si se inhibe una tarea, el controlador
igualmente preescanea la tarea cuando el controlador cambia del
modo de programación al modo de marcha o al modo de prueba.
Para:
Establezca el atributo en:
habitar la tarea
0 (predeterminado)
inhibir (inhabilitar) la tarea
1 (o cualquier valor excepto
cero)
Proporciona el número de instancia de este objeto TASK.
Los valores válidos son 0-31.
LastScanTime
DINT
GSV
El tiempo necesario para ejecutar esta tarea desde la última vez
que se ejecutó. El tiempo se representa en microsegundos.
SSV
MaxInterval
DINT[2]
GSV
SSV
El intervalo de tiempo máximo entre las ejecuciones sucesivas de la
tarea. DINT[0] contiene los 32 bits inferiores del valor; DINT[1]
contiene los 32 bits superiores del valor.
Un valor de 0 indica 1 o menos ejecuciones de la tarea.
MaxScanTime
DINT
GSV
El tiempo de ejecución máximo registrado para este programa.
El tiempo se representa en microsegundos.
SSV
MinInterval
DINT[2]
GSV
SSV
El intervalo de tiempo mínimo entre las ejecuciones sucesivas de la
tarea. DINT[0] contiene los 32 bits inferiores del valor; DINT[1]
contiene los 32 bits superiores del valor.
Un valor de 0 indica 1 o menos ejecuciones de la tarea.
OverlapCount
DINT
GSV
SSV
Publicación 1756-RM003K-ES-P – Julio 2008
El número de veces que se activó la tarea mientras se estaba
ejecutando. Válido para un evento o una tarea periódica.
Para borrar el conteo, establezca el atributo en 0.
195
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Atributo
Tipo de datos
Instrucción
Descripción
Priority
INT
GSV
La prioridad relativa de esta tarea comparada con las otras tareas.
SSV
Valores válidos 1...15.
GSV
Si el tipo de tarea es:
El atributo Rate especifica
el:
periódica
Período para la tarea.
El tiempo se representa en
microsegundos.
evento
El valor de tiempo de espera
para la tarea. El tiempo se
representa en microsegundos.
Rate
DINT
SSV
StartTime
DINT[2]
GSV
SSV
Status
DINT
GSV
SSV
Watchdog
DINT
GSV
SSV
El valor WALLCLOCKTIME cuando se inició la última ejecución de la
tarea. DINT[0] contiene los 32 bits inferiores del valor; DINT[1]
contiene los 32 bits superiores del valor.
Proporciona información de estado acerca de la tarea. Una vez que
el controlador establece uno de estos bits, usted puede borrar el bit
manualmente.
Para determinar si:
Examine este bit:
Una instrucción EVNT activó
la tarea (tarea de evento
solamente).
0
Un tiempo de espera
sobrepasado activó la tarea
(tarea de evento solamente).
1
Ocurrió una superposición para
esta tarea.
2
El límite de tiempo para la ejecución de todos los programas
asociados con esta tarea. El tiempo se representa en
microsegundos.
Si se introduce 0, se asignan estos valores:
196
Tiempo:
Tipo de tarea:
0.5 s
periódica o de evento
5.0 s
continua
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Acceso al objeto WALLCLOCKTIME
El objeto WALLCLOCKTIME proporciona un sello de hora que el
controlador puede usar para la priorización.
Atributo
Tipo de datos
Instrucción
Descripción
CSTOffset
DINT[2]
GSV
Offset positivo del CurrentValue del objeto CST (hora coordinada del
sistema; vea la página 183). DINT[0] contiene los 32 bits inferiores
del valor; DINT[1] contiene los 32 bits superiores del valor.
SSV
Valor en μs. El valor predeterminado es 0.
CurrentValue
DINT[2]
GSV
El valor actual de la hora del reloj. DINT[0] contiene los 32 bits
inferiores del valor; DINT[1] contiene los 32 bits superiores del valor.
SSV
El valor es el número de microsegundos que han transcurrido desde
las 0000 horas del 1º de enero de 1972.
Los objetos CST y WALLCLOCKTIME están relacionados
matemáticamente en el controlador. Por ejemplo, si se suman
CST CurrentValue y WALLCLOCKTIME CTSOffset, el resultado es
WALLCLOCKTIME CurrentValue.
DateTime
DINT[7]
Publicación 1756-RM003K-ES-P – Julio 2008
GSV
La fecha y hora en un formato legible.
SSV
DINT[0]
año
DINT[1]
representación del mes en números enteros (1-12)
DINT[2]
representación del día en números enteros (1-31)
DINT[3]
hora (0-23)
DINT[4]
minuto (0-59)
DINT[5]
segundos (0-59)
DINT[6]
microsegundos (0-999,999)
197
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Ejemplo de programación
GSV/SSV
Obtenga información de fallo
Los siguientes ejemplos usan instrucciones GSV para obtener
información de fallo.
Ejemplo 1: Este ejemplo obtiene información de fallo del módulo de E/S
disc_in_2 y coloca los datos en una estructura definida por el usuario
disc_in_2_info.
Lógica de escalera de relés
Texto estructurado
GSV(MODULE,disc_in_2,FaultCode,disc_in_2_info.FaultCode);
GSV(MODULE,disc_in_2,FaultInfo,disc_in_2_info.FaultInfo);
GSV(MODULE,disc_in_2,Mode,disc_in_2info.Mode);
Ejemplo 2: Este ejemplo obtiene información de estado acerca del programa
discrete y coloca los datos en una estructura definida por el usuario
discrete_info.
Lógica de escalera de relés
Texto estructurado
GSV(PROGRAM,DISCRETE,LASTSCANTIME,
discrete_info.LastScanTime);
GSV(PROGRAM,DISCRETE,MAXSCANTIME,discrete_info.MaxScanTime);
198
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Ejemplo 3: Este ejemplo obtiene información de estado acerca de la tarea IO_test
y coloca los datos en una estructura definida por el usuario
io_test_info.
Lógica de escalera de relés
Texto estructurado
GSV(TASK,IO_TEST,LASTSCANTIME,io_test_info.LastScanTime);
GSV(TASK,IO_TEST,MAXSCANTIME,io_test_info.MaxScanTime);
GSV(TASK,IO_TEST,WATCHDOG,io_test_info.WatchDog);
Publicación 1756-RM003K-ES-P – Julio 2008
199
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Establezca los indicadores de habilitación e inhabilitación
El siguiente ejemplo usa la instrucción SSV para habilitar o inhabilitar
un programa. Usted también podría usar este método para habilitar o
inhabilitar un módulo de E/S, lo cual es similar a usar bits de
inhibición con un procesador PLC-5.
Ejemplo: Según el estado de SW.1, coloque el valor apropiado en el atributo
disableflag del programa discrete.
Lógica de escalera de relés
Texto estructurado
IF SW.1 THEN
discrete_prog_flag := enable_prog;
ELSE
discrete_prog_flag := disable_prog;
END_IF;
SSV(PROGRAM,DISCRETE,DISABLEFLAG,discrete_prog_flag);
200
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Salida inmediata (IOT)
Capítulo 4
La instrucción IOT actualiza inmediatamente los datos de salida
especificados (tag de salida o tag producido).
Operandos:
Lógica de escalera de relés
Operando
Tipo
Update Tag
Formato
Descripción
tag
tag que usted desea actualizar, ya sea:
• tag de salida de un módulo de E/S
• tag producido
No seleccione un miembro o elemento de un
tag. Por ejemplo, Local:5:0 es correcto, pero
Local:5:0.Data no es correcto.
Texto estructurado
IOT(output_tag);
Los operandos son iguales a los de la instrucción IOT de lógica de
escalera de relés.
Descripción: La instrucción IOT anula el intervalo solicitado entre paquetes (RPI)
de una conexión de salida y envía datos nuevos mediante la
conexión.
• Una conexión de salida es una conexión asociada con el tag de
salida de un módulo de E/S o con un tag producido.
• Si la conexión es para un tag producido, la instrucción IOT
también envía el activador de evento al controlador consumidor.
Esto permite a la instrucción IOT activar una tarea de evento en
el controlador consumidor.
Para usar una instrucción IOT y un tag producido para activar una
tarea de evento en un controlador consumidor, configure el tag
producido de la siguiente manera:
Marque esta casilla.
De esta manera se configura el tag para actualizar su
activador de evento sólo mediante una instrucción IOT.
Publicación 1756-RM003K-ES-P – Julio 2008
201
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
El tipo de red entre los controladores determina cuándo el
controlador consumidor recibe los nuevos datos y el activador de
eventos mediante la instrucción IOT.
Con este controlador
Mediante esta red
El dispositivo consumidor recibe los
datos y el activador de evento
ControlLogix
backplane
inmediatamente
Red EtherNet/IP
inmediatamente
Red ControlNet
dentro del intervalo entre paquetes actual
(API) del tag consumido (conexión)
Usted puede producir y consumir tags sólo
por una red ControlNet.
dentro del intervalo entre paquetes actual
(API) del tag consumido (conexión)
SoftLogix5800
Los siguientes diagramas comparan la recepción de datos mediante
una instrucción IOT por las redes EtherNet/IP y ControlNet.
Red EtherNet/IP
Red ControlNet
valores cargados al tag
producido
valores cargados al tag
producido
instrucción IOT en el
controlador productor
instrucción IOT en el
controlador productor
tarea de evento en el
controlador consumidor
RPI del tag producido
tarea de evento en el
controlador consumidor
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
202
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Capítulo 4
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
EnableIn se establece
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción:
• actualiza la conexión del tag especificado.
• restablece el temporizador RPI de la conexión
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo 1: Cuando la instrucción IOT se ejecuta, ésta inmediatamente envía los
valores del tag Local:5:0 al módulo de salida.
Lógica de escalera de relés
Texto estructurado
IOT (Local:5:O);
Publicación 1756-RM003K-ES-P – Julio 2008
203
Capítulo 4
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Ejemplo 2: Este controlador controla la estación 24 y produce datos para la
siguiente estación (estación 25). Para usar una instrucción IOT para
señalar la transmisión de nuevos datos, el tag producido se configura
de la siguiente manera:
Produced_Tag se configura para actualizar su activador de
eventos mediante una instrucción IOT.
Lógica de escalera de relés
Si New_Data = activado, ocurre lo siguiente durante un escán:
La instrucción CPS establece Produced_Tag = Source_Tag.
La instrucción IOT actualiza Produced_Tag y envía esta actualización al controlador consumidor (estación 25). Cuando
el controlador consumidor recibe esta actualización, activa la tarea de evento asociada en dicho controlador.
Texto estructurado
IF New_Data AND NOT Trigger_Consumer THEN
CPS (Source_Tag,Produced_Tag,1);
IOT (Produced_Tag);
END_IF;
Trigger_Consumer := New_Data;
204
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
5
Instrucciones de comparación
(CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Introducción
Las instrucciones de comparación le permiten comparar los valores
usando una expresión o una instrucción de comparación específica.
Si desea
Use esta instrucción
Disponible en estos lenguajes
Vea la página
comparar los valores según una expresión
CMP
lógica de escalera de relés
texto estructurado(1)
206
probar si dos valores son iguales
EQU
lógica de escalera de relés
texto estructurado(2)
bloque de funciones
211
probar si un valor es mayor o igual que un
segundo valor
GEQ
lógica de escalera de relés
texto estructurado(1)
bloque de funciones
215
determinar si un valor es mayor que otro valor
GRT
lógica de escalera de relés
texto estructurado(1)
bloque de funciones
219
probar si un valor es menor o igual que un
segundo valor
LEQ
lógica de escalera de relés
texto estructurado(1)
bloque de funciones
223
determinar si un valor es menor que otro valor
LES
lógica de escalera de relés
texto estructurado(1)
bloque de funciones
227
determinar si un valor se encuentra entre otros
dos valores
LIM
lógica de escalera de relés
texto estructurado(1)
bloque de funciones
231
pasar dos valores a través de una máscara y
determinar si son iguales
MEQ
lógica de escalera de relés
texto estructurado(1)
bloque de funciones
237
determinar si un valor diferente a otro valor
NEQ
lógica de escalera de relés
texto estructurado(1)
bloque de funciones
242
(1)
No hay una instrucción equivalente en texto estructurado. Use otra programación en texto estructurado para lograr el mismo resultado. Vea la descripción de la
instrucción.
(2)
No hay una instrucción equivalente en texto estructurado. Use el operador en una expresión.
Usted puede comparar valores de diferentes tipos de datos como, por
ejemplo, valores de punto flotante (coma flotante) y valores enteros.
Para las instrucciones de lógica de escalera de relés, los tipos de datos
que aparecen en negrita indican tipos de datos óptimos. Las
instrucciones se ejecutan más rápidamente y requieren menos
memoria si todos los operandos de instrucción usan el mismo tipo de
datos óptimos, típicamente DINT o REAL.
205Publicación 1756-RM003K-ES-P – Julio 2008
205
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Comparar (CMP)
La instrucción CMP realiza una comparación de las operaciones
aritméticas que se especifican en la expresión.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Expression
SINT
inmediato
INT
tag
una expresión que consiste en tags y/o
valores inmediatos separados por
operadores.
DINT
REAL
cadena
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Texto estructurado
El texto estructurado no tiene una instrucción CMP, pero usted puede
lograr los mismos resultados usando una construcción IF...THEN y
una expresión.
IF BOOL_expression THEN
<statement>;
END_IF;
Consulte Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de construcciones y expresiones
en texto estructurado.
Descripción: Defina la expresión CMP mediante operadores, tags y valores
inmediatos. Use paréntesis ( ) para definir secciones de expresiones
más complejas.
La ejecución de una instrucción CMP es un poco más lenta y usa más
memoria que la ejecución de las otras instrucciones de comparación.
La ventaja de la instrucción CMP es que le permite introducir
expresiones complejas en una sola instrucción.
Indicadores de estado La instrucción CMP afecta los indicadores de estado aritmético si la
aritmético: expresión contiene un operador (por ejemplo, +, −, *, /) que afecta los
indicadores de estado aritmético.
Condiciones de fallo: ninguna
206
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
evalúe la expresión
la expresión es
verdadera
la condición de salida de
renglón se establece como
verdadera
la expresión es falsa
la condición de salida de
renglón se establece
como falsa
fin
post-escán
La condición de salida de renglón se establece como falsa.
Ejemplos: Si la instrucción CMP determina que la expresión es verdadera, la
condición de salida de renglón se establece como verdadera.
Si introduce una expresión sin un operador de comparación, tal como
value_1 + value_2 o value_1, la instrucción evalúa la expresión como:
Publicación 1756-RM003K-ES-P – Julio 2008
Si la expresión es
La condición de salida de renglón
se establece como
diferente de cero
verdadera
cero
falsa
207
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Expresiones CMP
Usted programa las expresiones en las instrucciones CMP de la misma
manera que las expresiones en las instrucciones FSC. Use las
siguientes secciones para obtener información sobre operadores
válidos, formato y orden de operación, que son comunes para ambas
instrucciones.
Operadores válidos
Operador:
Descripción
Óptimo
Operador:
Descripción
Óptimo
+
sumar
DINT, REAL
DEG
radianes a grados
DINT, REAL
-
restar/cambiar signo
DINT, REAL
FRD
BCD a entero
DINT
*
multiplicar
DINT, REAL
LN
logaritmo natural
REAL
/
dividir
DINT, REAL
LOG
logaritmo base 10
REAL
=
igual que
DINT, REAL
MOD
módulo de división
DINT, REAL
<
menor que
DINT, REAL
NOT
DINT
<=
menor o igual que
DINT, REAL
complemento a nivel
de bits
>
mayor que
DINT, REAL
OR
O a nivel de bits
DINT
>=
mayor o igual que
DINT, REAL
RAD
grados a radianes
DINT, REAL
<>
diferente de
DINT, REAL
SIN
seno
REAL
**
exponente (x a la y)
DINT, REAL
SQR
raíz cuadrada
DINT, REAL
ABS
valor absoluto
DINT, REAL
TAN
tangente
REAL
ACS
arco coseno
REAL
TOD
entero a BCD
DINT
AND
Y a nivel de bits
DINT
TRN
truncar
DINT, REAL
ASN
arco seno
REAL
XOR
O exclusivo a nivel de
bits
DINT
ATN
arco tangente
REAL
COS
coseno
REAL
208
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Expresiones de formato
Por cada operador que use en una expresión, usted tiene que
proporcionar uno o dos operandos (tags o valores inmediatos). Use la
siguiente tabla para formatear operadores y operandos dentro de una
expresión:
Para operadores
que operan en
Use este formato
Ejemplos
un operando
operador(operando)
ABS(tag_a)
dos operandos
operando_a operador
operando_b
• tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f /
tag_g)
Determine el orden de operación
Las operaciones que usted escribe en la expresión son realizadas por
la instrucción en un orden prescrito, no necesariamente en el orden
en que usted las escribe. Usted puede anular el orden de operación
agrupando términos dentro de paréntesis, forzando a la instrucción
para que realice una operación dentro del paréntesis antes de otras
operaciones.
Las operaciones de igual orden se realizan de izquierda a derecha.
Publicación 1756-RM003K-ES-P – Julio 2008
Orden
Operación
1.
()
2.
ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG,
RAD, SIN, SQR, TAN, TOD, TRN
3.
**
4.
− (cambiar signo), NOT
5.
*, /, MOD
6.
<, <=, >, >=, =
7.
− (restar), +
8.
AND
9.
XOR
10.
OR
209
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Use cadenas en una expresión
Use una expresión de texto estructurado o lógica de escalera de relés
para comparar tipos de datos de cadena. Para usar cadenas en una
expresión, siga estas pautas:
• Una expresión le permite comparar dos tags de cadena.
• Usted no puede introducir caracteres ASCII directamente en la
expresión.
• Sólo se permiten los siguientes operadores
Operador
Descripción
=
igual que
<
menor que
<=
menor o igual que
>
mayor que
>=
mayor o igual que
<>
diferente de
• Las cadenas son iguales si sus caracteres coinciden.
• Los caracteres ASCII permiten distinguir mayúsculas de
minúsculas. La “A” mayúscula ($41) es diferente a la “a”
minúscula ($61).
• Los valores hexadecimales de los caracteres determinan si una
cadena es mayor o menor que otra cadena. Para obtener el
código hexadecimal de un carácter, remítase a la contraportada
de este manual.
• Cuando las dos cadenas se clasifican como en un directorio
telefónico, el orden de las cadenas determina cuál es mayor.
m
e
n
o
r
210
m
a
y
o
r
Caracteres ASCII
Códigos
hexadecimales
1ab
$31$61$62
1b
$31$62
A
$41
AB
$41$42
B
$42
a
$61
ab
$61$62
AB < B
a>B
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Igual a (EQU)
Capítulo 5
La instrucción EQU determina si Source A es igual a Source B.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor que se compara con
Source B
INT
tag
DINT
REAL
cadena
Source B
SINT
inmediato
INT
tag
valor que se compara con
Source A
DINT
REAL
cadena
• Si usted introduce un tag SINT o INT, el valor se convierte en un
valor DINT mediante extensión de signo.
• Los valores REAL pocas veces son absolutamente iguales. Si
necesita determinar la igualdad de dos valores REAL, use la
instrucción LIM.
• Los tipos de datos de cadena son:
– tipo de datos STRING predeterminado
– cualquier tipo de datos nuevo que usted cree
• Para probar los caracteres de una cadena, introduzca un tag de
cadena tanto para Source A como para Source B.
Texto estructurado
IF sourceA = sourceB THEN
<statements>;
Use el signo igual “=” como operador dentro de una expresión. Esta
expresión evalúa si sourceA es igual que sourceB.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Publicación 1756-RM003K-ES-P – Julio 2008
211
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Bloque de funciones
Operando
Tipo
Formato
Descripción
EQU tag
FBD_COMPARE
estructura
estructura EQU
Estructura FBD_COMPARE
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
SourceA
REAL
Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB
REAL
Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
BOOL
Resultado de la instrucción. Es equivalente a la condición de salida de renglón de la
instrucción EQU de lógica de escalera de relés.
Descripción: Use la instrucción EQU para comparar dos números o dos cadenas de
caracteres ASCII. Cuando usted compara las cadenas:
• Las cadenas son iguales si sus caracteres coinciden.
• Los caracteres ASCII permiten distinguir mayúsculas de
minúsculas. La “A” mayúscula ($41) es diferente a la “a”
minúscula ($61).
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
212
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
Source A = Source B
sí
la condición de salida de
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
213
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Ejemplo: Si value_1 es igual a value_2, establezca light_a. Si value_1 es
diferente de value_2, borre light_a.
Lógica de escalera de relés
Texto estructurado
light_a := (value_1 = value_2);
Bloque de funciones
214
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Mayor o igual que (GEQ)
Capítulo 5
La instrucción GEQ determina si Source A es mayor o igual que
Source B.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor que se compara con Source B
INT
tag
DINT
REAL
cadena
Source B
SINT
inmediato
INT
tag
valor que se compara con Source A
DINT
REAL
cadena
• Si usted introduce un tag SINT o INT, el valor se convierte en un
valor DINT mediante extensión de signo.
• Los tipos de datos de cadena son:
– tipo de datos STRING predeterminado
– cualquier tipo de datos nuevo que usted cree
• Para probar los caracteres de una cadena, introduzca un tag de
cadena tanto para Source A como para Source B.
Texto estructurado
IF sourceA >= sourceB THEN
<statements>;
Use los signos mayor que e igual “>=” adyacentes como operador
dentro de una expresión. Esta expresión evalúa si sourceA es mayor o
igual que sourceB.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Publicación 1756-RM003K-ES-P – Julio 2008
215
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Bloque de funciones
Operando
Tipo
Formato
Descripción
GEQ tag
FBD_COMPARE
estructura
estructura GEQ
Estructura FBD_COMPARE
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
SourceA
REAL
Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB
REAL
Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
BOOL
Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la
instrucción GEQ de lógica de escalera de relés.
Descripción: La instrucción GEQ determina si Source A es mayor o igual que
Source B.
Cuando usted compara las cadenas:
• Los valores hexadecimales de los caracteres determinan si una
cadena es mayor o menor que otra cadena. Para obtener el
código hexadecimal de un carácter, remítase a la contraportada
de este manual.
• Cuando las dos cadenas se clasifican como en un directorio
telefónico, el orden de las cadenas determina cuál es mayor.
m
e
n
o
r
216
m
a
y
o
r
Caracteres ASCII
Códigos
hexadecimales
1ab
$31$61$62
1b
$31$62
A
$41
AB
$41$42
B
$42
a
$61
ab
$61$62
AB < B
a>B
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
Source A ≥ Source B
sí
la condición de salida de
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
217
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Ejemplo: Si value_1 es mayor o igual que value_2, establezca light_b. Si
value_1 es menor que value_2, borre light_b.
Lógica de escalera de relés
Texto estructurado
light_b := (value_1 >= value_2);
Bloque de funciones
218
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Mayor que (GRT)
Capítulo 5
La instrucción GRT determina si Source A es mayor que Source B.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor que se compara con Source B
INT
tag
DINT
REAL
cadena
Source B
SINT
inmediato
INT
tag
valor que se compara con Source A
DINT
REAL
cadena
• Si usted introduce un tag SINT o INT, el valor se convierte en un
valor DINT mediante extensión de signo.
• Los tipos de datos de cadena son:
– tipo de datos STRING predeterminado
– cualquier tipo de datos nuevo que usted cree
• Para probar los caracteres de una cadena, introduzca un tag de
cadena tanto para Source A como para Source B.
Texto estructurado
IF sourceA > sourceB THEN
<statements>;
Use el signo mayor que “>” como un operador dentro de una
expresión. Esta expresión evalúa si sourceA es mayor que sourceB.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
Operando
Tipo
Formato
Descripción
GRT tag
FBD_COMPARE
estructura
estructura GRT
219
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Estructura FBD_COMPARE
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
SourceA
REAL
Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB
REAL
Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
BOOL
Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la
instrucción GRT de lógica de escalera de relés.
Descripción: La instrucción GRT determina si Source A es mayor que Source B.
Cuando usted compara cadenas:
• Los valores hexadecimales de los caracteres determinan si una
cadena es mayor o menor que otra cadena. Para obtener el
código hexadecimal de un carácter, remítase a la contraportada
de este manual.
• Cuando las dos cadenas se clasifican como en un directorio
telefónico, el orden de las cadenas determina cuál es mayor.
m
e
n
o
r
m
a
y
o
r
Caracteres ASCII
Códigos
hexadecimales
1ab
$31$61$62
1b
$31$62
A
$41
AB
$41$42
B
$42
a
$61
ab
$61$62
AB < B
a>B
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
220
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
Source A > Source B
sí
la condición de salida de
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
221
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Ejemplo: Si value_1 es mayor que value_2, establezca light_1. Si value_1 es
menor o igual que value_2, borre light_1.
Lógica de escalera de relés
Texto estructurado
light_1 := (value_1 > value_2);
Bloque de funciones
222
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Menor o igual que (LEQ)
Capítulo 5
La instrucción LEQ determina si Source A es menor o igual que
Source B.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor que se compara con Source B
INT
tag
DINT
REAL
cadena
Source B
SINT
inmediato
INT
tag
valor que se compara con Source A
DINT
REAL
cadena
• Si usted introduce un tag SINT o INT, el valor se convierte en un
valor DINT mediante extensión de signo.
• Los tipos de datos de cadena son:
– tipo de datos STRING predeterminado
– cualquier tipo de datos nuevo que usted cree
• Para probar los caracteres de una cadena, introduzca un tag de
cadena tanto para Source A como para Source B.
Texto estructurado
IF sourceA <= sourceB THEN
<statements>;
Use los signos menor que e igual “<=” adyacentes como operador
dentro de una expresión. Esta expresión evalúa si sourceA es menor o
igual que sourceB.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Publicación 1756-RM003K-ES-P – Julio 2008
223
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Bloque de funciones
Operando
Tipo
Formato
Descripción
LEQ tag
FBD_COMPARE
estructura
estructura LEQ
Estructura FBD_COMPARE
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
SourceA
REAL
Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB
REAL
Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
BOOL
Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la
instrucción LEQ de lógica de escalera de relés.
Descripción: La instrucción LEQ determina si Source A es menor o igual que
Source B.
Cuando usted compara las cadenas:
• Los valores hexadecimales de los caracteres determinan si una
cadena es mayor o menor que otra cadena. Para obtener el
código hexadecimal de un carácter, remítase a la contraportada
de este manual.
• Cuando las dos cadenas se clasifican como en un directorio
telefónico, el orden de las cadenas determina cuál es mayor.
m
e
n
o
r
224
m
a
y
o
r
Caracteres ASCII
Códigos
hexadecimales
1ab
$31$61$62
1b
$31$62
A
$41
AB
$41$42
B
$42
a
$61
ab
$61$62
AB < B
a>B
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
Source A ≤ Source B
sí
la condición de salida de
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
225
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Ejemplo: Si value_1 es menor o igual que value_2, establezca light_2. Si
value_1 es mayor que value_2, borre light_2.
Lógica de escalera de relés
Texto estructurado
light_2 := (value_1 <= value_2);
Bloque de funciones
226
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Menor que (LES)
Capítulo 5
La instrucción LES determina si Source A es menor que Source B.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor que se compara con Source B
INT
tag
DINT
REAL
cadena
Source B
SINT
inmediato
INT
tag
valor que se compara con Source A
DINT
REAL
cadena
• Si usted introduce un tag SINT o INT, el valor se convierte en un
valor DINT por la extensión del signo.
• Los tipos de datos de cadena son:
– tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
• Para probar los caracteres de una cadena, introduzca un tag de
cadena tanto para Source A como para Source B.
Texto estructurado
IF sourceA < sourceB THEN
<statements>;
Use el signo menor que “<” como un operador dentro de una
expresión. Esta expresión evalúa si sourceA es menor que sourceB.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
Operando
Tipo
Formato
Descripción
LES tag
FBD_COMPARE
estructura
estructura LES
227
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Estructura FBD_COMPARE
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
SourceA
REAL
Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB
REAL
Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
BOOL
Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la
instrucción LES de lógica de escalera de relés.
Descripción: La instrucción LES determina si Source A es menor que Source B.
Cuando usted compara las cadenas:
• Los valores hexadecimales de los caracteres determinan si una
cadena es mayor o menor que otra cadena. Para obtener el
código hexadecimal de un carácter, remítase a la contraportada
de este manual.
• Cuando las dos cadenas se clasifican como en un directorio
telefónico, el orden de las cadenas determina cuál es mayor.
m
e
n
o
r
m
a
y
o
r
Caracteres ASCII
Códigos
hexadecimales
1ab
$31$61$62
1b
$31$62
A
$41
AB
$41$42
B
$42
a
$61
ab
$61$62
AB < B
a>B
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
228
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
Source A < Source B
sí
la condición de salida de
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición:
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn es falsa
EnableOut se borra.
EnableIn es verdadera
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
229
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Ejemplo: Si value_1 es menor que value_2, establezca light_3. Si value_1 es
mayor o igual que value_2, borre light_3.
Lógica de escalera de relés
Texto estructurado
light_3 := (value_1 < value_2);
Bloque de funciones
230
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Límite (LIM)
Capítulo 5
La instrucción LIM determina si el valor de prueba se encuentra
dentro del rango de los límites inferior y superior.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Low limit
SINT
inmediato
valor del límite inferior
INT
tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Test
SINT
inmediato
INT
tag
valor que se prueba
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
High limit
SINT
inmediato
INT
tag
valor del límite superior
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Texto estructurado
El texto estructurado no cuenta con la instrucción LIM, pero se
pueden lograr los mismos resultados usando texto estructurado.
IF (LowLimit <= HighLimit AND
(Test >= LowLimit AND Test <= HighLimit)) OR
(LowLimit >= HighLimit AND
(Test <= LowLimit OR Test >= HighLimit)) THEN
<statement>;
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
231
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Bloque de funciones
Operando
Tipo
Formato
Descripción
LIM tag
FBD_LIMIT
estructura
estructura LIM
Estructura FBD_LIMIT
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta según lo descrito en Ejecución.
La opción predeterminada es establecido.
LowLimit
REAL
Valor del límite inferior
Válido = cualquier valor con punto flotante (coma flotante)
Test
REAL
Valor que se compara con límites
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
BOOL
Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la
instrucción LIM de lógica de escalera de relés.
HighLimit
REAL
Valor del límite superior
Válido = cualquier valor con punto flotante (coma flotante)
Descripción: La instrucción LIM determina si el valor de prueba se encuentra
dentro del rango de los límites inferior y superior.
Si es límite
inferior
Y el valor de prueba es
La condición de salida de
renglón se establece como
≤ Límite superior
igual a o está entre los límites
verdadera
diferente o está fuera de los
límites
falsa
igual a o está fuera de los
límites
verdadera
diferente o está dentro de los
límites
falsa
≥ Límite superior
232
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Los números enteros con signo saltan (“roll over”) del número
positivo máximo al número negativo máximo cuando se establece el
bit más significativo. Por ejemplo, en los números enteros de 16 bits
(tipo INT), el número entero positivo máximo es 32,767, el cual se
representa en hexadecimal como 16#7FFF (todos los bits del 0 al 14
están en uno). Si usted incrementa dicho número en uno, el resultado
es 16#8000 (el bit 15 se pone en uno). Para enteros con signo, el
hexadecimal 16#8000 es igual a -32,768 en decimal. Incrementar
desde este punto hasta que los 16 bits se pongan en uno, termina en
16#FFFF, que es igual a -1 en decimal.
Esto puede mostrarse como línea circular de números (vea los
siguientes diagramas). La instrucción LIM comienza en el límite
inferior e se va incrementando en sentido horario hasta llegar al límite
superior. Cualquier valor de prueba que se encuentre en el rango en
sentido horario desde el límite inferior al límite superior establece en
verdadera la condición de salida del renglón. Cualquier valor de
prueba que se encuentre en el rango en sentido horario desde el
límite superior al límite inferior establece en falsa la condición de
salida del renglón.
≥ Límite superior
Límite inferior ≤ Límite superior
Límite inferior
La instrucción es verdadera si el valor de prueba se encuentra entre los límites inferior y
superior, o coincide con uno de dichos límites.
La instrucción es verdadera si el valor de prueba se encuentra fuera de los
límites inferior y superior, o coincide con uno de dichos límites.
0
−1
0
+1
−1
+1
límite inferior
límite superior
límite superior
−(n+1)
+n
n = valor máximo
límite inferior
−(n+1)
+n
n = valor máximo
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
233
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
evaluar el límite
la comparación es
verdadera
la condición de salida de
renglón se establece
como verdadera
la comparación es falsa
la condición de salida de
renglón se establece
como falsa
fin
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se
actualizan.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
234
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Ejemplo 1: Límite inferior ≤ Límite superior:
Cuando 0 ≤ value ≥ 100, establezca light_1. Si value < 0 or value
> 100, borre light_1.
Lógica de escalera de relés
Texto estructurado
IF (value <= 100 AND(value >= 0 AND value <= 100)) OR
(value >= 100 AND value <= 0 OR value >= 100)) THEN
light_1 := 1;
ELSE
light_1 := 0;
END_IF;
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
235
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Ejemplo 2: Límite inferior ≥ Límite superior:
Cuando value ≥ 0 o value ≤ −100, establezca light_1. Si value < 0 o
value >−100, borre light_1.
Lógica de escalera de relés
Texto estructurado
IF (0 <= -100 AND value >= 0 AND value <= -100)) OR
(0 >= -100 AND(value <= 0 OR value >= -100)) THEN
light_1 := 1;
ELSE
light_1 := 0;
END_IF;
Bloque de funciones
236
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Máscara igual que (MEQ)
Capítulo 5
La instrucción MEQ pasa los valores Source y Compare por una
máscara y compara los resultados.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
valor que se compara con Compare
INT
tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Mask
SINT
inmediato
INT
tag
define qué bits se deben bloquear o pasar
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Compare
SINT
inmediato
INT
tag
valor que se compara con Source
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Texto estructurado
El texto estructurado no cuenta con la instrucción MEQ, pero se
pueden lograr los mismos resultados usando texto estructurado.
IF (Source AND Mask) = (Compare AND Mask) THEN
<statement>;
END_IF;
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
Operando
Tipo
Formato
Descripción
MEQ tag
FBD_MASK_EQUAL
estructura
estructura MEQ
237
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Estructura FBD_MASK_EQUAL
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta según lo descrito en Ejecución.
La opción predeterminada es establecido.
Source
DINT
Valor que se compara con Compare.
Válido = cualquier número entero
Mask
DINT
Define qué bits se deben bloquear (enmascarar).
Válido = cualquier número entero
Compare
DINT
Valor de comparación.
Válido = cualquier número entero
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
BOOL
Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la
instrucción MEQ de lógica de escalera de relés.
Descripción: Un número “1” en la máscara significa que se pasa el bit de datos. Un
número “0” en la máscara significa que se bloquea el bit de datos.
Normalmente, los valores Source, Mask y Compare son del mismo
tipo de datos.
Si mezcla tipos de datos enteros, la instrucción llena con ceros los bits
superiores de los tipos de datos enteros menores para que tengan el
mismo tamaño que el tipo de datos mayores.
Introducción de un valor de máscara inmediato
Cuando usted introduce una máscara, el software de programación
cambia de manera predeterminada a valores decimales. Si desea
introducir una máscara usando otro formato, preceda el valor con el
prefijo correcto.
Prefijo
Descripción
16#
hexadecimal
por ejemplo; 16#0F0F
8#
octal
por ejemplo; 8#16
2#
binario
por ejemplo; 2#00110011
238
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
origen
enmascarado =
comparación
enmascarada
sí
la condición de salida de
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se
actualizan.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
239
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Ejemplo 1: Si value_1 enmascarado es igual a value_2 enmascarado, establezca
light_1. Si value_1 enmascarado es diferente de value_2 enmascarado,
borre light_1. Este ejemplo muestra que los valores enmascarados son
iguales. Un número 0 en la máscara impide que la instrucción
compare el bit (representado por x en el ejemplo).
value_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
value_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0
mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
value_1 0 1 0 1 0 1 0 1 1 1 1 1 X X X X
enmascarado
value_2 0 1 0 1 0 1 0 1 1 1 1 1 X X X X
enmascarado
Lógica de escalera de relés
Texto estructurado
light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));
Bloque de funciones
240
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Ejemplo 2: Si value_1 enmascarado es igual a value_2 enmascarado, establezca
light_1. Si value_1 enmascarado es diferente de value_2 enmascarado,
borre light_1. Este ejemplo muestra que los valores enmascarados son
diferentes. Un número 0 en la máscara impide que la instrucción
compare el bit (representado por x en el ejemplo).
value_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
value_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0
mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
value_1 X X X X X X X X X X X X 1 1 1 1
enmascarado
value_2 X X X X X X X X X X X X 0 0 0 0
enmascarado
Lógica de escalera de relés
Texto estructurado
light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
241
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Diferente de (NEQ)
La instrucción NEQ determina si Source A es diferente de Source B.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor que se compara con Source B
INT
tag
DINT
REAL
cadena
Source B
SINT
inmediato
INT
tag
valor que se compara con Source A
DINT
REAL
cadena
• Si usted introduce un tag SINT o INT, el valor se convierte en un
valor DINT mediante extensión de signo.
• Los tipos de datos de cadena son:
– tipo de datos STRING predeterminado
– cualquier tipo de datos nuevo que usted cree
• Para probar los caracteres de una cadena, introduzca un tag de
cadena tanto para Source A como para Source B.
Texto estructurado
IF sourceA <> sourceB THEN
<statements>;
Use los signos menor que y mayor que “<>” juntos como operador
dentro de una expresión. Esta expresión evalúa si sourceA es
diferente de sourceB.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
242
Operando
Tipo
Formato
Descripción
NEQ tag
FBD_COMPARE
estructura
estructura NEQ
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Estructura FBD_COMPARE
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
SourceA
REAL
Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB
REAL
Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
BOOL
Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la
instrucción NEQ de lógica de escalera de relés.
Descripción: La instrucción NEQ determina si Source A es diferente de Source B.
Cuando usted compara las cadenas:
• Las cadenas son diferentes si algunos de sus caracteres no
coinciden.
• Los caracteres ASCII permiten distinguir mayúsculas de
minúsculas. Una “A” mayúscula ($41) es diferente a una “a”
minúscula ($61).
m
e
n
o
r
m
a
y
o
r
Caracteres ASCII
Códigos
hexadecimales
1ab
$31$61$62
1b
$31$62
A
$41
AB
$41$42
B
$42
a
$61
ab
$61$62
AB < B
a>B
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
243
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
Source A = Source B
sí
la condición de salida de
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
244
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Capítulo 5
Ejemplo: Si value_1 es diferente de value_2, establezca light_4. Si value_1 es
igual a value_2, borre light_4.
Lógica de escalera de relés
Texto estructurado
light_4 := (value_1 <> value_2);
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
245
Capítulo 5
Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Notas:
246
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
6
Instrucciones de cálculo/matemáticas
(CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Introducción
Si desea
Las instrucciones de cálculo/matemáticas evalúan las operaciones
aritméticas usando una expresión o una instrucción aritmética
específica.
Use esta instrucción
Disponible en estos lenguajes
Vea la página
evaluar una expresión
CPT
lógica de escalera de relés
texto estructurado(1)
248
sumar dos valores
ADD
lógica de escalera de relés
texto estructurado(2)
bloque de funciones
252
restar dos valores
SUB
lógica de escalera de relés
texto estructurado(2)
bloque de funciones
255
multiplicar dos valores
MUL
lógica de escalera de relés
texto estructurado(2)
bloque de funciones
258
dividir dos valores
DIV
lógica de escalera de relés
texto estructurado(2)
bloque de funciones
261
determinar el residuo después de dividir un
valor entre otro
MOD
lógica de escalera de relés
texto estructurado(2)
bloque de funciones
266
calcular la raíz cuadrada de un valor
SQR
lógica de escalera de relés
texto estructurado
bloque de funciones
270
SQRT(3)
tomar el signo opuesto de un valor.
NEG
lógica de escalera de relés
texto estructurado(2)
bloque de funciones
274
hallar el valor absoluto de un valor.
ABS
lógica de escalera de relés
texto estructurado
bloque de funciones
277
(1)
No hay una instrucción equivalente en texto estructurado. Use otra programación en texto estructurado para lograr el mismo resultado. Vea la descripción de la
instrucción.
(2)
No hay una instrucción equivalente en texto estructurado. Use el operador en una expresión.
(3)
Texto estructurado solamente.
Usted puede mezclar diferentes tipos de datos, pero puede producirse
pérdida de exactitud y error de redondeo, y la instrucción requerirá
más tiempo para ejecutarse. Verifique el bit S:V para determinar si se
truncó el resultado.
Para las instrucciones de lógica de escalera de relés, los tipos de datos
que aparecen en negrita indican tipos de datos óptimos. Las
instrucciones se ejecutan más rápidamente y requieren menos
247Publicación 1756-RM003K-ES-P – Julio 2008
247
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
memoria si todos los operandos de instrucción usan el mismo tipo de
datos óptimos, típicamente DINT o REAL.
Calcular (CPT)
La instrucción CPT realiza las operaciones aritméticas que usted define
en la expresión.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato:
Descripción
Destination
SINT
INT
DINT
REAL
tag
tag para almacenar el resultado
Expression
SINT
INT
DINT
REAL
inmediato
una expresión que consiste en tags y/o
valores inmediatos separados por operadores
tag
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Texto estructurado
El texto estructurado no tiene una instrucción CPT, pero usted puede
lograr los mismos resultados usando una asignación y una expresión.
destino := numeric_expresion;
Consulte Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de asignaciones y expresiones
en texto estructurado.
Descripción: La instrucción CPT realiza las operaciones aritméticas que usted define
en la expresión. Cuando se habilita, la instrucción CPT evalúa la
expresión y coloca el resultado en Destination.
La ejecución de una instrucción CPT es un poco más lenta y usa más
memoria que la ejecución de las otras instrucciones de cálculo/
matemáticas. La ventaja de la instrucción CPT es que le permite
introducir expresiones complejas en una sola instrucción.
SUGERENCIA
No hay límite en la longitud de una expresión.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
248
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La instrucción evalúa la expresión y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Ejemplo 1: Cuando se habilita, la instrucción CPT evalúa value_1 multiplicado
por 5, divide dicho resultado entre el resultado de value_2 dividido
entre 7 y coloca el resultado final en result_1.
Ejemplo 2: Cuando se habilita, la instrucción CPT trunca float_value_1 y
float_value_2, eleva el valor truncado float_value_2 al cuadrado,
divide el valor truncado float_value_1 entre dicho resultado y
almacena el residuo después de la división en float_value_result_cpt.
Publicación 1756-RM003K-ES-P – Julio 2008
249
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Operadores válidos
Operador
Descripción
Óptimo
Operador
Descripción
Óptimo
+
sumar
DINT, REAL
LOG
logaritmo base 10
REAL
-
restar/cambiar signo
DINT, REAL
MOD
módulo de división
DINT, REAL
*
multiplicar
DINT, REAL
NOT
DINT
/
dividir
DINT, REAL
complemento a nivel
de bits
**
exponente (x a la y)
DINT, REAL
OR
O a nivel de bits
DINT
ABS
valor absoluto
DINT, REAL
RAD
grados a radianes
DINT, REAL
ACS
arco coseno
REAL
SIN
seno
REAL
AND
Y a nivel de bits
DINT
SQR
raíz cuadrada
DINT, REAL
ASN
arco seno
REAL
TAN
tangente
REAL
ATN
arco tangente
REAL
TOD
entero a BCD
DINT
COS
coseno
REAL
TRN
truncar
DINT, REAL
DEG
radianes a grados
DINT, REAL
XOR
O exclusivo a nivel de
bits
DINT
FRD
BCD a entero
DINT
LN
logaritmo natural
REAL
Expresiones de formato
Por cada operador que use en una expresión, usted tiene que
proporcionar uno o dos operandos (tags o valores inmediatos). Use la
siguiente tabla para formatear operadores y operandos dentro de una
expresión:
Para operadores
que operan en:
Use este formato:
Ejemplos:
un operando
operador(operando)
ABS(tag_a)
dos operandos
operando_a operador
operando_b
• tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f /
tag_g)
250
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Determine el orden de operación
Las operaciones que usted escribe en la expresión son realizadas por
la instrucción en un orden prescrito, que no es necesariamente el
orden en que usted las escribe. Usted puede anular el orden de
operación agrupando términos dentro de paréntesis, forzando a la
instrucción para que realice una operación dentro del paréntesis antes
de otras operaciones.
Las operaciones de igual orden se realizan de izquierda a derecha.
Publicación 1756-RM003K-ES-P – Julio 2008
Orden:
Operación:
1.
()
2.
ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG,
RAD, SIN, SQR, TAN, TOD, TRN
3.
**
4.
− (cambiar signo), NOT
5.
*, /, MOD
6.
− (restar), +
7.
AND
8.
XOR
9.
OR
251
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Sumar (ADD)
La instrucción ADD suma Source A con Source B y coloca el resultado
en Destination.
Operandos:
Lógica de escalera de relés
Operando:
Tipo:
Formato:
Descripción:
Source A
SINT
inmediato
valor que se suma a Source B
INT
tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Source B
SINT
inmediato
INT
tag
valor que se suma a Source A
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceA + sourceB;
Use el signo más “+” como operador dentro de una expresión. Esta
expresión suma sourceA a sourceB y almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
252
Operando:
Tipo:
Formato:
Descripción:
ADD tag
FBD_MATH
estructura
estructura ADD
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Estructura FBD_MATH
Parámetro de
entrada:
Tipo de datos:
Descripción:
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
SourceA
REAL
valor que se suma a SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB
REAL
valor que se suma a SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de
salida:
Tipo de datos:
Descripción:
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: La instrucción ADD suma Source A con Source B y coloca el resultado
en Destination.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición:
Acción:
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
Destination = Source A + Source B
La condición de salida de renglón se establece como verdadera.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
253
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Bloque de funciones
Condición:
Acción:
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo: Sume float_value_1 a float_value_2 y coloque el resultado en
add_result.
Lógica de escalera de relés
Texto estructurado
add_result := float_value_1 + float_value_2;
Bloque de funciones
254
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Restar (SUB)
Capítulo 6
La instrucción SUB resta Source B de Source A y coloca el resultado
en Destination.
Operandos:
Lógica de escalera de relés
Operando:
Tipo:
Formato:
Descripción:
Source A
SINT
inmediato
valor del cual restar Source B
INT
tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Source B
SINT
inmediato
INT
tag
valor que se resta de Source A
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceA - sourceB;
Use el signo menos “−” como operador en una expresión. Esta
expresión resta sourceB de sourceA y almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
Operando:
Tipo:
Formato:
Descripción:
SUB tag
FBD_MATH
estructura
estructura SUB
255
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Estructura FBD_MATH
Parámetro de
entrada:
Tipo de datos:
Descripción:
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
SourceA
REAL
Valor del cual restar SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB
REAL
Valor que se resta de SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de
salida:
Tipo de datos:
Descripción:
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: La instrucción SUB resta Source B de Source A y coloca el resultado
en Destination.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición:
Acción:
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
Destination = Source B – Source A
La condición de salida de renglón se establece como verdadera.
post-escán
256
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Bloque de funciones
Condición:
Acción:
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo: Reste float_value_2 de float_value_1 y coloque el resultado en
subtract_result.
Lógica de escalera de relés
Texto estructurado
subtract_result := float_value_1 - float_value_2;
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
257
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Multiplicar (MUL)
La instrucción MUL multiplica Source A por Source B y coloca el
resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor del multiplicando
INT
tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Source B
SINT
inmediato
INT
tag
valor del multiplicador
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceA * sourceB;
Use el signo de multiplicación “∗” como operador en una expresión.
Esta expresión multiplica sourceA por sourceB y almacena el resultado
en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
258
Operando
Tipo
Formato
Descripción
MUL tag
FBD_MATH
estructura
estructura MUL
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Estructura FBD_MATH
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source A
REAL
Valor del multiplicando
Válido = cualquier valor con punto flotante (coma flotante)
Source B
REAL
Valor del multiplicador
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: La instrucción MUL multiplica Source A por Source B y coloca el
resultado en Destination.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
Destination = Source B x Source A
La condición de salida de renglón se establece como verdadera.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
259
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo: Multiplique float_value_1 por float_value_2 y coloque el resultado en
multiply_result.
Lógica de escalera de relés
Texto estructurado
multiply_result := float_value_1 ∗ float_value_2;
Bloque de funciones
260
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Dividir (DIV)
Capítulo 6
La instrucción DIV divide Source A entre Source B y coloca el
resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor del dividendo
INT
tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Source B
SINT
inmediato
INT
tag
valor del divisor
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceA / sourceB;
Use el signo de dividir “/” como operador en una expresión. Esta
expresión divide sourceA entre sourceB y almacena el resultado en
dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Publicación 1756-RM003K-ES-P – Julio 2008
261
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Bloque de funciones
Operando
Tipo
Formato
Descripción
DIV tag
FBD_MATH
estructura
estructura DIV
Estructura FBD_MATH
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source A
REAL
Valor del dividendo.
Válido = cualquier valor con punto flotante (coma flotante)
Source B
REAL
Valor del divisor.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: Si el destino no es un tipo REAL, la instrucción maneja la porción
fraccionaria del resultado de la siguiente manera:
Si Source A
Entonces la porción
fraccionaria del
resultado
y Source B no son REAL se trunca
o Source B es REAL
262
se redondea
Ejemplo
Source A
DINT
5
Source B
DINT
3
Destination
DINT
1
Source A
REAL
5.0
Source B
DINT
3
Destination
DINT
2
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Si Source B (el divisor) es cero:
• se produce un fallo menor
– Tipo 4: fallo del programa
– Código 4: overflow aritmético
• el destino se establece de la siguiente manera:
Si Source B es cero y:
Y el destino es un:
Y el resultado es:
todos los operandos son números
enteros (SINT, INT o DINT)
por lo menos un operando es REAL
Entonces el destino se
establece en:
Source A
SINT, INT o DINT
REAL
positivo
-1
negativo
0
positivo
1.$ (infinito positivo)
negativo
-1.$ (infinito negativo)
Para detectar una posible división entre cero, examine el fallo menor
(S:MINOR). Consulte el documento Logix5000 Controllers Common
Procedures, publicación 1756-PM001.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Se produce un fallo
menor si
Tipo de fallo
Código de fallo
el divisor es cero
4
4
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
Destination = Source A/Source B
La condición de salida de renglón se establece como verdadera.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
263
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo 1: Dividir float_value_1 entre float_value_2 y coloque el resultado en
divide_result.
Lógica de escalera de relés
Texto estructurado
divide_result := float_value_1 / float_value_2;
Bloque de funciones
264
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Ejemplo 2: Las instrucciones DIV y MOV funcionan juntas para dividir dos
enteros, redondear el resultado y colocarlo en un tag de número
entero:
• La instrucción DIV divide dint_a entre dint_b.
• Para redondear el resultado, Destination es un tag REAL. (Si el
destino fuera un tag entero (SINT, INT o DINT), la instrucción
truncaría el resultado).
• La instrucción MOV traslada el resultado redondeado
(real_temp) de la DIV a divide_result_rounded.
• Puesto que divide_result_rounded es un tag DINT, el valor de
real_temp se redondea y se coloca en el destino DINT.
Lógica de escalera de relés
43009
Publicación 1756-RM003K-ES-P – Julio 2008
265
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Módulo (MOD)
La instrucción MOD divide Source A entre Source B y coloca el
residuo en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor del dividendo
INT
tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Source B
SINT
inmediato
INT
tag
valor del divisor
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceA MOD sourceB;
Use MOD como operador en una expresión. Esta expresión divide
sourceA entre sourceB y almacena el residuo en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
266
Operando
Tipo
Formato
Descripción
MOD tag
FBD_MATH
estructura
estructura MOD
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Estructura FBD_MATH
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source A
REAL
Valor del dividendo.
Válido = cualquier valor con punto flotante (coma flotante)
Source B
REAL
Valor del divisor.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: Si Source B (el divisor) es cero:
• se produce un fallo menor
– Tipo 4: fallo del programa
– Código 4: overflow aritmético
• el destino se establece de la siguiente manera:
Si Source B es cero y:
Y el destino es un:
Y el resultado es:
todos los operandos son números
enteros (SINT, INT o DINT)
por lo menos un operando es REAL
Entonces el destino se
establece en:
Source A
SINT, INT o DINT
REAL
positivo
-1
negativo
0
positivo
1.$ (infinito positivo)
negativo
-1.$ (infinito negativo)
Para detectar una posible división entre cero, examine el fallo menor
(S:MINOR). Consulte el documento Logix5000 Controllers Common
Procedures, publicación 1756-PM001.
Publicación 1756-RM003K-ES-P – Julio 2008
267
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Se produce un fallo
menor si
Tipo de fallo
Código de fallo
el divisor es cero
4
4
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
Destination = Source A – ( TRN ( Source A/Source B ) * Source B )
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
post-escán
Ninguna.
268
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Ejemplo: Divida dividend entre divisor y coloque el residuo en remainder. En
este ejemplo, tres cabe tres veces dentro de 10, y arroja un residuo de
uno.
Lógica de escalera de relés
Texto estructurado
residuo := dividendo MOD divisor;
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
269
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Raíz cuadrada (SQR)
La instrucción SQR calcula la raíz cuadrada de Source y coloca el
resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
halla la raíz cuadrada de este valor
INT
tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := SQRT(source);
Use SQRT como función. Esta expresión calcula la raíz cuadrada de
source y almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
270
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Bloque de funciones
Operando
Tipo
Formato
Descripción
SQR tag
FBD_MATH_ADVANCED
estructura
estructura SQR
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Halla la raíz cuadrada de este valor.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: Si Destination no es REAL, la instrucción maneja la porción
fraccionaria del resultado de la siguiente manera:
Si Source
Entonces la porción
fraccionaria del
resultado
Ejemplo
no es REAL
se trunca
Source
DINT
3
Destination
DINT
1
Source
REAL
3.0
Destination
DINT
2
es REAL
se redondea
Si Source es negativo, la instrucción toma el valor absoluto de Source
antes de calcular la raíz cuadrada.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
271
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
Destination =
Source
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
272
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Ejemplo: Calcule la raíz cuadrada de value_1 y coloque el resultado en
sqr_result.
Lógica de escalera de relés
Texto estructurado
sqr_result := SQRT(value_1);
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
273
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Cambiar signo (NEG)
La instrucción NEG cambia el signo de Source y coloca el resultado en
Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
valor cuyo signo se cambia
INT
tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := -source;
Use el signo menos “−” como operador en una expresión. La
expresión cambia el signo de source y almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
274
Operando
Tipo
Formato
Descripción
NEG tag
FBD_MATH_ADVANCED
estructura
estructura NEG
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Estructura FBD_MATH
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
la opción predeterminada es establecido
Source
REAL
Valor cuyo signo se cambia.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: Si usted cambia el signo de un valor negativo, el resultado es positivo.
Si usted cambia el signo de un valor positivo, el resultado es negativo.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
Destination = 0 − Source
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
275
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Ejemplo: Cambie el signo de value_1 y coloque el resultado en negate_result.
Lógica de escalera de relés
Texto estructurado
negate_result := -value_1;
Bloque de funciones
276
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Valor absoluto (ABS)
Capítulo 6
La instrucción ABS toma el valor absoluto de Source y coloca el
resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
valor del cual hallar el valor absoluto
INT
tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := ABS(source);
Use ABS como función. Esta expresión calcula el valor absoluto de
source y almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
Operando
Tipo
Formato
Descripción
ABS tag
FBD_MATH_ADVANCED
estructura
estructura ABS
277
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Valor del cual hallar el valor absoluto.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: La instrucción ABS toma el valor absoluto de Source y coloca el
resultado en Destination.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
Destination = | Source |
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
278
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Capítulo 6
Ejemplo: Coloque el valor absoluto de value_1 en value_1_absolute. En este
ejemplo, el valor absoluto de cuatro negativo es cuatro positivo.
Lógica de escalera de relés
Texto estructurado
value_1_absolute := ABS(value_1);
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
279
Capítulo 6
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Notas:
280
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
7
Instrucciones de movimiento/lógicas
(MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT,
BAND, BOR, BXOR, BNOT)
Introducción
Usted puede mezclar diferentes tipos de datos, pero puede producirse
pérdida de exactitud y error de redondeo, y la instrucción requiere
más tiempo para ejecutarse. Verifique el bit S:V para determinar si se
truncó el resultado.
Para las instrucciones de lógica de escalera de relés, los tipos de datos
que aparecen en negrita indican tipos de datos óptimos. Las
instrucciones se ejecutan más rápidamente y requieren menos
memoria si todos los operandos de instrucción usan el mismo tipo de
datos óptimos, típicamente DINT o REAL.
Las instrucciones de movimiento modifican y mueven bits.
Si desea
copiar un valor
Use esta instrucción
MOV
Disponible en estos lenguajes
lógica de escalera de relés
Vea la página
283
texto estructurado(1)
copiar una parte específica de un número
entero
MVM
lógica de escalera de relés
285
copiar una parte específica de un número
entero en el bloque de funciones
MVMT
texto estructurado
288
bloque de funciones
mover bits dentro de un número entero o entre
números enteros
BTD
lógica de escalera de relés
292
mover bits dentro de un número entero o entre
números enteros en el bloque de funciones
BTDT
texto estructurado
295
bloque de funciones
borrar un valor
CLR
texto estructurado(1)
298
lógica de escalera de relés
reacomodar los bytes de un tag INT, DINT o
REAL
SWPB
lógica de escalera de relés
300
texto estructurado
(1)
No hay una instrucción equivalente en texto estructurado. Use otra programación en texto estructurado para lograr el mismo resultado. Vea la descripción de la
instrucción.
281Publicación 1756-RM003K-ES-P – Julio 2008
281
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Las instrucciones lógicas realizan operaciones con los bits.
Si desea:
Use esta instrucción:
operación Y a nivel de bits
Bitwise AND
Disponible en estos lenguajes
&(1)
lógica de escalera de relés
Vea la página
304
texto estructurado(2)
bloque de funciones
operación O a nivel de bits
Bitwise OR
lógica de escalera de relés
307
texto estructurado(2)
bloque de funciones
operación O exclusivo a nivel de bits
Bitwise XOR
lógica de escalera de relés
310
texto estructurado(2)
bloque de funciones
operación NOT a nivel de bits
Bitwise NOT
lógica de escalera de relés
314
texto estructurado(2)
bloque de funciones
Y lógico hasta ocho entradas booleanas.
Boolean AND (BAND)
texto estructurado(2)
317
bloque de funciones
O lógico hasta ocho entradas booleanas.
Boolean OR (BOR)
texto estructurado(2)
320
bloque de funciones
realizar un O exclusivo en dos entradas
booleanas.
Boolean Exclusive OR
(BXOR)
texto estructurado(2)
323
bloque de funciones
complementar una entrada booleana.
Boolean NOT (BNOT)
texto estructurado(2)
326
bloque de funciones
(1)
Texto estructurado solamente.
(2)
En texto estructurado, las operaciones AND, OR, XOR y NOT pueden ser lógicas o a nivel de bits.
282
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Mover (MOV)
Capítulo 7
La instrucción MOV copia Source en Destination. Source no cambia.
Operandos:
Lógica de escalera de relés
Operando:
Tipo:
Formato
Descripción:
Source
SINT
inmediato
valor a mover (copiar)
INT
tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
Use una asignación “:=” con una expresión. Esta asignación mueve el
valor de source a dest.
dest := source;
Consulte Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de expresiones y asignaciones
en texto estructurado.
Descripción: La instrucción MOV copia Source en Destination. Source no cambia.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
283
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La instrucción copia Source en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Ejemplo: Mueva los datos en value_1 a value_2.
Lógica de escalera de relés
Texto estructurado
value_2 := value _1;
284
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Mover con máscara (MVM)
Capítulo 7
La instrucción MVM copia Source a un Destination y permite
enmascarar porciones de los datos.
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como MVMT; vea la página 288.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
valor a mover
INT
tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Mask
SINT
inmediato
INT
tag
qué bits se bloquean o se pasan
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
Texto estructurado
dest := (Dest AND NOT (Mask))
OR (Source AND Mask);
Esta instrucción está disponible en texto estructurado como MVMT.
O puede combinar lógica a nivel de bits dentro de una expresión y
asignar el resultado al destino. Esta expresión realiza un movimiento
con máscara en Source.
Consulte Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de expresiones y asignaciones
en texto estructurado.
Descripción: La instrucción MVM usa una máscara para pasar o bloquear bits de
datos de Source. Un número “1” en la máscara significa que se pasa el
bit de datos. Un número “0” en la máscara significa que se bloquea el
bit de datos.
Si mezcla diferentes tipos de datos enteros, la instrucción llena con
ceros los bits superiores de los tipos de datos enteros menores para
que tengan el mismo tamaño que el tipo de datos mayor.
Publicación 1756-RM003K-ES-P – Julio 2008
285
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Introduzca un valor de máscara inmediato
Cuando usted introduce una máscara, el software de programación
cambia de manera predeterminada a valores decimales. Si desea
introducir una máscara usando otro formato, preceda el valor con el
prefijo correcto.
Prefijo:
Descripción
16#
hexadecimal
por ejemplo; 16#0F0F
8#
octal
por ejemplo; 8#16
2#
binario
por ejemplo; 2#00110011
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
condiciones de fallo ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La instrucción pasa Source a través de la máscara y copia el resultado en Destination.
Los bits sin máscara en Destination permanecen sin ningún cambio.
La condición de salida de renglón se establece como verdadera.
post-escán
286
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Ejemplo: Copie datos de value_a a value_b, mientras permite que los datos
sean enmascarados (un 0 enmascara los datos en value_a).
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1
Las casillas sombreadas muestran los bits cambiados en value_b.
Lógica de escalera de relés
Texto estructurado
value_b := (value_b AND NOT (mask_2)) OR
(value_a AND mask_2);
Publicación 1756-RM003K-ES-P – Julio 2008
287
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Movimiento enmascarado
con receptor (MVMT)
La instrucción MVMT primero copia Target en Destination.
Seguidamente la instrucción compara Source enmascarado con
Destination y hace los cambios requeridos en Destination. Target y
Source permanecen sin ningún cambio.
Esta instrucción está disponible en lógica de escalera de relés como
MVM; vea la página 285.
Operandos:
MVMT(MVMT_tag);
Texto estructurado
Variable
Tipo
Formato
Descripción:
MVMT tag
FBD_MASKED_MOVE
estructura
estructura MVMT
Bloque de funciones
Operando
Tipo
Formato
Descripción
MVMT tag
FBD_MASKED_MOVE
estructura
estructura MVMT
Estructura FBD_MASKED_MOVE
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Bloque de funciones
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado
Ningún efecto. La instrucción se ejecuta.
Source
DINT
Valor de entrada para mover el destino con base en el valor de la máscara.
Válido = cualquier número entero
Mask
DINT
Máscara de bits para mover de Source a Dest. Todos los bits establecidos en uno hacen que
los bits correspondientes se muevan de Source a Dest. Todos los bits que se establecen en
cero hacen que los bits correspondientes no se muevan de Source a Dest.
Válido = cualquier número entero
Target
DINT
Valor de entrada para mover a Dest antes de mover los bits de Source a través de la
máscara.
Válido = cualquier número entero
288
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
DINT
Resultado de la instrucción de movimiento enmascarado. Se establecen indicadores de
estado aritmético para esta salida.
Descripción: Cuando se habilita, la instrucción MVMT usa una máscara para pasar o
bloquear bits de datos de Source. Un número “1” en la máscara
significa que se pasa el bit de datos. Un número “0” en la máscara
significa que se bloquea el bit de datos.
Si mezcla diferentes tipos de datos enteros, la instrucción llena con
ceros los bits superiores de los tipos de datos enteros menores para
que tengan el mismo tamaño que el tipo de datos mayor.
Introduzca un valor de máscara inmediato usando una referencia
de entrada
Cuando usted introduce una máscara, el software de programación
cambia de manera predeterminada a valores decimales. Si desea
introducir una máscara usando otro formato, preceda el valor con el
prefijo correcto.
Prefijo
Descripción
16#
hexadecimal
por ejemplo; 16#0F0F
8#
octal
por ejemplo; 8#16
2#
binario
por ejemplo; 2#00110011
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
289
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Ejecución:
Condición
Acción de bloque de funciones
Acción de texto estructurado
preescán
Ninguna.
Ninguna.
primer escán de instrucción Ninguna.
Ninguna.
primera ejecución de
instrucción
Ninguna.
Ninguna.
EnableIn se borra
EnableOut se borra, la instrucción no efectúa
ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece
La instrucción se ejecuta.
EnableIn siempre se establece.
EnableOut se establece.
La instrucción se ejecuta.
Ninguna.
Ninguna.
post-escán
Ejemplo:
1. Copie el receptor a Dest.
Receptor 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2. Enmascare Source y compárelo con Dest. Cualquier cambio
requerido se hace en Dest. Source y Target permanecen sin
ningún cambio. Un número 0 en la máscara impide que la
instrucción compare ese bit (representado por x en el ejemplo).
Source 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Mask1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
Dest 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1
Las casillas sombreadas muestran los bits cambiados.
Texto estructurado
MVMT_01.Source := value _1;
MVMT_01.Mask := mask1;
MVMT_01.Target := target;
MVMT(MVMT_01);
value_masked := MVMT_01.Dest;
290
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
291
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Distribuir campo de bits
(BTD)
La instrucción BTD copia los bits especificados de Source, desplaza
los bits a la posición apropiada y escribe los bits en Destination.
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como BTDT; vea la página 295.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
el tag que contiene los bits a mover
INT
tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Source bit
Destination
DINT
SINT
inmediato
número del bit (número del bit más bajo)
desde donde empezar el movimiento
(0-31 DINT)
(0-15 INT)
(0-7 SINT)
debe estar dentro del rango válido para el
tipo de datos de Source
tag
tag a donde mover los bits
inmediato
número del bit (número del bit más bajo)
desde donde empezar a copiar bits desde
Source
INT
DINT
Destination
bit
DINT
(0-31 DINT)
(0-15 INT)
(0-7 SINT)
Length
DINT
inmediato
(1-32)
debe estar dentro del rango válido para el
tipo de datos del destino
número de bits que se van a mover
Descripción: Cuando se habilita, la instrucción BTD copia un grupo de bits de
Source a Destination. El grupo de bits es identificado por el bit de
Source (el número de bit más bajo del grupo) y la longitud (el número
de bits a copiar). El bit de Destination identifica el número de bit
menor con el cual se comienza en Destination. Source no cambia.
Si la longitud del campo de bits se extiende más allá de Destination, la
instrucción no guarda los bits adicionales. Los bits adicionales no
pasan a la próxima palabra.
Si mezcla diferentes tipos de datos enteros, la instrucción llena con
ceros los bits superiores de los tipos de datos enteros menores para
que tengan el mismo tamaño que el tipo de datos mayor.
292
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La instrucción copia y desplaza los bits de Source a Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Ejemplo 1: Una vez habilitada, la instrucción BTD transfiere los bits dentro de
value_1.
bit de destino
bit de origen
value_1 antes de la 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
instrucción BTD
value_1 después de la 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
instrucción BTD
Las casillas sombreadas muestran los bits que cambiaron en value_1.
Publicación 1756-RM003K-ES-P – Julio 2008
293
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Ejemplo 2: Una vez habilitada, la instrucción BTD mueve 10 bits de value_1
a value_2.
bit de origen
value_1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
bit de destino
value_2 antes de la 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
instrucción BTD
value_2 después de la 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
instrucción BTD
Las casillas sombreadas muestran los bits que cambiaron en value_2.
294
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Distribuir campo de bits
con receptor (BTDT)
Capítulo 7
La instrucción BTDT primero copia Target en Destination.
Seguidamente, la instrucción BTD copia los bits especificados desde
Source, desplaza los bits a la posición apropiada y escribe los bits en
Destination. Target y Source no cambian.
Esta instrucción está disponible en lógica de escalera de relés como
BTD; vea la página 292.
Operandos:
BTDT(BTDT_tag);
Texto estructurado
Variable
Tipo
Formato
Descripción
BTDT tag
FBD_BIT_FIELD_DISTRIBUTE
estructura
estructura BTDT
Bloque de funciones
Operando
Tipo
Formato
Descripción
BTDT tag
FBD_BIT_FIELD_DISTRIBUTE
estructura
estructura BTDT
Estructura FBD_BIT_FIELD_DISTRIBUTE
Parámetro de
entrada
Tipo de datos
Descripción:
EnableIn
BOOL
Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
Source
DINT
El valor de entrada que contiene los bits que se transfieren a Destination.
Válido = cualquier número entero
SourceBit
DINT
La posición de bit en Source (el número de bit más bajo desde el cual se inicia la
transferencia).
Válido = 0-31
Length
DINT
Número de bits que se van a mover
Válido = 1-32
DestBit
DINT
La posición de bit en Dest (el número de bit más bajo al cual se comienza a copiar bits).
Válido = 0-31
Publicación 1756-RM003K-ES-P – Julio 2008
295
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Parámetro de
entrada
Tipo de datos
Descripción:
Target
DINT
Valor de entrada que se transfiere a Dest antes de transferir los bits de Source.
Válido = cualquier número entero
Parámetro de
salida:
Tipo de datos:
Descripción:
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
DINT
Resultado de la operación del traslado de bits. Se establecen indicadores de estado
aritmético para esta salida.
Descripción: Cuando se habilita, la instrucción BTD copia un grupo de bits de
Source a Destination. El grupo de bits es identificado por el bit de
Source (el número de bit más bajo del grupo) y Length (número de
bits a copiar). El bit de Destination identifica el número de bit menor
con el cual se comienza en Destination. Source no cambia.
Si la longitud del campo de bits se extiende más allá de Destination,
la instrucción no guarda los bits adicionales. Los bits adicionales no
pasan a la próxima palabra.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de bloque de funciones
Acción de texto estructurado
preescán
Ninguna.
Ninguna.
primer escán de instrucción Ninguna.
Ninguna.
primera ejecución de
instrucción
Ninguna.
Ninguna.
EnableIn se borra
EnableOut se borra, la instrucción no efectúa
ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece
La instrucción se ejecuta.
EnableIn siempre se establece.
EnableOut se establece.
La instrucción se ejecuta.
Ninguna.
Ninguna.
post-escán
296
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Ejemplo:
Capítulo 7
1. El controlador copia el receptor en Destination.
Target 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
2. SourceBit y Length especifican qué bits en Source se copian en
Destination a partir de DestBit. Source y Target no cambian.
DestBit
SourceBit
Source 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Texto estructurado
BTDT_01.Source := source;
BTDT_01.SourceBit := source_bit;
BTDT_01.Length := length;
BTDT_01.DestBit := dest_bit;
BTDT_01.Target := target;
BTDT(BTDT_01);
distributed_value := BTDT_01.Dest;
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
297
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Borrar (CLR)
La instrucción CLR borra (pone en cero) todos los bits de Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Destination
SINT
tag
tag que se borra
INT
DINT
REAL
Texto estructurado
dest := 0;
El texto estructurado no cuenta con la instrucción CLR. En lugar de
ello, asigne 0 al tag que desea borrar. Esta declaración de asignación
borra dest.
Consulte Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones y
declaraciones de asignación en texto estructurado.
Descripción: La instrucción CLR borra todos los bits de Destination.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La instrucción borra Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
298
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Ejemplo: Ponga en cero todos los bits de value.
Lógica de escalera de relés
Texto estructurado
value := 0;
Publicación 1756-RM003K-ES-P – Julio 2008
299
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Intercambiar byte (SWPB)
La instrucción SWPB reacomoda los bytes de un valor.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Introduzca
Source
INT
tag
el tag que contiene los bytes que desea reacomodar
DINT
REAL
Modo de orden
Destination
INT
tag
Si Source
es un
Y usted desea cambiar los bytes a este
patrón (cada letra representa un byte
diferente)
Entonces
seleccione
INT
n. a.
cualquiera de las
opciones
DINT
ABCD ⇒ DCBA
REVERSE
(o introduzca 0)
REAL
ABCD ⇒ CDAB
WORD (o introduzca 1)
ABCD ⇒ BADC
HIGH/LOW
(o introduzca 2)
tag para almacenar los bytes en el nuevo orden
DINT
Si Source
es un
Entonces el destino debe ser un
REAL
INT
INT
DINT
DINT
DINT
REAL
REAL
Texto estructurado
SWPB(Source,OrderMode,Dest);
300
Los operandos son los mismos que los de la instrucción SWPB de
lógica de escalera de relés. Si selecciona el modo de orden
HIGH/LOW, introdúzcalo como HIGHLOW o HIGH_LOW (sin la
barra diagonal).
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Descripción: La instrucción SWPB reacomoda el orden de los bytes de Source y
coloca el resultado en Destination.
Cuando usted lee o escribe caracteres ASCII, generalmente no
necesita intercambiar caracteres. Las instrucciones de lectura y
escritura ASCII (ARD, ARL, AWA, AWT) automáticamente intercambian
caracteres, como se muestra a continuación.
lector de códigos de barras
BA
Nombre del tag
Valor
Estilo
Tipo
bar_code[0]
AB
ASCII
INT
42969
42968
AB
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La condición de salida de renglón se establece como
verdadera.
n. a.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción reacomoda los bytes especificados.
La instrucción reacomoda los bytes especificados.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
301
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Ejemplo 1: Las tres instrucciones SWPB reacomodan los bytes de DINT_1 según
un modo de orden diferente. El estilo de visualización es ASCII, y
cada carácter representa un byte. Cada instrucción coloca los bytes, en
el nuevo orden, en un diferente Destination.
Lógica de escalera de relés
Texto estructurado
SWPB(DINT_1,REVERSE,DINT_1_reverse);
SWPB(DINT_1,WORD,DINT_1_swap_word);
SWPB(DINT_1,HIGHLOW,DINT_1_swap_high_low);
Ejemplo 2: El siguiente ejemplo invierte los bytes en cada elemento de una
matriz. Para un proyecto RSLogix 5000 que contiene este ejemplo,
abra la carpeta RSLogix 5000\Projects\Samples, archivo
Swap_Bytes_in_Array.ACD.
1. Inicialice los tags. La instrucción SIZE encuentra el número de
elementos en array y almacena ese valor en array_length. Una
instrucción subsiguiente usa este valor para determinar cuándo
actuó la rutina en todos los elementos de la matriz.
2. Invierta los bytes en un elemento de array.
• La instrucción SWPB invierte los bytes del número de elemento
indicado por el valor de index. Por ejemplo, cuando index es
igual a 0, la instrucción SWPB actúa sobre array[0].
• La instrucción ADD incrementa index. La próxima vez que se
ejecute la instrucción, la instrucción SWPB actúa sobre el
siguiente elemento en array.
3. Determine cuándo la instrucción SWPB actuó sobre todos los
elementos en la matriz.
• Si index es menor que el número de elementos en la matriz
(array_length), continúe con el siguiente elemento en la matriz.
• Si index es igual a array_length, significa que SWPB actuó sobre
todos los elementos en la matriz.
302
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Lógica de escalera de relés
Inicialice los tags.
Invierta los bytes.
Determine si la instrucción SWPB actuó sobre todos los elementos en la matriz.
Texto estructurado
index := 0;
SIZE (array[0],0,array_length);
REPEAT
SWPB(array[index],REVERSE,array_bytes_reverse[index]);
index := index + 1;
UNTIL(index >= array_length)END_REPEAT;
Publicación 1756-RM003K-ES-P – Julio 2008
303
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Y a nivel de bits (AND)
La instrucción AND realiza una operación Y a nivel de bits usando los
bits en Source A y Source B, y coloca el resultado en Destination.
Para realizar una operación lógica Y, vea la página 317.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor con que se realiza la operación Y con
Source B
INT
tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Source B
SINT
inmediato
INT
tag
valor con que se a realiza la operación AND
con Source A
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination
SINT
tag
almacena el resultado
INT
DINT
Texto estructurado
dest := sourceA AND sourceB
Use AND o el signo “&” como operador dentro de una expresión. Esta
expresión evalúa sourceA AND sourceB.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
304
Operando
Tipo
Formato
Descripción
AND tag
FBD_LOGICAL
estructura
estructura AND
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Estructura FBD_LOGICAL
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
SourceA
DINT
Valor con que se realiza la operación AND con SourceB
Válido = cualquier número entero
SourceB
DINT
Valor con que se realiza la operación AND con SourceA
Válido = cualquier número entero
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
DINT
Resultado de la instrucción. Se establecen indicadores de estado aritmético para esta salida.
Descripción: Una vez habilitada, la instrucción evalúa la operación AND:
Si el bit en
Source A es
Y el bit en
Source B es
El bit en Destination
es
0
0
0
0
1
0
1
0
0
1
1
1
Si mezcla diferentes tipos de datos enteros, la instrucción llena con
ceros los bits superiores de los tipos de datos enteros menores para
que tengan el mismo tamaño que el tipo de datos mayor.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La instrucción realiza una operación Y a nivel de bits.
La condición de salida de renglón se establece como verdadera.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
305
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo: Cuando se habilita, la instrucción AND realiza una operación Y a nivel
de bits en SourceA y SourceB y coloca el resultado en Dest.
SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Dest 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
Lógica de escalera de relés
Texto estructurado
value_result_and := value_1 AND value_2;
Bloque de funciones
306
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
O a nivel de bits (OR)
Capítulo 7
La instrucción OR realiza una operación O a nivel de bits usando los
bits en Source A y Source B, y coloca el resultado en Destination.
Para realizar una operación lógica O, vea la página 320.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor con que se realiza la
operación O con Source B
INT
tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Source B
SINT
inmediato
INT
tag
valor con que se realiza la
operación O con Source A
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination
SINT
tag
almacena el resultado
INT
DINT
Texto estructurado
dest := sourceA OR sourceB
Use OR como operador dentro de una expresión. Esta expresión
evalúa sourceA OR sourceB.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
Operando
Tipo
Formato
Descripción
OR tag
FBD_LOGICAL
estructura
estructura OR
307
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Estructura FBD_LOGICAL
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
SourceA
DINT
Valor con que se realiza la operación O con SourceB
Válido = cualquier número entero
SourceB
DINT
Valor con que se realiza la operación O con SourceA
Válido = cualquier número entero
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
DINT
Resultado de la instrucción. Se establecen indicadores de estado aritmético para esta salida.
Descripción: Una vez habilitada, la instrucción evalúa la operación O:
Si el bit en
Source A es
Y el bit en
Source B es
El bit en Destination
es
0
0
0
0
1
1
1
0
1
1
1
1
Si mezcla diferentes tipos de datos enteros, la instrucción llena con
ceros los bits superiores de los tipos de datos enteros menores para
que tengan el mismo tamaño que el tipo de datos mayor.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La instrucción realiza una operación O a nivel de bits.
La condición de salida de renglón se establece como verdadera.
post-escán
308
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo: Cuando se habilita, la instrucción OR realiza una operación O a nivel
de bits en SourceA y SourceB y coloca el resultado en Dest.
SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Dest 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1
Lógica de escalera de relés
Texto estructurado
value_result_or := value_1 OR value_2;
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
309
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
O exclusivo a nivel de bits
(XOR)
La instrucción XOR realiza una operación O exclusivo a nivel de bits
usando los bits en Source A y Source B, y coloca el resultado en
Destination.
Para realizar una operación lógica XO, vea la página 323.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source A
SINT
inmediato
valor con que se realiza la operación
XOR con Source B
INT
tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Source B
SINT
inmediato
INT
tag
valor con que se realiza la operación
XOR con Source A
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination
SINT
tag
almacena el resultado
INT
DINT
Texto estructurado
dest := sourceA XOR sourceB
Use XOR como operador dentro de una expresión. Esta expresión
evalúa sourceA XOR sourceB.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
310
Operando
Tipo
Formato
Descripción
XOR tag
FBD_LOGICAL
estructura
estructura XOR
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Estructura FBD_LOGICAL
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
SourceA
DINT
Valor con que se realiza la operación XOR con SourceB
Válido = cualquier número entero
SourceB
DINT
Valor con que se realiza la operación XOR con SourceA
Válido = cualquier número entero
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
DINT
Resultado de la instrucción. Se establecen indicadores de estado aritmético para esta salida.
Descripción: Una vez habilitada, la instrucción evalúa la función XOR:
Si el bit en
Source A es
Y el bit en
Source B es
El bit en
Destination es
0
0
0
0
1
1
1
0
1
1
1
0
Si mezcla diferentes tipos de datos enteros, la instrucción llena con
ceros los bits superiores de los tipos de datos enteros menores para
que tengan el mismo tamaño que el tipo de datos mayor.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La instrucción realiza una operación O a nivel de bits.
La condición de salida de renglón se establece como verdadera.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
311
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo: Cuando se habilita, la instrucción AND realiza una operación O
exclusivo a nivel de bits en SourceA y SourceB y coloca el resultado
en el tag de destino.
value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
value_2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
value_result_xor 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1
Lógica de escalera de relés
Texto estructurado
value_result_xor := value_1 XOR value_2;
312
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
313
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
NO a nivel de bits (NOT)
La instrucción NOT realiza un NO a nivel de bits usando los bits en
Source y coloca el resultado en Destination.
Para realizar una operación lógica NO, vea la página 326.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
valor sobre el cual se aplicará la
operación NO
INT
tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination
SINT
tag
almacena el resultado
INT
DINT
Texto estructurado
dest := NOT source
Use NOT como operador dentro de una expresión. Esta expresión
evalúa source con la operación NOT.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
314
Operando
Tipo
Formato
Descripción
NOT tag
FBD_LOGICAL
estructura
estructura NOT
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Estructura FBD_LOGICAL
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
la opción predeterminada es establecido
Source
DINT
Valor sobre el cual se aplicará la operación NO
Válido = cualquier número entero
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
DINT
Resultado de la instrucción. Se establecen indicadores de estado aritmético para esta salida.
Descripción: Una vez habilitada, la instrucción evalúa la operación NO:
Si el bit en
Source es:
El bit en Destination
es:
0
1
1
0
Si mezcla diferentes tipos de datos enteros, la instrucción llena con
ceros los bits superiores de los tipos de datos enteros menores para
que tengan el mismo tamaño que el tipo de datos mayor.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La instrucción realiza una operación NO a nivel de bits.
La condición de salida de renglón se establece como verdadera.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
315
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo: Cuando se habilita, la instrucción NOT realiza una operación NO a
nivel de bits en Source y coloca el resultado en Dest.
value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
value_result_not 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0
Lógica de escalera de relés
Texto estructurado
value_result_not := NOT value_1;
Bloque de funciones
316
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Y booleano (BAND)
Capítulo 7
La instrucción BAND aplica la operación lógica Y a 8 entradas
booleanas como máximo.
Para realizar una operación Y a nivel de bits, vea la página 304.
Operandos:
Texto estructurado
IF operandA AND operandB THEN
<statement>;
END_IF;
Use AND o el signo “&” como operador dentro de una expresión.
Los operandos deben ser valores BOOL o expresiones que resultan
en valores BOOL. Esta expresión evalúa si tanto operandA como
operandB están establecidos (verdaderos).
Consulte el Apéndice C, para obtener información sobre la sintaxis de
las expresiones en texto estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
BAND tag
FBD_BOOLEAN_AND
estructura
estructura BAND
Estructura FBD_BOOLEAN_AND
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
In1
BOOL
Primera entrada booleana.
La opción predeterminada es establecido.
In2
BOOL
Segunda entrada booleana.
La opción predeterminada es establecido.
In3
BOOL
Tercera entrada booleana.
La opción predeterminada es establecido.
In4
BOOL
Cuarta entrada booleana.
La opción predeterminada es establecido.
In5
BOOL
Quinta entrada booleana.
La opción predeterminada es establecido.
In6
BOOL
Sexta entrada booleana.
La opción predeterminada es establecido.
In7
BOOL
Séptima entrada booleana.
La opción predeterminada es establecido.
Publicación 1756-RM003K-ES-P – Julio 2008
317
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Parámetro de
entrada
Tipo de datos
Descripción
In8
BOOL
Octava entrada booleana.
La opción predeterminada es establecido.
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
Habilitación de salida.
Out
BOOL
La salida de la instrucción.
Descripción: La instrucción BAND aplica la operación lógica Y a 8 entradas
booleanas como máximo. Si no se usa una entrada, ésta se pone en
uno (1) de manera predeterminada.
Out = In1 AND In2 AND In3 AND In4 AND In5 AND In6 AND In7 AND In8
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de bloque de funciones
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo 1: Este ejemplo efectúa la operación Y en bool_in1 y bool_in2 y coloca
el resultado en value_result_and.
Si BOOL_IN1 es Si BOOL_IN2 es Entonces VALUE_RESULT_AND es
0
0
0
0
1
0
1
0
0
1
1
1
Texto estructurado
value_result_and := bool_in1 AND bool_in2;
318
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Bloque de funciones
Ejemplo 2: Si bool_in1 y bool_in2 se establecen (son verdaderos), light1 se
establece (se enciende). De lo contrario, light1 se borra (se apaga).
Texto estructurado
IF bool_in1 AND bool_in2 THEN
light1 := 1;
ELSE
light1 := 0;
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
319
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
O booleano (BOR)
La instrucción BOR aplica la operación lógica O a 8 entradas
booleanas como máximo.
Para realizar un O a nivel de bits, vea la página 307.
Operandos:
Texto estructurado
IF operandA OR operandB THEN
<statement>;
END_IF;
Use OR como operador dentro de una expresión. Los operandos
deben ser valores BOOLEANOS o expresiones que resultan en valores
BOOLEANOS. Esta expresión evalúa si operandA u operandB, o
ambos están establecidos (verdaderos).
Consulte el Apéndice C, para obtener información sobre la sintaxis de
las expresiones en texto estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
BOR tag
FBD_BOOLEAN_OR
estructura
estructura BOR
Estructura FBD_BOOLEAN_OR
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
In1
BOOL
Primera entrada booleana.
La opción predeterminada es borrado.
In2
BOOL
Segunda entrada booleana.
La opción predeterminada es borrado.
In3
BOOL
Tercera entrada booleana.
La opción predeterminada es borrado.
In4
BOOL
Cuarta entrada booleana.
La opción predeterminada es borrado.
In5
BOOL
Quinta entrada booleana.
La opción predeterminada es borrado.
In6
BOOL
Sexta entrada booleana.
La opción predeterminada es borrado.
In7
BOOL
Séptima entrada booleana.
La opción predeterminada es borrado.
320
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Parámetro de
entrada
Tipo de datos
Descripción
In8
BOOL
Octava entrada booleana.
Capítulo 7
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
Habilitación de salida.
Out
BOOL
La salida de la instrucción.
Descripción: La instrucción BOR aplica la operación lógica O a 8 entradas
booleanas como máximo. Si no se usa una entrada, ésta se pone en
cero (0) de manera predeterminada.
Out = In1 OR In2 OR In3 OR In4 OR In5 OR In6 OR In7 OR In8
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de bloque de funciones
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo 1: Este ejemplo efectúa la operación O en bool_in1 y bool_in2 y coloca
el resultado en value_result_or.
Si BOOL_IN1 es Si BOOL_IN2 es Entonces VALUE_RESULT_OR es
0
0
0
0
1
1
1
0
1
1
1
1
Texto estructurado
value_result_or := bool_in1 OR bool_in2;
Publicación 1756-RM003K-ES-P – Julio 2008
321
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Bloque de funciones
Ejemplo 2: En este ejemplo, light1 se establece (se enciende) si:
• sólo bool_in1 se establece (verdadero).
• sólo bool_in2 se establece (verdadero).
• ambos bool_in1 y bool_in2 se establecen (verdaderos).
De lo contrario, light1 se borra (se apaga).
Texto estructurado
IF bool_in1 OR bool_in2 THEN
light1 := 1;
ELSE
light1 := 0;
END_IF;
322
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
O exclusivo booleano
(BXOR)
Capítulo 7
La instrucción BXOR realiza una operación O exclusivo de dos
entradas booleanas.
Para realizar un XOR a nivel de bits, vea la página 310.
Operandos:
Texto estructurado
IF operandA XOR operandB THEN
<statement>;
END_IF;
Use XOR como operador dentro de una expresión. Los operandos
deben ser valores BOOLEANOS o expresiones que resultan en valores
BOOLEANOS. Esta expresión evalúa si sólo operandA o sólo
operandB, está establecido (verdadero).
Consulte el Apéndice C, para obtener información sobre la sintaxis de
las expresiones en texto estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
BXOR tag
FBD_BOOLEAN_XOR
estructura
estructura BXOR
Estructura FBD_BOOLEAN_XOR
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
In1
BOOL
Primera entrada booleana.
La opción predeterminada es borrado.
In2
BOOL
Segunda entrada booleana.
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
Habilitación de salida.
Out
BOOL
La salida de la instrucción.
Descripción: La instrucción BXOR realiza una operación O exclusivo de dos
entradas booleanas.
Out = In1 XOR In2
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
323
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Ejecución:
Condición
Acción de bloque de funciones
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo 1: Este ejemplo realiza una operación O exclusivo en bool_in1 y
bool_in2 y coloca el resultado en value_result_xor.
Si BOOL_IN1 es Si BOOL_IN2 es Entonces VALUE_RESULT_XOR es
0
0
0
0
1
1
1
0
1
1
1
0
Texto estructurado
value_result_xor := bool_in1 XOR bool_in2;
Bloque de funciones
324
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Ejemplo 2: En este ejemplo, light1 se establece (se enciende) si:
• sólo bool_in1 se establece (verdadero).
• sólo bool_in2 se establece (verdadero).
De lo contrario, light1 se borra (se apaga).
Texto estructurado
IF bool_in1 XOR bool_in2 THEN
light1 := 1;
ELSE
light1 := 0;
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
325
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
NO booleano (BNOT)
La instrucción BNOT complementa una entrada booleana.
Para realizar una operación NO a nivel de bits, vea la página 314.
Operandos:
Texto estructurado
IF NOT operand THEN
<statement>;
END_IF;
Use NOT como operador dentro de una expresión. El operando debe
ser un valor BOOL o expresiones que resultan en valores BOOL. Esta
expresión evalúa si el operando está borrado (falso).
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
BNOT tag
FBD_BOOLEAN_NOT
estructura
estructura BNOT
Estructura FBD_BOOLEAN_NOT
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
In
BOOL
Entrada a la instrucción
La opción predeterminada es establecido.
Parámetro de salida Tipo de datos
Descripción:
EnableOut
BOOL
Habilitación de salida.
Out
BOOL
La salida de la instrucción.
Descripción: La instrucción BNOT complementa una entrada booleana.
Out = NOT In
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
326
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Capítulo 7
Ejecución:
Condición
Acción de bloque de funciones
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo 1: Este ejemplo complementa bool_in1 y coloca el resultado en
value_result_not.
Si BOOL_IN1 es
Entonces VALUE_RESULT_NOT es
0
1
1
0
Texto estructurado
value_result_not := NOT bool_in1;
Bloque de funciones
Ejemplo 2: Si bool_in1 se borra, light1 se borra (se apaga). De lo contrario, light1
se establece (se enciende).
Texto estructurado
IF NOT bool_in1 THEN
light1 := 0;
ELSE
light1 := 1;
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
327
Capítulo 7
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Notas:
328
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
8
Instrucciones de matriz
(archivo)/misceláneas
(FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Introducción
Las instrucciones de archivo/misceláneas realizan operaciones en
matrices de datos.
Si desea
Use esta instrucción
Disponible en estos lenguajes
lógica de escalera de relés
Vea la página
realizar operaciones aritméticas, lógicas, de
desplazamiento y de funciones en valores en
matrices
FAL
buscar y comparar valores en matrices
FSC
lógica de escalera de relés
347
copiar el contenido de una matriz en otra matriz
COP
lógica de escalera de relés
356
335
texto estructurado(1)
texto estructurado
copiar el contenido de una matriz en otra matriz
sin interrupción
CPS
lógica de escalera de relés
356
texto estructurado
llenar una matriz con datos específicos
FLL
lógica de escalera de relés
362
texto estructurado(1)
calcular el promedio de una matriz de valores
AVE
lógica de escalera de relés
366
texto estructurado(1)
organizar una dimensión de datos de matriz en
orden ascendente
SRT
lógica de escalera de relés
371
texto estructurado
calcular la desviación estándar de una matriz
de valores
STD
lógica de escalera de relés
376
texto estructurado(1)
encontrar el tamaño de una dimensión de una
matriz
SIZE
lógica de escalera de relés
381
texto estructurado
(1)
No hay una instrucción equivalente en texto estructurado. Use otra programación en texto estructurado para lograr el mismo resultado. Vea la descripción de la
instrucción.
Usted puede mezclar diferentes tipos de datos, pero puede producirse
pérdida de exactitud y error de redondeo, y la instrucción requiere
más tiempo para ejecutarse. Verifique el bit S:V para determinar si se
truncó el resultado.
Para las instrucciones de lógica de escalera de relés, los tipos de datos
que aparecen en negrita indican tipos de datos óptimos. Las
instrucciones se ejecutan más rápidamente y requieren menos
memoria si todos los operandos de instrucción usan el mismo tipo de
datos óptimos, típicamente DINT o REAL.
329Publicación 1756-RM003K-ES-P – Julio 2008
329
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Selección del modo de
operación
Para las instrucciones FAL y FSC, el modo indica al controlador cómo
distribuir la operación de la matriz.
Si desea
Seleccione este
modo
realizar una operación en todos los elementos
especificados de una matriz antes de continuar con la
próxima instrucción
Todos
distribuir operaciones de matriz entre un número de
escanes
Numérico
introduzca el número de elementos sobre los que se debe
operar por escán (1-2147483647)
manipular un elemento de la matriz cada vez que la
condición de entrada de renglón cambia de falsa a
verdadera
Incremental
Modo Todos
En el modo Todos, se opera sobre todos los elementos de la matriz
antes de continuar con la próxima instrucción La operación comienza
cuando la condición de entrada del renglón cambia de falso a
verdadero. El valor de posición (.POS) en la estructura de control
apunta al elemento de la matriz que la instrucción está usando
actualmente. La operación se detiene cuando el valor .POS es igual al
valor .LEN.
Matriz de datos
un escán
16639
330
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
El siguiente diagrama temporal muestra la relación entre los bits de
estado y la operación de la instrucción. Cuando concluye la ejecución
de la instrucción, se establece el bit .DN. El bit .DN, el bit .EN y el
valor .POS se borran cuando la condición de entrada del renglón es
falsa. Sólo entonces podrá activarse otra ejecución de la instrucción
por una transición de falso a verdadero de la condición de entrada del
renglón.
un escán
condición de entrada de renglón
bit .EN
bit .DN
borra los bits de estado y
borra el valor .POS
escán de la instrucción
operación concluida
no se realiza la ejecución
40010
Modo numérico
El modo numérico distribuye la operación de la matriz entre un
número de escanes. Este modo es útil cuando se trabaja con datos no
críticos en cuando a tiempo o con grandes cantidades de datos. Usted
introduce el número de elementos sobre los que se va a operar por
cada escán, lo que mantiene más corto el tiempo de escán.
Publicación 1756-RM003K-ES-P – Julio 2008
331
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
La ejecución se activa cuando la condición de entrada del renglón
cambia de falso a verdadero. Una vez activada, la instrucción se
ejecuta cada vez que se escanea por el número de escanes necesarios
para completar la operación en toda la matriz. Una vez activada, la
condición de entrada del renglón puede cambiar repetidamente sin
interrumpir la ejecución de la instrucción.
un escán
segundo escán
siguiente escán
16641
IMPORTANTE
Evite usar los resultados de una instrucción de archivo que
funciona en modo numérico hasta que esté establecido el
bit .DN.
El siguiente diagrama muestra la relación entre los bits de estado y la
operación de la instrucción. Cuando concluye la ejecución de la
instrucción, se establece el bit .DN.
el renglón es verdadero al concluir
múltiples escanes
el renglón es falso al concluir
múltiples escanes
condición de entrada de renglón
bit .EN
bit .DN
escán de la instrucción
operación concluida
operación concluida
borra los bits de estado y
borra el valor .POS
332
40013
borra los bits de estado
y borra el valor .POS
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Si la condición de entrada de renglón es verdadera al concluir, los
bits .EN y .DN se establecen hasta que la condición de entrada de
renglón se hace falsa. Cuando la condición de entrada de renglón
cambia a falso, estos bits se borran y el valor .POS se borra.
Si la condición de entrada de renglón es falsa al concluir, el bit .EN se
borra inmediatamente. Un escán después de que se borra el bit .EN, el
bit .DN y el valor .POS se borran.
Modo incremental
El modo incremental manipula un elemento de la matriz cada vez que
la condición de entrada de renglón de la instrucción cambia de falso a
verdadero.
Habilitación de 1ª instrucción
Habilitación de 2ª instrucción
Habilitación de 3ª instrucción
Habilitación de última instrucción
16643
Publicación 1756-RM003K-ES-P – Julio 2008
333
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
El siguiente diagrama muestra la relación entre los bits de estado y la
operación de la instrucción. La ejecución se realiza sólo en un escán
en el cual la condición de entrada del renglón cambia de falso a
verdadero. Cada vez que esto ocurre, sólo se manipula un elemento
de la matriz. Si la condición de entrada de renglón permanece
verdadera por más de un escán, la instrucción sólo se ejecuta durante
el primer escán.
un escán
condición de entrada de renglón
bit .EN
bit .DN
40014
escán de la instrucción
operación
concluida
borra los bits de estado
y borra el valor .POS
El bit .EN se establece cuando la condición de entrada del renglón es
verdadera. El bit .DN se establece cuando el último elemento de la
matriz ha sido manipulado. Cuando el último elemento ha sido
manipulado y la condición de entrada de renglón cambia a falso, se
borran el bit .EN, el bit .DN y el valor .POS.
La diferencia entre el modo incremental y el modo numérico a un
régimen de un elemento por escán es:
• El modo numérico con cualquier número de elementos por
escán requiere sólo una transición de falso a verdadero de la
condición de entrada de renglón para comenzar la ejecución.
La instrucción continúa ejecutando el número especificado de
elementos en cada escán hasta concluir, independientemente
del estado de la condición de entrada de renglón.
• El modo incremental requiere que la condición de entrada de
renglón cambie de falso a verdadero para manipular un
elemento de la matriz.
334
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Aritmética y lógica de
archivo (FAL)
Capítulo 8
La instrucción FAL realiza operaciones de copia, aritméticas, lógicas y
funciones en los datos almacenados en una matriz.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Control
CONTROL
tag
estructura de control para la
operación
Length
DINT
inmediato
número de elementos en la matriz que
se manipularán
Position
DINT
inmediato
elemento actual en la matriz
el valor inicial es típicamente 0
Mode
DINT
inmediato
cómo distribuir la operación
seleccione INC, ALL o introduzca un
número
Destination
SINT
tag
tag para almacenar el resultado
SINT
inmediato
INT
tag
una expresión que consiste en tags
y/o valores inmediatos separados por
operadores
INT
DINT
REAL
Expression
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Texto estructurado
El texto estructurado no cuenta con la instrucción FAL, pero usted
puede lograr los mismos resultados usando una instrucción SIZE y
una construcción FOR...DO u otra construcción de lazo.
SIZE(destination,0,length-1);
FOR position = 0 TO length DO
destination[position] := numeric_expression;
END_FOR;
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las construcciones en texto
estructurado.
Publicación 1756-RM003K-ES-P – Julio 2008
335
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción FAL está habilitada.
.DN
BOOL
El bit de efectuado se establece cuando la instrucción ha efectuado la operación en el último
elemento (.POS = .LEN).
.ER
BOOL
El bit de error se establece si la expresión genera un overflow (se establece S:V). La
instrucción detiene la ejecución hasta que el programa borra el bit .ER. El valor .POS contiene
la posición del elemento que causó el overflow.
.LEN
DINT
La longitud especifica el número de elementos de la matriz sobre el que opera la instrucción
FAL.
.POS
DINT
La posición contiene la posición del elemento actual al cual la instrucción obtiene acceso.
Descripción: La instrucción FAL realiza las mismas operaciones en las matrices que
la instrucción CPT realiza en los elementos.
Los ejemplos que aparecen a partir de la página 342 describen cómo
usar el valor .POS para procesar una matriz. Si un subíndice de la
expresión de Destination se encuentra fuera de rango, la instrucción
FAL genera un fallo mayor (tipo 4, código 20).
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
336
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
el subíndice está fuera de rango
4
20
.POS < 0 o .LEN < 0
4
21
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
examine el
bit .DN
Bit .DN = 0
modo INC
se borra el bit interno
sí
bit .DN = 1
el bit .EN se borra
el bit .ER se borra
el bit .DN se borra
el valor .POS se borra
no
el bit .EN se borra
modo ALL
no
sí
.LEN < 0 o
.POS < 0
sí
fallo mayor
no
.POS = .POS + 1
sí
.LEN = 0
no
.POS = 0
sí
no
no
.POS < .LEN
sí
.POS = .POS - 1
.LEN > modo
el bit .DN se establece
el bit .EN se establece
no
sí
modo = .LEN
el bit .DN se
establece
el bit .EN se borra
modo
numérico
página 341
la condición de salida de
renglón se establece como
falsa
fin
Publicación 1756-RM003K-ES-P – Julio 2008
337
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Condición
Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
sí
.LEN < 0 o
.POS < 0
examinar el
bit .ER
página 341
fallo mayor
modo
numérico
Bit .ER = 0
no
no
bit .DN = 0
bit .ER = 1
examinar el
bit .DN
no
.LEN = 0
bit .DN = 1
sí
el bit .DN se establece
el bit .EN se establece
no
modo INC
modo ALL
sí
sí
modo
INC
modo
ALL
página 340
página 339
común
loop_count =
loop_count - 1
loop_count < 0
no
.POS = .POS + 1
sí
evaluar la expresión
examinar S:V
no
sí
el bit .ER se establece
.POS = .POS + 1
.POS = .LEN
no
sí
el bit .DN se establece
el bit .EN se establece
.POS = .POS + 1
la condición de salida de
renglón se establece como
verdadera
fin
338
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Condición
Capítulo 8
Acción de lógica de escalera de relés
modo
INC
bit .EN = 1
examinar el
bit .EN
bit .EN = 0
bit = 1
examinar el
bit interno
.POS = .POS + 1
bit = 0
el bit interno se establece
.POS ≥ .LEN
sí
.POS = 0
sí
no
no
el bit .EN se
establece
loop_count = 1
.POS = .POS - 1
.POS = .POS - 1
el bit .DN se establece
el bit .EN se establece
común
página 338
la condición de salida de
renglón se establece como
verdadera
fin
Publicación 1756-RM003K-ES-P – Julio 2008
339
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Condición
Acción de lógica de escalera de relés
modo
ALL
examinar el
bit .EN
bit .EN = 1
.POS = .POS + 1
bit .EN = 0
bit = 1
examinar el
bit interno
bit = 0
el bit .EN se establece
.POS ≥ .LEN
sí
no
.POS = 0
sí
no
loop_count = .LEN - .POS
.POS = .POS - 1
.POS = .POS - 1
el bit .DN se establece
el bit .EN se establece
común
la condición de salida de
renglón se establece como
verdadera
página 338
fin
340
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Condición
Capítulo 8
Acción de lógica de escalera de relés
modo
numérico
bit .EN = 1
examinar el
bit .EN
bit .EN = 0
.POS = .POS + 1
bit = 1
examinar el
bit interno
bit = 0
el bit interno se establece
.POS ≥ .LEN
sí
.POS = 0
no
no
modo = .LEN
no
sí
.POS = .POS - 1
.LEN ≥ modo
sí
el bit .DN se establece
el bit .EN se establece
el bit .EN se establece
loop_count = .LEN - .POS
.POS = .POS - 1
la condición de salida de
renglón se establece como
verdadera
fin
modo ≥
loop_count
no
sí
común
página 338
el bit .EN se establece
loop_count = modo
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
341
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejemplo 1: Una vez habilitada, la instrucción FAL copia cada elemento de
array_2 en la misma posición dentro de array_1.
copia de matriz a matriz
Expresión:
array_2[control_2.pos]
Destino:
array_1[control_2.pos]
Ejemplo 2: Una vez habilitada, la instrucción FAL copia value_1 en las
10 primeras posiciones de la segunda dimensión de array_2.
copia de elemento a matriz
Expresión:
value_1
Destino:
array_2[0,control_2.pos]
Ejemplo 3: Cada vez que la instrucción FAL se habilita, copia el valor actual de
array_1 a value_1. La instrucción FAL usa el modo incremental; por
lo tanto, sólo se copia un valor de matriz cada vez que se habilita la
instrucción. La próxima vez que se habilita la instrucción, ésta
sobrescribe value_1 con el siguiente valor en array_1.
copia de matriz a elemento
Expresión:
array_1[control_1.pos]
Destino:
value_1
Ejemplo 4: Cuando se habilita, la instrucción FAL suma value_1 y value_2 y
almacena el resultado en la posición actual de array_1.
operación aritmética: (elemento + elemento) a matriz
Expresión:
value_1 + value_2
342
Destino:
array_1[control_1.pos]
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Ejemplo 5: Cuando se habilita, la instrucción FAL divide el valor en la posición
actual de array_2 entre el valor de la posición actual de array_3 y
almacena el resultado en la posición actual de array_1.
operación aritmética: (matriz/matriz) a matriz
Expresión:
array_2[control_2.pos] / array_3[control_2.pos]
Destino:
array_1[control_2.pos]
Ejemplo 6: Cuando se habilita, la instrucción FAL suma el valor en la posición
actual en array_1 y value_1, y almacena el resultado en la posición
actual en array_3. La instrucción debe ejecutarse 10 veces para que se
manipulen array_1 y array_3 por completo.
operación aritmética: (matriz + elemento) a matriz
Expresión:
array_1[control_1.pos] + value_1
Destino:
array_3[control_1.pos]
Ejemplo 7: Cada vez que la instrucción FAL se habilita, suma value_1 al valor
actual de array_1 y almacena el resultado en value_2. La instrucción
FAL usa el modo incremental; por lo tanto, sólo se suma un valor de
matriz a value_1 cada vez que se habilita la instrucción. La siguiente
vez que se habilita la instrucción, ésta sobrescribe value_2.
operación aritmética: (elemento + matriz) a elemento
Expresión:
value_1 + array_1[control_1.pos]
Publicación 1756-RM003K-ES-P – Julio 2008
Destino:
value_2
343
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejemplo 8: Cuando se habilita, la instrucción FAL multiplica el valor actual de
array_1 por el valor actual de array_3 y almacena el resultado en
value_1. La instrucción FAL usa el modo incremental; por lo tanto,
sólo una pareja de valores de matriz se multiplica cada vez que se
habilita la instrucción. La próxima vez que se habilita la instrucción,
ésta sobrescribe value_1.
operación aritmética: (matriz ∗ matriz) a elemento
Expresión:
array_1[control_1.pos] * array_3[control_1.pos]
Destino:
value_1
Expresiones FAL
Usted programa las expresiones en las instrucciones FAL de la misma
manera que las expresiones en las instrucciones CPT. Use las
siguientes secciones para obtener información sobre operadores,
formato y orden de operación válidos que son comunes para ambas
instrucciones.
344
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Operadores válidos
Operador
Descripción
Óptimo
Operador
Descripción
Óptimo
+
sumar
DINT, REAL
LOG
logaritmo base 10
REAL
-
restar/cambiar signo
DINT, REAL
MOD
módulo de división
DINT, REAL
*
multiplicar
DINT, REAL
NOT
DINT
/
dividir
DINT, REAL
complemento a nivel
de bits
**
exponente (x a la y)
DINT, REAL
OR
O a nivel de bits
DINT
ABS
valor absoluto
DINT, REAL
RAD
grados a radianes
DINT, REAL
ACS
arco coseno
REAL
SIN
seno
REAL
AND
Y a nivel de bits
DINT
SQR
raíz cuadrada
DINT, REAL
ASN
arco seno
REAL
TAN
tangente
REAL
ATN
arco tangente
REAL
TOD
entero a BCD
DINT
COS
coseno
REAL
TRN
truncar
DINT, REAL
DEG
radianes a grados
DINT, REAL
XOR
O exclusivo a nivel de
bits
DINT
FRD
BCD a entero
DINT
LN
logaritmo natural
REAL
Expresiones de formato
Por cada operador que use en una expresión, usted tiene que
proporcionar uno o dos operandos (tags o valores inmediatos). Use la
siguiente tabla para formatear operadores y operandos dentro de una
expresión:
Para operadores
que operan en
Use este formato
Ejemplos
un operando
operador(operando)
ABS(tag_a)
dos operandos
operando_a operador operando_b
• tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f /
tag_g)
Publicación 1756-RM003K-ES-P – Julio 2008
345
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Determine el orden de operación
Las operaciones que usted escribe en la expresión son realizadas por
la instrucción en un orden prescrito, que no es necesariamente el
orden en que usted las escribe. Usted puede cambiar el orden de
operación agrupando términos dentro de paréntesis, forzando la
instrucción para que realice una operación dentro del paréntesis antes
de otras operaciones.
Las operaciones de igual orden se realizan de izquierda a derecha.
346
Orden
Operación
1.
()
2.
ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG,
RAD, SIN, SQR, TAN, TOD, TRN
3.
**
4.
− (cambiar signo), NOT
5.
*, /, MOD
6.
− (restar), +
7.
AND
8.
XOR
9.
OR
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Búsqueda y comparación
de archivos (FSC)
Capítulo 8
La instrucción FSC compara los valores en una matriz, elemento por
elemento.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Control
CONTROL
tag
estructura de control para la operación
Length
DINT
inmediato
número de elementos en la matriz que se
manipularán
Position
DINT
inmediato
offset en la matriz
el valor inicial es típicamente 0
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción FSC está habilitada.
.DN
BOOL
El bit de efectuado se establece cuando la instrucción ha efectuado la operación en el último
elemento (.POS = .LEN).
.ER
BOOL
El bit de error no se modifica.
.IN
BOOL
El bit de inhibición indica que la instrucción FSC ha detectado una comparación verdadera.
Usted debe borrar este bit para poder continuar la operación de buscar.
.FD
BOOL
El bit de encontrado indica que la instrucción FSC ha detectado una comparación verdadera.
.LEN
DINT
La longitud especifica el número de elementos en la matriz sobre el que opera la instrucción.
.POS
DINT
La posición contiene la posición del elemento actual al cual la instrucción obtiene acceso.
Descripción: Cuando la instrucción FSC está habilitada y la comparación es
verdadera, la instrucción establece el bit .FD y el bit .POS refleja la
posición de la matriz donde la instrucción encontró la comparación
verdadera. La instrucción establece el bit .IN para interrumpir la
búsqueda.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Publicación 1756-RM003K-ES-P – Julio 2008
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
.POS < 0 o .LEN < 0
4
21
347
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
examinar el
bit .DN
bit .DN = 0
bit .DN = 1
el bit .EN se borra
el bit .ER se borra
el bit .DN se borra
el valor .POS se borra
modo INC
no
se borra el bit interno
sí
el bit .EN se borra
modo ALL
no
sí
.LEN < 0 o
.POS < 0
sí
fallo mayor
no
.POS = .POS + 1
sí
.LEN = 0
no
.POS = 0
sí
no
no
.POS < .LEN
sí
.POS = .POS - 1
.LEN > modo
el bit .DN se establece
el bit .EN se establece
no
sí
modo = .LEN
el bit .DN se
establece
el bit .EN se borra
modo
numérico
la condición de salida de
renglón se establece como
falsa
página 341
fin
348
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Condición
Capítulo 8
Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
.LEN < 0 o
.POS < 0
examinar el
bit .ER
sí
página 341
fallo mayor
modo
numérico
bit .ER = 0
no
no
bit .DN = 0
bit .ER = 1
bit .DN = 1
examinar el
bit .IN
.LEN = 0
no
sí
bit .IN = 0
el bit .DN se establece
el bit .EN se establece
bit .DN = 1
examinar el
bit .DN
no
modo INC
modo ALL
sí
sí
modo
INC
modo
ALL
página 340
página 339
común
bit .DN = 0
loop_count =
loop_count - 1
loop_count < 0
no
.POS = .POS + 1
sí
evalúe la comparación
coincidencia
no
sí
el bit .EN se establece
el bit .FD se establece
el bit .IN se establece
.POS = .POS + 1
.POS = .LEN
no
sí
el bit .DN se establece
el bit .EN se establece
.POS = .POS + 1
la condición de salida de renglón
se establece como verdadera
fin
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
349
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejemplo 1: Buscar una coincidencia entre dos matrices. Una vez habilitada, la
instrucción FSC compara cada uno de los 10 primeros elementos en
array_1 con los elementos correspondientes en array_2.
array_1
array_2
control_3.pos
00000000000000000000000000000000
00000000000000000000000000000000
0
00000000000000000000000000000000
00000000000000000000000000000000
1
00000000000000000000000000000000
00000000000000000000000000000000
2
00000000000000000000000000000000
00000000000000000000000000000000
3
00000000000000001111111111111111
11111111111111110000000000000000
4
11111111111111111111111111111111
11111111111111111111111111111111
5
11111111111111111111111111111111
11111111111111111111111111111111
6
11111111111111111111111111111111
11111111111111111111111111111111
7
11111111111111111111111111111111
11111111111111111111111111111111
8
11111111111111111111111111111111
11111111111111111111111111111111
9
350
La instrucción FSC determina que estos
elementos son diferentes. La instrucción
establece los bits .FD e .IN. El valor .POS (4)
indica la posición de los elementos que son
diferentes. Para continuar comparando el
resto de la matriz, borre el bit .IN.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Ejemplo 2: Buscar una coincidencia en una matriz. Cuando se habilita, la
instrucción FSC compara MySearchKey con 10 elementos en array_1.
MySearchKey
11111111111111110000000000000000
Publicación 1756-RM003K-ES-P – Julio 2008
referencia
control_3.pos
00000000000000000000000000000000
0
00000000000000000000000000000000
1
00000000000000000000000000000000
2
00000000000000000000000000000000
3
11111111111111110000000000000000
4
11111111111111111111111111111111
5
11111111111111111111111111111111
6
11111111111111111111111111111111
7
11111111111111111111111111111111
8
11111111111111111111111111111111
9
La instrucción FSC determina que este
elemento de matriz es igual a
MySearchKey. La instrucción establece los
bits .FD e .IN. El valor .POS (4) indica la
posición de los elementos que son iguales.
Para continuar comparando el resto de la
matriz, borre el bit .IN.
351
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejemplo 3: Buscar una cadena en una matriz de cadenas. Cuando se habilita, la
instrucción FSC compara los caracteres en code con 10 elementos en
code_table.
code
SAM
code_table
code_table_search.POS
AFG
0
BEH
1
HUO
2
SAK
3
SAM
4
FQG
5
CLE
6
CAK
7
DET
8
BWG
9
La instrucción FSC determina que este
elemento de la matriz es igual a code.
La instrucción establece los bits .FD e .IN.
El valor .POS (4) indica la posición de los
elementos que son iguales. Para continuar
comparando el resto de la matriz, borre el
bit .IN.
Expresiones FSC
Usted programa las expresiones en las instrucciones FSC de la misma
manera que las expresiones en las instrucciones CMP. Use las
siguientes secciones para obtener información sobre operadores,
formato y orden de operación válidos que son comunes para ambas
instrucciones.
352
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Operadores válidos
Operador
Descripción
Óptimo
Operador
Descripción
Óptimo
+
sumar
DINT, REAL
DEG
radianes a grados
DINT, REAL
-
restar/cambiar signo
DINT, REAL
FRD
BCD a entero
DINT
*
multiplicar
DINT, REAL
LN
logaritmo natural
REAL
/
dividir
DINT, REAL
LOG
logaritmo base 10
REAL
=
igual que
DINT, REAL
MOD
módulo de división
DINT, REAL
<
menor que
DINT, REAL
NOT
DINT
<=
menor o igual que
DINT, REAL
complemento a nivel
de bits
>
mayor que
DINT, REAL
OR
O a nivel de bits
DINT
>=
mayor o igual que
DINT, REAL
RAD
grados a radianes
DINT, REAL
<>
diferente de
DINT, REAL
SIN
seno
REAL
**
exponente (x a la y)
DINT, REAL
SQR
raíz cuadrada
DINT, REAL
ABS
valor absoluto
DINT, REAL
TAN
tangente
REAL
ACS
arco coseno
REAL
TOD
entero a BCD
DINT
AND
Y a nivel de bits
DINT
TRN
truncar
DINT, REAL
ASN
arco seno
REAL
XOR
O exclusivo a nivel de
bits
DINT
ATN
arco tangente
REAL
COS
coseno
REAL
Expresiones de formato
Por cada operador que use en una expresión, usted tiene que
proporcionar uno o dos operandos (tags o valores inmediatos). Use la
siguiente tabla para formatear operadores y operandos dentro de una
expresión:
Para operadores
que operan en
Use este formato
Ejemplos
un operando
operador(operando)
ABS(tag_a)
dos operandos
operando_a operador operando_b
• tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f /
tag_g)
Publicación 1756-RM003K-ES-P – Julio 2008
353
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Determine el orden de operación
Las operaciones que usted escribe en la expresión son realizadas por
la instrucción en un orden prescrito, que no es necesariamente el
orden en que usted las escribe. Usted puede anular el orden de
operación agrupando términos dentro de paréntesis, forzando a la
instrucción para que realice una operación dentro del paréntesis antes
de otras operaciones.
Las operaciones de igual orden se realizan de izquierda a derecha.
354
Orden
Operación
1.
()
2.
ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG,
RAD, SIN, SQR, TAN, TOD, TRN
3.
**
4.
− (cambiar signo), NOT
5.
*, /, MOD
6.
<, <=, >, >=, =
7.
− (restar), +
8.
AND
9.
XOR
10.
OR
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Use cadenas en una expresión
Para usar cadenas de caracteres ASCII en una expresión, siga estas
pautas:
• Una expresión le permite comparar dos tags de cadena.
• Usted no puede introducir caracteres ASCII directamente en la
expresión.
• Sólo se permiten los siguientes operadores
Operador
Descripción
=
igual que
<
menor que
<=
menor o igual que
>
mayor que
>=
mayor o igual que
<>
diferente de
• Las cadenas son iguales si sus caracteres coinciden.
• Los caracteres ASCII permiten distinguir mayúsculas de
minúsculas. La “A” mayúscula ($41) es diferente a la “a”
minúscula ($61).
• Los valores hexadecimales de los caracteres determinan si una
cadena es mayor o menor que otra cadena. Para obtener el
código hexadecimal de un carácter, remítase a la contraportada
de este manual.
• Cuando las dos cadenas se clasifican como en un directorio
telefónico, el orden de las cadenas determina cuál es mayor.
m
e
n
o
r
Publicación 1756-RM003K-ES-P – Julio 2008
m
a
y
o
r
Caracteres ASCII
Códigos
hexadecimales
1ab
$31$61$62
1b
$31$62
A
$41
AB
$41$42
B
$42
a
$61
ab
$61$62
AB < B
a>B
355
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Copiar archivo (COP)
Copiar archivo síncrono
(CPS)
Las instrucciones COP y CPS copian el o los valores de Source en
Destination. Source no cambia.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
tag
elemento inicial que se copia
INT
Importante: Los operandos Source y
Destination deben ser del mismo tipo; de lo
contrario, pueden ocurrir resultados
inesperados.
DINT
REAL
cadena
estructura
Destination
SINT
tag
el elemento inicial que va a ser sobrescrito
por Source
INT
Importante: Los operandos Source y
Destination deben ser del mismo tipo; de lo
contrario, pueden ocurrir resultados
inesperados.
DINT
REAL
cadena
estructura
Length
DINT
inmediato
número de elementos de destino que se
copian
tag
Texto estructurado
COP(Source,Dest,Length);
CPS(Source,Dest,Length);
356
Los operandos son iguales que los de las instrucciones COP y CPS de
lógica de escalera de relés.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Descripción: Durante la ejecución de las instrucciones COP y CPS, es posible que
otras acciones del controlador puedan intentar interrumpir la
operación de copia y cambiar los datos de origen o destino:
Si Source o Destination es
• tag producido
• tag consumido
Y usted desea
Entonces
seleccione
evitar que los datos cambien durante
la operación de copia
CPS
• datos de E/S
• datos que otra tarea puede
sobrescribir
Notas
• Las tareas que intentan interrumpir
una instrucción CPS se suspenden
hasta que haya finalizado la
instrucción.
• Para calcular el tiempo de ejecución
de la instrucción CPS, consulte el
documento ControlLogix System User
Manual, publicación 1756-UM001.
permitir que los datos cambien
durante la operación de copia
ninguno de los anteriores
COP
COP
El número de bytes copiados es:
Conteo de bytes = Length ∗ (número de bytes en el tipo de datos de
Destination)
ATENCIÓN
IMPORTANTE
Si el conteo de bytes es mayor que la longitud de Source, se copian datos
inesperados para el resto de los elementos.
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
Las instrucciones COP y CPS operan en memoria contigua. Realizan una copia de
memoria directa byte a byte. En algunos casos, escriben más allá de la matriz en
otros miembros del tag. Esto sucede si la longitud es excesiva y el tag es de un tipo
de datos definido por el usuario.
Si el tag es
Entonces
tipo de datos definido por Si Length es demasiado grande, la instrucción escribe más
el usuario
allá del final de la matriz a otros miembros del tag. Se detiene
al final del tag. No se genera un fallo mayor.
NO es un tipo de datos
definido por el usuario
Si Length es demasiado grande, la instrucción se detiene al
final de la matriz. No se genera un fallo mayor.
Length es demasiado grande si es mayor que el número total de elementos en la
matriz Destination.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
357
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
end_address = start_address + (Length ∗
número de bytes en un elemento de
destino)
end_address > fin
de matriz de
destino
sí
end_address = fin de matriz de destino
no
source_address = Source
destination_address =
end_address
sí
no
copiar datos en source_address a
destination_address
la condición de salida de
renglón se establece como
verdadera
source_address = source_address + 1
fin
destination_address =
destination_address + 1
post-escán
358
La condición de salida de renglón se establece como
falsa.
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Ejemplo 1: Tanto array_4 como array_5 son del mismo tipo de datos. Cuando se
habilita, la instrucción COP copia los primeros 10 elementos de
array_4 en los primeros 10 elementos de array_5.
Lógica de escalera de relés
Texto estructurado
COP(array_4[0],array_5[0],10);
Ejemplo 2: Cuando se habilita, la instrucción COP copia la estructura timer_1 en
el elemento 5 de array_timer. La instrucción copia sólo una estructura
a un elemento de matriz.
Lógica de escalera de relés
Texto estructurado
COP(timer_1,array_timer[5],1);
Publicación 1756-RM003K-ES-P – Julio 2008
359
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejemplo 3: La matriz project_data (100 elementos) almacena una variedad de
valores que cambian en momentos diferentes en la aplicación. Para
enviar una imagen completa de project_data en una instancia a
tiempo a otro controlador, la instrucción CPS copia project_data en
produced_array.
• Mientras la instrucción CPS copia los datos, las actualizaciones
de E/S u otras tareas no pueden cambiar los datos.
• El tag produced_array produce los datos en una red ControlNet
para el consumo por parte de otros controladores.
• Para usar la misma imagen de datos (p. ej., copiar los datos de
manera sincronizada), el o los controladores consumidores usan
una instrucción CPS para copiar los datos desde el tag
consumido a otro tag para uso en la aplicación.
Lógica de escalera de relés
Texto estructurado
CPS(project_data[0],produced_array[0],100);
Ejemplo 4: Local:0:I.Data almacena los datos de entrada para la red DeviceNet
conectada al módulo 1756-DNB en la ranura 0. Para sincronizar las
entradas con la aplicación, la instrucción CPS copia los datos de
entrada en input_buffer.
• Mientras la instrucción CPS copia los datos, las actualizaciones
de E/S no pueden cambiar los datos.
• A medida que se ejecuta la aplicación, ésta usa para sus entradas
los datos de entrada en input_buffer.
Lógica de escalera de relés
Texto estructurado
CPS(Local:0:I.Data[0],input_buffer[0],20);
360
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Ejemplo 5: Este ejemplo inicializa una matriz de estructuras de temporizador.
Cuando se habilita, la instrucción MOV inicializa los valores .PRE y
.ACC del primer elemento array_timer. Una vez habilitada, la
instrucción COP copia un bloque contiguo de bytes a partir de
array_timer[0]. La longitud es nueve estructuras de temporizador.
array_timer[0]
Primero la instrucción copia los
valores de timer[0] a timer[1]
array_timer[1]
Seguidamente la instrucción copia
los valores de timer[1] a timer[2]
array_timer[2]
Seguidamente la instrucción copia
los valores de timer[2] a timer[3]
array_timer[3]
Seguidamente la instrucción copia
los valores de timer[3] a timer[4]
array_timer[4]
•
•
•
array_timer[9]
Finalmente, la instrucción copia los
valores de timer[9] a timer[10]
array_timer[10]
Lógica de escalera de relés
Texto estructurado
IF S:FS THEN
array_timer[0].pre := 500;
array_timer[0].acc := 0;
COP(array_timer[0],array_timer[1],10);
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
361
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Llenar archivo (FLL)
La instrucción FLL llena los elementos de una matriz con el valor de
Source. Source no cambia.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato:
Descripción
Source
SINT
inmediato
elemento que se copia
INT
tag
Importante: Los operandos Source y
Destination deben ser del mismo tipo; de lo
contrario. pueden ocurrir resultados
inesperados
tag
elemento inicial que va a ser sobrescrito por
Source
DINT
REAL
Destination
SINT
INT
Importante: Los operandos Source y
Destination deben ser del mismo tipo; de lo
contrario, pueden ocurrir resultados
inesperados
DINT
REAL
El método preferido para inicializar una
estructura es mediante la instrucción COP.
estructura
Length
DINT
inmediato
número de elementos que se llenan
Texto estructurado
El texto estructurado no cuenta con la instrucción FLL, pero usted
puede lograr los mismos resultados usando una instrucción SIZE y
una construcción FOR...DO u otra construcción de lazo.
SIZE(destination,0,length);
FOR position = 0 TO length-1 DO
destination[position] := source;
END_FOR;
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las construcciones en texto
estructurado.
362
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Descripción: El número de bytes llenados es:
Conteo de bytes = Length ∗ (número de bytes en el tipo de datos de
Destination)
IMPORTANTE
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción FLL realiza la operación en la memoria de datos contiguos. En algunos
casos, la instrucción escribe más allá de la matriz en otros miembros del tag. Esto
sucede si la longitud es excesiva y el tag es de un tipo de datos definido por el
usuario.
Si el tag es
Entonces
tipo de datos definido por Si la longitud es demasiado grande, la instrucción escribe más
el usuario
allá del final de la matriz a otros miembros del tag. Se detiene
al final del tag. No se genera un fallo mayor.
NO es un tipo de datos
definido por el usuario
Si Length es demasiado grande, la instrucción se detiene al
final de la matriz. No se genera un fallo mayor.
Length es demasiado grande si es mayor que el número total de elementos en la
matriz Destination.
Para obtener los mejores resultados, Source y Destination deben ser
del mismo tipo. Si usted desea llenar una estructura, use la instrucción
COP (vea el ejemplo 3 en la página 359). Si mezcla diferentes tipos de
datos para Source y Destination, los elementos de Destination se
llenan con los valores de Source convertidos.
Si Source es
Y Destination es
Source se convierte en
SINT, INT, DINT o REAL
SINT
SINT
SINT, INT, DINT o REAL
INT
INT
SINT, INT, DINT o REAL
DINT
DINT
SINT, INT, DINT o REAL
REAL
REAL
SINT
estructura
SINT (no se convierte)
INT
estructura
INT (no se convierte)
DINT
estructura
DINT (no se convierte)
REAL
estructura
REAL (no se convierte)
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
363
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
end_address = start_address + (Length ∗
número de bytes en un elemento de
destino)
sí
end_address > fin
de una matriz de
destino
end_address = fin de una matriz de destino
no
source_address = Source
destination_address =
end_address
sí
no
copiar los datos en source_address a
destination _address
destination_address =
destination_address + 1
la condición de salida de
renglón se establece como
verdadera
fin
post-escán
364
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Ejemplo: La instrucción FLL copia el valor de value_1 en dest_1
Lógica de escalera de relés
Tipo de datos de
Source (value_1)
Valor de Source
(value_1)
Tipo de datos de
Destination
(dest_1)
Valor de
Destination
(dest_1) después
de FLL
SINT
16#80 (-128)
DINT
16#FFFF FF80 (-128)
DINT
16#1234 5678
SINT
16#78
SINT
16#01
REAL
1.0
REAL
2.0
INT
16#0002
SINT
16#01
TIMER
16#0101 0101
16#0101 0101
16#0101 0101
INT
16#0001
TIMER
16#0001 0001
16#0001 0001
16#0001 0001
DINT
16#0000 0001
TIMER
16#0000 0001
16#0000 0001
16#0000 0001
Texto estructurado
dest_1 := value _1;
Publicación 1756-RM003K-ES-P – Julio 2008
365
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Promedio de archivo (AVE)
La instrucción AVE calcula el promedio de un conjunto de valores.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Array
SINT
tag de
matriz
hallar el promedio de los valores en esta
matriz
INT
Dimension
to vary
DINT
especificar el primer elemento del grupo de
elementos que se va a promediar
REAL
no usar CONTROL.POS en el subíndice
DINT
inmediato
qué dimensión usar
(0, 1, 2)
según el número de dimensiones, el orden es
array[dim_0,dim_1,dim_2]
array[dim_0,dim_1]
array[dim_0]
Destination
SINT
tag
resultado de la operación
INT
DINT
REAL
Control
CONTROL
tag
estructura de control para la operación
Length
DINT
inmediato
número de elementos de la matriz que se va
a promediar
Position
DINT
inmediato
elemento actual en la matriz
el valor inicial es típicamente 0
Texto estructurado
El texto estructurado no cuenta con la instrucción AVE, pero usted
puede lograr los mismos resultados usando una instrucción SIZE y
una construcción FOR...DO u otra construcción de lazo.
SIZE(array,0,length);
sum := 0;
FOR position = 0 TO length-1 DO
sum := sum + array[position];
END_FOR;
destino := sum / length;
366
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las construcciones en texto
estructurado.
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción AVE está habilitada.
.DN
BOOL
El bit de efectuado se establece cuando la instrucción ha realizado una operación en el
último elemento de la matriz (.POS = .LEN).
.ER
BOOL
Se establece el bit de error si la instrucción genera un overflow. La instrucción detiene la
ejecución hasta que el programa borra el bit .ER. La posición del elemento que causó el
overflow se almacena en el valor .POS.
.LEN
DINT
La longitud especifica el número de elementos en la matriz sobre el que opera la instrucción.
.POS
DINT
La posición contiene la posición del elemento actual al cual la instrucción obtiene acceso.
Descripción: La instrucción AVE calcula el promedio de un conjunto de valores.
IMPORTANTE
Asegúrese de que la longitud no haga que la instrucción exceda
la Dimension to vary especificada. Si ocurre esto, el destino
será incorrecto.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Publicación 1756-RM003K-ES-P – Julio 2008
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
.POS < 0 o .LEN < 0
4
21
Dimension to vary no existe en la matriz
especificada
4
20
367
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit .EN se borra.
El bit .DN se borra.
El bit .ER se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
examinar el bit .DN
bit .DN = 0
bit .DN = 1
el bit .EN se borra
el bit .ER se borra
el bit .DN se borra
el valor .POS se borra
la condición de salida de
renglón se establece como
falsa
fin
condición de entrada de renglón es verdadera
La instrucción AVE calcula el promedio sumando todos los elementos especificados en
la matriz y dividiendo el resultado entre el número de elementos.
Internamente, la instrucción usa una instrucción FAL para calcular el promedio:
Expresión = cálculo de promedio
Modo = ALL
Para obtener detalles sobre cómo se ejecuta la instrucción FAL, vea la página 337.
post-escán
368
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Ejemplo 1: Promediar array_dint, el cual es DINT[4,5].
su
dimensión 1
d
bín
1
2
3
4
0
20
19
18
17
16
1
15
14
13
12
11
2
10
9
8
7
6
3
5
4
3
2
1
s
ice
0
dimensión 0
+ 14 + 9 + 4- = 46
AVE = 19
----------------------------------------- = 11.5
4
4
dint_ave = 12
Lógica de escalera de relés
Texto estructurado
SIZE(array_dint,0,length);
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + array_dint[position];
END_FOR;
dint_ave := sum / length;
Publicación 1756-RM003K-ES-P – Julio 2008
369
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejemplo 2: Promediar array_dint, el cual es DINT[4,5].
b
su
dimensión 1
índ
1
2
3
4
0
20
19
18
17
16
1
15
14
13
12
11
2
10
9
8
7
6
3
5
4
3
2
1
ice
0
s
dimensión 0
+ 4 + 3 + 2 + 1- = 15
AVE = 5-------------------------------------------- = 3
5
5
dint_ave = 3
Lógica de escalera de relés
Texto estructurado
SIZE(array_dint,1,length);
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + array_dint[position];
END_FOR;
dint_ave := sum / length;
370
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Clasificación de archivo
(SRT)
Capítulo 8
La instrucción SRT clasifica un conjunto de valores en una dimensión
(Dim to vary) de la matriz en orden ascendente.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Array
SINT
tag de
matriz
matriz que se clasifica
INT
especificar el primer elemento del grupo de
elementos que se clasifica
DINT
no use CONTROL.POS en el subíndice
REAL
Dimension
to vary
DINT
inmediato
qué dimensión usar
(0, 1, 2)
según el número de dimensiones, el orden
es:
array[dim_0,dim_1,dim_2]
array[dim_0,dim_1]
array[dim_0]
Control
CONTROL
tag
estructura de control para la operación
Length
DINT
inmediato
número de elementos en la matriz que se
clasifica
Position
DINT
inmediato
elemento actual en la matriz
el valor inicial es típicamente 0
Texto estructurado
SRT(Array,Dimtovary,
Control);
Los operandos son los mismos que para la instrucción SRT de lógica
de escalera de relés. Sin embargo, usted especifica los valores de
Length y Position al acceder a los miembros .LEN y .POS de la
estructura CONTROL, en lugar de incluir los valores en la lista de
operandos.
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción SRT está habilitada.
.DN
BOOL
Se establece el bit de efectuado cuando los elementos especificados se han clasificado.
.ER
BOOL
Se establece el bit de error cuando .LEN < 0 o .POS < 0. Cualquiera de estas condiciones
también genera un fallo mayor.
.LEN
DINT
La longitud especifica el número de elementos en la matriz en que la instrucción realiza una
operación.
.POS
DINT
La posición contiene la posición del elemento actual al cual la instrucción obtiene acceso.
Publicación 1756-RM003K-ES-P – Julio 2008
371
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Descripción: La instrucción SRT clasifica un conjunto de valores en una dimensión
(Dimension to vary) de la matriz en orden ascendente.
IMPORTANTE
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción SRT realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción cambia datos en otros miembros del tag. Esto sucede
si la longitud es excesiva y el tag es de un tipo de datos definido por el usuario.
IMPORTANTE
Asegúrese de que la longitud no haga que la instrucción exceda la Dimension to
vary especificada. Si ocurre esto, ocurrirán resultados inesperados.
Ésta es una instrucción transicional:
• En lógica de escalera de relés, cambie la condición de entrada
del renglón de borrado a establecido cada vez que deba
ejecutarse la instrucción.
• En texto estructurado, condicione la instrucción de manera
que sólo se ejecute cuando ocurra una transición. Consulte el
Apéndice C, Programación de texto estructurado.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
372
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
.POS < 0 o .LEN < 0
4
21
La dimensión que se va a variar no existe
para la matriz especificada
4
20
La instrucción intenta obtener acceso a los 4
datos fuera de los límites de la matriz.
20
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
El bit .EN se borra.
El bit .EN se borra.
El bit .DN se borra.
El bit .DN se borra.
El bit .ER se borra.
El bit .ER se borra.
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es falsa
examinar el bit .DN
bit .DN = 0
bit .DN = 1
el bit .EN se borra
el bit .ER se borra
el bit .DN se borra
el valor .POS se borra
la condición de salida de
renglón se establece como
falsa
fin
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción clasifica los elementos especificados
en la matriz en orden ascendente.
La instrucción clasifica los elementos especificados
en la matriz en orden ascendente.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
373
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejemplo 1: Clasifique int _array, que es DINT[4,5].
Después
Antes
0
1
0
20
19
1
15
6
2
1
3
1
2
3
4
0
20
19
18
17
16
1
15
14
13
12
11
2
10
9
8
7
3
5
4
3
2
s
ic e
0
3
4
3
17
16
14
8
12
11
10
9
13
7
6
5
4
18
2
1
es
dic
d
bín
dimensión 0
dimensión 1
bín
su
su
dimensión 1
dimensión 0
2
Lógica de escalera de relés
Texto estructurado
control_1.LEN := 4;
control_1.POS := 0;
SRT(int_array[0,2],0,control_1);
374
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Ejemplo 2: Clasificar int _array, que es DINT[4,5].
Después
Antes
bín
0
1
2
3
4
0
20
19
18
17
16
1
15
14
13
12
11
6
2
6
7
8
9
10
1
3
5
4
3
2
1
2
3
4
0
20
19
18
17
16
1
15
14
13
12
11
2
10
9
8
7
3
5
4
3
2
s
s
1
ice
0
e
dic
índ
dimensión 0
dimensión 1
su
b
su
dimensión 1
dimensión 0
Lógica de escalera de relés
Texto estructurado
control_1.LEN := 5;
control_1.POS := 0;
SRT(int_array[2,0],1,control_1);
Publicación 1756-RM003K-ES-P – Julio 2008
375
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Desviación estándar de
archivo (STD)
La instrucción STD calcula la desviación estándar de un conjunto de
valores en una dimensión de la matriz y almacena el resultado en
Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Array
SINT
tag de
matriz
hallar la desviación estándar de los valores
en esta matriz
INT
especificar el primer elemento del grupo de
elementos que se usan para calcular la
desviación estándar
DINT
REAL
no use CONTROL.POS en el subíndice
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Dimension
to vary
DINT
inmediato
qué dimensión usar
(0, 1, 2)
según el número de dimensiones, el orden
es:
array[dim_0,dim_1,dim_2]
array[dim_0,dim_1]
array[dim_0]
Destination
REAL
tag
resultado de la operación
Control
CONTROL
tag
estructura de control para la operación
Length
DINT
inmediato
el número de elementos de la matriz que se
usa para calcular el desviación estándar
Position
DINT
inmediato
elemento actual en la matriz
el valor inicial es típicamente 0
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción STD está habilitada.
.DN
BOOL
Se establece el bit de efectuado cuando se completa el cálculo.
.ER
BOOL
Se establece el bit de error cuando la instrucción genera un overflow. La instrucción detiene
la ejecución hasta que el programa borra el bit .ER. La posición del elemento que causó el
overflow se almacena en el valor .POS.
.LEN
DINT
La longitud especifica el número de elementos de la matriz sobre el que opera la instrucción.
.POS
DINT
La posición contiene la posición del elemento actual al cual la instrucción obtiene acceso.
376
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Texto estructurado
El texto estructurado no cuenta con la instrucción STD, pero usted
puede lograr los mismos resultados usando una instrucción SIZE y
una construcción FOR...DO u otra construcción de lazo.
SIZE(array,0,length);
sum := 0;
FOR position = 0 TO length-1 DO
sum := sum + array[position];
END_FOR;
average := sum / length;
sum := 0;
FOR position = 0 TO length-1 DO
sum := sum + ((array[position] - average)**2);
END_FOR;
destino := SQRT(sum /(length-1));
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las construcciones en texto
estructurado.
Descripción: La desviación estándar se calcula según la fórmula siguiente:
Desviación estándar =
⎛ N
⎞
2 ⎟
⎜
[
⟨
X
–
AVE
⟩
]
( start + i )
⎜∑
⎟
⎝i = 1
⎠
-------------------------------------------------------------------(N – 1)
Donde:
• inicio = subíndice de la dimensión para variar del operando de
la matriz
• xi = elemento variable en la matriz
• N = número de elementos especificados en la matriz
• AVE =
N
⎛
⎞
⎜
x ( start + i )⎟
⎜
⎟
⎝i = 1
⎠
----------------------------------------N
∑
IMPORTANTE
Publicación 1756-RM003K-ES-P – Julio 2008
Asegúrese de que Length no haga que la instrucción exceda la Dimension to vary
especificada. Si ocurre esto, el destino será incorrecto.
377
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
.POS < 0 o .LEN < 0
4
21
La dimensión que se va a variar no existe
en la matriz especificada
4
20
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit .EN se borra.
El bit .DN se borra.
El bit .ER se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es falsa
examinar el bit .DN
bit .DN = 0
bit .DN = 1
el bit .EN se borra
el bit .ER se borra
el bit .DN se borra
el valor .POS se borra
la condición de salida de
renglón se establece como
falsa
fin
condición de entrada de renglón es verdadera La instrucción STD calcula la desviación estándar de los elementos especificados.
Internamente, la instrucción usa una instrucción FAL para calcular el promedio:
Expresión = cálculo de la desviación estándar
Modo = ALL
Para obtener detalles acerca de cómo se ejecuta la instrucción FAL, vea la página 337.
post-escán
378
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Ejemplo 1: Calcular la desviación estándar de dint_array, que es DINT[4,5].
dimensión 1
su
di c
bín
1
2
3
4
0
20
19
18
17
16
1
15
14
13
12
11
2
10
9
8
7
6
3
5
4
3
2
1
es
0
dimensión 0
+ 11 + 6 + 1- = 34
AVE = 16
----------------------------------------- = 8.5
4
4
2
STD =
2
2
2
⟨ 16 – 8.5⟩ + ⟨ 11 – 8.5⟩ + ⟨ 6 – 8.5⟩ + ⟨ 1 – 8.5⟩ - = 6.454972
-------------------------------------------------------------------------------------------------------------------------⟨ 4 – 1⟩
real_std = 6.454972
Lógica de escalera de relés
Texto estructurado
SIZE(dint_array,0,length);
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + dint_array[position];
END_FOR;
average := sum / length;
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + ((dint_array[position] - average)**2);
END_FOR;
real_std := SQRT(sum / (length-1));
Publicación 1756-RM003K-ES-P – Julio 2008
379
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Ejemplo 2: Calcular la desviación estándar de dint_array, que es DINT[4,5].
dimensión 1
bín
su
1
2
3
4
0
20
19
18
17
16
1
15
14
13
12
11
2
10
9
8
7
6
3
5
4
3
2
1
es
dic
0
dimensión 0
+ 19 + 18 + 17 + 16- = 90
AVE = 20
----------------------------------------------------------- = 18
5
5
2
STD =
2
2
2
2
⟨ 20 – 18⟩ + ⟨ 19 – 18⟩ + ⟨ 18 – 18⟩ + ⟨ 17 – 18⟩ + ⟨ 16 – 18⟩ - = 1.581139
----------------------------------------------------------------------------------------------------------------------------------------------------------⟨ 5 – 1⟩
real_std = 1.581139
Lógica de escalera de relés
Texto estructurado
SIZE(dint_array,1,length);
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + dint_array[position];
END_FOR;
average := sum / length;
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + ((dint_array[position] - average)**2);
END_FOR;
real_std := SQRT(sum / (length-1));
380
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Tamaño en elementos
(SIZE)
Capítulo 8
La instrucción SIZE encuentra el tamaño de una dimensión de una
matriz.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
tag de
matriz
la matriz en la cual la instrucción realizará la
operación
inmediato
(0, 1, 2)
dimensión que se va a usar:
INT
DINT
REAL
estructura
cadena
Dimension
to Vary
Size
DINT
SINT
tag
Para el tamaño de
Introduzca
primera dimensión
0
segunda dimensión
1
tercera dimensión
2
tag para guardar el número de elementos en
la dimensión especificada de la matriz.
INT
DINT
REAL
Texto estructurado
SIZE(Source,Dimtovary,Size);
Los operandos son iguales a los de la instrucción SIZE de lógica de
escalera de relés.
Descripción: La instrucción SIZE halla el número de elementos (tamaño) en la
dimensión designada de la matriz Source y coloca el resultado en el
operando Size.
• La instrucción encuentra el tamaño de una dimensión de una
matriz.
• La instrucción realiza la operación en una:
– matriz
– matriz en una estructura
– matriz que es parte de una matriz más grande
Indicadores de estado
aritmético: no afectados
Publicación 1756-RM003K-ES-P – Julio 2008
381
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Condiciones de fallo: ninguna.
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n .a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción encuentra el tamaño de una
dimensión.
La instrucción encuentra el tamaño de una
dimensión.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo 1: Encuentre el número de elementos en la dimensión 0 (primera
dimensión) de array_a. Almacene el tamaño en array_a_size. En este
ejemplo, la dimensión 0 de array_a tiene 10 elementos.
Lógica de escalera de relés
SIZE
SIZE
Tamaño
elementos
Size inenElements
Source
array_a[0]
Source
array_a[0]
255
255
Dim.
to Vary
Dim.
To Vary
00
Tamaño
array_a_size
Size
array_a_size
1010
Texto estructurado
SIZE(array_a,0,array_a_size);
382
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Capítulo 8
Ejemplo 2: Encuentre el número de elementos en el miembro DATA de string_1,
que es una cadena. Almacene el tamaño en string_1_size. En este
ejemplo, el miembro DATA de string_1 tiene 82 elementos.
(La cadena usa el tipo de datos STRING predeterminado). Puesto que
cada elemento retiene 1 carácter, string_1 puede contener hasta
82 caracteres.
Lógica de escalera de relés
SIZE
SIZE
Tamaño
elementos
Size in en
Elements
Source
string_1.DATA[0]
Source string_1.DATA[0]
’$00’
'$00'
Dim.
Vary
Dim.toTo
Vary
00
Tamaño
string_1_size
Size
string_1_size
82
82
Texto estructurado
SIZE(string_1.DATA[0],0,string_1_size);
Ejemplo 3: Strings_a es una matriz de estructuras de cadenas. La instrucción SIZE
encuentra el número de elementos en el miembro DATA de la
estructura de cadena y almacena el tamaño en data_size_a. En este
ejemplo, el miembro DATA tiene 24 elementos. (La estructura de
cadenas tiene una longitud especificada por el usuario de 24).
Lógica de escalera de relés
SIZE
SIZE
Tamaño
elementos
Size inen
Elements
Source
strings_a[0].DATA[0]
Source strings_a[0].DATA[0]
’$00’
'$00'
Dim.
Vary
Dim.toTo
Vary
00
Tamaño
data_size_a
Size
data_size_a
2424
Texto estructurado
SIZE(strings_a[0].DATA[0],0,data_size_a);
Publicación 1756-RM003K-ES-P – Julio 2008
383
Capítulo 8
Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Notas:
384
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
9
Instrucciones de matriz
(archivo)/desplazamiento
(BSL, BSR, FFL, FFU, LFL, LFU)
Introducción
Use las instrucciones de matriz (archivo)/desplazamiento para
modificar la ubicación de datos dentro de matrices.
Si desea
Use esta instrucción
Cargar bits, desplazar bits y descargar bits de
una matriz de bits, bit por bit.
Cargar y descargar valores en el mismo orden.
Cargar y descargar valores en el orden
invertido.
Disponible en estos lenguajes
Vea la página
BSL
lógica de escalera de relés
386
BSR
lógica de escalera de relés
390
FFL
lógica de escalera de relés
394
FFU
lógica de escalera de relés
400
LFL
lógica de escalera de relés
406
LFU
lógica de escalera de relés
412
Usted puede mezclar diferentes tipos de datos, pero esto puede
causar pérdida de exactitud y errores de redondeo.
Para las instrucciones de lógica de escalera de relés, los tipos de datos
que aparecen en negrita indican tipos de datos óptimos. Las
instrucciones se ejecutan más rápidamente y requieren menos
memoria si todos los operandos de instrucción usan el mismo tipo de
datos óptimos, típicamente DINT o REAL.
385Publicación 1756-RM003K-ES-P – Julio 2008
385
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Desplazamiento de bits a la
izquierda (BSL)
La instrucción BSL desplaza los bits especificados dentro de la matriz
una posición hacia la izquierda.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Array
DINT
tag de
matriz
matriz que se modifica
especificar el primer elemento del grupo de
elementos
no usar CONTROL.POS en el subíndice
Control
CONTROL
tag
estructura de control para la operación
Source bit
BOOL
tag
bit que se desplaza
Length
DINT
inmediato
número de bits en la matriz que se desplazan
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción BSL está habilitada.
.DN
BOOL
Se establece el bit de efectuado para indicar que los bits se han desplazado una posición
hacia la izquierda.
.UL
BOOL
El bit de descarga es la salida de la instrucción. El bit .UL almacena el estado del bit que se
desplazó fuera del rango de los bits.
.ER
BOOL
Se establece el bit de error cuando .LEN < 0.
.LEN
DINT
La longitud especifica el número de bits de matriz que se desplazan.
Descripción: Cuando se habilita, la instrucción descarga el bit del extremo superior
de los bits especificados al bit .UL, desplaza los bits restantes una
posición hacia la izquierda y carga el bit de Source en el bit 0 de
Array.
IMPORTANTE
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción BSL realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción desplaza bits más allá de la matriz en otros miembros
del tag. Esto sucede si la longitud es excesiva y el tag es de un tipo de datos
definido por el usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
386
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Ejecución:
Condición:
Acción de lógica de escalera de relés
preescán
El bit .EN se borra.
El bit .DN se borra.
El bit .ER se borra.
El valor .POS se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
El bit .EN se borra.
El bit .DN se borra.
El bit .ER se borra.
El valor .POS se borra.
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
387
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Condición:
Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
examinar el bit .EN
bit .EN = 1
bit .EN = 0
el bit .EN se establece
.LEN = 0
sí
el bit .DN se establece
no
.LEN < 0
sí
.source bit = 1
examinar el bit de
origen
el bit .UL permanece
establecido.
el bit .ER se establece
.source bit = 0
no
el bit .UL se establece.
desplazar matriz izquierda una posición a la
izquierda
matriz
bit .UL
el bit .DN se establece
bit de
origen
la condición de salida de
renglón se establece como
verdadera
.POS = .LEN
fin
post-escán
388
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Ejemplo 1: Cuando se habilita, la instrucción BSL comienza en el bit 0 en
array_dint[0]. La instrucción descarga array_dint[0].9 en el bit .UL,
desplaza los bits restantes y carga input_1 en array_dint[0].0. Los
valores en los bits restantes (10-31) no son válidos.
9 8 7 6 5 4 3 2 1 0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
antes del
desplazamiento
estos bits se desplazan
a la izquierda
0
bit .UL
1
input_1
9 8 7 6 5 4 3 2 1 0
array_dint[0]
después del
desplazamiento
0 1 1 1 1 0 0 0 0 1
Ejemplo 2: Cuando se habilita, la instrucción BSL comienza en el bit 0 en
array_dint[0]. La instrucción descarga array_dint[1].25 en el bit .UL,
desplaza los bits restantes y carga input_1 en array_dint[0].0. Los
valores en los bits restantes (31-26 en array_dint[1]) no son válidos.
Observe cómo array_dint[0].31 se desplaza a través de las palabras
hasta array_dint[1].0.
31
0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
1
estos bits se desplazan a la izquierda
31
input_1
0
array_dint[1]
0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
0
estos bits se desplazan a la izquierda
bit .UL
Publicación 1756-RM003K-ES-P – Julio 2008
389
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Desplazamiento de bits a la
derecha (BSR)
La instrucción BSR desplaza los bits especificados dentro de la matriz
una posición hacia la derecha.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Array
DINT
tag de
matriz
matriz que se modifica
especificar el elemento a partir del cual se
inicia el desplazamiento
no usar CONTROL.POS en el subíndice
Control
CONTROL
tag
estructura de control para la operación
Source bit
BOOL
tag
bit que se desplaza
Length
DINT
inmediato
número de bits en la matriz que se desplazan
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción BSR está habilitada.
.DN
BOOL
Se establece el bit de efectuado para indicar que los bits se han desplazado una posición
hacia la derecha.
.UL
BOOL
El bit de descarga es la salida de la instrucción. El bit .UL almacena el estado del bit que se
desplazó fuera del rango de los bits.
.ER
BOOL
Se establece el bit de error cuando .LEN < 0.
.LEN
DINT
La longitud especifica el número de bits de la matriz que se desplazan.
Descripción: Cuando se habilita, la instrucción descarga el valor del bit 0 de Array
en el bit .UL, desplaza los bits restantes una posición hacia la derecha
y carga el bit de Source en el bit de extremo superior de los bits
especificados.
IMPORTANTE
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción BSR realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción cambia los bits en otros miembros del tag. Esto sucede
si la longitud es excesiva y el tag es de un tipo de datos definido por el usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
390
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit .EN se borra.
El bit .DN se borra.
El bit .ER se borra.
El valor .POS se borra.
La condición de salida de renglón se
establece como falsa.
condición de entrada de renglón es falsa
El bit .EN se borra.
El bit .DN se borra.
El bit .ER se borra.
El valor .POS se borra.
La condición de salida de renglón se
establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
391
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Condición
Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
examinar el bit .EN
bit .EN = 1
bit .EN = 0
el bit .EN se establece
.LEN = 0
sí
el bit .DN se establece
no
.LEN < 0
sí
examinar el bit de
origen
.source bit = 1
el bit .UL permanece
establecido.
el bit .ER se establece
.source bit = 0
no
el bit .UL se establece
desplazar matriz izquierda una posición hacia
la izquierda
bit de
origen
matriz
el bit .DN se establece
bit .UL
la condición de salida de
renglón se establece como
verdadera
.POS = .LEN
fin
post-escán
392
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Ejemplo 1: Cuando se habilita, la instrucción BSR comienza en el bit 9 en
array_dint[0]. La instrucción descarga array_dint[0].0 en el bit .UL,
desplaza los bits restantes a la derecha y carga input_1 en
array_dint[0].9. Los valores en los bits restantes (10-31) no son
válidos.
9 8 7 6 5 4 3 2 1 0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
antes del
desplazamiento
estos bits se desplazan
a la derecha
1
input_1
0
bit .UL
9 8 7 6 5 4 3 2 1 0
array_dint[0]
después del
desplazamiento
1 0 0 1 1 1 1 0 0 0
Ejemplo 2: Cuando se habilita, la instrucción BSR comienza en el bit 25 en
array_dint[1]. La instrucción descarga array_dint[0].0 en el bit .UL,
desplaza los bits restantes a la derecha y carga input_1 en
array_dint[1].25. Los valores en los bits restantes (31-26 en
dint_array[1]) no son válidos. Observe cómo array_dint[1].0 se
desplaza a través de las palabras hasta array_dint[0].31.
31
0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
0
estos bits se desplazan a la derecha
bit .UL
31
0
array_dint[1]
0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
1
estos bits se desplazan a la derecha
input_1
Publicación 1756-RM003K-ES-P – Julio 2008
393
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Carga FIFO (FFL)
La instrucción FFL copia el valor de Source a la FIFO.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
datos que se almacenan en la FIFO
INT
tag
DINT
REAL
cadena
estructura
Source se convierte en el tipo de datos del tag de matriz. Un número entero
menor se convierte en un número entero mayor mediante extensión de
signo.
FIFO
SINT
tag de
matriz
FIFO que se modifica
INT
especificar el primer elemento de la FIFO
DINT
no usar CONTROL.POS en el subíndice
REAL
cadena
estructura
Control
CONTROL
tag
estructura de control para la operación
generalmente se usa el mismo CONTROL que
el FFU asociado
Length
DINT
inmediato
número máximo de elementos que la FIFO
puede contener a la vez
Position
DINT
inmediato
la próxima ubicación en la FIFO donde la
instrucción carga datos
el valor inicial es típicamente 0
Si usted usa una estructura definida por el usuario como el tipo de
datos para el operando de Source o FIFO, use la misma estructura
para los dos operandos.
394
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción FFL está habilitada.
.DN
BOOL
Se establece el bit de efectuado para indicar que la FIFO está llena (.POS = .LEN). El bit .DN
inhibe la carga de la FIFO hasta que .POS < .LEN.
.EM
BOOL
El bit de vacío indica que la FIFO está vacía. Si .LEN ≤ 0 o .POS < 0, los bits .EM y .DN se
establecen.
.LEN
DINT
La longitud especifica el número máximo de elementos que la FIFO puede contener a la vez.
.POS
DINT
La posición identifica la ubicación en la FIFO donde la instrucción cargará el siguiente valor.
Descripción: Use la instrucción FFL con la instrucción FFU para almacenar y
recuperar datos en el siguiente orden: primero en entrar, primero en
salir. Cuando se usan en parejas, las instrucciones FFL y FFU
establecen un registro de desplazamiento asíncrono.
Normalmente, Source y la FIFO tienen el mismo tipo de datos.
Cuando se habilita, la instrucción FFL carga el valor de Source en la
posición de la FIFO identificada por el valor .POS. La instrucción
carga un valor cada vez que la instrucción se habilita hasta que la
FIFO esté llena.
IMPORTANTE
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción FFL realiza la operación en la memoria de datos contiguos. En algunos
casos, la instrucción carga datos más allá de la matriz en otros miembros del tag.
Esto sucede si la longitud es excesiva y el tag es de un tipo de datos definido por el
usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Publicación 1756-RM003K-ES-P – Julio 2008
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
(elemento inicial + .POS) > tamaño de la matriz
FIFO
4
20
395
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
se establece el bit .EN para evitar una
carga falsa cuando se inicia el escán
.LEN < 0
sí
no
.POS < 0
sí
no
el bit .EM se borra
el bit .EM está establecido
el bit .DN se borra
el bit .DN está establecido
.POS = 0
sí
el bit .EM está establecido
no
.POS ≥ .LEN
sí
el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
396
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Condición
Capítulo 9
Acción de lógica de escalera de relés
condición de entrada de renglón es falsa
el bit .EN se borra
.LEN < 0
sí
no
.POS < 0
sí
no
el bit .EM se borra
el bit .EM está establecido
el bit .DN se borra
el bit .DN está establecido
.POS = 0
sí
el bit .EM está establecido
no
.POS ≥ .LEN
sí
el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
Publicación 1756-RM003K-ES-P – Julio 2008
397
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Condición
Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
examinar el
bit .EN
.EN = 0
el bit .EN se establece
.LEN < 0
no
.EN = 1
.LEN < 0
sí
.POS < 0
sí
no
no
.POS < 0
sí
el bit .EM está
establecido
el bit .EM se borra
sí
el bit .DN se borra
el bit .DN está
establecido
.POS = .POS + 1
no
el bit .EM está
establecido
el bit .EM se borra
el bit .DN está
establecido
el bit .DN se borra
.POS ≥ .LEN
sí
el bit .DN se establece
no
.POS = 0
sí
el bit .EM está establecido
.POS o
sí
.LEN > tamaño de
la matriz
no
fallo mayor
no
.POS ≥ .LEN
no
sí
el bit .DN se establece
.POS > .LEN
sí
.POS = .POS - 1
no
FIFO[.POS - 1] = origen
la condición de salida de
renglón se establece como
verdadera
fin
post-escán
398
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Ejemplo: Una vez habilitada, la instrucción FFL carga value_1 en la siguiente
posición de la FIFO, la cual es array_dint[5] en este ejemplo.
antes de la carga
FIFO
después de la carga
FIFO
00000
00000
11111
11111
22222
22222
array_dint[0]
array_dint[5]
Publicación 1756-RM003K-ES-P – Julio 2008
33333
control_1.pos = 5
33333
44444
value_1 = 55555
44444
00000
55555
00000
00000
00000
00000
00000
00000
00000
00000
control_1.pos = 6
399
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Descarga FIFO (FFU)
La instrucción FFU descarga el valor desde la posición 0 (primera
posición) de la FIFO y almacena dicho valor en Destination. El resto
de los datos en la FIFO se desplazan hacia abajo una posición.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
FIFO
SINT
tag de
matriz
FIFO que se modifica
INT
especificar el primer elemento de la FIFO
DINT
no usar CONTROL.POS en el subíndice
REAL
cadena
estructura
Destination
SINT
tag
valor que sale de la FIFO
INT
DINT
REAL
cadena
estructura
El valor de destino se convierte en el tipo de datos del tag de Destination.
Un número entero menor se convierte en un número entero mayor
mediante extensión de signo.
Control
CONTROL
tag
estructura de control para la operación
generalmente se usa el mismo CONTROL que
el FFL asociado
Length
DINT
inmediato
número máximo de elementos que la FIFO
puede contener a la vez
Position
DINT
inmediato
La próxima ubicación en la FIFO donde la
instrucción descarga datos
el valor inicial es típicamente 0
Si usted usa una estructura definida por el usuario como el tipo de
datos para el operando FIFO o Destination, use la misma estructura
para los dos operandos.
400
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.EU
BOOL
El bit de habilitación de descarga indica que la instrucción FFU está habilitada. El bit .EU se
establece para impedir una descarga falsa cuando se inicia el escán del programa.
.DN
BOOL
Se establece el bit de efectuado para indicar que la FIFO está llena (.POS = .LEN).
.EM
BOOL
El bit de vacío indica que la FIFO está vacía. Si .LEN ≤ 0 o .POS < 0, los bits .EM y .DN se
establecen.
.LEN
DINT
La longitud especifica el número máximo de elementos en la FIFO.
.POS
DINT
La posición identifica el final de los datos cargados en la FIFO.
Descripción: Use la instrucción FFU con una instrucción FFL para almacenar y
recuperar datos en el siguiente orden: primero en entrar, primero en
salir.
Una vez habilitada, la instrucción FFU descarga los datos desde el
primer elemento de la FIFO y coloca dicho valor en Destination. La
instrucción descarga un valor cada vez que la instrucción se habilita
hasta que la FIFO esté vacía. Si la FIFO está vacía, FFU retorna la
cifra 0 a Destination.
IMPORTANTE
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción FFU realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción descarga datos desde otros miembros del tag. Esto
sucede si la longitud es excesiva y el tag es de un tipo de datos definido por el
usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Publicación 1756-RM003K-ES-P – Julio 2008
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
Length > tamaño de la matriz FIFO
4
20
401
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
se establece el bit .EU para evitar una
descarga falsa cuando se inicia el escán
.LEN < 0
sí
no
.POS < 0
sí
no
el bit .EM se borra
el bit .EM está establecido
el bit .DN se borra
el bit .DN está establecido
.POS = 0
sí
el bit .EM está establecido
no
.POS ≥ .LEN
sí
el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
402
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Condición
Capítulo 9
Acción de lógica de escalera de relés
condición de entrada de renglón es falsa
el bit .EU se borra
.LEN < 0
sí
no
.POS < 0
sí
no
el bit .EM se borra
el bit .EM está establecido
el bit .DN se borra
el bit .DN está establecido
.POS = 0
sí
el bit .EM está establecido
no
.POS ≥ .LEN
sí
el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
Publicación 1756-RM003K-ES-P – Julio 2008
403
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Condición
Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
examinar el
bit .EU
.EU = 0
el bit .EU está
establecido
.LEN < 0
.EU = 1
no
sí
.LEN < 0
sí
.POS < 0
sí
no
no
.POS < 0
el bit .EM está
establecido
el bit .EM se borra
sí
el bit .DN se borra
el bit .DN está
establecido
no
el bit .EM está
establecido
el bit .EM se borra
el bit .DN está
establecido
el bit .DN se borra
.LEN >
tamaño de la
matriz
sí
fallo mayor
no
sí
.POS = 0
el bit .EM está establecido
.POS ≤ 1
no
sí
el bit .EM está establecido
no
.POS ≥ .LEN
.POS < 1
sí
sí
Destination = 0
el bit .DN se establece
no
no
.POS = .POS -1
Destination = FIFO[0]
i=1
FIFO[i - 1] = FIFO[i]
i = i +1
sí
i < .LEN
no
la condición de salida de
renglón se establece como
verdadera
fin
post-escán
404
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Ejemplo: Una vez habilitada, la instrucción FFU descarga array_dint[0] en
value_2 y desplaza el resto de los elementos en array_dint.
antes de la descarga
FIFO
después de la descarga
FIFO
00000
11111
11111
22222
22222
33333
33333
44444
44444
55555
55555
00000
control_1.pos = 5
00000
value_2 = 00000
array_dint[0]
array_dint[5]
00000
Publicación 1756-RM003K-ES-P – Julio 2008
control_1.pos = 6
00000
00000
00000
00000
00000
00000
405
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Carga LIFO (LFL)
La instrucción LFL copia el valor de Source en la LIFO.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
datos que se almacenan en la LIFO
INT
tag
DINT
REAL
cadena
estructura
Source se convierte en el tipo de datos del tag de matriz. Un número entero
menor se convierte en un número entero mayor mediante extensión de
signo.
LIFO
SINT
tag de
matriz
LIFO que se modifica
INT
especificar el primer elemento de la LIFO
DINT
no usar CONTROL.POS en el subíndice
REAL
cadena
estructura
Control
CONTROL
tag
estructura de control para la operación
generalmente se usa el mismo CONTROL que
el LFU asociado
Length
DINT
inmediato
número máximo de elementos que la LIFO
puede contener a la vez
Position
DINT
inmediato
la siguiente ubicación en la LIFO donde la
instrucción carga datos
el valor inicial es típicamente 0
Si usted usa una estructura definida por el usuario como el tipo de
datos para el operando Source o LIFO, use la misma estructura para
los dos operandos.
406
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción:
.EN
BOOL
El bit de habilitación indica que la instrucción LFL está habilitada.
.DN
BOOL
Se establece el bit de efectuado para indicar que la LIFO está llena (.POS = .LEN). El bit .DN
inhibe la carga de la LIFO hasta que .POS < .LEN.
.EM
BOOL
El bit de vacío indica que la LIFO está vacía. Si .LEN ≤ 0 o .POS < 0, los bits .EM y .DN se
establecen.
.LEN
DINT
La longitud especifica el número máximo de elementos que la LIFO puede contener a la vez.
.POS
DINT
La posición identifica la ubicación en la LIFO donde la instrucción cargará el siguiente valor.
Descripción: Use la instrucción LFL con la instrucción LFU para almacenar y
recuperar datos en el siguiente orden: último en entrar, primero en
salir. Cuando se usan en parejas, las instrucciones LFL y LFU
establecen un registro de desplazamiento asíncrono.
Normalmente, Source y LIFO tienen el mismo tipo de datos.
Cuando se habilita, la instrucción LFL carga el valor de Source en la
posición en la LIFO identificada por el valor .POS. La instrucción
carga un valor cada vez que la instrucción se habilita hasta que la
LIFO esté llena.
IMPORTANTE
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción LFL realiza la operación en la memoria de datos contiguos. En algunos
casos, la instrucción carga datos más allá de la matriz en otros miembros del tag.
Esto sucede si la longitud es excesiva y el tag es de un tipo de datos definido por el
usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Publicación 1756-RM003K-ES-P – Julio 2008
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
(elemento inicial + .POS) > tamaño de la matriz
LIFO
4
20
407
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Ejecución:
Condición:
Acción de lógica de escalera de relés
preescán
se establece el bit .EN para evitar una
carga falsa cuando se inicia el escán
.LEN < 0
sí
no
.POS < 0
sí
no
el bit .EM se borra
el bit .EM está establecido
el bit .DN se borra
el bit .DN está establecido
.POS = 0
sí
el bit .EM está establecido
no
.POS ≥ .LEN
sí
el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
408
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Condición:
Capítulo 9
Acción de lógica de escalera de relés
condición de entrada de renglón es falsa
el bit .EN se borra
.LEN < 0
sí
no
.POS < 0
sí
no
el bit .EM se borra
el bit .EM está establecido
el bit .DN se borra
el bit .DN está establecido
.POS = 0
sí
el bit .EM está establecido
no
.POS ≥ .LEN
sí
el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
Publicación 1756-RM003K-ES-P – Julio 2008
409
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Condición:
Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
examinar el
bit .EN
.EN = 0
el bit .EN se
establece
.LEN < 0
no
.EN = 1
.LEN < 0
sí
.POS < 0
sí
no
no
.POS < 0
sí
el bit .EM está
establecido
el bit .EM se borra
sí
el bit .DN se borra
el bit .DN está
establecido
.POS = .POS + 1
no
el bit .EM está
establecido
el bit .EM se borra
el bit .DN está
establecido
el bit .DN se borra
.POS ≥ .LEN
sí
el bit .DN se establece
no
.POS = 0
sí
el bit .EM está establecido
.POS o
sí
.LEN > tamaño de
la matriz
no
fallo mayor
no
.POS ≥ .LEN
no
sí
el bit .DN se establece
.POS > .LEN
sí
.POS = .POS - 1
no
LIFO[.POS - 1] = origen
la condición de salida de
renglón se establece como
verdadera
fin
post-escán
410
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Ejemplo: Una vez habilitada, la instrucción LFL carga value_1 en la próxima
posición en la LIFO, la cual es array_dint[5] en este ejemplo.
antes de la carga
LIFO
después de la carga
LIFO
00000
00000
11111
11111
22222
22222
array_dint[0]
array_dint[5]
Publicación 1756-RM003K-ES-P – Julio 2008
33333
control_1.pos = 5
33333
44444
value_1 = 55555
44444
00000
55555
00000
00000
00000
00000
00000
00000
00000
00000
control_1.pos = 6
411
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Descarga LIFO (LFU)
La instrucción LFU descarga el valor en .POS de la LIFO y almacena 0
en ese lugar.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
LIFO
SINT
tag de
matriz
LIFO que se modifica
INT
especificar el primer elemento de la LIFO
DINT
no usar CONTROL.POS en el subíndice
REAL
cadena
estructura
Destination
SINT
tag
valor que sale de la LIFO
INT
DINT
REAL
cadena
estructura
El valor de destino se convierte en el tipo de datos del tag de Destination.
Un número entero menor se convierte en un número entero mayor
mediante extensión de signo.
Control
CONTROL
tag
estructura de control para la operación
generalmente se usa el mismo CONTROL que
el LFL asociado
Length
DINT
inmediato
número máximo de elementos que la LIFO
puede contener a la vez
Position
DINT
inmediato
La próxima ubicación en la LIFO donde la
instrucción descarga datos
el valor inicial es típicamente 0
Si usted usa una estructura definida por el usuario como el tipo de
datos para el operando LIFO o Destination, use la misma estructura
para los dos operandos.
412
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Estructura CONTROL
Mnemónico
Tipo de datos:
Descripción
.EU
BOOL
El bit de habilitación de descarga indica que la instrucción LFU está habilitada. El bit .EU se
establece para impedir una descarga falsa cuando se inicia el escán del programa.
.DN
BOOL
Se establece el bit de efectuado para indicar que la LIFO está llena (.POS = .LEN).
.EM
BOOL
El bit de vacío indica que la LIFO está vacía. Si .LEN ≤ 0 o .POS < 0, los bits .EM y .DN se
establecen.
.LEN
DINT
La longitud especifica el número máximo de elementos que la LIFO puede contener a la vez.
.POS
DINT
La posición identifica el final de los datos cargados en la LIFO.
Descripción: Use la instrucción LFU con la instrucción LFL para almacenar y
recuperar datos en el siguiente orden: último en entrar, primero en
salir.
Una vez habilitada, la instrucción LFU descarga el valor en .POS de la
LIFO y coloca dicho valor en Destination. La instrucción descarga un
valor y lo reemplaza por 0 cada vez que la instrucción se habilita
hasta que la LIFO esté vacía. Si la LIFO está vacía, LFU retorna la
cifra 0 a Destination.
IMPORTANTE
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción LFU realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción descarga datos desde otros miembros del tag. Esto
sucede si la longitud es excesiva y el tag es de un tipo de datos definido por el
usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Publicación 1756-RM003K-ES-P – Julio 2008
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
Length > tamaño de la matriz LIFO
4
20
413
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Ejecución:
Condición
Acción de lógica de escalera de relés:
preescán
se establece el bit .EU para evitar una
descarga falsa cuando se inicia el escán.
.LEN < 0
sí
no
.POS < 0
sí
no
el bit .EM se borra
el bit .EM está establecido
el bit .DN se borra
el bit .DN está establecido
.POS = 0
sí
el bit .EM está establecido
no
.POS ≥ .LEN
sí
el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
414
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Condición
Capítulo 9
Acción de lógica de escalera de relés:
condición de entrada de renglón es falsa
el bit .EU se borra
.LEN < 0
sí
no
.POS < 0
sí
no
el bit .EM se borra
el bit .EM está establecido
el bit .DN se borra
el bit .DN está establecido
.POS = 0
sí
el bit .EM está establecido
no
.POS ≥ .LEN
sí
el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
Publicación 1756-RM003K-ES-P – Julio 2008
415
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Condición
Acción de lógica de escalera de relés:
condición de entrada de renglón es verdadera
examinar el
bit .EU
.EU = 0
el bit .EU está
establecido
.LEN < 0
no
.EU = 1
.LEN < 0
sí
.POS < 0
sí
no
no
.POS < 0
sí
el bit .EM está
establecido
el bit .EM se borra
sí
el bit .DN se borra
el bit .DN está
establecido
no
el bit .EM está
establecido
el bit .EM se borra
el bit .DN está
establecido
el bit .DN se borra
.POS ≤ 1
sí
el bit .EM está establecido
no
.POS = 0
sí
el bit .EM está establecido
no
.POS ≥ .LEN
.POS < 1
sí
Destination = 0
no
sí
.POS > .LEN
sí
.POS = .LEN
el bit .DN se establece
no
no
.POS = .POS -1
.LEN >
tamaño de la
matriz
sí
fallo mayor
no
Destination = LIFO[control.POS]
LIFO[control.POS) = 0
la condición de salida de
renglón se establece como
verdadera
fin
post-escán
416
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Capítulo 9
Ejemplo: Una vez habilitada, la instrucción LFU descarga array_dint[5] en
value_2.
antes de la descarga
LIFO
después de la descarga
LIFO
00000
00000
11111
11111
22222
22222
33333
33333
44444
44444
55555
00000
control_1.pos = 5
00000
value_2 = 55555
array_dint[0]
array_dint[5]
00000
Publicación 1756-RM003K-ES-P – Julio 2008
control_1.pos = 6
00000
00000
00000
00000
00000
00000
417
Capítulo 9
Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Notas:
418
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
10
Instrucciones de secuenciador
(SQI, SQO, SQL)
Introducción
Si desea
No se toma ninguna acción. Las instrucciones de secuenciador
monitorean operaciones uniformes y repetibles.
Use esta instrucción
Disponible en estos lenguajes
Vea la página
Detectar cuándo ha concluido un paso
SQI
lógica de escalera de relés
420
Establecer condiciones de salida para el
siguiente paso
SQO
lógica de escalera de relés
424
Cargar condiciones de referencia en matrices
de secuenciador
SQL
lógica de escalera de relés
428
Para las instrucciones de lógica de escalera de relés, los tipos de datos
que aparecen en letras negritas indican tipos de datos óptimos. Las
instrucciones se ejecutan más rápidamente y requieren menos
memoria si todos los operandos de instrucción usan el mismo tipo de
datos óptimos, típicamente DINT o REAL.
419Publicación 1756-RM003K-ES-P – Julio 2008
419
Capítulo 10
Instrucciones de secuenciador (SQI, SQO, SQL)
Secuenciador de entrada
(SQI)
La instrucción SQI detecta cuándo ha concluido un paso en una
pareja de instrucciones de secuencia SQO/SQI.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Array
DINT
tag de
matriz
matriz de secuenciador
especifica el primer elemento de la matriz de
secuenciador
no use CONTROL.POS en el subíndice
Mask
SINT
tag
INT
inmediato
qué bits se bloquean o se pasan
DINT
Un tag SINT o INT se convierte en un valor DINT mediante la extensión con
signo.
Source
SINT
tag
datos de entrada en la matriz de secuenciador
INT
DINT
Un tag SINT o INT se convierte en un valor DINT mediante la extensión con
signo.
Control
CONTROL
tag
estructura de control para la operación
normalmente se usa el mismo CONTROL que
para las instrucciones SQO y SQL
Length
DINT
inmediato
número de elementos en la matriz (tabla de
secuenciador) que se va a comparar
Position
DINT
inmediato
posición actual en la matriz
el valor inicial es típicamente 0
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.ER
BOOL
El bit de error se establece cuando .LEN ≤ 0, .POS < 0, o .POS > .LEN.
.LEN
DINT
La longitud especifica el número de pasos en la matriz de secuenciador.
.POS
DINT
La posición identifica el elemento que la instrucción está comparando actualmente.
420
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de secuenciador (SQI, SQO, SQL)
Capítulo 10
Descripción: Cuando se habilita, la instrucción SQI compara un elemento fuente
(Source), a través de una máscara (Mask), a un elemento de matriz
(Array) para determinar su equivalencia.
Normalmente se usa la misma estructura de CONTROL que para las
instrucciones SQO y SQL
La instrucción SQI realiza la operación en memoria contigua.
Introduzca un valor de máscara inmediato
Cuando usted introduce una máscara, el software de programación
cambia de manera predeterminada a valores decimales. Si desea
introducir una máscara usando otro formato, preceda el valor con el
prefijo correcto.
Prefijo:
Descripción
16#
hexadecimal
por ejemplo; 16#0F0F
8#
octal
por ejemplo; 8#16
2#
binario
por ejemplo; 2#00110011
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
421
Capítulo 10
Instrucciones de secuenciador (SQI, SQO, SQL)
Ejecución:
Condición:
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
.LEN ≤ 0
.POS < 0
o
.POS > .LEN
no
el bit .ER se borra
sí
el bit .ER se establece
no
Source
enmascarada =
Array[.POS]
enmascarada
sí
la condición de salida de
renglón se establece como
verdadera
la condición de salida de
renglón se establece como
falsa
fin
post-escán
422
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de secuenciador (SQI, SQO, SQL)
Capítulo 10
Ejemplo: Cuando se habilita, la instrucción SQI pasa el value_2 a través de la
máscara para determinar si el resultado es igual al elemento actual en
array_dint. La comparación enmascarada es verdadera; por lo tanto,
la condición de salida de renglón se hace verdadera.
Operando SQI
Ejemplo de valores (usando DINT mostrados en binario):
Source
xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Mask
00000000 00000000 00001111 00001111
Array
xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Un número 0 en la máscara significa que el bit no se compara
(designado por xxxx en este ejemplo).
Use SQI sin SQO
Si usted usa la instrucción SQI sin una instrucción SQO emparejada,
tiene que incrementar externamente la matriz de secuenciador.
La instrucción SQI compara el valor de fuente. La instrucción ADD
incrementa la matriz de secuenciador. GRT determinó si otro valor
está disponible para verificación en la matriz de secuenciador. La
instrucción MOV restablece el valor de posición después de pasar
paso a paso completamente por la matriz de secuenciador una vez.
Publicación 1756-RM003K-ES-P – Julio 2008
423
Capítulo 10
Instrucciones de secuenciador (SQI, SQO, SQL)
Secuenciador de salida
(SQO)
La instrucción SQO establece condiciones de salida para el siguiente
paso de una pareja de instrucciones SQO/SQI de secuencia.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Array
DINT
tag de matriz matriz de secuenciador
especifica el primer elemento de la matriz
de secuenciador
no use CONTROL.POS en el subíndice
Mask
SINT
tag
INT
inmediato
qué bits se bloquean o se pasan
DINT
Un tag SINT o INT se convierte en un valor DINT mediante la extensión con
signo.
Destination
DINT
tag
datos de salida provenientes de la matriz de
secuenciador
Control
CONTROL
tag
estructura de control para la operación
normalmente, se usa el mismo CONTROL
que para las instrucciones SQI y SQL
Length
DINT
inmediato
número de elementos en la matriz (tabla de
secuenciador) que se va a establecer como
salida
Position
DINT
inmediato
posición actual en la matriz
el valor inicial es típicamente 0
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción SQO está habilitada.
.DN
BOOL
El bit de efectuado se establece cuando todos los elementos especificados se han
transferido a Destination.
.ER
BOOL
El bit de error se establece cuando .LEN ≤ 0, .POS < 0, o .POS > .LEN.
.LEN
DINT
La longitud especifica el número de pasos en la matriz de secuenciador.
.POS
DINT
La posición identifica el elemento que el controlador está manipulando actualmente.
424
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de secuenciador (SQI, SQO, SQL)
Capítulo 10
Descripción: Cuando se habilita, la instrucción SQO incrementa la posición,
transfiere los datos en la posición a través de la máscara (Mask) y
almacena el resultado en Destination. Si .POS > .LEN, la instrucción da
la vuelta hasta el comienzo de la matriz de secuenciador y continúa
con .POS = 1.
Normalmente, se usa la misma estructura de CONTROL que para las
instrucciones SQI y SQL.
La instrucción SQO realiza la operación en memoria contigua.
Introduzca un valor de máscara inmediato
Cuando usted introduce una máscara, el software de programación
cambia de manera predeterminada a valores decimales. Si desea
introducir una máscara usando otro formato, preceda el valor con el
prefijo correcto.
Prefijo
Descripción
16#
hexadecimal
por ejemplo; 16#0F0F
8#
octal
por ejemplo; 8#16
2#
binario
por ejemplo; 2#00110011
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit .EN se establece para impedir una carga falsa cuando se inicia el escán del
programa.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
El bit .EN se borra.
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
425
Capítulo 10
Instrucciones de secuenciador (SQI, SQO, SQL)
Condición
Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
.LEN ≤ 0 o
.POS < 0
no
examine el
bit .EN
.EN = 0
el bit .EN se establece
el bit .ER se borra
el bit .DN se establece
.EN = 1
sí
.POS = .LEN
no
.POS ≥ .LEN
sí
.POS = 1
no
sí
.POS = .POS + 1
el bit .DN se establece
el valor
.POS retorna al
valor inicial
sí
ir a
error
no
.POS = .LEN
sí
el bit .DN se establece
no
.POS > .LEN
no
sí
error
el bit .ER se establece
Destination = (Destination AND (NOT(Mask)))
OR (Array[control.POS] AND Mask)
la condición de salida de renglón
se establece como verdadera
fin
post-escán
426
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de secuenciador (SQI, SQO, SQL)
Capítulo 10
Ejemplo: Cuando se habilita, la instrucción SQO incrementa la posición, pasa
los datos en esa posición en array_dint a través de la máscara y
almacena el resultado en value_1.
Operando SQO
Ejemplo de valores (usando INT mostrados en binario):
Array
xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Mask
00000000 00000000 00001111 00001111
Destination
xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Un número 0 en la máscara significa que el bit no se compara
(designado por xxxx en este ejemplo).
Uso de SQI con SQO
Si usted empareja una instrucción SQI con una instrucción SQO,
asegúrese de que ambas instrucciones usen los mismos valores de
Control, Length y Position.
Restablecimiento de la posición de SQO
Cada vez que el controlador cambia del modo de programación al
modo de marcha, la instrucción SQO borra (inicializa) el valor .POS.
Para restablecer .POS al valor de inicialización (.POS = 0), use una
instrucción RES a fin de borrar el valor de posición. Este ejemplo usa
el estado del bit de primer escán para borrar el valor .POS.
Publicación 1756-RM003K-ES-P – Julio 2008
427
Capítulo 10
Instrucciones de secuenciador (SQI, SQO, SQL)
Carga de secuenciador
(SQL)
La instrucción SQL carga condiciones de referencia en una matriz de
secuenciador.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Array
DINT
tag de matriz matriz de secuenciador
especifica el primer elemento de la matriz
de secuenciador
no use CONTROL.POS en el subíndice
Source
SINT
tag
INT
inmediato
datos de entrada que se van a cargar en la
matriz de secuenciador
DINT
Un tag SINT o INT se convierte en un valor DINT mediante la extensión con
signo.
Control
CONTROL
tag
estructura de control para la operación
normalmente, se usa el mismo CONTROL
que para las instrucciones SQI y SQO
Length
DINT
inmediato
número de elementos en la matriz (tabla de
secuenciador) que se va a cargar
Position
DINT
inmediato
posición actual en la matriz
el valor inicial es típicamente 0
Estructura CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción SQL está habilitada.
.DN
BOOL
El bit de efectuado se establece cuando todos los elementos especificados se han cargado
en la matriz.
.ER
BOOL
El bit de error se establece cuando .LEN ≤ 0, .POS < 0, o .POS > .LEN.
.LEN
DINT
La longitud especifica el número de pasos en la matriz de secuenciador.
.POS
DINT
La posición identifica el elemento que el controlador está manipulando actualmente.
428
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de secuenciador (SQI, SQO, SQL)
Capítulo 10
Descripción: Cuando se habilita, la instrucción SQL incremente la siguiente
posición en la matriz de secuenciador y carga el valor de Source en
dicha posición. El bit .DN se establece, o si .POS ≥ .LEN, la instrucción
establece .POS=1.
Normalmente, se usa la misma estructura de CONTROL que para las
instrucciones SQI y SQO.
IMPORTANTE
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción SQL realiza la operación en memoria contigua. En algunos casos, la
instrucción carga datos más allá de la matriz en otros miembros del tag. Esto sucede
si la longitud es excesiva y el tag es de un tipo de datos definido por el usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
Longitud > tamaño de la matriz
4
20
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
El bit .EN se establece para impedir una carga falsa cuando se inicia el escán del
programa.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
El bit .EN se borra.
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
429
Capítulo 10
Instrucciones de secuenciador (SQI, SQO, SQL)
Condición
Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
.LEN ≤ 0 o
.POS < 0
no
examine el
bit .EN
.EN = 0
el bit .EN se establece
el bit .ER se borra
el bit .DN se establece
sí
.POS = .LEN
.EN = 1
no
.POS ≥ .LEN
sí
.POS = 1
no
sí
.POS = .POS + 1
el bit .DN se establece
el valor
.POS retorna al
valor inicial
sí
ir a
error
no
.POS = .LEN
sí
el bit .DN se establece
no
.POS > .LEN
no
sí
error
.LEN >
tamaño de la
matriz
sí
no
el bit .ER se establece
fallo mayor
Array[control.POS] = Source
la condición de salida de
renglón se establece como
verdadera
fin
post-escán
430
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de secuenciador (SQI, SQO, SQL)
Capítulo 10
Ejemplo: Una vez habilitada, la instrucción SQL carga value_3 en la próxima
posición en la matriz de secuenciador la cual es array_dint[5] en este
ejemplo.
antes de la carga
después de la carga
00000
00000
11111
11111
22222
22222
array_dint[0]
array_dint[5]
Publicación 1756-RM003K-ES-P – Julio 2008
33333
control_1.pos = 5
33333
44444
value_3 = 55555
44444
00000
55555
00000
00000
00000
00000
00000
00000
00000
00000
control_1.pos = 6
431
Capítulo 10
Instrucciones de secuenciador (SQI, SQO, SQL)
Notas:
432
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
11
Instrucciones de control de programa
(JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI,
NOP, EOT, SFP, SFR, EVENT)
Introducción
Use las instrucciones de control de programa para cambiar el flujo de
la lógica.
Si desea
Use esta instrucción
Disponible en estos lenguajes
Vea la página
Saltarse una sección de lógica que no siempre
necesita ejecutarse.
JMP
LBL
lógica de escalera de relés
434
Saltar a una rutina separada, pasar datos a la
rutina, ejecutar la rutina y retornar resultados.
JSR
SBR
RET
lógica de escalera de relés
436
bloque de funciones
texto estructurado
Saltar a una rutina externa (controlador
SoftLogix5800 solamente)
JXR
lógica de escalera de relés
447
Marcar un fin temporal que detiene la
ejecución de la rutina.
TND
lógica de escalera de relés
450
Inhabilitar todos los renglones en una sección
de lógica.
MCR
lógica de escalera de relés
452
Inhabilitar tareas de usuario.
UID
lógica de escalera de relés
454
texto estructurado
texto estructurado
Habilitar tareas de usuario.
UIE
lógica de escalera de relés
454
texto estructurado
Inhabilitar un renglón.
AFI
lógica de escalera de relés
456
Insertar un indicador de posición en la lógica.
NOP
lógica de escalera de relés
457
Finalizar una transición para un diagrama de
función secuencial
EOT
lógica de escalera de relés
458
Poner en pausa un diagrama de función
secuencial
SFP
Restablecer un diagrama de función secuencial
SFR
texto estructurado
lógica de escalera de relés
460
texto estructurado
lógica de escalera de relés
462
texto estructurado
Activar la ejecución de una tarea de evento
EVENT
lógica de escalera de relés
464
texto estructurado
433Publicación 1756-RM003K-ES-P – Julio 2008
433
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Saltar a etiqueta (JMP)
Etiqueta (LBL)
Las instrucciones JMP y LBL saltan porciones de la lógica de escalera.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
nombre de
etiqueta
introduzca un nombre para la instrucción LBL
asociada
nombre de
etiqueta
la ejecución salta a la instrucción LBL con el
nombre de etiqueta al cual se hizo referencia
instrucción JMP
Nombre de
etiqueta
instrucción LBL
Nombre de
etiqueta
Descripción: Cuando se habilita, la instrucción JMP salta a la instrucción LBL
referenciada y el controlador continúa la ejecución desde allí. Cuando
se inhabilita, la instrucción JMP no afecta la ejecución de la lógica de
escalera.
La instrucción JMP puede mover la ejecución de la lógica de escalera
hacia adelante o hacia atrás. Saltar hacia adelante a una etiqueta
ahorra tiempo de escán del programa al omitir un segmento de lógica
hasta que éste sea necesario. Los saltos hacia atrás permiten al
controlador repetir iteraciones de lógica.
Absténgase de saltar hacia atrás un número excesivo de veces. El
temporizador de control (watchdog) podría sobrepasar el tiempo de
espera porque el controlador nunca llegaría al final de la lógica, lo
cual haría fallar al controlador.
ATENCIÓN
La lógica saltada no se escanea. Coloque la lógica crítica fuera
de la zona saltada.
La instrucción LBL es el objetivo de la instrucción JMP que tiene el
mismo nombre de etiqueta. Asegúrese de que la instrucción LBL
sea la primera instrucción en su renglón.
Un nombre de etiqueta debe ser único dentro de una rutina.
El nombre puede:
• tener hasta 40 caracteres
• contener letras, números y caracteres de subrayado (_)
434
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
la etiqueta no existe
4
42
Ejecución:
Condición:
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La condición de salida de renglón se establece como verdadera.
La ejecución salta al renglón que contiene la instrucción LBL con el nombre de etiqueta
referenciado.
post-escán
La condición de salida de renglón se establece como falsa.
Ejemplo: Cuando la instrucción JMP se habilita, la ejecución salta sobre
renglones sucesivos de lógica hasta llegar al renglón que contiene la
instrucción LBL con label_20.
[otros renglones de código]
Publicación 1756-RM003K-ES-P – Julio 2008
435
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Salto a subrutina (JSR)
Subrutina (SBR) Retorno
(RET)
La instrucción JSR salta la ejecución a una rutina diferente. Las
instrucciones SBR y RET son instrucciones opcionales que
intercambian datos con la instrucción JSR.
Operandos de JSR:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Nombre de
la rutina
ROUTINE
nombre
rutina a ejecutar (es decir, subrutina)
Parámetro
de entrada
BOOL
inmediato
datos de esta rutina que desea copiar a un
tag en la subrutina
SINT
tag
INT
tag de
matriz
DINT
• Los parámetros de entrada son
opcionales.
• Introduzca múltiples parámetros de
entrada, si es necesario.
REAL
estructura
Parámetro
de retorno
BOOL
tag
SINT
tag de
matriz
el tag en esta rutina al cual desea copiar un
resultado de la subrutina
INT
• Los parámetros de retorno son
opcionales.
DINT
• Introduzca múltiples parámetros de
retorno, si es necesario.
REAL
estructura
436
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Operandos de JSR (cont.):
Texto estructurado
JSR(RoutineName,InputCount,
InputPar,ReturnPar);
Operando
Tipo
Formato
Descripción
Nombre de
la rutina
ROUTINE
nombre
rutina a ejecutar (es decir, subrutina)
Conteo de
entradas
SINT
inmediato
número de parámetros de entrada
BOOL
inmediato
datos de esta rutina que desea copiar a un
tag en la subrutina
SINT
tag
INT
tag de
matriz
INT
DINT
REAL
Parámetro
de entrada
• Los parámetros de entrada son
opcionales.
• Introduzca múltiples parámetros de
entrada, si es necesario.
DINT
REAL
estructura
Parámetro
de retorno
BOOL
tag
SINT
tag de
matriz
el tag en esta rutina al cual desea copiar un
resultado de la subrutina
INT
• Los parámetros de retorno son
opcionales.
DINT
• Introduzca múltiples parámetros de
retorno, si es necesario.
REAL
estructura
Bloque de funciones
Parámetros de
entrada
Parámetros de
retorno
❇
❇
Los operandos son iguales a los de la instrucción JSR de lógica de
escalera de relés.
Publicación 1756-RM003K-ES-P – Julio 2008
437
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Para cada parámetro en una instrucción SBR o RET, use el
mismo tipo de datos (inclusive las dimensiones de la matriz)
que el parámetro correspondiente en la instrucción JSR. El uso
de tipos de datos diferentes puede producir resultados
inesperados.
ATENCIÓN
Operandos de SBR: La instrucción SBR debe ser la primera instrucción en una lógica de
escalera de relés o rutina de texto estructurado.
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Parámetro
de entrada
BOOL
tag
SINT
tag de
matriz
el tag en esta rutina al cual desea copiar el
parámetro de entrada correspondiente
proveniente de la instrucción JSR.
INT
DINT
REAL
estructura
SBR(InputPar);
Texto estructurado
Los operandos son iguales a los de la instrucción SBR de lógica de
escalera de relés.
Bloque de funciones
Parámetros
❇
Los operandos son iguales a los de la instrucción SBR de lógica de
escalera de relés.
438
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Operandos de RET:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Parámetro
de retorno
BOOL
inmediato
SINT
tag
datos de esta rutina que usted desea copiar
al parámetro de retorno correspondiente en
la instrucción JSR.
INT
tag de
matriz
DINT
REAL
estructura
RET(ReturnPar);
Texto estructurado
Los operandos son iguales a los de la instrucción RET de lógica de
escalera de relés.
Bloque de funciones
Parámetros
❇
Los operandos son iguales a los de la instrucción RET de lógica de
escalera de relés.
Descripción: La instrucción JSR inicia la ejecución de la rutina especificada, la cual
se conoce como subrutina:
• La subrutina se ejecuta una vez.
• Después de que se ejecuta la subrutina, la ejecución de la lógica
regresa a la rutina que contiene la instrucción JSR.
Publicación 1756-RM003K-ES-P – Julio 2008
439
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Para programar un salto a una subrutina, siga estas pautas:
IMPORTANTE
No use una instrucción JSR para llamar (ejecutar) la rutina
principal.
• Usted puede colocar una instrucción JSR en la
rutina principal o cualquier otra rutina.
• Si usted usa una instrucción JSR para llamar a la
rutina principal y posteriormente coloca una
instrucción RET en la rutina principal, se produce
un fallo mayor (tipo 4, código 31).
El diagrama siguiente ilustra cómo funcionan las instrucciones.
Rutina que origina la llamada
SBR
Subrutina
1. Si la instrucción JSR tiene un
parámetro de entrada, introduzca una
instrucción SBR.
SBR
JSR
JSR
1. Si desea copiar datos a un tag en la
subrutina, introduzca un parámetro de
entrada.
RET
2. Si desea copiar un resultado de la
subrutina a un tag en esta rutina,
introduzca un parámetro de retorno.
RET
3. Introduzca la cantidad necesaria de
parámetros de entrada y retorno.
2. Coloque la instrucción SBR como la
primera instrucción en la rutina.
3. Para cada parámetro de entrada en la
instrucción JSR, introduzca el tag en
el cual desea copiar los datos.
42974
RET
1. Si la instrucción JSR tiene un parámetro de retorno, introduzca
una instrucción RET.
2. Coloque la instrucción RET como la última instrucción en la
rutina.
3. Para cada parámetro de retorno en la instrucción JSR,
introduzca un parámetro de retorno para enviar la instrucción
JSR.
4. En una rutina de lógica de escalera, coloque instrucciones RET
adicionales para salir de la subrutina con base en diferentes
condiciones de entrada, si es necesario. (Las rutinas de bloque
de funciones sólo permiten una instrucción RET).
440
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
No hay restricciones, excepto la memoria del controlador, para el
número de rutinas anidadas que pueden existir ni para el número de
parámetros que se pasan o retornan.
nivel 1
nivel 2
nivel 3
subrutina action_1
subrutina action_2
subrutina action_3
rutina principal
SBR
action_1
JSR
SBR
SBR
action_2
JSR
action_3
JSR
RET
RET
RET
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
la instrucción JSR tiene menos parámetros de entrada que la instrucción SBR
4
31
la instrucción JSR salta a una rutina de fallo
4 o proporcionado por 0 o proporcionado por
el usuario
el usuario
la instrucción RET tiene menos parámetros de retorno que la instrucción JSR
4
31
la rutina principal contiene una instrucción RET
4
31
Ejecución:
Lógica de escalera de relés y texto estructurado
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
El controlador ejecuta todas las subrutinas independientemente de la condición del renglón. Para asegurar
que todos los renglones en la subrutina estén previamente escaneados, el controlador ignora las
instrucciones RET. (es decir, las instrucciones RET no salen de la subrutina).
• En las versiones 6.x y anteriores, se pasan los parámetros de entrada y retorno.
• En las versiones 7.x y posteriores, no se pasan los parámetros de entrada y retorno.
Si existen llamadas recursivas a la misma subrutina, la subrutina es preescaneada sólo la primera vez. Si
existen múltiples llamadas (no recursivas) a la misma subrutina, la subrutina es preescaneada cada vez.
La condición de salida de renglón se establece en falso (lógica de escalera de relés solamente).
La condición de entrada de
renglón es falsa para la
instrucción JSR
La subrutina no se ejecuta.
n. a.
Las salidas en la subrutina permanecen en su último
estado.
La condición de salida de renglón se establece como
falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
441
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
parámetros de
entrada
sí
JSR copia los parámetros de
entrada en los tags SBR
apropiados
no
la ejecución de lógica comienza
en la rutina identificada por JSR
sí
sí
instrucción RET
parámetros de
retorno
RET copia los parámetros de
retorno en los tags JSR
apropiados
no
no
sí
fin de la subrutina
no
la condición de salida de renglón
se establece como falsa
la condición de salida de renglón se
establece como verdadera
la ejecución de la lógica regresa a JSR
continuar ejecutando la subrutina
fin
post-escán
442
La misma acción que el preescán antes descrito.
La misma acción que el preescán antes descrito.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Bloque de funciones
Condición:
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción Ninguna.
ejecución normal
1. Si la rutina contiene una instrucción SBR, el controlador primero ejecuta la instrucción SBR.
2. El controlador enclava todos los valores de datos en las IREF.
3. El controlador ejecuta los otros bloques de función en el orden determinado por su cableado.
Esto incluye otras instrucciones JSR.
4. El controlador escribe salidas en las OREF.
5. Si la rutina contiene una instrucción RET, el controlador ejecuta la instrucción RET por último.
post-escán
Se llama la subrutina.
Si la rutina es una rutina SFC, la rutina se inicializa de la misma manera que durante el preescán.
Publicación 1756-RM003K-ES-P – Julio 2008
443
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Ejemplo 1: La instrucción JSR pasa value_1 y value_2 a routine_1.
La instrucción SBR recibe value_1 y value_2 desde la instrucción JSR y
copia esos valores en value_a y value_b, respectivamente. La
ejecución de la lógica continúa en esta rutina.
La instrucción RET envía float_a a la instrucción JSR. La instrucción
JSR recibe float_a y copia el valor en float_value_1. La ejecución de la
lógica continúa con la siguiente instrucción después de la instrucción
JSR.
Lógica de escalera de relés
Rutina:
Programa
Rutina principal
Subrutina
[otros renglones de código]
Texto estructurado
Rutina
Programa
Rutina principal
JSR(routine_1,2,value_1,value_2,float_value_1);
Subrutina
SBR(value_a,value_b);
<statements>;
RET(float_a);
444
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Ejemplo 2:
Lógica de escalera de relés
MainRoutine
Cuando abc está activado, subroutine_1 se ejecuta, calcula el número de cookies y coloca un valor en cookies_1.
Añade el valor en cookies_1 a cookies_2 y almacena el resultado en total_cookies.
Subroutine_1
Cuando def está activado, la instrucción RET retorna value_1 al parámetro cookies_1 de JSR y el resto de la subrutina no se escanea.
Cuando def está desactivado (renglón previo) y ghi está activado, la instrucción RET retorna value_2 al parámetro cookies_1 de JSR y el resto
de la subrutina no se escanea.
Cuando def y ghi están desactivados (renglones previos), la instrucción RET retorna value_3 al parámetro cookies_1 de JSR.
Publicación 1756-RM003K-ES-P – Julio 2008
445
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Ejemplo 3:
Bloque de funciones
Instrucción JSR en Routine_A
42972
1. Los valores en
Add_Input_1,
Add_Input_2 y
Add_Input_3 se copian
en Input_A, Input_B y
Input_C,
respectivamente.
3. El valor de Sum_A_B_C se copia
en Add_Three_Result.
Bloques de funciones de la rutina Add_Three_Inputs
42973
2. Las instrucciones ADD suman Input_A, Input_B y Input_C, y colocan el resultado en Sum_A_B_C.
446
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Salto a rutina externa (JXR)
Capítulo 11
La instrucción JXR ejecuta una rutina externa. Esta instrucción sólo es
compatible con los controladores SoftLogix5800.
Operandos:
Lógica de escalera de relés
.
Operando
Tipo
Formato
Descripción
Nombre de
rutina externa
ROUTINE
nombre
rutina externa que se va a ejecutar
Control de rutina EXT_ROUTINE_
externa
CONTROL
tag
estructura de control (ver la siguiente página)
Parámetro
BOOL
inmediato
datos de esta rutina que desea copiar a una variable en la rutina externa
SINT
tag
INT
tag de matriz
• Los parámetros son opcionales.
• Introduzca múltiples parámetros, si es necesario.
• Puede tener hasta 10 parámetros.
DINT
REAL
estructura
Parámetro de
retorno
BOOL
tag
SINT
INT
el tag en esta rutina al cual desea copiar un resultado de la rutina externa
• El parámetro de retorno es opcional
• Sólo puede tener un parámetro de retorno
DINT
REAL
Publicación 1756-RM003K-ES-P – Julio 2008
447
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Estructura EXT_ROUTINE_CONTROL
Mnemónico
Tipo de datos
Descripción
Implementación
ErrorCode
SINT
Si ocurre un error, este valor identifica el error.
Los valores válidos son 0-255.
No hay códigos de error predefinidos. El
encargado del desarrollo de la rutina externa
debe proporcionar los códigos de error.
NumParams
SINT
Este valor indica el número de parámetros
asociados con esta instrucción.
Visualización solamente – esta información
proviene de la entrada de la instrucción.
ParameterDefs
EXT_ROUTINE_
PARAMETERS[10]
Esta matriz contiene definiciones de los
parámetros que se van a pasar a la rutina
externa. La instrucción puede pasar hasta
10 parámetros.
Visualización solamente – esta información
proviene de la entrada de la instrucción.
ReturnParamDef
EXT_ROUTIN_
PARAMETERS
Este valor contiene definiciones del parámetro
de retorno de la rutina externa. Sólo hay un
parámetro de retorno.
Visualización solamente – esta información
proviene de la entrada de la instrucción.
EN
BOOL
Cuando se establece, el bit de habilitación
indica que la instrucción JXR está habilitada.
La rutina externa establece este bit.
ReturnsValue
BOOL
Si se establece, este bit indica que se introdujo
un parámetro de retorno para la instrucción. Si
se borra, este bit indica que no se introdujo un
parámetro de retorno para la instrucción.
Visualización solamente – esta información
proviene de la entrada de la instrucción.
DN
BOOL
El bit de efectuado se establece cuando la
rutina externa se ha ejecutado una vez hasta el
final.
La rutina externa establece este bit.
ER
BOOL
La rutina externa establece este bit.
El bit de error se establece si ocurre un error.
La instrucción detiene la ejecución hasta que el
programa borra el bit de error.
FirstScan
BOOL
Este bit identifica si éste es el primer escán
después de que el controlador pasó al modo de
marcha. Use FirstScan para inicializar la rutina
externa, si es necesario.
El controlador establece este bit para reflejar
el estado de escán.
EnableOut
BOOL
Habilitación de salida.
La rutina externa establece este bit.
EnableIn
BOOL
Entrada de habilitación.
El controlador establece este bit para reflejar
la condición de entrada del renglón. La
instrucción se ejecuta independientemente
de la condición del renglón. El encargado del
desarrollo de la rutina externa debe
monitorear este estado y actuar como
corresponde.
User1
BOOL
User0
BOOL
Estos bits están disponibles para el usuario.
El controlador no inicializa estos bits.
La rutina externa o el programa de usuario
pueden establecer estos bits.
ScanType1
BOOL
Estos bits identifican el tipo de escán actual:
ScanType0
BOOL
El controlador establece estos bits para
reflejar el estado de escán.
448
Valores de bit: Tipo de escán:
00
Normal
01
Preescán
10
Post-escán (no aplicable a
programas de lógica de
escalera de relés)
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Descripción: Use la instrucción de salto a rutina externa (JXR) para llamar a la
rutina externa desde una rutina de lógica de escalera en el proyecto.
La instrucción JXR es compatible con varios parámetros; por lo tanto,
puede pasar valores entre la rutina de lógica de escalera y la rutina
externa.
La instrucción JXR es similar a la instrucción de salto a subrutina (JSR).
La instrucción JXR inicia la ejecución de la rutina externa especificada:
• La rutina externa se ejecuta una vez.
• Después de que se ejecuta la rutina externa, la ejecución de
lógica regresa a la rutina que contiene la instrucción JXR.
Indicadores de estado
aritmético: Los indicadores de estado aritmético no son afectados.
Condiciones de fallo:
Ocurrirá un fallo mayor si
• ocurre una excepción en la rutina externa DLL
Tipo de fallo
Código de
fallo:
4
88
• el DLL no pudo cargarse
• el punto de entrada no se encontró en el DLL
Ejecución: La instrucción JXR puede ser síncrona o asíncrona según la
implementación del DLL. El código en el DLL también determina
cómo responder al estado de escán, estado de condición de entrada
de renglón y estado de condición de salida de renglón.
Para obtener más información sobre cómo usar la instrucción JXR y
cómo crear rutinas externas, consulte el documento SoftLogix5800
System User Manual, publicación 1789-UM002.
Publicación 1756-RM003K-ES-P – Julio 2008
449
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Fin temporal (TND)
La instrucción TND sirve como límite.
Operandos:
Operadores de escalera de relé
ninguno
Texto estructurado
TND();
ninguno
Se tienen que introducir los paréntesis () después del mnemónico de
la instrucción, aunque no haya operandos.
Descripción: Cuando se habilita, la instrucción TND deja que el controlador ejecute
la lógica sólo hasta esta instrucción.
Cuando se habilita, la instrucción TND actúa como el fin de la rutina.
Cuando el controlador escanea una instrucción TND, el controlador
va hasta el final de la rutina actual. Si la instrucción TND está en una
subrutina, el control regresa a la rutina que originó la llamada. Si la
instrucción TND está en una rutina principal, el control regresa al
siguiente programa dentro de la tarea actual.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
Se termina la rutina actual.
post-escán
La condición de salida de renglón se establece como Ninguna.
falsa.
450
Se termina la rutina actual.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Ejemplo: Usted puede usar la instrucción TND al depurar o resolver problemas
para ejecutar la lógica hasta cierto punto. Progresivamente, mueva la
instrucción TND a través de la lógica conforme va depurando cada
nueva sección.
Una vez habilitada la instrucción TND, el controlador deja de escanear
la rutina actual.
Lógica de escalera de relés
Texto estructurado
TND();
Publicación 1756-RM003K-ES-P – Julio 2008
451
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Restablecimiento de
control maestro (MCR)
La instrucción MCR, usada en parejas, crea una zona de programa que
puede inhabilitar todos los renglones dentro de las instrucciones MCR.
Operandos:
Lógica de escalera de relés
ninguna
Descripción: Cuando la zona MCR se habilita, los renglones en la zona MCR son
escaneados para determinar la presencia de condiciones normales
verdaderas o falsas. Cuando se inhabilita, el controlador todavía
escanea renglones dentro de una zona MCR, pero el tiempo de escán
se reduce debido a que las salidas no retentivas en la zona están
inhabilitadas. La condición de entrada de renglón es falsa para todas
las instrucciones dentro de la zona MCR inhabilitada.
Cuando programe una zona MCR, tenga presente que:
• Debe terminar la zona con una instrucción MCR incondicional.
• No puede anidar una zona MCR dentro de otra.
• No salte a una zona MCR. Si la zona es falsa, saltar a la zona
activa la zona desde el punto en el que usted saltó al final de la
zona.
• Si una zona MCR continúa al final de la rutina, usted no tiene
que programar una instrucción MCR al final de la zona.
La instrucción MCR no sustituye a un relé de control maestro con
cableado permanente que proporciona capacidad de paro de
emergencia. Usted debe instalar un relé de control maestro con
cableado permanente para proporcionar desactivación de emergencia
de la alimentación eléctrica de E/S.
ATENCIÓN
No superponga ni anide zonas MCR. Cada zona MCR debe estar
separada y completa. Si se superponen o se anidan, podría
ocurrir una operación inesperada de la máquina con posible
daño al equipo o lesiones personales.
Coloque las operaciones críticas fuera de la zona MCR. Si inicia
instrucciones tales como temporizadores en una zona MCR, se
detiene la ejecución de la instrucción cuando la zona se
inhabilita y el temporizador se borra.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
452
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
Las instrucciones en la zona son escaneadas, pero la condición de entrada de renglón es
falsa y las salidas no retentivas en la zona se inhabilitan.
condición de entrada de renglón es verdadera
La condición de salida de renglón se establece como verdadera.
Las instrucciones en la zona se escanean normalmente.
post-escán
La condición de salida de renglón se establece como falsa.
Ejemplo: Cuando la primera instrucción MCR se habilita (input_1, input_2 y
input_3 se establecen), el controlador ejecuta los renglones en la zona
MCR entre las dos instrucciones MCR) y establece o borra las salidas,
dependiendo de las condiciones de entrada.
Cuando la primera instrucción MCR se inhabilita (input_1, input_2 y
input_3 no están establecidos simultáneamente), el controlador
ejecuta los renglones en la zona MCR (entre las dos instrucciones
MCR) y la condición de entrada del renglón se hace falsa para todos
los renglones en la zona MCR, independientemente de las
condiciones de entrada.
Publicación 1756-RM003K-ES-P – Julio 2008
453
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Inhabilitación de
interrupción de usuario
(UID)
Habilitación de interrupció
n de usuario (UIE)
La instrucción UID y la instrucción UIE funcionan juntas para evitar
que otras tareas interrumpan una cantidad pequeña de renglones
críticos.
Operandos:
Lógica de escalera de relés
ninguno
UID();
UIE();
Texto estructurado
ninguno
Se tienen que introducir los paréntesis () después del mnemónico de
instrucción, aunque no haya operandos.
Descripción: Cuando la condición de entrada de renglón es verdadera:
• La instrucción UID evita que tareas de mayor prioridad
interrumpan la tarea actual, pero no inhabilita la ejecución de
una rutina de fallo o del administrador de fallos del controlador.
• La instrucción UIE habilita otras tareas para interrumpir la tarea
actual.
Para evitar la interrupción de una serie de renglones:
1. Limite el número de renglones que no desea sean interrumpidos
al menor número posible. Inhabilitar interrupciones por un
tiempo prolongado puede ocasionar pérdida de comunicación.
2. Arriba del primer renglón que usted no desea sea interrumpido,
introduzca un renglón y una instrucción UID.
3. Después del último renglón que usted no desea sea
interrumpido, introduzca un renglón y una instrucción UIE.
4. Si lo desea, puede anidar parejas de instrucciones UID/UIE.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
454
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción UID evita la interrupción por parte de tareas de mayor prioridad.
La instrucción UIE habilita la interrupción por parte de tareas de mayor prioridad.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo: Cuando ocurre un error (error_bit está activado), la instrucción FSC
compara el código de error con una lista de errores críticos. Si la
instrucción FSC determina que el error es crítico (error_check.FD está
activado), se anuncia una alarma. Las instrucciones UID y UIE evitan
que cualquier otra tarea interrumpa la verificación de errores y
alarmas.
Lógica de escalera de relés
UID
error_bit
error_bit
FSC
FSC
FileSearch/Compare
Search/Compare
File
error_check
Control
error_check
Control
Length
10
Length
Position
8
Position
ALL
Mode
ALL
Mode
error_code=error_list[error_check.POS]
Expression
Expression
error_code=error_list[error_check.POS]
EN
EN
DN
ER
ER
alarm
alarm
error_check.FD
error_check.FD
UIE
Texto estructurado
UID();
<statements>
UIE();
Publicación 1756-RM003K-ES-P – Julio 2008
455
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Instrucción siempre falso
(AFI)
La instrucción AFI establece su condición de salida de renglón como
falsa.
Operandos:
Lógica de escalera de relés
ninguno
Descripción: La instrucción AFI establece su condición de salida de renglón como
falsa.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés:
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La condición de salida de renglón se establece como falsa.
post-escán
La condición de salida de renglón se establece como falsa.
Ejemplo: Use la instrucción AFI para inhabilitar temporalmente un renglón
mientras depura un programa.
Cuando se habilita, la instrucción AFI inhabilita todas las instrucciones
en este renglón.
456
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Sin operación (NOP)
Capítulo 11
La instrucción NOP funciona como indicador de posición
Operandos:
Lógica de escalera de relés
ninguno
Descripción: Usted puede colocar la instrucción NOP en cualquier parte de un
renglón. Una vez habilitada, la instrucción NOP no realiza operación
alguna. Una vez inhabilitada, la instrucción NOP no realiza operación
alguna.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Ejemplo Esta instrucción es útil para ubicar bifurcaciones incondicionales
cuando usted coloca la instrucción NOP en la bifurcación.
La instrucción NOP omite la instrucción XIC para habilitar la salida.
Publicación 1756-RM003K-ES-P – Julio 2008
457
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Fin de transición (EOT)
La instrucción EOT retorna un estado booleano a una transición SFC.
Operandos:
Lógica de escalera de relés
EOT(data_bit);
Operando
Tipo
Formato
Descripción
bit de datos
BOOL
tag
estado de la transición
(0=en ejecución, 1=completada)
Texto estructurado
Los operandos son iguales a los de la instrucción EOT de lógica de
escalera de relés.
Descripción: Puesto que la instrucción EOT retorna un estado booleano, múltiples
rutinas SFC pueden compartir la misma rutina que contiene la
instrucción OET. La rutina que originó la llamada no es una transición;
la instrucción OET actúa como una instrucción TND (ver página 450).
La implementación Logix de la instrucción OET es diferente a la de un
controlador PLC-5. En un controlador PLC-5, la instrucción EOT no
tiene parámetros. En lugar de ello, la instrucción OET PLC-5 retorna la
condición del renglón como su estado. El parámetro de retorno, en un
controlador Logix, retorna el estado de transición puesto que la
condición del renglón no está disponible en todos los lenguajes de
programación Logix.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés:
Acción de texto estructurado:
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción retorna el valor del bit de datos a la rutina que originó la llamada.
post-escán
La condición de salida de renglón se establece como Ninguna.
falsa.
458
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Ejemplo: Cuando se establecen limit_switch1 y interlock_1, se establece el
estado. Después de que se completa timer_1, EOT retorna el valor de
state a la rutina que originó la llamada.
Lógica de escalera de relés
Texto estructurado
state := limit_switch1 AND interlock_1;
IF timer_1.DN THEN
EOT(state);
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
459
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Pausa SFC (SFP)
La instrucción SFP pone en pausa una rutina SFC.
Operandos:
Lógica de escalera de relés
Operando
Tipo:
Formato:
Descripción:
SFCRoutine
Name
ROUTINE
nombre
rutina SFC que se va a poner en pausa
TargetState
DINT
inmediato
seleccione uno:
tag
ejecutando (o introduzca 0)
puesta en pausa (o introduzca 1)
Texto estructurado
SFP(SFCRoutineName,
TargetState);
Los operandos son iguales a los de la instrucción SFP de lógica de
escalera de relés.
Descripción: La instrucción SFP le permite poner en pausa una rutina SFC en
ejecución. Si una rutina SFC se encuentra en pausa, use la instrucción
SFP nuevamente para cambiar el estado y reanudar la ejecución de la
rutina.
Además, use la instrucción SFP para reanudar la ejecución del SFC
después de usar una instrucción SFR (ver página 462) para restablecer
una rutina SFC.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
460
Ocurrirá un fallo mayor si:
Tipo de fallo
Código de fallo
el tipo de rutina no es una rutina SFC
4
85
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Ejecución:
Condición:
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción pone en pausa o reanuda la ejecución de la rutina SFC especificada.
post-escán
La condición de salida de renglón se establece como
falsa.
Ejemplo:
Ninguna.
Si sfc_en_p se establece, se pone en pausa la rutina SFC llamada
normal. Reinicie el SFC cuando se establezca sfc_en_e.
Lógica de escalera de relés
Se pone en pausa la rutina SFC.
Se reanuda la ejecución de la rutina SFC.
Texto estructurado
Se pone en pausa la rutina SFC. IF (sfp_en_p) THEN
SFP(normal,paused);
sfp_en_p := 0;
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
461
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Se reanuda la ejecución de la rutina SFC: IF (sfp_en_e) THEN
SFP(normal,executing);
sfp_en_e := 0;
END_IF;
Restablecer SFC (SFR)
La instrucción SFR restablece la ejecución de una rutina SFC en un
paso especificado.
Operandos:
Operandos de lógica de escalera de relés
Operando
Tipo
Formato
Descripción
SFCRoutine
Name
ROUTINE
nombre
rutina SFC que se va a restablecer
Step Name
SFC_STEP
tag
paso objetivo donde se va a reanudar la
ejecución
Texto estructurado
SFR(SFCRoutineName,StepName);
Los operandos son iguales a los de la instrucción SFR de lógica de
escalera de relés.
Descripción: Cuando la instrucción SFR está habilitada:
• En la rutina SFC especificada, se detiene la ejecución de todas
las acciones almacenadas (restablecimiento).
• El SFC comienza a ejecutarse en el paso especificado.
Si el paso objetivo es 0, el diagrama se restablecerá en su paso inicial.
La implementación Logix de la instrucción SFR es diferente a la del
controlador PLC-5. En el controlador PLC-5, el SFR se ejecutó cuando
la condición del renglón fue verdadera. Después del restablecimiento,
el SFC permanecería en pausa hasta que el renglón que contiene el
SFR se haga falso. Esto permitió retardar la ejecución después de un
restablecimiento. Esta función de poner en pausa/cancelar la pausa de
la instrucción SFR del PLC-5 se desacopló de la condición del renglón
y se movió a la instrucción SFP.
Indicadores de estado
aritmético: no afectados
462
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Condiciones de fallo:
Ocurrirá un fallo mayor si:
Tipo de fallo
Código de fallo
el tipo de rutina no es una rutina SFC
4
85
el paso objetivo especificado no existe
en la rutina SFC
4
89
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción restablece la rutina SFC especificada. La instrucción restablece la rutina SFC especificada.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo: Si ocurre una condición específica (shutdown se establece) reinicie el
SFC en el paso initialize.
Lógica de escalera de relés
Texto estructurado
IF shutdown THEN
SFR(mySFC,initialize);
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
463
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Activar tarea de evento
(EVENT)
La instrucción EVENT activa una ejecución de una tarea de evento.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Tarea
TASK
nombre
tarea de evento que se va a ejecutar
La instrucción le permite seleccionar otros
tipos de tareas, pero no ejecutarlas.
Texto estructurado
EVENT(task_name);
Los operandos son iguales a los de la instrucción EVENT de lógica de
escalera de relés.
Descripción: Use la instrucción EVENT para ejecutar programáticamente una tarea
de evento.
• Cada vez que la instrucción se ejecuta, ésta activa la tarea de
evento especificada.
• Asegúrese de dar a la tarea de evento tiempo suficiente para
completar su ejecución antes de volver a activarla. Se lo
contrario, se producirá una superposición.
• Si usted ejecuta una instrucción EVENT mientras se está
ejecutando la tarea de evento, el controlador incrementa el
contador de superposiciones pero no activa la tarea de evento.
Determine programáticamente si una instrucción EVENT activó
una tarea
Para determinar si una instrucción EVENT activó una tarea de evento,
use una instrucción Get System Value (GSV) para monitorear el
atributo Status de la tarea.
Atributo Status del objeto TASK
Atributo
Tipo de datos
Instrucción
Descripción
Status
DINT
GSV
Proporciona información de estado acerca de la tarea. Una vez que el
controlador establece un bit, usted debe borrar manualmente el bit para
determinar si ocurrió otro fallo de ese tipo.
SSV
464
Para determinar si:
Examine este bit:
Una instrucción EVENT activó la tarea (tarea de
evento solamente).
0
Al expirar un tiempo de espera se activó la tarea
(tarea de evento solamente).
1
Ocurrió una superposición para esta tarea.
2
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
El controlador no borra los bits del atributo Status una vez que éstos
están establecidos.
• Para usar un bit para nueva información de estado, debe borrar
manualmente el bit.
• Use una instrucción de establecer valor del sistema (Set System
Value (SSV)) para establecer el atributo en un valor diferente.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición:
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
EnableIn se establece
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción activa una ejecución de la tarea de evento especificada
post-escán
La condición de salida de renglón se establece como
falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
465
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Ejemplo 1: Un controlador usa múltiples programas pero un procedimiento de
desactivación común. Cada programa usa un tag bajo el control del
programa llamado Shut_Down_Line el cual se activa si el programa
detecta una condición que requiere una desactivación. La lógica en
cada programa se ejecuta de la siguiente manera:
Si Shut_Down_Line = activado (la condición requiere una
desactivación) entonces
Ejecute la tarea Shut_Down una vez
Lógica de escalera de relés
Programa A
Programa B
Texto estructurado
Programa A
IF Shut_Down_Line AND NOT Shut_Down_Line_One_Shot THEN
EVENT (Shut_Down);
END_IF;
Shut_Down_Line_One_Shot := Shut_Down_Line;
Programa B
IF Shut_Down_Line AND NOT Shut_Down_Line_One_Shot THEN
EVENT (Shut_Down);
END_IF;
Shut_Down_Line_One_Shot := Shut_Down_Line;
466
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Capítulo 11
Ejemplo 2: El siguiente ejemplo usa una instrucción EVENT para inicializar una
tarea de evento. (Otro tipo de evento normalmente activa la tarea de
evento).
Tarea continua
Si Initialize_Task_1 = 1 entonces
La instrucción ONS limita la ejecución de la instrucción EVENT a un escán.
La instrucción EVENT activa una ejecución de Task_1 (tarea de evento).
Task_1 (tarea de evento)
La instrucción GSV establece Task_Status (tag DINT) = atributo Status para la tarea de evento. En el atributo
Instance Name, THIS significa el objeto TASK para la tarea en la cual está la instrucción (o sea Task_1).
Si Task_Status.0 = 1, significa que una instrucción EVENT activó la tarea de evento (es decir, cuando la tarea
continua ejecuta su instrucción EVENT para inicializar la tarea de evento).
La instrucción RES pone en cero un contador que usa la tarea de evento.
El controlador no borra los bits del atributo Status una vez que éstos están establecidos. Para usar un bit para
nueva información de estado, debe borrar el bit manualmente.
Si Task_Status.0 = 1, borre ese bit.
La instrucción OTU establece Task_Status.0 = 0.
La instrucción SSV establece el atributo Status de la tarea THIS (Task_1) = Task_Status. Esto incluye el bit
borrado.
Publicación 1756-RM003K-ES-P – Julio 2008
467
Capítulo 11
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Notas:
468
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
12
Instrucciones For/Break
(FOR, FOR...DO, BRK, EXIT, RET)
Introducción
Use la instrucción FOR para llamar repetidamente una subrutina. Use
la instrucción BRK para interrumpir la ejecución de una subrutina.
Si desea
Ejecutar repetidamente una rutina.
Interrumpir la ejecución repetida de una rutina.
Retornar a la instrucción FOR.
(1)
Use esta instrucción
Disponible en estos lenguajes
Para obtener
lógica de escalera de relés
FOR...DO(1)
texto estructurado
BRK
lógica de escalera de relés
EXIT(1)
texto estructurado
RET
lógica de escalera de relés
Vea la página
470
473
474
Texto estructurado solamente.
469Publicación 1756-RM003K-ES-P – Julio 2008
469
Capítulo 12
Instrucciones For/Break (FOR, FOR...DO, BRK, EXIT, RET)
For (FOR)
La instrucción FOR ejecuta una rutina repetidamente.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Routine
name
ROUTINE
nombre de la rutina que se ejecuta
rutina
Index
DINT
tag
cuenta cuántas veces la rutina se ha
ejecutado
Initial value
SINT
inmediato
valor en que se comienza el índice
INT
tag
DINT
Terminal
value
SINT
inmediato
INT
tag
valor en que se detiene la ejecución de la
rutina
DINT
Step size
SINT
inmediato
INT
tag
cantidad que se añade al índice cada vez
que la instrucción FOR ejecuta la rutina
DINT
Texto estructurado
FOR count:= initial_value TO
final_value BY increment DO
<statement>;
END_FOR;
Use la construcción FOR...DO. Consulte Apéndice C, Programación de
texto estructurado para obtener información sobre construcciones de
texto estructurado.
Descripción:
IMPORTANTE
No use una instrucción FOR para llamar (ejecutar) la rutina principal.
• Usted puede colocar una instrucción FOR en la rutina principal o
en cualquier otra rutina.
• Si usted usa una instrucción FOR para llamar a la rutina principal y
posteriormente colocar una instrucción RET en la rutina principal,
se produce un fallo mayor (tipo 4, código 31).
470
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones For/Break (FOR, FOR...DO, BRK, EXIT, RET)
Capítulo 12
Cuando se habilita, la instrucción FOR ejecuta repetidamente la rutina
hasta que el valor Index excede el valor Terminal. Esta instrucción no
pasa parámetros a la rutina.
Cada vez que la instrucción FOR ejecuta la rutina, añade el Step size al
Index.
Tenga cuidado de no hacer lazos demasiadas veces en un solo escán.
Un número excesivo de repeticiones puede hacer que el
temporizador de control (watchdog) exceda el tiempo de espera,
lo cual causa un fallo mayor.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
la rutina principal contiene una instrucción
RET
4
31
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
El controlador ejecuta la subrutina una vez.
Si existen instrucciones FOR recursivas a la misma subrutina, la subrutina es
preescaneada sólo la primera vez. Si existen múltiples instrucciones FOR (no recursivas)
a la misma subrutina, la subrutina es preescaneada cada vez.
condición de entrada de renglón es falsa
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
471
Capítulo 12
Instrucciones For/Break (FOR, FOR...DO, BRK, EXIT, RET)
Condición
Acción de lógica de escalera de relés
condición de entrada de
renglón es verdadera
index = initial_value
no
tamaño de paso < 0
sí
ir a
fin
no
índice ≤ valor terminal
sí
sí
índice ≥ valor terminal
no
ir a
fin
fin
ejecutar rutina
índice = (index + step_size)
la condición de salida de renglón
se establece como verdadera
fin
post-escán
La condición de salida de renglón se establece como falsa.
Ejemplo: Una vez habilitada, la instrucción FOR ejecuta repetidamente
routine_2 e incrementa value_2 en un valor de 1 cada vez. Cuando
value_2 es > 10 o una instrucción BRK está habilitada, la instrucción
FOR ya no ejecuta routine_2.
472
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones For/Break (FOR, FOR...DO, BRK, EXIT, RET)
Interrumpir (BRK)
Capítulo 12
La instrucción BRK interrumpe la ejecución de una rutina que fue
llamada por una instrucción FOR.
Operandos:
Lógica de escalera de relés
ninguna
Texto estructurado
EXIT;
Use la declaración EXIT en una construcción de lazo. Consulte el
Apéndice B para obtener información sobre construcciones de texto
estructurado.
Descripción: Una vez habilitada, la instrucción BRK sale de la rutina actual y
retorna el controlador a la instrucción que sigue a la instrucción FOR.
Si hay instrucciones FOR anidadas, una instrucción BRK retorna el
control a la instrucción FOR del extremo interior.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La condición de salida de renglón se establece como verdadera.
La ejecución retorna a la instrucción que sigue a la instrucción FOR que originó la
llamada.
post-escán
La condición de salida de renglón se establece como falsa.
Ejemplo: Una vez habilitada, la instrucción BRK hace que se deje de ejecutar la
rutina actual y retorna a la instrucción que sigue a la instrucción FOR
que originó la llamada.
Publicación 1756-RM003K-ES-P – Julio 2008
473
Capítulo 12
Instrucciones For/Break (FOR, FOR...DO, BRK, EXIT, RET)
Retornar (RET)
La instrucción RET retorna a la instrucción FOR que originó la
llamada.
Operandos:
Lógica de escalera de relés
ninguna
Descripción:
IMPORTANTE
No coloque una instrucción RET en la rutina principal. Si usted
coloca una instrucción RET en la rutina principal, ocurre un fallo
mayor (tipo 4, código 31).
Cuando se habilita, la instrucción RET retorna a la instrucción FOR. La
instrucción FOR incrementa el valor de Index por una cantidad
equivalente al Step Size y ejecuta la subrutina nuevamente. Si el valor
de Index excede el valor Terminal, se completa la instrucción FOR y
la ejecución pasa a la instrucción que sigue a la instrucción FOR.
La instrucción FOR no usa parámetros. La instrucción FOR ignora
cualquier parámetro que usted introduzca en una instrucción RET.
También puede usar una instrucción TND para terminar la ejecución
de una subrutina.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo mayor si
Tipo de fallo
Código de fallo
la rutina principal contiene una instrucción
RET
4
31
Ejecución:
Condición:
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
Retorna los parámetros especificados a la rutina que originó la llamada.
La condición de salida de renglón se establece como verdadera.
post-escán
474
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones For/Break (FOR, FOR...DO, BRK, EXIT, RET)
Capítulo 12
Ejemplo: La instrucción FOR ejecuta repetidamente routine_2 e incrementa
value_2 en un valor de 1 cada vez. Cuando value_2 es > 10 o una
instrucción BRK está habilitada, la instrucción FOR ya no ejecuta
routine_2.
La instrucción RET retorna a la instrucción FOR que originó la
llamada. La instrucción FOR ejecuta la subrutina nuevamente e
incrementa el valor de Index en una cantidad equivalente a Step Size
o, si el valor de Index excede el valor de Terminal, la instrucción FOR
se completa y la ejecución pasa a la instrucción que sigue a la
instrucción FOR.
rutina que origina la llamada
Publicación 1756-RM003K-ES-P – Julio 2008
subrutina
475
Capítulo 12
Instrucciones For/Break (FOR, FOR...DO, BRK, EXIT, RET)
Notas:
476
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
13
Instrucciones especiales
(FBC, DDT, DTR, PID)
Introducción
Si desea
Las instrucciones especiales realizan operaciones específicas de la
aplicación.
Use esta instrucción
Disponible en estos lenguajes:
Vea la página
Comparar datos con una buena referencia
conocida y registrar las incongruencias.
FBC
lógica de escalera de relés
478
Comparar datos con una buena referencia
conocida, registrar las incongruencias y
actualizar la referencia para que sea igual al
origen.
DDT
lógica de escalera de relés
486
Pasar los datos de origen a través de una
máscara y comparar los resultados con los
datos de referencia. Seguidamente escribir el
origen en la referencia para la siguiente
comparación.
DTR
lógica de escalera de relés
494
Controlar un lazo PID.
PID
lógica de escalera de relés
497
texto estructurado
477Publicación 1756-RM003K-ES-P – Julio 2008
477
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Comparación de bits de
archivo (FBC)
La instrucción FBC compara los bits en una matriz de origen con los
bits en una matriz de referencia.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción:
Source
DINT
tag de matriz matriz que se va a comparar con la
referencia.
no use CONTROL.POS en el subíndice
Reference
DINT
tag de matriz matriz que se va a comparar con el origen.
no use CONTROL.POS en el subíndice
Result
DINT
tag de matriz matriz para almacenar el resultado
no use CONTROL.POS en los subíndices
Cmp control
CONTROL
estructura
estructura de control para la comparación
Length
DINT
inmediato
número de bits que se van a comparar
Position
DINT
inmediato
posición actual en el origen
el valor inicial es típicamente 0
Result
control
CONTROL
estructura
estructura de control para los resultados
Length
DINT
inmediato
número de ubicaciones de almacenamiento
en el resultado
Position
DINT
inmediato
posición actual en el resultado
el valor inicial es típicamente 0
ATENCIÓN
478
Use tags diferentes para la estructura de control de
comparación y para la estructura de control de resultado. El
usar el mismo tag para ambos podría resultar en una operación
inesperada y causar daño al equipo y/o lesiones personales.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Estructura COMPARE
Mnemónico:
Tipo de datos
Descripción:
.EN
BOOL
El bit de habilitación indica que la instrucción FBC está habilitada.
.DN
BOOL
El bit de efectuado se establece cuando la instrucción FBC compara el último bit en las
matrices de origen y referencia.
.FD
BOOL
El bit de encontrado se establece cada vez que la instrucción FBC registra una incongruencia
(operación una a la vez) o después de registrar todas las incongruencias (operación todas por
escán).
.IN
BOOL
El bit de inhibición indica el modo de búsqueda de FBC.
0 = modo de todas
1 = modo de una incongruencia a la vez
.ER
BOOL
El bit de error se establece si la comparación .POS < 0, la comparación .LEN < 0, el
resultado .POS < 0 o el resultado .LEN < 0. La instrucción detiene la ejecución hasta que el
programa borra el bit .ER.
.LEN
DINT
El valor de longitud identifica el número de bits que se van a comparar.
.POS
DINT
El valor de posición identifica el bit actual.
Estructura RESULT
Mnemónico
Tipo de datos
Descripción
.DN
BOOL
El bit de efectuado se establece cuando la matriz resultado está llena.
.LEN
DINT
El valor de longitud identifica el número de ubicaciones de almacenamiento en la matriz
resultado.
.POS
DINT
El valor de posición identifica la posición actual en la matriz resultado.
Descripción: Cuando se habilita, la instrucción FBC compara los bits en la matriz
origen con los bits en la matriz de referencia y registra el número de
bit de cada incongruencia en la matriz resultado.
IMPORTANTE
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción FBC realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción busca o escribe más allá de la matriz en otros
miembros del tag. Esto sucede si una longitud es excesiva y el tag es de un tipo de
datos definido por el usuario.
La diferencia entre las instrucciones DDT y FBC es que cada vez que
la instrucción DDT encuentra una incongruencia, la instrucción
cambia el bit de referencia para que coincida con el bit de origen.
La instrucción FBC no cambia el bit de referencia.
Publicación 1756-RM003K-ES-P – Julio 2008
479
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Selección del modo de búsqueda
Si desea detectar
Seleccione este modo
Una incongruencia a la vez
Establezca el bit .IN en la estructura CONTROL de comparación.
Cada vez que la condición de entrada del renglón cambia de falso a verdadero, la
instrucción FBC busca la siguiente incongruencia entre las matrices de origen y
referencia. Al encontrar una incongruencia, la instrucción establece el bit .FD, registra
la posición de la incongruencia y detiene la ejecución.
Todas las incongruencias
Borre el bit .IN en la estructura CONTROL de comparación.
Cada vez que la condición de entrada del renglón cambia de falso a verdadero, la
instrucción FSC busca todas las incongruencias entre las matrices de origen y
referencia.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
480
Ocurrirá un fallo mayor si:
Tipo de fallo
Código de fallo
result.POS > tamaño de matriz resultado
4
20
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
el bit compare.EN se borra
el bit compare.FD se borra
examine el bit
compare.DN
compare.DN = 0
compare.DN = 1
el bit compare.DN se borra
el valor compare.POS se borra
el bit result.DN se borra
el valor result.POS se borra
la condición de salida de
renglón se establece como
falsa
fin
Publicación 1756-RM003K-ES-P – Julio 2008
481
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Condición
Acción de lógica de escalera de relés
condición de entrada de
renglón es falsa
el bit compare.EN se borra
el bit compare.FD se borra
examine el bit
compare.DN
compare.DN = 0
compare.DN = 1
el bit compare.DN se borra
el valor compare.POS se borra
el bit result.DN se borra
el valor result.POS se borra
la condición de salida de
renglón se establece como
falsa
fin
482
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Condición
Capítulo 13
Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
examine el bit
compare.EN
compare.EN = 1
ir a la
salida
compare.EN = 0
examine el bit
compare.DN
El bit compare.EN se
establece
compare.DN = 1
ir a la
salida
compare.DN = 0
el bit compare.ER se borra
compare.LEN ≤ 0
sí
el bit compare.FD se borra
no
exit
compare.POS < 0
no
sí
el bit compare.ER se
establece
la condición de salida de
renglón se establece como
verdadera
comparar
ir a la
salida
fin
página 484
Publicación 1756-RM003K-ES-P – Julio 2008
483
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Condición
Acción de lógica de escalera de relés
comparar
compare.POS ≥
compare.LEN
sí
compare.POS = compare.LEN
el bit compare.DN se establece
ir a la
salida
página 483
no
result.DN = 1
source[compare.POS] =
reference[compare.POS]
no
el bit compare.FD se
establece
el bit result.DN se borra
el valor result.POS se
borra
examine el bit
result.DN bit
result.DN = 0
sí
compare.POS =
compare.POS + 1
sí
result.POS < 0
no
result.LEN ≤ 0
sí
no
sí
fallo mayor
result.POS >
tamaño de
matriz
resultado
el bit compare.ER se
establece
ir a la
salida
página 483
no
result[result.POS] = compare.POS
result.POS = result.POS + 1
no
result.POS >
result.LEN
sí
el bit result.DN se establece
post-escán
484
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Ejemplo: Cuando se habilita, la instrucción FBC compara el origen array_dint1
con la referencia array_dint2 y almacena las ubicaciones de las
incongruencias en el resultado array_dint3.
origen 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
array_dint1
referencia 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
array_dint2
resultado
array_dint3
Publicación 1756-RM003K-ES-P – Julio 2008
5 3
485
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Detección de diagnóstico
(DDT)
La instrucción DDT compara los bits en una matriz de origen con los
bits en una matriz de referencia para determinar cambios de estado.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
DINT
tag de
matriz
matriz que se va a comparar con la referencia
no use CONTROL.POS en el subíndice
Reference
DINT
tag de
matriz
matriz que se va a comparar con el origen
no use CONTROL.POS en el subíndice
Result
DINT
tag de
matriz
matriz para almacenar los resultados
no use CONTROL.POS en el subíndice
Cmp control
CONTROL
estructura
estructura de control para la comparación
Length
DINT
inmediato
número de bits que se van a comparar
Position
DINT
inmediato
posición actual en el origen
el valor inicial es típicamente 0
Result
control
CONTROL
estructura
estructura de control para los resultados
Length
DINT
inmediato
número de ubicaciones de almacenamiento
en el resultado
Position
DINT
inmediato
posición actual en el resultado
el valor inicial es típicamente 0
ATENCIÓN
486
Use tags diferentes para la estructura de control de
comparación y para la estructura de control de resultado.
El usar el mismo tag para ambos podría resultar en un
comportamiento inesperado y causar daño al equipo y/o
lesiones personales.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Estructura COMPARE
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción DDT está habilitada.
.DN
BOOL
El bit de efectuado se establece cuando la instrucción DDT compara el último bit en las
matrices de origen y referencia.
.FD
BOOL
El bit de encontrado se establece cada vez que la instrucción DDT registra una incongruencia
(operación una a la vez) o después de registrar todas las incongruencias (operación todas por
escán).
.IN
BOOL
El bit de inhibición indica el modo de búsqueda de DDT.
0 = modo de todas
1 = modo de una incongruencia a la vez
.ER
BOOL
El bit de error se establece si la comparación .POS < 0, la comparación .LEN < 0, el
resultado .POS < 0 o el resultado .LEN < 0. La instrucción detiene la ejecución hasta que el
programa borra el bit .ER.
.LEN
DINT
El valor de longitud identifica el número de bits que se van a comparar.
.POS
DINT
El valor de posición identifica el bit actual.
Estructura RESULT
Mnemónico
Tipo de datos
Descripción
.DN
BOOL
El bit de efectuado se establece cuando la matriz resultado está llena.
.LEN
DINT
El valor de longitud identifica el número de ubicaciones de almacenamiento en la matriz
resultado.
.POS
DINT
El valor de posición identifica la posición actual en la matriz resultado.
Descripción: Cuando se habilita, la instrucción DDT compara los bits en la matriz
de origen con los bits en la matriz de referencia, registra el número de
bits de cada incongruencia en la matriz resultado y cambia el valor del
bit de referencia para que coincida con el valor del bit de origen
correspondiente.
IMPORTANTE
Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción DDT realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción busca o escribe más allá de la matriz en otros
miembros del tag. Esto sucede si una longitud es excesiva y el tag es de un tipo de
datos definido por el usuario.
La diferencia entre las instrucciones DDT y FBC radica en que cada
vez que la instrucción DDT encuentra una incongruencia, la
instrucción DDT cambia el bit de referencia para que coincida con el
bit de origen. La instrucción FBC no cambia el bit de referencia.
Publicación 1756-RM003K-ES-P – Julio 2008
487
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Selección del modo de búsqueda
Si desea detectar
Seleccione este modo
Una incongruencia a la vez
Establezca el bit .IN en la estructura CONTROL de comparación.
Cada vez que la condición de entrada del renglón cambia de falso a verdadero, la
instrucción DDT busca la siguiente incongruencia entre las matrices de origen y
referencia. Al encontrar una incongruencia, la instrucción establece el bit .FD, registra
la posición de la incongruencia y detiene la ejecución.
Todas las incongruencias
Borre el bit .IN en la estructura CONTROL de comparación.
Cada vez que la condición de entrada del renglón cambia de falso a verdadero,
la instrucción DDT busca todas las incongruencias entre las matrices de origen y
referencia.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo mayor si
Tipo de fallo
result.POS > tamaño de matriz resultado 4
488
Código de fallo
20
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Ejecución:
Condición:
Acción de lógica de escalera de relés
preescán
el bit compare.EN se borra
el bit compare.FD se borra
examine el bit
compare.DN
compare.DN = 0
compare.DN = 1
el bit compare.DN se borra
el valor compare.POS se borra
el bit result.DN se borra
el valor result.POS se borra
la condición de salida de
renglón se establece como
falsa
fin
Publicación 1756-RM003K-ES-P – Julio 2008
489
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Condición:
Acción de lógica de escalera de relés
condición de entrada de
renglón es falsa
el bit compare.EN se borra
el bit compare.FD se borra
examine el bit
compare.DN
compare.DN = 0
compare.DN = 1
el bit compare.DN se borra
el valor compare.POS se borra
el bit result.DN se borra
el valor result.POS se borra
la condición de salida de
renglón se establece como
falsa
fin
490
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Condición:
Capítulo 13
Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
compare.EN = 1
examine el bit
compare.EN
ir a la
salida
compare.EN = 0
examine el bit
compare.DN
El bit compare.EN se
establece
bit compare.DN = 1
ir a la
salida
bit compare.DN = 0
el bit compare.ER se borra
el bit compare.FD se borra
compare.LEN ≤ 0
sí
no
salida
compare.POS < 0
no
sí
el bit compare.ER se
establece
la condición de salida de
renglón se establece como
verdadera
comparar
ir a la
salida
fin
página 492
Publicación 1756-RM003K-ES-P – Julio 2008
491
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Condición:
Acción de lógica de escalera de relés
comparar
compare.POS ≥
compare.LEN
sí
compare.POS = compare.LEN
el bit compare.DN se establece
ir a la
salida
página 491
no
result.DN = 1
source[compare.POS] =
reference[compare.POS]
no
compare.FD bit se
establece
reference[compare.POS]
= source[compare.POS]
el bit result.DN se borra
el valor result.POS se
borra
examine el bit
result.DN bit
result.DN = 0
sí
compare.POS =
compare.POS + 1
sí
result.POS < 0
no
sí
result.LEN ≤ 0
no
sí
fallo mayor
result.POS >
tamaño de matriz
resultado
el bit compare.ER se
establece
ir a la
salida
página 483
no
result[result.POS] = compare.POS
result.POS = result.POS + 1
no
result.POS ≥
result.LEN
sí
el bit result.DN se establece
post-escán
492
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Ejemplo: Cuando se habilita, la instrucción DDT compara el origen array_dint1
con la referencia array_dint2 y almacena las ubicaciones de las
incongruencias en el resultado array_dint3. El controlador también
cambia los bits incongruentes en la referencia array_dint2 para
hacerlos congruentes con el origen array_dint1.
origen 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
array_dint1
referencia (antes de comparación) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
array_dint2
resultado
5 3
array_dint3
referencia (después de comparación) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
array_dint2
Publicación 1756-RM003K-ES-P – Julio 2008
493
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Transición de datos (DTR)
La instrucción DTR pasa el valor de origen a través de una máscara y
compara el resultado con el valor de referencia.
Operandos:
Lógica de escalera de relés
Operando:
Tipo
Formato
Descripción
Source
DINT
inmediato
matriz que se va a comparar con la
referencia.
tag
Mask
DINT
inmediato
qué bits se bloquean o se pasan
tag
Reference
DINT
tag
matriz que se va a comparar con el origen.
Descripción: La instrucción DTR pasa el valor de origen a través de una máscara
y compara el resultado con el valor de referencia. La instrucción DTR
también escribe el valor de Source enmascarado en el valor de
referencia para la siguiente comparación. Source no cambia.
Un número “1” en la máscara significa que se pasa el bit de datos. Un
número “0” en la máscara significa que se bloquea el bit de datos.
Cuando Source enmascarado es diferente de la referencia, la
condición de salida de renglón se hace verdadera en un escán.
Cuando Source enmascarado es igual que la referencia, la condición
de salida de renglón se hace falsa.
ATENCIÓN
494
El programar en línea con esta instrucción puede ser peligroso.
Si el valor de referencia es diferente del valor de origen, la
condición de salida del renglón se hace falsa. Tenga cuidado al
insertar esta instrucción cuando el procesador está en el modo
de marcha o de marcha remota.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Introduzca un valor de máscara inmediato
Cuando usted introduce una máscara, el software de programación
cambia de manera predeterminada a valores decimales. Si desea
introducir una máscara usando otro formato, preceda el valor con el
prefijo correcto.
Prefijo
Descripción:
16#
hexadecimal
por ejemplo; 16#0F0F
8#
octal
por ejemplo: 8#16
2#
binario
por ejemplo: 2#00110011
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
preescán
La Referencia = Source AND Mask.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La Referencia = Source AND Mask.
La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
origen
enmascarado =
referencia
no
la referencia se establece igual que el origen
enmascarado
la condición de salida de renglón se establece como
verdadera
sí
la condición de salida de
renglón se establece
como falsa
fin
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
495
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Ejemplo: Cuando se habilita, la instrucción DTR enmascara value_1. Si existe
una diferencia entre los dos valores, la condición de salida de renglón
se establece como verdadera.
ejemplo 1
ejemplo 2
origen
7
1
8
3
value_1
1
9
8
7
máscara = 0FFF
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
referencia
escán actual
0
1
8
3
escán previo
0
1
8
3
El renglón permanece falso siempre que el
valor de entrada no cambie.
value_2
0
1
8
7
escán actual
0
1
8
3
escán previo
El renglón permanece verdadero por un
escán cuando se detecta un cambio.
13385
Un número “0” en la máscara deja el bit sin ningún cambio.
496
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Proporcional integral
derivativo (PID)
Capítulo 13
La instrucción PID controla una variable del proceso, tal como flujo,
presión, temperatura o nivel.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
PID
PID
estructura
estructura PID
Process
variable
SINT
tag
valor que desea controlar
SINT
inmediato
(opcional) salida de una estación manual/automática que está pasando por alto la salida del
controlador
INT
tag
INT
DINT
REAL
Tieback
Introduzca 0 si no desea usar este parámetro.
DINT
REAL
Control
variable
SINT
tag
INT
valor que va al dispositivo de control final (válvula, regulador, etc.)
Si usted está usando la banda muerta, la variable Control debe ser REAL o se forzará a 0
cuando el error esté dentro de la banda muerta.
DINT
REAL
PID master
loop
PID
estructura
(opcional) tag PID para el PID maestro
Si está realizando control en cascada y este PID es un lazo esclavo, introduzca el nombre del
PID maestro. Introduzca 0 si no desea usar este parámetro.
Inhold bit
BOOL
tag
(opcional) estado actual del bit mantenido desde un canal de salida analógica 1756 para
permitir un reinicio sin problemas
Introduzca 0 si no desea usar este parámetro.
Inhold value
SINT
tag
(opcional) valor de repetición de lectura de datos desde un canal de salida analógica 1756
para permitir un reinicio sin problemas
INT
Introduzca 0 si no desea usar este parámetro.
DINT
REAL
Publicación 1756-RM003K-ES-P – Julio 2008
497
Capítulo 13
Operando
Instrucciones especiales (FBC, DDT, DTR, PID)
Tipo
Formato
Descripción
Setpoint
muestra el valor actual del punto de ajuste
Process
variable
muestra el valor actual de la variable del proceso escalada
Output %
muestra el valor de porcentaje de la salida actual
Texto estructurado
Los operandos son iguales que los de la instrucción PID de lógica de
escalera de relés. Sin embargo, usted especifica Setpoint, Process
Variable y Output % accediendo a los miembros .SP, .PV. y .OUT de la
estructura PID, en lugar de incluir valores en la lista de operandos.
PID(PID,ProcessVariable,
Tieback,ControlVariable,
PIDMasterLoop,InholdBit,
InHoldValue);
Estructura PID
Mnemónico:
Tipo de datos
Descripción
.CTL
DINT
El miembro .CTL proporciona acceso a los miembros de estado (bits) en una palabra de 32 bits.
La instrucción PID establece los bits 07 - 15.
Este bit
Es este miembro
31
.EN
30
.CT
29
.CL
28
.PVT
27
.DOE
26
.SWM
25
.CA
24
.MO
23
.PE
22
.NDF
21
.NOBC
20
.NOZC
Este bit:
Es este miembro, que la instrucción PID establece
15
.INI
14
.SPOR
13
.OLL
12
.OLH
11
.EWD
10
.DVNA
09
.DVPA
08
.PVLA
07
.PVHA
.SP
REAL
punto de ajuste
.KP
REAL
independiente
ganancia proporcional (sin unidades)
dependiente
ganancia de controlador (sin unidades)
498
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Mnemónico:
Tipo de datos
Descripción
.KI
REAL
independiente
ganancia integral (1/segundo)
dependiente
tiempo de acción integral (minutos por repetición)
independiente
ganancia derivativa (segundos)
dependiente
tiempo de acción derivada (minutos)
.KD
REAL
.BIAS
REAL
% de ganancia anticipativa o polarización
.MAXS
REAL
valor máximo de escalado de unidades de ingeniería
.MINS
REAL
valor mínimo de escalado de unidades de ingeniería
.DB
REAL
unidades de ingeniería de banda muerta
.SO
REAL
% salida establecida
.MAXO
REAL
límite máximo de salida (% de salida)
.MINO
REAL
límite mínimo de salida (% de salida)
.UPD
REAL
tiempo de actualización del lazo (segundos)
.PV
REAL
valor PV escalado
.ERR
REAL
valor de error escalado
.OUT
REAL
% de salida
.PVH
REAL
límite de alarma alta de variable del proceso
.PVL
REAL
límite de alarma baja de variable del proceso
.DVP
REAL
límite de alarma de desviación positiva
.DVN
REAL
límite de alarma de desviación negativa
.PVDB
REAL
banda muerta de alarma de variable del proceso
.DVDB
REAL
banda muerta de alarma de desviación
.MAXI
REAL
valor PV máximo (entrada no escalada)
.MINI
REAL
valor PV mínimo (entrada no escalada)
.TIE
REAL
valor retenido para control manual
.MAXCV
REAL
valor CV máximo (correspondiente a 100%)
.MINCV
REAL
valor CV mínimo (correspondiente a 0%)
.MINTIE
REAL
valor retenido mínimo (correspondiente a 100%)
.MAXTIE
REAL
valor retenido máximo (correspondiente a 0%)
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo 13
499
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Mnemónico:
Tipo de datos
Descripción
.DATA
REAL[17]
El miembro .DATA almacena:
Elemento:
Descripción
.DATA[0]
acumulación integral
.DATA[1]
valor temporal de suavizado derivativo
.DATA[2]
valor .PV previo
.DATA[3]
valor .ERR previo
.DATA[4]
valor .SP previo válido
.DATA[5]
constante de escalado porcentual
.DATA[6]
constante de escalado .PV
.DATA[7]
constante de escalado derivativo
.DATA[8]
valor .KP previo
.DATA[9]
valor .KI previo
.DATA[10]
valor .KD previo
.DATA[11]
.KP de ganancia dependiente
.DATA[12]
.KI de ganancia dependiente
.DATA[13]
.KD de ganancia dependiente
.DATA[14]
valor .CV previo
.DATA[15]
constante de desactivación de escalado .CV
.DATA[16]
constante de desactivación de escalado de valor retenido
.EN
BOOL
habilitado
.CT
BOOL
tipo cascada (0=esclavo; 1=maestro)
.CL
BOOL
lazo en cascada (0=no; 1=sí)
.PVT
BOOL
seguimiento de variable de proceso (0=no; 1=sí)
.DOE
BOOL
derivada de (0=PV; 1=error)
.SWM
BOOL
modo manual de software (0=no-auto; 1=sí- sw manual)
.CA
BOOL
acción de control (0 significa E=SP-PV; 1 significa E=PV-SP)
.MO
BOOL
modo de estación (0=automático; 1=manual)
.PE
BOOL
Ecuación PID (0=independiente; 1=dependiente)
.NDF
BOOL
sin suavizado derivativo
(0=filtro de suavizado derivativo habilitado; 1=filtro de suavizado derivativo inhabilitado)
.NOBC
BOOL
sin cálculo en base a datos originales de polarización
(0=cálculo en base a datos originales de polarización habilitado; 1=cálculo en base a datos
originales de polarización inhabilitado)
.NOZC
BOOL
sin banda muerta de cruce por cero
(0=banda muerta de cruce por cero; 1=banda muerta sin cruce por cero)
.INI
BOOL
PID inicializado (0=no; 1=sí)
.SPOR
BOOL
punto de ajuste fuera de rango (0=no; 1=sí)
.OLL
BOOL
VC está por debajo del límite de salida mínimo (0=no; 1=sí)
.OLH
BOOL
VC está por arriba del límite de salida máximo (0=no; 1=sí)
.EWD
BOOL
el error está dentro de la banda muerta (0=no; 1=sí)
.DVNA
BOOL
la desviación tiene alarma baja (0=no; 1=sí)
500
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Mnemónico:
Tipo de datos
Descripción
.DVPA
BOOL
la desviación tiene alarma alta (0=no; 1=sí)
.PVLA
BOOL
PV tiene alarma baja (0=no; 1=sí)
.PVHA
BOOL
PV tiene alarma alta (0=no; 1=sí)
Capítulo 13
Descripción: La instrucción PID típicamente recibe la variable del proceso (PV)
desde un módulo de entrada analógico y modula una salida de
variable de control (CV) en un módulo de salidas analógicas a fin de
mantener la variable del proceso en el punto de ajuste deseado.
El bit .EN indica el estado de ejecución. El bit .EN se establece cuando
la condición de entrada del renglón cambia de falso a verdadero.
El bit .EN se borra cuando la condición de entrada del renglón se
hace falsa. La instrucción PID no usa el bit .DN. La instrucción PID
se ejecuta en cada escán, siempre que la condición de entrada de
renglón sea verdadera.
bit .EN
estado de renglón
ejecución de la instrucción PID
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
IMPORTANTE
Publicación 1756-RM003K-ES-P – Julio 2008
Estos fallos eran fallos mayores en el controlador PLC-5.
Ocurrirá un fallo menor si
Tipo de fallo
Código de fallo
.UPD ≤ 0
4
35
el punto de ajuste está fuera de rango
4
36
501
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Ejecución:
Condición
Acción
Acción
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción ejecuta el lazo PID.
post-escán
La condición de salida de renglón se establece como Ninguna.
falsa.
Configure una instrucción
PID
La instrucción ejecuta el lazo PID.
Después de introducir la instrucción PID y especificar la estructura de
PID, se usan las fichas de configuración para especificar cómo debe
funcionar la instrucción PID.
Haga clic aquí para configurar
la instrucción PID
502
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Especifique el ajuste
Seleccione la ficha Tuning. Los cambios surten efecto al hacer clic en
otro campo, en OK, en Apply o al presionar Enter.
En este campo
Especifique:
Setpoint (SP)
Introduzca un valor de punto de ajuste (.SP).
% salida establecida
Introduzca un porcentaje de salida establecido (.SO).
En el modo manual de software, este valor se usa para la salida.
En el modo auto, este valor muestra el % de salida.
Output bias
Introduzca un porcentaje de polarización de salida (.BIAS).
Proportional gain (Kp)
Introduzca la ganancia proporcional (.KP).
Para ganancias independientes, ésta es la ganancia proporcional (sin unidades).
Para ganancias dependientes, ésta es la ganancia del controlador (sin unidades).
Integral gain (Ki)
Introduzca la ganancia integral (.KI).
Para ganancias independientes, ésta es la ganancia integral (1/segundo).
Para ganancias dependientes, éste es el tiempo de acción integral (minutos por
repetición).
Derivative time (Kd)
Introduzca la ganancia derivativa (.KD).
Para ganancias independientes, ésta es la ganancia derivativa (segundos).
Para ganancias dependientes, éste es el valor en minutos del tiempo de acción
derivada).
Manual Mode
Seleccione ya sea manual (.MO) o manual de software (.SWM).
El modo manual tiene precedencia sobre el modo manual de software, si ambos están
seleccionados.
Publicación 1756-RM003K-ES-P – Julio 2008
503
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Especifique la configuración
Seleccione la ficha Configuration. Debe hacer clic en OK o Apply para
que los cambios surtan efecto.
En este campo
Especifique
PID equation
Seleccione ganancias independientes o dependientes (.PE).
Use independientes cuando desee que las tres ganancias (P, I y D) operen de manera
independiente. Use dependientes cuando desee una ganancia total del controlador que
afecte a los tres términos (P, I y D).
Control action
Seleccione ya sea E=PV-SP o E=SP-PV para la acción de control (.CA).
Derivative of
Seleccione VP o error (.DOE).
Use la derivada de VP para eliminar los picos de salida causados por cambios del punto
de ajuste. Use la derivada de error para respuestas rápidas a cambios del punto de
ajuste cuando el algoritmo puede tolerar sobreimpulsos.
Loop update time
Introduzca el tiempo de actualización (.UPD) para la instrucción.
CV high limit
Introduzca un límite alto para la variable de control (.MAXO).
CV low limit
Introduzca un límite bajo para la variable de control (.MINO).
Deadband value
Introduzca un valor de banda muerta (.DB).
No derivative smoothing
Habilite o inhabilite esta selección (.NDF).
No bias calculation
Habilite o inhabilite esta selección (.NOBC).
No zero crossing in
deadband
Habilite o inhabilite esta selección (.NOZC).
PV tracking
Habilite o inhabilite esta selección (.PVT).
Cascade loop
Habilite o inhabilite esta selección (.CL).
Cascade type
Si el lazo en cascada está habilitado, seleccione esclavo o maestro (.CT).
Especificación de alarmas
Seleccione la ficha Alarms. Debe hacer clic en OK o Apply para que
los cambios surtan efecto.
504
En este campo
Especifique
PV alta
Introduzca un valor de alarma alta VP (.PVH).
PV low
Introduzca un valor de alarma baja VP (.PVL).
PV deadband
Introduzca un valor de banda muerta de alarma VP (.PVDB).
positive deviation
Introduzca un valor de desviación positiva (.DVP).
negative deviation
Introduzca un valor de desviación negativa (.DVN).
deviation deadband
Introduzca un valor de banda muerta de alarma de desviación (.DVDB).
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Especificación de escalado
Seleccione la ficha Scaling. Debe hacer clic en OK o Apply para que
los cambios surtan efecto.
En este campo
Especifique
PV unscaled maximum
Introduzca un valor PV máximo (.MAXI) que sea igual al valor máximo sin escalado
recibido desde el canal de entrada analógico para el valor PV.
PV unscaled minimum
Introduzca un valor VP mínimo (.MINI) que sea igual al valor mínimo sin escalado
recibido desde el canal de entrada analógico para el valor PV.
PV engineering units
maximum
Introduzca el valor máximo de unidades de ingeniería correspondiente a .MAXI (.MAXS)
PV engineering units
minimum
Introduzca el valor mínimo de unidades de ingeniería correspondiente a .MINI (.MINS)
CV maximum
Introduzca un valor de CV máximo correspondiente al 100% (.MAXCV).
CV minimum
Introduzca un valor de CV mínimo correspondiente al 0% (.MINCV).
Tieback maximum
Introduzca un valor retenido máximo (.MAXTIE) que sea igual al valor máximo sin
escalado recibido desde el canal de entrada analógico para el valor retenido.
Tieback minimum
Introduzca un valor retenido mínimo (.MINTIE) que sea igual al valor mínimo sin
escalado recibido desde el canal de entrada analógico para el valor retenido.
PID Initialized
Si usted cambia las constantes de escalado durante el modo de marcha, desactívelo
para reinicializar valores internos de desactivación de escalado (.INI).
Uso de instrucciones PID
El control de lazo cerrado PID retiene una variable del proceso en un
punto de ajuste deseado. La siguiente figura muestra un ejemplo de
régimen de flujo/nivel de fluido.
punto de ajuste
-
error
ecuación PID
+
régimen de flujo
variable de proceso
variable de control
detector de nivel
14271
En el ejemplo anterior, el nivel del tanque se compara con el punto de
ajuste. Si el nivel es más alto que el punto de ajuste, la ecuación PID
aumenta la variable de control y causa que se abra la válvula de salida
del tanque, reduciendo así el nivel del tanque.
Publicación 1756-RM003K-ES-P – Julio 2008
505
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
La ecuación PID usada en la instrucción PID es una ecuación de
forma posicional con la opción de usar ganancias independientes
o dependientes. Al usar ganancias independientes, las ganancias
proporcional, integral y derivativa sólo afectan sus respectivos
términos proporcional, integral o derivativo específicos. Al usar
ganancias dependientes, la ganancia proporcional es reemplazada con
una ganancia de controlador que afecta los tres términos. Usted puede
usar cualquier forma de ecuación para realizar el mismo tipo de
control. Los dos tipos de ecuación se proporcionan simplemente para
permitirle usar el tipo de ecuación con el que usted esté más
familiarizado.
Opción de ganancia
Derivada de
Ganancias dependientes
(estándar ISA)
error (E)
Ecuación
t
1
dE
CV = K C E + ---- ∫ Edt + T d ------- + BIAS
Ti
dt
0
variable de proceso (PV)
E = SP - PV
t
CV = K C
1
dPV
E + ---- ∫ Edt – T d ----------- + BIAS
Ti
dt
0
E = PV - SP
t
dPV
1
CV = K C E + ---- ∫ Edt + T d ----------- + BIAS
dt
Ti
0
Ganancias independientes
error (E)
t
dE
CV = K P E + K i ∫ Edt + K d ------- + BIAS
dt
0
variable de proceso (PV)
E = SP - PV
t
dPV
CV = K P E + K i ∫ Edt – K d ----------- + BIAS
dt
0
E = PV - SP
t
dPV
CV = K P E + K i ∫ Edt + K d ----------- + BIAS
dt
0
506
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Donde:
Variable
Descripción
KP
ganancia proporcional (sin unidades)
Kp = Kc sin unidades
Ki
ganancia integral (segundos -1)
Para convertir entre Ki (ganancia integral) y Ti (tiempo de acción integral),
use:
KC
K i = ---------60T i
Kd
ganancia derivativa (segundos)
Para convertir entre Kd (ganancia derivativa) y Td (tiempo de acción
derivada), use:
Kd = Kc (Td) 60
KC
ganancia de controlador (sin unidades)
Ti
tiempo de acción integral (minutos/repetición)
Td
tiempo de acción derivada (minutos)
SP
punto de ajuste
PV
variable de proceso
E
error [(SP-PV) o (PV-SP)]
BIAS
ganancia anticipativa o polarización
VC
variable de control
dt
tiempo de actualización del lazo
Si no desea usar un término particular de la ecuación PID,
simplemente establezca su ganancia en cero. Por ejemplo, si no desea
acción derivativa, establezca Kd o Td igual a cero.
Bloqueo de acción integral y transferencia sin perturbaciones de
manual a automático
La instrucción PID evita automáticamente una acción integral de
restablecimiento al evitar que el término integral se acumule cada vez
que la salida CV llega a sus valores máximos o mínimos, según lo
establecido por .MAXO y .MINO. El término integral acumulado
permanece congelado hasta que la salida CV cae por debajo de su
límite máximo o supera su límite mínimo. Seguidamente se reanuda
automáticamente la acumulación integral normal.
Publicación 1756-RM003K-ES-P – Julio 2008
507
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
La instrucción PID acepta dos modos manuales de control:
Modo manual de control
Descripción
manual de software (.SWM)
también conocido como modo de salida establecida
permite que el usuario establezca en el software el % de salida
El valor de salida establecida (.SO) se usa como la salida del lazo. El valor de salida
establecida normalmente proviene de una entrada de operador de un dispositivo de
interface de operador.
manual (.MO)
toma el valor retenido, como una entrada, y ajusta sus variables internas para generar
el mismo valor en la salida.
La entrada retenida relacionada con la instrucción PID se escala al 0 - 100% según los
valores de .MINTIE y .MAXTIE y se utiliza como la salida del lazo. La entrada retenida
generalmente viene desde la salida de una estación manual/automática de hardware
que está pasando por alto la salida proveniente del controlador.
Nota: El modo manual tiene precedencia sobre el modo manual de software si ambos
bits de modo están establecidos.
La instrucción PID también proporciona automáticamente
transferencias sin perturbaciones desde el modo manual de software
o desde el modo manual a automático. La instrucción PID vuelve
a calcular en base a datos originales el valor del término de
acumulación integral requerido para hacer que la salida CV rastree ya
sea el valor de la salida establecida (.SO) en el modo manual de
software o la entrada retenida en el modo manual. De esta manera,
cuando el lazo cambia al modo automático, la salida CV comienza
desde el valor retenido o salida establecida, y no ocurre ninguna
“perturbación” en el valor de salida.
La instrucción PID también puede proporcionar automáticamente una
transferencia sin perturbaciones de manual a automático incluso si no
se usa el control integral (es decir, Ki = 0). En este caso, la instrucción
modifica el término .BIAS para hacer que la salida CV rastree la salida
establecida o los valores retenidos. Al reanudarse el control
automático, el término .BIAS mantendrá su valor más reciente. Usted
puede inhabilitar el cálculo en base a datos originales del término
.BIAS con sólo establecer el bit .NOBC en la estructura de datos PID.
Tenga en cuenta que si establece .NOBC como verdadero, la
instrucción PID ya no proporciona una transferencia sin
perturbaciones de manual a automático cuando no se usa control
integral.
Temporización de la instrucción PID
La instrucción PID y el muestreo de la variable del proceso necesitan
actualizarse periódicamente. Este tiempo de actualización está
relacionado con el proceso físico que usted está controlando. Para
lazos muy lentos como, por ejemplo, lazos de temperatura, un
período de una actualización por segundo o incluso un período
508
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
mayor, generalmente es suficiente para obtener un buen control. Para
lazos algo más rápidos, tales como lazos de presión o flujo, se puede
requerir períodos de actualización como de 250 milisegundos. Sólo en
raras ocasiones, como en el caso de control de tensión mecánica o
carrete desbobinador, se requieren períodos de actualización de lazo
de 10 milisegundos o menores.
Puesto que la instrucción PID usa una base de tiempo para su cálculo,
usted necesita sincronizar la ejecución de esta instrucción con el
muestreo de la variable del proceso (PV).
La manera más fácil de ejecutar la instrucción PID es poner la
instrucción PID en una tarea periódica. Establezca el tiempo de
actualización de lazo (.UPD) igual al régimen de la tarea periódica
para asegurarse de que la instrucción PID se ejecute en cada escán
de la tarea periódica.
Lógica de escalera de relés
Texto estructurado
PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,
Local:1:O.Ch4Data,0,Local:1:I.Ch4InHold,
Local:1:I.Ch4Data);
Cuando use una tarea periódica, asegúrese de que la entrada
analógica empleada para la variable del proceso se actualice con el
procesador a un régimen considerablemente más rápido que el
régimen de la tarea periódica. Idealmente, la variable del proceso
debe enviarse al procesador a un régimen por lo menos de cinco a
diez veces mayor que el régimen de la tarea periódica. Esto
minimiza la diferencia de tiempo entre las muestras de la variable
del proceso y la ejecución del lazo PID. Por ejemplo, si el lazo PID
es una tarea periódica de 250 milisegundos, use un tiempo de
actualización de lazo de 250 milisegundos (.UPD = .25) y configure el
módulo de entrada analógica para producir datos por lo menos cada
25 ó 50 milisegundos.
Publicación 1756-RM003K-ES-P – Julio 2008
509
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Otro método algo menos exacto de ejecutar una instrucción PID
consiste en colocar la instrucción en una tarea continua y usar un bit
de temporizador expirado para activar la ejecución de la instrucción
PID.
Lógica de escalera de relés
Texto estructurado
PID_timer.pre := 1000
TONR(PID_timer);
IF PID_timer.DN THEN
PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,
Local:1:O.Ch0Data,0,Local:1:I.Ch0InHold,
Local:1:I.Ch0Data);
END_IF;
Con este método, el tiempo de actualización de lazo de la instrucción
PID debe establecerse igual que el valor prefijado en el temporizador.
Igual que cuando se usa una tarea periódica, usted debe establecer el
módulo de entrada analógica para producir la variable del proceso a
un régimen considerablemente mayor que el régimen de actualización
de lazo. Usted sólo debe usar el método de temporización de
ejecución PID para lazos cuyos tiempos de actualización de lazo sean
por lo menos varias veces mayores que el tiempo de ejecución más
largo posible de la tarea continua.
La manera más exacta de ejecutar una instrucción PID es usar la
función de muestreo en tiempo real (RTS) de los módulos de entradas
analógicas 1756. El módulo de entradas analógicas muestrea sus
entradas según el régimen de muestreo en tiempo real que usted haya
establecido al momento de configurar el módulo. Cuando el período
510
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
de muestreo en tiempo real del módulo expira, éste actualiza sus
entradas y actualiza un sello de hora continuo (representado por el
miembro RolllingTimestamp de la estructura de entradas analógicas)
producido por el módulo.
El rango del sello de hora oscila entre 0 - 32767 milisegundos.
Monitoree el sello de hora. Cuando cambia, significa que se recibió
una nueva muestra de la variable del proceso. Cada vez que cambia
un sello de hora, se ejecuta una vez la instrucción PID. Puesto que el
muestreo de la variable del proceso es activado por el módulo de
entradas analógicas, el tiempo de muestreo de entrada es muy exacto,
y el tiempo de actualización de lazo usado por la instrucción PID
debe establecerse igual al tiempo RTS del módulo de entradas
analógicas.
Para asegurarse de no omitir muestreos de la variable del proceso,
ejecute la lógica a un régimen más rápido que el tiempo RTS. Por
ejemplo, si el tiempo RTS es 250 ms, puede colocar la lógica PID en
una tarea periódica que se ejecute cada 100 ms para asegurarse de no
omitir nunca un muestreo. Incluso podría colocar la lógica PID en una
tarea continua, siempre y cuando se asegure de que la lógica se
actualizaría más frecuentemente que una vez cada 250 milisegundos.
A continuación se muestra un ejemplo del método de ejecución RTS.
La ejecución de la instrucción PID depende de la recepción de datos
de entradas analógicas. Si el módulo de entradas analógicas falla o se
desmonta, el controlador deja de recibir sellos de hora continuos y el
lazo PID deja de ejecutarse. Usted debe monitorear el bit de estado de
la entrada analógica PV y, si muestra un estado incorrecto, fuerce el
lazo al modo manual de software y ejecute el lazo en cada escán. Así
el operador podrá cambiar manualmente la salida del lazo PID.
Lógica de escalera de relés
Publicación 1756-RM003K-ES-P – Julio 2008
511
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Texto estructurado
IF (Local:0:I.Ch0Fault) THEN
TIC101.SWM [:=] 1;
ELSE
TIC101.SWM := 0;
END_IF;
IF (Local:0:I.RollingTimestamp<>PreviousTimestamp) O
(Local:0:I.Ch0Fault) THEN
PreviousTimestamp := Local:0:I.RollingTimestamp;
PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,
Local:1:O.Ch0Data,0,Local:1:I.Ch0InHold,
Local:1:I.Ch0Data);
END_IF;
Reinicio sin problemas
La instrucción PID puede interactuar con los módulos de salidas
analógicas 1756 para admitir un reinicio sin perturbaciones cuando el
controlador cambia del modo de programación al modo de marcha,
o cuando se enciende el controlador.
Cuando el módulo de salidas analógicas 1756 pierde comunicación
con el controlador o detecta que el controlador está en el modo de
programación, el módulo de salidas analógicas establece sus salidas
según los valores de condición de fallo que usted especificó cuando
configuró el módulo. Seguidamente, cuando el controlador regresa al
modo de marcha o vuelve a establecer comunicación con el módulo
de salidas analógicas, usted puede disponer que la instrucción PID
restablezca automáticamente su salida de variable de control igual a la
salida analógica, mediante el bit Inhold y los parámetros Inhold Value
en la instrucción PID.
512
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Para establecer un reinicio sin problemas:
Haga lo siguiente
Detalles:
Configure el canal del módulo de salidas
analógicas 1756 que recibe la variable de control
proveniente de la instrucción PID
Marque la casilla de verificación de retener para inicialización (“hold for
initialization”) en la página de propiedades del canal específico del módulo.
Esto indicará al módulo de salidas analógicas que cuando el controlador regrese al
modo de marcha o vuelva a establecer comunicación con el módulo, el módulo debe
retener la salida analógica en su valor actual hasta que el valor enviado desde el
controlador coincida (dentro de un intervalo de 0.1%) con el valor actual usado por
el canal de salida. La salida del controlador cambiará gradualmente al valor de
salida retenido actualmente mediante el uso del término .BIAS. Este cambio en
forma de rampa es similar al de la transferencia sin perturbaciones.
Introduzca el tag de bit Inhold y el tag Inhold Value
en la instrucción PID
El módulo de salidas analógicas 1756 retorna dos valores por cada canal en su
estructura de datos de entrada. El bit de estado en retención (.Ch2InHold, por
ejemplo) cuando es verdadero, indica que el canal de salida analógica está
reteniendo su valor. El valor de relectura de datos (.Ch2Data, por ejemplo) muestra
el valor de salida actual en unidades de ingeniería.
Introduzca el tag del bit de estado en retención como parámetro InHold de la
instrucción PID. Introduzca el tag del valor de relectura de datos como el parámetro
Inhold Value.
Cuando el bit Inhold se hace verdadero, la instrucción PID mueve el Inhold Value a la
salida de variable de control y se reinicializa para permitir un reinicio sin
perturbaciones en dicho valor. Cuando el módulo de salidas analógicas recibe su
valor de vuelta desde el controlador, éste desactiva el bit de estado InHold, lo cual
permite que la instrucción PID comience normalmente a realizar el control.
Suavizado derivativo
El cálculo de la derivada se mejora mediante el uso de un filtro de
suavizado derivativo. Este filtro digital pasabajos de primer orden
ayuda a minimizar picos grandes del término derivativo causados por
ruido en la PV. Este suavizado se hace más agresivo mientras mayores
son los valores de ganancia derivativa. Usted puede inhabilitar el
suavizado derivativo si su proceso requiere valores muy grandes de
ganancia derivativa (Kd > 10, por ejemplo). Para inhabilitar el
suavizado derivativo, seleccione la opción sin suavizado derivativo
(“No derivative smoothing”) en la ficha Configuration o establezca el
bit .NDF en la estructura PID.
Publicación 1756-RM003K-ES-P – Julio 2008
513
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Establezca la banda muerta
La banda muerta ajustable le permite seleccionar un rango de errores
por encima y por debajo del punto de ajuste donde la salida no
cambia siempre y cuando el error permanezca dentro de este rango.
Esta banda muerta le permite controlar la proximidad con la que la
variable del proceso coincide con el punto de ajuste sin cambiar la
salida. La banda muerta también ayuda a minimizar el desgaste del
dispositivo de control final.
+ banda muerta
punto de ajuste
error dentro del rango de banda
muerta
- banda muerta
tiempo
41026
El cruce por cero es un control de banda muerta que permite que la
instrucción use el error para fines de cálculo desde que la variable del
proceso penetra en la banda muerta hasta que la variable del proceso
cruza el punto de ajuste. Una vez que la variable del proceso cruza el
punto de ajuste (el error cruza por cero y cambia de signo), y siempre
que la variable del proceso permanezca en la banda muerta, la salida
no cambiará.
La banda muerta se extiende, por arriba y por debajo del punto de
ajuste, el valor que usted especifica. Introduzca cero para inhibir la
banda muerta. La banda muerta tiene las mismas unidades escaladas
que el punto de ajuste. Se puede usar la banda muerta sin la función
de cruce por cero; para ello seleccione la opción “sin cruce por cero”
(“no zero crossing for deadband”) en la ficha Configuration, o
establezca el bit .NOZC en la estructura PID.
Si usted está usando la banda muerta, la variable Control debe ser
REAL o se forzará a 0 cuando el error esté dentro de la banda muerta.
Use límite de salida
Usted puede establecer un límite de salida (porcentaje de salida) en la
salida de control. Cuando la instrucción detecta que la salida ha
llegado a un límite, establece un bit de alarma y evita que la salida
exceda el límite inferior o superior.
514
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Capítulo 13
Ganancia anticipativa o polarización de salida
Usted puede establecer ganancia anticipativa a una perturbación del
sistema alimentando el valor .BIAS en el valor ganancia anticipativa/
polarización de la instrucción PID.
El valor de ganancia anticipativa representa una perturbación
alimentada en la instrucción PID antes de que la perturbación tenga
oportunidad de cambiar la variable de proceso. La ganancia
anticipativa a menudo se usa para controlar procesos con un retraso
de transporte. Por ejemplo, un valor de ganancia anticipativa que
representa “agua fría vertida en una mezcla tibia” podría reforzar el
valor de salida más rápidamente que si se espera que la variable del
proceso cambie como resultado de la mezcla.
Un valor de polarización generalmente se usa cuando no se usa
control integral. En este caso, el valor de polarización puede ajustarse
para mantener la salida en el rango requerido a fin de mantener PV
cerca del punto de ajuste.
Lazos en cascada
El PID conecta en cascada dos lazos asignando la salida en porcentaje
del lazo maestro al punto de ajuste del lazo esclavo. El lazo esclavo
convierte automáticamente la salida del lazo maestro en las unidades
de ingeniería correctas para el punto de ajuste del lazo esclavo, con
base en los valores del lazo esclavo para .MAXS y .MINS.
Lógica de escalera de relés
Texto estructurado
PID(master,pv_master,0,cv_master,0,0,0);
PID (slave,pv_slave,0,cv_slave,master,0,0);
Publicación 1756-RM003K-ES-P – Julio 2008
515
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Control de relación
Usted puede mantener la relación entre dos valores usando estos
parámetros:
• valor no controlado
• valor controlado (el punto de ajuste resultante que se usará para
la instrucción PID)
• relación entre estos dos valores
Lógica de escalera de relés
Texto estructurado
pid_2.sp := uncontrolled_flow * ratio
PID(pid_2,pv_2,tieback_2,cv_2,0,0,0);
516
Para este parámetro de multiplicación
Introduzca este valor
destination
valor controlado
source A
valor no controlado
source B
relación
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID)
Teoría de PID
Capítulo 13
Las siguientes figuras muestran el flujo del proceso para una
instrucción PID.
Proceso PID
SP
Mostrado
como EU
Error
mostrado
como EU
Software A/M
o bien
Modo de
estación A/M
Modo A/M de
software
SP-PV
Auto
+
SP
% de
polarización
de salida
Acción de
control
Convierte unidades
de ingeniería a %
(Error)
-
PV-SP
PVT
Cálculo PID
(Out%)
Auto
+
Error X 100
maxs-mins
-1
Manual
Convierte % a unidades CV
Auto
Límite de
salida
Manual
No
Convierte de binario a
unidades de ingeniería
CV
Salida (CV)
mostrada como
% de escalado
EU
Convierte unidades de
valor retenido a %
(PV-mini)(maxs-mins) + mins
maxi-mini
CV%(maxcv-mincv)
+ mincv
100
Manual
% salida
establecida
PV
Mostrado
como EU
Sí
% salida
establecida
Modo de
estación A/M
tieback-mintie
maxtie-mintie
x 100
PV
Proceso PID con lazos maestro/esclavo
Lazo
maestro
A/M de software
o bien
Modo de estación A/M
Auto
SP
SP-PV
(Error)
+
-
% de
polarización
de salida
Acción de
control
Convierte unidades
de ingeniería a %
Cálculo PID (Out%)
PV-SP
PVT
No
Manual
Límite de
salida
% salida
establecida
(Master.Out)
Manual
Modo A/M de
software
Sí
(Master.Out)
Modo de
estación A/M
% salida
establecida
Convierte de binario a
unidades de ingeniería
(PV-mini)(maxs-mins)
+ mins
maxi-mini
Lazo
esclavo
+
Error X 100
maxs-mins
-1
Manual
Modo A/M de
software
Auto
Auto
SP
Convierte
unidades de
ingeniería a %
PV
Error X 100
maxs-mins
Auto
Manual
Manual
Los ítems referidos en este cuadro
son parámetros, unidades y modos
que pertenecen al lazo esclavo
designado.
PV
% de
polarización
de salida
Acción de
control
Convierte % a unidades (SP)
de ingeniería
X (maxs-mins)
+ mins
100
SP-PV
+
-
-1
PV-SP
Convierte
unidades de
ingeniería a %
Cálculo PID
+
Modo A/M de
software
Auto
Error X 100
maxs-mins
Modo de
estación A/M
Auto
Convierte de binario a
unidades de ingeniería
(PV-mini)(maxs-mins)
+ mins
maxi-mini
% salida
establecida
Convierte % a unidades CV
Límite de
salida
Manual
Manual
% salida
establecida
CV%(maxcv-mincv)
100
+ mincv
Convierte unidades de
valor retenido a %
tieback-mintie
maxtie-mintie
x 100
PV
Publicación 1756-RM003K-ES-P – Julio 2008
517
Capítulo 13
Instrucciones especiales (FBC, DDT, DTR, PID)
Notas:
518
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
14
Instrucciones trigonométricas
(SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Introducción
Si desea
Las instrucciones trigonométricas evalúan las operaciones aritméticas
mediante operaciones trigonométricas.
Use esta instrucción
Disponible en estos lenguajes
Vea la página
Hallar el seno de un valor.
SIN
lógica de escalera de relés
texto estructurado
bloque de funciones
520
Hallar el coseno de un valor.
COS
lógica de escalera de relés
texto estructurado
bloque de funciones
523
Hallar la tangente de un valor.
TAN
lógica de escalera de relés
texto estructurado
bloque de funciones
526
Hallar el arco seno de un valor.
ASN
lógica de escalera de relés
texto estructurado
bloque de funciones
529
lógica de escalera de relés
texto estructurado
bloque de funciones
532
lógica de escalera de relés
texto estructurado
bloque de funciones
535
ASIN(1)
Hallar el arco coseno de un valor.
ACS
ACOS(1)
Hallar el arco tangente de un valor.
ATN
ATAN(1)
(1)
Texto estructurado solamente.
Usted puede mezclar diferentes tipos de datos, pero puede producirse
pérdida de exactitud y error de redondeo, y la instrucción requiere
más tiempo para ejecutarse. Verifique el bit de estado de overflow
(S:V) para determinar si se truncó el resultado.
Para las instrucciones de lógica de escalera de relés, los tipos de datos
que aparecen en letras negritas indican tipos de datos óptimos. Las
instrucciones se ejecutan más rápidamente y requieren menos
memoria si todos los operandos de instrucción usan el mismo tipo de
datos óptimos, típicamente DINT o REAL.
519Publicación 1756-RM003K-ES-P – Julio 2008
519
Capítulo 14
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Seno (SIN)
La instrucción SIN halla el seno del valor de origen (en radianes) y
almacena el resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
hallar el seno de este valor
INT
tag
DINT
REAL
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := SIN(source);
Use SIN como una función. Esta función calcula el seno de source y
almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
SIN tag
FBD_MATH_ADVANCED
estructura
estructura SIN
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
520
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Capítulo 14
Descripción: Source debe ser mayor o igual que -205887.4 (-2πx215) y menor o
igual que 205887.4 (2πx215). El valor resultante en Destination
siempre es mayor o igual que -1 y menor o igual que 1.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición:
Acción:
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador calcula el seno de Source y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
521
Capítulo 14
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Ejemplo: Calcule el seno de value y coloque el resultado en result.
Lógica de escalera de relés
Texto estructurado
result := SIN(value);
Bloque de funciones
522
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Coseno (COS)
Capítulo 14
La instrucción COS halla el coseno del valor de origen (en radianes) y
almacena el resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
hallar el coseno de este valor
INT
tag
DINT
REAL
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := COS(source);
Use COS como función. Esta función calcula el coseno de source y
almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
Operando
Tipo
Formato
Descripción
COS tag
FBD_MATH_ADVANCED
estructura
estructura COS
523
Capítulo 14
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: Source debe ser mayor o igual que -205887.4 (-2πx215) y menor o
igual que 205887.4 (2πx215). El valor resultante en Destination
siempre es mayor o igual que -1 y menor o igual que 1.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador calcula el coseno de Source y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
524
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Capítulo 14
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo: Calcule coseno de value y coloque el resultado en result.
Lógica de escalera de relés
Texto estructurado
result := COS(value);
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
525
Capítulo 14
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Tangente (TAN)
La instrucción TAN halla la tangente del valor de origen (en radianes)
y almacena el resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
halla la tangente de este valor
INT
tag
DINT
REAL
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := TAN(source);
Use TAN como función. Esta función calcula la tangente de source y
almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
526
Operando
Tipo
Formato
Descripción
TAN tag
FBD_MATH_ADVANCED
estructura
Estructura TAN
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Capítulo 14
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: Source debe ser mayor o igual que -102943.7 (-2πx214) y menor o
igual que 102943.7 (2πx214).
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador calcula la tangente de Source y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
527
Capítulo 14
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Ejemplo: Calcule la tangente de value y coloque el resultado en result.
Lógica de escalera de relés
Texto estructurado
result := TAN(value);
Bloque de funciones
528
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Arco seno (ASN)
Capítulo 14
La instrucción ASN halla el arco seno del valor de Source y almacena
el resultado en Destination (en radianes).
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
hallar el arco seno de este valor
INT
tag
DINT
REAL
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := ASIN(source);
Use ASIN como función. Esta función calcula el arco seno de source y
almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
ASN tag
FBD_MATH_ADVANCED
estructura
estructura ASN
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Publicación 1756-RM003K-ES-P – Julio 2008
529
Capítulo 14
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Descripción: Source debe ser mayor o igual que -1 y menor o igual que 1. El valor
resultante en Destination siempre es mayor o igual que -π/2 y menor
o igual que π/2 (donde π = 3.141593).
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador calcula el arco seno de Source y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
530
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Capítulo 14
Ejemplo: Calcule el arco seno de value y coloque el resultado en result.
Lógica de escalera de relés
Texto estructurado
result := ASIN(value);
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
531
Capítulo 14
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Arco coseno (ACS)
La instrucción ACS halla el arco coseno del valor de Source y
almacena el resultado en Destination (en radianes).
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
hallar el arco coseno de este valor
INT
tag
DINT
REAL
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := ACOS(source);
Use ACOS como función. Esta función calcula el arco coseno de
source y almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
ACS tag
FBD_MATH_ADVANCED
estructura
estructura ACS
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
532
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Capítulo 14
Descripción: Source debe ser mayor o igual que -1 y menor o igual que 1. El valor
resultante en Destination siempre es mayor o igual que 0 y menor o
igual que π (donde π = 3.141593).
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador calcula el arco coseno de Source y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
533
Capítulo 14
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Ejemplo: Calcule el arco coseno de value y coloque el resultado en result.
Lógica de escalera de relés
Texto estructurado
result := ACOS(value);
Bloque de funciones
534
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Arco tangente (ATN)
Capítulo 14
La instrucción ATN halla el arco tangente del valor de Source y
almacena el resultado en Destination (en radianes).
Operandos:
Lógica de escalera de relés
Operando:
Tipo
Formato
Descripción
Source
SINT
inmediato
hallar el arco tangente de este valor
INT
tag
DINT
REAL
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := ATAN(source);
Use ATAN como función. Esta función calcula el arco tangente de
source y almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
ATN tag
FBD_MATH_ADVANCED
estructura
estructura ATN
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Publicación 1756-RM003K-ES-P – Julio 2008
535
Capítulo 14
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Descripción: El valor resultante en Destination siempre es mayor o igual que -π/2 y
menor o igual que π/2 (donde π = 3.141593).
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador calcula el arco tangente de Source y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
536
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Capítulo 14
Ejemplo: Calcule el arco tangente de value y coloque el resultado en result.
Lógica de escalera de relés
Texto estructurado
result := ATAN(value);
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
537
Capítulo 14
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Notas:
538
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
15
Instrucciones matemáticas avanzadas
(LN, LOG, XPY)
Introducción
Si desea
Hallar el logaritmo natural de un valor.
Las instrucciones matemáticas avanzadas incluyen estas instrucciones:
Use esta instrucción
LN
Disponible en estos lenguajes
lógica de escalera de relés
Vea la página
540
texto estructurado
bloque de funciones
Hallar el logaritmo base 10 de un valor.
LOG
lógica de escalera de relés
543
texto estructurado
bloque de funciones
Elevar un valor a la potencia de otro valor.
XPY
lógica de escalera de relés
546
texto estructurado(1)
bloque de funciones
(1)
No hay una instrucción equivalente en texto estructurado. Use el operador en una expresión.
Usted puede mezclar diferentes tipos de datos, pero puede producirse
pérdida de exactitud y error de redondeo, y la instrucción requiere
más tiempo para ejecutarse. Verifique el bit S:V para determinar si se
truncó el resultado.
Para las instrucciones de lógica de escalera de relés, los tipos de datos
que aparecen en negrita indican tipos de datos óptimos. Las
instrucciones se ejecutan más rápidamente y requieren menos
memoria si todos los operandos de instrucción usan el mismo tipo de
datos óptimos, típicamente DINT o REAL.
539Publicación 1756-RM003K-ES-P – Julio 2008
539
Capítulo 15
Instrucciones matemáticas avanzadas (LN, LOG, XPY)
Logaritmo natural (LN)
La instrucción LN halla el logaritmo natural de Source y almacena el
resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
hallar el logaritmo natural de este valor
INT
tag
DINT
REAL
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := LN(source);
Use LN como función. Esta función calcula el logaritmo natural de
source y almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
LN tag
FBD_MATH_ADVANCED
estructura
estructura LN
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
La instrucción produjo un resultado válido.
540
BOOL
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones matemáticas avanzadas (LN, LOG, XPY)
Capítulo 15
Descripción: Source debe ser mayor o igual que cero; de lo contrario, se establece
el bit de estado de overflow (S:V). El valor Destination resultante es
mayor o igual que -87.33655 y menor o igual que 88.72284.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador calcula el logaritmo natural de Source y coloca el resultado en
Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
541
Capítulo 15
Instrucciones matemáticas avanzadas (LN, LOG, XPY)
Ejemplo: Calcule el logaritmo natural de value y coloque el resultado en result.
Ejemplo de la lógica de escalera de relés
Texto estructurado
result := LN(value);
Bloque de funciones
542
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones matemáticas avanzadas (LN, LOG, XPY)
Logaritmo base 10 (LOG)
Capítulo 15
La instrucción LOG halla el logaritmo base 10 de Source y almacena el
resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
hallar el logaritmo de este valor
INT
tag
DINT
REAL
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := LOG(source);
Use LOG como función. Esta función calcula el logaritmo de source y
almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
Operando
Tipo
Formato
Descripción
LOG tag
FBD_MATH_ADVANCED
estructura
Estructura LOG
543
Capítulo 15
Instrucciones matemáticas avanzadas (LN, LOG, XPY)
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: Source debe ser mayor o igual que cero; de lo contrario, se establece
un bit de estado de overflow (S:V). El valor Destination resultante es
mayor o igual que -37.92978 y menor o igual que 38.53184.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador calcula el logaritmo de Source y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
544
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones matemáticas avanzadas (LN, LOG, XPY)
Capítulo 15
Ejemplo: Calcule el logaritmo de value y coloque el resultado en result.
Lógica de escalera de relés
Texto estructurado
result := LOG(value);
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
545
Capítulo 15
Instrucciones matemáticas avanzadas (LN, LOG, XPY)
X a la potencia de Y (XPY)
La instrucción XPY eleva Source A (X) a la potencia de Source B (Y) y
almacena el resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source X
SINT
inmediato
valor base
INT
tag
DINT
REAL
Source Y
SINT
inmediato
INT
tag
exponente
DINT
REAL
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceX ** sourceY;
Use dos signos de multiplicación adyacentes “∗∗” como operador
dentro de una expresión. Esta expresión eleva sourceX a la potencia
de sourceY y almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
546
Operando
Tipo
Formato
Descripción
XPY tag
FBD_MATH
estructura
estructura XPY
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones matemáticas avanzadas (LN, LOG, XPY)
Capítulo 15
Estructura FBD_MATH
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source X
REAL
Valor base.
Válido = cualquier valor con punto flotante (coma flotante)
Source Y
REAL
exponente
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: Si Source X es negativo, Source Y debe ser un valor entero; de lo
contrario se producirá un fallo menor.
La instrucción XPY usa este algoritmo: Destination = X**Y
El controlador evalúa x0=1 y 0x=0.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ocurrirá un fallo menor si
Tipo de fallo
Código de fallo
Source X es negativo y Source Y no es un valor
entero
4
4
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador eleva Source X a la potencia de Source Y y coloca el resultado en
Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
La condición de salida de renglón se establece como falsa.
547
Capítulo 15
Instrucciones matemáticas avanzadas (LN, LOG, XPY)
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo: La instrucción XPY eleva value_1 a la potencia de value_2 y coloca el
resultado en result.
Lógica de escalera de relés
Texto estructurado
result := (value_1 ∗∗ value_2);
Bloque de funciones
548
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
16
Instrucciones de conversión matemática
(DEG, RAD, TOD, FRD, TRN, TRUNC)
Introducción
Si desea
Convertir radianes en grados.
Las instrucciones de conversión matemática convierten valores.
Use esta instrucción
DEG
Disponible en estos lenguajes
lógica de escalera de relés
Vea la página
550
texto estructurado
bloque de funciones
Convertir grados en radianes.
RAD
lógica de escalera de relés
553
texto estructurado
bloque de funciones
Convertir un valor entero en un valor BCD.
TOD
lógica de escalera de relés
556
bloque de funciones
Convertir un valor BCD en un valor entero.
FRD
lógica de escalera de relés
559
bloque de funciones
Retirar la parte fraccionaria de un valor.
TRN
lógica de escalera de relés
TRUNC(1)
texto estructurado
561
bloque de funciones
(1)
Texto estructurado solamente.
Usted puede mezclar diferentes tipos de datos, pero puede producirse
pérdida de exactitud y error de redondeo, y la instrucción requiere
más tiempo para ejecutarse. Verifique el bit S:V para determinar si se
truncó el resultado.
Para las instrucciones de lógica de escalera de relés, los tipos de datos
que aparecen en negrita indican tipos de datos óptimos. Las
instrucciones se ejecutan más rápidamente y requieren menos
memoria si todos los operandos de instrucción usan el mismo tipo de
datos óptimos, típicamente DINT o REAL.
549Publicación 1756-RM003K-ES-P – Julio 2008
549
Capítulo 16
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Grados (DEG)
La instrucción DEG convierte Source (radianes) en grados y almacena
el resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
valor que se va a convertir en grados
INT
tag
DINT
REAL
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := DEG(source);
Use DEG como función. Esta función convierte source en grados y
almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
DEG tag
FBD_MATH_ADVANCED
estructura
Estructura DEG
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Entrada a la instrucción de conversión.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción de conversión. Se establecen indicadores de estado aritmético
para esta salida.
550
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Capítulo 16
Descripción: La instrucción DEG usa este algoritmo:
Source*180/π (donde π = 3.141593)
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador convierte Source en grados y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
551
Capítulo 16
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Ejemplo: Convierta value en grados y coloque el resultado en result.
Lógica de escalera de relés
Texto estructurado
result := DEG(value);
Bloque de funciones
552
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Radianes (RAD)
Capítulo 16
La instrucción RAD convierte Source (grados) en radianes y almacena
el resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
valor que se va a convertir en radianes
INT
tag
DINT
REAL
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := RAD(source);
Use RAD como función. Esta función convierte source a radianes y
almacena el resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
RAD tag
FBD_MATH_ADVANCED
estructura
estructura RAD
Estructura FBD_MATH_ADVANCED
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Entrada a la instrucción de conversión.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
REAL
Resultado de la instrucción de conversión. Se establecen indicadores de estado aritmético
para esta salida.
Publicación 1756-RM003K-ES-P – Julio 2008
553
Capítulo 16
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Descripción: La instrucción RAD usa este algoritmo:
Source*π/180 (donde π = 3.141593)
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador convierte Source en radianes y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
554
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Capítulo 16
Ejemplo Convierta value en radianes y coloque el resultado en result.
Lógica de escalera de relés
Texto estructurado
result := RAD(value);
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
555
Capítulo 16
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Convertir a BCD (TOD)
La instrucción TOD convierte un valor decimal (0 ≤ Source ≤
99,999,999) en un valor BCD y almacena el resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
valor que se va a convertir en decimal
INT
tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination
SINT
tag
almacena el resultado
INT
DINT
Bloque de funciones
Operando
Tipo
Formato
Descripción
TOD tag
FBD_CONVERT
estructura
estructura TOD
Estructura FBD_CONVERT
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
DINT
Entrada a la instrucción de conversión.
Válido = cualquier número entero
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
DINT
Resultado de la instrucción de conversión. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: BCD es el sistema de números decimales codificados en binario que
expresa dígitos decimales individuales (0-9) en una notación binaria
de 4 bits.
Si usted introduce un Source negativo, la instrucción genera un fallo
menor y borra el Destination.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
556
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Capítulo 16
Condiciones de fallo:
Ocurrirá un fallo menor si
Tipo de fallo
Código de fallo
Source < 0
4
4
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
no
origen < 0
origen > 99,999,999
sí
no
convertir origen en BCD
sí
S:V se establece a 1
la condición de salida de
renglón se establece como
verdadera
fin
condición de entrada de renglón es verdadera
El controlador convierte Source en BCD y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
557
Capítulo 16
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Ejemplo: La instrucción TOD convierte value_1 en un valor BCD y coloca el
resultado en result_a.
Lógica de escalera de relés
Bloque de funciones
558
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Convertir a entero (FRD)
Capítulo 16
La instrucción FRD convierte un valor BCD (Source) en un valor
decimal y almacena el resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
SINT
inmediato
valor que se va a convertir en decimal
INT
tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination
SINT
tag
almacena el resultado
INT
DINT
Bloque de funciones
Operando
Tipo
Formato:
Descripción
FRD tag
FBD_CONVERT
estructura
estructura FRD
Estructura FBD_CONVERT
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
DINT
Entrada a la instrucción de conversión.
Válido = cualquier número entero
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
DINT
Resultado de la instrucción de conversión. Se establecen indicadores de estado aritmético
para esta salida.
Descripción: La instrucción FRD convierte un valor BCD (Source) en un valor
decimal y almacena el resultado en Destination.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
559
Capítulo 16
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador convierte Source en un valor decimal y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
Ninguna.
Ejemplo: La instrucción FRD convierte value_a en un valor decimal y coloca el
resultado en result_1.
Lógica de escalera de relés
Bloque de funciones
560
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Truncar (TRN)
Capítulo 16
La instrucción TRN retira (trunca) la parte fraccionaria de Source y
almacena el resultado en Destination.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Source
REAL
inmediato
valor que se va a truncar
tag
Destination
SINT
tag
tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := TRUNC(source);
Use TRUNC como función. Esta función trunca source y almacena el
resultado en dest.
Consulte el Apéndice C, Programación de texto estructurado para
obtener información sobre la sintaxis de las expresiones en texto
estructurado.
Bloque de funciones
Operando
Tipo
Formato
Descripción
TRN tag
FBD_TRUNCATE
estructura
estructura TRM
Estructura FBD_TRUNCATE
Parámetro de
entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se
actualizan.
La opción predeterminada es establecido.
Source
REAL
Entrada a la instrucción de conversión.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos
Descripción
EnableOut
BOOL
La instrucción produjo un resultado válido.
Dest
DINT
Resultado de la instrucción de conversión. Se establecen indicadores de estado aritmético
para esta salida.
Publicación 1756-RM003K-ES-P – Julio 2008
561
Capítulo 16
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Descripción: El truncado no redondea el valor; en lugar de ello, la parte no
fraccionaria permanece igual, independientemente del valor de la
parte fraccionaria.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Condición
Acción
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
El controlador retira la parte fraccionaria de Source y coloca el resultado en Destination.
La condición de salida de renglón se establece como verdadera.
post-escán
La condición de salida de renglón se establece como falsa.
Bloque de funciones
Condición
Acción
preescán
Ninguna.
primer escán de instrucción
Ninguna.
primera ejecución de instrucción
Ninguna.
EnableIn se borra
EnableOut se borra.
EnableIn se establece
La instrucción se ejecuta.
EnableOut se establece.
post-escán
562
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Capítulo 16
Ejemplo: Retire la parte fraccionaria de float_value_1, dejando igual la parte no
fraccionaria, y coloque el resultado en float_value_1_truncated.
Lógica de escalera de relés
Texto estructurado
float_value_1_truncated := TRUNC(float_value_1);
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008
563
Capítulo 16
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Notas:
564
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
17
Instrucciones para puerto serie ASCII
(ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Introducción
Use las instrucciones para puerto serie ASCII a fin de leer y escribir
caracteres ASCII.
IMPORTANTE
Para usar las instrucciones del puerto serie ASCII, usted debe
configurar el puerto serie del controlador. Consulte el
documento Logix5000 Controllers Common Procedures,
publicación 1756-PM001.
Si desea
Por ejemplo
determinar cuándo el búfer contiene
caracteres de terminación
ver si hay datos que tienen caracteres
de terminación
Use esta
instrucción
ABL
Disponible en estos
lenguajes
Vea la
página
lógica de escalera de
relés
570
texto estructurado
contar los caracteres en el búfer
verificar el número requerido de
caracteres antes de leer el búfer
ACB
lógica de escalera de
relés
573
texto estructurado
borrar el búfer
borrar las instrucciones del puerto
serie ASCII que actualmente se están
ejecutando o están en la cola.
obtener el estado de las líneas de
control del puerto serie
• borrar datos antiguos del búfer al
momento de la puesta en marcha
ACL
• sincronizar el búfer con un
dispositivo
hacer que el módem cuelgue
lógica de escalera de
relés
575
texto estructurado
AHL
activar y desactivar la señal DTR
lógica de escalera de
relés
577
texto estructurado
activar y desactivar la señal RTS
leer un número fijo de caracteres
leer datos desde un dispositivo que
envía el mismo número de caracteres
durante cada transmisión
ARD
lógica de escalera de
relés
581
texto estructurado
leer un número variable de
caracteres, inclusive el primer
conjunto de caracteres de
terminación
leer datos desde un dispositivo que
envía un número variable de
caracteres en cada transmisión
enviar caracteres y añadir
automáticamente uno o dos
caracteres adicionales para marcar
el final de los datos
enviar mensajes que siempre usan
los mismos caracteres de terminación
enviar caracteres
enviar mensajes que usan una
variedad de caracteres de
terminación
ARL
lógica de escalera de
relés
585
texto estructurado
AWA
lógica de escalera de
relés
589
texto estructurado
AWT
lógica de escalera de
relés
594
texto estructurado
565Publicación 1756-RM003K-ES-P – Julio 2008
565
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Ejecución de la instrucción
Las instrucciones de puerto serie ASCII se ejecutan de manera
asíncrona con el escán de la lógica:
Lógica
La condición de entrada
de renglón de
instrucción cambia de
falsa a verdadera
Cola ASCII
Tarea ASCII
Instrucción 1
La instrucción en la
parte superior de la
cola se ejecuta.
Instrucción 2
Instrucción 3
Instrucción 4
Los datos fluyen
entre la tarea y el
búfer.
La instrucción entra en
la cola ASCII.
Los datos fluyen entre el
búfer y el puerto serie.
Puerto serie
Búfer
Cada instrucción de puerto serie ASCII (excepto ACL) usa una
estructura SERIAL_PORT_CONTROL para realizar las siguientes
funciones:
• controlar la ejecución de la instrucción
• proporcionar información de estado acerca de la instrucción
566
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Capítulo 17
El siguiente diagrama de temporización muestra los cambios en los
bits de estado mientras la instrucción ABL prueba el búfer en busca de
caracteres de terminación.
escán
escán
escán
escán
condición de
entrada de renglón
falsa
verdadera
falsa
verdadera
falsa
.EN
desactivado
activado
desactivado
activado
desactivado
.EU
desactivado
activado
.RN
desactivado
activado
.DN o .ER
desactivado
activado
desactivado
activado
.FD
desactivado
activado
desactivado
activado
.EM
desactivado
entra en la cola
se ejecuta
en este ejemplo,
encuentra caracteres
de terminación
Publicación 1756-RM003K-ES-P – Julio 2008
desactivado
activado
activado
desactivado
desactivado
activado
restablece los bits de estado
cuando se escanean y el bit
.DN o .ER está establecido,
se establece el bit .EM
567
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
La cola ASCII retiene hasta 16 instrucciones. Cuando la cola está llena,
una instrucción intenta entrar en la cola durante cada escán
subsiguiente de la instrucción, según se muestra a continuación:
escán
condición de
entrada de renglón
falsa
verdadera
.EN
desactivado
activado
.EU
desactivado
escán
escán
escán
falsa
activado
intenta entrar en la cola, pero la cola está llena
entra en la cola
Códigos de error ASCII
Si una instrucción del puerto serie ASCII no logra ser ejecutada, el
miembro ERROR de su estructura SERIAL_PORT_CONTROL contendrá
uno de los siguientes códigos de error hexadecimal:
Este código
hexadecimal
Indica que
16#2
El módem se desconectó.
16#3
La señal CTS se perdió durante la comunicación.
16#4
El puerto serie estaba en el modo de sistema.
16#A
Antes de que se ejecutara la instrucción, se estableció el bit .UL. Esto impide la ejecución de la instrucción.
16#C
El controlador cambió del modo de marcha al modo de programación. Esto detiene la ejecución de una instrucción de
puerto serie ASCII y borra la cola.
16#D
En el cuadro de diálogo Controller Properties, ficha User Protocol, se cambiaron y se aplicaron los parámetros de
tamaño de búfer o modo de eco. Esto detiene la ejecución de una instrucción de puerto serie ASCII y borra la cola.
16#E
Instrucción ACL ejecutada.
16#F
La configuración del puerto serie cambió del modo de usuario al modo de sistema. Esto detiene la ejecución de una
instrucción de puerto serie ASCII y borra la cola de instrucciones de puerto serie ASCII.
16#51
El valor LEN del tag de cadena es negativo o mayor que el tamaño de DATA del tag de cadena.
16#54
La longitud de control del puerto serie es mayor que el tamaño del búfer.
16#55
La longitud de control del puerto serie es negativa o mayor que el tamaño de Source o Destination.
568
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Capítulo 17
Tipos de datos de cadena
Los caracteres ASCII se almacenan en tags que usan un tipo de datos
de cadena.
• Se puede usar el tipo de datos STRING predeterminado, que
almacena hasta 82 caracteres.
• Usted puede crear un nuevo tipo de datos de cadena que
almacene menos o más caracteres.
Para crear un nuevo tipo de datos de cadena, consulte el documento
Logix5000 Controllers Common Procedures, publicación 1756-PM001.
Cada tipo de datos de cadena contiene los siguientes miembros:
Nombre
Tipo de datos Descripción
Notas
LEN
DINT
El LEN se actualiza automáticamente con el nuevo conteo de los caracteres
cuando usted:
número de caracteres
en la cadena
• usa el cuadro de diálogo String Browser para introducir caracteres
• usa las instrucciones que leen, convierten o manipulan una cadena
El LEN muestra la longitud de la cadena actual. El miembro DATA puede contener
caracteres adicionales antiguos, los cuales no se incluyen en el conteo del LEN.
Datos
Matriz SINT
caracteres ASCII de la
cadena
• Para obtener acceso a los caracteres de la cadena, utilice el nombre del tag.
Por ejemplo, para acceder a los caracteres del tag string_1, introduzca
string_1.
• Cada elemento de la matriz DATA contiene un carácter.
• Usted puede crear nuevos tipos de datos de cadena que almacenen menos o
más caracteres.
Publicación 1756-RM003K-ES-P – Julio 2008
569
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Prueba ASCII para línea de
búfer (ABL)
La instrucción ABL cuenta los caracteres en el búfer, inclusive el
primer carácter de terminación.
Operandos:
Lógica de escalera de relés
ABL
ABL
ASCII
Buffer
Line
ASCIITest
TestFor
For
Buffer
Line
Channel
Channel
SerialPortControl
Control
SerialPort
CharacterCount
Count
Character
?
?
?
EN
DN
ER
ER
Operando
Tipo
Formato
Descripción
Channel
DINT
inmediato
0
tag
Serial Port
SERIAL_PORT_
Control
CONTROL
Character
Count
DINT
tag
tag que controla la operación
inmediato
0
Durante la ejecución, muestra el número
de caracteres en el búfer, incluso el
primer conjunto de caracteres de
terminación.
Texto estructurado
ABL(Channel
SerialPortControl);
Los operandos son iguales a los de la instrucción ABL de lógica de
escalera de relés. Usted accede al valor de conteo de caracteres
mediante el miembro .POS de la estructura SERIAL_PORT_CONTROL.
Estructura SERIAL_PORT_CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción está habilitada.
.EU
BOOL
El bit de cola indica que la instrucción entró en la cola ASCII.
.DN
BOOL
El bit de efectuado indica que ha finalizado la instrucción, pero es asíncrono respecto al
escán de la lógica.
.RN
BOOL
El bit de ejecución indica que la instrucción se está ejecutando.
.EM
BOOL
El bit de vacío indica que finalizó la instrucción, pero es síncrono respecto al escán de la
lógica.
.ER
BOOL
El bit de error indica que la instrucción falló (errores).
.FD
BOOL
El bit de encontrado indica que la instrucción encontró el carácter o los caracteres de
terminación.
.POS
DINT
La posición determina el número de caracteres en el búfer, inclusive el primer conjunto de
caracteres de terminación. La instrucción sólo retorna este número después de que
encuentra el carácter o los caracteres de terminación.
.ERROR
DINT
El error contiene un valor hexadecimal que identifica la causa del error.
570
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Capítulo 17
Descripción La instrucción ABL busca en el búfer el primer conjunto de caracteres
de terminación. Si la instrucción encuentra los caracteres de
terminación, ésta:
• establece el bit .FD
• cuenta los caracteres en el búfer, inclusive el primer conjunto de
caracteres de terminación
En el cuadro de diálogo Controller Properties, ficha User Protocol, se
definen los caracteres ASCII que la instrucción considera como
caracteres de terminación.
Para programar la instrucción ABL, siga estas pautas:
1. Configure el puerto serie del controlador en modo de usuario y
defina los caracteres que sirven como caracteres de terminación.
2. Ésta es una instrucción transicional:
• En la lógica de escalera de relés, cambie la condición de
entrada del renglón de borrado a establecido cada vez que
deba ejecutarse la instrucción.
• En texto estructurado, condicione la instrucción de manera
que sólo se ejecute cuando ocurra una transición.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta cuando la condición de
entrada del renglón alterna de borrado a
establecido.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
Publicación 1756-RM003K-ES-P – Julio 2008
571
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Condición
Acción de lógica de escalera de relés
ejecución de la instrucción
La instrucción cuenta los caracteres en el búfer.
Acción de texto estructurado
El bit .EN se establece.
Los bits de estado restantes, excepto .UL, se borran.
La instrucción trata de entrar en la cola ASCII.
post-escán
La condición de salida de renglón se establece como Ninguna.
falsa.
Ejemplo: Pruebe continuamente el búfer para determinar si contiene los
caracteres de terminación.
Lógica de escalera de relés
MV_line.EN
MV_line.EN
/
ABL
ABL
ASCII
For Buffer
Line
ASCII
TestTest
For Buffer
Line
Channel
0
Channel
MV_line.E
SerialPort
Control
SerialPort
Control
MV_line
Character
Count
Character
Count
0
EN
EN
DN
DN
ER
ER
Texto estructurado
ABL(0,MV_line);
572
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Caracteres ASCII en el
búfer (ACB)
Capítulo 17
La instrucción ACB cuenta los caracteres en el búfer.
Operandos:
Lógica de escalera de relés
ACB
ACB
ASCII
ASCIIChars
CharsininBuffer
Buffer
Channel
Channel
SerialPort
SerialPortControl
Control
Character
CharacterCount
Count
?
?
?
EN
EN
DN
DN
ER
ER
Operando
Tipo
Formato
Introduzca
Channel
DINT
inmediato
0
tag
Serial Port
SERIAL_PORT_
Control
CONTROL
Character
Count
DINT
tag
tag que controla la operación
inmediato
0
Durante la ejecución, muestra el número
de caracteres en el búfer.
Texto estructurado
ACB(Channel
SerialPortControl);
Los operandos son los mismos que para la instrucción ACB de lógica
de escalera de relés. Sin embargo, usted especifica el valor de conteo
de caracteres al acceder al miembro .POS de la estructura
SERIAL_PORT_CONTROL, en lugar de incluir el valor en la lista de
operandos.
Estructura SERIAL_PORT_CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción está habilitada.
.EU
BOOL
El bit de cola indica que la instrucción entró en la cola ASCII.
.DN
BOOL
El bit de efectuado indica que ha finalizado la instrucción, pero es asíncrono respecto al
escán de la lógica.
.RN
BOOL
El bit de ejecución indica que la instrucción se está ejecutando.
.EM
BOOL
El bit de vacío indica que finalizó la instrucción, pero es síncrono respecto al escán de la
lógica.
.ER
BOOL
El bit de error indica que la instrucción falló (errores).
.FD
BOOL
El bit de encontrado indica que la instrucción encontró un carácter.
.POS
DINT
La posición determina el número de caracteres en el búfer, inclusive el primer conjunto de
caracteres de terminación.
.ERROR
DINT
El error contiene un valor hexadecimal que identifica la causa del error.
Publicación 1756-RM003K-ES-P – Julio 2008
573
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Descripción: La instrucción ACB cuenta los caracteres en el búfer.
Para programar la instrucción ACB, siga estas pautas:
1. Configure el puerto serie del controlador en modo de usuario.
2. Ésta es una instrucción transicional:
• En la lógica de escalera de relés, cambie la condición de
entrada del renglón de borrado a establecido cada vez que
deba ejecutarse la instrucción.
• En texto estructurado, condicione la instrucción de manera
que sólo se ejecute cuando ocurra una transición.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta cuando la condición de entrada del
renglón alterna de borrado a establecido.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción cuenta los caracteres en el búfer.
El bit .EN se establece.
Los bits de estado restantes, excepto .UL, se borran.
La instrucción trata de entrar en la cola ASCII.
post-escán
La condición de salida de renglón se establece como falsa.
Ninguna.
Ejemplo: Cuente continuamente los caracteres en el búfer.
Lógica de escalera de relés
bar_code_count.EN
bar_code_count.EN
/
ACB
ACB
ASCII
Chars
in Buffer
ASCII
Chars
in Buffer
Channel
0
Channel
bar_code_count.EN
SerialPort
Control
bar_code_count
SerialPort
Control
Character
Count
Character
Count
0
EN
EN
DN
DN
ER
ER
Texto estructurado
ACB(0,bar_code_count);
574
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Borrar ASCII búfer (ACL)
Capítulo 17
La instrucción ACL borra inmediatamente el búfer y la cola ASCII.
Operandos:
Lógica de escalera de relés
ACL
ACL
Borrar ASCII
ASCII
Clear búfer
Buffer
Canal
Channel
Borrar Serial
lecturaPort
de puerto
Clear
Read serie
Borrar Serial
escritura
deWrite
puerto serie
Clear
Port
?
?
?
Operando
Tipo
Formato
Introduzca
Channel
DINT
inmediato
0
tag
Clear Serial
Port Read
BOOL
inmediato
tag
Clear Serial
Port Write
BOOL
inmediato
Para borrar el búfer y eliminar las
instrucciones ARD y ARL de la cola,
introduzca Yes.
Para eliminar las instrucciones AWA y AWT
de la cola, introduzca Yes.
tag
Texto estructurado
ACL(Channel,
ClearSerialPortRead,
ClearSerialPortWrite);
Los operandos son iguales a los de la instrucción ACL de lógica de
escalera de relés.
Descripción: La instrucción ACL inmediatamente realiza una de las dos siguientes
acciones o ambas:
• borra el búfer de caracteres y borra la cola ASCII de
instrucciones de lectura
• borra la cola ASCII de instrucciones de escritura
Para programar la instrucción ACL, siga estas pautas:
1. Configure el puerto serie del controlador:
Si su aplicación
Entonces
usa instrucciones ARD o ARL
Seleccione el modo de usuario
no usa instrucciones ARD o ARL
Seleccione ya sea el modo de sistema o de
usuario
2. Para determinar si una instrucción se retiró de la cola o se
canceló, examine los siguientes componentes de la instrucción
apropiada:
• El bit .ER se establece
• El miembro .ERROR es 16#E
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Publicación 1756-RM003K-ES-P – Julio 2008
575
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción borra las instrucciones especificadas y los búferes.
post-escán
La condición de salida de renglón se establece como Ninguna.
falsa.
Ejemplo: Cuando el controlador entre en el modo de marcha, borre el búfer así
como la cola ASCII.
Lógica de escalera de relés
S:FS
ACL
ACL
ASCII
Buffer
Borrar Clear
ASCII búfer
Channel
Canal
BorrarSerial
lectura Port
de puerto
serie
Clear
Read
BorrarSerial
escrituraPort
de puerto
Clear
Writeserie
0
1
1
Texto estructurado
osri_1.InputBit := S:FS;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
ACL(0,0,1);
END_IF;
576
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Líneas de handshake ASCII
(AHL)
Capítulo 17
La instrucción AHl obtiene el estado de las líneas de control, y activa
o desactiva las señales DTR y RTS.
Operandos:
Lógica de escalera de relés
AHL
AHL
ASCII Handshake
ASCII
HandshakeLines
Lines
Channel
Channel
AND Mask
OR
Mask
OR Mask
SerialPort
Control
SerialPort Control
Channel
Status(Decimal)
Channel Status(Decimal)
EN
EN
?
?
??
?
??
?
?
DN
DN
ER
ER
Operando
Tipo
Formato
Introduzca
Channel
DINT
inmediato
0
tag
ANDMask
DINT
inmediato
Remítase a la descripción.
tag
ORMask
DINT
inmediato
tag
Serial Port Control
SERIAL_PORT_CONTROL
tag
tag que controla la operación
Channel Status (Decimal)
DINT
inmediato
0
Durante la ejecución, muestra el estado de las líneas de
control.
Para el estado de esta línea
de control
Examine este bit:
CTS
0
RTS
1
DSR
2
DCD
3
DTR
4
Recibió el carácter XOFF
5
Texto estructurado
AHL(Channel,ANDMask,ORMask,
SerialPortControl);
Publicación 1756-RM003K-ES-P – Julio 2008
Los operandos son iguales que los de la instrucción AHL de lógica de
escalera de relés. Sin embargo, se especifica el valor de estado del
canal accediendo al miembro .POS de la estructura
SERIAL_PORT_CONTROL, y no incluyendo el valor en la lista de
operandos.
577
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Estructura SERIAL_PORT_CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción está habilitada.
.EU
BOOL
El bit de cola indica que la instrucción entró en la cola ASCII.
.DN
BOOL
El bit de efectuado indica que ha finalizado la instrucción, pero es asíncrono respecto al
escán de la lógica.
.RN
BOOL
El bit de ejecución indica que la instrucción se está ejecutando.
.EM
BOOL
El bit de vacío indica que finalizó la instrucción, pero es síncrono respecto al escán de la
lógica.
.ER
BOOL
El bit de error indica que la instrucción falló (errores).
.FD
BOOL
El bit de encontrado no se aplica a esta instrucción.
.POS
DINT
La posición almacena el estado de las líneas de control.
.ERROR
DINT
El error contiene un valor hexadecimal que identifica la causa del error.
Descripción: La instrucción AHL puede:
• obtener el estado de las líneas de control del puerto serie
• activar o desactivar la señal de terminal de datos listo (DTR)
• activar o desactivar la señal de solicitud de envío (RTS)
Para programar la instrucción AHL, siga estas pautas:
1. Configure el puerto serie del controlador:
Si su aplicación
Entonces
usa instrucciones ARD o ARL
Seleccione el modo de usuario
no usa instrucciones ARD o ARL
Seleccione ya sea el modo de sistema o de
usuario
2. Use la tabla siguiente para seleccionar los valores correctos para
los operandos ANDMask y ORMask:
Para poner
DTR en el
estado
siguiente
Y poner RTS en
el estado
siguiente:
Introduzca este
valor ANDMask
E introduzca este
valor ORMask
desactivado
desactivado
3
0
activado
1
2
sin cambio
1
0
desactivado
2
1
activado
0
3
sin cambio
0
1
desactivado
2
0
activado
0
2
sin cambio
0
0
activado
sin cambio
578
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Capítulo 17
3. Ésta es una instrucción transicional:
• En la lógica de escalera de relés, cambie la condición de
entrada del renglón de borrado a establecido cada vez que
deba ejecutarse la instrucción.
• En texto estructurado, condicione la instrucción de manera
que sólo se ejecute cuando ocurra una transición.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Tipo
Código
Causa
Método de recuperación
4
57
La instrucción AHL no se ejecutó porque el puerto serie
está configurado para no usar handshaking.
Realice una de los siguientes acciones:
• Cambie el ajuste de la línea de control del puerto
serie.
• Elimine la instrucción AHL.
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta cuando la condición de
entrada del renglón cambia de borrado a
establecido.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción obtiene el estado de la línea de control y activa o desactiva las señales DTR y RTS.
El bit .EN se establece.
Los bits de estado restantes, excepto .UL, se borran.
La instrucción trata de entrar en la cola ASCII.
post-escán
La condición de salida de renglón se establece como
falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
579
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Ejemplo: Cuando get_control_line_status se establece, obtenga el estado de las
líneas de control del puerto serie y almacene el estado en el operando
Channel Status. Para ver el estado de una línea de control específica,
monitoree el tag SerialPortControl y amplíe el miembro POS.
Lógica de escalera de relés
get_control_line_status
get_control_line_status
AHL
AHL
ASCII Handshake Lines
ASCII Handshake Lines
Channel
Channel
AND
Mask
0
0
DN
DN
OR
Mask
OR Mask
0
ER
ER
AND Mask
SerialPort Control
SerialPort
Control
Channel Status(Decimal)
Channel
Status(Decimal)
EN
EN
serial_port
serial_port
29
Texto estructurado
osri_1.InputBit := get_control_line_status;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
AHL(0,0,0,serial_port);
END_IF;
580
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Lectura ASCII (ARD)
Capítulo 17
La instrucción retira caracteres del búfer y los almacena en
Destination.
Operandos:
Lógica de escalera de relés
ASCII Read
Read
ASCII
Channel
Channel
Destination
Destination
ARD
ARD
EN
EN
SerialPort
SerialPortControl
Control
SerialPort
SerialPortControl
Control Length
Length
Characters
Characters Read
Read
?
?
??
?
?
?
DN
DN
ER
ER
Operando
Tipo
Formato
Introduzca
Channel
DINT
inmediato
0
Notas
tag
Destination
cadena
tag
el tag al cual se transfieren
los caracteres (lectura):
SINT
• Para un tipo de datos de
cadena, introduzca el
nombre del tag.
INT
DINT
Serial Port
SERIAL_PORT_
Control
CONTROL
Serial Port
DINT
• Para una matriz SINT,
INT o DINT, introduzca
el primer elemento de la
matriz.
tag
tag que controla la
operación
inmediato
número de caracteres a
transferir al destino
(lectura)
Control Length
Characters Read
DINT
inmediato
0
• Si desea comparar, convertir o manipular los
caracteres, use un tipo de datos de cadena.
• Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
• Serial Port Control Length debe ser menor o
igual que el tamaño de Destination.
• Si desea establecer Serial Port Control
Length igual que el tamaño de Destination,
introduzca 0.
Durante la ejecución, muestra el número de
caracteres leídos.
Texto estructurado
ARD(Channel,Destination,
SerialPortControl);
Publicación 1756-RM003K-ES-P – Julio 2008
Los operandos son los mismos que para la instrucción ARD de lógica
de escalera de relés. Sin embargo, usted especifica los valores de
Serial Port Control Length y Characters Read accediendo a los
miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL, en
lugar de incluir los valores en la lista de operandos.
581
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Estructura SERIAL_PORT_CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción está habilitada.
.EU
BOOL
El bit de cola indica que la instrucción entró en la cola ASCII.
.DN
BOOL
El bit de efectuado indica que ha finalizado la instrucción, pero es asíncrono respecto al
escán de la lógica.
.RN
BOOL
El bit de ejecución indica que la instrucción se está ejecutando.
.EM
BOOL
El bit de vacío indica que finalizó la instrucción, pero es síncrono respecto al escán de la
lógica.
.ER
BOOL
El bit de error indica que la instrucción falló (errores).
.FD
BOOL
El bit de encontrado no se aplica a esta instrucción.
.LEN
DINT
La longitud indica el número de caracteres a transferir al destino (lectura).
.POS
DINT
La posición muestra el número de caracteres que se leyeron.
.ERROR
DINT
El error contiene un valor hexadecimal que identifica la causa del error.
Descripción: La instrucción ARD retira el número especificado de caracteres del
búfer y los almacena en Destination.
• La instrucción ARD continúa ejecutándose hasta eliminar el
número especificado de caracteres (Serial Port Control Length).
• Mientras que la instrucción ARD se está ejecutando, ninguna
otra instrucción de puerto serie ASCII se ejecuta.
Para programar la instrucción ARD, siga estas pautas:
1. Configure el puerto serie del controlador para el modo de
usuario.
2. Use los resultados de una instrucción ACB para activar la
instrucción ARD. Así evita que la instrucción ARD retenga la cola
ASCII mientras espera el número requerido de caracteres.
3. Ésta es una instrucción transicional:
• En la lógica de escalera de relés, cambie la condición de
entrada del renglón de borrado a establecido cada vez que
deba ejecutarse la instrucción.
• En texto estructurado, condicione la instrucción de manera
que sólo se ejecute cuando ocurra una transición.
4. Para activar una acción subsiguiente cuando se ha efectuado la
instrucción, examine el bit EM.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
582
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Capítulo 17
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta cuando la condición de
entrada del renglón cambia de borrado a
establecido.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción retira caracteres del búfer y los almacena en el destino.
El bit .EN se establece.
Los bits de estado restantes, excepto .UL, se borran.
La instrucción trata de entrar en la cola ASCII.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo: Un lector de códigos de barra envía códigos de barra al puerto serie
(canal 0) del controlador. Cada código de barra contiene
24 caracteres. Para saber que el controlador ha recibido un código de
barra, la instrucción ACB cuenta continuamente los caracteres en el
búfer. Cuando el búfer contiene por lo menos 24 caracteres, significa
que el controlador ha recibido un código de barra. La instrucción ARD
pasa el código de barras al miembro DATA del tag bag_bar_code, que
es una cadena.
Lógica de escalera de relés
bar_code_count.EN
bar_code_count.EN
/
ACB
ACB
ASCII
Chars
in Buffer
ASCII
Chars
in Buffer
Channel
0
Channel
bar_code_count.EN
SerialPort
Control
SerialPort
Control
bar_code_count
Character
Count
Character
Count
0
GEQ
GEQ
GrtrThan
Than
Eql (A>=B)
Grtr
o Eqlor(A>=B)
Source A A bar_code_count.pos
bar_code_count.pos
Source
Source B B
Source
Publicación 1756-RM003K-ES-P – Julio 2008
0
24
EN
EN
DN
DN
ER
ER
ARD
ARD
ASCII
Read
ASCII Read
Channel
Channel
Destination
Destination
0
bag_bar_code
bag_bar_code
''
bar_code_read
SerialPort Control
SerialPort
Control
bar_code_read
SerialPort Control
Length
SerialPort
Control
Length
24
Characters Read
Characters
Read
0
EN
EN
DN
DN
ER
ER
583
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Texto estructurado
ACB(0,bar_code_count);
IF bar_code_count.POS >= 24 THEN
bar_code_read.LEN := 24;
ARD(0,bag_bar_code,bar_code_read);
END_IF;
584
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Lectura ASCII de línea
(ARL)
Capítulo 17
La instrucción ARL retira los caracteres especificados del búfer y los
almacena en Destination.
Operandos:
Lógica de escalera de relés
ASCII
ASCIIRead
ReadLine
Line
Channel
Channel
Destination
Destination
ARL
ARL
EN
EN
SerialPortControl
Control
SerialPort
SerialPortControl
ControlLength
Length
SerialPort
CharactersRead
Read
Characters
?
?
??
?
?
?
DN
DN
ER
ER
Operando
Tipo
Formato
Introduzca
Channel
DINT
inmediato
0
Notas
tag
Destination
cadena
tag
el tag al cual se transfieren
los caracteres (lectura):
SINT
• Para un tipo de datos de
cadena, introduzca el
nombre del tag.
INT
DINT
Serial Port
SERIAL_PORT_
Control
CONTROL
Serial Port
Control Length
DINT
• Para una matriz SINT,
INT o DINT, introduzca
el primer elemento de la
matriz.
tag
tag que controla la
operación
inmediato
número máximo de
caracteres a leer si no se
encuentran caracteres de
terminación
• Si desea comparar, convertir o manipular los
caracteres, use un tipo de datos de cadena.
• Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
• Introduzca el número máximo de caracteres
que contendrá cualquier mensaje (es decir,
cuándo se debe interrumpir la lectura si no
se encuentran caracteres de terminación).
Por ejemplo, si el mensaje tiene de 3 a
6 caracteres de longitud, introduzca 6.
• Serial Port Control Length debe ser menor o
igual que el tamaño de Destination.
• Si desea establecer la longitud de control
del puerto serie igual que el tamaño de
Destination, introduzca 0.
Characters Read
DINT
inmediato
0
Durante la ejecución, muestra el número de
caracteres leídos.
Texto estructurado
ARL(Channel,Destination,
SerialPortControl);
Publicación 1756-RM003K-ES-P – Julio 2008
Los operandos son los mismos que para la instrucción ARL de lógica
de escalera de relés. Sin embargo, usted especifica los valores de
Serial Port Control Length y Characters Read accediendo a los
miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL,
en lugar de incluir los valores en la lista de operandos.
585
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Estructura SERIAL_PORT_CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción está habilitada.
.EU
BOOL
El bit de cola indica que la instrucción entró en la cola ASCII.
.DN
BOOL
El bit de efectuado indica que ha finalizado la instrucción, pero es asíncrono respecto al
escán de la lógica.
.RN
BOOL
El bit de ejecución indica que la instrucción se está ejecutando.
.EM
BOOL
El bit de vacío indica que finalizó la instrucción, pero es síncrono respecto al escán de la
lógica.
.ER
BOOL
El bit de error indica que la instrucción falló (errores).
.FD
BOOL
El bit de encontrado no se aplica a esta instrucción.
.LEN
DINT
La longitud indica el número máximo de caracteres a transferir al destino (es decir, cuándo se
debe interrumpir la lectura si no se encuentran caracteres de terminación).
.POS
DINT
La posición muestra el número de caracteres que se leyeron.
.ERROR
DINT
El error contiene un valor hexadecimal que identifica la causa del error.
Descripción: La instrucción ARL retira los caracteres del búfer y los almacena en
Destination de la siguiente manera:
• La instrucción ARL continúa ejecutándose hasta eliminar:
– el primer conjunto de caracteres de terminación
– el número especificado de caracteres (Serial Port Control
Length)
• Mientras que la instrucción ARL se está ejecutando, ninguna otra
instrucción de puerto serie ASCII se ejecuta.
Para programar la instrucción ARL, siga estas pautas:
1. Configure el puerto serie del controlador:
a. Seleccione el modo de usuario.
b. Defina los caracteres que sirven como caracteres de
terminación.
2. Use los resultados de una instrucción ABL para activar la
instrucción ARL. Esto evita que la instrucción ARL retenga la cola
ASCII mientras espera el número de caracteres de terminación.
3. Ésta es una instrucción transicional:
• En la lógica de escalera de relés, cambie la condición de
entrada del renglón de borrado a establecido cada vez que
deba ejecutarse la instrucción.
• En texto estructurado, condicione la instrucción de manera
que sólo se ejecute cuando ocurra una transición.
4. Para activar una acción subsiguiente cuando se ha efectuado la
instrucción, examine el bit EM.
586
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Capítulo 17
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta cuando la condición de
entrada del renglón cambia de borrado a
establecido.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción retira los caracteres especificados del búfer y los almacena en el destino.
El bit .EN se establece.
Los bits de estado restantes, excepto .UL, se borran.
La instrucción trata de entrar en la cola ASCII.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo: Pruebe continuamente el búfer para determinar si contiene un
mensaje de un terminal MessageView. Puesto que cada mensaje
termina en un retorno de carro ($r), el retorno de carro se configura
como el carácter de terminación en el cuadro de diálogo Controller
Properties, ficha User Protocol. Cuando la instrucción ABL encuentra
un retorno de carro, establece el bit FD.
Cuando la instrucción ABL encuentra el retorno de carro (MV_line.FD
se establece) significa que el controlador ha recibido un mensaje
completo. La instrucción ARL retira los caracteres del búfer, inclusive
el retorno de carro, y los coloca en el miembro DATA del tag MV_msg,
que es una cadena.
Publicación 1756-RM003K-ES-P – Julio 2008
587
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Lógica de escalera de relés
MV_line.EN
MV_line.EN
/
ABL
ABL
ASCII
For Buffer
ASCII
TestTest
For Buffer
Line Line
Channel
Channel
0
MV_line
SerialPort
Control
SerialPort
Control
MV_line
Characters
Count
Character
Count
0
MV_line.FD
MV_line.FD
EN
EN
DN
DN
ER
ER
ARL
ARL
ASCII
Read
ASCII Read
LineLine
Channel
Channel
Destination
Destination
EN
EN
SerialPort Control
SerialPort
Control
SerialPort Control
Length
SerialPort
Control
Length
Characters Read
Characters
Read
0
MV_line.EN
MV_msg
''
MV_line.EN
MV_read
12
0
DN
DN
ER
ER
Texto estructurado
ABL(0,MV_line);
osri_1.InputBit := MVLine.FD;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
mv_read.LEN := 12;
ARL(0,MV_msg,MV_read);
END_IF;
588
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Escritura ASCII con anexo
(AWA)
Capítulo 17
La instrucción AWA envía un número especificado de caracteres del
tag Source a un dispositivo serie, y añade uno o dos caracteres
predefinidos.
Operandos:
Lógica de escalera de relés
AWA
AWA
ASCII Write
Write Append
Append
ASCII
Channel
Channel
Source
Source
SerialPort Control
SerialPort
SerialPort
Length
SerialPort Control Length
Characters
Sent
Characters Sent
EN
EN
?
?
??
?
?
?
DN
DN
ER
ER
Operando
Tipo
Formato
Introduzca
Channel
DINT
inmediato
0
Notas
tag
Source
cadena
tag
tag que contiene los
caracteres a enviar:
SINT
• Para un tipo de datos de
cadena, introduzca el
nombre del tag.
INT
DINT
Serial Port
SERIAL_PORT_
Control
CONTROL
Serial Port
Control Length
DINT
• Para una matriz SINT,
INT o DINT, introduzca
el primer elemento de la
matriz.
tag
tag que controla la
operación
inmediato
número de caracteres a
enviar
• Si desea comparar, convertir o manipular los
caracteres, use un tipo de datos de cadena.
• Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
• Serial Port Control Length debe ser menor o
igual que el tamaño de Source.
• Si desea establecer Serial Port Control
Length igual que el número de caracteres en
Source, introduzca 0.
Characters Sent
DINT
inmediato
0
Durante la ejecución, muestra el número de
caracteres enviados.
Texto estructurado
AWA(Channel,Source,
SerialPortControl);
Publicación 1756-RM003K-ES-P – Julio 2008
Los operandos son los mismos que para la instrucción AWA de lógica
de escalera de relés. Sin embargo, usted especifica los valores de
Serial Port Control Length y Characters Sent accediendo a los
miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL,
en lugar de incluir los valores en la lista de operandos.
589
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Estructura SERIAL_PORT_CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción está habilitada.
.EU
BOOL
El bit de cola indica que la instrucción entró en la cola ASCII.
.DN
BOOL
El bit de efectuado indica que ha finalizado la instrucción, pero es asíncrono respecto al
escán de la lógica.
.RN
BOOL
El bit de ejecución indica que la instrucción se está ejecutando.
.EM
BOOL
El bit de vacío indica que finalizó la instrucción, pero es síncrono respecto al escán de la
lógica.
.ER
BOOL
El bit de error indica que la instrucción falló (errores).
.FD
BOOL
El bit de encontrado no se aplica a esta instrucción.
.LEN
DINT
La longitud indica el número de caracteres a enviar.
.POS
DINT
La posición muestra el número de caracteres que se enviaron.
.ERROR
DINT
El error contiene un valor hexadecimal que identifica la causa del error.
Descripción: La instrucción AWA:
• envía el número especificado de caracteres (Serial Port Control
Length) del tag Source al dispositivo conectado al puerto serie
del controlador.
• añade al final de los caracteres (adiciona) ya sea uno o dos
caracteres definidos en el cuadro de diálogo Controller
Properties, ficha User Protocol.
Para programar la instrucción AWA, siga estas pautas:
1. Configure el puerto serie del controlador:
a. ¿Incluye la aplicación también instrucciones ARD o ARL?
Si
Entonces
la respuesta es afirmativa
seleccione el modo de usuario
la respuesta es negativa
seleccione ya sea el modo de sistema o el
modo de usuario
b. Defina los caracteres que se agregarán a los datos.
2. Ésta es una instrucción transicional:
• En la lógica de escalera de relés, cambie la condición de
entrada del renglón de borrado a establecido cada vez que
deba ejecutarse la instrucción.
• En texto estructurado, condicione la instrucción de manera
que sólo se ejecute cuando ocurra una transición.
590
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Capítulo 17
3. ¿Envía usted siempre el mismo número de caracteres cada vez
que se ejecuta la instrucción?
Si
Entonces
la respuesta
es afirmativa
En Serial Port Control Length, introduzca el número de caracteres
a enviar.
la respuesta
es negativa
Antes de que se ejecute la instrucción, establezca el miembro LEN
del tag Source al miembro LEN del tag Serial Port Control.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta cuando la condición de
entrada del renglón cambia de borrado a
establecido.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción envía un número especificado de caracteres y añade uno o dos caracteres predefinidos.
El bit .EN se establece.
Los bits de estado restantes, excepto .UL, se borran.
La instrucción trata de entrar en la cola ASCII.
post-escán
La condición de salida de renglón se establece como
falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Ninguna.
591
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Ejemplo 1: Cuando la temperatura excede el límite alto (temp_high se establece)
la instrucción AWA envía un mensaje a un terminal MessageView que
está conectado al puerto serie del controlador. El mensaje contiene
cinco caracteres del miembro DATA del tag string[1], que es una
cadena. (El $14 se cuenta como un carácter. Es el código hexadecimal
del carácter Ctrl-T). La instrucción también envía (adiciona) los
caracteres definidos en las propiedades del controlador. En este
ejemplo, la instrucción AWA envía un retorno de carro ($0D), que
marca el final del mensaje.
Lógica de escalera de relés
temp_high
temp_high
AWA
AWA
ASCII
Write
Append
ASCII Write
Append
Channel
Channel
Source
Source
0
string[1]
string[1]
'$1425\1'
temp_high_write
SerialPort
Control
temp_high_write
SerialPort Control
SerialPort Control
Length
SerialPort
Control
Length
5
Characters Sent
Characters
Sent
6
EN
EN
DN
DN
ER
ER
Texto estructurado
IF temp_high THEN
temp_high_write.LEN := 5;
AWA(0,string[1],temp_high_write);
temp_high := 0;
END_IF;
592
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Capítulo 17
Ejemplo 2: Cuando alarm se establece, la instrucción AWA envía el número de
caracteres especificado en alarm_msg y añade el o los caracteres de
terminación. Puesto que el número de caracteres en alarm_msg varía,
el renglón primero pasa la longitud de la cadena (alarm_msg.LEN)
a Serial Port Control Length de la instrucción AWA (alarm_write.LEN).
En alarm_msg, el $14 se cuenta como un carácter. Es el código
hexadecimal del carácter Ctrl-T.
Lógica de escalera de relés
MOV
MOV
alarm
alarm
Move
Move
Source alarm_msg.LEN
Source
alarm_msg.LEN
Dest.
Dest
5
alarm_write.LEN
alarm_write.LEN
5
AWA
AWA
ASCII
Write
Append
ASCII Write
Append
Channel
Channel
Source
Source
SerialPort Control
SerialPort
Control
SerialPort Control
Length
SerialPort
Control
Length
Characters Sent
Characters
Sent
EN
EN
0
alarm_msg
alarm_msg
'$1425\1'
alarm_write
alarm_write
5
6
DN
DN
ER
ER
Texto estructurado
osri_1.InputBit := alarm;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
alarm_write.LEN := alarm_msg.LEN;
AWA(0,alarm_msg,alarm_write);
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
593
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Escritura ASCII
(ASCII Write (AWT))
La instrucción AWT envía un número especificado de caracteres del
tag de origen a un dispositivo serie.
Operandos:
Lógica de escalera de relés
ASCII Write
ASCII
Write
Channel
Channel
Source
Source
AWT
AWT
EN
EN
SerialPort
Control
SerialPort Control
SerialPort
ControlLength
Length
SerialPort Control
Characters
Sent
Characters Sent
?
?
??
?
?
?
DN
DN
ER
ER
Operando
Tipo
Formato
Introduzca
Channel
DINT
inmediato
0
Notas
tag
Source
cadena
tag
tag que contiene los
caracteres a enviar:
SINT
• Para un tipo de datos de
cadena, introduzca el
nombre del tag.
INT
DINT
Serial Port
SERIAL_PORT_
Control
CONTROL
Serial Port
Control Length
DINT
• Para una matriz SINT,
INT o DINT, introduzca
el primer elemento de la
matriz.
tag
tag que controla la
operación
inmediato
el número de caracteres a
enviar
• Si desea comparar, convertir o manipular los
caracteres, use un tipo de datos de cadena.
• Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
• Serial Port Control Length debe ser menor o
igual que el tamaño de Source.
• Si desea establecer Serial Port Control
Length igual que el número de caracteres en
Source, introduzca 0.
Characters Sent
DINT
inmediato
0
Durante la ejecución, muestra el número de
caracteres enviados.
Texto estructurado
AWT(Channel,Source,
SerialPortControl);
594
Los operandos son los mismos que para la instrucción AWT de lógica
de escalera de relés. Sin embargo, usted especifica los valores de
Serial Port Control Length y Characters Sent accediendo a los
miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL,
en lugar de incluir los valores en la lista de operandos.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Capítulo 17
Estructura SERIAL_PORT_CONTROL
Mnemónico
Tipo de datos
Descripción
.EN
BOOL
El bit de habilitación indica que la instrucción está habilitada.
.EU
BOOL
El bit de cola indica que la instrucción entró en la cola ASCII.
.DN
BOOL
El bit de efectuado indica que ha finalizado la instrucción, pero es asíncrono respecto al
escán de la lógica.
.RN
BOOL
El bit de ejecución indica que la instrucción se está ejecutando.
.EM
BOOL
El bit de vacío indica que finalizó la instrucción, pero es síncrono respecto al escán de la
lógica.
.ER
BOOL
El bit de error indica que la instrucción falló (errores).
.FD
BOOL
El bit de encontrado no se aplica a esta instrucción.
.LEN
DINT
La longitud indica el número de caracteres a enviar.
.POS
DINT
La posición muestra el número de caracteres que se enviaron.
.ERROR
DINT
El error contiene un valor hexadecimal que identifica la causa del error.
Descripción: La instrucción AWT envía el número especificado de caracteres (Serial
Port Control Length) del tag Source al dispositivo conectado al puerto
serie del controlador.
Para programar la instrucción AWT, siga estas pautas:
1. Configure el puerto serie del controlador:
Si la aplicación
Entonces
usa instrucciones ARD o ARL
Seleccione el modo de usuario
no usa instrucciones ARD o ARL
Seleccione ya sea el modo de sistema o el
modo de usuario
2. Ésta es una instrucción transicional:
• En la lógica de escalera de relés, cambie la condición de
entrada del renglón de borrado a establecido cada vez que
deba ejecutarse la instrucción.
• En texto estructurado, condicione la instrucción de manera
que sólo se ejecute cuando ocurra una transición.
3. ¿Envía usted siempre el mismo número de caracteres cada vez
que se ejecuta la instrucción?
Publicación 1756-RM003K-ES-P – Julio 2008
Si
Entonces
la respuesta
es afirmativa
En Serial Port Control Length, introduzca el número de caracteres
a enviar.
la respuesta
es negativa
Antes de que se ejecute la instrucción, mueva el miembro LEN del
tag Source al miembro LEN del tag Serial Port Control.
595
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta cuando la condición de
entrada del renglón cambia de borrado a
establecido.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción envía un número especificado de caracteres.
El bit .EN se establece.
Los bits de estado restantes, excepto .UL, se borran.
La instrucción trata de entrar en la cola ASCII.
post-escán
La condición de salida de renglón se establece como Ninguna.
falsa.
Ejemplo 1: Cuando la temperatura llega al límite bajo (temp_low se establece),
la instrucción AWT envía un mensaje al terminal MessageView que
está conectado al puerto serie del controlador. El mensaje contiene
nueve caracteres del miembro DATA del tag string[2], que es una
cadena. (El $14 se cuenta como un carácter. Es el código hexadecimal
del carácter Ctrl-T). El último carácter es el retorno de carro ($r),
el cual indica el fin del mensaje.
Lógica de escalera de relés
AWT
AWT
temp_low
temp_low
ASCII
Write
ASCII
Write
Channel
Channel
Source
Source
EN
EN
0
string[2]
string[2]
'$142224\01$r'
SerialPort Control
temp_low_write
SerialPort
Control
temp_low_write
SerialPort Control
LengthLength
SerialPort
Control
9
Characters SentSent
Characters
9
596
DN
DN
ER
ER
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Capítulo 17
Texto estructurado
osri_1.InputBit := temp_low;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
temp_low_write.LEN := 9;
AWT(0,string[2],temp_low_write);
END_IF;
Ejemplo 2: Cuando MV_update se establece, la instrucción AWT envía los
caracteres en MV_msg. Puesto que el número de caracteres en
MV_msg varía, el renglón primero pasa la longitud de la cadena
(MV_msg.LEN) a Serial Port Control Length de la instrucción AWT
(MV_write.LEN). En MV_msg, el $16 se cuenta como un carácter.
Es el código hexadecimal del carácter Ctrl-V.
Lógica de escalera de relés
MV_update
MV_update
MOV
MOV
Move
Move
Source MV_msg.LEN
Source
MV_msg.LEN
Dest.
Dest
10
MV_write.LEN
MV_write.LEN
10
AWT
AWT
ASCII
Write
ASCII Write
Channel
Channel
Source
Source
0
MV_msg
MV_msg
'$161365\8\1$r'
SerialPort Control
MV_write
SerialPort
Control
MV_write
SerialPort Control
Length
SerialPort
Control
Length
10
Characters SentSent
Characters
10
EN
EN
DN
DN
ER
ER
Texto estructurado
osri_1.InputBit := MV_update;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
MV_write.LEN := Mv_msg.LEN;
AWT(0,MV_msg,MV_write);
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008
597
Capítulo 17
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Notas:
598
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
18
Instrucciones de cadena ASCII
(CONCAT, DELETE, FIND, INSERT, MID)
Introducción
Use las instrucciones de cadena ASCII para modificar y crear cadenas
de caracteres ASCII.
Si desea
Por ejemplo
añadir caracteres al final de una
cadena
añadir caracteres de terminación o
delimitadores a una cadena
Use esta
instrucción
Disponible en estos
lenguajes
Vea la
página
CONCAT
lógica de escalera de
relés
601
texto estructurado
eliminar caracteres de una cadena
eliminar caracteres de encabezado o
control de una cadena
DELETE
lógica de escalera de
relés
603
texto estructurado
determinar el carácter inicial de una
subcadena
hallar un grupo de caracteres dentro
de una cadena
FIND
lógica de escalera de
relés
605
texto estructurado
insertar caracteres dentro de una
cadena
crear una cadena que usa variables
INSERT
lógica de escalera de
relés
607
texto estructurado
extraer caracteres de una cadena
extraer información de un código de
barra
MID
lógica de escalera de
relés
609
texto estructurado
También es posible usar las siguientes instrucciones para comparar o
convertir caracteres ASCII:
Si desea
Use esta instrucción
Vea la página
comparar una cadena con otra cadena
CMP
206
determinar si los caracteres son iguales a caracteres específicos
EQU
211
determinar si los caracteres son diferentes a caracteres específicos
NEQ
242
determinar si los caracteres son mayores o iguales que caracteres específicos
GEQ
211
determinar si los caracteres son mayores que caracteres específicos
GRT
219
determinar si los caracteres son menores o iguales que caracteres específicos
LEQ
223
determinar si los caracteres son menores que caracteres específicos
LES
227
reacomodar los bytes de un tag INT, DINT o REAL
SWPB
300
encontrar una cadena en una matriz de cadenas
FSC
347
STOD
614
convertir caracteres en un valor SINT, INT, DINT o REAL
599Publicación 1756-RM003K-ES-P – Julio 2008
599
Capítulo 18
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Si desea
Use esta instrucción
Vea la página
convertir caracteres en un valor REAL
STOR
616
convertir un valor SINT, INT, DINT o REAL en una cadena de caracteres ASCII
DTOS
619
convertir un valor REAL en una cadena de caracteres ASCII
RTOS
621
Tipos de datos de cadena
Los caracteres ASCII se almacenan en tags que usan un tipo de datos
de cadena.
• Puede usar el tipo de datos STRING predeterminado. Almacena
hasta 82 caracteres.
• Usted puede crear un nuevo tipo de datos de cadena que
almacene menos o más caracteres.
Para crear un nuevo tipo de datos de cadena, consulte el documento
Logix5000 Controllers Common Procedures, publicación 1756-PM001.
Cada tipo de datos de cadena contiene los siguientes miembros:
Nombre
Tipo de datos Descripción
Notas
LEN
DINT
El LEN se actualiza automáticamente al nuevo conteo de caracteres cuando usted:
número de caracteres
en la cadena
• usa el cuadro de diálogo String Browser para introducir caracteres
• usa las instrucciones que leen, convierten o manipulan una cadena
El LEN muestra la longitud de la cadena actual. El miembro DATA puede contener
caracteres adicionales antiguos, los cuales no se incluyen en el conteo LEN.
DATA
Matriz SINT
caracteres ASCII de la
cadena
• Para obtener acceso a los caracteres de la cadena, utilice el nombre del tag.
Por ejemplo, para acceder a los caracteres del tag string_1, introduzca
string_1.
• Cada elemento de la matriz DATA contiene un carácter.
• Usted puede crear nuevos tipos de datos de cadena que almacenen menos o
más caracteres.
600
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Concatenación de cadenas
(CONCAT)
Capítulo 18
La instrucción CONCAT añade caracteres ASCII al final de una cadena.
Operandos:
Lógica de escalera de relés
CONCAT
CONCAT
Sting
Concatenate
String
Concatenate
Source
A A
Source
??
????
Source
??
Source
B B
????
Dest
??
Dest
????
Operando
Tipo
Formato
Introduzca
Notas
Source A
cadena
tag
tag que contiene los
caracteres iniciales
Los tipos de datos de cadena son:
Source B
cadena
tag
tag que contiene los
caracteres finales
Destination
cadena
tag
tag para almacenar el
resultado
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
Texto estructurado
CONCAT(SourceA,SourceB,
Dest);
Los operandos son iguales a los de la instrucción CONCAT de lógica
de escalera de relés.
Descripción: La instrucción CONCAT combina los caracteres en Source A con los
caracteres en Source B y coloca el resultado en Destination.
• Los caracteres de Source A son los primeros, seguidos por los
caracteres de Source B.
• A menos que Source A y Destination sean el mismo tag, Source
A no cambia.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Tipo
Código
Causa
Método de recuperación
4
51
El valor LEN del tag de cadena es
mayor que el tamaño de DATA del
tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN
del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la
cadena.
Publicación 1756-RM003K-ES-P – Julio 2008
601
Capítulo 18
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción concatena las cadenas.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo: Para activar un mensaje en un terminal MessageView, el controlador
debe enviar una cadena ASCII que contenga un número de mensaje y
número de nodo. String_1 contiene el número de mensaje. Cuando
add_node se establece, la instrucción CONCAT añade los caracteres
en node_num_ascii (número de nodo) al final de los caracteres en
string_1 y posteriormente almacena el resultado en msg.
Lógica de escalera de relés
CONCAT
CONCAT
add_node
Sting
Concatenate
String
Concatenate
Source
A A
string_1
Source
string_1
’$1423\’
'$1423\'
Source
B B node_num_ascii
node_num_ascii
Source
'1'’1’
Dest
msg
Dest
msg
'$1423\1'
’$1423\1’
Texto estructurado
IF add_node THEN
CONCAT(string_1,node_num_ascii,msg);
add_node := 0;
END_IF;
602
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Eliminación de cadena
(DELETE)
Capítulo 18
La instrucción DELETE retira los caracteres ASCII de una cadena.
Operandos:
DELETE
DELETE
Sting
Delete
String
Delete
Source
Source
Qty
Qty
Start
Start
Dest
Dest
Lógica de escalera de relés
??
????
??
????
??
????
??
????
Operando
Tipo
Formato
Introduzca
Notas
Source
cadena
tag
el tag que contiene la
cadena de la cual se desea
eliminar los caracteres
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
Quantity
SINT
inmediato
INT
tag
el número de caracteres
que se desea eliminar
Start así como Quantity deben ser menores o
iguales al tamaño de DATA de Source.
la posición del primer
carácter que se debe
eliminar
Introduzca un número entre 1 y el tamaño de
DATA de Source.
DINT
Start
SINT
inmediato
INT
tag
DINT
Destination
cadena
tag
tag para almacenar el
resultado
Texto estructurado
DELETE(Source,Qty,Start,
Dest);
Los operandos son iguales a los de la instrucción DELETE de lógica de
escalera de relés.
Descripción: La instrucción DELETE elimina (retira) un grupo de caracteres de
Source y coloca los caracteres restantes en Destination.
• La posición Start así como Quantity definen los caracteres a
retirar.
• A menos que Source y Destination sean el mismo tag, Source no
cambia.
Publicación 1756-RM003K-ES-P – Julio 2008
603
Capítulo 18
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Tipo
Código
Causa
Método de recuperación
4
51
El valor LEN del tag de
cadena es mayor que el
tamaño de DATA del tag
de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag
de cadena.
El valor de Start o Quantity
no es válido.
1. Verifique que el valor de Start esté entre 1 y el tamaño de DATA de Source.
4
56
2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
2. Verifique que el valor de Start más el valor Quantity sea menor o igual que el
tamaño de DATA de Source.
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción elimina los caracteres especificados.
post-escán
La condición de salida de renglón se establece como falsa.
Ninguna.
Ejemplo: La información ASCII de un terminal contiene un carácter de
encabezado. Después de que el controlador lee los datos
(term_read.EM se establece) la instrucción DELETE retira el carácter
de encabezado (term_read.EM is set).
Lógica de escalera de relés
DELETE
DELETE
Sting Delete
String Delete
Source
term_input
Source term_input
’$0655’
'$0655'
Qty
Qty
11
term_read.EM
Start
Start
11
Dest
Dest
term_text
term_text
’55’
'55'
Texto estructurado
IF term_read.EM THEN
DELETE(term_input,1,1,term_text);
term_read.EM := 0;
END_IF;
604
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Encontrar cadena (FIND)
Capítulo 18
La instrucción FIND localiza la posición de una cadena especificada
dentro de otra cadena.
Operandos:
Lógica de escalera de relés
FIND
FIND
Find
String
Find
String
Source
Source
??
????
??
????
??
????
??
????
Search
Search
Start
Start
Result
Result
Operando
Tipo
Formato
Introduzca
Notas
Source
cadena
tag
cadena en que se debe
buscar
Los tipos de datos de cadena son:
Buscar
cadena
tag
la cadena que se debe
buscar
Start
SINT
inmediato
INT
tag
la posición en Source en la
cual se debe iniciar la
búsqueda
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
Introduzca un número entre 1 y el tamaño de
DATA de Source.
DINT
Result
tag
SINT
el tag que almacena la
posición inicial de la
cadena que se debe buscar
INT
DINT
Texto estructurado
FIND(Source,Search,Start,
Result);
Los operandos son iguales a los de la instrucción FIND de lógica de
escalera de relés antes descritos.
Descripción: La instrucción FIND busca en la cadena Source la cadena Search. Si la
instrucción encuentra la cadena Search, Result muestra la posición de
inicio de la cadena Search dentro de la cadena Source.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Tipo
Código
Causa
Método de recuperación
4
51
El valor LEN del tag de cadena es
mayor que el tamaño de DATA del
tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN
del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la
cadena.
4
56
El valor de Start no es válido.
Publicación 1756-RM003K-ES-P – Julio 2008
Verifique que el valor de Start esté entre 1 y el tamaño de DATA de Source.
605
Capítulo 18
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción busca los caracteres especificados.
post-escán
La condición de salida de renglón se establece como Ninguna.
falsa.
Ejemplo: Un mensaje de un terminal MessageView contiene varios
componentes de información. La barra diagonal invertida [ \ ] separa
cada fragmento de información. Para ubicar un fragmento de
información, la instrucción FIND busca el carácter correspondiente a
la barra diagonal invertida y registra su posición en find_pos.
Lógica de escalera de relés
FIND
FIND
Find
String
Find
String
Source
MV_msg
Source MV_msg
’$06324\12\1\$r’
'$06324\12\1\$r'
Search
find
Search
find
'\'’\’
Start
Start
11
MV_read.EM
Result
Result
find_pos
find_pos
55
Texto estructurado
IF MV_read.EM THEN
FIND(MV_msg,find,1,find_pos);
MV_read.EM := 0;
END_IF;
606
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Insertar cadena (INSERT)
Capítulo 18
La instrucción INSERT añade caracteres ASCII a un lugar especificado
dentro de una cadena.
Operandos:
INSERT
INSERT
Insert
String
Insert
String
Source
A A
Source
Source
B B
Source
Start
Start
Dest
Dest
Lógica de escalera de relés
??
????
??
????
??
????
??
????
Operando
Tipo
Formato
Introduzca
Notas
Source A
cadena
tag
Source B
cadena
tag
la cadena a la cual se
Los tipos de datos de cadena son:
deben añadir los caracteres
• tipo de datos STRING predeterminado
la cadena que contiene los
• cualquier tipo de datos nuevo que usted
caracteres que se deben
cree
añadir
Start
SINT
inmediato
INT
tag
la posición en Source A a la Introduzca un número entre 1 y el tamaño de
DATA de Source.
cual se deben añadir los
caracteres
DINT
Result
cadena
tag
cadena para almacenar el
resultado
Texto estructurado
INSERT(SourceA,SourceB,
Start,Dest);
Los operandos son iguales a los de la instrucción INSERT de lógica de
escalera de relés.
Descripción: La instrucción INSERT añade los caracteres en Source B a una
posición designada dentro de Source A y coloca el resultado en
Destination:
• Inicio define dónde se añade en Source A dicho Source B.
• A menos que SourceA y Destination sean el mismo tag, Source A
no cambia.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Tipo
Código
Causa
Método de recuperación
4
51
El valor LEN del tag de cadena es
mayor que el tamaño de DATA del
tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN
del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la
cadena.
4
56
El valor de Start no es válido.
Publicación 1756-RM003K-ES-P – Julio 2008
Verifique que el valor de Start esté entre 1 y el tamaño de DATA de Source.
607
Capítulo 18
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción inserta los caracteres especificados.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo: Cuando temp_high se establece, la instrucción INSERT añade los
caracteres en string_2 a la posición 2 dentro de string_1 y coloca el
resultado en string_3:
Lógica de escalera de relés
INSERT
INSERT
Insert String
Insert String
Source
A A
string_1
Source
string_1
’AD’
'AD'
Source
B B
string_2
Source
string_2
’BC’
'BC'
Start
Start
22
temp_high
Dest
Dest
string_3
string_3
’ABCD’
'ABCD'
Texto estructurado
IF temp_high THEN
INSERT(string_1,string_2,2,string_3);
temp_high := 0;
END_IF;
608
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Cadena central (MID)
Capítulo 18
La instrucción MID copia un número especificado de caracteres ASCII
de una cadena y los almacena en otra cadena.
Operandos:
MID
MID
Middle
String
Middle
String
Source
Source
Qty
Qty
Start
Start
Dest
Dest
Lógica de escalera de relés
??
????
??
????
??
????
??
????
Operando
Tipo
Formato
Introduzca
Notas
Source
cadena
tag
la cadena de la cual se
Los tipos de datos de cadena son:
deben copiar los caracteres
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
Quantity
SINT
inmediato
INT
tag
el número de caracteres
que se desea copiar
Start así como Quantity deben ser menores o
iguales al tamaño de DATA de Source.
DINT
Start
SINT
inmediato
INT
tag
la posición del primer
Introduzca un número entre 1 y el tamaño de
carácter que se debe copiar DATA de Source.
DINT
Destination
cadena
tag
la cadena a la cual se
deben copiar los caracteres
Texto estructurado
MID(Source,Qty,Start,
Dest);
Los operandos son iguales a los de la instrucción MID de lógica de
escalera de relés.
Descripción: La instrucción MID copia un grupo de caracteres desde Source y
coloca el resultado en Destination.
• La posición Start así como Quantity definen los caracteres a
copiar.
• A menos que Source y Destination sean el mismo tag, Source no
cambia.
Indicadores de estado
aritmético: no afectados
Publicación 1756-RM003K-ES-P – Julio 2008
609
Capítulo 18
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Condiciones de fallo:
Tipo
Código
Causa
Método de recuperación
4
51
El valor LEN del tag de
cadena es mayor que el
tamaño de DATA del tag
de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag
de cadena.
El valor de Start o Quantity
no es válido.
1. Verifique que el valor de inicio esté entre 1 y el tamaño de DATA de Source.
4
56
2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
2. Verifique que el valor de Start más el valor de Quantity sea menor o igual que el
tamaño de DATA de Source.
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción MID copia los caracteres especificados de una cadena y los almacena en otra cadena.
post-escán
La condición de salida de renglón se establece como falsa.
Ninguna.
Ejemplo: En un transportador de manejo de maletas de un aeropuerto, cada
maleta tiene un código de barras. Los caracteres 9 a 17 del código de
barra corresponden al número de vuelo y aeropuerto de destino de la
maleta. Después de que se lee el código de barras (bag_read.EM se
establece) la instrucción MID copia el número de vuelo y aeropuerto
de destino en la cadena bag_flt_and_dest.
Lógica de escalera de relés
MID
MID
Middle
String
Middle
String
Source
bag_barcode
Source
bag_barcode
’NWA 5058
HOP 5058
AMS01'
01’
'NWA HOP
AMS
Qty
Qty
99
bag_read.EM
Start
Start
99
Dest
Dest
bag_flt_and_dest
bag_flt_and_dest
'5058
AMS
'
’5058
AMS’
Texto estructurado
IF bag_read.EM THEN
MID(bar_barcode,9,9,bag_flt_and_dest);
bag_read.EM := 0;
END_IF;
610
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
19
Instrucciones de conversión ASCII
(STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Introducción
Use las instrucciones de conversión ASCII para alterar el formato de
los datos.
Si desea
Por ejemplo
convertir la representación ASCII de
un valor entero en un valor SINT, INT,
DINT o REAL
convertir un valor proveniente de una
báscula u otro dispositivo ASCII en un
número entero para usarlo en la
lógica
STOD
convertir un valor proveniente de una
báscula u otro dispositivo ASCII en un
valor REAL para usarlo en la lógica
STOR
convertir la representación ASCII de
un valor de punto flotante (coma
flotante) en un valor REAL
Use esta
instrucción
Disponible en estos
lenguajes
Vea la
página
lógica de escalera de
relés
614
texto estructurado
lógica de escalera de
relés
616
texto estructurado
convertir un valor SINT, INT, DINT o
REAL en una cadena de caracteres
ASCII
convertir una variable en una cadena
ASCII para enviarla a un terminal
MessageView
DTOS
lógica de escalera de
relés
619
texto estructurado
convertir un valor REAL en una
cadena de caracteres ASCII
convertir una variable en una cadena
ASCII para enviarla a un terminal
MessageView
RTOS
lógica de escalera de
relés
621
texto estructurado
convertir en mayúsculas las letras de
una cadena de caracteres ASCII
convertir en mayúsculas una entrada
hecha por un operador para poder
buscarla en una matriz
UPPER
lógica de escalera de
relés
623
texto estructurado
convertir en minúsculas las letras en
una cadena de caracteres ASCII
convertir en minúsculas una entrada
hecha por un operador para poder
buscarla en una matriz
LOWER
lógica de escalera de
relés
625
texto estructurado
611Publicación 1756-RM003K-ES-P – Julio 2008
611
Capítulo 19
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
También es posible usar las siguientes instrucciones para comparar o
manipular caracteres ASCII:
Si desea
Use esta instrucción
Vea la página
añadir caracteres al final de una cadena
CONCAT
601
eliminar caracteres de una cadena
DELETE
603
FIND
605
INSERT
607
MID
609
reacomodar los bytes de un tag INT, DINT o REAL
SWPB
300
comparar una cadena con otra cadena
CMP
206
determinar si los caracteres son iguales a caracteres específicos
EQU
211
determinar si los caracteres son diferentes a caracteres específicos
NEQ
242
determinar si los caracteres son mayores o iguales que caracteres específicos
GEQ
215
determinar si los caracteres son mayores que caracteres específicos
GRT
219
determinar si los caracteres son menores o iguales que caracteres específicos
LEQ
223
determinar si los caracteres son menores que caracteres específicos
LES
227
encontrar una cadena en una matriz de cadenas
FSC
347
identificar el carácter inicial de una subcadena
insertar caracteres dentro de una cadena
extraer caracteres de una cadena
612
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Capítulo 19
Tipos de datos de cadena
Los caracteres ASCII se almacenan en tags que usan un tipo de datos
de cadena.
• Puede usar el tipo de datos STRING predeterminado, que
almacena hasta 82 caracteres.
• Usted puede crear un nuevo tipo de datos de cadena que
almacene menos o más caracteres.
Para crear un nuevo tipo de datos de cadena, consulte el documento
Logix5000 Controllers Common Procedures, publicación 1756-PM001.
Cada tipo de datos de cadena contiene los siguientes miembros:
Nombre:
Tipo de
datos:
Descripción:
Notas:
LEN
DINT
número de caracteres
en la cadena
El LEN se actualiza automáticamente con el nuevo conteo de los caracteres
cuando usted:
• usa el cuadro de diálogo String Browser para introducir caracteres
• usa instrucciones que leen, convierten o manipulan una cadena
El LEN muestra la longitud de la cadena actual. El miembro DATA puede contener
caracteres adicionales antiguos, los cuales no se incluyen en el conteo LEN.
DATA
Matriz SINT
caracteres ASCII de la
cadena
• Para obtener acceso a los caracteres de la cadena, utilice el nombre del tag.
Por ejemplo, para acceder a los caracteres del tag string_1, introduzca
string_1.
• Cada elemento de la matriz DATA contiene un carácter.
• Usted puede crear nuevos tipos de datos de cadena que almacenen menos o
más caracteres.
Publicación 1756-RM003K-ES-P – Julio 2008
613
Capítulo 19
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Cadena en DINT (STOD)
La instrucción STOD convierte la representación ASCII de un número
entero en un valor entero o REAL.
Operandos:
Lógica de escalera de relés
STOD
STOD
String
ToTo
DINT
String
DINT
Source
Source
??
????
Dest
Dest
??
????
Operando
Tipo
Formato
Introduzca
Notas
Source
cadena
tag
el tag que contiene el valor
en ASCII
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
Destination
SINT
tag
el tag en que se almacena
el valor entero
INT
DINT
Si el valor Source es un número de punto
flotante (coma flotante), la instrucción
convierte solamente la parte no fraccionaria del
número (independientemente del tipo de datos
de destino).
REAL
STOD(Source,Dest);
Texto estructurado
Los operandos son iguales a los de la instrucción STOD de lógica de
escalera de relés.
Descripción: STOD convierte Source a un valor entero y coloca el resultado en
Destination.
• La instrucción convierte números positivos y negativos.
• Si la cadena Source contiene caracteres no numéricos, STOD
convierte el primer conjunto de números contiguos:
– La instrucción ignora los caracteres de control inicial y
caracteres no numéricos (excepto el signo menos frente a un
número).
– Si la cadena contiene múltiples grupos de números separados
por delimitadores (por ejemplo, /), la instrucción convierte
solamente el primer grupo de números.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
614
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Capítulo 19
Condiciones de fallo
Tipo
Código
Causa
Método de recuperación
4
51
El valor LEN del tag de cadena es mayor que el tamaño
de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo
en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres
que contiene la cadena.
4
53
El número de salida sobrepasa los límites del tipo de
datos de destino.
Realice uno de los siguientes:
• Reduzca el tamaño del valor ASCII.
• Use un tipo de datos mayor para el destino.
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
SC se establece
Destination se borra.
La instrucción convierte Source.
Si el resultado es cero, S:Z se establece.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo: Cuando MV_read.EM se establece, la instrucción STOD convierte en
un valor entero el primer conjunto de caracteres numéricos de
MV_msg. La instrucción ignora el carácter de control inicial ($06) y se
detiene en el delimitador ( \ ).
Lógica de escalera de relés
MV_read.EM
STOD
STOD
String
To DINT
String
To DINT
Source
MV_msg
Source
MV_msg
’$06324\12\1\$r’
'$06324\12\1\$r'
Dest
MV_msg_nmbr
Dest MV_msg_nmbr
324
324
Publicación 1756-RM003K-ES-P – Julio 2008
615
Capítulo 19
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Texto estructurado
IF MV_read.EM THEN
STOD(MV_msg,MV_msg_nmbr);
MV_read.EM := 0;
END_IF;
Cadena en REAL (STOR)
La instrucción STOR convierte en un valor REAL la representación
ASCII de un valor de punto flotante (coma flotante).
Operandos:
STOR
STOR
String
Real
Stringtoto
Real
Source
Source
Dest
Dest
Operadores de escalera de relé
??
????
??
????
Operando
Tipo
Formato
Introduzca
Notas
Source
cadena
tag
el tag que contiene el valor
en ASCII
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
Destination
REAL
tag
STOR(Source,Dest);
el tag en que se almacena
el valor REAL
Texto estructurado
Los operandos son iguales a los de la instrucción STOR de lógica de
escalera de relés.
Descripción: La instrucción STOR convierte Source en un valor REAL y coloca el
resultado en Destination.
• La instrucción convierte números positivos y negativos.
• Si la cadena Source contiene caracteres no numéricos, STOR
convierte el primer conjunto de números contiguos, inclusive el
punto decimal [ . ]:
– La instrucción ignora los caracteres de control inicial o
caracteres no numéricos (excepto el signo menos frente a un
número).
– Si la cadena contiene varios grupos de números separados
por delimitadores (por ejemplo, /), la instrucción convierte
solamente el primer grupo de números.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
616
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Capítulo 19
Condiciones de fallo:
Tipo
Código
Causa
Método de recuperación
4
51
El valor LEN del tag de cadena es mayor que el tamaño
de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo
en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres
que contiene la cadena.
4
53
El número de salida sobrepasa los límites del tipo de
datos de destino.
Realice uno de los siguientes:
• Reduzca el tamaño del valor ASCII.
• Use un tipo de datos mayor para el destino.
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
S:C se establece.
Destination se borra.
La instrucción convierte Source.
Si el resultado es cero, S:Z se establece.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo: Después de leer el resultado del pesaje en una báscula
(weight_read.EM se establece) la instrucción STOR convierte en un
valor REAL los caracteres numéricos de weight_ascii.
Es posible que se perciba una pequeña diferencia entre las partes
fraccionarias de Source y Destination.
Lógica de escalera de relés
weight_read.EM
STOR
STOR
String
to Real
String
to Real
Source
weight_axcii
Source weight_ascii
’428.259’
'428.259'
Dest
weight
Dest
weight
428.259
428.259
Publicación 1756-RM003K-ES-P – Julio 2008
617
Capítulo 19
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Texto estructurado
IF weight_read.EM THEN
STOR(weight_ascii,weight);
weight_read.EM := 0;
END_IF;
618
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
DINT en cadena (DTOS)
Capítulo 19
La instrucción DTOS produce la representación ASCII de un valor.
Operandos:
DTOS
DTOS
DINT
to to
String
DINT
String
Source
Source
Dest
Dest
Lógica de escalera de relés
??
????
??
????
Operando
Tipo
Formato
Introduzca
Source
SINT
tag
el tag que contiene el valor Si Source es un número REAL, la instrucción lo
convierte en un valor DINT. Consulte REAL en
un número entero en la página 640.
tag
el tag en que se almacena
el valor ASCII
INT
Notas
DINT
REAL
Destination
cadena
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
DTOS(Source,Dest);
Texto estructurado
Los operandos son iguales a los de la instrucción DTOS de lógica de
escalera de relés.
Descripción: La instrucción DTOS convierte Source en una cadena de caracteres
ASCII y coloca el resultado en Destination.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Tipo
Código
Causa
Método de recuperación
4
51
El valor LEN del tag de cadena es mayor que el tamaño
de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo
en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres
que contiene la cadena.
4
52
La cadena de salida es mayor que el destino.
Publicación 1756-RM003K-ES-P – Julio 2008
Prepare un nuevo tipo de datos de cadena que sea
suficientemente grande para la cadena de salida. Use el
nuevo tipo de datos de cadena como tipo de datos para
el destino.
619
Capítulo 19
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción convierte Source.
post-escán
La condición de salida de renglón se establece como Ninguna.
falsa.
Ejemplo: Cuando temp_high se establece, la instrucción DTOS convierte en una
cadena de caracteres ASCII el valor en msg_num y coloca el resultado
en msg_num_ascii. Los renglones subsiguientes insertan o concatenan
msg_num_ascii con otras cadenas a fin de producir un mensaje
completo para un terminal de pantalla.
Lógica de escalera de relés
DTOS
DTOS
DINT
to String
DINT
to String
Source
msg_num
Source
msg_num
23
23
Dest
msg_num_ascii
Dest msg_num_ascii
’23’
temp_high
'23'
Texto estructurado
IF temp_high THEN
DTOS(msg_num,msg_num_ascii);
temp_high := 0;
END_IF;
620
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
REAL en cadena (RTOS)
Capítulo 19
La instrucción RTOS produce la representación ASCII de un valor
REAL.
Operandos:
RTOS
RTOS
Real
to to
String
Real
String
Source
Source
Dest
Dest
Lógica de escalera de relés
??
????
??
????
Operando
Tipo
Formato
Introduzca
Notas
Source
REAL
tag
el tag que contiene el valor
REAL
Destination
cadena
tag
el tag en que se almacena
el valor ASCII
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
RTOS(Source,Dest);
Texto estructurado
Los operandos son iguales a los de la instrucción RTOS de lógica de
escalera de relés.
Descripción: La instrucción RTOS convierte Source a una cadena de caracteres
ASCII y coloca el resultado en Destination.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Tipo
Código
Causa
Método de recuperación
4
51
El valor LEN del tag de cadena es mayor que el tamaño
de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo
en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres
que contiene la cadena.
4
52
La cadena de salida es mayor que el destino.
Publicación 1756-RM003K-ES-P – Julio 2008
Prepare un nuevo tipo de datos de cadena que sea
suficientemente grande para la cadena de salida. Use el
nuevo tipo de datos de cadena como tipo de datos para
el destino.
621
Capítulo 19
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción convierte Source.
post-escán
La condición de salida de renglón se establece como Ninguna.
falsa.
Ejemplo: Cuando send_data se establece, la instrucción RTOS convierte en una
cadena de caracteres ASCII el valor en data_1 y coloca el resultado en
data_1_ascii. Los renglones subsiguientes insertan o concatenan
data_1_ascii con otras cadenas para producir un mensaje completo
para un terminal de pantalla.
Es posible que se perciba una pequeña diferencia entre las partes
fraccionarias de Source y Destination.
Lógica de escalera de relés
RTOS
RTOS
Real
to String
Real
to String
Source
data_1
Source
data_1
15.3001
15.3001
Dest
data_1_ascii
Dest data_1_ascii
’15.301003’
send_data
'15.3001003'
Texto estructurado
IF send_data THEN
RTOS(data_1,data_1_ascii);
send_data := 0;
END_IF;
622
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Mayúsculas (UPPER)
Capítulo 19
La instrucción UPPER convierte en mayúsculas los caracteres
alfabéticos de una cadena.
Operandos:
Lógica de escalera de relés
UPPER(Source,Dest);
Operando
Tipo
Formato
Descripción
Source
cadena
tag
el tag que contiene los caracteres que usted
desea convertir en mayúsculas
Destination
cadena
tag
el tag para almacenar los caracteres en
mayúsculas
Texto estructurado
Los operandos son iguales a los de la instrucción UPPER de lógica de
escalera de relés.
Descripción: La instrucción UPPER convierte en mayúsculas todas las letras en
Source y coloca el resultado en Destination.
• Los caracteres ASCII permiten distinguir mayúsculas de
minúsculas. La “A” mayúscula ($41) es diferente a la “a”
minúscula ($61).
• Si los operadores introducen directamente caracteres ASCII,
convierta en mayúsculas o minúsculas todos los caracteres antes
de compararlos.
Los caracteres en la cadena Source que no son letras permanecen
iguales.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
Publicación 1756-RM003K-ES-P – Julio 2008
623
Capítulo 19
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
EnableIn se establece
n .a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción convierte Source en mayúsculas.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo: Para encontrar información acerca de un ítem especifico, un operador
introduce el número de catálogo del ítem en el terminal ASCII.
Después de que el controlador lee la entrada proveniente de un
terminal (terminal_read.EM se establece), la instrucción UPPER
convierte en mayúsculas todos los caracteres de catalog_number y
almacena el resultado en catalog_number_upper_case.
Posteriormente, un renglón subsiguiente busca en la matriz los
caracteres que coinciden con los de catalog_number_upper_case.
Lógica de escalera de relés
Texto estructurado
IF terminal_read.EM THEN
UPPER(catalog_number,catalog_number_upper_case);
terminal_read.EM := 0;
END_IF;
624
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Minúsculas (Lower Case
(LOWER))
Capítulo 19
La instrucción LOWER convierte en minúsculas los caracteres
alfabéticos de una cadena.
Operandos:
Lógica de escalera de relés
LOWER(Source,Dest);
Operando
Tipo
Formato
Descripción
Source
cadena
tag
el tag que contiene los caracteres que usted
desea convertir en minúsculas
Destination
cadena
tag
el tag para almacenar los caracteres en
minúsculas
Texto estructurado
Los operandos son iguales a los de la instrucción LOWER de lógica de
escalera de relés.
Descripción: La instrucción LOWER convierte en minúsculas todas las letras en
Source y coloca el resultado en Destination.
• Los caracteres ASCII permiten distinguir mayúsculas de
minúsculas. La “A” mayúscula ($41) es diferente a la “a”
minúscula ($61).
• Si los operadores introducen directamente caracteres ASCII,
convierta en mayúsculas o minúsculas todos los caracteres antes
de compararlos.
Los caracteres de la cadena Source que no son letras permanecen
iguales.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
preescán
La condición de salida de renglón se establece como
falsa.
Ninguna.
condición de entrada de
renglón es falsa
La condición de salida de renglón se establece como
falsa.
n. a.
condición de entrada de
renglón es verdadera
La instrucción se ejecuta.
n. a.
La condición de salida de renglón se establece como
verdadera.
Publicación 1756-RM003K-ES-P – Julio 2008
625
Capítulo 19
Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Condición
Acción de lógica de escalera de relés
Acción de texto estructurado
EnableIn se establece
n. a.
EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
La instrucción convierte Source en minúsculas.
post-escán
La condición de salida de renglón se establece como
falsa.
Ninguna.
Ejemplo: Para encontrar información acerca de un ítem especifico, un operador
introduce el número de catálogo en un terminal ASCII. Después de
que el controlador lee la entrada proveniente de un terminal
(terminal_read.EM se establece) la instrucción LOWER convierte en
minúsculas todos los caracteres de item_number y almacena el
resultado en item_number_lower_case. Posteriormente, un renglón
subsiguiente busca en la matriz los caracteres que coinciden con los
de item_number_lower_case.
Lógica de escalera de relés
Texto estructurado
IF terminal_read.EM THEN
LOWER(item_number,item_number_lower_case);
terminal_read.EM := 0;
END_IF;
626
Publicación 1756-RM003K-ES-P – Julio 2008
Capítulo
20
Instrucciones de depuración
(BPT, TPT)
Introducción
Use las instrucciones de depuración para monitorear el estado de
la lógica cuando está en condiciones determinadas por usted.
Estas instrucciones sólo son compatibles con el software RSLogix
Emulate 5000, con el cual usted puede emular un controlador
Logix 5000 en su computadora personal.
Si desea
Use esta instrucción
Disponible en estos lenguajes
Vea la página
detener la emulación del programa cuando un
renglón es verdadero
BPT
lógica de escalera de relés
627
registrar datos que usted selecciona cuando un
renglón es verdadero
TPT
lógica de escalera de relés
631
Puntos de interrupción
(BPT)
Los puntos de interrupción detienen la emulación del programa
cuando un renglón es verdadero.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Formato
Cadena
tag
Una cadena que establece el formateo del
texto que aparece en la ventana de rastreo
del punto de interrupción.
Rastrear
esto
BOOL, SINT,
INT, DINT, REAL
tag
El tag que tiene un valor que usted desea
mostrar en la ventana de rastreo.
Descripción:
Los puntos de interrupción se programan con la instrucción de salida
de punto de interrupción (BPT). Cuando las entradas en un renglón
que contiene una instrucción BPT son verdaderas, la instrucción BPT
detiene la ejecución del programa. El software muestra una ventana
que indica que se activó el punto de interrupción y los valores que lo
activaron.
627Publicación 1756-RM003K-ES-P – Julio 2008
627
Capítulo 20
Instrucciones de depuración (BPT, TPT)
Cuando se activa un punto de interrupción, el emulador muestra una
ventana para informar que se produjo un punto de interrupción.
La barra de título de la ventana muestra la ranura que contiene el
emulador que encontró el punto de interrupción.
Cuando usted hace clic en OK, el emulador reanuda la ejecución del
programa. Si las condiciones que activaron el punto de interrupción
persisten, el punto de interrupción volverá a ocurrir.
Además el emulador abre una ventana de rastreo del punto de
interrupción. La ventana de rastreo muestra información acerca del
punto de interrupción y los valores.
ATENCIÓN
Cuando se activa un punto de interrupción, usted no podrá editar su
proyecto hasta que permita que continúe la ejecución. Puede entrar
en línea con el emulador para observar el estado de su proyecto, pero
no podrá editarlo. Si intenta aceptar una edición de renglón mientras
que está activado un punto de interrupción, aparece un cuadro de
diálogo que indica que el controlador no está en el modo correcto.
Formato de cadena
Con la cadena de formato en las instrucciones de punto de rastreo y
punto de interrupción, puede controlar cómo aparecen los tags
rastreados en las ventanas de punto de interrupción o en los rastreos.
El formato de la cadena se muestra aquí:
encabezado:(texto)%(tipo)
donde encabezado es una cadena de texto que identifica el punto de
rastreo o el punto de interrupción, texto es una cadena que describe el
tag (o cualquier otro texto que usted seleccione) y %(tipo) indica el
formato del tag. Usted necesita un indicador de tipo para cada tag que
está rastreando con la instrucción de punto de rastreo o punto de
interrupción.
Por ejemplo, podría formatear una cadena de punto de rastreo como
se muestra aquí:
Mi punto de rastreo:Tag 1 = %e y Tag 2 = %d
El %e formatea el primer tag rastreado como valor con punto flotante
(coma flotante) de doble precisión con un exponente, y %d formatea
el segundo tag rastreado como valor entero decimal con signo.
En este caso, usted tendría una instrucción de punto de rastreo con
dos operandos de rastreo (Trace This) (uno para un valor REAL y uno
para un valor INT, aunque el valor de cualquier tag puede formatearse
con cualquier indicador).
628
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de depuración (BPT, TPT)
Capítulo 20
La ventana de punto de rastreo resultante que aparecería cuando se
activa el punto de rastreo sería similar a esta.
El número de ranura indica la ranura que
contiene el módulo emulador que tiene
el punto de rastreo o el punto de
interrupción rastreado en la ventana de
rastreo.
El texto para el valor REAL (representado
en la cadena de formato mediante %e)
aparece aquí.
El encabezado (el texto que precede el
signo de dos puntos en la cadena de
formato) aparece aquí.
El texto para el valor
INT (representado en la cadena de
formato mediante %d) aparece aquí.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición:
Acción de lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La condición de salida de renglón se establece como verdadera.
La ejecución salta al renglón que contiene la instrucción LBL con el nombre de etiqueta
referenciado.
post-escán
La condición de salida de renglón se establece como falsa.
Ejemplo: Usted puede mostrar muchos valores de tag con la instrucción BPT.
Sin embargo, la cadena de formateo puede contener sólo
82 caracteres. Puesto que la cadena de formateo requiere dos
caracteres para cada tag que usted desea en el punto de interrupción,
no podrá rastrear más de 41 tags con una sola instrucción BPT.
Sin embargo, para separar datos de tag en sus rastreos necesitará
incluir espacios y otro formateo, reduciendo así el número de valores
de tag que puede mostrar eficazmente una instrucción BPT a mucho
menos de 41.
Publicación 1756-RM003K-ES-P – Julio 2008
629
Capítulo 20
Instrucciones de depuración (BPT, TPT)
Este renglón muestra un punto de interrupción que detiene la
ejecución del programa cuando un valor analógico es mayor que 3.02
o menor que 2.01.
Usted desea mostrar la información del punto de interrupción en la
cadena Formato (myformat). En este caso, la cadena de formato
contiene el siguiente texto:
Punto de interrupción:El valor de entrada es %f
Cuando el punto de interrupción se activa, la ventana de rastreo de
punto de interrupción muestra los caracteres antes del signo de dos
puntos (“Breakpoint”) en la barra de título de la ventana de rastreo.
Los demás caracteres conforman los rastreos. En este ejemplo, %f
representa el primer tag (y, en este caso, el único) que se va a rastrear
(“analogvalue”).
Los rastreos resultantes se muestran aquí.
630
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de depuración (BPT, TPT)
Puntos de rastreo (TPT)
Capítulo 20
Datos de registro de puntos de rastreo que usted selecciona cuando
un renglón es verdadero.
Operandos:
Lógica de escalera de relés
Operando
Tipo
Formato
Descripción
Format
Cadena
tag
Una cadena que establece el formateo de los
informes de rastreo (tanto en pantalla como
registrados en el disco).
Trace This
BOOL, SINT,
INT, DINT,
REAL
tag
El tag que usted desea rastrear.
Descripción:
Los puntos de rastreo se programan con la instrucción de salida punto
de rastreo (BPT). Cuando las entradas en un renglón que contiene
una instrucción TPT son verdaderas, la instrucción TPT escribe una
entrada de rastreo a una pantalla de rastreo o archivo de registros.
Usted puede rastrear muchos tags con la instrucción TPT. Sin
embargo, la cadena de formateo puede contener sólo 82 caracteres.
Puesto que la cadena de formateo requiere dos caracteres para cada
tag que usted desea rastrear, no podrá rastrear más de 41 tags con una
sola instrucción TPT. Sin embargo, para separar datos de tags en sus
rastreos, necesitará incluir espacios y otro formateo, lo cual reduce el
número de tags que puede rastrear eficazmente una instrucción TPT a
mucho menos de 41.
Formato de cadena
Con la cadena de formato en las instrucciones de punto de rastreo y
punto de interrupción, puede controlar cómo aparecen los tags
rastreados en las ventanas de rastreo o punto de interrupción.
El formato de la cadena se muestra aquí:
encabezado:(texto)%(tipo)
donde encabezado es una cadena de texto que identifica el punto de
rastreo o el punto de interrupción, texto es una cadena que describe el
tag (o cualquier otro texto que usted seleccione) y %(tipo) indica el
formato del tag. Usted necesita un indicador de tipo para cada tag que
está rastreando con la instrucción de punto de rastreo o punto de
interrupción.
Publicación 1756-RM003K-ES-P – Julio 2008
631
Capítulo 20
Instrucciones de depuración (BPT, TPT)
Por ejemplo, podría formatear una cadena de punto de rastreo como
se muestra aquí:
Mi punto de rastreo:Tag 1 = %e y Tag 2 = %d
El %e formatea el primer tag rastreado como valor con punto flotante
(coma flotante) de doble precisión con un exponente, y %d formatea
el segundo tag rastreado como valor entero decimal con signo.
En este caso, usted tendría una instrucción de punto de rastreo con
dos operandos de rastreo (Trace This) (uno para un valor REAL y uno
para un valor INT, aunque el valor de cualquier tag puede formatearse
con cualquier indicador).
La ventana de punto de rastreo resultante que aparecería cuando se
activa el punto de rastreo sería similar a esta.
El número de ranura indica la ranura que
contiene el módulo emulador que tiene
el punto de rastreo o el punto de
interrupción rastreado en la ventana de
rastreo.
El texto para el valor REAL (representado
en la cadena de formato mediante %e)
aparece aquí.
El encabezado (el texto que precede el
signo de dos puntos en la cadena de
formato) aparece aquí.
El texto para el valor
INT (representado en la cadena de
formato mediante %d) aparece aquí.
. Indicadores de estado
aritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición:
Acción de Lógica de escalera de relés
preescán
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
La condición de salida de renglón se establece como verdadera.
La ejecución salta al renglón que contiene la instrucción LBL con el nombre de etiqueta
referenciado.
post-escán
632
La condición de salida de renglón se establece como falsa.
Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de depuración (BPT, TPT)
Capítulo 20
Ejemplo: Este renglón activa un rastreo de tres valores analógicos cuando
cualquiera de ellos excede un valor específico (30.01).
Usted desea mostrar la información del punto de rastreo en la cadena
Formato (myformat). En este caso, la cadena de formato contiene este
texto:
Rastreo de entradas analógicas:Entradas analógicas = %f, %f y %f
Cuando el punto de rastreo se activa, los caracteres antes del signo de
dos puntos (“Rastreo de entradas analógicas”) aparecen en la barra de
título de la ventana de rastreo. Los demás caracteres conforman los
rastreos. En este ejemplo, %f representa los tags que se van a rastrear
(“analogvalue1”, “analogvalue2” y “analogvalue3”).
Los rastreos resultantes se muestran aquí.
Cuando este rastreo se registra en el disco, los caracteres antes del
signo de dos puntos aparecen en los rastreos.
Publicación 1756-RM003K-ES-P – Julio 2008
633
Capítulo 20
Instrucciones de depuración (BPT, TPT)
Esto indica cuál punto de rastreo causó cuál entrada de rastreo. Éste
es un ejemplo de una entrada de rastreo. “Rastreo de entradas
analógicas:” es el texto de encabezado de la cadena de formato del
punto de rastreo.
Rastreo de entradas analógicas:Entradas analógicas = 31.00201,
30.282000 y 30.110001
634
Publicación 1756-RM003K-ES-P – Julio 2008
Apéndice
A
Atributos comunes
Introducción
Valores inmediatos
Este apéndice describe los atributos comunes en las instrucciones
Logix.
Si desea información acerca de
Vea la página
Valores inmediatos
635
Conversiones de datos
635
Cada vez que usted introduce un valor inmediato (constante) en
formato decimal (por ejemplo, -2, 3), el controlador almacena el valor
usando 32 bits. Si introduce un valor en una base diferente a la
decimal como, por ejemplo, binario o hexadecimal, y no especifica
todos y cada uno de los 32 bits, el controlador coloca un cero en los
bits que usted no especifica (los rellena con ceros).
EJEMPLO
Conversiones de datos
Relleno con cero de valores inmediatos
Si introduce
El controlador almacena
-1
16#ffff ffff (-1)
16#ffff (-1)
16#0000 ffff (65535)
8#1234 (668)
16#0000 029c (668)
2#1010 (10)
16#0000 000a (10)
Las conversiones de datos ocurren cuando usted mezcla diferentes
tipos de datos en la programación:
Cuando se programa en
Pueden ocurrir conversiones cuando usted
Lógica de escalera de relés Mezcla diferentes tipos de datos en los parámetros dentro
de una instrucción
Bloque de funciones
635Publicación 1756-RM003K-ES-P – Julio 2008
Cablea dos parámetros que tienen diferentes tipos de datos
635
Apéndice A
Atributos comunes
Las instrucciones se ejecutan más rápidamente y requieren menos
memoria si todos los operandos de la instrucción usan:
• el mismo tipo de datos
• un tipo de datos óptimo:
– En la sección “Operandos” de cada instrucción en este
manual, un tipo de datos en negrita indica un tipo de datos
óptimo.
– Los tipos de datos DINT y REAL son generalmente los tipos
de datos óptimos.
– La mayoría de las instrucciones de bloque de funciones sólo
aceptan un tipo de datos (el tipo de datos óptimo) para sus
operandos.
Si usted mezcla diferentes tipos de datos y usa tags que no son del
tipo de datos óptimo, el controlador convierte los datos según estas
reglas.
• ¿Es alguno de los operandos un valor REAL?
Si
Los operandos de entrada (por ejemplo, origen, tag en una
expresión, límite) se convierten en:
La respuesta
es afirmativa
REAL
La respuesta
es negativa
DINT
• Después de la ejecución de la instrucción, el resultado (un valor
DINT o REAL) se convierte en el tipo de datos del destino, si es
necesario.
Usted no puede especificar un tag BOOL en una instrucción que
opera con tipos de datos enteros o REAL.
Puesto que la conversión de datos requiere tiempo y memoria
adicional, usted puede aumentar la eficiencia de su programa si:
• usa el mismo tipo de datos en toda la instrucción
• minimiza el uso de los tipos de datos SINT o INT
En otras palabras, use todos los tags DINT o tags REAL, junto con
valores inmediatos, en sus instrucciones.
En las siguientes secciones se explica cómo se convierten los datos
cuando usted usa tags SINT o INT o cuando mezcla diferentes tipos
de datos.
636
Publicación 1756-RM003K-ES-P – Julio 2008
Atributos comunes
Apéndice A
SINT o INT en DINT
En las instrucciones que convierten valores SINT o INT en valores
DINT, las secciones “Operandos” en este manual identifican el
método de conversión.
Este método de conversión
Convierte datos colocando
Extensión de signo
el valor del bit del extremo izquierdo (el signo del valor)
en cada posición de bit a la izquierda de los bits
existentes hasta que haya 32 bits.
Relleno con ceros
ceros a la izquierda de los bits existentes hasta que haya
32 bits.
Los siguientes ejemplos muestran los resultados de convertir un valor
mediante extensión de signo y relleno con ceros.
Este valor
2#1111_1111_1111_1111
(-1)
2#1111_1111_1111_1111_1111_1111_1111_1111
Se convierte en
este valor mediante
extensión de signo
(-1)
2#0000_0000_0000_0000_1111_1111_1111_1111
Se convierte en
este valor mediante
relleno con ceros
(65535)
Puesto que los valores inmediatos siempre se rellenan con ceros,
la conversión de un valor SINT o INT puede producir resultados
inesperados. En el siguiente ejemplo, la comparación es falsa porque
Source A, un INT, se convierte mediante extensión de signo; mientras
que Source B, un valor inmediato, se rellena con ceros.
der Logic Listing - Total number of rungs: 3
EQU
EQU
Igual
Equala (Equal)
SourceAA
remote_rack_1:I.Data[0]
Source
remote_rack_1:I.Data[0]
2#1111_1111_1111_1111
2#1111_1111_1111_1111
SourceBB 2#1111_1111_1111_1111
Source
2#1111_1111_1111_1111
42093
Publicación 1756-RM003K-ES-P – Julio 2008
637
Apéndice A
Atributos comunes
Si utiliza un tag SINT o INT y un valor inmediato en una instrucción
que convierte datos mediante extensión de signo, use uno de estos
métodos para manejar los valores inmediatos:
• Especifique cualquier valor inmediato en la base decimal
• Si va a introducir el valor en una base diferente a la decimal,
especifique los 32 bits del valor inmediato. Para ello, introduzca
el valor del bit del extremo izquierdo en cada posición de bit a
la izquierda hasta que haya 32 bits.
• Cree un tag para cada operando y use el mismo tipo de datos en
toda la instrucción. Para asignar un valor constante, realice uno
de los siguientes procedimientos:
– Introdúzcalo en uno de los tags
– Añada una instrucción MOV que mueva el valor a uno de los
tags.
• Use una instrucción MEQ para verificar sólo los bits requeridos
Los siguientes ejemplos muestran dos maneras de mezclar un valor
inmediato con un tag INT. En ambos ejemplos se verifican los bits de
un módulo de E/S 1771 para determinar si todos los bits están
activados. Puesto que la palabra de datos de entrada de un módulo de
E/S 1771 es un tag INT, lo más fácil es usar un valor constante de
16 bits.
EJEMPLO
Mezcla de un tag INT con un valor inmediato
Puesto que remote_rack_1:I.Data[0] es un tag INT, el valor con
el cual se va a verificar también se introduce como un tag INT.
EQU
Equal
Source A remote_rack_1:I.Data[0]
2#1111_1111_1111_1111
Source B
int_0
2#1111_1111_1111_1111
42093
EJEMPLO
Mezcla de un tag INT con un valor inmediato
Puesto que remote_rack_1:I.Data[0] es un tag INT,
el valor con el cual se va a verificar primero se
mueve a int_0, también un tag INT. Posteriormente
la instrucción EQU compara ambos tags.
2#1111_1111_1111_1111
MOV
Move
Source 2#1111_1111_1111_1111
Dest
638
int_0
2#1111_1111_1111_1111
EQU
Equal
Source A remote_rack_1:I.Data[0]
2#1111_1111_1111_1111
Source B
int_0
2#1111_1111_1111_1111
42093
Publicación 1756-RM003K-ES-P – Julio 2008
Atributos comunes
Apéndice A
Entero en REAL
El controlador almacena valores REAL en formato de valor con punto
flotante (coma flotante) de precisión simple IEEE. Éste utiliza un bit
para el signo del valor, 23 bits para el valor base y ocho bits para el
exponente (32 bits en total). Si usted mezcla un tag de número entero
(SINT, INT o DINT) y un tag REAL como entradas en la misma
instrucción, el controlador convierte en un valor REAL el valor entero,
antes de que se ejecute la instrucción.
• Un valor SINT o INT siempre se convierte en el mismo valor
REAL.
• Un valor DINT puede no convertirse al mismo valor REAL:
– Un valor REAL usa hasta 24 bits para el valor base (23 bits
almacenados más un bit “oculto”).
– Un valor DINT usa hasta 32 bits para el valor (uno para el
signo y 31 para el valor).
– Si el valor DINT requiere más de 24 bits significativos, puede
no convertirse en el mismo valor REAL. De ser así, el
controlador se redondeará al valor REAL más cercano usando
24 bits significativos.
DINT en SINT o INT
Para convertir un valor DINT en un valor SINT o INT, el controlador
trunca la porción superior del DINT y establece el indicador de estado
de overflow, si es necesario. El siguiente ejemplo muestra el resultado
de una conversión de DINT en SINT o INT.
EJEMPLO
Publicación 1756-RM003K-ES-P – Julio 2008
Conversión de DINT en INT y SINT
Este valor DINT
Se convierte en este valor menor
16#0001_0081 (65,665)
INT:
16#0081 (129)
SINT:
16#81 (-127)
639
Apéndice A
Atributos comunes
REAL en un número entero
Para convertir un valor REAL en un valor entero, el controlador
redondea la parte fraccionaria y trunca la porción superior de la parte
no fraccionaria. Si se pierden datos, el controlador establece el
indicador de estado de overflow. Los números se redondean de la
siguiente manera:
• Los números diferentes de x.5 se redondean al número entero
más cercano.
• X.5 se redondea al número par más cercano.
El siguiente ejemplo muestra el resultado de convertir valores REAL en
valores DINT.
EJEMPLO
Este valor REAL
Se convierte en este valor DINT
-2.5
-2
-1.6
-2
-1.5
-2
-1.4
-1
1.4
1
1.5
2
1.6
2
2.5
2
IMPORTANTE
640
Conversión de valores REAL en valores DINT
Los indicadores de estado aritmético se establecen según el
valor que se está almacenando. Las instrucciones que
normalmente no afectan palabras clave de estado aritméticas
pueden parecer que lo hacen si ocurre una conversión de tipo
debido a una mezcla de tipos de datos en los parámetros de
instrucción. El proceso de conversión de tipo establece
palabras clave de estado aritmético.
Publicación 1756-RM003K-ES-P – Julio 2008
Apéndice
B
Atributos de bloque de funciones
Introducción
Este apéndice describe aspectos que son únicos con las instrucciones
de bloque de funciones. Repase la información proporcionada en este
apéndice para asegurarse de que entiende cómo funcionarán las
rutinas de bloque de funciones.
Cuando se programa un bloque de funciones, es necesario restringir el rango de
unidades de ingeniería a +/-10+/-15 puesto que los cálculos de punto flotante
(coma flotante) internos se realizan usando punto flotante (coma flotante) de
precisión simple. Las unidades de ingeniería que no se encuentran dentro de este
rango pueden provocar una pérdida de exactitud si los resultados se acercan a las
limitaciones del punto flotante (coma flotante) de precisión simple (+/-10+/-38).
IMPORTANTE
Selección de elementos de
bloques de funciones
referencia de entrada (IREF)
Para controlar un dispositivo, use los siguientes elementos:
referencia de salida (OREF)
bloque de funciones
conector de
cable de
salida (OCON)
conector de
cable de entrada
(ICON)
Use la siguiente tabla para seleccionar los elementos de bloques de
funciones:
Si usted desea
Use una
suministrar un valor desde un dispositivo de entrada
o tag
referencia de entrada (IREF)
enviar un valor a un dispositivo de salida o tag
referencia de salida (OREF)
641Publicación 1756-RM003K-ES-P – Julio 2008
641
Apéndice B
Atributos de bloque de funciones
Si usted desea
Use una
realizar una operación con un valor o valores de
entrada, y producir un valor o valores de salida
bloque de funciones
transferir datos entre bloques de funciones cuando
éstos están:
conector de cable de salida (OCON) y un conector de
cable de entrada (ICON)
• bastante separados en la misma hoja
• en hojas diferentes dentro de la misma rutina
dispersar datos a varios puntos en la rutina
Enclavamiento de datos
conector de cable de una salida (OCON) y varios
conectores de cable de entrada (ICON)
Si usted usa una IREF para especificar datos de entrada en una
instrucción de bloques de funciones, los datos en la IREF se enclavan
para el escán de la rutina de bloque de funciones. La IREF enclava
datos desde los tags bajo el control del programa y tags bajo el control
del controlador. El controlador actualiza todos los datos IREF al
comienzo de cada escán.
IREF
En este ejemplo, el valor de tagA se almacena al comienzo de la
ejecución de la rutina. El valor almacenado se usa cuando se ejecuta
Block_01. El mismo valor almacenado también se usa cuando se
ejecuta Block_02. Si el valor de tagA cambia durante la ejecución de la
rutina, el valor almacenado de tagA en IREF no cambia hasta la
siguiente ejecución de la rutina.
Block_01
tagA
Block_02
642
Publicación 1756-RM003K-ES-P – Julio 2008
Atributos de bloque de funciones
Apéndice B
Este ejemplo es igual al anterior. El valor de tagA se alma