Está en la página 1de 701

Instrucciones generales de los

controladores Logix5000™

Manual de referencia
Números de catálogo 1756-L1x,
1756-L5x, 1756-L6x, 1768-L4x, 1769-
L30, 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.

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

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

Identifica información sobre prácticas o circunstancias que pueden provocar lesiones personales
ATENCIÓN
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.

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

PELIGRO DE QUEMADURA Puede haber etiquetas en el exterior o en el interior del equipo (por ejemplo, en un variador o un
motor) para advertir sobre superficies que 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 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23


controladores Logix5000™ A quién está dirigido este manual . . . . . . . . . . . . . . . . . . . . 23
Propósito de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Información común para todas las instrucciones. . . . . . . . . . 25
Convenciones y términos relacionados. . . . . . . . . . . . . . . . . 25
Establecer y borrar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Condición de renglón de lógica de escalera de relés . . . . 26
Estados del bloque de funciones . . . . . . . . . . . . . . . . . . 27

Capítulo 1
Instrucciones basadas en Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Logix para alarmas y eventos Alarma digital (ALMD). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
FactoryTalk Diagramas de estado cuando se requiere
(ALMD, ALMA) confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Diagramas de estado cuando no se requiere
confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Confirmación de alarma ALMD requerida y enclavada . . . 38
Confirmación de alarma ALMD requerida y no
enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Confirmación de alarma ALMD no requerida y
enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Confirmación de alarma ALMD no requerida y no
enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Alarma Analógica (ALMA) . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Diagramas de estado cuando se requiere
confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Diagramas de estado cuando no se requiere
confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Confirmación de condición de nivel ALMA requerida . . . 57
Confirmación de condición de nivel ALMA no
requerida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Confirmación de velocidad de cambio ALMA
requerida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Confirmación de velocidad de cambio ALMA
no requerida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Configure una instrucción de alarma . . . . . . . . . . . . . . . . . . 62
Introduzca el texto del mensaje de alarma . . . . . . . . . . . . . . 65
Variables de la cadena de mensaje . . . . . . . . . . . . . . . . . 66
Versiones de los mensajes de alarma en múltiples
idiomas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Monitoreo del estado de alarma. . . . . . . . . . . . . . . . . . . . . . 68
Almacenamiento de alarmas en el búfer. . . . . . . . . . . . . . . . 69
Acceda programáticamente a información de alarmas . . . . . . 70
Suprima o inhabilite alarmas . . . . . . . . . . . . . . . . . . . . . . . . 71
Ejecución de alarma basada en el controlador . . . . . . . . . . . 72
Uso de la memoria del controlador. . . . . . . . . . . . . . . . . 73
Tiempo de escán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

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


Índice

Capítulo 2
Instrucciones de bits Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
(XIC, XIO, OTE, OTL, OTU, ONS, Examinar si está cerrado (XIC). . . . . . . . . . . . . . . . . . . . . . . 78
OSR, OSF, OSRI, OSFI) Examinar si está abierto (XIO) . . . . . . . . . . . . . . . . . . . . . . . 80
Activación de salida (OTE) . . . . . . . . . . . . . . . . . . . . . . . . . 82
Enclavamiento de salida (OTL) . . . . . . . . . . . . . . . . . . . . . . 84
Desenclavamiento de salida (OTU) . . . . . . . . . . . . . . . . . . . 86
Un impulso (ONS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Un impulso en flanco ascendente (OSR) . . . . . . . . . . . . . . . 91
Un impulso en flanco descendente (OSF) . . . . . . . . . . . . . . 94
Un impulso en flanco ascendente con entrada (OSRI) . . . . . 96
Un impulso en flanco descendente con entrada (OSFI). . . . . 99

Capítulo 3
Instrucciones de temporizador y Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
contador Temporizador de retardo a la conexión (TON). . . . . . . . . . 104
(TON, TOF, RTO, TONR, TOFR, Temporizador de retardo a la desconexión (TOF) . . . . . . . 108
RTOR, CTU, CTD, CTUD, RES) Temporizador retentivo activado (RTO) . . . . . . . . . . . . . . . 112
Temporizador de retardo a la conexión con
restablecimiento (TONR) . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Temporizador de retardo a la desconexión con
restablecimiento (TOFR) . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Temporizador retentivo activado con restablecimiento
(RTOR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Conteo progresivo (CTU) . . . . . . . . . . . . . . . . . . . . . . . . . 128
Conteo regresivo (CTD) . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Conteo progresivo/regresivo (CTUD) . . . . . . . . . . . . . . . . . 136
Restablecer (RES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

Capítulo 4
Instrucciones de entrada/salida Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
(MSG, GSV, SSV, IOT) Mensaje (MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Códigos de error MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Códigos de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Códigos de error extendidos . . . . . . . . . . . . . . . . . . . . 154
Códigos de error PLC y SLC (.ERR) . . . . . . . . . . . . . . . . 156
Códigos de error de transferencia en bloques . . . . . . . . 158
Especifique los detalles de configuración . . . . . . . . . . . . . . 159
Especifique mensajes de lectura y escritura de la tabla
de datos CIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Reconfigure un módulo de E/S. . . . . . . . . . . . . . . . . . . 161
Especifique mensajes genéricos CIP . . . . . . . . . . . . . . . 162
Especifique mensajes PLC-5 . . . . . . . . . . . . . . . . . . . . . 163
Especifique mensajes SLC. . . . . . . . . . . . . . . . . . . . . . . 165
Especifique mensajes de transferencia en bloques . . . . . 165
Especifique mensajes PLC-3 . . . . . . . . . . . . . . . . . . . . . 166
Especifique mensajes PLC-2 . . . . . . . . . . . . . . . . . . . . . 167
Ejemplos de configuración MSG . . . . . . . . . . . . . . . . . . . . 168
Especifique los detalles de comunicación. . . . . . . . . . . . . . 169

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


Índice

Especifique una ruta . . . . . . . . . . . . . . . . . . . . . . . . . . 169


Para transferencia en bloques. . . . . . . . . . . . . . . . . . . . 172
Especifique un método de comunicación o una
dirección de módulo . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Seleccione una opción de caché. . . . . . . . . . . . . . . . . . 173
Pautas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Obtener valor del sistema (GSV) y establecer valor del
sistema (SSV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Objetos GSV/SSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Acceso al objeto CONTROLLER . . . . . . . . . . . . . . . . . . 180
Acceso al objeto CONTROLLERDEVICE . . . . . . . . . . . . 181
Acceso al objeto CST . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Acceso al objeto DF1 . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Acceso al objeto FAULTLOG . . . . . . . . . . . . . . . . . . . . 187
Acceso al objeto MESSAGE. . . . . . . . . . . . . . . . . . . . . . 188
Acceso al objeto MODULE . . . . . . . . . . . . . . . . . . . . . . 190
Acceso al objeto MOTIONGROUP . . . . . . . . . . . . . . . . 191
Acceso al objeto PROGRAM . . . . . . . . . . . . . . . . . . . . . 192
Acceso al objeto ROUTINE. . . . . . . . . . . . . . . . . . . . . . 193
Acceso al objeto SERIALPORT . . . . . . . . . . . . . . . . . . . 193
Acceso al objeto TASK . . . . . . . . . . . . . . . . . . . . . . . . . 195
Acceso al objeto WALLCLOCKTIME . . . . . . . . . . . . . . . 197
Ejemplo de programación GSV/SSV . . . . . . . . . . . . . . . . . . 198
Obtenga información de fallo . . . . . . . . . . . . . . . . . . . . 198
Establezca los indicadores de habilitación e
inhabilitación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Salida inmediata (IOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

Capítulo 5
Instrucciones de comparación Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
(CMP, EQU, GEQ, GRT, LEQ, LES, Comparar (CMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
LIM, MEQ, NEQ) Expresiones CMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 209
Determine el orden de operación . . . . . . . . . . . . . . . . . 209
Use cadenas en una expresión . . . . . . . . . . . . . . . . . . . 210
Igual a (EQU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Mayor o igual que (GEQ) . . . . . . . . . . . . . . . . . . . . . . . . . 215
Mayor que (GRT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Menor o igual que (LEQ). . . . . . . . . . . . . . . . . . . . . . . . . . 223
Menor que (LES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Límite (LIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Máscara igual que (MEQ) . . . . . . . . . . . . . . . . . . . . . . . . . 237
Introducción de un valor de máscara inmediato . . . . . . 238
Diferente de (NEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

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


Índice

Capítulo 6
Instrucciones de cálculo/ Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
matemáticas Calcular (CPT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
(CPT, ADD, SUB, MUL, DIV, MOD, Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
SQR, SQRT, NEG, ABS) Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 250
Determine el orden de operación . . . . . . . . . . . . . . . . . 251
Sumar (ADD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Restar (SUB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Multiplicar (MUL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Dividir (DIV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Módulo (MOD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Raíz cuadrada (SQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Cambiar signo (NEG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Valor absoluto (ABS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

Capítulo 7
Instrucciones de movimiento/ Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 281
lógicas Mover (MOV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 283
(MOV, MVM, BTD, MVMT, BTDT, Mover con máscara (MVM) . . . . . . . . . . . . . . . . . . . . . . .. 285
CLR, SWPB, AND, OR, XOR, NOT, Introduzca un valor de máscara inmediato . . . . . . . . .. 286
Movimiento enmascarado con receptor (MVMT). . . . . . . .. 288
BAND, BOR, BXOR, BNOT) Distribuir campo de bits (BTD) . . . . . . . . . . . . . . . . . . . .. 292
Distribuir campo de bits con receptor (BTDT) . . . . . . . . .. 295
Borrar (CLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 298
Intercambiar byte (SWPB) . . . . . . . . . . . . . . . . . . . . . . . .. 300
Y a nivel de bits (AND) . . . . . . . . . . . . . . . . . . . . . . . . . .. 304
O a nivel de bits (OR) . . . . . . . . . . . . . . . . . . . . . . . . . . .. 307
O exclusivo a nivel de bits (XOR) . . . . . . . . . . . . . . . . . .. 310
NO a nivel de bits (NOT) . . . . . . . . . . . . . . . . . . . . . . . .. 314
Y booleano (BAND) . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 317
O booleano (BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 320
O exclusivo booleano (BXOR). . . . . . . . . . . . . . . . . . . . .. 323
NO booleano (BNOT) . . . . . . . . . . . . . . . . . . . . . . . . . . .. 326

Capítulo 8
Instrucciones de matriz Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
(archivo)/misceláneas Selección del modo de operación . . . . . . . . . . . . . . . . . . . 330
(FAL, FSC, COP, CPS, FLL, AVE, Modo Todos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
SRT, STD, SIZE) Modo numérico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Modo incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Aritmética y lógica de archivo (FAL) . . . . . . . . . . . . . . . . . 335
Expresiones FAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 345
Determine el orden de operación . . . . . . . . . . . . . . . . . 346
Búsqueda y comparación de archivos (FSC) . . . . . . . . . . . . 347
Expresiones FSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 353

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


Índice

Determine el orden de operación . . . . . . . . . . . . . . . . . 354


Use cadenas en una expresión . . . . . . . . . . . . . . . . . . . 355
Copiar archivo (COP) Copiar archivo síncrono (CPS) . . . . . 356
Llenar archivo (FLL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Promedio de archivo (AVE) . . . . . . . . . . . . . . . . . . . . . . . . 366
Clasificación de archivo (SRT) . . . . . . . . . . . . . . . . . . . . . . 371
Desviación estándar de archivo (STD) . . . . . . . . . . . . . . . . 376
Tamaño en elementos (SIZE). . . . . . . . . . . . . . . . . . . . . . . 381

Capítulo 9
Instrucciones de matriz Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
(archivo)/desplazamiento Desplazamiento de bits a la izquierda (BSL) . . . . . . . . . . . . 386
(BSL, BSR, FFL, FFU, LFL, LFU) Desplazamiento de bits a la derecha (BSR). . . . . . . . . . . . . 390
Carga FIFO (FFL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Descarga FIFO (FFU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Carga LIFO (LFL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Descarga LIFO (LFU). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412

Capítulo 10
Instrucciones de secuenciador Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
(SQI, SQO, SQL) Secuenciador de entrada (SQI) . . . . . . . . . . . . . . . . . . . . . 420
Introduzca un valor de máscara inmediato . . . . . . . . . . 421
Use SQI sin SQO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Secuenciador de salida (SQO) . . . . . . . . . . . . . . . . . . . . . . 424
Introduzca un valor de máscara inmediato . . . . . . . . . . 425
Uso de SQI con SQO . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Restablecimiento de la posición de SQO. . . . . . . . . . . . 427
Carga de secuenciador (SQL). . . . . . . . . . . . . . . . . . . . . . . 428

Capítulo 11
Instrucciones de control de Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
programa Saltar a etiqueta (JMP)
(JMP, LBL, JSR, RET, SBR, JXR, Etiqueta (LBL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
TND, MCR, UID, UIE, AFI, Salto a subrutina (JSR)
Subrutina (SBR) Retorno (RET) . . . . . . . . . . . . . . . . . . . . . 436
NOP, EOT, SFP, SFR, EVENT) Salto a rutina externa (JXR) . . . . . . . . . . . . . . . . . . . . . . . . 447
Fin temporal (TND). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
Restablecimiento de control maestro (MCR) . . . . . . . . . . . . 452
Inhabilitación de interrupción de usuario (UID)
Habilitación de interrupción de usuario (UIE) . . . . . . . . . . 454
Instrucción siempre falso (AFI) . . . . . . . . . . . . . . . . . . . . . 456
Sin operación (NOP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Fin de transición (EOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Pausa SFC (SFP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Restablecer SFC (SFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Activar tarea de evento (EVENT) . . . . . . . . . . . . . . . . . . . . 464
Determine programáticamente si una instrucción
EVENT activó una tarea . . . . . . . . . . . . . . . . . . . . . . . . 464

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


Índice

Capítulo 12
Instrucciones For/Break Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
(FOR, FOR...DO, BRK, EXIT, RET) For (FOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Interrumpir (BRK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Retornar (RET) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

Capítulo 13
Instrucciones especiales Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
(FBC, DDT, DTR, PID) Comparación de bits de archivo (FBC). . . . . . . . . . . . . . . . 478
Selección del modo de búsqueda . . . . . . . . . . . . . . . . . 480
Detección de diagnóstico (DDT) . . . . . . . . . . . . . . . . . . . . 486
Selección del modo de búsqueda . . . . . . . . . . . . . . . . . 488
Transición de datos (DTR). . . . . . . . . . . . . . . . . . . . . . . . . 494
Introduzca un valor de máscara inmediato . . . . . . . . . . 495
Proporcional integral derivativo (PID) . . . . . . . . . . . . . . . . 497
Configure una instrucción PID. . . . . . . . . . . . . . . . . . . . . . 502
Especifique el ajuste. . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Especifique la configuración. . . . . . . . . . . . . . . . . . . . . 504
Especificación de alarmas. . . . . . . . . . . . . . . . . . . . . . . 504
Especificación de escalado . . . . . . . . . . . . . . . . . . . . . . 505
Uso de instrucciones PID . . . . . . . . . . . . . . . . . . . . . . . . . 505
Bloqueo de acción integral y transferencia sin
perturbaciones de manual a automático . . . . . . . . . . . . 507
Temporización de la instrucción PID . . . . . . . . . . . . . . 508
Reinicio sin problemas . . . . . . . . . . . . . . . . . . . . . . . . . 512
Suavizado derivativo . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Establezca la banda muerta . . . . . . . . . . . . . . . . . . . . . 514
Use límite de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Ganancia anticipativa o polarización de salida . . . . . . . 515
Lazos en cascada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Control de relación . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Teoría de PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Proceso PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Proceso PID con lazos maestro/esclavo . . . . . . . . . . . . 517

Capítulo 14
Instrucciones trigonométricas Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
(SIN, COS, TAN, ASN, ASIN, ACS, Seno (SIN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
ACOS, ATN, ATAN) Coseno (COS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Tangente (TAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Arco seno (ASN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
Arco coseno (ACS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Arco tangente (ATN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

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


Índice

Capítulo 15
Instrucciones matemáticas Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
avanzadas Logaritmo natural (LN) . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
(LN, LOG, XPY) Logaritmo base 10 (LOG) . . . . . . . . . . . . . . . . . . . . . . . . . 543
X a la potencia de Y (XPY) . . . . . . . . . . . . . . . . . . . . . . . . 546

Capítulo 16
Instrucciones de conversión Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
matemática Grados (DEG). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
(DEG, RAD, TOD, FRD, TRN, Radianes (RAD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
TRUNC) Convertir a BCD (TOD). . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Convertir a entero (FRD) . . . . . . . . . . . . . . . . . . . . . . . . . . 559
Truncar (TRN). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561

Capítulo 17
Instrucciones para puerto serie Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
ASCII Ejecución de la instrucción. . . . . . . . . . . . . . . . . . . . . . 566
(ABL, ACB, ACL, AHL, ARD, ARL, Códigos de error ASCII . . . . . . . . . . . . . . . . . . . . . . . . 568
AWA, AWT) Tipos de datos de cadena. . . . . . . . . . . . . . . . . . . . . . . 569
Prueba ASCII para línea de búfer (ABL) . . . . . . . . . . . . . . . 570
Caracteres ASCII en el búfer (ACB) . . . . . . . . . . . . . . . . . . 573
Borrar ASCII búfer (ACL) . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Líneas de handshake ASCII (AHL) . . . . . . . . . . . . . . . . . . . 577
Lectura ASCII (ARD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
Lectura ASCII de línea (ARL) . . . . . . . . . . . . . . . . . . . . . . . 585
Escritura ASCII con anexo (AWA) . . . . . . . . . . . . . . . . . . . 589
Escritura ASCII (ASCII Write (AWT)) . . . . . . . . . . . . . . . . . 594

Capítulo 18
Instrucciones de cadena ASCII Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
(CONCAT, DELETE, FIND, INSERT, Tipos de datos de cadena. . . . . . . . . . . . . . . . . . . . . . . 600
MID) Concatenación de cadenas (CONCAT) . . . . . . . . . . . . . . . . 601
Eliminación de cadena (DELETE). . . . . . . . . . . . . . . . . . . . 603
Encontrar cadena (FIND). . . . . . . . . . . . . . . . . . . . . . . . . . 605
Insertar cadena (INSERT). . . . . . . . . . . . . . . . . . . . . . . . . . 607
Cadena central (MID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609

Capítulo 19
Instrucciones de conversión ASCII Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
(STOD, STOR, DTOS, RTOS, UPPER, Tipos de datos de cadena. . . . . . . . . . . . . . . . . . . . . . . 613
LOWER) Cadena en DINT (STOD). . . . . . . . . . . . . . . . . . . . . . . . . . 614
Cadena en REAL (STOR) . . . . . . . . . . . . . . . . . . . . . . . . . . 616
DINT en cadena (DTOS) . . . . . . . . . . . . . . . . . . . . . . . . . . 619
REAL en cadena (RTOS) . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Mayúsculas (UPPER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
Minúsculas (Lower Case (LOWER)) . . . . . . . . . . . . . . . . . . 625

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


Índice

Capítulo 20
Instrucciones de depuración Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
(BPT, TPT) Puntos de interrupción (BPT) . . . . . . . . . . . . . . . . . . . . . . 627
Formato de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
Puntos de rastreo (TPT). . . . . . . . . . . . . . . . . . . . . . . . . . . 631
Formato de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . 631

Apéndice A
Atributos comunes Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
Valores inmediatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
Conversiones de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
SINT o INT en DINT . . . . . . . . . . . . . . . . . . . . . . . . . . 637
Entero en REAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
DINT en SINT o INT . . . . . . . . . . . . . . . . . . . . . . . . . . 639
REAL en un número entero . . . . . . . . . . . . . . . . . . . . . 640

Apéndice B
Atributos de bloque de funciones Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641
Selección de elementos de bloques de funciones . . . . . . . . 641
Enclavamiento de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . 642
Orden de ejecución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
Resolución de un lazo . . . . . . . . . . . . . . . . . . . . . . . . . 645
Resolución del flujo de datos entre dos bloques . . . . . . 647
Creación de un retardo de escán . . . . . . . . . . . . . . . . . 647
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
Respuestas de bloque de funciones a condiciones de
overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
Modos de temporización . . . . . . . . . . . . . . . . . . . . . . . . . 649
Parámetros de instrucción comunes para modos de
temporización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
Descripción general de los modos de temporización . . . 653
Control de programa/operador . . . . . . . . . . . . . . . . . . . . . 654

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


Índice

Apéndice C
Programación de texto Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
estructurado Sintaxis del texto estructurado . . . . . . . . . . . . . . . . . . . . . . 659
Asignaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Especifique una asignación no retentiva . . . . . . . . . . . . 662
Asigne un carácter ASCII a una cadena . . . . . . . . . . . . . 663
Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
Use funciones y operadores aritméticos . . . . . . . . . . . . 665
Use operadores relacionales . . . . . . . . . . . . . . . . . . . . . 666
Use operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . 668
Use operadores a nivel de bits . . . . . . . . . . . . . . . . . . . 669
Determine el orden de ejecución . . . . . . . . . . . . . . . . . 669
Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
Construcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
Algunas palabras clave están reservadas para uso
futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
IF...THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
CASE...OF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
FOR…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
WHILE…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
REPEAT…UNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
Índice Códigos de caracteres ASCII . . . . . . . . . . . . . . . . . . . . . 697

Publicación 1756-RM003K-ES-P – Julio 2008 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 Página
Capítulo 1 – Se combinaron las instrucciones de alarma digital (ALMD) 29
y de alarma analógica (ALMA) en un capítulo. Se añadió información
sobre configuración, cadenas de mensajes y estados.
Capítulo 4 – Se añadieron nuevos atributos de objeto de controlador 180
GSV/SSV.
Capítulo 20 – Se añadieron instrucciones de depuración (PPT, TPT). 627

13Publicación 1756-RM003K-ES-P – Julio 2008 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 AWA 589 lógica de escalera
Prueba ASCII para línea de de relés Escritura ASCII con anexo de relés
búfer texto estructurado texto estructurado

ABS 277 lógica de escalera AWT 594 lógica de escalera


de relés Escritura ASCII de relés
Valor absoluto texto estructurado
texto estructurado
bloque de funciones
BAND 317 texto estructurado
Y booleano bloque de funciones
ACB 573 lógica de escalera
Caracteres ASCII en el búfer de relés
texto estructurado BNOT 326 texto estructurado
NO booleano bloque de funciones
ACL 575 lógica de escalera
Borrar ASCII búfer de relés BOR 320 texto estructurado
texto estructurado O booleano bloque de funciones

ACS 532 lógica de escalera BPT 627 lógica de escalera


Arco coseno de relés Puntos de interrupción de relés
bloque de
funciones, texto BRK 473 lógica de escalera
estructurado de relés
Interrupción
ADD 252 lógica de escalera
de relés BSL 386 lógica de escalera
Suma de relés
texto estructurado Desplazamiento de bit a la
bloque de funciones izquierda
AFI 456 lógica de escalera BSR 390 lógica de escalera
Instrucción siempre falso de relés Desplazamiento de bit a la de relés
derecha
AHL 577 lógica de escalera
Líneas de handshake ASCII de relés BTD 295 lógica de escalera
texto estructurado Distribuir campo de bits de relés
ALM control de texto estructurado
BTDT 295 texto estructurado
Alarma procesos bloque de funciones bloque de funciones
Distribuir campo de bits con
ALMA 42 lógica de escalera receptor
Alarma analógica de relés
texto estructurado BTR 144 lógica de escalera
bloque de funciones Mensaje de relés
texto estructurado
ALMD 30 lógica de escalera
de relés BTW 144 lógica de escalera
Alarma digital de relés
texto estructurado Mensaje
bloque de funciones texto estructurado

AND 304 lógica de escalera BXOR 323 texto estructurado


de relés O exclusivo booleano bloque de funciones
Y a nivel de bits
texto estructurado
bloque de funciones CC control de texto estructurado
Control coordinado procesos bloque de funciones
ARD 581 lógica de escalera
Lectura ASCII de relés CLR 295 lógica de escalera
texto estructurado Borrar de relés
texto estructurado
ARL 585 lógica de escalera
Lectura ASCII de línea de relés CMP 206 lógica de escalera
texto estructurado Comparar de relés
ASN 529 lógica de escalera CONCAT 601 lógica de escalera
Arco seno de relés Concatenar cadenas de relés
texto estructurado texto estructurado
bloque de funciones
COP 356 lógica de escalera
ATN 535 lógica de escalera Copiar archivo de relés
Arco tangente de relés texto estructurado
texto estructurado
bloque de funciones COS 523 lógica de escalera
Coseno de relés
AVE 366 lógica de escalera texto estructurado
Promedio de archivo de relés bloque de funciones

16 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 FAL 335 lógica de escalera
Copiar archivo síncrono de relés Aritmética y lógica de de relés
texto estructurado archivo
CPT 248 lógica de escalera
FBC 478 lógica de escalera
Calcular de relés de relés
Comparación de bits de
CTD 132 lógica de escalera archivo
Conteo regresivo de relés
FFL 394 lógica de escalera
Carga FIFO de relés
CTU 128 lógica de escalera
Conteo progresivo de relés
FFU 400 lógica de escalera
Descarga FIFO de relés
CTUD 136 texto estructurado
Conteo progresivo/regresivo bloque de funciones
FGEN control de texto estructurado
Generador de funciones procesos bloque de funciones
D2SD control de texto estructurado
Dispositivo discreto de procesos bloque de funciones
FIND 605 lógica de escalera
2 estados de relés
Encontrar cadena
texto estructurado
D3SD control de texto estructurado
Dispositivo discreto de procesos bloque de funciones FLL 362 lógica de escalera
3 estados Llenar archivo de relés

DDT 486 lógica de escalera FOR 470 lógica de escalera


Detección de diagnóstico de relés Instrucción FOR de relés

DEDT control de texto estructurado FRD 559 lógica de escalera


Tiempo muerto procesos bloque de funciones Convertir en entero de relés
bloque de funciones
DEG 553 lógica de escalera
Grados de relés FSC 347 lógica de escalera
texto estructurado Búsqueda y comparación de de relés
bloque de funciones archivos
DELETE 603 lógica de escalera GEQ 215 lógica de escalera
Eliminar cadena de relés Mayor o igual que de relés
texto estructurado texto estructurado
bloque de funciones
DERV control de texto estructurado
Derivada procesos bloque de funciones GRT 219 lógica de escalera
Mayor que de relés
DFF control de texto estructurado texto estructurado
Circuito multivibrador D procesos bloque de funciones bloque de funciones

DIV 261 lógica de escalera GSV 176 lógica de escalera


de relés Obtener valor del sistema de relés
Dividir texto estructurado
texto estructurado
bloque de funciones
HLL control de texto estructurado
DTOS 619 lógica de escalera Límite superior/inferior procesos bloque de funciones
DINT en cadena de relés
texto estructurado HPF control de texto estructurado
Filtro pasaaltos procesos bloque de funciones
DTR 494 lógica de escalera
Transición de datos de relés ICON 641 bloque de funciones
Conector de cable de entrada
EOT 458 lógica de escalera
Fin de transición de relés IMC control de texto estructurado
texto estructurado bloque de funciones
Control de modelos interno procesos
EQU 206 lógica de escalera
de relés INSERT 607 lógica de escalera
Igual a de relés
texto estructurado Insertar cadena
bloque de funciones texto estructurado

ESEL control de texto estructurado INTG control de texto estructurado


bloque de funciones Integrador procesos bloque de funciones
Selección mejorada procesos
EVENT 464 lógica de escalera IOT 201 lógica de escalera
de relés Salida inmediata de relés
Activar tarea de evento texto estructurado
texto estructurado

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


Ubicación de instrucciones

Instrucción: Ubicación: Lenguajes: Instrucción: Ubicación: Lenguajes:


IREF 641 bloque de funciones MAG control de lógica de escalera
Referencia de entrada Engranaje de eje de movimiento de relés
movimiento texto estructurado
JKFF control de texto estructurado
Circuito multivibrador JK procesos bloque de funciones MAHD control de lógica de escalera
Aplicar diagnósticos de movimiento de relés
JMP 434 lógica de escalera conexión de movimiento texto estructurado
Saltar a etiqueta de relés
MAH control de lógica de escalera
JSR 436 lógica de escalera Posición inicial de eje de movimiento de relés
Saltar a subrutina de relés texto estructurado
texto estructurado movimiento
bloque de funciones
MAJ control de lógica de escalera
JXR 447 lógica de escalera Impulso de eje de movimiento de relés
de relés movimiento texto estructurado
Saltar a subrutina externa
LBL 434 lógica de escalera MAM control de lógica de escalera
Etiqueta de relés Mover eje de movimiento movimiento de relés
texto estructurado
LDL2 control de texto estructurado
bloque de funciones MAOC control de lógica de escalera
Avance-retardo de segundo procesos de relés
orden
Leva de salida de brazo de movimiento
movimiento texto estructurado
LDLG control de texto estructurado
bloque de funciones MAPC control de lógica de escalera
Avance-retardo procesos de relés
Leva de posición de eje de movimiento
movimiento texto estructurado
LEQ 223 lógica de escalera
Menor o igual que de relés
texto estructurado MAR control de lógica de escalera
bloque de funciones Registro de brazo de movimiento de relés
movimiento texto estructurado
LES 227 lógica de escalera
Menor que de relés MASD control de lógica de escalera
texto estructurado de relés
bloque de funciones
Desactivación de eje de movimiento
movimiento texto estructurado
LFL 406 lógica de escalera
de relés MAS control de lógica de escalera
Carga LIFO de relés
Paro de eje de movimiento movimiento
texto estructurado
LFU 412 lógica de escalera
Descarga LIFO de relés
MASR control de lógica de escalera
Restablecer desactivación de movimiento de relés
LIM 231 lógica de escalera texto estructurado
Límite de relés eje de movimiento
bloque de funciones
MATC control de lógica de escalera
LN 540 lógica de escalera Leva de tiempo de eje de movimiento de relés
Logaritmo natural de relés movimiento texto estructurado
texto estructurado
bloque de funciones MAVE control de texto estructurado
Promedio móvil procesos bloque de funciones
LOG (1) lógica de escalera
Logaritmo base 10 de relés
texto estructurado MAW control de lógica de escalera
Observar brazo de movimiento de relés
bloque de funciones texto estructurado
movimiento
LOWER 625 lógica de escalera
Minúsculas de relés MAXC control de texto estructurado
texto estructurado Captura máxima procesos bloque de funciones

LPF control de texto estructurado MCCD control de lógica de escalera


Filtro pasabajos procesos bloque de funciones de relés
Dinámica de cambio movimiento
coordinado de movimiento texto estructurado
MAAT control de lógica de escalera
Aplicar ajuste a eje de movimiento de relés MCCM control de lógica de escalera
movimiento texto estructurado de relés
Movimiento circular movimiento
coordinado de movimiento texto estructurado
MAFR control de lógica de escalera
Restablecimiento de fallo de movimiento de relés MCCP control de lógica de escalera
eje de movimiento texto estructurado de relés
Perfil de leva de cálculo de movimiento
movimiento texto estructurado

18 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 lógica de escalera MGSR control de lógica de escalera
Dinámica de cambio de movimiento de relés Restablecimiento de movimiento de relés
movimiento texto estructurado desactivación de grupo de texto estructurado
movimiento
MCLM control de lógica de escalera
Movimiento lineal de movimiento de relés MID 609 lógica de escalera
coordenadas de movimiento texto estructurado Cadena central de relés
texto estructurado
MCR 452 lógica de escalera
Restablecimiento de control de relés MINC control de texto estructurado
Captura mínima procesos bloque de funciones
maestro
MCSD control de lógica de escalera IMMC control de texto estructurado
de relés Control multivariable procesos bloque de funciones
Desactivación de movimiento
coordenadas de movimiento texto estructurado modular

MCS control de lógica de escalera MOD 266 lógica de escalera


de relés Módulo de relés
Paro de coordenadas de movimiento texto estructurado
movimiento texto estructurado
bloque de funciones
MCSR control de lógica de escalera MOV 283 lógica de escalera
Restablecimiento de movimiento de relés Mover de relés
desactivación de texto estructurado
coordenadas de movimiento MRAT control de lógica de escalera
Ajuste de eje de movimiento movimiento de relés
MCT control de lógica de escalera de marcha texto estructurado
Transformada de movimiento de relés
coordenadas de movimiento texto estructurado MRHD control de lógica de escalera
Diagnósticos de conexión de movimiento de relés
MCTP control de lógica de escalera movimiento de marcha texto estructurado
Posición de transformada de movimiento de relés
cálculo de movimiento texto estructurado MRP control de lógica de escalera
Posición de redefinir movimiento de relés
MDF control de lógica de escalera texto estructurado
de relés movimiento
Variador directo de movimiento
movimiento desactivado texto estructurado
MSF control de lógica de escalera
Servo de movimiento movimiento de relés
MDOC control de lógica de escalera texto estructurado
de relés desactivado
Leva de salida de movimiento
desactivación de movimiento texto estructurado
MSG 144 lógica de escalera
Mensaje de relés
MDO control de lógica de escalera texto estructurado
Variador directo de movimiento de relés
movimiento activado texto estructurado MSO control de lógica de escalera
Servo de movimiento movimiento de relés
MDR control de lógica de escalera activado texto estructurado
Registro de desarme de movimiento de relés
movimiento texto estructurado MSTD control de texto estructurado
Desviación estándar de procesos bloque de funciones
MDW control de lógica de escalera movimiento
Observar desarme de movimiento de relés
movimiento texto estructurado MUL 258 lógica de escalera
Multiplicar de relés
MEQ 237 lógica de escalera texto estructurado
Máscara igual que de relés bloque de funciones
texto estructurado
bloque de funciones MUX control de bloque de funciones
Multiplexor procesos
MGSD control de lógica de escalera
Desactivación de grupo de movimiento de relés MVM 285 lógica de escalera
movimiento texto estructurado Mover con máscara de relés

MGS control de lógica de escalera MVMT 288 texto estructurado


Paro de grupo de movimiento movimiento de relés Mover con máscara con bloque de funciones
texto estructurado receptor
MGSP control de lógica de escalera NEG 274 lógica de escalera
Posición de estroboscopio de movimiento de relés Cambiar signo de relés
grupo de movimiento texto estructurado texto estructurado
bloque de funciones

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


Ubicación de instrucciones

Instrucción: Ubicación: Lenguajes: Instrucción: Ubicación: Lenguajes:


NEQ 242 lógica de escalera PFL PhaseManager lógica de escalera
Diferente de de relés Fallo de fase de equipo de relés
texto estructurado texto estructurado
bloque de funciones
PIDE control de texto estructurado
NOP 457 lógica de escalera PID mejorado procesos bloque de funciones
Sin operación de relés
PID 497 lógica de escalera
NOT 314 lógica de escalera Proporcional integral de relés
NO a nivel de bits de relés texto estructurado
texto estructurado derivativo
bloque de funciones
PI control de texto estructurado
Proporcional + Integral procesos bloque de funciones
NTCH control de texto estructurado
Filtro de muesca procesos bloque de funciones
PMUL control de texto estructurado
Multiplicador de impulsos procesos bloque de funciones
OCON 641 bloque de funciones
Conector de cable de salida
POSP control de texto estructurado
ONS 88 lógica de escalera Proporcional de posición procesos bloque de funciones
Un impulso de relés
POVR PhaseManager lógica de escalera
OR 307 lógica de escalera Comando de anulación de de relés
O a nivel de bits de relés fase de equipo texto estructurado
texto estructurado
bloque de funciones PPD PhaseManager lógica de escalera
Fase de equipo en pausa de relés
OREF 641 bloque de funciones texto estructurado
Referencia de salida
PRNP PhaseManager lógica de escalera
OSFI 99 texto estructurado Parámetros de nueva fase de de relés
Un impulso en flanco bloque de funciones equipo texto estructurado
descendente con entrada
PSC PhaseManager lógica de escalera
OSF 94 lógica de escalera Estado de fase completo de relés
Un impulso en flanco de relés texto estructurado
descendente lógica de escalera
PXRQ PhaseManager
Solicitud externa de fase de de relés
OSRI 91 texto estructurado
texto estructurado
Un impulso en flanco bloque de funciones equipo
ascendente con entrada lógica de escalera
RAD 553
Radianes de relés
OSR 91 lógica de escalera
texto estructurado
Un impulso en flanco de relés
bloque de funciones
ascendente
RESD control de texto estructurado
OTE 82 lógica de escalera Restablecimiento dominante procesos bloque de funciones
Activación de salida de relés
RES 141 lógica de escalera
OTL 84 lógica de escalera Restablecer de relés
Enclavamiento de salida de relés
RET 436 y 474 lógica de escalera
OTU 86 lógica de escalera Retorno de relés
Desenclavamiento de salida de relés texto estructurado
bloque de funciones
PATT PhaseManager lógica de escalera
Conectar a fase de equipo de relés RLIM control de texto estructurado
texto estructurado Limitador de régimen procesos bloque de funciones
PCLF PhaseManager lógica de escalera RMPS control de texto estructurado
Fallo de borrado de fase de de relés bloque de funciones
texto estructurado Rampa y estabilización procesos
equipo
RTO 112 lógica de escalera
PCMD PhaseManager lógica de escalera Temporizador retentivo de relés
Comando de fase de equipo de relés
texto estructurado activado

PDET PhaseManager lógica de escalera RTOR 124 texto estructurado


de relés Temporizador retentivo bloque de funciones
Desconectar de fase de
equipo texto estructurado activado con
restablecimiento

20 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 SSV 176 lógica de escalera
REAL en cadena de relés Establecer valor del sistema de relés
texto estructurado texto estructurado
SBR 436 lógica de escalera STD 376 lógica de escalera
Subrutina de relés Desviación estándar de de relés
texto estructurado archivo
bloque de funciones
STOD 614 lógica de escalera
SCL control de texto estructurado de relés
bloque de funciones Cadena en DINT
Escalar procesos texto estructurado
SCRV control de texto estructurado STOR 616 lógica de escalera
Curva en S procesos bloque de funciones Cadena en REAL de relés
texto estructurado
SEL control de bloque de funciones
Seleccionar procesos SUB 255 lógica de escalera
Restar de relés
texto estructurado
SETD control de texto estructurado
bloque de funciones
Establecer dominante procesos bloque de funciones
SWPB 300 lógica de escalera
SFP 460 lógica de escalera Intercambiar byte de relés
Pausa SFC de relés texto estructurado
texto estructurado
TAN 526 lógica de escalera
SFR 462 lógica de escalera Tangente de relés
Restablecer SFC de relés texto estructurado
texto estructurado bloque de funciones
SIN 520 lógica de escalera TND 450 lógica de escalera
Seno de relés Fin temporal de relés
texto estructurado
bloque de funciones TOD 556 lógica de escalera
Convertir en BCD de relés
SIZE 381 lógica de escalera bloque de funciones
Tamaño en elementos de relés
texto estructurado TOFR 120 texto estructurado
Temporizador de retardo a la bloque de funciones
SNEG control de texto estructurado
Cambiar signo seleccionado procesos bloque de funciones desconexión con
restablecimiento
SOC control de texto estructurado
bloque de funciones TOF 108 lógica de escalera
Controlador de segundo procesos de relés
orden Temporizador de retardo a la
desconexión
SQI 420 lógica de escalera
Secuenciador de entrada de relés TONR 116 texto estructurado
Temporizador de retardo a la bloque de funciones
SQL 428 lógica de escalera conexión con
Carga de secuenciador de relés restablecimiento
SQO 424 lógica de escalera TON 104 lógica de escalera
Secuenciador de salida de relés Temporizador de retardo a la de relés
conexión
SQR 270 lógica de escalera
Raíz cuadrada de relés TOT control de texto estructurado
bloque de funciones bloque de funciones
Totalizador procesos
SQRT 270 texto estructurado
Raíz cuadrada TPT 631 lógica de escalera
Puntos de rastreo de relés
SRT 371 lógica de escalera
Clasificación de archivo de relés TRN 561 lógica de escalera
texto estructurado Truncar de relés
bloque de funciones
SRTP control de texto estructurado
Dividir rango de tiempo procesos bloque de funciones TRUNC 561 texto estructurado
proporcional Truncar

SSUM control de texto estructurado UID 454 lógica de escalera


bloque de funciones Inhabilitación de interrupción de relés
Sumador seleccionado procesos texto estructurado
de usuario

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


Ubicación de instrucciones

Instrucción: Ubicación: Lenguajes:


UIE 454 lógica de escalera
Habilitación de interrupción de relés
de usuario texto estructurado

UPDN control de texto estructurado


Acumulador progresivo/ procesos bloque de funciones
regresivo
UPPER 623 lógica de escalera
Mayúsculas de relés
texto estructurado
XIC 78 lógica de escalera
Examinar si está cerrado de relés

XIO 80 lógica de escalera


Examinar si está abierto de relés

XOR 310 lógica de escalera


O exclusivo a nivel de bits de relés
texto estructurado
bloque de funciones
XPY 546 lógica de escalera
X a la potencia de Y de relés
texto estructurado
bloque de funciones
(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 Manual de referencia de instrucciones generales de controladores Logix5000,
secuenciales publicación 1756-RM003
Usted se encuentra aquí

Programar el controlador para aplicaciones Logix5000 Controllers Process Control and Drives Instructions Reference Manual,
de procesos o de variadores publicación 1756-RM006
Programar el controlador para aplicaciones Logix5000 Controllers Motion Instruction Set Reference Manual, publicación
de control de movimiento 1756-RM007
Programar el controlador para usar fases de PhaseManager User Manual, publicación LOGIX-UM001
equipo
Importar un archivo de texto o tags en un Logix5000 Controllers Import/Export Reference Manual, publicación 1756-RM084
proyecto
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 Este documento proporciona al programador los detalles acerca de
cada una de las instrucciones disponibles para un controlador basado
manual 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 define si la instrucción afecta o no los indicadores de estado aritmético
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™ Prefacio

Información común para El conjunto de instrucciones Logix5000 tiene algunos atributos


comunes:
todas las instrucciones
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 El apéndice Atributos de bloque de funciones:
funciones
• control del programa y del operador
• modos de temporización

Convenciones y términos Establecer y borrar


relacionados
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 instrucción de salida

condición condición
de entrada de salida
de renglón 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 La primera ejecución de instrucción se refiere a la primera vez que la instrucción se ejecuta con una nueva
instrucción 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 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.

Si desea Use esta instrucción Disponible en estos lenguajes Vea la página


detectar alarmas basadas en condiciones ALMD lógica de escalera de relés 30
booleanas (verdadero/falso)
texto estructurado

bloque de funciones
detectar alarmas en base al nivel o velocidad ALMA lógica de escalera de relés 42
de cambio de un valor
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 Texto estructurado solamente.
Inmediato
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 El valor se copia a ConfProg (ProgAck) cuando se ejecuta la
Inmediato instrucción. En la transición de borrado a establecido, confirma
la alarma (si se requiere confirmación).
ProgReset BOOL Tag El valor se copia a RestabProg (ProgReset) cuando se ejecuta
Inmediato la instrucción. En la transición de borrado a establecido, borra
la alarma (si se requiere).
ProgDisable BOOL Tag El valor se copia a InhabProg (ProgDisable) cuando se ejecuta
Inmediato la instrucción. Cuando se establece, inhabilita la alarma
(no anula los comandos de habilitación).
ProgEnable BOOL Tag El valor se copia a HabilitProg (ProgEnable) cuando se ejecuta
Inmediato 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, Los operandos son iguales a los de la instrucción ALMD de lógica
ProgEnable); de escalera de relés, con algunas excepciones como se indicó
anteriormente.

30 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 Tipo de datos Descripción


entrada
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 Tipo de datos Descripción


entrada
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 Tipo de datos Descripción


entrada
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 Tipo de datos Descripción


entrada
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 BOOL 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 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
Latched = Falso
= False

En== Condition,
In Condición,MinDurationACC
MinDurationACC >=
>= Min DurationPRE
MinDurationPRE
InAlarm = Falso InAlarm = Verdadero
InAlarm = False InAlarm = True
Acked = Verdadero Acked = Falso
Acked = True ón n Acked = False
dici itio
!= C=onCond
In In ! EE
nPPRR
u ratio
Ack11 D 1
Ack Min Ack
Ack1
AC
C C >=
C
nA
ttioion In
uurraa I!n= !C
M
MininDD =oCnod
iioónn,, nitdioicn
nd itc ión
InAlarm = Falso Co
== C
InAlarm = Verdadero
InAlarm = False IInn InAlarm = True
Acked = Verdadero
Acked==False
Acked Falso Acked = True

Enclavado
Latched = Verdadero
= True

In== Condition,
In Condición, MinDurationACC
MinDurationACC >=
>= MinDurationPRE
MinDurationPRE
InAlarm = Falso InAlarm = Verdadero
InAlarm = False InAlarm = True
Acked = Verdadero
Acked = True Acked == Falso
Acked False
2
In != In != Condición,
Condition, ResetReset
2

InIn! 1
=!=CC Ack
Ack1
onodnd
itiioció
n,nR,
eRsees 2 2
tet

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
software, RSView5000, 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
software, RSView5000, 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 >=
MinDurationPRE
In = Condition, MinDurationACC >= MinDurationPRE
InAlarm = Falso
InAlarm = False 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
InAlarm == False
Falso InAlarm = Verdadero
InAlarm = True Acked= =True
Acked
Verdadero
1
In In
!=!=Condición, Resset
Condition, Reset1

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)
software, RSView 5000, 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 La condición de salida de renglón se establece como falsa.
renglón es 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 La condición de salida de renglón se establece como
renglón es verdadera 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 La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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 Todas las peticiones del operador, sellos de hora e
indicadores de entrega se borran. 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 Ninguna. Ninguna.
instrucción
EnableIn se borra La instrucción no se ejecuta. La instrucción se ejecuta.

EnableOut se borra. EnableOut siempre se establece.


EnableIn se establece La instrucción se ejecuta. La instrucción se ejecuta.

EnableOut se establece. EnableOut siempre se establece.


post-escán Ninguna. Ninguna.

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 Tag El valor se copia a In cuando se ejecuta la instrucción. El valor
DINT inmediato de entrada de alarma, que se compara con los límites de
INT alarma para detectar las condiciones de la alarma.
SINT
ProgAckAll BOOL Tag El valor se copia a ProgAckAll cuando se ejecuta la
Inmediato instrucción. En la transición de borrado a establecido, confirma
todas las condiciones de alarma que requieren confirmación.
ProgDisable BOOL Tag El valor se copia a ProgDisable cuando se ejecuta la
Inmediato instrucción. Cuando se establece, inhabilita la alarma
(no anula los comandos de habilitación).

ProgEnable BOOL Tag El valor se copia a ProgEnable cuando se ejecuta la


Inmediato 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

Operando Tipo Formato Descripción


tag ALMA ALARM_ANALOG Estructura Estructura ALMA

Publicación 1756-RM003K-ES-P – Julio 2008 43


Capítulo 1 Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)

Estructura ALARM_ANALOG

Parámetro de Tipo de datos Descripción


entrada
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 Tipo de datos Descripción


entrada
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 Tipo de datos Descripción


entrada
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) Capítulo 1

Parámetro de Tipo de datos Descripción


entrada
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 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 Tipo de datos Descripción


entrada
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 Tipo de datos Descripción


entrada
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) 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ó.

52 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 BOOL La configuración de límite de alarma no es válida (por ejemplo, LLimit < LLLimit). Si no es
(Status.3) 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 BOOL Límite de velocidad de cambio positiva no válido. Si no es válido, la instrucción usa
(Status.5) ROCPosLimit = 0.0, lo cual inhabilita la detección de velocidad de cambio positiva.
ROCNegLimitInv BOOL Límite de velocidad de cambio negativa no válido. Si no es válido, la instrucción usa
(Status.6) 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,
HLimit,MinDurationACC >=MinDurationPRE
MinDurationACC >= MinDurationPRE InIn>=>=HHLimit,
HHLimit,MinDurationACC >=MinDurationPRE
MinDurationACC >= MinDurationPRE
HinAlarm==False
HInAlarm False HinAlarm
HInAlarm = True
= True HHinAlarm
HHInAlarm == False
False HHinAlarm = True
HHInAlarm = True
HAcked==True
True HAcked
HAcked = False HHAcked = True
True HHAcked
HHAcked = False
HAcked
nd) HHAcked =
ndd) ) = False
dbaand) dbbaan
InIn<<
((HHLLi Deaadb
- e
IInn<<
(H(HHH -- DD
eeaad
mitit - D LLim m it
it
PRE
m (HHLliim ERE HHLLiim
imiit E
t - Dee PnRP
imiitt PoRn
Ack1 1 aaddb InIn<< ( iotnio
arta 1 1 -- DDe < ((HH ranti
rautio 1
Ack baannd nuDru
iniD
Ack1
Ack Ack1
Ack
eaadd
bbaann IInn Di uD
n Ack1
Ack
d)) M dd)) MM in
==M >=>=
CC>> ACCC
AACC AnC
ttioionn rtaiotino
uurraa ura
DDu
Mi n
inD
Minin
M
itit,, M miitt,,
HLLi
im
HLLim
im HinAlarm = True HHinAlarm = False HHinAlarm
HinAlarm = False
HInAlarm = False
>==H HInAlarm = True HHInAlarm = False ==H HHInAlarm = True
= True
HAcked
HAcked = False
= False InIn> HAcked = True
HAcked = True HHAcked
HHAcked == False
False Inn
I >
>
HHAcked
HHAcked == True
True

1 La condición de alarma H puede confirmarse de diferentes maneras: HProgAck, HOperAck, 1 La condición de alarma HH puede confirmarse de diferentes maneras: HHProgAck, HHOperAck,
1 1
H alarm condition can be acked by several different ways: HProgAck, HOperAck, ProgAckAll, OperAckAll, HH alarm condition can be acked by several different ways: HHProgAck, HHOperAck, ProgAckAll, OperAckAll,
ProgAckAll, OperAckAll,
clients (RSLogix clientes
5000 software, (software
RSView RSLogix 5000, software RSView).
software). ProgAckAll, OperAckAll,
clients (RSLogix clientes
5000 software, (software
RSView RSLogix 5000, software RSView).
software).

InIn>=<=LLimit,
LLimit,MinDurationACC >=MinDurationPRE
MinDurationACC >= MinDurationPRE InIn>=<=LLLimit,
LLLimit,MinDurationACC >= MinDurationPRE
MinDurationACC >= MinDurationPRE
LinAlarm LinAlarm = True LLinAlarm = False
False LLinAlarm = True
LInAlarm == False
False LInAlarm = True LLInAlarm = LLInAlarm = True
LAcked = True
True LAcked = False
False LAcked ==True ) LAcked ==False
nd))
LAcked = LAcked = LLAcked True LLAcked False
dbaand d b anndd)
a
IInn <> Deaadb IInn < a
Deead
b
(LLLLiim
miitt + im it+- De > ((LL
LLLLim im it +- D
it RE
PREE (LLLLLLim
it
- De (LLLlim PnR
imiitt - oPnRPE
Ack1 adba InIn <> ( atiotino 1 1 +D Deead IInn >< ( uDrua
rtioatni Ack1
uurar Ack1 Ack1 adbba Ack1
Ack1 ndd)
) M ininDD Ack Ack anndd) MM iniDn
>> =
= M ) >==
CCC>
ACCCC
A ionnAAC
tiioonn urraattio
ninDD
uurraat inDDu
Mi Min
it,, M
LinAlarm = False it,itM
Lim
Lim
,
LinAlarm = True LLinAlarm = False LLLimimit
LLinAlarm = True
LInAlarm = False =<=LL LInAlarm = True LLInAlarm = False ==LLL LLInAlarm = True
LAcked
LAcked = False
= False InI>n LAcked
LAcked = True
= True LAcked
LLAcked==False
False InIn>< LAcked ==True
LLAcked True

1 La condición de alarma H puede confirmarse de diferentes maneras: LProgAck, LOperAck, 11


1
L alarm condition can be acked by several different ways: LProgAck, LOperAck, ProgAckAll, OperAckAll, La
LLcondición de alarma
alarm condition LLacked
can be puedebyconfirmarse de diferentes
several different maneras:LLOperAck,
ways: LLProgAck, LLProgAck,ProgAckAll,
LLOperAck,OperAckAll,
ProgAckAll,
ProgAckAll, OperAckAll,
clients (RSLogix clientes
5000 software, (software
RSView RSLogix 5000, software RSView).
software). OperAckAll, clientes
clients (RSLogix 5000(software RSLogixsoftware).
software, RSView 5000, software RSView).

Donde se recolecta una nueva muestra en el


In(CurrentSample)
In(Current Sample) -- In(Previou
In(PreviousSample)
sSample) Where a new sample is collected on the
ROC ==
ROC siguiente escán después de que haya transcurrido
ROCPeriod next scan after the ROCPeriod has elapsed.
ROCPeriod ROCPeriod

ROC <=
ROC >= RocPosLimit
RocPosLimit ROC
ROC <=
<= -RocNegLimit
-RocNegLimit
RocPosInAlarm = False
RocPosInAlarm = False RocPosInAlarm
RocPosInAlarm == True
True RocNegInAlarm
RocNegInAlarm == False
False RocNegInAlarm = True
RocNegInAlarm = True
RocPosAcked
RocPosAcked = True
= True RocPosAcked = False
RocPosAcked = False RocNegAcked
RocNegAcked == True
True RocNegAcked
RocNegAcked = False
it
Limit imitit
Lim
RROOC cP PoossLim RROOC occN NeeggL
C<<
RRooc < RRooc C<>-
R < --RRo
ROOCC
< -Rooc
cPPoo cNNeg RO C>
OC
Ack11 ssLLim R
Ack11 Ack1 1 egLLi R Ack1 1
Ack imiitt Ack Ack miitt
im Ack

it
miitt Limit
ssLLiim NegeLg
im
cPPoo RooccN
Rooc -
<>== R <==-R
RocPosInAlarm = False
RocPosInAlarm = False RO C
C RocPosInAlarm
RocPosInAlarm == True
True RocNegInAlarm
RocNegInAlarm == False
False
RRO
OCC< RocNegInAlarm
RocNegInAlarm == True
True
RocPosAcked
RocPosAcked = False RocPosAcked = True
True RocNegAcked
RocNegAcked == False
False RocNegAcked
RocNegAcked == True
True

1 1
1 La condición de alarma ROCPos puede confirmarse de diferentes maneras: RocPosProgAck, RocPosOperAck, La
1
condición de alarma ROCNeg puede confirmarse de diferentes maneras: RocNegProgAck, RocNegOperAck,
ROCPos alarm condition can be acked by several different ways: RocPosProgAck, RocPosOperAck, ProgAckAll, ROCNeg alarm condition can be acked by several different ways: RocNegProgAck, RocNegOperAck, ProgAckAll,
l, ProgAkkAll, ,
ProgAckAll, OperAckAll,
OperAckAll, clients clientes
(RSLogix (softwareRSView
5000 software, RSLogixsoftware).
5000, software RSView). OperAckAll,OperAckAll, clientes
clients (RSLogix 5000(software
software, RSLogix 5000, software RSView).
RSView software).

54 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 >=
In >= HLimit,MinDurationACC
HLimit, MinDurationACC >=
>= MinDurationPRE
MinDurationPRE
HinAlarm = False HinAlarm = True HAcked = True
HInAlarm = False HInAlarm = True HAcked = True

In In < (HLimit- -Deadband)


< (HLimit Deadband)

In In
<=>=LLimit,
LLLimit,MinDurationACC
MinDurationACC >=
>= MinDurationPRE
MinDurationPRE
LinAlarm = False LinAlarm = True LAcked = True
LInAlarm = False LInAlarm = True LAcked = True

InIn> <(LLimit
(LLimit +- Deadband)
Deadband)

In >=
In >= HHLimit,MinDurationACC
HHLimit, MinDurationACC >=
>=MinDurationPRE
MinDurationPRE
HHinAlarm == False
HHInAlarm False HHinAlarm ==True
HHInAlarm True HHAcked ==True
HHAcked True

InIn< <(HHLimit
(HHLimit -- Deadband)
Deadband)

In >=
In <= LLLimit,MinDurationACC
LLLimit, MinDurationACC >=
>=MinDurationPRE
MinDurationPRE
LLinAlarm = False LLinAlarm = True LLAcked = True
LLInAlarm = False LLInAlarm = True LLAcked = True

In In < (LLLimit+- Deadband)


> (LLLimit Deadband)

In(CurrentSample) Donde
Wheresearecolecta una nueva muestraonenthe
el siguiente
In(Current Sample) -- In(PreviousSample)
In(PreviousSample) new sample is collected
ROC= =
ROC escán después
next scan de the
after queROCPeriod
haya transcurrido ROCPeriod
has elapsed.
ROCPeriod
ROCPeriod

ROC>=>= ROCPosLimit
ROC ROCPosLimit
RocPosInAlarm ==False
RocPosInAlarm False RocPosInAlarm ==True
RocPosInAlarm True RocPosAcked
RocPosAcked= True
= True

ROC<> ROCPosLimit
ROC ROCPosLimit

ROC<=
ROC >=-ROCNegLimit
-ROCNegLimit
RocNegInAlarm == False
RocNegInAlarm False RocNegInAlarm ==True
RocNegInAlarm True RocNegAcked
RocNegAcked= True
= True

ROC>> -ROCNegLimit
ROC -ROCNegLimit

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 La instrucción no se ejecuta.
renglón es falsa
EnableOut se borra.
condición de entrada de La instrucción se ejecuta.
renglón es verdadera
EnableOut se establece.
post-escán La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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 Todas las peticiones del operador, sellos de hora e
indicadores de entrega se borran. indicadores de entrega se borran.

Todos los parámetros xInAlarm se borran y se Todos los parámetros xInAlarm se borran y se
confirman todas las condiciones de alarma. confirman todas las condiciones de alarma.
primer escán de instrucción Ninguna. Ninguna.
primera ejecución de Ninguna. Ninguna.
instrucción
EnableIn se borra La instrucción no se ejecuta. La instrucción se ejecuta.

EnableOut se borra. EnableOut siempre se establece.


EnableIn se establece La instrucción se ejecuta. La instrucción se ejecuta.

EnableOut se establece. EnableOut siempre se establece.


post-escán Ninguna. Ninguna.

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 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
de alarma 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) Capítulo 1

Introduzca el texto del Introduzca el texto de mensaje apropiado que se mostrará cuando
una condición de alarma está activa (InAlarm). Para una instrucción
mensaje de alarma 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 /*N:5 %Tag1 NOFILL DP:0*/
evento de alarma.

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) /*N:9 %InputValue NOFILL DP:3*/
3 dígitos después del decimal, relleno con ceros a la
izquierda.
Valor REAL, 8 dígitos (incluye decimal) 4 dígitos después /*N:8 %Tag3 ZEROFILL DP:4*/
del decimal, relleno con ceros a la izquierda.
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 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 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.

68 Publicación 1756-RM003K-ES-P – Julio 2008


Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA) Capítulo 1

Almacenamiento de Para recibir mensajes de alarma basados en el controlador, los clientes


de alarmas (como el servidor RSLinx Enterprise) deben establecer una
alarmas en el búfer 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 Cada instrucción de alarma tiene una estructura de alarma que
almacena información de configuración y ejecución de alarma. La
a información de alarmas 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 Elementos de estructura de Consideraciones


alarmas
Programa de usuario • ProgAck Use la lógica del controlador para acceder programáticamente a
• ProgReset elementos del sistema de alarmas. Por ejemplo, el programa de
control puede determinar si se inhabilitará una serie de alarmas
• ProgSuppress relacionadas con una sola causa raíz. Por ejemplo, el programa de
• ProgDisable control podría inhabilitar una instrucción de alarma,
MyDigitalAlarm de tipo de datos ALARM_DIGITAL, mediante
• ProgEnable
acceso al miembro de tag MyDigitalAlarm.ProgDisable.
HMI personalizado • OperAck Cree una plantilla de HMI personalizada para acceder a elementos
• OperReset del sistema de alarmas. Por ejemplo, si el operador necesita retirar
una herramienta, en lugar de inhabilitar manualmente o suprimir
• OperSuppress alarmas individualmente desde las pantallas de alarmas, el
• OperDisable operador puede presionar una tecla de inhabilitación que brinda
acceso a un tag MyDigitalAlarm.OperDisable.
• OperEnable
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 Suprima alarmas para retirar las alarmas cuya existencia usted conoce
desde el HMI, pero mantenga las alarmas activas. Esto le permitirá
alarmas 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.

Publicación 1756-RM003K-ES-P – Julio 2008 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 Las alarmas basadas en el controlador procesan entradas provenientes


de dos fuentes.
basada en el controlador
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 Alarma analógica
(ALMD) (ALMA)
Sin cambio de estado Renglón 8 μs 17 μs
de alarma falso
Renglón 8 μs 60 μs
verdadero
Cambio de estado de Renglón 35 μs 17 μs
alarma falso
Renglón 35 μs 126 μs
verdadero

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 Use las instrucciones de bits (tipo relé) para monitorear y controlar el
estado de los bits.

Si desea Use esta instrucción Disponible en estos lenguajes Vea la página


habilitar salidas cuando se establece un bit. XIC lógica de escalera de relés 78
texto estructurado(1)
habilitar salidas cuando se borra un bit. XIO lógica de escalera de relés 80
(1)
texto estructurado
establecer un bit OTE lógica de escalera de relés 82
texto estructurado(1)
establecer un bit (retentivo) OTL lógica de escalera de relés 84
(1)
texto estructurado
borrar un bit (retentivo) OTU lógica de escalera de relés 86
(1)
texto estructurado
habilitar salidas por un escán cada vez que el ONS lógica de escalera de relés 88
renglón se hace verdadero (1)
texto estructurado
establecer un bit por un escán cada vez que el OSR lógica de escalera de relés 91
renglón se hace verdadero
establecer un bit por un escán cada vez que el OSF lógica de escalera de relés 94
renglón se hace falso
establecer un bit por un escán cada vez que el OSRI texto estructurado 96
bit de entrada se establece en el bloque de bloque de funciones
funciones
establecer un bit por un escán cada vez que el OSFI texto estructurado 99
bit de entrada se borra en el bloque de bloque de funciones
funciones
(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 La instrucción XIC examina el bit de datos para determinar si está
establecido.
(XIC)
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

bit de datos = 0 la condición de salida de


examinar bit renglón se establece como
de datos falsa

bit de datos = 1

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.

78 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 La instrucción XIO examina el bit de datos para determinar si está
borrado.
(XIO)
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

bit de datos = 0 la condición de salida de


examinar bit de renglón se establece como
datos verdadera

bit de datos = 1

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.

80 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 La instrucción OTL establece (enclava) el bit de datos.


(OTL)
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 La instrucción OTU borra (desenclava) el bit de datos.


salida (OTU)
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

bit de
almacenamiento = 0 el bit de almacenamiento
examinar bit de se establece
almacenamiento
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 fin

post-escán 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) Capítulo 2

Un impulso en flanco La instrucción OSR establece o borra el bit de salida, dependiendo del
estado del bit de almacenamiento.
ascendente (OSR)
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 la instrucción se restablece durante


se ejecuta 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

bit de el bit de almacenamiento se


almacenamiento = 0 establece
examinar bit de
almacenamiento
el bit de salida se establece
la condición de salida de
renglón se establece como
bit de verdadera
almacenamiento = 1

el bit de almacenamiento
permanece establecido

el bit de salida se borra la


condición de salida de
renglón se establece como
verdadera fin

post-escán 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 La instrucción OSF establece o borra el bit de salida dependiendo del
estado del bit de almacenamiento.
descendente (OSF)
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 la instrucción se restablece


se ejecuta 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

bit de el bit de almacenamiento


almacenamiento = 0 permanece borrado
examinar bit de
almacenamiento
el bit de salida se borra la
condición de salida de
renglón se establece como
falsa
bit de
almacenamiento = 1

el bit de almacenamiento
se borra

el bit de salida se establece


la condición de salida de
renglón se establece como fin
falsa

condición de entrada de renglón es verdadera 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 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.
ascendente con entrada
(OSRI) 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 Tipo de datos Descripción


entrada
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 la instrucción se restablece durante


se ejecuta 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 InputBit n-1 se establece. InputBit n-1 se establece.
instrucción
EnableIn se borra EnableOut se borra, la instrucción no efectúa n. a.
ninguna operación y las salidas no se actualizan.
EnableIn se establece En una transición de borrado a establecido de En una transición de borrado a establecido de
InputBit, la instrucción establece InputBit n-1. 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.


post-escán Ninguna. Ninguna.

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) Capítulo 2

Un impulso en flanco La instrucción OSFI establece OutputBit por un ciclo de ejecución


cuando InputBit cambia de establecido a borrado.
descendente con entrada
(OSFI) 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 Tipo de datos Descripción


entrada
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 la instrucción se restablece durante


se ejecuta 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 InputBit n-1 se borra. InputBit n-1 se borra.
instrucción
EnableIn se borra EnableOut se borra, la instrucción no efectúa n. a.
ninguna operación y las salidas no se actualizan.
EnableIn se establece En una transición de borrado a establecido de En una transición de borrado a establecido de
InputBit, la instrucción borra InputBit n-1. 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.


post-escán Ninguna. Ninguna.

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 Los temporizadores y contadores controlan operaciones en base a


tiempo o número de eventos.

Si desea Use esta instrucción Disponible en estos lenguajes Vea la página


establecer el tiempo durante el cual un TON lógica de escalera de relés 104
temporizador está habilitado
establecer el tiempo durante el cual un TOF lógica de escalera de relés 108
temporizador está inhabilitado
acumular tiempo RTO lógica de escalera de relés 112
establecer el tiempo durante el cual un TONR texto estructurado 116
temporizador está habilitado con
restablecimiento incorporado en el bloque de bloque de funciones
funciones
establecer el tiempo durante el cual un TOFR texto de estructura 120
temporizador está inhabilitado con
restablecimiento incorporado en el bloque de bloque de funciones
funciones
acumular tiempo con restablecimiento RTOR texto estructurado 124
incorporado en el bloque de funciones
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 CTUD texto estructurado 136
funciones
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 instrucción TON es un temporizador no retentivo que acumula el


tiempo cuando la instrucción está habilitada (la condición de entrada
la conexión (TON) 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
el temporizador no
llegó al valor .PRE
valor acumulado de temporizador (.ACC) 0 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.

Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.


IMPORTANTE
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 Tipo de fallo Código de fallo
.PRE < 0 4 34
.ACC < 0 4 34

Publicación 1756-RM003K-ES-P – Julio 2008 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

Bit .DN = 1
examine el bit .DN

Bit .DN = 0

el bit .EN se establece


Bit .EN = 0 el bit .TT se establece
examine el bit .EN
last_time = current_time

Bit .EN = 1

el bit .TT se establece .ACC ≥ .PRE


examine .ACC
.ACC = .ACC + (current_time - last_time)
last_time = current_time

.ACC < .PRE


.DN se establece
el bit .TT se borra
el bit .EN se
establece
el valor .ACC no
retorna al valor
inicial

sí la condición de salida de
renglón se establece como
verdadera

.ACC = 2,147,483,647

fin

post-escán La condición de salida de renglón se establece como falsa.

106 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 instrucción TOF es un temporizador no retentivo que acumula el


tiempo cuando la instrucción está habilitada (la condición de entrada
la desconexión (TOF) 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.

Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.


IMPORTANTE
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 Tipo de fallo Código de fallo
.PRE < 0 4 34
.ACC < 0 4 34

Publicación 1756-RM003K-ES-P – Julio 2008 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

Bit .DN = 0
examine el bit .DN

Bit .DN = 1

el bit .EN se borra


Bit .EN = 1 el bit .TT se establece
examine el bit .EN
last_time = current_time

Bit .EN = 0

el bit .TT se establece .ACC ≥ .PRE


examine .ACC
.ACC = .ACC + (current_time - last_time)
last_time = current_time

.ACC < .PRE


.DN se borra
el bit .TT se borra
el bit .EN se borra

el valor .ACC no
retorna al
valor inicial

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 La condición de salida de renglón se establece como falsa.

110 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 La instrucción RTO es un temporizador retentivo que acumula tiempo


cuando la instrucción está habilitada.
activado (RTO)
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.

Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.


IMPORTANTE
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 Tipo de fallo Código de fallo
.PRE < 0 4 34
.ACC < 0 4 34

Publicación 1756-RM003K-ES-P – Julio 2008 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

Bit .DN = 1
examine el bit .DN

Bit .DN = 0

el bit .EN se establece


Bit .EN = 0 el bit .TT se establece
examine el bit .EN
last_time = current_time

Bit .EN = 1

el bit .TT se establece .ACC ≥ .PRE


examine .ACC
.ACC = .ACC + (current_time - last_time)
last_time = current_time

.ACC < .PRE


.DN se establece
el bit .TT se borra
el bit .EN se
establece

el valor .ACC no
retorna al
valor inicial

la condición de salida de
sí renglón se establece como
verdadera

.ACC = 2,147,483,647

fin

post-escán La condición de salida de renglón se establece como falsa.

114 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 La instrucción TONR es un temporizador no retentivo que acumula


tiempo cuando TimerEnable está establecido.
a la conexión con
restablecimiento (TONR) 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 Tipo de datos Descripción


entrada
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 Tipo de datos Descripción


entrada
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) BOOL El valor de preajuste no es válido.

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
16649
el temporizador no
llegó al valor PRE
valor acumulado de temporizador (.ACC) 0

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.

Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.


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


primera ejecución de Los bits EN, TT y DN se borran. Los bits EN, TT y DN se borran.
instrucción
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 n. a.
ninguna operación y las salidas no se actualizan.
EnableIn se establece Cuando EnableIn cambia de borrado a establecido, EnableIn siempre se establece.
la instrucción se inicializa según lo descrito para el
primer escán de la 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. Ninguna.

118 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 instrucción TOFR es un temporizador no retentivo que acumula


tiempo cuando TimerEnable está borrado.
la desconexión con
restablecimiento (TOFR) 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 Tipo de datos Descripción


entrada
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 Tipo de datos Descripción


entrada
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) BOOL El valor de preajuste no es válido.

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.

Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.


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


primera ejecución de Los bits EN, TT y DN se borran. Los bits EN, TT y DN se borran.
instrucción
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 n. a.
ninguna operación y las salidas no se actualizan.
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.

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 = PRE. Tenga presente que esto es diferente a ACC = PRE. Tenga presente que esto es diferente a
usar una instrucción RES en una instrucción TOF. 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 La instrucción RTOR es un temporizador retentivo que acumula


tiempo cuando TimerEnable está establecido.
activado con
restablecimiento (RTOR) 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 Tipo de datos Descripción


entrada
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 Tipo de datos Descripción


entrada
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) BOOL El valor de preajuste no es válido.

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.

Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta.


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


primera ejecución de Los bits EN, TT y DN se borran. Los bits EN, TT y DN se borran.
instrucción
El valor .ACC no se modifica. El valor .ACC no se modifica.
EnableIn se borra EnableOut se borra, la instrucción no efectúa n. a.
ninguna operación y las salidas no se actualizan.
EnableIn se establece Bloque de funciones: EnableIn siempre se establece.

Cuando EnableIn cambia de borrado a establecido, La instrucción se ejecuta.


la instrucción se inicializa según lo descrito para el
primer escán de la 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. Ninguna.

126 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 el bit .CU se establece el valor .ACC sí


examine el bit .CU
retorna al valor
.ACC = .ACC + 1 inicial

bit .CU = 1 no

el bit .UN se borra el bit .UN = 1


el bit .DN se borra examine el bit .UN
el bit .OV se borra

el bit .UN = 0

el bit .UN = 0 el bit .OV = 0


examine el bit .UN examine el bit .OV

el bit .OV se
el bit .UN = 1 el bit .OV = 1 establece

.ACC ≥ .PRE
examine .ACC

.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 La condición de salida de renglón se establece como falsa.

130 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 el bit .CD se establece el valor .ACC sí


examine el bit .CD retorna al
.ACC = .ACC - 1 valor inicial

el bit .CD = 1 no

el bit .OV se borra el bit .OV = 1


el bit .DN se borra examine el bit .OV
el bit .UN se borra

el bit .OV = 0

el bit .UN = 0 el bit .OV = 0


examine el bit .UN examine el bit .OV

el bit .UN se
el bit .UN = 1 el bit .OV = 1 establece

.ACC ≥ .PRE
examine .ACC

.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 La condición de salida de renglón se establece como falsa.

134 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/ La instrucción CTUD incrementa en uno el conteo cuando CUEnable


cambia de borrado a establecido. La instrucción decrementa en uno el
regresivo (CTUD) 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 Tipo de datos Descripción


entrada
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) Capítulo 3

Parámetro de Tipo de datos Descripción


entrada
CDEnable BOOL Habilita el conteo regresivo. Cuando la entrada cambia de borrado a establecido,
el acumulador se decrementa en uno.

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 CUEnablen-1 y CDEnablen-1 se establecen. CUEnablen-1 y CDEnablen-1 se establecen.
instrucción
EnableIn se borra EnableOut se borra, la instrucción no efectúa n. a.
ninguna operación y las salidas no se actualizan.
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 siempre se establece.


EnableIn:
La instrucción se ejecuta.
• La instrucción se ejecuta.
• EnableOut se establece.
restablecimiento Cuando se establece, la instrucción borra Cuando se establece, la instrucción borra
CUEnablen-1, CDEnablen-1, CU, CD, DN, OV y UN y CUEnablen-1, CDEnablen-1, CU, CD, DN, OV y UN y
establece ACC = cero. 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) Capítulo 3

Restablecer (RES) 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 La instrucción borra


instrucción RES para
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 La condición de salida de renglón se establece como falsa.

142 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 Use esta instrucción Disponible en estos lenguajes Vea la página


enviar datos desde o hacia otro módulo MSG lógica de escalera de relés 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 SSV lógica de escalera de relés 176
controlador
texto estructurado
• enviar valores de salida a un módulo de E/S IOT lógica de escalera de relés 201
o controlador consumidor en un punto
específico de su lógica 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 MESSAGE tag estructura de mensaje
control

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 Descripción


datos
.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 Descripción


datos
.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.
Si el mensaje se Especifique el número de ranura en:
envía a través de
esta red:
E/S remotas octal
universales
ControlNet decimal (0-15)
.Path STRING 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 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

146 Publicación 1756-RM003K-ES-P – Julio 2008


Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4

Mnemónico Tipo de Descripción


datos
.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.
Si el mensaje: La matriz remota es el:
lee datos Elemento de origen
escribe datos Elemento de destino
.UnconnnectedTimeout DINT 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.
.ConnectionRate DINT 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.
.TimeoutMultiplier SINT
• 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 2 3 4 5 6 7

148 Publicación 1756-RM003K-ES-P – Julio 2008


Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4

Donde Descripción Donde Descripción


1 condición de entrada de renglón es verdadera 5 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 mensaje efectuado o con error

.ST se establece 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 Ninguna.
falsa.

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 Acción de texto estructurado

condición de entrada de renglón es falsa


(no se aplica a 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 comando de sí no


examine el bit .ER la ruta de acceso
transferencia en del módulo es
bloques válida

no sí

bit .DN = 1
examine el bit .DN sí conexión de no
módulo en
ejecución
bit .DN = 0 el bit .EN se borra ejecute la petición de
mensaje

bit .ER = 1
examine el bit .ER el bit .EW se establece el bit .ER se
establece

bit .ER = 0

la condición de salida de renglón


se establece como falsa

fin

condición de entrada de La instrucción se ejecuta. n. a.


renglón es verdadera
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) Capítulo 4

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
bit .EN = 1 bit .EN = 0
examine el bit .EN

bit .EW = 1 bit .EW = 1


examine el bit .EW examine el bit .EW

bit .EW = 0 bit .EW = 0

bit .ST = 1 bit .ST = 1


examine el bit .ST examine el bit .ST

bit .ST = 0 bit .ST = 0

los bits .EW, .ST, .TO, .DN y .ER se


borran y el bit
bit .DN = 1 .EN se establece
examine el bit .DN

bit .DN = 0 el bit .EN se


establece

bit .ER = 1 bit .ER = 0 comando de sí no


examine el bit .ER transferencia en la ruta de acceso
bloques del módulo es
válida

no sí

sí conexión de no
módulo en
ejecución
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 Ninguna.


falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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 Se muestra en el software


(hex)
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 idéntico a la descripción
definida o elemento de estructura no definido (vea los códigos
de error extendidos)
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) Capítulo 4

Código de error Descripción Se muestra en el software


(hex)
001F Fallo relacionado con la conexión (vea los códigos de error idéntico a la descripción
extendidos)
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 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 Descripción Código de Descripción


error error
extendido extendido
(hex.): (hex.):
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 Descripción


extendido (hex.):
0203 Expiración de conexión

Estos son los códigos de error extendidos para el código de


error 0004 y 0005.

Código de error Descripción


extendido (hex.):
0000 estado extendido fuera de memoria
0001 estado extendido fuera de instancias

154 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 Descripción Código de Descripción


error error
extendido extendido
(hex.): (hex.):
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 Intento para cambiar el número de dimensiones
de registro
201B Tamaño demasiado pequeño
210A Nombre de símbolo no válido
201C Tamaño no válido
210B El símbolo no existe
2100 Fallo de privilegio
210E La búsqueda entró en fallo
2101 Posición no válida de interruptor de llave
210F La tarea no se puede iniciar
2102 Contraseña no válida
2110 No se puede escribir
2103 No se emitió contraseña
2111 No se puede leer
2104 Dirección fuera de rango
2112 Rutina compartida no editable
2105 Dirección y cuántas fuera de rango
2113 Controlador en modo con fallo
2106 Datos en uso
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 Descripción


.ERR .EXERR .ERR .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 .EXERR
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

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 Se muestra en el


(hex) software
00D0 El escáner no recibió una respuesta de transferencia en bloques del módulo de error desconocido
transferencia en bloques dentro de los 3.5 segundos siguientes a la petición
00D1 La suma de comprobación de la respuesta de lectura no coincidió con la suma de error desconocido
comprobación del flujo de datos
00D2 El escáner solicitó una lectura o una escritura, pero el módulo de transferencia en bloques error desconocido
respondió lo opuesto
00D3 El escáner solicitó una longitud y el módulo de transferencia en bloques respondió con una error desconocido
longitud diferente
00D6 El escáner recibió una respuesta del módulo de transferencia en bloques indicando que la error desconocido
petición de escritura falló.
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 error desconocido
respuesta antes de que pueda comenzar otra petición.
00ED El tamaño de la petición de transferencia en bloques no es coherente con las peticiones de error desconocido
tamaño de transferencia en bloques válidas
00EE El tipo de la petición de transferencia en bloques no es coherente con la BT_READ error desconocido
o BT_WRITE esperada
00EF El escáner no pudo encontrar una ranura disponible en la tabla de transferencia en bloques error desconocido
para aceptar la petición de transferencia en bloques
00F0 El escáner recibió una petición para restablecer los canales de E/S remotas mientras que error desconocido
había transferencias en bloques pendientes
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ó error desconocido
antes de concluir
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 error desconocido
defectuoso
00FA El módulo de transferencia en bloques solicitó una longitud diferente a la instrucción de error desconocido
transferencia en bloques asociada
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 error desconocido
transferencias en bloques era mayor que el tamaño del archivo de tablas de datos de
transferencia en bloques

158 Publicación 1756-RM003K-ES-P – Julio 2008


Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4

Especifique los detalles Después de introducir la instrucción MSG y de especificar la estructura


MESSAGE, use el cuadro de diálogo Message Configuration para
de configuración 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 Vea la página


mensaje
Controlador Logix5000 Lectura de tabla de datos CIP 160
Escritura de tabla de datos CIP
Módulo de E/S que usted configura Reconfiguración de módulo 161
usando el software RSLogix 5000
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 TypedRead SLC 165
TypedWrite SLC
Controlador MicroLogix
Módulo de transferencia en bloques 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 Especifique


Elemento de origen • 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 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.
Elemento de destino • 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 Tipo de mensaje CIP genérico
módulo de salida digital
Tipo de servicio Prueba de impulso
Origen tag_name de tipo INT [5]
Esta matriz contiene:
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
Destino dejar en blanco
Restablecer los fusibles electrónicos en Tipo de mensaje CIP genérico
un módulo de salida digital
Tipo de servicio Restablecer fusible
electrónico
Origen tag_name de tipo DINT

Este tag representa una máscara de bit de los puntos en los cuales se
restablecen los fusibles
Destino dejar en blanco
Restablecer diagnósticos enclavados en Tipo de mensaje CIP genérico
un módulo de entrada digital
Tipo de servicio Restablecer diagnósticos enclavados (I)
Origen 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 CIP genérico
un módulo de salida digital
Tipo de servicio Restablecer diagnósticos enclavados (O)
Origen 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) Capítulo 4

Si desea En esta propiedad Escriba o seleccione


Desenclavar la alarma de un módulo de Tipo de mensaje CIP genérico
entrada analógico
Tipo de servicio Seleccione la alarma que desea desenclavar:

• 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)
Instancia Canal de la alarma que desea desenclavar
Desenclavar la alarma de un módulo de Tipo de mensaje CIP genérico
salida analógico
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 Leer un rango continuo de palabras de 16 bits en la memoria PLC-5 independientemente
PLC5 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 Escribir un rango continuo de palabras de 16 bits en la memoria Logix5000,
PLC5 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 Use este tipo de datos Logix5000


PLC-5
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 Comando de lectura de rango de palabras

palabras de 16 bits en palabras de 32 bits en palabras de 16 bits en palabras de 32 bits en


procesador PLC-5 controlador Logix5000 procesador PLC-5 controlador Logix5000

1 1 1 2 1

2 2 2 4 3

3 3 3

4 4 4

Los comandos TypedWrite/TypedRead mantienen la Los comandos de rango de palabras llenan el tag de destino
estructura y el valor de los datos. contiguamente. La estructura y valor de los datos se cambian
según el tipo de datos de destino.

164 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 Use este tipo de datos Logix5000
MicroLogix
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 0 para el número de
cuántos enteros de 16 bits enviar (BTR). 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 leer un rango continuo de palabras de 16 bits en la memoria PLC-3 independientemente
PLC3 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 escribir un rango continuo de palabras de 16 bits de la memoria Logix5000
PLC3 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 Comando de lectura de rango de palabras

palabras de 16 bits en palabras de 32 bits en el palabras de 16 bits en palabras de 32 bits en el


el procesador PLC-3 controlador Logix5000 el procesador PLC-3 controlador Logix5000

1 1 1 2 1

2 2 2 4 3

3 3 3

4 4 4

Los comandos TypedWrite/TypedRead mantienen la Los comandos de rango de palabras llenan el tag de destino
estructura y el valor de los datos. 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 Los ejemplos siguientes muestran tags de origen y destino, así como
elementos para diferentes combinaciones de controladores.
MSG
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]
elemento de destino N7:10
Logix5000 → SLC
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
tag de destino array_1[0]
Logix5000 → SLC
Puede usar un tag de alias para el tag de destino (en el controlador Logix5000 de
origen).
Logix5000 → PLC-2 elemento de origen 010
tag de destino array_1[0]

168 Publicación 1756-RM003K-ES-P – Julio 2008


Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4

Especifique los detalles Para configurar una instrucción MSG, usted especifica estos detalles
en la ficha Communication.
de comunicación

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 Use el botón Browse para seleccionar el módulo.
tiene el módulo que obtiene el mensaje.
La configuración de E/S del controlador 1. Use el botón Browse para seleccionar el módulo de comunicación local.
tiene sólo el módulo de comunicación local. 2. Escriba el resto de la ruta.
La configuración de E/S del controlador no Escriba la ruta.
tiene ninguno de los módulos que necesita
para el mensaje.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 4

Donde Es
Para esta red Tipo
port 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 Añada estos módulos a la configuración de E/S


bloques mediante esta red
ControlNet • 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 Seleccione Y especifique


es un
Controlador Logix5000 CIP no se requieren otras especificaciones
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+ Canal: Canal A o B del módulo 1756-DHRIO que está
DH+ conectado a la red DH+
Controlador SLC por una red Vínculo de origen: La identificación de vínculo asignada al
DH+ 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
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) Capítulo 4

Si el dispositivo de destino Seleccione Y especifique


es un
Aplicación en una estación de CIP con ID de origen Vínculo de origen: ID remoto del tema en el software RSLinx
trabajo que recibe un mensaje
Vínculo de destino: ID de vínculo virtual configurado en RSLinx
no solicitado encaminado por
(0-65535)
una red Ethernet/IP o ControlNet
a través de RSLinx. (Esto permite que la Nodo de destino: ID de destino (0-77 octal) proporcionado por la
aplicación reciba datos de aplicación a RSLinx. Para el tema DDE en
un controlador) RSLinx, use 77.
El número de ranura del controlador ControlLogix se usa como nodo de
origen.
Módulo de transferencia en RIO Canal: Canal A o B del módulo 1756-DHRIO que está
bloques mediante una red de conectado a la red RIO
E/S remotas universales
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
Módulo de transferencia en ControlNet Ranura Número de ranura donde está el módulo
bloques mediante una red
ControlNet

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 Usa una conexión


Lectura o escritura de datos CIP ✓
PLC2, PLC3, PLC5 o SLC (todos los tipos) 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.

Si usted Entonces
Almacena en caché la La conexión se mantiene abierta una vez finalizada la
conexión 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 se cierra una vez finalizada la instrucción MSG.
la conexión Así se libera la conexión para otros usos.

Publicación 1756-RM003K-ES-P – Julio 2008 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 Puede almacenar en caché


software y firmware
11.x o anterior • 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 Cada instrucción MSG usa 1 conexión.
el mismo dispositivo 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 Cada instrucción MSG requiere su propio tag de control.
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).
3. Si su MSG es a un dispositivo que usa Si su mensaje es a un dispositivo que usa enteros de 16 bits, tal como un controlador
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
MSG y DINT en todo el proyecto. el mensaje 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 Almacene en caché la conexión para dichas instrucciones MSG que se ejecutan con
que se ejecutan con mayor frecuencia. 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 Si usted habilita más de 16 MSG a la vez, algunas instrucciones MSG pueden
simultáneamente, use el mismo tipo de experimentar retardos al ingresar en la cola. Para garantizar la ejecución de cada
estrategia de administración. 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 El controlador puede tener 10 - 40 búferes no conectados. El número predeterminado
conectados y no almacenados en caché en es 10.
un valor menor que el número de búferes no
• Si todos los búferes no conectados se usan cuando una instrucción deja la cola de
conectados.
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 Las instrucciones GSV/SSV reciben y envían datos de sistema del
controlador que se almacenan en los objetos.
(GSV) y establecer valor del
sistema (SSV)
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

INT

DINT

REAL

estructura
Source (SSV) SINT tag el tag que contiene los datos que desea copiar al atributo

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 4 6
GSV/SSV
atributo no válido 4 6
no se proporcionó suficiente información para 4 6
una instrucción SSV
el destino GSV no es suficientemente grande 4 7
para retener los datos solicitados

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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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. Obtenga o establezca el valor especificado.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.

178 Publicación 1756-RM003K-ES-P – Julio 2008


Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4

Objetos GSV/SSV 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:

Para obtener información acerca de Vea esta página o publicación


este objeto
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

Publicación 1756-RM003K-ES-P – Julio 2008 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 DINT SSV Número de entradas de registro del controlador desde la
nt ú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 SSV Número de entradas de registro del controlador que se originó
ificationCount a partir de un cambio de propiedades de programa/tarea, una
GSV 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 DINT GSV Número de entradas en el registro del controlador que todavía
Count 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 MSG Matriz de bits usada para determinar qué hará que se
ask 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 INT 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

ProductRev INT GSV 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: Significado:


0000 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: Significado:


0001 fallo menor recuperable

0010 fallo menor no recuperable

0100 fallo mayor recuperable

1000 fallo mayor no recuperable

Bits de estado específicos para Logix5000

Bits 13-12: Significado:


01 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
Type INT GSV 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:
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
CurrentValue DINT[2] GSV 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 Instrucción Descripción


datos
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 INT[19] GSV Matriz de contadores de diagnóstico para el driver de
comunicación DF1.
offset de palabra DF1 punto a punto DF1 esclavo maestro
0 firma (0x0043) firma (0x0042) firma (0x0044)
1 bits de módem bits de módem bits de módem
2 paquetes enviados paquetes enviados paquetes enviados
3 paquetes recibidos paquetes recibidos paquetes recibidos
4 paquetes no entregados paquetes no entregados paquetes no entregados
5 no se usa mensajes reenviados mensajes reenviados
6 NAK recibidos NAK recibidos no se usa
7 ENQ enviados paquetes de encuesta recibidos no se usa
8 paquetes deficientes con NAK paquetes deficientes sin ACK paquetes deficientes sin ACK
9 sin memoria enviado NAK sin memoria sin ACK no se usa
10 recibidos paquetes duplicados recibidos paquetes duplicados recibidos paquetes duplicados
11 recibidos caracteres deficientes no se usa no se usa
12 conteo de recuperaciones DCD conteo de recuperaciones DCD conteo de recuperaciones DCD
13 conteo de módem perdido conteo de módem perdido conteo de módem perdido
14 no se usa no se usa máximo de tiempo de escán prioritario
15 no se usa no se usa último tiempo de escán prioritario
16 no se usa no se usa máximo de tiempo de escán normal
17 no se usa no se usa último tiempo de escán normal
18 ENQ enviados no se usa no se usa
DuplicateDetection SINT GSV Habilita la detección de mensajes duplicados.

Valor: Significado:
0 detección de mensajes duplicados inhabilitada
no cero detección de mensajes duplicados inhabilitada
EmbeddedResponseEnable SINT GSV Habilita la funcionalidad de respuesta incorporada (punto a punto
solamente).

Valor: Significado:
0 se inicia solamente después de que se recibe uno
(opción predeterminada)
1 habilitado incondicionalmente
ENQTransmitLimit SINT GSV 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: Significado:
0 supresión de EOT inhabilitada
no cero supresión de EOT habilitada

184 Publicación 1756-RM003K-ES-P – Julio 2008


Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4

Atributo Tipo de Instrucción Descripción


datos
ErrorDetection SINT GSV Especifica el esquema de detección de errores.

Valor: Significado:
0 BCC (predeterminado)
1 CRC
MasterMessageTransmit SINT GSV Valor actual de la transmisión de mensaje del maestro (maestro
solamente).

Valor: Significado:
0 entre encuestas de estación
1 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: Significado:
0 basado en mensajes; no permite a los esclavos
iniciar mensajes
1 basado en mensajes, pero permite a los esclavos
iniciar mensajes (predeterminado)
2 estándar, transferencia de un solo mensaje por
escán de nodo
3 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 Instrucción Descripción


datos
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 SINT SSV Valor pendiente para el atributo EmbeddedResponse.
Enable
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 SINT SSV Valor pendiente para el atributo MasterMessageTransmit.
Transmit
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
Comunicación Path ruta de comunicación consigo
mismo (1,s donde s = número
de ranura del controlador)

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 DINT GSV Los bits individuales indican la razón del fallo mayor actual.

SSV Bit: Significado:


1 corte de energía
3 E/S
4 ejecución de instrucción (programa)
5 administrador de fallos
6 temporizador de control (watchdog)
7 pila
8 cambio de modo
11 control de movimiento
MinorFaultBits DINT GSV Los bits individuales indican la razón del fallo menor actual.

SSV Bit: Significado:


4 ejecución de instrucción (programa)
6 temporizador de control (watchdog)
9 puerto serie
10 batería

Publicación 1756-RM003K-ES-P – Julio 2008 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 Datos para configurar la ruta de conexión. Los dos primeros bytes
(byte inferior y byte superior) representan la longitud en bytes de la
SSV ruta de conexión.
ConnectionRate DINT GSV Régimen de paquetes solicitado de la conexión.

SSV
MessageType SINT GSV Especifica el tipo de mensaje.

SSV Valor: Significado:


0 no inicializado
Port SINT GSV Indica el puerto por el que se debe enviar el mensaje.

SSV Valor: Significado:


1 backplane
2 puerto serie
TimeoutMultiplier SINT GSV Determina cuándo una conexión se debe considerar como que ha
sobrepasado el tiempo de espera y se ha cerrado.
SSV
Valor: Significado:
0 la conexión sobrepasará el tiempo de espera en un
lapso igual a 4 veces el régimen de actualización
(predeterminado)
1 la conexión sobrepasará el tiempo de espera en un
lapso igual a 8 veces el régimen de actualización
2 la conexión sobrepasará el tiempo de espera en un
lapso igual a 16 veces el régimen de actualización
UnconnectedTimeout DINT GSV El tiempo de espera, en microsegundos, para todos los
mensajes no conectados. La opción predeterminada es
SSV 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 GSV
GSV SSV
SSV
0 Get
GetSystem
SystemValue
Value Set
SetSystem
SystemValue
Value
Class
Classname
name Message
MESSAGE Class
Classname
name Message
MESSAGE
Instance
Instance name
name msg_1
msg_1 Instance
Instance name
name msg_1
msg_1
AttributeName
Attribute Name MessageType
MessageType Attribute
Attribute Name MessageType
Name MessageType
Dest
Dest msg_1_type
msg_1_type Source
Source tag_a
tag_a
22 00

SSV
SSV SSV
SSV
Set System
Set Value
System Value Set
SetSystem
SystemValue
Value
Class
Classname
name Message
MESSAGE Class
Classname
name Message
MESSAGE
Instance
Instancename
name msg_1
msg_1 Instance
Instance name
name msg_1
msg_1
Attribute Name
Attribute ConnectionPath
Name ConnectionPath Attribute
AttributeName MessageType
Name MessageType
Source
Source msg_1path[0]
msg_1_path[0] Source
Source msg_1_type
msg_1_type
66 22

msg_1.EN
msg_1.EN MSG
MSG
1 / Tipo
Type– Escritura
- CIP Datade tabla
Tablede Write
datos CIP EN
EN
Message
Message Control
Control msg_1 ...
msg_1 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: Significado:
16#0000 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: Significado:
0 forzados instalados (1=sí, 0=no)
1 forzados habilitados (1=sí, 0=no)
2-15 no se usa

190 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: Significado:
0 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: Significado:


0 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: Significado:


0 ejecución habilitada
1 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: Significado:
7 7 bits de datos (ASCII solamente)
8 8 bits de datos (opción predeterminada)
Parity SINT GSV Especifica la paridad.

Valor: Significado:
0 sin paridad (no predeterminado)
1 paridad impar (ASCII solamente)
2 paridad par
RTSOffDelay INT GSV 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: Significado:
1 1 bit de fin (opción predeterminada)
2 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
Communication Path ruta de comunicación consigo mismo
(1,s donde s = número de ranura del
controlador)

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
Para: Establezca el atributo en:
habilitar el procesamiento de 0
salidas al final de la tarea
inhabilitar el procesamiento de 1 (o cualquier valor excepto
salidas al final de la tarea cero)
EnableTimeOut DINT GSV Habilita o inhabilita la función de tiempo de espera de una tarea de
evento.
SSV
Para: Establezca el atributo en:
inhabilitar la función de tiempo 0
de espera
habilitar la función de tiempo de 1 (o cualquier valor excepto
espera cero)
InhibitTask DINT GSV Evita que se ejecute la tarea. Si se inhibe una tarea, el controlador
igualmente preescanea la tarea cuando el controlador cambia del
SSV 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)
Instance DINT GSV 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 El intervalo de tiempo máximo entre las ejecuciones sucesivas de la
tarea. DINT[0] contiene los 32 bits inferiores del valor; DINT[1]
SSV 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 El intervalo de tiempo mínimo entre las ejecuciones sucesivas de la
tarea. DINT[0] contiene los 32 bits inferiores del valor; DINT[1]
SSV contiene los 32 bits superiores del valor.

Un valor de 0 indica 1 o menos ejecuciones de la tarea.


OverlapCount DINT GSV El número de veces que se activó la tarea mientras se estaba
ejecutando. Válido para un evento o una tarea periódica.
SSV
Para borrar el conteo, establezca el atributo en 0.

Publicación 1756-RM003K-ES-P – Julio 2008 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.


Rate DINT GSV Si el tipo de tarea es: El atributo Rate especifica
el:
SSV
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.
StartTime DINT[2] GSV El valor WALLCLOCKTIME cuando se inició la última ejecución de la
tarea. DINT[0] contiene los 32 bits inferiores del valor; DINT[1]
SSV contiene los 32 bits superiores del valor.
Status DINT GSV Proporciona información de estado acerca de la tarea. Una vez que
el controlador establece uno de estos bits, usted puede borrar el bit
SSV manualmente.
Para determinar si: Examine este bit:
Una instrucción EVNT activó 0
la tarea (tarea de evento
solamente).
Un tiempo de espera 1
sobrepasado activó la tarea
(tarea de evento solamente).
Ocurrió una superposición para 2
esta tarea.
Watchdog DINT GSV El límite de tiempo para la ejecución de todos los programas
asociados con esta tarea. El tiempo se representa en
SSV microsegundos.
Si se introduce 0, se asignan estos valores:
Tiempo: Tipo de tarea:
0.5 s periódica o de evento
5.0 s continua

196 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
SSV del valor; DINT[1] contiene los 32 bits superiores del valor.

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] 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)

Publicación 1756-RM003K-ES-P – Julio 2008 197


Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)

Ejemplo de programación Obtenga información de fallo


GSV/SSV
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) Capítulo 4

Salida inmediata (IOT) 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 Formato Descripción


Update Tag 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.

IOT(output_tag); Texto estructurado

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)
SoftLogix5800 Usted puede producir y consumir tags sólo dentro del intervalo entre paquetes actual
por una red ControlNet. (API) del tag consumido (conexión)

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 valores cargados al tag


producido producido

instrucción IOT en el instrucción IOT en el


controlador productor controlador productor

tarea de evento en el RPI del tag producido


controlador consumidor
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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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:
• 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 Ninguna.
falsa.

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 206
texto estructurado(1)
probar si dos valores son iguales EQU lógica de escalera de relés 211
texto estructurado(2)
bloque de funciones
probar si un valor es mayor o igual que un GEQ lógica de escalera de relés 215
segundo valor texto estructurado(1)
bloque de funciones
determinar si un valor es mayor que otro valor GRT lógica de escalera de relés 219
texto estructurado(1)
bloque de funciones
probar si un valor es menor o igual que un LEQ lógica de escalera de relés 223
segundo valor texto estructurado(1)
bloque de funciones
determinar si un valor es menor que otro valor LES lógica de escalera de relés 227
texto estructurado(1)
bloque de funciones
determinar si un valor se encuentra entre otros LIM lógica de escalera de relés 231
dos valores texto estructurado(1)
bloque de funciones
pasar dos valores a través de una máscara y MEQ lógica de escalera de relés 237
determinar si son iguales texto estructurado(1)
bloque de funciones
determinar si un valor diferente a otro valor NEQ lógica de escalera de relés 242
texto estructurado(1)
bloque de funciones
(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 una expresión que consiste en tags y/o
valores inmediatos separados por
INT tag 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

la expresión es
verdadera la condición de salida de
evalúe la expresión
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:

Si la expresión es La condición de salida de renglón


se establece como
diferente de cero verdadera
cero falsa

Publicación 1756-RM003K-ES-P – Julio 2008 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 complemento a nivel DINT
de bits
<= menor o igual que DINT, REAL
OR O a nivel de bits DINT
> mayor que DINT, REAL
RAD grados a radianes DINT, REAL
>= mayor o igual que DINT, REAL
SIN seno REAL
<> diferente de DINT, REAL
SQR raíz cuadrada DINT, REAL
** exponente (x a la y) DINT, REAL
TAN tangente REAL
ABS valor absoluto DINT, REAL
TOD entero a BCD DINT
ACS arco coseno REAL
TRN truncar DINT, REAL
AND Y a nivel de bits DINT
XOR O exclusivo a nivel de DINT
ASN arco seno REAL bits
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 Use este formato Ejemplos


que operan en
un operando operador(operando) ABS(tag_a)
dos operandos operando_a operador • tag_b + 5
operando_b • 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.

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

Caracteres ASCII Códigos


hexadecimales
1ab $31$61$62
m m 1b $31$62
e a
A $41
n y
o o AB $41$42 AB < B
r r
B $42
a $61 a>B
ab $61$62

210 Publicación 1756-RM003K-ES-P – Julio 2008


Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Capítulo 5

Igual a (EQU) 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 valor que se compara con
Source A
INT tag

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 Use el signo igual “=” como operador dentro de una expresión. Esta
<statements>; 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 Tipo de datos Descripción


entrada
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

sí la condición de salida de
Source A = Source B
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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 5

Mayor o igual que (GEQ) 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 valor que se compara con Source A

INT tag

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 Use los signos mayor que e igual “>=” adyacentes como operador
<statements>; 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 Tipo de datos Descripción


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

Caracteres ASCII Códigos


hexadecimales
1ab $31$61$62
m m 1b $31$62
e a
A $41
n y
o o AB $41$42 AB < B
r r
B $42
a $61 a>B
ab $61$62

216 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

sí la condición de salida de
Source A ≥ Source B
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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 5

Mayor que (GRT) 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 valor que se compara con Source A

INT tag

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 Use el signo mayor que “>” como un operador dentro de una
<statements>; 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

Operando Tipo Formato Descripción


GRT tag FBD_COMPARE estructura estructura GRT

Publicación 1756-RM003K-ES-P – Julio 2008 219


Capítulo 5 Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Estructura FBD_COMPARE

Parámetro de Tipo de datos Descripción


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

Caracteres ASCII Códigos


hexadecimales
1ab $31$61$62
m m 1b $31$62
e a
A $41
n y
o o AB $41$42 AB < B
r r
B $42
a $61 a>B
ab $61$62

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

sí la condición de salida de
Source A > Source B
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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 5

Menor o igual que (LEQ) 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 valor que se compara con Source A

INT tag

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 Use los signos menor que e igual “<=” adyacentes como operador
<statements>; 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 Tipo de datos Descripción


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

Caracteres ASCII Códigos


hexadecimales
1ab $31$61$62
m m 1b $31$62
e a
A $41
n y
o o AB $41$42 AB < B
r r
B $42
a $61 a>B
ab $61$62

224 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

sí la condición de salida de
Source A ≤ Source B
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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 5

Menor que (LES) 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 valor que se compara con Source A

INT tag

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 Use el signo menor que “<” como un operador dentro de una
<statements>; 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

Operando Tipo Formato Descripción


LES tag FBD_COMPARE estructura estructura LES

Publicación 1756-RM003K-ES-P – Julio 2008 227


Capítulo 5 Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Estructura FBD_COMPARE

Parámetro de Tipo de datos Descripción


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

Caracteres ASCII Códigos


hexadecimales
1ab $31$61$62
m m 1b $31$62
e a
A $41
n y
o o AB $41$42 AB < B
r r
B $42
a $61 a>B
ab $61$62

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

sí la condición de salida de
Source A < Source B
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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 5

Límite (LIM) 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 valor que se prueba

INT tag

DINT

REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
High limit SINT inmediato valor del límite superior

INT tag

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 Tipo de datos Descripción


entrada
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 Y el valor de prueba es La condición de salida de


inferior renglón se establece como
≤ Límite superior igual a o está entre los límites verdadera
diferente o está fuera de los falsa
límites
≥ Límite superior igual a o está fuera de los verdadera
límites
diferente o está dentro de los falsa
límites

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 inferior ≤ Límite superior Límite inferior ≥ Límite superior

La instrucción es verdadera si el valor de prueba se encuentra entre los límites inferior y La instrucción es verdadera si el valor de prueba se encuentra fuera de los
superior, o coincide con uno de dichos límites. límites inferior y superior, o coincide con uno de dichos límites.

0
0
−1 +1
−1 +1
límite inferior
límite superior

límite superior
límite inferior

−(n+1) +n
−(n+1) +n
n = valor máximo 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

la comparación es
verdadera la condición de salida de
evaluar el límite
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 Ninguna.

234 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) Capítulo 5

Máscara igual que (MEQ) 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 define qué bits se deben bloquear o pasar

INT tag

DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Compare SINT inmediato valor que se compara con Source

INT tag

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

Operando Tipo Formato Descripción


MEQ tag FBD_MASK_EQUAL estructura estructura MEQ

Publicación 1756-RM003K-ES-P – Julio 2008 237


Capítulo 5 Instrucciones de comparación (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Estructura FBD_MASK_EQUAL

Parámetro de Tipo de datos Descripción


entrada
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 = sí la condición de salida de
comparación renglón se establece
enmascarada 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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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 value_2 0 1 0 1 0 1 0 1 1 1 1 1 X X X X
enmascarado 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 value_2 X X X X X X X X X X X X 0 0 0 0
enmascarado 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 valor que se compara con Source A

INT tag

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 Use los signos menor que y mayor que “<>” juntos como operador
<statements>; 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

Operando Tipo Formato Descripción


NEQ tag FBD_COMPARE estructura estructura NEQ

242 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 Tipo de datos Descripción


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

Caracteres ASCII Códigos


hexadecimales
1ab $31$61$62
m m 1b $31$62
e a
A $41
n y
o o AB $41$42 AB < B
r r
B $42
a $61 a>B
ab $61$62

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

sí la condición de salida de
Source A = Source B
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 Ninguna.

244 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 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.
Si desea Use esta instrucción Disponible en estos lenguajes Vea la página
evaluar una expresión CPT lógica de escalera de relés 248
texto estructurado(1)
sumar dos valores ADD lógica de escalera de relés 252
texto estructurado(2)
bloque de funciones
restar dos valores SUB lógica de escalera de relés 255
texto estructurado(2)
bloque de funciones
multiplicar dos valores MUL lógica de escalera de relés 258
texto estructurado(2)
bloque de funciones
dividir dos valores DIV lógica de escalera de relés 261
texto estructurado(2)
bloque de funciones
determinar el residuo después de dividir un MOD lógica de escalera de relés 266
valor entre otro texto estructurado(2)
bloque de funciones
calcular la raíz cuadrada de un valor SQR lógica de escalera de relés 270
texto estructurado
SQRT(3) bloque de funciones
tomar el signo opuesto de un valor. NEG lógica de escalera de relés 274
texto estructurado(2)
bloque de funciones
hallar el valor absoluto de un valor. ABS lógica de escalera de relés 277
texto estructurado
bloque de funciones
(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 tag tag para almacenar el resultado
INT
DINT
REAL
Expression SINT inmediato una expresión que consiste en tags y/o
INT valores inmediatos separados por operadores
DINT tag
REAL
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 complemento a nivel DINT
de bits
/ dividir DINT, REAL
OR O a nivel de bits DINT
** exponente (x a la y) DINT, REAL
RAD grados a radianes DINT, REAL
ABS valor absoluto DINT, REAL
SIN seno REAL
ACS arco coseno REAL
SQR raíz cuadrada DINT, REAL
AND Y a nivel de bits DINT
TAN tangente REAL
ASN arco seno REAL
TOD entero a BCD DINT
ATN arco tangente REAL
TRN truncar DINT, REAL
COS coseno REAL
XOR O exclusivo a nivel de DINT
DEG radianes a grados DINT, REAL bits
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 Use este formato: Ejemplos:


que operan en:
un operando operador(operando) ABS(tag_a)
dos operandos operando_a operador • tag_b + 5
operando_b • 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.

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 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 valor que se suma a Source A

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

Operando: Tipo: Formato: Descripción:


ADD tag FBD_MATH estructura estructura ADD

252 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 Tipo de datos: Descripción:


entrada:
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 Tipo de datos: Descripción:
salida:
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 La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 6

Restar (SUB) 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 valor que se resta de Source A

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

Operando: Tipo: Formato: Descripción:


SUB tag FBD_MATH estructura estructura SUB

Publicación 1756-RM003K-ES-P – Julio 2008 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 Tipo de datos: Descripción:


entrada:
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 Tipo de datos: Descripción:
salida:
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 La condición de salida de renglón se establece como falsa.

256 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 valor del multiplicador

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

Operando Tipo Formato Descripción


MUL tag FBD_MATH estructura estructura MUL

258 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 Tipo de datos Descripción


entrada
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 La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 6

Dividir (DIV) 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 valor del divisor

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 := 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 Tipo de datos Descripción


entrada
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 Ejemplo


fraccionaria del
resultado
y Source B no son REAL se trunca Source A DINT 5
Source B DINT 3
Destination DINT 1
o Source B es REAL se redondea Source A REAL 5.0
Source B DINT 3
Destination DINT 2

262 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: Entonces el destino se


establece en:
todos los operandos son números Source A
enteros (SINT, INT o DINT)
por lo menos un operando es REAL SINT, INT o DINT positivo -1
negativo 0
REAL 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 Tipo de fallo Código de fallo


menor si
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 La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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 valor del divisor

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

Operando Tipo Formato Descripción


MOD tag FBD_MATH estructura estructura MOD

266 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 Tipo de datos Descripción


entrada
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: Entonces el destino se


establece en:
todos los operandos son números Source A
enteros (SINT, INT o DINT)
por lo menos un operando es REAL SINT, INT o DINT positivo -1
negativo 0
REAL 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 Tipo de fallo Código de fallo


menor si
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 Tipo de datos Descripción


entrada
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 Ejemplo


fraccionaria del
resultado
no es REAL se trunca Source DINT 3
Destination DINT 1
es REAL se redondea Source REAL 3.0
Destination DINT 2

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

272 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

Operando Tipo Formato Descripción


NEG tag FBD_MATH_ADVANCED estructura estructura NEG

274 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 Tipo de datos Descripción


entrada
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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 6

Valor absoluto (ABS) 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

Operando Tipo Formato Descripción


ABS tag FBD_MATH_ADVANCED estructura estructura ABS

Publicación 1756-RM003K-ES-P – Julio 2008 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 Tipo de datos Descripción


entrada
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 Ninguna.

278 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 Use esta instrucción Disponible en estos lenguajes Vea la página


copiar un valor MOV lógica de escalera de relés 283

texto estructurado(1)
copiar una parte específica de un número MVM lógica de escalera de relés 285
entero
copiar una parte específica de un número MVMT texto estructurado 288
entero en el bloque de funciones
bloque de funciones
mover bits dentro de un número entero o entre BTD lógica de escalera de relés 292
números enteros
mover bits dentro de un número entero o entre BTDT texto estructurado 295
números enteros en el bloque de funciones
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 SWPB lógica de escalera de relés 300
REAL
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: Disponible en estos lenguajes Vea la página


operación Y a nivel de bits Bitwise AND lógica de escalera de relés 304

&(1) 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 Boolean Exclusive OR texto estructurado(2) 323
booleanas. (BXOR)
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) Capítulo 7

Mover (MOV) 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

dest := source; Use una asignación “:=” con una expresión. Esta asignación mueve el
valor de source a dest.

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) Capítulo 7

Mover con máscara (MVM) 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 qué bits se bloquean o se pasan

INT tag

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)) Esta instrucción está disponible en texto estructurado como MVMT.
OR (Source AND Mask); 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 La condición de salida de renglón se establece como falsa.

286 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 La instrucción MVMT primero copia Target en Destination.


Seguidamente la instrucción compara Source enmascarado con
con receptor (MVMT) 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 Tipo de datos Descripción


entrada
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 Ninguna. Ninguna.
instrucción
EnableIn se borra EnableOut se borra, la instrucción no efectúa n. a.
ninguna operación y las salidas no se actualizan.
EnableIn se establece La instrucción se ejecuta. EnableIn siempre se establece.

EnableOut se establece. La instrucción se ejecuta.


post-escán Ninguna. Ninguna.

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 La instrucción BTD copia los bits especificados de Source, desplaza
los bits a la posición apropiada y escribe los bits en Destination.
(BTD)
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 DINT inmediato número del bit (número del bit más bajo)
desde donde empezar el movimiento
(0-31 DINT)
(0-15 INT) debe estar dentro del rango válido para el
(0-7 SINT) tipo de datos de Source
Destination SINT tag tag a donde mover los bits

INT

DINT
Destination DINT inmediato número del bit (número del bit más bajo)
bit desde donde empezar a copiar bits desde
Source
(0-31 DINT)
(0-15 INT) debe estar dentro del rango válido para el
(0-7 SINT) tipo de datos del destino
Length DINT inmediato número de bits que se van a mover
(1-32)

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) Capítulo 7

Distribuir campo de bits La instrucción BTDT primero copia Target en Destination.


Seguidamente, la instrucción BTD copia los bits especificados desde
con receptor (BTDT) 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 Tipo de datos Descripción:


entrada
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 Tipo de datos Descripción:


entrada
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 Tipo de datos: Descripción:
salida:
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 Ninguna. Ninguna.
instrucción
EnableIn se borra EnableOut se borra, la instrucción no efectúa n. a.
ninguna operación y las salidas no se actualizan.
EnableIn se establece La instrucción se ejecuta. EnableIn siempre se establece.

EnableOut se establece. La instrucción se ejecuta.


post-escán Ninguna. Ninguna.

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) Capítulo 7

Ejemplo: 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

dest := 0; Texto estructurado

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 La condición de salida de renglón se establece como falsa.

298 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 Si Source Y usted desea cambiar los bytes a este Entonces
es un patrón (cada letra representa un byte seleccione
diferente)
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)
Destination INT tag tag para almacenar los bytes en el nuevo orden
Si Source Entonces el destino debe ser un
DINT
es un
REAL INT INT
DINT
DINT DINT
REAL REAL

Texto estructurado
SWPB(Source,OrderMode,Dest);
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).

300 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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es verdadera verdadera.
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 Ninguna.
falsa.

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 valor con que se a realiza la operación AND
con Source A
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 := 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

Operando Tipo Formato Descripción


AND tag FBD_LOGICAL estructura estructura AND

304 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 Tipo de datos Descripción


entrada
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 Y el bit en El bit en Destination
Source A es Source B es 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 La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 7

O a nivel de bits (OR) 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 valor con que se realiza la
operación O con Source A
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 := 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

Operando Tipo Formato Descripción


OR tag FBD_LOGICAL estructura estructura OR

Publicación 1756-RM003K-ES-P – Julio 2008 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 Tipo de datos Descripción


entrada
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 Y el bit en El bit en Destination
Source A es Source B es 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 La condición de salida de renglón se establece como falsa.

308 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 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
(XOR) 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 valor con que se realiza la operación
XOR con Source A
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 := 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

Operando Tipo Formato Descripción


XOR tag FBD_LOGICAL estructura estructura XOR

310 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 Tipo de datos Descripción


entrada
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 Y el bit en El bit en
Source A es Source B es 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 La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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

Operando Tipo Formato Descripción


NOT tag FBD_LOGICAL estructura estructura NOT

314 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 Tipo de datos Descripción


entrada
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 El bit en Destination


Source es: 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 La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 7

Y booleano (BAND) 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
Use AND o el signo “&” como operador dentro de una expresión.
<statement>;
Los operandos deben ser valores BOOL o expresiones que resultan
END_IF; 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 Tipo de datos Descripción


entrada
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 Tipo de datos Descripción


entrada
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
Use OR como operador dentro de una expresión. Los operandos
<statement>;
deben ser valores BOOLEANOS o expresiones que resultan en valores
END_IF; 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 Tipo de datos Descripción


entrada
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) Capítulo 7

Parámetro de Tipo de datos Descripción


entrada
In8 BOOL Octava 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 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) Capítulo 7

O exclusivo booleano La instrucción BXOR realiza una operación O exclusivo de dos


entradas booleanas.
(BXOR)
Para realizar un XOR a nivel de bits, vea la página 310.

Operandos:

Texto estructurado
IF operandA XOR operandB THEN
Use XOR como operador dentro de una expresión. Los operandos
<statement>;
deben ser valores BOOLEANOS o expresiones que resultan en valores
END_IF; 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 Tipo de datos Descripción


entrada
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
Use NOT como operador dentro de una expresión. El operando debe
<statement>;
ser un valor BOOL o expresiones que resultan en valores BOOL. Esta
END_IF; 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 Tipo de datos Descripción


entrada
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 Vea la página


realizar operaciones aritméticas, lógicas, de FAL lógica de escalera de relés 335
desplazamiento y de funciones en valores en
matrices texto estructurado(1)
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

texto estructurado
copiar el contenido de una matriz en otra matriz CPS lógica de escalera de relés 356
sin interrupción
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 SRT lógica de escalera de relés 371
orden ascendente
texto estructurado
calcular la desviación estándar de una matriz STD lógica de escalera de relés 376
de valores
texto estructurado(1)
encontrar el tamaño de una dimensión de una SIZE lógica de escalera de relés 381
matriz
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 Para las instrucciones FAL y FSC, el modo indica al controlador cómo
distribuir la operación de la matriz.
operación
Si desea Seleccione este
modo
realizar una operación en todos los elementos Todos
especificados de una matriz antes de continuar con la
próxima instrucción
distribuir operaciones de matriz entre un número de Numérico
escanes

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 Incremental
condición de entrada de renglón cambia de falsa a
verdadera

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 el renglón es falso al concluir

múltiples escanes 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 40013

borra los bits de estado y borra los bits de estado


borra el valor .POS y borra el valor .POS

332 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 borra los bits de estado


concluida 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) Capítulo 8

Aritmética y lógica de La instrucción FAL realiza operaciones de copia, aritméticas, lógicas y


funciones en los datos almacenados en una matriz.
archivo (FAL)
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

INT

DINT

REAL
Expression SINT inmediato una expresión que consiste en tags
y/o valores inmediatos separados por
INT tag operadores

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:

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

336 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

Bit .DN = 0 no
examine el modo INC se borra el bit interno
bit .DN

bit .DN = 1 sí

no .LEN < 0 o sí
el bit .EN se borra el bit .EN se borra modo ALL fallo mayor
.POS < 0
el bit .ER se borra
el bit .DN se borra
el valor .POS se borra sí no

.POS = .POS + 1


.LEN = 0

no

.POS = 0

no
no .POS < .LEN

.POS = .POS - 1 sí

no
.LEN > modo
el bit .DN se establece
el bit .EN se establece

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

.LEN < 0 o sí página 341


.POS < 0 fallo mayor
Bit .ER = 0 modo
examinar el numérico
bit .ER no

bit .ER = 1 bit .DN = 0 no

no no
examinar el .LEN = 0 modo INC modo ALL
bit .DN

bit .DN = 1 sí sí sí

el bit .DN se establece


el bit .EN se establece modo modo
INC ALL

página 339 página 340


común

loop_count =
loop_count - 1

no
loop_count < 0 .POS = .POS + 1


evaluar la expresión

no
examinar S:V

.POS = .POS + 1 el bit .ER se establece

no
.POS = .LEN

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) Capítulo 8

Condición 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 .POS = .POS + 1
bit interno

bit = 0

el bit interno se establece

sí sí
.POS ≥ .LEN .POS = 0

no no

el bit .EN se .POS = .POS - 1


establece
loop_count = 1
.POS = .POS - 1
el bit .DN se establece
el bit .EN se establece

la condición de salida de
común renglón se establece como
verdadera
página 338

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

bit .EN = 0 bit = 1


examinar el examinar el
bit .EN bit interno

bit .EN = 1 bit = 0

.POS = .POS + 1 el bit .EN se establece

sí sí
.POS ≥ .LEN .POS = 0

no no

loop_count = .LEN - .POS .POS = .POS - 1


.POS = .POS - 1

el bit .DN se establece la condición de salida de


el bit .EN se establece renglón se establece como
común 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) Capítulo 8

Condición 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

sí sí
.POS ≥ .LEN .POS = 0

no no

.POS = .POS - 1
no
modo = .LEN .LEN ≥ modo


el bit .DN se establece la condición de salida de
el bit .EN se establece el bit .EN se establece renglón se establece como
loop_count = .LEN - .POS verdadera
.POS = .POS - 1

fin

modo ≥ sí
loop_count común

página 338
no

el bit .EN se establece


loop_count = modo

post-escán La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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: Destino:
array_2[control_2.pos] 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: Destino:
value_1 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: Destino:
array_1[control_1.pos] 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: Destino:
value_1 + value_2 array_1[control_1.pos]

342 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: Destino:
array_2[control_2.pos] / array_3[control_2.pos] 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: Destino:
array_1[control_1.pos] + value_1 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: Destino:
value_1 + array_1[control_1.pos] value_2

Publicación 1756-RM003K-ES-P – Julio 2008 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: Destino:
array_1[control_1.pos] * array_3[control_1.pos] 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 complemento a nivel DINT
de bits
/ dividir DINT, REAL
OR O a nivel de bits DINT
** exponente (x a la y) DINT, REAL
RAD grados a radianes DINT, REAL
ABS valor absoluto DINT, REAL
SIN seno REAL
ACS arco coseno REAL
SQR raíz cuadrada DINT, REAL
AND Y a nivel de bits DINT
TAN tangente REAL
ASN arco seno REAL
TOD entero a BCD DINT
ATN arco tangente REAL
TRN truncar DINT, REAL
COS coseno REAL
XOR O exclusivo a nivel de DINT
DEG radianes a grados DINT, REAL bits
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 Use este formato Ejemplos


que operan en
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.

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

346 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

Búsqueda y comparación La instrucción FSC compara los valores en una matriz, elemento por
elemento.
de archivos (FSC)
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:

Ocurrirá un fallo mayor si Tipo de fallo Código de fallo


.POS < 0 o .LEN < 0 4 21

Publicación 1756-RM003K-ES-P – Julio 2008 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

bit .DN = 0 no
examinar el modo INC se borra el bit interno
bit .DN

bit .DN = 1 sí

no .LEN < 0 o sí
el bit .EN se borra el bit .EN se borra modo ALL fallo mayor
el bit .ER se borra .POS < 0
el bit .DN se borra
el valor .POS se borra sí no

.POS = .POS + 1


.LEN = 0

no

.POS = 0

no
no .POS < .LEN

.POS = .POS - 1 sí

no
.LEN > modo
el bit .DN se establece
el bit .EN se establece

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

348 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

Condición Acción de lógica de escalera de relés


condición de entrada de renglón es verdadera
.LEN < 0 o sí página 341
.POS < 0 fallo mayor
bit .ER = 0 modo
examinar el numérico
bit .ER no

bit .ER = 1 bit .DN = 0 no

no no
examinar el .LEN = 0 modo INC modo ALL
bit .IN
bit .DN = 1
bit .IN = 0 sí sí sí

el bit .DN se establece


el bit .EN se establece modo modo
examinar el INC ALL
bit .DN
bit .DN = 1 página 339 página 340
común

bit .DN = 0

loop_count =
loop_count - 1

no
loop_count < 0 .POS = .POS + 1


evalúe la comparación

no
coincidencia

.POS = .POS + 1 el bit .EN se establece


el bit .FD se establece
el bit .IN se establece

no
.POS = .LEN

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 La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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 La instrucción FSC determina que estos
elementos son diferentes. La instrucción
00000000000000001111111111111111 11111111111111110000000000000000 4 establece los bits .FD e .IN. El valor .POS (4)
11111111111111111111111111111111 11111111111111111111111111111111 5 indica la posición de los elementos que son
diferentes. Para continuar comparando el
11111111111111111111111111111111 11111111111111111111111111111111 6
resto de la matriz, borre el bit .IN.
11111111111111111111111111111111 11111111111111111111111111111111 7
11111111111111111111111111111111 11111111111111111111111111111111 8
11111111111111111111111111111111 11111111111111111111111111111111 9

350 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 referencia control_3.pos

00000000000000000000000000000000 0
00000000000000000000000000000000 1
00000000000000000000000000000000 2
00000000000000000000000000000000 3
La instrucción FSC determina que este
11111111111111110000000000000000 11111111111111110000000000000000 4 elemento de matriz es igual a
11111111111111111111111111111111 5 MySearchKey. La instrucción establece los
bits .FD e .IN. El valor .POS (4) indica la
11111111111111111111111111111111 6 posición de los elementos que son iguales.
11111111111111111111111111111111 7 Para continuar comparando el resto de la
matriz, borre el bit .IN.
11111111111111111111111111111111 8
11111111111111111111111111111111 9

Publicación 1756-RM003K-ES-P – Julio 2008 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 code_table code_table_search.POS

AFG 0
BEH 1
HUO 2
SAK 3
La instrucción FSC determina que este
SAM SAM 4 elemento de la matriz es igual a code.
La instrucción establece los bits .FD e .IN.
FQG 5
El valor .POS (4) indica la posición de los
CLE 6 elementos que son iguales. Para continuar
CAK 7 comparando el resto de la matriz, borre el
bit .IN.
DET 8
BWG 9

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 complemento a nivel DINT
de bits
<= menor o igual que DINT, REAL
OR O a nivel de bits DINT
> mayor que DINT, REAL
RAD grados a radianes DINT, REAL
>= mayor o igual que DINT, REAL
SIN seno REAL
<> diferente de DINT, REAL
SQR raíz cuadrada DINT, REAL
** exponente (x a la y) DINT, REAL
TAN tangente REAL
ABS valor absoluto DINT, REAL
TOD entero a BCD DINT
ACS arco coseno REAL
TRN truncar DINT, REAL
AND Y a nivel de bits DINT
XOR O exclusivo a nivel de DINT
ASN arco seno REAL bits
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 Use este formato Ejemplos


que operan en
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.

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

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

Caracteres ASCII Códigos


hexadecimales
1ab $31$61$62
m m 1b $31$62
e a
A $41
n y
o o AB $41$42 AB < B
r r
B $42
a $61 a>B
ab $61$62

Publicación 1756-RM003K-ES-P – Julio 2008 355


Capítulo 8 Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Copiar archivo (COP) Las instrucciones COP y CPS copian el o los valores de Source en
Destination. Source no cambia.
Copiar archivo síncrono
(CPS)
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
DINT contrario, pueden ocurrir resultados
inesperados.
REAL

cadena

estructura
Destination SINT tag el elemento inicial que va a ser sobrescrito
por Source
INT
Importante: Los operandos Source y
DINT Destination deben ser del mismo tipo; de lo
contrario, pueden ocurrir resultados
REAL inesperados.

cadena

estructura
Length DINT inmediato número de elementos de destino que se
copian
tag

Texto estructurado
COP(Source,Dest,Length);
Los operandos son iguales que los de las instrucciones COP y CPS de
CPS(Source,Dest,Length);
lógica de escalera de relés.

356 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 Y usted desea Entonces Notas


seleccione
• tag producido evitar que los datos cambien durante CPS • Las tareas que intentan interrumpir
• tag consumido la operación de copia una instrucción CPS se suspenden
hasta que haya finalizado la
• datos de E/S instrucción.
• datos que otra tarea puede • Para calcular el tiempo de ejecución
sobrescribir de la instrucción CPS, consulte el
documento ControlLogix System User
Manual, publicación 1756-UM001.
permitir que los datos cambien COP
durante la operación de copia
ninguno de los anteriores 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 Si el conteo de bytes es mayor que la longitud de Source, se copian datos


inesperados para el resto de los elementos.

IMPORTANTE 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 Si Length es demasiado grande, la instrucción se detiene al
definido por el usuario 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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 sí end_address = fin de matriz de destino


de matriz de
destino

no

source_address = Source

destination_address = sí
end_address

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 La condición de salida de renglón se establece como Ninguna.


falsa.

358 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
DINT contrario. pueden ocurrir resultados
inesperados
REAL
Destination SINT tag elemento inicial que va a ser sobrescrito por
Source
INT
Importante: Los operandos Source y
DINT Destination deben ser del mismo tipo; de lo
contrario, pueden ocurrir resultados
REAL inesperados

estructura El método preferido para inicializar una


estructura es mediante la instrucción COP.
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 Si Length es demasiado grande, la instrucción se detiene al
definido por el usuario 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)

end_address > fin sí end_address = fin de una matriz de destino


de una matriz de
destino

no

source_address = Source


destination_address =
end_address

no

copiar los datos en source_address a


destination _address

la condición de salida de
renglón se establece como
destination_address = verdadera
destination_address + 1

fin

post-escán La condición de salida de renglón se establece como falsa.

364 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 Valor de Source Tipo de datos de Valor de


Source (value_1) (value_1) Destination Destination
(dest_1) (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 hallar el promedio de los valores en esta
matriz matriz
INT
especificar el primer elemento del grupo de
DINT elementos que se va a promediar

REAL no usar CONTROL.POS en el subíndice


Dimension DINT inmediato qué dimensión usar
to vary
(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:

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 4 20
especificada

Publicación 1756-RM003K-ES-P – Julio 2008 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

bit .DN = 0
examinar el bit .DN

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 La condición de salida de renglón se establece como falsa.

368 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
bín dimensión 1
d
0 1 2 3 4
ice
s

AVE = 19
0 20 19 18 17 16 + 14 + 9 + 4- = 46
------------------------------------ ------ = 11.5
4 4
1 15 14 13 12 11
dimensión 0
dint_ave = 12
2 10 9 8 7 6

3 5 4 3 2 1

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

su
b
índ dimensión 1

0 1 2 3 4
ice
s

AVE = 5---------------------------------------
0 20 19 18 17 16 + 4 + 3 + 2 + 1- = 15 ------ = 3
5 5
1 15 14 13 12 11
dimensión 0 dint_ave = 3
2 10 9 8 7 6

3 5 4 3 2 1

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) Capítulo 8

Clasificación de archivo La instrucción SRT clasifica un conjunto de valores en una dimensión


(Dim to vary) de la matriz en orden ascendente.
(SRT)
Operandos:

Lógica de escalera de relés

Operando Tipo Formato Descripción


Array SINT tag de matriz que se clasifica
matriz
INT especificar el primer elemento del grupo de
elementos que se clasifica
DINT
no use CONTROL.POS en el subíndice
REAL
Dimension DINT inmediato qué dimensión usar
to vary
(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:

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 4 20
para la matriz especificada
La instrucción intenta obtener acceso a los 4 20
datos fuera de los límites de la matriz.

372 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
bit .DN = 0
examinar el bit .DN

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 La instrucción se ejecuta. n. a.


renglón es verdadera
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 La instrucción clasifica los elementos especificados
en la matriz en orden ascendente. en la matriz en orden ascendente.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.

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

Antes Después
dimensión 1 dimensión 1

su
su

bín
bín

0 1 2 3 4

dic
d

0 1 2 3 4
ic e

es
s

0 20 19 18 17 16 0 20 19 3 17 16

1 15 14 13 12 11 1 15 14 8 12 11
dimensión 0 dimensión 0
2 10 9 8 7 6 2 10 9 13 7 6

3 5 4 3 2 1 3 5 4 18 2 1

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

Antes Después
dimensión 1 dimensión 1

su
su

bín
b
índ

0 1 2 3 4

dic
0 1 2 3 4
ice

se
s

0 20 19 18 17 16 0 20 19 18 17 16

1 15 14 13 12 11 1 15 14 13 12 11
dimensión 0 dimensión 0
2 10 9 8 7 6 2 6 7 8 9 10

3 5 4 3 2 1 3 5 4 3 2 1

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 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
archivo (STD) Destination.

Operandos:

Lógica de escalera de relés

Operando Tipo Formato Descripción


Array SINT tag de hallar la desviación estándar de los valores
matriz en esta matriz
INT
especificar el primer elemento del grupo de
DINT elementos que se usan para calcular la
desviación estándar
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 DINT inmediato qué dimensión usar
to vary
(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:

⎛ N ⎞
⎜ 2 ⎟
⎜∑
[ 〈 X – AVE 〉 ]
( start + i ) ⎟
Desviación estándar = ⎝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 Asegúrese de que Length no haga que la instrucción exceda la Dimension to vary
especificada. Si ocurre esto, el destino será incorrecto.

Publicación 1756-RM003K-ES-P – Julio 2008 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 4 20
en la matriz especificada

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

bit .DN = 0
examinar el bit .DN

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 La condición de salida de renglón se establece como falsa.

378 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
bín
0 1 2 3 4

di c
es
0 20 19 18 17 16

1 15 14 13 12 11
dimensión 0
AVE = 16 + 11 + 6 + 1- = 34 10 9 8 7 6
------------------------------------ ------ = 8.5 2
4 4
3 5 4 3 2 1

2 2 2 2
〈 16 – 8.5〉 + 〈 11 – 8.5〉 + 〈 6 – 8.5〉 + 〈 1 – 8.5〉 - = 6.454972
STD = --------------------------------------------------------------------------------------------------------------------------
〈 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

su
bín
0 1 2 3 4

dic
es
0 20 19 18 17 16

1 15 14 13 12 11
dimensión 0
2 10 9 8 7 6
AVE = 20 + 19 + 18 + 17 + 16- = 90
------------------------------------------------------ ------ = 18
5 5 3 5 4 3 2 1

2 2 2 2 2
〈 20 – 18〉 + 〈 19 – 18〉 + 〈 18 – 18〉 + 〈 17 – 18〉 + 〈 16 – 18〉 - = 1.581139
STD = -----------------------------------------------------------------------------------------------------------------------------------------------------------
〈 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) Capítulo 8

Tamaño en elementos La instrucción SIZE encuentra el tamaño de una dimensión de una


matriz.
(SIZE)
Operandos:

Lógica de escalera de relés

Operando Tipo Formato Descripción


Source SINT tag de la matriz en la cual la instrucción realizará la
matriz operación
INT

DINT

REAL

estructura

cadena
Dimension DINT inmediato dimensión que se va a usar:
to Vary (0, 1, 2)
Para el tamaño de Introduzca
primera dimensión 0
segunda dimensión 1
tercera dimensión 2

Size SINT tag 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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 La instrucción encuentra el tamaño de una
dimensión. dimensión.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.

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
Size inenElements
elementos
Source
Source array_a[0]
array_a[0]
255
255
Dim.
Dim.to Vary
To Vary 00
Tamaño
Size array_a_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
Size in en elementos
Elements
Source string_1.DATA[0]
Source string_1.DATA[0]
’$00’
'$00'
Dim.
Dim.toTo
Vary
Vary 00
Tamaño
Size string_1_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
Size inen elementos
Elements
Source strings_a[0].DATA[0]
Source strings_a[0].DATA[0]
’$00’
'$00'
Dim.
Dim.toTo
Vary
Vary 00
Tamaño
Size data_size_a
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 Disponible en estos lenguajes Vea la página


Cargar bits, desplazar bits y descargar bits de BSL lógica de escalera de relés 386
una matriz de bits, bit por bit.
BSR lógica de escalera de relés 390
Cargar y descargar valores en el mismo orden. FFL lógica de escalera de relés 394
FFU lógica de escalera de relés 400
Cargar y descargar valores en el orden LFL lógica de escalera de relés 406
invertido.
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 La instrucción BSL desplaza los bits especificados dentro de la matriz
una posición hacia la izquierda.
izquierda (BSL)
Operandos:

Lógica de escalera de relés

Operando Tipo Formato Descripción


Array DINT tag de matriz que se modifica
matriz
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

bit .EN = 1
examinar el bit .EN

bit .EN = 0

el bit .EN se establece


.LEN = 0 el bit .DN se establece

no

.source bit = 1
examinar el bit de el bit .UL permanece
origen establecido.

.LEN < 0 el bit .ER se establece

.source bit = 0

no
el bit .UL se establece.
desplazar matriz izquierda una posición a la
izquierda
bit de
bit .UL matriz origen

la condición de salida de
renglón se establece como
el bit .DN se establece verdadera

.POS = .LEN

fin

post-escán La condición de salida de renglón se establece como falsa.

388 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 1
0 estos bits se desplazan
input_1
a la izquierda
bit .UL
9 8 7 6 5 4 3 2 1 0
array_dint[0] 0 1 1 1 1 0 0 0 0 1
después del
desplazamiento

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
input_1

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

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 La instrucción BSR desplaza los bits especificados dentro de la matriz
una posición hacia la derecha.
derecha (BSR)
Operandos:

Lógica de escalera de relés

Operando Tipo Formato Descripción


Array DINT tag de matriz que se modifica
matriz
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

bit .EN = 1
examinar el bit .EN

bit .EN = 0

el bit .EN se establece


.LEN = 0 el bit .DN se establece

no

.source bit = 1
examinar el bit de el bit .UL permanece
origen establecido.

.LEN < 0 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 matriz bit .UL
origen

la condición de salida de
renglón se establece como
el bit .DN se establece verdadera

.POS = .LEN

fin

post-escán La condición de salida de renglón se establece como falsa.

392 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
0
1 estos bits se desplazan
a la derecha bit .UL
input_1
9 8 7 6 5 4 3 2 1 0
array_dint[0] 1 0 0 1 1 1 1 0 0 0
después del
desplazamiento

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 FIFO que se modifica
matriz
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:

Ocurrirá un fallo mayor si Tipo de fallo Código de fallo


(elemento inicial + .POS) > tamaño de la matriz 4 20
FIFO

Publicación 1756-RM003K-ES-P – Julio 2008 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

no


.POS < 0

no

el bit .EM se borra el bit .EM está establecido


el bit .DN se borra el bit .DN está establecido


.POS = 0 el bit .EM está establecido

no


.POS ≥ .LEN 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) Capítulo 9

Condición 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

no


.POS < 0

no

el bit .EM se borra el bit .EM está establecido


el bit .DN se borra el bit .DN está establecido


.POS = 0 el bit .EM está establecido

no


.POS ≥ .LEN 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

.EN = 0 sí
examinar el el bit .EN se establece .LEN < 0
bit .EN

.EN = 1 no

sí sí
.LEN < 0 .POS < 0

no no

el bit .EM se borra el bit .EM está


sí establecido
.POS < 0 el bit .DN se borra
el bit .DN está
.POS = .POS + 1 establecido
no
el bit .EM está
el bit .EM se borra establecido
el bit .DN está sí
el bit .DN se borra
establecido .POS ≥ .LEN el bit .DN se establece

no


.POS = 0 el bit .EM está establecido

.POS o sí
no .LEN > tamaño de fallo mayor
la matriz

no


.POS ≥ .LEN el bit .DN se establece


no .POS > .LEN .POS = .POS - 1

no

FIFO[.POS - 1] = origen

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.

398 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 después de la carga


FIFO FIFO
array_dint[0] 00000 00000
11111 11111
22222 22222
33333 control_1.pos = 5 33333
44444 value_1 = 55555 44444
array_dint[5] 00000 55555
00000 00000 control_1.pos = 6
00000 00000
00000 00000
00000 00000

Publicación 1756-RM003K-ES-P – Julio 2008 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 FIFO que se modifica
matriz
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:

Ocurrirá un fallo mayor si Tipo de fallo Código de fallo


Length > tamaño de la matriz FIFO 4 20

Publicación 1756-RM003K-ES-P – Julio 2008 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

no


.POS < 0

no

el bit .EM se borra el bit .EM está establecido


el bit .DN se borra el bit .DN está establecido


.POS = 0 el bit .EM está establecido

no


.POS ≥ .LEN 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) Capítulo 9

Condición 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

no


.POS < 0

no

el bit .EM se borra el bit .EM está establecido


el bit .DN se borra el bit .DN está establecido


.POS = 0 el bit .EM está establecido

no


.POS ≥ .LEN 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

.EU = 0 sí
examinar el el bit .EU está .LEN < 0
bit .EU establecido

.EU = 1 no

sí sí
.LEN < 0 .POS < 0

no no

el bit .EM se borra el bit .EM está


sí establecido
.POS < 0 el bit .DN se borra
el bit .DN está
establecido
no
el bit .EM está
el bit .EM se borra establecido .LEN > sí
tamaño de la fallo mayor
el bit .DN se borra el bit .DN está matriz
establecido
no


.POS = 0 el bit .EM está establecido sí
.POS ≤ 1 el bit .EM está establecido

no
no


sí .POS < 1 Destination = 0
.POS ≥ .LEN el bit .DN se establece

no
no
.POS = .POS -1
Destination = FIFO[0]
i=1

FIFO[i - 1] = FIFO[i]
i = i +1


i < .LEN

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

404 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 después de la descarga


FIFO FIFO
array_dint[0] 00000 11111
11111 22222
22222 33333
33333 44444
44444 55555
array_dint[5] 55555 00000 control_1.pos = 5
00000 control_1.pos = 6 00000 value_2 = 00000
00000 00000
00000 00000
00000 00000

Publicación 1756-RM003K-ES-P – Julio 2008 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 LIFO que se modifica
matriz
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:

Ocurrirá un fallo mayor si Tipo de fallo Código de fallo


(elemento inicial + .POS) > tamaño de la matriz 4 20
LIFO

Publicación 1756-RM003K-ES-P – Julio 2008 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

no


.POS < 0

no

el bit .EM se borra el bit .EM está establecido


el bit .DN se borra el bit .DN está establecido


.POS = 0 el bit .EM está establecido

no


.POS ≥ .LEN 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) Capítulo 9

Condición: 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

no


.POS < 0

no

el bit .EM se borra el bit .EM está establecido


el bit .DN se borra el bit .DN está establecido


.POS = 0 el bit .EM está establecido

no


.POS ≥ .LEN 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

.EN = 0 sí
examinar el el bit .EN se .LEN < 0
bit .EN establece

.EN = 1 no

sí sí
.LEN < 0 .POS < 0

no no

el bit .EM se borra el bit .EM está


sí establecido
.POS < 0 el bit .DN se borra
el bit .DN está
.POS = .POS + 1 establecido
no
el bit .EM está
el bit .EM se borra establecido
el bit .DN está sí
el bit .DN se borra
establecido .POS ≥ .LEN el bit .DN se establece

no


.POS = 0 el bit .EM está establecido

.POS o sí
no .LEN > tamaño de fallo mayor
la matriz

no


.POS ≥ .LEN el bit .DN se establece


no .POS > .LEN .POS = .POS - 1

no

LIFO[.POS - 1] = origen

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.

410 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 después de la carga


LIFO LIFO
array_dint[0] 00000 00000
11111 11111
22222 22222
33333 control_1.pos = 5 33333
44444 value_1 = 55555 44444
array_dint[5] 00000 55555
00000 00000 control_1.pos = 6
00000 00000
00000 00000
00000 00000

Publicación 1756-RM003K-ES-P – Julio 2008 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 LIFO que se modifica
matriz
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:

Ocurrirá un fallo mayor si Tipo de fallo Código de fallo


Length > tamaño de la matriz LIFO 4 20

Publicación 1756-RM003K-ES-P – Julio 2008 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

no


.POS < 0

no

el bit .EM se borra el bit .EM está establecido


el bit .DN se borra el bit .DN está establecido


.POS = 0 el bit .EM está establecido

no


.POS ≥ .LEN 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) Capítulo 9

Condición 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

no


.POS < 0

no

el bit .EM se borra el bit .EM está establecido


el bit .DN se borra el bit .DN está establecido


.POS = 0 el bit .EM está establecido

no


.POS ≥ .LEN 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

.EU = 0 sí
examinar el el bit .EU está .LEN < 0
bit .EU establecido

.EU = 1 no

sí sí
.LEN < 0 .POS < 0

no no

el bit .EM se borra el bit .EM está


sí establecido
.POS < 0 el bit .DN se borra
el bit .DN está
establecido
no
el bit .EM está
el bit .EM se borra establecido sí
.POS ≤ 1 el bit .EM está establecido
el bit .DN se borra el bit .DN está
establecido
no

sí sí
.POS = 0 el bit .EM está establecido .POS < 1 Destination = 0

no no


.POS > .LEN .POS = .LEN

.POS ≥ .LEN el bit .DN se establece
no
no
.POS = .POS -1

.LEN > sí
tamaño de la fallo mayor
matriz

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 La condición de salida de renglón se establece como falsa.

416 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 después de la descarga


LIFO LIFO
array_dint[0] 00000 00000
11111 11111
22222 22222
33333 33333
44444 44444
array_dint[5] 55555 00000 control_1.pos = 5
00000 control_1.pos = 6 00000 value_2 = 55555
00000 00000
00000 00000
00000 00000

Publicación 1756-RM003K-ES-P – Julio 2008 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 No se toma ninguna acción. Las instrucciones de secuenciador


monitorean operaciones uniformes y repetibles.

Si desea 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 SQO lógica de escalera de relés 424
siguiente paso
Cargar condiciones de referencia en matrices SQL lógica de escalera de relés 428
de secuenciador

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 La instrucción SQI detecta cuándo ha concluido un paso en una


pareja de instrucciones de secuencia SQO/SQI.
(SQI)
Operandos:

Lógica de escalera de relés

Operando Tipo Formato Descripción


Array DINT tag de matriz de secuenciador
matriz
especifica el primer elemento de la matriz de
secuenciador

no use CONTROL.POS en el subíndice


Mask SINT tag qué bits se bloquean o se pasan

INT inmediato

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 no
o el bit .ER se borra
.POS > .LEN

el bit .ER se establece

Source
no enmascarada =
Array[.POS]
enmascarada

la condición de salida de la condición de salida de


renglón se establece como renglón se establece como
falsa verdadera

fin

post-escán La condición de salida de renglón se establece como falsa.

422 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 La instrucción SQO establece condiciones de salida para el siguiente


paso de una pareja de instrucciones SQO/SQI de secuencia.
(SQO)
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 qué bits se bloquean o se pasan

INT inmediato

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

el bit .EN se establece


.LEN ≤ 0 o no
examine el
.EN = 0
.POS < 0 el bit .ER se borra
bit .EN
el bit .DN se establece
sí .EN = 1

no sí
.POS = .LEN .POS ≥ .LEN .POS = 1

sí no

el bit .DN se establece .POS = .POS + 1

el valor sí ir a
.POS retorna al
valor inicial error

no


.POS = .LEN el bit .DN se establece

no

no
.POS > .LEN

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 La condición de salida de renglón se establece como falsa.

426 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 La instrucción SQL carga condiciones de referencia en una matriz de


secuenciador.
(SQL)
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 datos de entrada que se van a cargar en la
matriz de secuenciador
INT inmediato

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

el bit .EN se establece


.LEN ≤ 0 o no
examine el
.EN = 0
.POS < 0 el bit .ER se borra
bit .EN
el bit .DN se establece
sí .EN = 1

no sí
.POS = .LEN .POS ≥ .LEN .POS = 1

sí no

el bit .DN se establece .POS = .POS + 1

el valor sí ir a
.POS retorna al error
valor inicial

no


.POS = .LEN el bit .DN se establece

no

no
.POS > .LEN


.LEN > sí
tamaño de la
error matriz

no
fallo mayor

el bit .ER se establece Array[control.POS] = Source

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.

430 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


array_dint[0] 00000 00000
11111 11111
22222 22222
33333 control_1.pos = 5 33333
44444 value_3 = 55555 44444
array_dint[5] 00000 55555
00000 00000 control_1.pos = 6
00000 00000
00000 00000
00000 00000

Publicación 1756-RM003K-ES-P – Julio 2008 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 JMP lógica de escalera de relés 434
necesita ejecutarse. LBL
Saltar a una rutina separada, pasar datos a la JSR lógica de escalera de relés 436
rutina, ejecutar la rutina y retornar resultados. SBR
RET bloque de funciones
texto estructurado
Saltar a una rutina externa (controlador JXR lógica de escalera de relés 447
SoftLogix5800 solamente)
Marcar un fin temporal que detiene la TND lógica de escalera de relés 450
ejecución de la rutina.
texto estructurado
Inhabilitar todos los renglones en una sección MCR lógica de escalera de relés 452
de lógica.
Inhabilitar tareas de usuario. UID lógica de escalera de relés 454
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 EOT lógica de escalera de relés 458
función secuencial
texto estructurado
Poner en pausa un diagrama de función SFP lógica de escalera de relés 460
secuencial
texto estructurado
Restablecer un diagrama de función secuencial SFR 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) Las instrucciones JMP y LBL saltan porciones de la lógica de escalera.
Etiqueta (LBL)
Operandos:

Lógica de escalera de relés

Operando Tipo Formato Descripción


instrucción JMP
Nombre de nombre de introduzca un nombre para la instrucción LBL
etiqueta etiqueta asociada
instrucción LBL
Nombre de nombre de la ejecución salta a la instrucción LBL con el
etiqueta etiqueta nombre de etiqueta al cual se hizo referencia

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) La instrucción JSR salta la ejecución a una rutina diferente. Las
instrucciones SBR y RET son instrucciones opcionales que
Subrutina (SBR) Retorno intercambian datos con la instrucción JSR.
(RET)
Operandos de JSR:

Lógica de escalera de relés


Operando Tipo Formato Descripción
Nombre de ROUTINE nombre rutina a ejecutar (es decir, subrutina)
la rutina
Parámetro BOOL inmediato datos de esta rutina que desea copiar a un
de entrada tag en la subrutina
SINT tag
• Los parámetros de entrada son
INT tag de opcionales.
matriz • Introduzca múltiples parámetros de
DINT entrada, si es necesario.
REAL

estructura
Parámetro BOOL tag el tag en esta rutina al cual desea copiar un
de retorno resultado de la subrutina
SINT tag de
matriz • Los parámetros de retorno son
INT opcionales.
• Introduzca múltiples parámetros de
DINT 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, Operando Tipo Formato Descripción
InputPar,ReturnPar);
Nombre de ROUTINE nombre rutina a ejecutar (es decir, subrutina)
la rutina
Conteo de SINT inmediato número de parámetros de entrada
entradas
INT

DINT

REAL
Parámetro BOOL inmediato datos de esta rutina que desea copiar a un
de entrada tag en la subrutina
SINT tag
• Los parámetros de entrada son
INT tag de opcionales.
matriz • Introduzca múltiples parámetros de
DINT entrada, si es necesario.
REAL

estructura
Parámetro BOOL tag el tag en esta rutina al cual desea copiar un
de retorno resultado de la subrutina
SINT tag de
matriz • Los parámetros de retorno son
INT opcionales.
• Introduzca múltiples parámetros de
DINT retorno, si es necesario.
REAL

estructura

Bloque de funciones
Parámetros de Parámetros de
entrada 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)

ATENCIÓN 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.

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 BOOL tag el tag en esta rutina al cual desea copiar el
de entrada parámetro de entrada correspondiente
SINT tag de proveniente de la instrucción JSR.
matriz
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 BOOL inmediato datos de esta rutina que usted desea copiar
de retorno al parámetro de retorno correspondiente en
SINT tag 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.

SBR
Rutina que origina la llamada Subrutina
1. Si la instrucción JSR tiene un
parámetro de entrada, introduzca una
SBR
instrucción SBR.
JSR JSR
2. Coloque la instrucción SBR como la
1. Si desea copiar datos a un tag en la primera instrucción en la rutina.
RET
subrutina, introduzca un parámetro de
entrada. 3. Para cada parámetro de entrada en la
instrucción JSR, introduzca el tag en
2. Si desea copiar un resultado de la RET el cual desea copiar los datos.
subrutina a un tag en esta rutina,
introduzca un parámetro de retorno. 42974

3. Introduzca la cantidad necesaria de RET


parámetros de entrada y retorno.
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 SBR SBR
action_1
JSR
action_2 action_3
JSR 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 La subrutina no se ejecuta. n. a.
renglón es falsa para la
instrucción JSR 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 La instrucción se ejecuta. n. a.
renglón es verdadera
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í JSR copia los parámetros de


parámetros de entrada en los tags SBR
entrada apropiados

no

la ejecución de lógica comienza


en la rutina identificada por JSR

sí sí RET copia los parámetros de


instrucción RET parámetros de retorno en los tags JSR
retorno apropiados

no no


fin de la subrutina

no
la condición de salida de renglón se
establece como verdadera
la condición de salida de renglón
se establece como falsa la ejecución de la lógica regresa a JSR
continuar ejecutando la subrutina

fin

post-escán La misma acción que el preescán antes descrito. La misma acción que el preescán antes descrito.

442 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 3. El valor de Sum_A_B_C se copia


Add_Input_1, en Add_Three_Result.
Add_Input_2 y
Add_Input_3 se copian
en Input_A, Input_B y
Input_C,
respectivamente.

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) Capítulo 11

Salto a rutina externa (JXR) 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 ROUTINE nombre rutina externa que se va a ejecutar
rutina externa
Control de rutina EXT_ROUTINE_ tag estructura de control (ver la siguiente página)
externa CONTROL
Parámetro BOOL inmediato datos de esta rutina que desea copiar a una variable en la rutina externa

SINT tag • Los parámetros son opcionales.


• Introduzca múltiples parámetros, si es necesario.
INT tag de matriz
• Puede tener hasta 10 parámetros.
DINT

REAL

estructura
Parámetro de BOOL tag el tag en esta rutina al cual desea copiar un resultado de la rutina externa
retorno
SINT • El parámetro de retorno es opcional
• Sólo puede tener un parámetro de retorno
INT

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. No hay códigos de error predefinidos. El
Los valores válidos son 0-255. 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 Visualización solamente – esta información
asociados con esta instrucción. proviene de la entrada de la instrucción.
ParameterDefs EXT_ROUTINE_ Esta matriz contiene definiciones de los Visualización solamente – esta información
PARAMETERS[10] parámetros que se van a pasar a la rutina proviene de la entrada de la instrucción.
externa. La instrucción puede pasar hasta
10 parámetros.
ReturnParamDef EXT_ROUTIN_ Este valor contiene definiciones del parámetro Visualización solamente – esta información
PARAMETERS de retorno de la rutina externa. Sólo hay un proviene de la entrada de la instrucción.
parámetro de retorno.
EN BOOL Cuando se establece, el bit de habilitación La rutina externa establece este bit.
indica que la instrucción JXR está habilitada.
ReturnsValue BOOL Si se establece, este bit indica que se introdujo Visualización solamente – esta información
un parámetro de retorno para la instrucción. Si proviene de la entrada de la instrucción.
se borra, este bit indica que no se introdujo un
parámetro de retorno para la instrucción.
DN BOOL El bit de efectuado se establece cuando la La rutina externa establece este bit.
rutina externa se ha ejecutado una vez hasta el
final.
ER BOOL El bit de error se establece si ocurre un error. La rutina externa establece este bit.
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 El controlador establece este bit para reflejar
después de que el controlador pasó al modo de el estado de escán.
marcha. Use FirstScan para inicializar la rutina
externa, si es necesario.
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 Estos bits están disponibles para el usuario. La rutina externa o el programa de usuario
El controlador no inicializa estos bits. pueden establecer estos bits.
User0 BOOL
ScanType1 BOOL Estos bits identifican el tipo de escán actual: El controlador establece estos bits para
reflejar el estado de escán.
ScanType0 BOOL
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)

448 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 Tipo de fallo Código de


fallo:
• ocurre una excepción en la rutina externa DLL 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

TND(); Texto estructurado

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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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. Se termina la rutina actual.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.

450 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 La instrucción MCR, usada en parejas, crea una zona de programa que
puede inhabilitar todos los renglones dentro de las instrucciones MCR.
control maestro (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 La instrucción UID y la instrucción UIE funcionan juntas para evitar


que otras tareas interrumpan una cantidad pequeña de renglones
interrupción de usuario críticos.
(UID)
Habilitación de interrupció
n de usuario (UIE)
Operandos:

Lógica de escalera de relés

ninguno

UID(); Texto estructurado


UIE();
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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 Ninguna.
falsa.

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
File Search/Compare EN
EN
Control
Control error_check
error_check DN
Length
Length 10 ER
ER
Position
Position 8
Mode
Mode ALL
ALL
Expression
Expression error_code=error_list[error_check.POS]
error_code=error_list[error_check.POS]

error_check.FD
error_check.FD alarm
alarm

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 La instrucción AFI establece su condición de salida de renglón como
falsa.
(AFI)
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) Capítulo 11

Sin operación (NOP) 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

Operando Tipo Formato Descripción


bit de datos BOOL tag estado de la transición
(0=en ejecución, 1=completada)

EOT(data_bit); 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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 ROUTINE nombre rutina SFC que se va a poner en pausa
Name
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:

Ocurrirá un fallo mayor si: Tipo de fallo Código de fallo


el tipo de rutina no es una rutina SFC 4 85

460 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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 Ninguna.
falsa.

Ejemplo: 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 ROUTINE nombre rutina SFC que se va a restablecer
Name
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 4 89
en la rutina SFC

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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 Ninguna.
falsa.

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 La instrucción EVENT activa una ejecución de una tarea de evento.
(EVENT)
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.

EVENT(task_name); Texto estructurado

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
Para determinar si: Examine este bit:
Una instrucción EVENT activó la tarea (tarea de 0
evento solamente).
Al expirar un tiempo de espera se activó la tarea 1
(tarea de evento solamente).
Ocurrió una superposición para esta tarea. 2

464 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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 activa una ejecución de la tarea de evento especificada
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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 Use esta instrucción Disponible en estos lenguajes Vea la página


Ejecutar repetidamente una rutina. Para obtener lógica de escalera de relés 470

FOR...DO(1) texto estructurado


Interrumpir la ejecución repetida de una rutina. BRK lógica de escalera de relés 473

EXIT(1) texto estructurado


Retornar a la instrucción FOR. RET lógica de escalera de relés 474
(1) 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 ROUTINE nombre de la rutina que se ejecuta
name 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 SINT inmediato valor en que se detiene la ejecución de la
value rutina
INT tag

DINT
Step size SINT inmediato cantidad que se añade al índice cada vez
que la instrucción FOR ejecuta la rutina
INT tag

DINT

Texto estructurado
FOR count:= initial_value TO
final_value BY increment DO Use la construcción FOR...DO. Consulte Apéndice C, Programación de
<statement>;
texto estructurado para obtener información sobre construcciones de
texto estructurado.
END_FOR;

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 4 31
RET

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 La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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

no
ir a índice ≤ valor terminal
fin

sí sí no
ir a
índice ≥ valor terminal 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) Capítulo 12

Interrumpir (BRK) 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 4 31
RET

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 La condición de salida de renglón se establece como falsa.

474 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 subrutina

Publicación 1756-RM003K-ES-P – Julio 2008 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 Las instrucciones especiales realizan operaciones específicas de la


aplicación.

Si desea Use esta instrucción Disponible en estos lenguajes: Vea la página


Comparar datos con una buena referencia FBC lógica de escalera de relés 478
conocida y registrar las incongruencias.
Comparar datos con una buena referencia DDT lógica de escalera de relés 486
conocida, registrar las incongruencias y
actualizar la referencia para que sea igual al
origen.
Pasar los datos de origen a través de una DTR lógica de escalera de relés 494
máscara y comparar los resultados con los
datos de referencia. Seguidamente escribir el
origen en la referencia para la siguiente
comparación.
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 La instrucción FBC compara los bits en una matriz de origen con los
bits en una matriz de referencia.
archivo (FBC)
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 estructura estructura de control para los resultados
control
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 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.

478 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:

Ocurrirá un fallo mayor si: Tipo de fallo Código de fallo


result.POS > tamaño de matriz resultado 4 20

480 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 = 0


compare.DN

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 = 0


compare.DN

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) Capítulo 13

Condición Acción de lógica de escalera de relés

condición de entrada de renglón es verdadera

examine el bit compare.EN = 1


compare.EN ir a la
salida

compare.EN = 0

examine el bit compare.DN = 1 ir a la


El bit compare.EN se
establece compare.DN salida

compare.DN = 0

el bit compare.ER se borra sí


compare.LEN ≤ 0
el bit compare.FD se borra

no


compare.POS < 0
exit

el bit compare.ER se
no 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 ≥ sí compare.POS = compare.LEN ir a la


compare.LEN el bit compare.DN se establece salida
página 483
no

result.DN = 1
no el bit result.DN se borra
source[compare.POS] = el bit compare.FD se examine el bit el valor result.POS se
reference[compare.POS] establece result.DN bit borra

sí result.DN = 0

compare.POS =
compare.POS + 1

result.POS < 0

no


result.LEN ≤ 0

no el bit compare.ER se
establece

sí result.POS >
tamaño de ir a la
fallo mayor salida
matriz
resultado
página 483
no

result[result.POS] = compare.POS
result.POS = result.POS + 1

no result.POS >
result.LEN

el bit result.DN se establece

post-escán La condición de salida de renglón se establece como falsa.

484 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 5 3
array_dint3

Publicación 1756-RM003K-ES-P – Julio 2008 485


Capítulo 13 Instrucciones especiales (FBC, DDT, DTR, PID)

Detección de diagnóstico 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.
(DDT)
Operandos:

Lógica de escalera de relés

Operando Tipo Formato Descripción


Source DINT tag de matriz que se va a comparar con la referencia
matriz
no use CONTROL.POS en el subíndice
Reference DINT tag de matriz que se va a comparar con el origen
matriz
no use CONTROL.POS en el subíndice
Result DINT tag de matriz para almacenar los resultados
matriz
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 estructura estructura de control para los resultados
control
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 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.

486 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 Código de fallo


result.POS > tamaño de matriz resultado 4 20

488 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 = 0


compare.DN

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 = 0


compare.DN

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) Capítulo 13

Condición: Acción de lógica de escalera de relés

condición de entrada de renglón es verdadera

examine el bit compare.EN = 1 ir a la


compare.EN salida

compare.EN = 0

examine el bit bit compare.DN = 1 ir a la


El bit compare.EN se compare.DN
establece salida

bit compare.DN = 0

el bit compare.ER se borra sí


el bit compare.FD se borra compare.LEN ≤ 0

no


compare.POS < 0
salida

el bit compare.ER se
no 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 ≥ sí compare.POS = compare.LEN ir a la


compare.LEN el bit compare.DN se establece salida
página 491
no

result.DN = 1
compare.FD bit se
no establece el bit result.DN se borra
source[compare.POS] = examine el bit el valor result.POS se
reference[compare.POS] reference[compare.POS] result.DN bit
= source[compare.POS] borra

sí result.DN = 0

compare.POS =
compare.POS + 1

result.POS < 0

no


result.LEN ≤ 0

no el bit compare.ER se
establece

sí result.POS > ir a la
fallo mayor tamaño de matriz salida
resultado
página 483
no

result[result.POS] = compare.POS
result.POS = result.POS + 1

no result.POS ≥
result.LEN

el bit result.DN se establece

post-escán La condición de salida de renglón se establece como falsa.

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

494 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 no
enmascarado = la referencia se establece igual que el origen
referencia enmascarado
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 La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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 9 1 8 7
value_1

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 0 1 8 7 escán actual


value_2
escán previo 0 1 8 3 0 1 8 3 escán previo

El renglón permanece falso siempre que el El renglón permanece verdadero por un


valor de entrada no cambie. 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) Capítulo 13

Proporcional integral La instrucción PID controla una variable del proceso, tal como flujo,
presión, temperatura o nivel.
derivativo (PID)
Operandos:
Lógica de escalera de relés

Operando Tipo Formato Descripción


PID PID estructura estructura PID
Process SINT tag valor que desea controlar
variable
INT

DINT

REAL
Tieback SINT inmediato (opcional) salida de una estación manual/automática que está pasando por alto la salida del
controlador
INT tag
Introduzca 0 si no desea usar este parámetro.
DINT

REAL
Control SINT tag valor que va al dispositivo de control final (válvula, regulador, etc.)
variable
INT 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 PID estructura (opcional) tag PID para el PID maestro
loop
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 Instrucciones especiales (FBC, DDT, DTR, PID)

Operando Tipo Formato Descripción


Setpoint muestra el valor actual del punto de ajuste
Process muestra el valor actual de la variable del proceso escalada
variable
Output % muestra el valor de porcentaje de la salida actual

Texto estructurado
PID(PID,ProcessVariable, Los operandos son iguales que los de la instrucción PID de lógica de
Tieback,ControlVariable, escalera de relés. Sin embargo, usted especifica Setpoint, Process
PIDMasterLoop,InholdBit, Variable y Output % accediendo a los miembros .SP, .PV. y .OUT de la
InHoldValue); estructura PID, en lugar de incluir valores en la lista de operandos.

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) Capítulo 13

Mnemónico: Tipo de datos Descripción


.KI REAL independiente ganancia integral (1/segundo)
dependiente tiempo de acción integral (minutos por repetición)
.KD REAL independiente ganancia derivativa (segundos)
dependiente tiempo de acción derivada (minutos)
.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 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) Capítulo 13

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í)

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

Publicación 1756-RM003K-ES-P – Julio 2008 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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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. 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 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
PID 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 Habilite o inhabilite esta selección (.NOZC).
deadband
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.

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

504 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 Introduzca el valor máximo de unidades de ingeniería correspondiente a .MAXI (.MAXS)
maximum
PV engineering units Introduzca el valor mínimo de unidades de ingeniería correspondiente a .MINI (.MINS)
minimum
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 Ecuación


Ganancias dependientes error (E)
(estándar ISA) t
1 dE
CV = K C E + ---- ∫ Edt + T d ------- + BIAS
Ti dt
0

variable de proceso (PV)


E = SP - PV
t
1 dPV
CV = K C E + ---- ∫ Edt – T d ----------- + BIAS
Ti dt
0

E = PV - SP
t
1 dPV
CV = K C E + ---- ∫ Edt + T d ----------- + BIAS
Ti dt
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 Marque la casilla de verificación de retener para inicialización (“hold for
analógicas 1756 que recibe la variable de control initialization”) en la página de propiedades del canal específico del módulo.
proveniente de la instrucción PID

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 El módulo de salidas analógicas 1756 retorna dos valores por cada canal en su
en la instrucción PID 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);

Para este parámetro de multiplicación Introduzca este valor


destination valor controlado
source A valor no controlado
source B relación

516 Publicación 1756-RM003K-ES-P – Julio 2008


Instrucciones especiales (FBC, DDT, DTR, PID) Capítulo 13

Teoría de PID Las siguientes figuras muestran el flujo del proceso para una
instrucción PID.

Proceso PID
SP Error
Mostrado mostrado
como EU como EU

Software A/M
o bien % de
Modo de Acción de polarización
estación A/M de salida
control
Modo A/M de % salida
Auto SP-PV software establecida
Convierte unidades Modo de
(Error) de ingeniería a % (Out%) Auto estación A/M
+ Cálculo PID +
- Error X 100 Auto Convierte % a unidades CV
SP Manual -1
PV-SP maxs-mins Límite de CV
PVT Manual salida CV%(maxcv-mincv)
+ mincv
No % salida Manual 100
establecida
PV
Mostrado Salida (CV)
Sí como EU mostrada como
% de escalado
Convierte de binario a EU
Convierte unidades de
unidades de ingeniería valor retenido a %
(PV-mini)(maxs-mins) + mins tieback-mintie
maxi-mini x 100
maxtie-mintie

PV

Proceso PID con lazos maestro/esclavo


Lazo
maestro A/M de software % de
o bien Acción de polarización
Modo de estación A/M control de salida
Modo A/M de % salida
Auto SP-PV software Modo de establecida
Convierte unidades
estación A/M
+
(Error) de ingeniería a %
Cálculo PID (Out%) +
Auto
- Auto
SP -1 Error X 100
Manual (Master.Out)
PV-SP maxs-mins Límite de
PVT % salida Manual salida
No establecida Manual

Modo A/M de
Sí software
Auto
Convierte de binario a Convierte
SP unidades de
unidades de ingeniería ingeniería a % Manual
(PV-mini)(maxs-mins) Error X 100 Manual
+ mins PV
maxi-mini maxs-mins Los ítems referidos en este cuadro
son parámetros, unidades y modos
que pertenecen al lazo esclavo
designado.
PV
Lazo % de
esclavo Acción de polarización
control de salida
% salida
Modo A/M de establecida
Convierte % a unidades (SP) SP-PV Convierte software Modo de
(Master.Out) de ingeniería unidades de
+ ingeniería a % Cálculo PID Auto estación A/M
X (maxs-mins) - +
+ mins -1 Error X 100 Auto Convierte % a unidades CV
100 PV-SP maxs-mins Límite de
Manual salida CV%(maxcv-mincv)
% salida + mincv
Convierte de binario a Manual 100
unidades de ingeniería establecida
(PV-mini)(maxs-mins)
+ mins Convierte unidades de
maxi-mini
valor retenido a %
tieback-mintie x 100
maxtie-mintie
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 Las instrucciones trigonométricas evalúan las operaciones aritméticas


mediante operaciones trigonométricas.

Si desea 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 520
texto estructurado
bloque de funciones
Hallar el coseno de un valor. COS lógica de escalera de relés 523
texto estructurado
bloque de funciones
Hallar la tangente de un valor. TAN lógica de escalera de relés 526
texto estructurado
bloque de funciones
Hallar el arco seno de un valor. ASN lógica de escalera de relés 529
texto estructurado
ASIN(1) bloque de funciones
Hallar el arco coseno de un valor. ACS lógica de escalera de relés 532
texto estructurado
ACOS(1) bloque de funciones
Hallar el arco tangente de un valor. ATN lógica de escalera de relés 535
texto estructurado
ATAN(1) 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 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 Tipo de datos Descripción


entrada
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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 14

Coseno (COS) 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

Operando Tipo Formato Descripción


COS tag FBD_MATH_ADVANCED estructura estructura COS

Publicación 1756-RM003K-ES-P – Julio 2008 523


Capítulo 14 Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)

Estructura FBD_MATH_ADVANCED

Parámetro de Tipo de datos Descripción


entrada
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 La condición de salida de renglón se establece como falsa.

524 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

Operando Tipo Formato Descripción


TAN tag FBD_MATH_ADVANCED estructura Estructura TAN

526 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 Tipo de datos Descripción


entrada
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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 14

Arco seno (ASN) 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 Tipo de datos Descripción


entrada
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 Ninguna.

530 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 Tipo de datos Descripción


entrada
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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 14

Arco tangente (ATN) 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 Tipo de datos Descripción


entrada
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 Ninguna.

536 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 Las instrucciones matemáticas avanzadas incluyen estas instrucciones:

Si desea Use esta instrucción Disponible en estos lenguajes Vea la página


Hallar el logaritmo natural de un valor. LN lógica de escalera de relés 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 Tipo de datos Descripción


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

540 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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 15

Logaritmo base 10 (LOG) 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

Operando Tipo Formato Descripción


LOG tag FBD_MATH_ADVANCED estructura Estructura LOG

Publicación 1756-RM003K-ES-P – Julio 2008 543


Capítulo 15 Instrucciones matemáticas avanzadas (LN, LOG, XPY)

Estructura FBD_MATH_ADVANCED

Parámetro de Tipo de datos Descripción


entrada
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 Ninguna.

544 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 exponente

INT tag

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

Operando Tipo Formato Descripción


XPY tag FBD_MATH estructura estructura XPY

546 Publicación 1756-RM003K-ES-P – Julio 2008


Instrucciones matemáticas avanzadas (LN, LOG, XPY) Capítulo 15

Estructura FBD_MATH

Parámetro de Tipo de datos Descripción


entrada
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 4 4
entero

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 La condición de salida de renglón se establece como falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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 Las instrucciones de conversión matemática convierten valores.

Si desea Use esta instrucción Disponible en estos lenguajes Vea la página


Convertir radianes en grados. DEG lógica de escalera de relés 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 561

TRUNC(1) texto estructurado

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 Tipo de datos Descripción


entrada
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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 16

Radianes (RAD) 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 Tipo de datos Descripción


entrada
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 Ninguna.

554 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 Tipo de datos Descripción


entrada
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 no
origen < 0 origen > 99,999,999 convertir origen en BCD

sí 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 Ninguna.

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 16

Convertir a entero (FRD) 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 Tipo de datos Descripción


entrada
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) Capítulo 16

Truncar (TRN) 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 Tipo de datos Descripción


entrada
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 Ninguna.

562 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 Use esta Disponible en estos Vea la


instrucción lenguajes página
determinar cuándo el búfer contiene ver si hay datos que tienen caracteres ABL lógica de escalera de 570
caracteres de terminación de terminación relés

texto estructurado
contar los caracteres en el búfer verificar el número requerido de ACB lógica de escalera de 573
caracteres antes de leer el búfer relés

texto estructurado
borrar el búfer • borrar datos antiguos del búfer al ACL lógica de escalera de 575
momento de la puesta en marcha relés
borrar las instrucciones del puerto
serie ASCII que actualmente se están • sincronizar el búfer con un
dispositivo texto estructurado
ejecutando o están en la cola.
obtener el estado de las líneas de hacer que el módem cuelgue AHL lógica de escalera de 577
control del puerto serie relés
activar y desactivar la señal DTR
texto estructurado
activar y desactivar la señal RTS
leer un número fijo de caracteres leer datos desde un dispositivo que ARD lógica de escalera de 581
envía el mismo número de caracteres relés
durante cada transmisión
texto estructurado
leer un número variable de leer datos desde un dispositivo que ARL lógica de escalera de 585
caracteres, inclusive el primer envía un número variable de relés
conjunto de caracteres de caracteres en cada transmisión
terminación texto estructurado
enviar caracteres y añadir enviar mensajes que siempre usan AWA lógica de escalera de 589
automáticamente uno o dos los mismos caracteres de terminación relés
caracteres adicionales para marcar
el final de los datos texto estructurado
enviar caracteres enviar mensajes que usan una AWT lógica de escalera de 594
variedad de caracteres de relés
terminación
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 Cola ASCII Tarea ASCII


La condición de entrada
Instrucción 1 La instrucción en la
de renglón de
parte superior de la
instrucción cambia de Instrucción 2 cola se ejecuta.
falsa a verdadera
Instrucción 3

Instrucción 4
Los datos fluyen
La instrucción entra en entre la tarea y el
la cola ASCII. búfer.

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 falsa verdadera falsa verdadera falsa


entrada de renglón

.EN desacti- activado desactivado activado desacti-


vado vado

.EU desacti- activado


vado

.RN desacti- acti- desacti- acti- desacti-


vado vado
vado vado vado

.DN o .ER desacti- activado desacti- activado


vado vado

.FD desacti- activado desacti- activado


vado vado

.EM desacti- activado desactivado activado


vado

entra en la cola restablece los bits de estado

se ejecuta cuando se escanean y el bit


.DN o .ER está establecido,
en este ejemplo, se establece el bit .EM
encuentra caracteres
de terminación

Publicación 1756-RM003K-ES-P – Julio 2008 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 escán escán escán

condición de falsa verdadera falsa


entrada de renglón

.EN desacti- activado


vado

.EU desacti- activado


vado

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 Indica que


hexadecimal
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 número de caracteres El LEN se actualiza automáticamente con el nuevo conteo de los caracteres
en la cadena cuando usted:

• 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 • Para obtener acceso a los caracteres de la cadena, utilice el nombre del tag.
cadena 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 La instrucción ABL cuenta los caracteres en el búfer, inclusive el
primer carácter de terminación.
búfer (ABL)
Operandos:

Lógica de escalera de relés

ABL
ABL Operando Tipo Formato Descripción
ASCII
ASCIITest
TestFor
ForBuffer Line
Buffer Line EN
Channel
Channel ? DN Channel DINT inmediato 0
SerialPort
SerialPortControl
Control ? ER
ER
Character
CharacterCount
Count ?
tag
Serial Port SERIAL_PORT_ tag tag que controla la operación

Control CONTROL
Character DINT inmediato 0
Count

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
Los operandos son iguales a los de la instrucción ABL de lógica de
SerialPortControl);
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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta cuando la condición de n. a.
renglón es verdadera entrada del renglón alterna de borrado a
establecido.

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 Acción de texto estructurado


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 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
ASCII TestTest For Buffer
For Buffer Line Line EN
EN
Channel
Channel 0 DN
DN
SerialPort
SerialPortControl
Control MV_line.E
MV_line ER
ER
Character
Character Count
Count 0

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) Capítulo 17

Caracteres ASCII en el La instrucción ACB cuenta los caracteres en el búfer.


búfer (ACB)
Operandos:

Lógica de escalera de relés


Operando Tipo Formato Introduzca
ACB
ACB
ASCII
ASCIIChars
CharsininBuffer
Buffer EN
EN Channel DINT inmediato 0
Channel
Channel ? DN
DN
SerialPort
SerialPortControl
Control ? ER
ER
Character
CharacterCount
Count ? tag
Serial Port SERIAL_PORT_ tag tag que controla la operación

Control CONTROL
Character DINT inmediato 0
Count

Durante la ejecución, muestra el número


de caracteres en el búfer.

Texto estructurado
ACB(Channel Los operandos son los mismos que para la instrucción ACB de lógica
SerialPortControl); 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 La condición de salida de renglón se establece como falsa. n. a.
renglón es falsa
condición de entrada de La instrucción se ejecuta cuando la condición de entrada del n. a.
renglón es verdadera renglón alterna de borrado a establecido.

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
ASCII Chars
Chars in Buffer
in Buffer EN
EN
Channel
Channel 0 DN
DN
SerialPort
SerialPort Control
Control bar_code_count.EN
bar_code_count ER
ER
Character
Character Count
Count 0

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) Capítulo 17

Borrar ASCII búfer (ACL) La instrucción ACL borra inmediatamente el búfer y la cola ASCII.

Operandos:

Lógica de escalera de relés

ACL
ACL Operando Tipo Formato Introduzca
Borrar ASCII
ASCII Clear búfer
Buffer
Canal
Channel ?
Borrar Serial
Clear lecturaPort
de puerto
Read serie ?
Channel DINT inmediato 0
Borrar Serial
Clear escritura deWrite
Port puerto serie ?
tag
Clear Serial BOOL inmediato Para borrar el búfer y eliminar las
Port Read instrucciones ARD y ARL de la cola,
tag introduzca Yes.
Clear Serial BOOL inmediato Para eliminar las instrucciones AWA y AWT
Port Write de la cola, introduzca Yes.
tag

Texto estructurado
ACL(Channel,
Los operandos son iguales a los de la instrucción ACL de lógica de
ClearSerialPortRead,
ClearSerialPortWrite); 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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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
Borrar Clear Buffer
ASCII búfer
Channel
Canal 0
Clear
BorrarSerial
lectura Port Read
de puerto serie 1
BorrarSerial
Clear escrituraPort
de puerto
Writeserie 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) Capítulo 17

Líneas de handshake ASCII La instrucción AHl obtiene el estado de las líneas de control, y activa
o desactiva las señales DTR y RTS.
(AHL)
Operandos:

Lógica de escalera de relés

AHL
AHL
ASCII Handshake
ASCII HandshakeLines
Lines EN
EN
Channel
Channel ?
AND Mask ? DN
DN
??
OR Mask
OR Mask ? ER
ER
??
SerialPort Control
SerialPort Control ?
Channel Status(Decimal)
Channel Status(Decimal) ?

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 Examine este bit:
de control
CTS 0
RTS 1
DSR 2
DCD 3
DTR 4
Recibió el carácter XOFF 5

Texto estructurado
AHL(Channel,ANDMask,ORMask,
Los operandos son iguales que los de la instrucción AHL de lógica de
SerialPortControl);
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.

Publicación 1756-RM003K-ES-P – Julio 2008 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 Y poner RTS en Introduzca este E introduzca este


DTR en el el estado valor ANDMask valor ORMask
estado siguiente:
siguiente
desactivado desactivado 3 0
activado 1 2
sin cambio 1 0
activado desactivado 2 1
activado 0 3
sin cambio 0 1
sin cambio desactivado 2 0
activado 0 2
sin cambio 0 0

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 Realice una de los siguientes acciones:
está configurado para no usar handshaking.
• 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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta cuando la condición de n. a.
renglón es verdadera entrada del renglón cambia de borrado a
establecido.

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 Ninguna.
falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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 EN
EN
ASCII Handshake Lines
Channel 0
Channel
AND Mask 0 DN
DN
AND Mask
OR Mask
OR Mask 0 ER
ER

SerialPort Control
SerialPort Control serial_port
serial_port
Channel Status(Decimal)
Channel Status(Decimal) 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) Capítulo 17

Lectura ASCII (ARD) La instrucción retira caracteres del búfer y los almacena en
Destination.

Operandos:

Lógica de escalera de relés


ARD
ARD
ASCII Read
ASCII Read EN
EN
Channel
Channel ?
Destination
Destination ? DN
DN
??
SerialPortControl
SerialPort Control ? ER
ER
SerialPort
SerialPortControl
Control Length
Length ?
Characters
Characters Read
Read ?

Operando Tipo Formato Introduzca Notas


Channel DINT inmediato 0

tag
Destination cadena tag el tag al cual se transfieren • Si desea comparar, convertir o manipular los
los caracteres (lectura): caracteres, use un tipo de datos de cadena.
SINT • Los tipos de datos de cadena son:
• Para un tipo de datos de
INT cadena, introduzca el • tipo de datos STRING predeterminado
nombre del tag.
DINT • cualquier tipo de datos nuevo que usted
• Para una matriz SINT, cree
INT o DINT, introduzca
el primer elemento de la
matriz.
Serial Port SERIAL_PORT_ tag tag que controla la
operación
Control CONTROL
Serial Port DINT inmediato número de caracteres a • Serial Port Control Length debe ser menor o
transferir al destino igual que el tamaño de Destination.
Control Length (lectura) • Si desea establecer Serial Port Control
Length 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
ARD(Channel,Destination,
Los operandos son los mismos que para la instrucción ARD de lógica
SerialPortControl);
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.

Publicación 1756-RM003K-ES-P – Julio 2008 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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta cuando la condición de n. a.
renglón es verdadera entrada del renglón cambia de borrado a
establecido.

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 Ninguna.
falsa.

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
ASCII Chars
Chars in Buffer
in Buffer EN
EN
Channel
Channel 0 DN
DN
SerialPort
SerialPort Control
Control bar_code_count.EN
bar_code_count ER
ER
Character
Character Count
Count 0

GEQ
GEQ ARD
ARD
GrtrThan
Grtr Thano Eqlor(A>=B)
Eql (A>=B) ASCII Read
ASCII Read EN
EN
Source A A bar_code_count.pos
Source bar_code_count.pos Channel
Channel 0
0 Destination
Destination bag_bar_code
bag_bar_code DN
DN
Source B B
Source 24 ''
SerialPort Control
SerialPort Control bar_code_read
bar_code_read ER
ER
SerialPort Control
SerialPort Length
Control Length 24
Characters Read
Characters Read 0

Publicación 1756-RM003K-ES-P – Julio 2008 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) Capítulo 17

Lectura ASCII de línea La instrucción ARL retira los caracteres especificados del búfer y los
almacena en Destination.
(ARL)
Operandos:
Lógica de escalera de relés
ARL
ARL
ASCII
ASCIIRead
ReadLine
Line EN
EN
Channel
Channel ?
Destination
Destination ? DN
DN
??
SerialPort
SerialPortControl
Control ? ER
ER
SerialPort
SerialPortControl
ControlLength
Length ?
CharactersRead
Characters Read ?

Operando Tipo Formato Introduzca Notas


Channel DINT inmediato 0

tag
Destination cadena tag el tag al cual se transfieren • Si desea comparar, convertir o manipular los
los caracteres (lectura): caracteres, use un tipo de datos de cadena.
SINT • Los tipos de datos de cadena son:
• Para un tipo de datos de
INT cadena, introduzca el • tipo de datos STRING predeterminado
nombre del tag.
DINT • cualquier tipo de datos nuevo que usted
• Para una matriz SINT, cree
INT o DINT, introduzca
el primer elemento de la
matriz.
Serial Port SERIAL_PORT_ tag tag que controla la
operación
Control CONTROL
Serial Port DINT inmediato número máximo de • Introduzca el número máximo de caracteres
Control Length caracteres a leer si no se que contendrá cualquier mensaje (es decir,
encuentran caracteres de cuándo se debe interrumpir la lectura si no
terminación 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,
Los operandos son los mismos que para la instrucción ARL de lógica
SerialPortControl);
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.

Publicación 1756-RM003K-ES-P – Julio 2008 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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta cuando la condición de n. a.
renglón es verdadera entrada del renglón cambia de borrado a
establecido.

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 Ninguna.
falsa.

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
ASCII TestTest For Buffer
For Buffer Line Line EN
EN
Channel
Channel 0 DN
DN
SerialPort
SerialPort Control
Control MV_line
MV_line ER
ER
Characters
Character Count
Count 0

MV_line.FD
MV_line.FD ARL
ARL
ASCII Read
ASCII Read LineLine EN
EN
Channel
Channel 0
Destination
Destination MV_line.EN
MV_msg DN
DN
''
SerialPort Control
SerialPort Control MV_line.EN
MV_read ER
ER
SerialPort Control
SerialPort Length
Control Length 12
Characters Read
Characters Read 0

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) Capítulo 17

Escritura ASCII con anexo 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
(AWA) predefinidos.

Operandos:

Lógica de escalera de relés


AWA
AWA
ASCII Write
ASCII Write Append
Append EN
EN
Channel
Channel ?
Source
Source ? DN
DN
??
SerialPort Control
SerialPort ? ER
ER
SerialPort Control Length
SerialPort Length ?
Characters Sent
Characters Sent ?

Operando Tipo Formato Introduzca Notas


Channel DINT inmediato 0

tag
Source cadena tag tag que contiene los • Si desea comparar, convertir o manipular los
caracteres a enviar: caracteres, use un tipo de datos de cadena.
SINT • Los tipos de datos de cadena son:
• Para un tipo de datos de
INT cadena, introduzca el • tipo de datos STRING predeterminado
nombre del tag.
DINT • cualquier tipo de datos nuevo que usted
• Para una matriz SINT, cree
INT o DINT, introduzca
el primer elemento de la
matriz.
Serial Port SERIAL_PORT_ tag tag que controla la
operación
Control CONTROL
Serial Port DINT inmediato número de caracteres a • Serial Port Control Length debe ser menor o
Control Length enviar 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,
Los operandos son los mismos que para la instrucción AWA de lógica
SerialPortControl);
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 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 En Serial Port Control Length, introduzca el número de caracteres
es afirmativa a enviar.
la respuesta Antes de que se ejecute la instrucción, establezca el miembro LEN
es negativa 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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta cuando la condición de n. a.
renglón es verdadera entrada del renglón cambia de borrado a
establecido.

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 Ninguna.
falsa.

Publicación 1756-RM003K-ES-P – Julio 2008 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
ASCII Write Append
Append EN
EN
Channel
Channel 0
Source
Source string[1]
string[1] DN
DN
'$1425\1'
SerialPort Control
SerialPort Control temp_high_write
temp_high_write ER
ER
SerialPort Control
SerialPort Control Length
Length 5
Characters Sent
Characters Sent 6

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

alarm
alarm MOV
MOV AWA
AWA
Move
Move ASCII Write
ASCII Write Append
Append EN
EN
Source alarm_msg.LEN
Source alarm_msg.LEN Channel
Channel 0
5 Source
Source alarm_msg
alarm_msg DN
DN
Dest.
Dest alarm_write.LEN
alarm_write.LEN '$1425\1'
5 SerialPort Control
SerialPort Control alarm_write
alarm_write ER
ER
SerialPort Control
SerialPort Length
Control Length 5
Characters Sent
Characters Sent 6

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 La instrucción AWT envía un número especificado de caracteres del


tag de origen a un dispositivo serie.
(ASCII Write (AWT))
Operandos:

Lógica de escalera de relés


AWT
AWT
ASCII Write
ASCII Write EN
EN
Channel
Channel ?
Source
Source ? DN
DN
??
SerialPort Control
SerialPort Control ? ER
ER
SerialPort ControlLength
SerialPort Control Length ?
Characters Sent
Characters Sent ?

Operando Tipo Formato Introduzca Notas


Channel DINT inmediato 0

tag
Source cadena tag tag que contiene los • Si desea comparar, convertir o manipular los
caracteres a enviar: caracteres, use un tipo de datos de cadena.
SINT • Los tipos de datos de cadena son:
• Para un tipo de datos de
INT cadena, introduzca el • tipo de datos STRING predeterminado
nombre del tag.
DINT • cualquier tipo de datos nuevo que usted
• Para una matriz SINT, cree
INT o DINT, introduzca
el primer elemento de la
matriz.
Serial Port SERIAL_PORT_ tag tag que controla la
operación
Control CONTROL
Serial Port DINT inmediato el número de caracteres a • Serial Port Control Length debe ser menor o
Control Length enviar 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,
Los operandos son los mismos que para la instrucción AWT de lógica
SerialPortControl);
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.

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

Si Entonces
la respuesta En Serial Port Control Length, introduzca el número de caracteres
es afirmativa a enviar.
la respuesta Antes de que se ejecute la instrucción, mueva el miembro LEN del
es negativa tag Source al miembro LEN del tag Serial Port Control.

Publicación 1756-RM003K-ES-P – Julio 2008 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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta cuando la condición de n. a.
renglón es verdadera entrada del renglón cambia de borrado a
establecido.

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

temp_low
temp_low AWT
AWT
ASCII
ASCII Write
Write EN
EN
Channel
Channel 0
Source
Source string[2]
string[2] DN
DN
'$142224\01$r'
SerialPort Control
SerialPort Control temp_low_write
temp_low_write ER
ER
SerialPort Control
SerialPort LengthLength
Control 9
Characters SentSent
Characters 9

596 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 AWT
AWT
Move
Move ASCII Write
ASCII Write EN
EN
Source MV_msg.LEN
Source MV_msg.LEN Channel
Channel 0
10 Source
Source MV_msg
MV_msg DN
DN
Dest.
Dest MV_write.LEN
MV_write.LEN '$161365\8\1$r'
10 SerialPort Control
SerialPort Control MV_write
MV_write ER
ER
SerialPort Control
SerialPort Length
Control Length 10
Characters SentSent
Characters 10

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 Use esta Disponible en estos Vea la


instrucción lenguajes página
añadir caracteres al final de una añadir caracteres de terminación o CONCAT lógica de escalera de 601
cadena delimitadores a una cadena relés

texto estructurado
eliminar caracteres de una cadena eliminar caracteres de encabezado o DELETE lógica de escalera de 603
control de una cadena relés

texto estructurado
determinar el carácter inicial de una hallar un grupo de caracteres dentro FIND lógica de escalera de 605
subcadena de una cadena relés

texto estructurado
insertar caracteres dentro de una crear una cadena que usa variables INSERT lógica de escalera de 607
cadena relés

texto estructurado
extraer caracteres de una cadena extraer información de un código de MID lógica de escalera de 609
barra relés

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
convertir caracteres en un valor SINT, INT, DINT o REAL STOD 614

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 número de caracteres El LEN se actualiza automáticamente al nuevo conteo de caracteres cuando usted:
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 • Para obtener acceso a los caracteres de la cadena, utilice el nombre del tag.
cadena 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) Capítulo 18

Concatenación de cadenas La instrucción CONCAT añade caracteres ASCII al final de una cadena.
(CONCAT)
Operandos:

Lógica de escalera de relés


CONCAT
CONCAT
Sting Concatenate
String Concatenate
Source
SourceA A ??
????
Source
Source B B ??
????
Dest
Dest ??
????

Operando Tipo Formato Introduzca Notas


Source A cadena tag tag que contiene los Los tipos de datos de cadena son:
caracteres iniciales
• tipo de datos STRING predeterminado
Source B cadena tag tag que contiene los
caracteres finales • cualquier tipo de datos nuevo que usted
cree
Destination cadena tag tag para almacenar el
resultado

Texto estructurado
CONCAT(SourceA,SourceB,
Los operandos son iguales a los de la instrucción CONCAT de lógica
Dest);
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 1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN
mayor que el tamaño de DATA del del tag de cadena.
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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 Ninguna.
falsa.

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

add_node CONCAT
CONCAT
Sting
StringConcatenate
Concatenate
Source
Source A A string_1
string_1
’$1423\’
'$1423\'
Source
SourceB B node_num_ascii
node_num_ascii
'1'’1’
Dest
Dest msgmsg
'$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) Capítulo 18

Eliminación de cadena La instrucción DELETE retira los caracteres ASCII de una cadena.
(DELETE)
Operandos:

DELETE
Lógica de escalera de relés
DELETE
Sting Delete
String Delete
Source
Source ??
????
Qty
Qty ??
????
Start
Start ??
????
Dest
Dest ??
????

Operando Tipo Formato Introduzca Notas


Source cadena tag el tag que contiene la Los tipos de datos de cadena son:
cadena de la cual se desea
eliminar los caracteres • tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
Quantity SINT inmediato el número de caracteres Start así como Quantity deben ser menores o
que se desea eliminar iguales al tamaño de DATA de Source.
INT tag

DINT
Start SINT inmediato la posición del primer Introduzca un número entre 1 y el tamaño de
carácter que se debe DATA de Source.
INT tag eliminar

DINT
Destination cadena tag tag para almacenar el
resultado

Texto estructurado
DELETE(Source,Qty,Start,
Los operandos son iguales a los de la instrucción DELETE de lógica de
Dest);
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 1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag
cadena es mayor que el de cadena.
tamaño de DATA 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 o Quantity 1. Verifique que el valor de Start esté entre 1 y el tamaño de DATA de Source.
no es válido.
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 La condición de salida de renglón se establece como falsa. n. a.
renglón es falsa
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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


term_read.EM DELETE
DELETE
Sting Delete
String Delete
Source term_input
Source term_input
’$0655’
'$0655'
Qty
Qty 11
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) Capítulo 18

Encontrar cadena (FIND) La instrucción FIND localiza la posición de una cadena especificada
dentro de otra cadena.

Operandos:

FIND
Lógica de escalera de relés
FIND
Find
FindString
String
Source
Source ??
????
Search
Search ??
????
Start
Start ??
????
Result
Result ??
????

Operando Tipo Formato Introduzca Notas


Source cadena tag cadena en que se debe Los tipos de datos de cadena son:
buscar
• tipo de datos STRING predeterminado
Buscar cadena tag la cadena que se debe
buscar • cualquier tipo de datos nuevo que usted
cree
Start SINT inmediato la posición en Source en la Introduzca un número entre 1 y el tamaño de
cual se debe iniciar la DATA de Source.
INT tag búsqueda

DINT
Result SINT tag el tag que almacena la
posición inicial de la
INT cadena que se debe buscar

DINT

Texto estructurado
FIND(Source,Search,Start,
Los operandos son iguales a los de la instrucción FIND de lógica de
Result);
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 1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN
mayor que el tamaño de DATA del del tag de cadena.
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. Verifique que el valor de Start esté entre 1 y el tamaño de DATA de Source.

Publicación 1756-RM003K-ES-P – Julio 2008 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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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


MV_read.EM FIND
FIND
Find String
Find String
Source
Source MV_msg MV_msg
’$06324\12\1\$r’
'$06324\12\1\$r'
Search
Search find
find
'\'’\’
Start
Start 11

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) Capítulo 18

Insertar cadena (INSERT) La instrucción INSERT añade caracteres ASCII a un lugar especificado
dentro de una cadena.

Operandos:

INSERT
Lógica de escalera de relés
INSERT
Insert
InsertString
String
Source
Source A A ??
????
Source
SourceB B ??
????
Start
Start ??
????
Dest
Dest ??
????

Operando Tipo Formato Introduzca Notas


Source A 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
Source B cadena tag la cadena que contiene los
caracteres que se deben • cualquier tipo de datos nuevo que usted
añadir cree
Start SINT inmediato la posición en Source A a la Introduzca un número entre 1 y el tamaño de
cual se deben añadir los DATA de Source.
INT tag caracteres

DINT
Result cadena tag cadena para almacenar el
resultado

Texto estructurado
INSERT(SourceA,SourceB,
Los operandos son iguales a los de la instrucción INSERT de lógica de
Start,Dest);
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 1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN
mayor que el tamaño de DATA del del tag de cadena.
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. Verifique que el valor de Start esté entre 1 y el tamaño de DATA de Source.

Publicación 1756-RM003K-ES-P – Julio 2008 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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 Ninguna.
falsa.

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

temp_high INSERT
INSERT
Insert String
Insert String
Source
SourceA A string_1
string_1
’AD’
'AD'
Source
SourceB B string_2
string_2
'BC'’BC’
Start
Start 22

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) Capítulo 18

Cadena central (MID) La instrucción MID copia un número especificado de caracteres ASCII
de una cadena y los almacena en otra cadena.

Operandos:

Lógica de escalera de relés


MID
MID
Middle
MiddleString
String
Source
Source ??
????
Qty
Qty ??
????
Start
Start ??
????
Dest
Dest ??
????

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 el número de caracteres Start así como Quantity deben ser menores o
que se desea copiar iguales al tamaño de DATA de Source.
INT tag

DINT
Start SINT inmediato 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.
INT tag

DINT
Destination cadena tag la cadena a la cual se
deben copiar los caracteres

Texto estructurado
MID(Source,Qty,Start,
Los operandos son iguales a los de la instrucción MID de lógica de
Dest);
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 1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag
cadena es mayor que el de cadena.
tamaño de DATA 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 o Quantity 1. Verifique que el valor de inicio esté entre 1 y el tamaño de DATA de Source.
no es válido.
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 La condición de salida de renglón se establece como falsa. n. a.
renglón es falsa
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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
bag_read.EM MID
MID
Middle
MiddleString
String
Source
Source bag_barcode
bag_barcode
'NWA HOP ’NWA 5058
HOP 5058
AMSAMS01'
01’
Qty
Qty 99

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 Use esta Disponible en estos Vea la


instrucción lenguajes página
convertir la representación ASCII de convertir un valor proveniente de una STOD lógica de escalera de 614
un valor entero en un valor SINT, INT, báscula u otro dispositivo ASCII en un relés
DINT o REAL número entero para usarlo en la
lógica texto estructurado
convertir la representación ASCII de convertir un valor proveniente de una STOR lógica de escalera de 616
un valor de punto flotante (coma báscula u otro dispositivo ASCII en un relés
flotante) en un valor REAL valor REAL para usarlo en la lógica
texto estructurado
convertir un valor SINT, INT, DINT o convertir una variable en una cadena DTOS lógica de escalera de 619
REAL en una cadena de caracteres ASCII para enviarla a un terminal relés
ASCII MessageView
texto estructurado
convertir un valor REAL en una convertir una variable en una cadena RTOS lógica de escalera de 621
cadena de caracteres ASCII ASCII para enviarla a un terminal relés
MessageView
texto estructurado
convertir en mayúsculas las letras de convertir en mayúsculas una entrada UPPER lógica de escalera de 623
una cadena de caracteres ASCII hecha por un operador para poder relés
buscarla en una matriz
texto estructurado
convertir en minúsculas las letras en convertir en minúsculas una entrada LOWER lógica de escalera de 625
una cadena de caracteres ASCII hecha por un operador para poder relés
buscarla en una matriz
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
identificar el carácter inicial de una subcadena FIND 605
insertar caracteres dentro de una cadena INSERT 607
extraer caracteres de una cadena 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

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 Descripción: Notas:


datos:
LEN DINT número de caracteres El LEN se actualiza automáticamente con el nuevo conteo de los caracteres
en la cadena 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 • Para obtener acceso a los caracteres de la cadena, utilice el nombre del tag.
cadena 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
StringToTo
DINT
DINT
Source
Source ??
????
Dest
Dest ??
????

Operando Tipo Formato Introduzca Notas


Source cadena tag el tag que contiene el valor Los tipos de datos de cadena son:
en ASCII
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
Destination SINT tag el tag en que se almacena Si el valor Source es un número de punto
el valor entero flotante (coma flotante), la instrucción
INT convierte solamente la parte no fraccionaria del
número (independientemente del tipo de datos
DINT 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 1. Verifique que ninguna instrucción esté escribiendo
de DATA del tag de cadena. 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 Realice uno de los siguientes:
datos de destino.
• 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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 Ninguna.
falsa.

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
StringTo DINT
To DINT
Source
Source MV_msg
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
Operadores de escalera de relé
STOR
String
Stringtoto
Real
Real
Source
Source ??
????
Dest
Dest ??
????

Operando Tipo Formato Introduzca Notas


Source cadena tag el tag que contiene el valor Los tipos de datos de cadena son:
en ASCII
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
Destination REAL tag el tag en que se almacena
el valor REAL

STOR(Source,Dest);
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 1. Verifique que ninguna instrucción esté escribiendo
de DATA del tag de cadena. 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 Realice uno de los siguientes:
datos de destino.
• 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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 Ninguna.
falsa.

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
Stringto Real
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) Capítulo 19

DINT en cadena (DTOS) La instrucción DTOS produce la representación ASCII de un valor.

Operandos:

DTOS Lógica de escalera de relés


DTOS
DINT
DINTto to
String
String
Source
Source ??
????
Dest
Dest ??
????

Operando Tipo Formato Introduzca Notas


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
INT un número entero en la página 640.

DINT

REAL
Destination cadena tag el tag en que se almacena Los tipos de datos de cadena son:
el valor ASCII
• 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 1. Verifique que ninguna instrucción esté escribiendo
de DATA del tag de cadena. 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. 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.

Publicación 1756-RM003K-ES-P – Julio 2008 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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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

temp_high DTOS
DTOS
DINT
DINTto String
to String
Source msg_num
Source msg_num
23
Dest 23
msg_num_ascii
Dest msg_num_ascii ’23’
'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) Capítulo 19

REAL en cadena (RTOS) La instrucción RTOS produce la representación ASCII de un valor


REAL.

Operandos:

Lógica de escalera de relés


RTOS
RTOS
Real
Realto to
String
String
Source
Source ??
????
Dest
Dest ??
????

Operando Tipo Formato Introduzca Notas


Source REAL tag el tag que contiene el valor
REAL
Destination cadena tag el tag en que se almacena Los tipos de datos de cadena son:
el valor ASCII
• 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 1. Verifique que ninguna instrucción esté escribiendo
de DATA del tag de cadena. 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. 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.

Publicación 1756-RM003K-ES-P – Julio 2008 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 La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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

send_data RTOS
RTOS
Real
Realto String
to String
Source data_1
Source data_1
15.3001
Dest
15.3001
data_1_ascii
Dest data_1_ascii
’15.301003’
'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) Capítulo 19

Mayúsculas (UPPER) La instrucción UPPER convierte en mayúsculas los caracteres


alfabéticos de una cadena.

Operandos:

Lógica de escalera de relés

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

UPPER(Source,Dest);
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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 Ninguna.
falsa.

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) Capítulo 19

Minúsculas (Lower Case La instrucción LOWER convierte en minúsculas los caracteres


alfabéticos de una cadena.
(LOWER))
Operandos:

Lógica de escalera de relés

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

LOWER(Source,Dest);
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 Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
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 Ninguna.
falsa.

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 BPT lógica de escalera de relés 627
renglón es verdadero
registrar datos que usted selecciona cuando un TPT lógica de escalera de relés 631
renglón es verdadero

Puntos de interrupción Los puntos de interrupción detienen la emulación del programa


cuando un renglón es verdadero.
(BPT)
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 BOOL, SINT, tag El tag que tiene un valor que usted desea
esto INT, DINT, REAL 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.

Cuando se activa un punto de interrupción, usted no podrá editar su


ATENCIÓN
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 encabezado (el texto que precede el


El número de ranura indica la ranura que signo de dos puntos en la cadena de
contiene el módulo emulador que tiene formato) aparece aquí.
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) El texto para el valor
aparece aquí. 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) Capítulo 20

Puntos de rastreo (TPT) 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, tag El tag que usted desea rastrear.
INT, DINT,
REAL

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 encabezado (el texto que precede el


El número de ranura indica la ranura que signo de dos puntos en la cadena de
contiene el módulo emulador que tiene formato) aparece aquí.
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) El texto para el valor
aparece aquí. 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.

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

Valores inmediatos 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 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)

Conversiones de datos 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 Cablea dos parámetros que tienen diferentes tipos de datos

635Publicación 1756-RM003K-ES-P – Julio 2008 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 REAL
es afirmativa
La respuesta DINT
es negativa

• 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)


Se convierte en 2#1111_1111_1111_1111_1111_1111_1111_1111 (-1)
este valor mediante
extensión de signo
Se convierte en 2#0000_0000_0000_0000_1111_1111_1111_1111 (65535)
este valor mediante
relleno con ceros

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
Source remote_rack_1:I.Data[0]
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 EQU
Move Equal
Source 2#1111_1111_1111_1111 Source A remote_rack_1:I.Data[0]
2#1111_1111_1111_1111
Dest int_0 Source B int_0
2#1111_1111_1111_1111 2#1111_1111_1111_1111
42093

638 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 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)

Publicación 1756-RM003K-ES-P – Julio 2008 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 Conversión de valores REAL en valores DINT

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

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

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

Selección de elementos de Para controlar un dispositivo, use los siguientes elementos:


bloques de funciones
referencia de entrada (IREF) bloque de funciones referencia de salida (OREF)

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 referencia de entrada (IREF)
o tag
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 bloque de funciones
entrada, y producir un valor o valores de salida
transferir datos entre bloques de funciones cuando conector de cable de salida (OCON) y un conector de
éstos están: 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 conector de cable de una salida (OCON) y varios
conectores de cable de entrada (ICON)

Enclavamiento de datos 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 almacena sólo


una vez al comienzo de la ejecución de la rutina. La rutina usa este
valor almacenado en toda la rutina.
Block_01

tagA

Block_02

tagA

Comenzando con el software RSLogix 5000, versión 11, se puede usar


el mismo tag en múltiples IREF y un OREF en la misma rutina. Puesto
que los valores de tags en las IREF se enclavan en cada escán en toda
la rutina, todas las IREF usarán el mismo valor, aunque una OREF
obtenga un valor de tag diferente durante la ejecución de la rutina. En
este ejemplo, si tagA tiene un valor de 25.4 cuando la rutina comienza
a ejecutar este escán, y Block_01 cambia el valor de tagA a 50.9, la
segunda IREF cableada en Block_02 seguirá usando un valor de 25.4
cuando Block_02 ejecute este escán. El nuevo valor de tagA de 50.9
no será usado por ninguna IREF en esta rutina hasta el comienzo del
siguiente escán.

Publicación 1756-RM003K-ES-P – Julio 2008 643


Apéndice B Atributos de bloque de funciones

Orden de ejecución El software de programación RSLogix 5000 determina


automáticamente el orden de ejecución de los bloques de funciones
en una rutina cuando usted:

• verifica una rutina de bloque de funciones


• verifica un proyecto que contiene una rutina de bloque de
funciones
• descarga un proyecto que contiene una rutina de bloque de
funciones

El orden de ejecución se define cableando bloques de funciones unos


con otros, e indicando el flujo de datos de los cables de
retroalimentación, si es necesario.

Si los bloques de funciones no están cableados unos con otros, no


importa cuál bloque se ejecuta primero. No existe un flujo de datos
entre los bloques.

Si usted cablea los bloques de manera secuencial, el orden de


ejecución va de entrada a salida. Las entradas de un bloque requieren
que los datos estén disponibles para que el controlador pueda
ejecutar dicho bloque. Por ejemplo, el bloque 2 tiene que ejecutarse
antes que el bloque 3 porque las salidas del bloque 2 alimentan las
entradas del bloque 3.

1 2 3

El orden de ejecución se relaciona sólo a los bloques que están


cableados unos con otros. El siguiente es un buen ejemplo porque
los dos grupos de bloques no están cableados unos con otros. Los
bloques dentro de un grupo específico se ejecutan en el orden
apropiado en relación con los bloques de dicho grupo.

1 3 5

2 4 6

644 Publicación 1756-RM003K-ES-P – Julio 2008


Atributos de bloque de funciones Apéndice B

Resolución de un lazo

Para crear un lazo de retroalimentación alrededor de un bloque,


cablee un pin de salida de un bloque a un pin de entrada del mismo
bloque. El siguiente es un buen ejemplo. El lazo contiene un solo
bloque, por lo que el orden de ejecución no es importante.

Este pin de entrada usa una


salida que el bloque produjo en
el escán anterior.

Si hay un grupo de bloques en un lazo, el controlador no puede


determinar cuál bloque debe ejecutarse primero. En otras palabras,
no puede resolver el lazo.

? ? ?

Para identificar cuál bloque debe ejecutarse primero, marque el cable


de entrada que crea el lazo (el cable de retroalimentación) con el
indicador Suponer datos disponibles. En el siguiente ejemplo, el
bloque 1 usa la salida del bloque 3 que se produjo en la ejecución
previa de la rutina.

1 2 3

Este pin de entrada usa la salida


que el bloque 3 produjo en el
escán anterior.

Indicador Suponer datos disponibles

El indicador Suponer datos disponibles define el flujo de datos dentro


del lazo. La flecha indica que los datos sirven como entrada para el
primer bloque en el lazo.

Publicación 1756-RM003K-ES-P – Julio 2008 645


Apéndice B Atributos de bloque de funciones

No marque todos los cables de un lazo con el indicador Suponer datos


disponibles.

Esto es correcto Esto no es correcto

1 2 ? ?

Indicador Suponer datos


disponibles El controlador no puede resolver el lazo porque los cables usan el
indicador Suponer datos disponibles.

El indicador Suponer datos disponibles define el flujo de datos


dentro del lazo.

646 Publicación 1756-RM003K-ES-P – Julio 2008


Atributos de bloque de funciones Apéndice B

Resolución del flujo de datos entre dos bloques

Si usted usa dos o más cables para conectar dos bloques, use los
mismos indicadores de flujo de datos para todos los cables entre los
dos bloques.

Esto es correcto Esto no es correcto

Ningún cable usa el indicador Suponer datos disponibles. Un cable usa el indicador Suponer datos disponibles y el otro
cable no.

Indicador Suponer datos


disponibles

Ambos cables usan el indicador Suponer datos disponibles.

Creación de un retardo de escán

Para producir un retardo de escán entre bloques, use el indicador


Suponer datos disponibles. En el siguiente ejemplo, el bloque 1 se
ejecuta primero. Utiliza la salida del bloque 2 que se produjo en el
escán anterior de la rutina.

2 1

Indicador Suponer datos disponibles

Publicación 1756-RM003K-ES-P – Julio 2008 647


Apéndice B Atributos de bloque de funciones

Resumen

En resumen, una rutina de bloque de funciones se ejecuta en este


orden:

1. El controlador enclava todos los valores de datos en las IREF.

2. El controlador ejecuta los otros bloques de funciones en el


orden determinado según su cableado.

3. El controlador escribe salidas en las OREF.

Respuestas de bloque de En general, las instrucciones de bloque de funciones que mantienen


el historial no actualizan el historial con valores ±NAN o ±INF cuando
funciones a condiciones de se produce un overflow. Cada instrucción tiene una de estas
overflow respuestas frente a una condición de overflow:

Respuesta 1: Respuesta 2: Respuesta 3:

Los bloques ejecutan su algoritmo y Los bloques con límite de salida ejecutan La condición de overflow no se aplica. Estas
verifican el resultado para ±NAN o ±INF. su algoritmo y verifican el resultado para instrucciones generalmente tienen una
Si ±NAN o ±INF, el bloque establece la ±NAN o ±INF. Los límites de salida son salida booleana.
salida ±NAN o ±INF. definidos por los parámetros de entrada
HighLimit y LowLimit. Si ±INF, el bloque
establece la salida un resultado limitado.
Si ±NAN, los límites de salida no se usan y
el bloque establece la salida ±NAN.
ALMNTCH HLL BANDOSRI

DEDTPMUL INTG BNOTRESD

DERVPOSP PI BORRTOR

ESELRLIM PIDE BXORSETD

FGENRMPS SCL CUTDTOFR

HPFSCRV SOC D2SDTONR

LDL2SEL D3SD

LDLGSNEG DFF

LPFSRTP JKFF

MAVESSUM OSFI

MAXCTOT

MINCUPDN

MSTD

MUX

648 Publicación 1756-RM003K-ES-P – Julio 2008


Atributos de bloque de funciones Apéndice B

Modos de temporización Estas instrucciones de control de procesos y de variadores aceptan


diferentes modos de temporización.

DEDT LDLG RLIM


DERV LPF SCRV
HPF NTCH SOC
INTG PI TOT
LDL2 PIDE

Hay tres modos de temporización diferentes:

Modo de Descripción
temporización
periódico El modo periódico es el modo predeterminado y es adecuado para la mayoría de las aplicaciones de control.
Recomendamos que coloque las instrucciones que utilizan este modo en una rutina que se ejecute en una
tarea periódica. El tiempo delta (DeltaT) para la instrucción se determina de la siguiente manera:
Si la instrucción se DeltaT es igual a
ejecuta en
una tarea periódica el período de la tarea
un evento o una tarea el tiempo transcurrido desde la ejecución previa
continua
El controlador trunca el tiempo transcurrido a milisegundos (ms) enteros. Por ejemplo,
si el tiempo transcurrido = 10.5 ms, el controlador establece DeltaT = 10 ms.
La actualización de la entrada del proceso necesita sincronizarse con la ejecución de la tarea o muestrearse
5 - 10 veces más rápido que el tiempo en que se ejecuta la tarea a fin de minimizar los errores de muestreo
entre la entrada y la instrucción.
sobremuestreo En el modo de sobremuestreo, el tiempo delta (DeltaT) usado por la instrucción es el valor escrito en el
parámetro OversampleDT de la instrucción. Si la entrada del proceso tiene un valor de sello de hora, use en
lugar de ello el modo de muestreo en tiempo real.

Añada lógica al programa para controlar cuándo se ejecuta la instrucción. Por ejemplo, puede usar un
temporizador para establecer el valor de OversampleDeltaT y así controlar la ejecución usando la entrada
EnableIn de la instrucción.

La entrada del proceso necesita muestrearse 5 - 10 veces más rápido que el tiempo en que se ejecuta la
instrucción a fin de minimizar los errores de muestreo entre la entrada y la instrucción.

Publicación 1756-RM003K-ES-P – Julio 2008 649


Apéndice B Atributos de bloque de funciones

Modo de Descripción
temporización
muestreo en tiempo real En el modo de muestreo en tiempo real, el tiempo delta (DeltaT) usado por la instrucción es la diferencia entre
dos valores de sello de hora que corresponden a las actualizaciones de la entrada del proceso. Use este modo
cuando la entrada del proceso tiene un sello de hora asociado con sus actualizaciones y usted necesita una
coordinación precisa.

El valor del sello de hora se lee en el nombre de tag introducido para el parámetro RTSTimeStamp de la
instrucción. Normalmente este nombre de tag es un parámetro en el módulo de entrada asociado con la
entrada del proceso.

La instrucción compara el valor RTSTime configurado (período de actualización previsto) con el DeltaT
calculado para determinar si la instrucción está leyendo cada actualización de la entrada del proceso. Si
DeltaT no se encuentra dentro de un milisegundo del tiempo de configuración, la instrucción establece el bit
de estado RTSMissed para indicar que existe un problema con la lectura de actualizaciones de la entrada en
el módulo.

Las instrucciones basadas en tiempo requieren un valor constante


para DeltaT a fin de que el algoritmo de control calcule correctamente
la salida del proceso. Si DeltaT varía, se produce una discontinuidad
en la salida del proceso. La severidad de la discontinuidad depende
de la instrucción y del rango de variación de DeltaT. Se produce una
discontinuidad si:

• la instrucción no se ejecuta durante un escán;


• la instrucción se ejecuta varias veces durante una tarea;
• la tarea se está ejecutando y cambia la velocidad de escán de la
tarea o el tiempo de muestreo de la entrada del proceso;
• el usuario cambia el modo de base de tiempo mientras la tarea
se está ejecutando.
• El parámetro Order se cambia en un bloque de filtro mientras
la tarea se está ejecutando. Al cambiar el parámetro Order se
selecciona un algoritmo de control diferente dentro de la
instrucción.

650 Publicación 1756-RM003K-ES-P – Julio 2008


Atributos de bloque de funciones Apéndice B

Parámetros de instrucción comunes para modos de


temporización

Las instrucciones que aceptan modos de base de tiempo tienen estos


parámetros de entrada y salida:

Parámetros de entrada

Parámetro de Tipo de datos Descripción


entrada
TimingMode DINT Selecciona el modo de ejecución de temporización.

Valor: Descripción:

0 modo periódico

1 modo de sobremuestreo

2 modo de muestreo en tiempo real

válido = 0 a 2

valor predeterminado = 0

Cuando TimingMode = 0 y la tarea es periódica, la temporización periódica se establece y


DeltaT se establece en la velocidad de escán de la tarea. Cuando TimingMode = 0 y la tarea
es de evento o una tarea continua, la temporización periódica se habilita y DeltaT se
establece en un valor igual al tiempo transcurrido desde la última vez que se ejecutó la
instrucción.

Cuando TimingMode = 1, la temporización de sobremuestreo se habilita y DeltaT se


establece en el valor del parámetro OversampleDT.

Cuando TimingMode = 2, la temporización del muestreo en tiempo real se habilita y DeltaT


es la diferencia entre los valores de sello de hora actual y previo que fueron leídos del
módulo asociado con la entrada.

Si TimingMode es no válido, la instrucción establece el bit apropiado en Status.


OversampleDT REAL Tiempo de ejecución para temporización de sobremuestreo. El valor usado para DeltaT es en
segundos. Si TimingMode = 1, implica que OversampleDT = 0.0 inhabilita la ejecución del
algoritmo de control. Si no es válido, la instrucción establece DeltaT = 0.0 y establece el bit
apropiado en Status.

válido = 0 a 4194.303 segundos

valor predeterminado = 0.0

Publicación 1756-RM003K-ES-P – Julio 2008 651


Apéndice B Atributos de bloque de funciones

Parámetro de Tipo de datos Descripción


entrada
RTSTime DINT Período de actualización del módulo para temporización de muestreo en tiempo real. El
período de actualización DeltaT previsto es en milisegundos. El período de actualización
normalmente es el valor usado para configurar el tiempo de actualización del módulo. Si no
es válido, la instrucción establece el bit apropiado en Status e inhabilita la verificación de
RTSMissed.

válido = 1 a 32,767 ms

valor predeterminado = 1
TTSTimeStamp DINT Valor de sello de hora para temporización de muestreo en tiempo real. El valor de sello de
hora que corresponde a la última actualización de la señal de entrada. Este valor se usa para
calcular DeltaT. Si no es válido, la instrucción establece el bit apropiado en Status, inhabilita
la ejecución del algoritmo de control e inhabilita la verificación de RTSMissed.

válido = 1 a 32,767 ms (regresa de 32767 a 0)

1 conteo = 1 milisegundo

valor predeterminado = 0

Parámetros de salida

Parámetro de salida Tipo de datos Descripción


DeltaT REAL Tiempo transcurrido entre actualizaciones. Es el tiempo transcurrido en segundos usado por
el algoritmo de control para calcular la salida del proceso.

Periódica: DeltaT = velocidad de escán de la tarea si la tarea es una tarea periódica. DeltaT =
tiempo transcurrido desde la ejecución de la instrucción previa si la tarea es de evento o una
tarea continua.

Sobremuestreo DeltaT = OversampleDT

Muestreo en tiempo real: DeltaT = (RTSTimeStampn - RTSTimeStampn-1)


Status DINT Estado del bloque de funciones.
TimingModeInv BOOL Valor no válido de TimingMode.
(Status.27)
RTSMissed (Status.28) BOOL Sólo se usa en el modo de muestreo en tiempo real.
Se establece cuando ABS | DeltaT - RTSTime | > 1 (.001 segundo).
RTSTimeInv BOOL Valor no válido de RTSTime.
(Status.29)
RTSTimeStampInv BOOL Valor no válido de RTSTimeStamp.
(Status.30)
DeltaTInv (Status.31) BOOL Valor DeltaT no válido.

652 Publicación 1756-RM003K-ES-P – Julio 2008


Atributos de bloque de funciones Apéndice B

Descripción general de los modos de temporización

El siguiente diagrama muestra cómo una instrucción determina el


modo de temporización adecuado.

Determine el modo de base


de tiempo

TimingMode = 0 TimingMode = 1 TimingMode = 2

Temporización periódica Temporización de sobremuestreo Temporización en tiempo real

DeltaT = OversampleDT DeltaT = RTSTimeStampn - RTSTimeStampn-1

Si DeltaT < 0 o DeltaT > 4194.303 Si DeltaT > 0, la instrucción se ejecuta.


segundos, la instrucción establece
DeltaT = 0.0 y establece el bit apropiado Si |RTSTIME - DeltaT| > 1, la instrucción establece el bit
en Status. RTSMissed en Status.

Determine el tipo de tarea Si DeltaT > 0, la instrucción se ejecuta.

Tarea periódica Evento o tarea continua

DeltaT = tiempo de escán de tarea DeltaT = tiempo transcurrido desde la


última ejecución
Si DeltaT > 0, la instrucción se
ejecuta. Si DeltaT > 0, la instrucción se ejecuta.

Publicación 1756-RM003K-ES-P – Julio 2008 653


Apéndice B Atributos de bloque de funciones

Control de programa/ Hay varias instrucciones compatibles con el concepto de control de


programa/operador. Estas instrucciones incluyen:
operador
• Selección mejorada (ESEL)
• Totalizador (TOT)
• PID mejorado (PIDE)
• Rampa y estabilización (RMPS)
• Dispositivo de 2 estados discretos (D2SD)
• Dispositivo de 3 estados discretos (D3SD)

El control de programa/operador permite controlar estas instrucciones


simultáneamente desde el programa de usuario y desde un dispositivo
de interface de operador. Cuando está en control de programa,
la instrucción es controlada por las entradas del programa a la
instrucción; cuando está en control del operador, la instrucción es
controlada por las entradas del operador a la instrucción.

El control de programa u operador se determina mediante el uso de


estas entradas:

Entrada Descripción
.ProgProgReq Una petición del programa para ir a control
de programa.
.ProgOperReq Una petición del programa para ir a control
de operador.
.OperProgReq Una petición del operador para ir a control de
programa.
.OperOperReq Una petición del operador para ir a control de
operador.

Para determinar si una instrucción está en control de programa o de


operador, examine la salida ProgOper. Si ProgOper está establecida,
la instrucción está en control del programa; si ProgOper se borra,
la instrucción está en control del operador.

El control de operador tiene precedencia sobre el control de


programa si ambos bits de petición de entrada están establecidos.
Por ejemplo, si ProgProgReq y ProgOperReq están establecidos,
la instrucción pasa a control de operador.

654 Publicación 1756-RM003K-ES-P – Julio 2008


Atributos de bloque de funciones Apéndice B

Las entradas de petición de programa tienen precedencia sobre las


entradas de petición de operador. Esto proporciona la capacidad de
usar las entradas ProgProgReq y ProgOperReq para “bloquear” una
instrucción en un control deseado. Por ejemplo, supongamos que una
instrucción Totalizer siempre se usará en el control de operador y que
el programa de usuario nunca controlará la ejecución o paro de la
instrucción Totalizer En este caso, usted podría cablear un valor literal
de 1 en ProgOperReq. Con esto impediría que el operador pueda
poner Totalizer en el control de programa estableciendo OperProgReq
desde un dispositivo de interface de operador.

Puesto que la entrada ProgOperReq


siempre está establecida, presionar
el botón “Program” en la plantilla
(lo cual establece la entrada
OperProgReg) no tiene ningún
efecto. Normalmente, establecer
OperProgReq pone TOT en control
de programa.

Cablear un “1” en ProgOperReq


significa que el programa de usuario
desea que TOT siempre esté en control
de operador.

Publicación 1756-RM003K-ES-P – Julio 2008 655


Apéndice B Atributos de bloque de funciones

De igual modo, el establecer constantemente ProgProgReq puede


“bloquear” la instrucción en control de programa. Esto es útil para las
secuencias de puesta en marcha automática cuando usted desea que
el programa controle la acción de la instrucción sin tener que
preocuparse de que un operador tome accidentalmente el control de
la instrucción. En este ejemplo el programa establece la entrada
ProgProgReq durante la puesta en marcha y posteriormente borra la
entrada ProgProgReq una vez que concluye la puesta en marcha. Una
vez que se borra la entrada ProgProgReq, la instrucción permanece en
control de programa hasta que recibe una petición de cambiar. Por
ejemplo, el operador podría establecer la entrada OperOperReq desde
la plantilla para asumir el control de esa instrucción. El siguiente
ejemplo muestra cómo bloquear una instrucción en control de
programa.

Cuando se establece
StartupSequenceActive, la
instrucción PIDE se coloca en
control de programa y en modo
manual. El valor StartupCV se
usa como salida de lazo.

Las entradas de petición de operador a una instrucción siempre son


borradas por la instrucción cuando ésta se ejecuta. Esto permite que
las interfaces de operador funcionen con estas instrucciones
simplemente estableciendo el bit de petición del modo deseado. No
es necesario programar la interface de operador para restablecer los
bits de petición. Por ejemplo, si una interface de operador establece la
entrada OperAutoReq a una instrucción PIDE, cuando se ejecuta la
instrucción PIDE, ésta determina cuál debe ser la respuesta apropiada
y borra OperAutoReq.

656 Publicación 1756-RM003K-ES-P – Julio 2008


Atributos de bloque de funciones Apéndice B

Las entradas de petición de programa normalmente no son borradas


por la instrucción porque éstas normalmente están cableadas como
entradas en la instrucción. Si la instrucción borra estas entradas, la
entrada sería establecida nuevamente por la entrada cableada. Puede
haber situaciones en las que usted desee usar otra lógica para
establecer las peticiones de programa de manera tal que desee que las
peticiones de programa sean borradas por la instrucción. En este caso
puede establecer la entrada ProgValueReset y la instrucción siempre
borrará las entradas de petición del modo de programación cuando
ésta se ejecute.

En este ejemplo se usa un renglón de lógica de escalera en otra rutina


para realizar un enclavamiento monoestrable de ProgAutoReq a una
instrucción PIDE cuando se presiona un botón pulsador. Puesto que
la instrucción PIDE automáticamente borra las peticiones del modo de
programación, usted no tiene que escribir ninguna lógica de escalera
para borrar ProgAutoReq después de que se ejecute la rutina, y la
instrucción PIDE recibirá sólo una petición para pasar a Auto cada vez
que se presione el botón pulsador.

Cuando se presiona el botón pulsador TIC101AutoReq, se realiza un enclavamiento monoestrable de


ProgAutoReq para la instrucción PIDE TIC101. TIC101 se ha configurado con la entrada ProgValueReset
establecida; por lo tanto, cuando se ejecuta la instrucción PIDE, ésta automáticamente borra ProgAutoReq.

Publicación 1756-RM003K-ES-P – Julio 2008 657


Apéndice B Atributos de bloque de funciones

Notas:

658 Publicación 1756-RM003K-ES-P – Julio 2008


Apéndice C

Programación de texto estructurado

Introducción Este apéndice describe aspectos que son únicos con la programación
de texto estructurado. Repase la información proporcionada en este
apéndice para asegurarse de que entiende cómo se ejecutará la
programación de texto estructurado.

Si desea información acerca de Vea la página


Sintaxis del texto estructurado 659
Asignaciones 661
Expresiones 663
Instrucciones 670
Construcciones 671
Comentarios 687

Sintaxis del texto El texto estructurado es un lenguaje de programación textual que usa
declaraciones para definir lo que se va a ejecutar.
estructurado
• El texto estructurado no permite distinguir mayúsculas de
minúsculas.
• Use caracteres de tabulación y de retorno de carro (líneas
separadas) para facilitar la lectura del texto estructurado. Dichos
caracteres no tienen ningún efecto en la ejecución del texto
estructurado.

El texto estructurado no permite distinguir mayúsculas de minúsculas.


El texto estructurado contiene estos componentes:

Término Definición Ejemplos


asignación Use una declaración de asignación para asignar valores a los tags. tag := expression;

(ver página 661) El operador := es el operador de asignación.

Termine la asignación con un punto y coma “;”.

659Publicación 1756-RM003K-ES-P – Julio 2008 659


Apéndice C Programación de texto estructurado

Término Definición Ejemplos


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

Una expresión contiene:


tags Un área de la memoria con nombre asignado, donde value1
se almacenan los datos (BOOL, SINT,INT,DINT, REAL,
cadena).
inmediatos Un valor constante. 4
operadores Un símbolo o mnemónico que especifica una tag1 + tag2
operación dentro de una expresión.
tag1 >= value1
funciones Cuando se ejecuta, una función produce un valor. function(tag1)
Use paréntesis para delimitar el operando de una
función.

Aunque su sintaxis es similar, las funciones se


diferencian de las instrucciones porque las
funciones sólo pueden usarse en expresiones.
Las instrucciones no pueden usarse en expresiones.
instrucción Una instrucción es una declaración autónoma. instruction();

(ver página 670) Una instrucción usa paréntesis para delimitar sus operandos.

Según la instrucción, puede haber cero, uno o varios operandos. instruction(operand);

Cuando se ejecuta, una instrucción produce uno o más valores que son
parte de una estructura de datos.
instruction(operand1,
Termine la instrucción con un punto y coma “;”. operand2,operand3);

Aunque su sintaxis es similar, las instrucciones se diferencian de las


funciones porque las instrucciones no pueden usarse en expresiones.
Las funciones sólo pueden usarse en expresiones.

660 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

Término Definición Ejemplos


construcción Una declaración condicional usada para activar código de texto IF...THEN
estructurado (a saber, otras declaraciones).
(ver página 671) CASE
Termine la construcción con un punto y coma “;”.
FOR...DO

WHILE...DO

REPEAT...UNTIL

EXIT
comentario Texto que explica o aclara lo que hace una sección de texto estructurado. //comment

(ver página 687) • Use comentarios para facilitar la interpretación del texto
estructurado.
• Los comentarios no tienen ningún efecto en la ejecución del texto (*start of comment . . .
estructurado. end of comment*)
• Los comentarios pueden aparecer en cualquier lugar del texto
estructurado.
/*start of comment . . .
end of comment*/

Asignaciones Use una asignación para cambiar el valor almacenado dentro de un


tag. Una asignación tiene esta sintaxis:

tag := expression ;

donde:

Componente Descripción
tag representa el tag que está obteniendo el nuevo valor

el tag debe ser BOOL, SINT, INT, DINT o REAL


:= es el símbolo de asignación
expresión representa el nuevo valor que se va a asignar al tag
Si el tag es de este tipo de Use este tipo de expresión:
datos:
BOOL expresión BOOL
SINT expresión numérica

INT

DINT

REAL
; finaliza la asignación

Publicación 1756-RM003K-ES-P – Julio 2008 661


Apéndice C Programación de texto estructurado

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


valor.

La expresión puede ser simple, como un valor inmediato u otro


nombre de tag, o la expresión puede ser compleja e incluir varios
operadores y/o funciones Vea la siguiente sección “Expresiones” en la
página 663 para obtener detalles.

Especifique una asignación no retentiva

La asignación no retentiva es diferente de la asignación regular antes


descrita porque el tag en una asignación no retentiva se pone en cero
cada vez que el controlador:
• entra al modo de MARCHA
• sale del paso de un SFC si usted configura el SFC para
Restablecimiento automático (Esto sólo se aplica si usted
incorpora la asignación en la acción del paso o usa la acción
para llamar una rutina de texto estructurado mediante una
instrucción JSR).

Una asignación no retentiva tiene esta sintaxis:

tag [:=] expresión ;

donde:

Componente Descripción
tag representa el tag que obtiene el nuevo valor

el tag debe ser BOOL, SINT, INT, DINT o REAL


[:=] es el símbolo de asignación no retentiva
expresión representa el nuevo valor que se va a asignar al tag
Si el tag es de este tipo de Use este tipo de expresión:
datos:
BOOL expresión BOOL
SINT expresión numérica

INT

DINT

REAL
; finaliza la asignación

662 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

Asigne un carácter ASCII a una cadena

Use el operador de asignación para asignar un carácter ASCII a un


elemento del miembro DATA de un tag de cadena. Para asignar un
carácter, especifique el valor del carácter o especifique el nombre de
tag, miembro DATA y elemento del carácter. Por ejemplo:

Esto es correcto Esto no es correcto.


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

Para añadir o insertar una cadena de caracteres en un tag de cadena,


use cualquiera de estas instrucciones de cadena ASCII:

Para Use esta instrucción


añadir caracteres al final de una cadena CONCAT
insertar caracteres dentro de una cadena INSERT

Expresiones Una expresión es un nombre de tag, ecuación o comparación. Para


escribir una expresión, use cualquiera de los siguientes:
• nombre de tag que almacena el valor (variable)
• número que usted introduce directamente en una expresión
(valor inmediato)
• funciones, tales como: ABS, TRUNC
• operadores, tales como: +, -, <, >, And, Or

Cuando escriba las expresiones, siga estas reglas generales:

• Use cualquier combinación de letras mayúsculas y minúsculas.


Por ejemplo, cualquiera de estas tres variaciones de “AND” es
aceptable: AND, And, and.
• Para requisitos más complejos, use paréntesis a fin de agrupar
expresiones dentro de otras expresiones. Esto hace que toda la
expresión sea más fácil de leer y asegura que la expresión se
ejecute en la secuencia deseada. Consulte “Determine el orden
de ejecución” en la página 669.

Publicación 1756-RM003K-ES-P – Julio 2008 663


Apéndice C Programación de texto estructurado

En texto estructurado usted usa dos tipos de expresiones:

Expresión BOOL: Una expresión que produce ya sea el valor BOOL


de 1 (verdadero) o 0 (falso).

• Una expresión booleana usa tags booleanos, operadores


relacionales y operadores lógicos para comparar valores o
verificar si las condiciones son verdaderas o falsas. Por ejemplo,
tag1>65.
• Una expresión booleana simple puede ser un simple tag BOOL.
• Normalmente usted usa expresiones para condicionar la
ejecución de otra lógica.

Expresión numérica: Una expresión que calcula un valor entero o


de punto flotante (coma flotante).

• Una expresión numérica usa operadores aritméticos, funciones


aritméticas y operadores a nivel de bits. Por ejemplo, tag1+5.
• A menudo usted anida una expresión numérica dentro de una
expresión booleana. Por ejemplo, (tag1+5)>65.

Use la siguiente tabla a fin de seleccionar operadores para sus


expresiones:

Si desea Entonces
Calcular un valor aritmético “Use funciones y operadores aritméticos”en la página 665.
Comparar dos valores o cadenas “Use operadores relacionales”en la página 666.
Verificar si determinadas condiciones son “Use operadores lógicos”en la página 668.
verdaderas o falsas
Comparar los bits dentro de valores “Use operadores a nivel de bits”en la página 669.

664 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

Use funciones y operadores aritméticos

Usted puede combinar múltiples operadores y funciones en


expresiones aritméticas.

Los operadores aritméticos calculan nuevos valores.

Para Use este operador Tipo de datos óptimo


sumar + DINT, REAL
restar/cambiar signo - DINT, REAL
multiplicar * DINT, REAL
exponente (x a la potencia y) ** DINT, REAL
dividir / DINT, REAL
obtener el módulo de una MOD DINT, REAL
división

Las funciones aritméticas realizan operaciones matemáticas.


Especifique una constante, un tag no booleano o una expresión para
la función.

Para obtener Use esta función Tipo de datos


óptimo
valor absoluto ABS (numeric_expression) DINT, REAL
arco coseno ACOS (numeric_expression) REAL
arco seno ASIN (numeric_expression) REAL
arco tangente ATAN (numeric_expression) REAL
coseno COS (numeric_expression) REAL
radianes a grados DEG (numeric_expression) DINT, REAL
logaritmo natural LN (numeric_expression) REAL
logaritmo base 10 LOG (numeric_expression) REAL
grados a radianes RAD (numeric_expression) DINT, REAL
seno SIN (numeric_expression) REAL
raíz cuadrada SQRT (numeric_expression) DINT, REAL
tangente TAN (numeric_expression) REAL
truncar TRUNC (numeric_expression) DINT, REAL

Publicación 1756-RM003K-ES-P – Julio 2008 665


Apéndice C Programación de texto estructurado

Por ejemplo:

Use este formato Ejemplo


Para esta situación Usted escribiría
value1 operator value2 Si gain_4 y gain_4_adj son tags DINT y su gain_4_adj :=
especificación dice: “Añadir 15 a gain_4 y gain_4+15;
almacenar el resultado en gain_4_adj.”
operator value1 Si alarm y high_alarm son valores DINT y su alarm:=
especificación dice: “Cambiar signo de high_alarm -high_alarm;
y almacenar el resultado en alarm.”
function(numeric_expression) Si overtravel y overtravel_POS son tags DINT y su overtravel_POS :=
especificación dice: “Calcular el valor absoluto de ABS(overtravel);
overtravel y almacenar el resultado en
overtravel_POS.”
value1 operator Si adjustment y position son tags DINT, sensor1 y position :=
(function((value2+value3)/2) sensor2 son tags REAL, y su especificación dice: adjustment +
“Encontrar el valor absoluto del promedio de ABS((sensor1 +
sensor1 y sensor2, añadir el adjustment y guardar el sensor2)/2);
resultado en position.”

Use operadores relacionales

Los operadores relacionales comparan dos valores o cadenas para


proporcionar un resultado verdadero o falso. El resultado de una
operación relacional es un valor BOOL:

Si la comparación es El resultado es
verdadera 1
falsa 0

Use los siguientes operadores relacionales:

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


igual = DINT, REAL, cadena
menor que < DINT, REAL, cadena
menor o igual que <= DINT, REAL, cadena
mayor que > DINT, REAL, cadena
mayor o igual que >= DINT, REAL, cadena
diferente de <> DINT, REAL, cadena

666 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

Por ejemplo:

Use este formato Ejemplo


Para esta situación Usted escribiría
value1 operator value2 Si temp es un tag DINT y su especificación dice: IF temp<100 THEN...
“Si temp es menor que 100° entonces…”
stringtag1 operator Si bar_code y dest son tags de cadena y su IF bar_code=dest THEN...
stringtag2 especificación dice: “Si bar_code es igual a
dest entonces…”
char1 operator char2 Si bar_code es un tag de cadena y su IF bar_code.DATA[0]=65
especificación dice: “Si bar_code.DATA[0] es THEN...
igual a ’A’ entonces…”

Para introducir un carácter ASCII


directamente en la expresión, introduzca
el valor decimal del carácter.
bool_tag := Si count y length son tags DINT, done es un tag done := (count >= length);
bool_expressions BOOL y su especificación dice “Si count es
mayor o igual que length, usted ya terminó el
conteo.”

Cómo se evalúan las cadenas

Los valores hexadecimales de los caracteres ASCII determinan si una


cadena es mayor o menor que otra cadena.

• Cuando las dos cadenas se clasifican como en un directorio


telefónico, el orden de las cadenas determina cuál es mayor.

Caracteres ASCII Códigos


hexadecimales
1ab $31$61$62
m m 1b $31$62
e a
A $41
n y
o o AB $41$42 AB < B
r r
B $42
a $61 a>B
ab $61$62

• Las cadenas son iguales si sus caracteres coinciden.


• Los caracteres permiten distinguir mayúsculas de minúsculas.
La “A” mayúscula ($41) es diferente a la “a” minúscula ($61).

Para obtener el valor decimal y el código hexadecimal de un carácter,


consulte la contraportada de este manual.

Publicación 1756-RM003K-ES-P – Julio 2008 667


Apéndice C Programación de texto estructurado

Use operadores lógicos

Los operadores lógicos le permiten verificar si varias condiciones son


verdaderas o falsas. El resultado de una operación lógica es un valor
BOOL.

Si la comparación es El resultado es
verdadera 1
falsa 0

Use los siguientes operadores lógicos:

Para obtener Use este operador Tipo de datos


Y lógico &, AND BOOL
O lógico OR BOOL
O exclusivo lógico XOR BOOL
complemento lógico NOT BOOL

Por ejemplo:

Use este formato Ejemplo


Para esta situación Usted escribiría
BOOLtag Si photoeye es un tag BOOL y su especificación IF photoeye THEN...
dice: “Si photoeye está activada, entonces…”
NOT BOOLtag Si photoeye es un tag BOOL y su especificación IF NOT photoeye THEN...
dice: “Si photoeye está desactivada
entonces…”
expression1 & expression2 Si photoeye es un tag BOOL, temp es un tag IF photoeye & (temp<100)
DINT y su especificación dice: “Si photoeye THEN...
está activada y temp es menor que 100°
entonces…”.
expression1 OR expression2 Si photoeye es un tag BOOL, temp es un tag IF photoeye O (temp<100)
DINT y su especificación dice: “Si photoeye THEN...
está activada o temp es menor que 100°
entonces…”.
expression1 XOR expression2 Si photoeye1 y photoeye2 son tags BOOL y su IF photoeye1 XOR
especificación dice: “Si: photoeye2 THEN...

• photoeye1 está activada mientras que


photoeye2 está desactivada o
• photoeye1 está desactivada mientras que
photoeye2 está activada
entonces…”
BOOLtag := expression1 & Si photoeye1 y photoeye2 son tags BOOL, open abrir := photoeye1 y
expression2 es un tag BOOL y su especificación dice: “Si photoeye2;
photoeye1 y photoeye2 están ambas activadas,
establezca open en verdadero”.

668 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

Use operadores a nivel de bits

Los operadores a nivel de bits manipulan los bits dentro de un valor


basado en dos valores.

Para obtener Use este operador Tipo de datos óptimo


Y a nivel de bits &, AND DINT
O a nivel de bits OR DINT
O exclusivo a nivel de bits XOR DINT
complemento a nivel de bits NOT DINT

Por ejemplo:

Use este formato Ejemplo


Para esta situación Usted escribiría
value1 operator value2 Si input1, input2, y result1 son tags DINT y su result1 := input1 AND
especificación dice: “Calcule el resultado a nivel de input2;
bits de input1 e input2. Guarde el resultado en
result1.”

Determine el orden de ejecución

Las operaciones que usted escribe en una expresión se realizan en un


orden prescrito, no necesariamente de izquierda a derecha.
• Las operaciones de igual orden se realizan de izquierda a
derecha.
• Si una expresión contiene varios operadores o funciones,
agrupe las condiciones en paréntesis “( )”. Esto asegura el
orden correcto de ejecución y facilita la lectura de la expresión.

Orden Operación
1. ()
2. función (…)
3. **
4. − (cambiar signo)
5. NOT
6. *, /, MOD
7. +, - (restar)
8. <, <=, >, >=
9. =, <>
10. &, AND
11. XOR
12. OR

Publicación 1756-RM003K-ES-P – Julio 2008 669


Apéndice C Programación de texto estructurado

Instrucciones Las declaraciones de texto estructurado también pueden ser


instrucciones. Consulte en la tabla de ubicación al comienzo de este
manual la lista de las instrucciones disponibles en texto estructurado.
Una instrucción de texto estructurado se ejecuta cada vez que se
escanea. Una instrucción de texto estructurado dentro de una
construcción se ejecuta cada vez que las condiciones de la
construcción son verdaderas. Si las condiciones de la construcción son
falsas, las declaraciones dentro de la construcción no se escanean.
No existe una condición de renglón o transición de estado que active
la ejecución.

Esto difiere de las instrucción de bloque de funciones que usan


EnableIn para activar la ejecución. Las instrucciones de texto
estructurado se ejecutan como si EnableIn siempre estuviera
establecido.

Esto también difiere de las instrucciones de lógica de escalera que


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

Por ejemplo, la instrucción ABL es una instrucción transicional en


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

En texto estructurado, si usted escribe este ejemplo como:

IF tag_xic THEN ABL(0,serial_control);

END_IF;

la instrucción ABL se ejecutará en cada escán que tag_xic esté


establecido, no sólo cuando tag_xic cambie de borrado a establecido.

670 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

Si desea que la instrucción ABL se ejecute sólo cuando tag_xic cambie


de borrado a establecido, tiene que condicionar la instrucción de
texto estructurado. Use un impulso para activar la ejecución.

osri_1.InputBit := tag_xic;
OSRI(osri_1);

IF (osri_1.OutputBit) THEN
ABL(0,serial_control);
END_IF;

Construcciones Las construcciones pueden programarse individualmente o anidadas


dentro de otras construcciones.

Si desea Use esta construcción Disponible en estos lenguajes Vea la página


hacer algo si o cuando ocurre una condición IF...THEN texto estructurado 672
específica
seleccionar qué hacer según a un valor CASE...OF texto estructurado 675
numérico
hacer algo un número específico de veces antes FOR...DO texto estructurado 678
de hacer otra cosa
continuar haciendo algo siempre que ciertas WHILE...DO texto estructurado 681
condiciones sean verdaderas
seguir haciendo algo hasta que una condición REPEAT...UNTIL texto estructurado 684
sea verdadera

Algunas palabras clave están reservadas para uso futuro

Estas construcciones no están disponibles:

• GOTO
• REPEAT

El software RSLogix 5000 no le permitirá usarlas como nombres de


tags ni como construcciones.

Publicación 1756-RM003K-ES-P – Julio 2008 671


Apéndice C Programación de texto estructurado

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

Operandos:

Texto estructurado
IF bool_expression THEN
Operando Tipo Formato Introduzca
<statement>;
END_IF; bool_ BOOL tag Expresión o tag BOOL que evalúa respecto
expression a un valor BOOL (expresión BOOL)
expresión

Descripción: La sintaxis es:

IF bool_expression1 THEN
<statement >; declaraciones que deben
ejecutarse cuando
. bool_expression1 es verdadero
.
.
ELSIF bool_expression2 THEN
opcional
<statement>; declaraciones que deben
ejecutarse cuando
. bool_expression2 es verdadero
.
.
ELSE
opcional
<statement>; declaraciones que deben
ejecutarse cuando ambas
. expresiones son falsas
.
.
END_IF;

Para usar ELSIF o ELSE, siga estas pautas:

1. Para seleccionar entre varios posibles grupos de declaraciones,


añada una o más declaraciones ELSIF.

• Cada instrucción ELSIF representa una ruta alternativa.


• Especifique todas las rutas ELSIF que necesite.
• El controlador ejecuta la primera instrucción IF o ELSIF
verdadera y se salta el resto de las instrucciones ELSIF y ELSE.

2. Para hacer algo cuando todas las condiciones IF o ELSIF son


falsas, añada una declaración ELSE.

672 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

La siguiente tabla resume las diferentes combinaciones de IF, THEN,


ELSIF y ELSE.

Si desea Y Use esta construcción


hacer algo si o cuando las condiciones no hacer nada si las condiciones son IF…THEN
son verdaderas falsas
hacer algo diferente si las condiciones IF…THEN…ELSE
son falsas
seleccionar entre declaraciones no hacer nada si las condiciones son IF…THEN…ELSIF
alternativas (o grupos de falsas
declaraciones) según las condiciones
asignar declaraciones predeterminadas IF…THEN…ELSIF…ELSE
de entrada
si todas las condiciones son falsas

Indicadores de estado
aritmético: no afectados

Condiciones de fallo: ninguna

Ejemplo 1: IF…THEN

Si usted desea esto Introduzca este texto estructurado


Si rechazos > 3 entonces IF rejects > 3 THEN
transportador = desactivado (0) conveyor := 0;
alarma = activada (1) alarm := 1;
END_IF;

Ejemplo 2: IF…THEN…ELSE

Si usted desea esto Introduzca este texto estructurado


Si el contacto de dirección del transportador = avance (1) IF conveyor_direction THEN
entonces
luz = apagada light := 0;
De lo contrario, luz = encendida ELSE
light [:=] 1;
END_IF;

El [:=] le indica al controlador que borre light cada vez que el


controlador:
• entre al modo de MARCHA
• salga del paso de un SFC si usted configura el SFC para
Restablecimiento automático. (Esto sólo se aplica si usted
incorpora la asignación en la acción del paso o usa la acción
para llamar una rutina de texto estructurado mediante una
instrucción JSR).

Publicación 1756-RM003K-ES-P – Julio 2008 673


Apéndice C Programación de texto estructurado

Ejemplo 3: IF…THEN…ELSIF

Si usted desea esto Introduzca este texto estructurado


Si el interruptor de final de carrera de azúcar baja = baja IF Sugar.Low & Sugar.High THEN
(activado) y el interruptor de final de carrera de azúcar
alta = no alta (activado) entonces
válvula de entrada = abierta (activada) Sugar.Inlet [:=] 1;
Hasta que el interruptor de final de carrera de azúcar ELSIF NOT(Sugar.High) THEN
alta = alta (desactivado)
Sugar.Inlet := 0;
END_IF;

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


controlador:
• entre al modo de MARCHA
• salga del paso de un SFC si usted configura el SFC para
Restablecimiento automático. (Esto sólo se aplica si usted
incorpora la asignación en la acción del paso o usa la acción
para llamar una rutina de texto estructurado mediante una
instrucción JSR).

Ejemplo 4: IF…THEN…ELSIF…ELSE

Si usted desea esto Introduzca este texto estructurado


Si la temperatura del tanque > 100 IF tank.temp > 200 THEN
entonces bomba = lenta pump.fast :=1; pump.slow :=0; pump.off :=0;
Si la temperatura del tanque > 200 ELSIF tank.temp > 100 THEN
entonces bomba = rápida pump.fast :=0; pump.slow :=1; pump.off :=0;
de lo contrario, bomba = desactivada ELSE
pump.fast :=0; pump.slow :=0; pump.off :=1;
END_IF;

674 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

CASE...OF Use CASE para seleccionar qué hacer según un valor numérico.

Operandos:

Texto estructurado
CASE numeric_expression OF
Operando Tipo Formato Introduzca
selector1: statement;
selectorN: statement; numeric_ SINT tag tag o expresión que evalúa respecto a un
número (expresión numérica)
ELSE expression INT expresión
statement;
END_CASE; DINT

REAL
selector SINT inmediato el mismo tipo que
numeric_expression
INT

DINT

REAL

IMPORTANTE Si usted usa valores REAL, emplee un rango de valores para un


selector, ya que es más probable que un valor REAL se
encuentre dentro de un rango de valores, y no que coincida
exactamente con un valor específico.

Descripción: La sintaxis es:

CASE numeric_expression OF
selector1 : <statement>; declaraciones a ejecutar cuando
. numeric_expression = selector1
.
.
selector2 : <statement>; declaraciones a ejecutar cuando
especifique todos los numeric_expression = selector2
valores de selector .
alternativos (rutas) que .
necesite .
selector3 : <statement>; declaraciones a ejecutar cuando
. numeric_expression = selector3
.
.
ELSE
<statement>; declaraciones a ejecutar cuando
opcional . numeric_expression ≠ cualquier
selector
.
.
END_CASE;

Publicación 1756-RM003K-ES-P – Julio 2008 675


Apéndice C Programación de texto estructurado

Vea la tabla en la siguiente página para obtener los valores de selector


válidos.

La sintaxis para introducir los valores de selector es:

Cuando el selector es Introduzca


un valor value: statement
varios valores distintos value1, value2, valueN : <statement>

Use una coma (,) para separar cada valor.


un rango de valores value1..valueN : <statement>

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


valores distintos más un valuea, valueb, value1..valueN : <statement>
rango de valores

La construcción CASE es similar a una declaración de interruptor en


los lenguajes de programación C o C++. Sin embargo, con la
construcción CASE el controlador ejecuta sólo las declaraciones
asociadas con la primera coincidencia con el valor de selector.
La ejecución siempre se interrumpe después de las declaraciones de
dicho selector y va a la declaración END_CASE.

Indicadores de estado
aritmético: no afectados

Condiciones de fallo: ninguna

676 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

Ejemplo

Si usted desea esto Introduzca este texto estructurado


Si el número de receta = 1 entonces CASE recipe_number OF
Ingrediente A salida 1 = abierto (1) 1: Ingredient_A.Outlet_1 :=1;
Ingrediente B salida 4 = abierto (1) Ingredient_B.Outlet_4 :=1;
Si el número de receta = 2 ó 3 entonces 2,3: Ingredient_A.Outlet_4 :=1;
Ingrediente A salida 4 = abierto (1) Ingredient_B.Outlet_2 :=1;
Ingrediente B salida 2 = abierto (1)
Si el número de receta = 4, 5, 6 ó 7 entonces 4..7: Ingredient_A.Outlet_4 :=1;
Ingrediente A salida 4 = abierto (1) Ingredient_B.Outlet_2 :=1;
Ingrediente B salida 2 = abierto (1)
Si el número de receta = 8, 11, 12 ó 13 entonces 8,11..13 Ingredient_A.Outlet_1 :=1;
Ingrediente A salida 1 = abierto (1) Ingredient_B.Outlet_4 :=1;
Ingrediente B salida 4 = abierto (1)
De lo contrario, todas las salidas = cerradas (0) ELSE
Ingredient_A.Outlet_1 [:=]0;
Ingredient_A.Outlet_4 [:=]0;
Ingredient_B.Outlet_2 [:=]0;
Ingredient_B.Outlet_4 [:=]0;
END_CASE;

El [:=] le indica al controlador que también borre los tags de salida


cada vez que el controlador:
• entre al modo de MARCHA
• salga del paso de un SFC si usted configura el SFC para
Restablecimiento automático. (Esto sólo se aplica si usted
incorpora la asignación en la acción del paso o usa la acción
para llamar una rutina de texto estructurado mediante una
instrucción JSR).

Publicación 1756-RM003K-ES-P – Julio 2008 677


Apéndice C Programación de texto estructurado

FOR…DO Use el lazo FOR…DO para hacer algo una cantidad determinada de
veces antes de hacer otra cosa.

Operandos:

Texto estructurado
FOR count:= initial_value TO
final_value BY increment DO Operando Tipo Formato Descripción
<statement>; count SINT tag tag para almacenar la posición de conteo
END_FOR; a medida que FOR…DO se ejecuta
INT

DINT
initial_ SINT tag se debe evaluar con respecto a un número
value
INT expresión especifica el valor inicial del conteo

DINT inmediato
final_ SINT tag especifica el valor final del conteo, el cual
value determina cuándo salir del lazo
INT expresión

DINT inmediato
increment SINT tag (opcional) cantidad a incrementar el
conteo cada vez que se pasa por el lazo
INT expresión

DINT inmediato
Si usted no especifica un incremento, el
conteo se incrementa en 1.

IMPORTANTE Asegúrese de no efectuar iteraciones dentro de un lazo demasiadas


veces en un solo escán.
• El controlador no ejecuta ninguna otra declaración en la rutina
hasta que completa el lazo.
• Si el tiempo que se requiere para completar el lazo es mayor
que el temporizador de control (watchdog) de la tarea, se
produce un fallo mayor.
• Considere usar una construcción diferente, por ejemplo
IF...THEN.

678 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

Descripción: La sintaxis es:

FOR count := initial_value


TO final_value
opcional { BY increment Si usted no especifica un incremento,
el lazo se incrementa en 1.
DO
<statement>;
IF bool_expression THEN
EXIT; Si existen condiciones cuando usted desea
opcional salir del lazo anticipadamente, use otras
END_IF; declaraciones, tal como la construcción
IF...THEN, para condicionar una
declaración EXIT.
END_FOR;

Los siguientes diagramas muestran cómo se ejecuta un lazo FOR...DO


y cómo una declaración EXIT deja el lazo anticipadamente.

¿Efectuado x sí ¿Efectuado x sí
veces? veces?

no no
declaración 1 declaración 1
declaración 2 declaración 2
declaración 3 declaración 3
declaración 4 declaración 4
… …
¿Salir? sí
resto de la rutina
no
resto de la rutina

El lazo FOR…DO se ejecuta un número Para detener el lazo antes de que el conteo llegue al
específico de veces. último valor, use una declaración EXIT.

Indicadores de estado
aritmético: no afectados

Condiciones de fallo:

Ocurrirá un fallo mayor si Tipo de fallo Código de fallo


la construcción tiene un lazo 6 1
excesivamente largo

Publicación 1756-RM003K-ES-P – Julio 2008 679


Apéndice C Programación de texto estructurado

Ejemplo 1:

Si usted desea esto Introduzca este texto estructurado


Borrar los bits 0 - 31 en una matriz de elementos BOOL: For subscript:=0 to 31 by 1 do
array[subscript] := 0;
1. Inicializar el tag subscript a 0.
End_for;
2. Borrar la matriz[ subscript ]. Por ejemplo, cuando
subscript = 5, borrar array[5].

3. Añadir 1 a subscript.

4. Si subscript es ≤ 31, repetir 2 y 3.

De lo contrario, parar.

Ejemplo 2:

Si usted desea esto Introduzca este texto estructurado


Un tipo de datos definido por el usuario (estructura) almacena SIZE(Inventory,0,Inventory_Items);
la siguiente información acerca de un ítem en su inventario:
For position:=0 to Inventory_Items - 1 do
• ID de código de barras del ítem (tipo de datos de cadena) If Barcode = Inventory[position].ID then
• Cantidad en inventario del ítem (tipo de datos DINT) Quantity := Inventory[position].Qty;
Una matriz de la estructura anterior contiene un elemento Exit;
para cada ítem diferente en su inventario. Usted desea buscar
la matriz para un producto específico (use su código de barras) End_if;
y determine la cantidad que hay en inventario.
End_for;
1. Obtener el tamaño (número de ítems) de la matriz
Inventory y almacenar el resultado en Inventory_Items
(tag DINT).

2. Inicializar el tag position a 0.

3. Si el código de barras coincide con el ID de un ítem en la


matriz, entonces:

a. Establecer el tag Quantity = Inventory[position].Qty.


Esto produce la cantidad en inventario del ítem.

b. Parar.

Barcode es un tag de cadena que almacena el código de


barras del ítem que usted está buscando. Por ejemplo,
cuando position = 5, comparar Barcode con Inventory[5].ID.

4. Añadir 1 a position.

5. Si position es ≤ (Inventory_Items -1), repetir 3 y 4. Puesto


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

De lo contrario, parar.

680 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

WHILE…DO Use el lazo WHILE…DO para continuar haciendo algo siempre y


cuando ciertas condiciones sean verdaderas.

Operandos:

Texto estructurado
WHILE bool_expression DO
Operando Tipo Formato Introduzca
<statement>;
END_WHILE; bool_ BOOL tag Expresión o tag BOOL que evalúa
expression respecto a un valor BOOL
expresión

IMPORTANTE Asegúrese de no efectuar iteraciones dentro de un lazo demasiadas


veces en un solo escán.
• El controlador no ejecuta ninguna otra declaración en la rutina
hasta que completa el lazo.
• Si el tiempo que se requiere para completar el lazo es mayor
que el temporizador de control (watchdog) para la tarea, se
produce un fallo mayor.
• Considere usar una construcción diferente, por ejemplo
IF...THEN.

Descripción: La sintaxis es:

WHILE bool_expression1 DO
<statement>; declaraciones que se ejecutan mientras
bool_expression1 es verdadero
IF bool_expression2 THEN
EXIT; Si existen condiciones cuando usted desea
opcional salir del lazo anticipadamente, use otras
END_IF; declaraciones, tal como la construcción
IF...THEN, para condicionar una
declaración EXIT.
END_WHILE;

Publicación 1756-RM003K-ES-P – Julio 2008 681


Apéndice C Programación de texto estructurado

Los siguientes diagramas muestran cómo se ejecuta un lazo


WHILE...DO y cómo un comando EXIT deja el lazo anticipadamente.
falsa falsa
expresión BOOL expresión BOOL
verdadera verdadera
declaración 1 declaración 1
declaración 2 declaración 2
declaración 3 declaración 3
declaración 4 declaración 4
… …
¿Salir? sí
resto de la rutina
no
resto de la rutina

Mientras bool_expression es verdadero, el Para detener el lazo antes de que las condiciones
controlador ejecuta sólo las declaraciones sean verdaderas, use una declaración EXIT.
dentro del lazo WHILE…DO.

Indicadores de estado
aritmético: no afectados

Condiciones de fallo:

Ocurrirá un fallo mayor si Tipo de fallo Código de fallo


la construcción tiene un lazo 6 1
excesivamente largo

Ejemplo 1:

Si usted desea esto Introduzca este texto estructurado


El lazo WHILE...DO evalúa sus condiciones primero. Si las pos := 0;
condiciones son verdaderas, el controlador ejecuta las
While ((pos <= 100) & structarray[pos].value
declaraciones dentro del lazo.
<> targetvalue)) do
Esto es diferente del lazo REPEAT...UNTIL porque el lazo pos := pos + 2;
REPEAT...UNTIL ejecuta las declaraciones en la construcción y
posteriormente determina si las condiciones son verdaderas String_tag.DATA[pos] := SINT_array[pos];
antes de ejecutar las declaraciones nuevamente. Las end_while;
declaraciones en un lazo REPEAT...UNTIL siempre se ejecutan
por lo menos una vez. Las declaraciones en un lazo
WHILE...DO es posible que nunca se ejecuten.

682 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

Ejemplo 2:

Si usted desea esto Introduzca este texto estructurado


Mover caracteres ASCII desde una matriz SINT a un tag de element_number := 0;
cadena. (En una matriz SINT, cada elemento retiene un
SIZE(SINT_array, 0, SINT_array_size);
carácter). Parar cuando llegue al retorno de carro.
While SINT_array[element_number] <> 13 do
1. Inicializar Element_number a 0.
String_tag.DATA[element_number] :=
2. Contar el número de elementos en SINT_array (la matriz SINT_array[element_number];
que contiene los caracteres ASCII) y almacenar el element_number := element_number + 1;
resultado en SINT_array_size (tag DINT).
String_tag.LEN := element_number;
3. Si el carácter en SINT_array[element_number] = 13 If element_number = SINT_array_size then
(valor decimal del retorno de carro), parar.
exit;
4. Establecer String_tag[element_number] = el carácter en end_if;
SINT_array[element_number].
end_while;
5. Añadir 1 a element_number. Esto permite al controlador
verificar el siguiente carácter en SINT_array.

6. Establecer el miembro Length de String_tag =


element_number. (Así registra el número de caracteres
que hay hasta el momento en String_tag).

7. Si element_number = SINT_array_size, parar. (Usted está


al final de la matriz y ésta no contiene un retorno de carro).

8. Ir a 3.

Publicación 1756-RM003K-ES-P – Julio 2008 683


Apéndice C Programación de texto estructurado

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

Operandos:

Texto estructurado
REPEAT
Operando Tipo Formato Introduzca
<statement>;
UNTIL bool_expression bool_ BOOL tag Expresión o tag BOOL que evalúa respecto
expression a un valor BOOL (expresión BOOL)
END_REPEAT; expresión

IMPORTANTE Asegúrese de no efectuar iteraciones dentro de un lazo demasiadas


veces en un solo escán.
• El controlador no ejecuta ninguna otra declaración en la rutina
hasta que completa el lazo.
• Si el tiempo que se requiere para completar el lazo es mayor
que el temporizador de control (watchdog) para la tarea, se
produce un fallo mayor.
• Considere usar una construcción diferente, por ejemplo
IF...THEN.

Descripción: La sintaxis es:

REPEAT
<statement>; declaraciones que se ejecutan mientras
bool_expression1 es falso
IF bool_expression2 THEN
EXIT; Si existen condiciones cuando usted desea
opcional salir del lazo anticipadamente, use otras
END_IF; declaraciones, tal como la construcción
IF...THEN, para condicionar una
declaración EXIT.
UNTIL bool_expression1
END_REPEAT;

684 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

Los siguientes diagramas muestran cómo se ejecuta un lazo


REPEAT...UNTIL y cómo un comando EXIT deja el lazo
anticipadamente.
declaración 1 declaración 1
declaración 2 declaración 2
declaración 3 declaración 3
declaración 4 declaración 4
… …
verdadera sí
¿Salir?
expresión BOOL
no
falsa
verdadera
expresión BOOL
resto de la rutina
falsa

resto de la rutina

Mientras bool_expression es falso, el Para detener el lazo antes de que las condiciones
controlador ejecuta sólo las declaraciones dentro sean falsas, use una declaración EXIT.
del lazo REPEAT…UNTIL.

Indicadores de estado
aritmético: no afectados

Condiciones de fallo:

Ocurrirá un fallo mayor si Tipo de fallo Código de fallo


la construcción tiene un lazo 6 1
excesivamente largo

Ejemplo 1:

Si usted desea esto Introduzca este texto estructurado


El lazo REPEAT...UNTIL ejecuta las declaraciones en la pos := -1;
construcción y posteriormente determina si las condiciones
REPEAT
son verdaderas antes de ejecutar las declaraciones
nuevamente. pos := pos + 2;

Esto es diferente del lazo WHILE...DO porque el lazo UNTIL ((pos = 101) OR
WHILE...DO evalúa su condición primero. Si las condiciones (structarray[pos].value = targetvalue))
son verdaderas, el controlador ejecuta las declaraciones end_repeat;
dentro del lazo. Las declaraciones en un lazo REPEAT...UNTIL
siempre se ejecutan por lo menos una vez. Las declaraciones
en un lazo WHILE...DO es posible que nunca se ejecuten.

Publicación 1756-RM003K-ES-P – Julio 2008 685


Apéndice C Programación de texto estructurado

Ejemplo 2:

Si usted desea esto Introduzca este texto estructurado


Mover caracteres ASCII desde una matriz SINT a un tag de element_number := 0;
cadena. (En una matriz SINT, cada elemento retiene un
SIZE(SINT_array, 0, SINT_array_size);
carácter). Parar cuando llegue al retorno de carro.
Repeat
1. Inicializar Element_number a 0.
String_tag.DATA[element_number] :=
2. Contar el número de elementos en SINT_array (la matriz SINT_array[element_number];
que contiene los caracteres ASCII) y almacenar el element_number := element_number + 1;
resultado en SINT_array_size (tag DINT).
String_tag.LEN := element_number;
3. Establecer String_tag[element_number] = el carácter en If element_number = SINT_array_size then
SINT_array[element_number].
exit;
4. Añadir 1 a element_number. Esto permite al controlador end_if;
verificar el siguiente carácter en SINT_array.
Until SINT_array[element_number] = 13
5. Establecer el miembro Length de String_tag = end_repeat;
element_number. (Así registra el número de caracteres
que hay hasta el momento en String_tag).

6. Si element_number = SINT_array_size, parar. (Usted está


al final de la matriz y ésta no contiene un retorno de carro).

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

De lo contrario, ir a 3.

686 Publicación 1756-RM003K-ES-P – Julio 2008


Programación de texto estructurado Apéndice C

Comentarios Para facilitar la interpretación del texto estructurado, añádale


comentarios.
• Los comentarios le permiten usar un lenguaje simple para
describir cómo funciona su texto estructurado.
• Los comentarios no tienen ningún efecto en la ejecución del
texto estructurado.

Para añadir comentarios a su texto estructurado:

Para añadir un comentario Use uno de estos formatos


en una sola línea //comment
al final de una línea de texto
estructurado
(*comment*)

/*comment*/
dentro de una línea de texto (*comment*)
estructurado

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

/*start of comment . . . end of


comment*/

Publicación 1756-RM003K-ES-P – Julio 2008 687


Apéndice C Programación de texto estructurado

Por ejemplo:

Formato Ejemplo
//comment Al comienzo de una línea

//Se verifica el sentido de desplazamiento del


transportador

IF conveyor_direction THEN...

Al final de una línea

ELSE //Si el transportador no se está moviendo,


se establece la luz de alarma

light := 1;

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

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


LS*)THEN...

(*Controla la velocidad de la bomba de recirculación.


La velocidad depende de la temperatura en el tanque*).

IF tank.temp > 200 THEN...


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

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

/*Obtiene el número de elementos en la matriz Inventory


y almacena el valor en el tag Inventory_Items*/

SIZE(Inventory,0,Inventory_Items);

688 Publicación 1756-RM003K-ES-P – Julio 2008


Índice

A comentarios
texto estructurado 687
activación de salida 82 comparación de bits de archivo 478
activar tarea de evento 464 comparar 206
actualizar salida 201 concatenación de cadenas 601
ajuste 503 condiciones de overflow 648
alarma digital 30 conector
alarmas 504 diagrama de bloques de
arco coseno 532 funciones 641
arco seno 529
arco tangente 535 conector de cable de entrada 641
aritmética y lógica de archivo 335 conector de cable de salida 641
ASCII conexión
asignación de texto caché 173
estructurado 663 configuración 159
instrucción MSG 159
asignación
carácter ASCII 663 instrucción PID 502
no retentiva 662 construcción
texto estructurado 671
retentiva 661
conteo progresivo 128
atributos conteo progresivo/regresivo 136
conversión de tipos de datos 635 conteo regresivo 132
valores inmediatos 635 control de programa/operador
atributos comunes 635 descripción general 654
conversión de tipos de datos 635 conversión de tipos de datos 635
valores inmediatos 635 convertir a BCD 556
convertir en entero 559
copiar 356
B copiar síncrono 356
BAND 317 coseno 523
banda muerta 514
BNOT 326
BOR 320 D
borrar 298 descarga FIFO 400
Borrar ASCII búfer 575 descripción
buscar cadena 605 texto estructurado 687
búsqueda y comparación de desenclavamiento de salida 86
archivos 347 desplazamiento de bits a la
BXOR 323 derecha 390
desplazamiento de bits a la
izquierda 386
C desviación estándar 376
caché detección de diagnóstico 486
conexión 173 determinación de igualdad con
cadena máscara 237
evaluación en texto diagrama de bloques de funciones
estructurado 667 creación de un retardo de
Cadena a DINT 614 escán 647
Cadena central 609 resolución del flujo de datos entre
Cadena en REAL 616 dos bloques 647
cálculo 248 resolver un lazo 645
cambiar signo 274 selección de elementos 641
caracteres ASCII en el búfer 573 diferente de 242
carga de secuenciador 428 DINT en cadena 619
carga FIFO 394 distribuir campo de bits 292
carga LIFO 406, 412 distribuir campo de bits con
CASE 675 receptor 295
clasificar 371 división 261
códigos de error documento
ASCII 568 texto estructurado 687
instrucción MSG 152
códigos de productos 181

689Publicación 1756-RM003K-ES-P – Julio 2008 689


Índice

E FBD_BIT_FIELD_DISTRIBUTE 295
FBD_BOOLEAN_AND 317
elementos FBD_BOOLEAN_NOT 326
instrucción SIZE 381
FBD_BOOLEAN_OR 320
Eliminación de cadena 603
enclavamiento de datos 642 FBD_BOOLEAN_XOR 323
enclavamiento de salida 84 FBD_COMPARE 212, 216, 220,
Encontrar cadena 605 224, 228, 243
escalado 505 FBD_CONVERT 556, 559
escritura ASCII 594 FBD_COUNTER 136
escritura ASCII con anexo 589 FBD_LIMIT 232
establecer valor del sistema 176 FBD_LOGICAL 305, 308, 311, 315
estado FBD_MASKED_MOVE 288
tarea 195 FBD_MASK_EQUAL 238
estructura COMPARE 479, 487 FBD_MATH 253, 256, 259, 262,
estructura CONTROL 336, 347, 367, 267, 275, 547
371, 376, 386, 390, 395, 401, FBD_MATH_ADVANCED 271, 278,
406, 407, 413, 420, 424, 428
estructura COUNTER 128, 132 520, 524, 527, 529, 532,
estructura de control 448 535, 540, 544, 550, 553
Estructura FBD_BIT_FIELD_ FBD_ONESHOT 96, 99
DISTRIBUTE 295 FBD_TIMER 116, 120, 124
Estructura FBD_BOOLEAN_ FBD_TRUNCATE 561
AND 317 instrucción RES 141
Estructura FBD_BOOLEAN_ MESSAGE 144
NOT 326 PID 498
Estructura FBD_BOOLEAN_OR 320 RESULT 479, 487
Estructura FBD_BOOLEAN_XOR 323 SERIAL_PORT_CONTROL 566, 568,
estructura FBD_COMPARE 212, 216, 570, 573, 578, 582, 586,
220, 224, 228, 243
estructura FBD_CONVERT 556, 559 590, 595
Estructura FBD_COUNTER 136 STRING 568, 600, 613
estructura FBD_LIMIT 232 TIMER 104, 108, 112
Estructura FBD_LOGICAL 305, 308, etiqueta 434, 627, 631
311, 315 examinar si está abierto 80
Estructura FBD_MASKED_ expiración
MOVE 288 configurar para tarea de evento 195
Estructura FBD_MASK_EQUAL 238 exponencial 546
estructura FBD_MATH 253, 256, 259, expresión
262, 267, 275, 547 expresión BOOL
Estructura FBD_MATH_ADVANCED texto estructurado 663
271, 520, 524, 527, 529, 532, expresión numérica
535, 540, 544, 550, 553 texto estructurado 663
estructura FBD_MATH_ orden de ejecución
ADVANCED 278 texto estructurado 669
estructura FBD_ONESHOT 96, 99 texto estructurado
estructura FBD_TIMER 116, 120, 124 descripción general 663
Estructura FBD_TRUNCATE 561 funciones 665
estructura MESSAGE 144 operadores a nivel de bits 669
estructura PID 498 operadores aritméticos 665
estructura RESULT 479, 487 operadores lógicos 668
Estructura SERIAL_PORT_ operadores relacionales 666
CONTROL 566, 568, 570, 573, expresión BOOL
578, 582, 586, 590, 595 texto estructurado 663
estructura STRING 568, 600, 613 expresión numérica 663
estructura TIMER 104, 108, 112 expresiones
estructuras formato 209, 250, 345, 353
cadena 568, 613 operadores válidos 208, 250, 345,
COMPARE 479, 487 353
CONTROL 336, 347, 367, 371, 376, orden de operación 209, 251, 346,
386, 390, 395, 401, 406, 354
407, 413, 420, 424, 428
COUNTER 128, 132

690 Publicación 1756-RM003K-ES-P – Julio 2008


Índice

F instrucción CTU 128


instrucción CTUD 136
fin temporal 450 instrucción DDT
FOR…DO 678 modo de búsqueda 488
funciones operandos 486
texto estructurado 665 instrucción de salida inmediata 201
instrucción DEG 550
instrucción DELETE 603
G instrucción DIV 261
ganancia anticipativa 515 instrucción DTOS 619
grados 550 instrucción DTR 494
instrucción EOT 458
instrucción EQU 211
H instrucción EVENT 464
instrucción FAL
habilitación de interrupción de modo de operación 330
usuario 454
operandos 335
instrucción FBC
I modo de búsqueda 480
operandos 478
ICON 641 instrucción FFL 394
IF...THEN 672 instrucción FFU 400
igual a 211 instrucción fin de transición 458
indicadores de estado aritmético instrucción FIND 605
overflow 648 instrucción FLL 362
inhabilitación de interrupción de instrucción FOR 470
usuario 454 instrucción FRD 559
Insertar cadena 607 instrucción FSC
instrucción ABL 570 modo de operación 330
instrucción ABS 277 operandos 347
instrucción ACB 573 instrucción GEQ 215
instrucción ACL 575 instrucción GRT 219
instrucción ACS 532 instrucción GSV
instrucción activar tarea de objetos 179
evento 464
instrucción ADD 252 operandos 176
instrucción AFI 456 instrucción INSERT 607
instrucción AHL 577 instrucción IOT 201
instrucción ALMA 42 instrucción JMP 434, 627, 631
instrucción ALMD, instrucciones instrucción JSR 436
de alarmas y eventos instrucción JXR
ALMD 30 estructura de control 448
instrucción AND 304 instrucción LBL 434, 627, 631
instrucción ARD 581 instrucción LEQ 223
instrucción ARL 585 instrucción LES 227
instrucción ASN 529 instrucción LFL 406
instrucción ATN 535 instrucción LFU 412
instrucción AVE 366 instrucción LIM 231
instrucción AWA 589 instrucción LN 540
instrucción AWT 594 instrucción LOG 543
instrucción BRK 473 instrucción LOWER 625
instrucción BSL 386 instrucción MCR 452
instrucción BSR 390 instrucción MEQ 237
instrucción BTD 292 instrucción MID 609
instrucción BTDT 295 instrucción MOD 266
instrucción CLR 298 instrucción MOV 283
instrucción CMP 206 instrucción MSG 159
instrucción CONCAT 601 códigos de error 152
instrucción COP 356 conexión en caché 173
instrucción COS 523 estructura 144
instrucción CPS 356 método de comunicación 172
instrucción CPT 248 operandos 144
instrucción CTD 132 pautas de programación 175

Publicación 1756-RM003K-ES-P – Julio 2008 691


Índice

instrucción MUL 258 instrucción XOR 310


instrucción MVM 285 instrucción XPY 546
instrucción MVMT 288 instrucciones
instrucción NEG 274 alarmas y eventos 29
instrucción NEQ 242 bit 77
instrucción NOP 457 cálculo 247
instrucción NOT 314 comparar 205
instrucción ONS 88 contador 103
instrucción OR 307 control de programa 433
instrucción OSF 94
instrucción OSFI 99 conversión 549
instrucción OSRI 96 conversión ASCII 611
instrucción OTE 82 conversión de cadenas 611
instrucción OTL 84 conversión matemática 549
instrucción OTU 86 depurar 627
instrucción pausa SFC 460 desplazamiento 385
instrucción PID entrada/salida 143
ajuste 503 especiales 477
alarmas 504 for/break 469
banda muerta 514 lógicas 281
configuración 502 manipulación de cadenas 599
escalado 505 manipulación de cadenas
ganancia anticipativa 515 ASCII 599
operandos 497 matemáticas avanzadas 539
polarización de salida 515 matriz
instrucción RAD 553 movimiento 281
instrucción RES 141 puerto serie 565
instrucción restablecer SFC 462 puerto serie ASCII 565
instrucción RET 436, 474 secuenciador 419
instrucción RTO 112
instrucción RTOR 124 temporizador 103
instrucción RTOS 621 trigonométricas 519
instrucción SBR 436 instrucciones ASCII
instrucción SFP 460 ABL 570
instrucción SFR 462 ACB 573
instrucción siempre falso 456 ACL 575
instrucción SIN 520 AHL 577
instrucción SIZE 381 ARD 581
instrucción SQI 420 ARL 585
instrucción SQL 428 AWA 589
instrucción SQO 424 AWT 594
instrucción SQR 270 CONCAT 601
instrucción SRT 371
instrucción SSV DELETE 603
objetos 179 DTOS 619
operandos 176 FIND 605
instrucción STOD 614 INSERT 607
instrucción STOR 616 LOWER 625
instrucción SUB 255 MID 609
instrucción SWPB 300 RTOS 621
Instrucción TAN 526 STOD 614
instrucción TND 450 STOR 616
instrucción TOD 556 SWPB 300
Instrucción TOF 108 UPPER 623
instrucción TOFR 120 instrucciones de alarmas y eventos
instrucción TON 104 acceder programáticamente 70
instrucción TONR 116 ALMA, alarma analógica 42
instrucción TRN 561
instrucción UID 454 almacenamiento de alarmas en el
instrucción UIE 454 búfer 69
instrucción UPPER 623 configuración 62
instrucción XIO 80 ejecución de alarma basada en el
controlador 72

692 Publicación 1756-RM003K-ES-P – Julio 2008


Índice

estado de alarma 68 LBL 434, 627, 631


suprima o inhabilite alarmas 71 MCR 452
texto de mensaje 65 NOP 457
instrucciones de archivo. Vea RET 436
instrucciones de matriz SBR 436
instrucciones de bit TND 450
ONS 88 UID 454
OSF 94 UIE 454
OSFI 99 instrucciones de conversión
OSR 91 DEG 550
OSRI 96 FRD 559
OTE 82 Introducción 549
OTL 84 RAD 553
OTU 86 TOD 556
XIO 80 TRN 561
instrucciones de bits instrucciones de conversión de
introducción 77 cadena
instrucciones de cálculo DTOS 619
ABS 277 LOWER 625
ADD 252 RTOS 621
CPT 248 STOR 616
DIV 261 SWPB 300
formato de expresión 250, 345 UPPER 623
Introducción 247 instrucciones de conversión de
MOD 266 cadenas
MUL 258 introducción 611
NEG 274 STOD 614
operadores válidos 250, 345 instrucciones de conversión
orden de operación 251, 346 matemática
SQR 270 DEG 550
SUB 255 FRD 559
instrucciones de comparación Introducción 549
CMP 206 RAD 553
EQU 211 TOD 556
formato de expresión 209, 353 TRN 561
GEQ 215 instrucciones de depuración 627
GRT 219 instrucciones de desplazamiento
Introducción 205 BSL 386
LEQ 223 BSR 390
LES 227 FFL 394
LIM 231 FFU 400
MEQ 237 Introducción 385
NEQ 242 LFL 406
operadores válidos 208, 353 LFU 412
orden de operación 209, 354 instrucciones de entrada/salida
instrucciones de contador GSV 176
CTD 132 introducción 143
CTU 128 IOT 201
CTUD 136 MSG 144
introducción 103 SSV 176
RES 141 instrucciones de manipulación de
instrucciones de control de cadenas
programa CONCAT 601
AFI 456 DELETE 603
EOT 458 FIND 605
EVENT 464 INSERT 607
introducción 433 introducción 599
JMP 434, 627, 631 MID 609
JSR 436

Publicación 1756-RM003K-ES-P – Julio 2008 693


Índice

instrucciones de matriz instrucciones de traslado/lógicas


archivo/misceláneas 329 BAND 317
AVE 366 BNOT 326
BSL 386 BOR 320
BSR 390 BXOR 323
COP 356 instrucciones especiales
CPS 356 DDT 486
DDT 486 DTR 494
desplazamiento 385 FBC 478
FAL 335 introducción 477
FBC 478 PID 497
FFL 394 SFP 460
FFU 400 SFR 462
FLL 362 instrucciones for/break
FSC 347 BRK 473
LFL 406 FOR 470
LFU 412 Introducción 469
modo de operación 330 RET 474
RES 141 instrucciones lógicas
secuenciador 419 AND 304
SIZE 381 introducción 281
SQI 420 NOT 314
SQL 428 OR 307
SQO 424 XOR 310
SRT 371 instrucciones matemáticas
STD 376 avanzadas
instrucciones de movimiento Introducción 539
BTD 292 LN 540
BTDT 295 logaritmo 543
CLR 298 XPY 546
Introducción 281 instrucciones OSR 91
MOV 283 instrucciones para puerto serie
Introducción 565
MVM 285
instrucciones STD 376
MVMT 288 instrucciones trigonométricas
instrucciones de puerto serie ACS 532
ABL 570 ASN 529
ACB 573 ATN 535
ACL 575 COS 523
AHL 577 Introducción 519
ARD 581 SIN 520
ARL 585 TAN 526
AWA 589 intercambiar byte 300
AWT 594 interrumpir 473
instrucciones de secuenciador IREF 641
introducción 419
SQI 420
SQL 428 L
SQO 424 lazo de retroalimentación
instrucciones de temporizador diagrama de bloques de
introducción 103 funciones 645
RES 141 lazo no resuelto
RTO 112 diagrama de bloques de
RTOR 124 funciones 645
TOF 108 lectura ASCII 581
TOFR 120 límite 231
TON 104 línea de lectura ASCII 585
TONR 116 líneas de handshake ASCII 577
llenar archivo 362

694 Publicación 1756-RM003K-ES-P – Julio 2008


Índice

logaritmo FAULTLOG 187


base 10 543 instrucción GSV/SSV 179
natural 540 MESSAGE 188
logaritmo base 10 543 MODULE 190
logaritmo natural 540 MOTIONGROUP 191
PROGRAM 192
ROUTINE 193
M SERIALPORT 193
máscaras 495 TASK 195
mayor o igual que 215 WALLCLOCKTIME 197
mayor que 219 obtener valor del sistema 176
mayúsculas 623 OCON 641
menor o igual que 223 operadores 208, 250, 345, 353
menor que 227 orden de ejecución
mensaje 144 texto estructurado 669
conexiones en caché 173 operadores a nivel de bits
pautas de programación 175 texto estructurado 669
mezcla de tipos de datos 635 operadores aritméticos
minúsculas 625 texto estructurado 665
modo de búsqueda 480, 488 operadores lógicos
modo de operación 330 texto estructurado 668
modo incremental 333 operadores matemáticos
modo numérico 331 texto estructurado 665
modo todos 330
modos de temporización 649 operadores relacionales
módulo de división 266 texto estructurado 666
mover 283 orden de ejecución 644
mover con máscara 285 expresión de texto
movimiento enmascarado con estructurado 669
receptor 288 orden de operación 209, 251, 346,
multiplicación 258 354
OREF 641

N
P
NO a nivel de bits 314
NO booleano 326 polarización de salida 515
post-escán
texto estructurado 662
O promedio 366
proporcional, integral y
O a nivel de bits 307 derivativo 497
O booleano 320 prueba ASCII para línea de
O exclusivo a nivel de bits 310 búfer 570
O exclusivo booleano 323
objeto CONTROLLER 180
objeto CONTROLLERDEVICE 181 R
objeto CST 183
objeto DF1 184 radianes 553
objeto FAULTLOG 187 raíz cuadrada 270
objeto MESSAGE 188 REAL en cadena 621
objeto MODULE 190 referencia de entrada 641
objeto MOTIONGROUP 191 referencia de salida 641
objeto PROGRAM 192 REPEAT…UNTIL 684
objeto ROUTINE 193 resta 255
objeto SERIALPORT 193 restablecer 141
objeto TASK 195 restablecimiento de control
objeto WALLCLOCKTIME 197 maestro 452
objetos retardo de escán
CONTROLLER 180 diagrama de bloques de
CONTROLLERDEVICE 181 funciones 647
CST 183 retornar 474
DF1 184 retorno 436

Publicación 1756-RM003K-ES-P – Julio 2008 695


Índice

S IF...THEN 672
operadores a nivel de bits 669
Salida operadores aritméticos 665
actualizar inmediatamente 201
operadores lógicos 668
habilitar o inhabilitar fin de
operadores relacionales 666
procesamiento de
REPEAT…UNTIL 684
tarea 195
WHILE…DO 681
saltar 434, 627, 631
saltar a subrutina 436 tipo de datos de cadena 568, 600,
secuenciador de entrada 420 613
secuenciador de salida 424 transición de datos 494
seno 520 truncar 561
sin operación 457
subrutina 436 U
sumar 252
superposición un impulso 88
verifica 195 un impulso en flanco ascendente 91
suponer datos disponibles 645, 647 un impulso en flanco ascendente
con entrada 96
un impulso en flanco
T descendente 94
un impulso en flanco descendente
tamaño en elementos 381 con entrada 99
tangente 526
tarea
activar mediante tag V
consumido 201
activar tarea de evento 464 valor absoluto 277
configurar programáticamente 195 valores inmediatos 635
monitorear 195
tarea de evento W
activar mediante instrucción
EVENT 464 WHILE…DO 681
activar mediante tag
consumido 201
configurar 195
X
temporizador de retardo a la X a la potencia de Y 546
conexión 104
temporizador de retardo a la
conexión con Y
restablecimiento 116 Y a nivel de bits 304
temporizador de retardo a la Y booleano 317
desconexión 108
temporizador de retardo a la
desconexión con
restablecimiento 120
temporizador retentivo activado 112
temporizador retentivo activado
con restablecimiento 124
texto estructurado
asignación 661
asignación no retentiva 662
asigne carácter ASCII 663
CASE 675
comentarios 687
componentes 659
construcciones 671
evaluación de cadenas 667
expresión 663
expresión numérica 663
FOR…DO 678
funciones 665

696 Publicación 1756-RM003K-ES-P – Julio 2008


Códigos de caracteres ASCII

Carácter Dec Hex Carácter Dec Hex Carácter Dec Hex Carácter Dec Hex
[ctrl-@] NUL 0 $00 SPACE 32 $20 @ 64 $40 ‘ 96 $60
[ctrl-A] SOH 1 $01 ! 33 $21 A 65 $41 a 97 $61
[ctrl-B] STX 2 $02 “ 34 $22 B 66 $42 b 98 $62
[ctrl-C] ETX 3 $03 # 35 $23 C 67 $43 c 99 $63
[ctrl-D] EOT 4 $04 $ 36 $24 D 68 $44 d 100 $64
[ctrl-E] ENQ 5 $05 % 37 $25 E 69 $45 e 101 $65
[ctrl-F] ACK 6 $06 & 38 $26 F 70 $46 f 102 $66
[ctrl-G] BEL 7 $07 ‘ 39 $27 G 71 $47 g 103 $67
[ctrl-H] BS 8 $08 ( 40 $28 H 72 $48 h 104 $68
[ctrl-I] HT 9 $09 ) 41 $29 I 73 $49 i 105 $69
[ctrl-J] LF 10 $l ($0A) * 42 $2A J 74 $4A j 106 $6A
[ctrl-K] VT 11 $0B + 43 $2B K 75 $4B k 107 $6B
[ctrl-L] FF 12 $0C , 44 $2C L 76 $4C l 108 $6C
[ctrl-M] CR 13 $r ($0D) - 45 $2D m 77 $4D m 109 $6D
[ctrl-N] SO 14 $0E . 46 $2E N 78 $4E n 110 $6E
[ctrl-O] SI 15 $0F / 47 $2F O 79 $4F o 111 $6F
[ctrl-P] DLE 16 $10 0 48 $30 P 80 $50 P 112 $70
[ctrl-Q] DC1 17 $11 1 49 $31 Q 81 $51 q 113 $71
[ctrl-R] DC2 18 $12 2 50 $32 R 82 $52 r 114 $72
[ctrl-S] DC3 19 $13 3 51 $33 S 83 $53 s 115 $73
[ctrl-T] DC4 20 $14 4 52 $34 T 84 $54 t 116 $74
[ctrl-U] NAK 21 $15 5 53 $35 U 85 $55 u 117 $75
[ctrl-V] SYN 22 $16 6 54 $36 V 86 $56 v 118 $76
[ctrl-W] ETB 23 $17 7 55 $37 W 87 $57 w 119 $77
[ctrl-X] CAN 24 $18 8 56 $38 X 88 $58 X 120 $78
[ctrl-Y] EM 25 $19 9 57 $39 Y 89 $59 y 121 $79
[ctrl-Z] SUB 26 $1A : 58 $3A Z 90 $5A z 122 $7A
ctrl-[ ESC 27 $1B ; 59 $3B [ 91 $5B { 123 $7B
[ctrl-\] FS 28 $1C < 60 $3C \ 92 $5C | 124 $7C
ctrl-] GS 29 $1D = 61 $3D ] 93 $5D } 125 $7D
[ctrl-^] RS 30 $1E > 62 $3E ^ 94 $5E ~ 126 $7E
[ctrl-_] US 31 $1F ? 63 $3F _ 95 $5F DEL 127 $7F
Servicio de asistencia Rockwell Automation ofrece información técnica en Internet para
proporcionarle asistencia a la hora de utilizar sus productos. En
técnica de http://support.rockwellautomation.com, puede encontrar manuales técnicos,
Rockwell Automation una base de conocimientos con respuestas a preguntas frecuentes, notas
técnicas y de aplicación, ejemplos de código y vínculos a Service Packs de
software, así como un vínculo llamado MySupport que se puede personalizar
para sacar el máximo provecho de estas herramientas.

Con el fin de brindarle un nivel adicional de asistencia técnica para la


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

Asistencia para la instalación


Si se le presenta un problema con un módulo de hardware durante las
24 horas posteriores a la instalación, revise la información proporcionada en
este manual. También puede llamar a un número especial de asistencia
técnica al cliente a fin de recibir ayuda inicial para la puesta en marcha del
módulo:

En los +1.440.646.3223
Estados Unidos Lunes a viernes, de 8:00 am a 5:00 pm, hora oficial del Este de EE.UU.
Fuera de Póngase en contacto con el representante local de
Estados Unidos Rockwell Automation para cualquier consulta relacionada con
asistencia técnica.

Devolución de productos nuevos


Rockwell prueba todos sus productos para garantizar su correcto
funcionamiento cuando salen de las instalaciones de fabricación.
No obstante, si el producto no funciona y es necesario devolverlo:

En los Póngase en contacto con el distribuidor. Debe proporcionar al


Estados Unidos distribuidor un número de caso de asistencia técnica (llame al número
de teléfono indicado anteriormente para obtenerlo) a fin de completar
el proceso de devolución.
Fuera de Póngase en contacto con el representante local de
Estados Unidos Rockwell Automation para obtener información sobre el
procedimiento de devolución.

Publicación 1756-RM003K-ES-P – Julio 2008 699


Reemplaza la publicación 1756-RM003I-ES-P – Enero de 2007 Copyright © 2008 Rockwell Automation, Inc. Todos los derechos reservados. Impreso en EE.UU.
Contraportada
Instrucciones generales de los controladores Logix5000™ Manual de referencia

También podría gustarte