manual de programación
TRANSCRIPT
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
Instrucciones generales de los controladores Logix5000™
Información importante para el usuarioLos 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.
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.
ADVERTENCIAIdentifica información sobre prácticas o circunstancias que pueden provocar una explosión en un ambiente peligroso, lo que podría causar lesiones personales o la muerte, daños materiales o pérdidas económicas.
IMPORTANTE Identifica información importante para la correcta aplicación y comprensión del producto.
ATENCIÓN Identifica información sobre prácticas o circunstancias que pueden provocar lesiones personales o la muerte, daños materiales o pérdidas económicas. Los mensajes de Atención le ayudan a identificar y evitar un peligro, y a reconocer las consecuencias.
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.
Índice
Prefacio
Instrucciones generales de controladores Logix5000™
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23A quién está dirigido este manual . . . . . . . . . . . . . . . . . . . . 23Propósito de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . 24Información común para todas las instrucciones. . . . . . . . . . 25Convenciones y términos relacionados. . . . . . . . . . . . . . . . . 25
Establecer y borrar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Condición de renglón de lógica de escalera de relés . . . . 26Estados del bloque de funciones . . . . . . . . . . . . . . . . . . 27
Capítulo 1Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Alarma digital (ALMD). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Diagramas de estado cuando se requiere confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Diagramas de estado cuando no se requiere confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Confirmación de alarma ALMD requerida y enclavada . . . 38Confirmación de alarma ALMD requerida y no enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Confirmación de alarma ALMD no requerida y enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Confirmación de alarma ALMD no requerida y no enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Alarma Analógica (ALMA) . . . . . . . . . . . . . . . . . . . . . . . . . . 42Diagramas de estado cuando se requiere confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Diagramas de estado cuando no se requiere confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Confirmación de condición de nivel ALMA requerida . . . 57Confirmación de condición de nivel ALMA no requerida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Confirmación de velocidad de cambio ALMA requerida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Confirmación de velocidad de cambio ALMA no requerida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Configure una instrucción de alarma . . . . . . . . . . . . . . . . . . 62Introduzca el texto del mensaje de alarma . . . . . . . . . . . . . . 65
Variables de la cadena de mensaje . . . . . . . . . . . . . . . . . 66Versiones de los mensajes de alarma en múltiples idiomas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Monitoreo del estado de alarma. . . . . . . . . . . . . . . . . . . . . . 68Almacenamiento de alarmas en el búfer. . . . . . . . . . . . . . . . 69Acceda programáticamente a información de alarmas . . . . . . 70Suprima o inhabilite alarmas . . . . . . . . . . . . . . . . . . . . . . . . 71Ejecución de alarma basada en el controlador . . . . . . . . . . . 72
Uso de la memoria del controlador. . . . . . . . . . . . . . . . . 73Tiempo de escán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3Publicación 1756-RM003K-ES-P – Julio 2008 3
Índice
Capítulo 2Instrucciones de bits(XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Examinar si está cerrado (XIC). . . . . . . . . . . . . . . . . . . . . . . 78Examinar si está abierto (XIO) . . . . . . . . . . . . . . . . . . . . . . . 80Activación de salida (OTE) . . . . . . . . . . . . . . . . . . . . . . . . . 82Enclavamiento de salida (OTL) . . . . . . . . . . . . . . . . . . . . . . 84Desenclavamiento de salida (OTU) . . . . . . . . . . . . . . . . . . . 86Un impulso (ONS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Un impulso en flanco ascendente (OSR) . . . . . . . . . . . . . . . 91Un impulso en flanco descendente (OSF) . . . . . . . . . . . . . . 94Un impulso en flanco ascendente con entrada (OSRI) . . . . . 96Un impulso en flanco descendente con entrada (OSFI). . . . . 99
Capítulo 3Instrucciones de temporizador y contador(TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Temporizador de retardo a la conexión (TON). . . . . . . . . . 104Temporizador de retardo a la desconexión (TOF) . . . . . . . 108Temporizador retentivo activado (RTO) . . . . . . . . . . . . . . . 112Temporizador de retardo a la conexión con restablecimiento (TONR) . . . . . . . . . . . . . . . . . . . . . . . . . . 116Temporizador de retardo a la desconexión con restablecimiento (TOFR) . . . . . . . . . . . . . . . . . . . . . . . . . . 120Temporizador retentivo activado con restablecimiento (RTOR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Conteo progresivo (CTU) . . . . . . . . . . . . . . . . . . . . . . . . . 128Conteo regresivo (CTD) . . . . . . . . . . . . . . . . . . . . . . . . . . 132Conteo progresivo/regresivo (CTUD) . . . . . . . . . . . . . . . . . 136Restablecer (RES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Capítulo 4Instrucciones de entrada/salida(MSG, GSV, SSV, IOT)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143Mensaje (MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144Códigos de error MSG. . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Códigos de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Códigos de error extendidos . . . . . . . . . . . . . . . . . . . . 154Códigos de error PLC y SLC (.ERR) . . . . . . . . . . . . . . . . 156Códigos de error de transferencia en bloques . . . . . . . . 158
Especifique los detalles de configuración . . . . . . . . . . . . . . 159Especifique mensajes de lectura y escritura de la tabla de datos CIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160Reconfigure un módulo de E/S. . . . . . . . . . . . . . . . . . . 161Especifique mensajes genéricos CIP . . . . . . . . . . . . . . . 162Especifique mensajes PLC-5 . . . . . . . . . . . . . . . . . . . . . 163Especifique mensajes SLC. . . . . . . . . . . . . . . . . . . . . . . 165Especifique mensajes de transferencia en bloques . . . . . 165Especifique mensajes PLC-3 . . . . . . . . . . . . . . . . . . . . . 166Especifique mensajes PLC-2 . . . . . . . . . . . . . . . . . . . . . 167
Ejemplos de configuración MSG . . . . . . . . . . . . . . . . . . . . 168Especifique los detalles de comunicación. . . . . . . . . . . . . . 169
4 Publicación 1756-RM003K-ES-P – Julio 2008
Índice
Especifique una ruta . . . . . . . . . . . . . . . . . . . . . . . . . . 169Para transferencia en bloques. . . . . . . . . . . . . . . . . . . . 172Especifique un método de comunicación o una dirección de módulo . . . . . . . . . . . . . . . . . . . . . . . . . . 172Seleccione una opción de caché. . . . . . . . . . . . . . . . . . 173Pautas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Obtener valor del sistema (GSV) y establecer valor del sistema (SSV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176Objetos GSV/SSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Acceso al objeto CONTROLLER . . . . . . . . . . . . . . . . . . 180Acceso al objeto CONTROLLERDEVICE . . . . . . . . . . . . 181Acceso al objeto CST . . . . . . . . . . . . . . . . . . . . . . . . . . 183Acceso al objeto DF1 . . . . . . . . . . . . . . . . . . . . . . . . . . 184Acceso al objeto FAULTLOG . . . . . . . . . . . . . . . . . . . . 187Acceso al objeto MESSAGE. . . . . . . . . . . . . . . . . . . . . . 188Acceso al objeto MODULE . . . . . . . . . . . . . . . . . . . . . . 190Acceso al objeto MOTIONGROUP . . . . . . . . . . . . . . . . 191Acceso al objeto PROGRAM . . . . . . . . . . . . . . . . . . . . . 192Acceso al objeto ROUTINE. . . . . . . . . . . . . . . . . . . . . . 193Acceso al objeto SERIALPORT . . . . . . . . . . . . . . . . . . . 193Acceso al objeto TASK . . . . . . . . . . . . . . . . . . . . . . . . . 195Acceso al objeto WALLCLOCKTIME . . . . . . . . . . . . . . . 197
Ejemplo de programación GSV/SSV . . . . . . . . . . . . . . . . . . 198Obtenga información de fallo . . . . . . . . . . . . . . . . . . . . 198Establezca los indicadores de habilitación e inhabilitación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Salida inmediata (IOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Capítulo 5Instrucciones de comparación(CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Comparar (CMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Expresiones CMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 209Determine el orden de operación . . . . . . . . . . . . . . . . . 209Use cadenas en una expresión . . . . . . . . . . . . . . . . . . . 210
Igual a (EQU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Mayor o igual que (GEQ) . . . . . . . . . . . . . . . . . . . . . . . . . 215Mayor que (GRT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219Menor o igual que (LEQ). . . . . . . . . . . . . . . . . . . . . . . . . . 223Menor que (LES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227Límite (LIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231Máscara igual que (MEQ) . . . . . . . . . . . . . . . . . . . . . . . . . 237
Introducción de un valor de máscara inmediato . . . . . . 238Diferente de (NEQ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Publicación 1756-RM003K-ES-P – Julio 2008 5
Índice
Capítulo 6Instrucciones de cálculo/matemáticas(CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247Calcular (CPT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 250Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 250Determine el orden de operación . . . . . . . . . . . . . . . . . 251
Sumar (ADD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252Restar (SUB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255Multiplicar (MUL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Dividir (DIV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261Módulo (MOD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266Raíz cuadrada (SQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270Cambiar signo (NEG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274Valor absoluto (ABS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Capítulo 7Instrucciones de movimiento/lógicas(MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281Mover (MOV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283Mover con máscara (MVM) . . . . . . . . . . . . . . . . . . . . . . . . 285
Introduzca un valor de máscara inmediato . . . . . . . . . . 286Movimiento enmascarado con receptor (MVMT). . . . . . . . . 288Distribuir campo de bits (BTD) . . . . . . . . . . . . . . . . . . . . . 292Distribuir campo de bits con receptor (BTDT) . . . . . . . . . . 295Borrar (CLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298Intercambiar byte (SWPB) . . . . . . . . . . . . . . . . . . . . . . . . . 300Y a nivel de bits (AND). . . . . . . . . . . . . . . . . . . . . . . . . . . 304O a nivel de bits (OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307O exclusivo a nivel de bits (XOR) . . . . . . . . . . . . . . . . . . . 310NO a nivel de bits (NOT) . . . . . . . . . . . . . . . . . . . . . . . . . 314Y booleano (BAND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317O booleano (BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320O exclusivo booleano (BXOR). . . . . . . . . . . . . . . . . . . . . . 323NO booleano (BNOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Capítulo 8Instrucciones de matriz (archivo)/misceláneas(FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329Selección del modo de operación . . . . . . . . . . . . . . . . . . . 330
Modo Todos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330Modo numérico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331Modo incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Aritmética y lógica de archivo (FAL) . . . . . . . . . . . . . . . . . 335Expresiones FAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 345Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 345Determine el orden de operación . . . . . . . . . . . . . . . . . 346
Búsqueda y comparación de archivos (FSC). . . . . . . . . . . . 347Expresiones FSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 353Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 353
6 Publicación 1756-RM003K-ES-P – Julio 2008
Índice
Determine el orden de operación . . . . . . . . . . . . . . . . . 354Use cadenas en una expresión . . . . . . . . . . . . . . . . . . . 355
Copiar archivo (COP) Copiar archivo síncrono (CPS) . . . . . 356Llenar archivo (FLL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362Promedio de archivo (AVE) . . . . . . . . . . . . . . . . . . . . . . . . 366Clasificación de archivo (SRT) . . . . . . . . . . . . . . . . . . . . . . 371Desviación estándar de archivo (STD) . . . . . . . . . . . . . . . . 376Tamaño en elementos (SIZE). . . . . . . . . . . . . . . . . . . . . . . 381
Capítulo 9Instrucciones de matriz (archivo)/desplazamiento(BSL, BSR, FFL, FFU, LFL, LFU)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385Desplazamiento de bits a la izquierda (BSL) . . . . . . . . . . . . 386Desplazamiento de bits a la derecha (BSR). . . . . . . . . . . . . 390Carga FIFO (FFL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394Descarga FIFO (FFU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400Carga LIFO (LFL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406Descarga LIFO (LFU). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
Capítulo 10Instrucciones de secuenciador (SQI, SQO, SQL)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419Secuenciador de entrada (SQI) . . . . . . . . . . . . . . . . . . . . . 420
Introduzca un valor de máscara inmediato . . . . . . . . . . 421Use SQI sin SQO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Secuenciador de salida (SQO) . . . . . . . . . . . . . . . . . . . . . . 424Introduzca un valor de máscara inmediato . . . . . . . . . . 425Uso de SQI con SQO . . . . . . . . . . . . . . . . . . . . . . . . . . 427Restablecimiento de la posición de SQO. . . . . . . . . . . . 427
Carga de secuenciador (SQL). . . . . . . . . . . . . . . . . . . . . . . 428
Capítulo 11Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433Saltar a etiqueta (JMP)Etiqueta (LBL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434Salto a subrutina (JSR)Subrutina (SBR) Retorno (RET) . . . . . . . . . . . . . . . . . . . . . 436Salto a rutina externa (JXR) . . . . . . . . . . . . . . . . . . . . . . . . 447Fin temporal (TND). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450Restablecimiento de control maestro (MCR) . . . . . . . . . . . . 452Inhabilitación de interrupción de usuario (UID) Habilitación de interrupción de usuario (UIE) . . . . . . . . . . 454Instrucción siempre falso (AFI) . . . . . . . . . . . . . . . . . . . . . 456Sin operación (NOP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457Fin de transición (EOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 458Pausa SFC (SFP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460Restablecer SFC (SFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462Activar 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 12Instrucciones For/Break(FOR, FOR...DO, BRK, EXIT, RET)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469For (FOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470Interrumpir (BRK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473Retornar (RET) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Capítulo 13Instrucciones especiales(FBC, DDT, DTR, PID)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477Comparación de bits de archivo (FBC). . . . . . . . . . . . . . . . 478
Selección del modo de búsqueda . . . . . . . . . . . . . . . . . 480Detección de diagnóstico (DDT) . . . . . . . . . . . . . . . . . . . . 486
Selección del modo de búsqueda . . . . . . . . . . . . . . . . . 488Transición de datos (DTR). . . . . . . . . . . . . . . . . . . . . . . . . 494
Introduzca un valor de máscara inmediato . . . . . . . . . . 495Proporcional integral derivativo (PID) . . . . . . . . . . . . . . . . 497Configure una instrucción PID. . . . . . . . . . . . . . . . . . . . . . 502
Especifique el ajuste. . . . . . . . . . . . . . . . . . . . . . . . . . . 503Especifique la configuración. . . . . . . . . . . . . . . . . . . . . 504Especificación de alarmas. . . . . . . . . . . . . . . . . . . . . . . 504Especificación de escalado . . . . . . . . . . . . . . . . . . . . . . 505
Uso de instrucciones PID . . . . . . . . . . . . . . . . . . . . . . . . . 505Bloqueo de acción integral y transferencia sin perturbaciones de manual a automático . . . . . . . . . . . . 507Temporización de la instrucción PID . . . . . . . . . . . . . . 508Reinicio sin problemas . . . . . . . . . . . . . . . . . . . . . . . . . 512Suavizado derivativo . . . . . . . . . . . . . . . . . . . . . . . . . . 513Establezca la banda muerta . . . . . . . . . . . . . . . . . . . . . 514Use límite de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . 514Ganancia anticipativa o polarización de salida . . . . . . . 515Lazos en cascada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515Control de relación . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Teoría de PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517Proceso PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517Proceso PID con lazos maestro/esclavo . . . . . . . . . . . . 517
Capítulo 14Instrucciones trigonométricas(SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519Seno (SIN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520Coseno (COS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523Tangente (TAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526Arco seno (ASN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529Arco coseno (ACS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532Arco tangente (ATN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
8 Publicación 1756-RM003K-ES-P – Julio 2008
Índice
Capítulo 15Instrucciones matemáticas avanzadas (LN, LOG, XPY)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539Logaritmo natural (LN) . . . . . . . . . . . . . . . . . . . . . . . . . . . 540Logaritmo base 10 (LOG) . . . . . . . . . . . . . . . . . . . . . . . . . 543X a la potencia de Y (XPY) . . . . . . . . . . . . . . . . . . . . . . . . 546
Capítulo 16Instrucciones de conversión matemática(DEG, RAD, TOD, FRD, TRN, TRUNC)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549Grados (DEG). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550Radianes (RAD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553Convertir a BCD (TOD). . . . . . . . . . . . . . . . . . . . . . . . . . . 556Convertir a entero (FRD) . . . . . . . . . . . . . . . . . . . . . . . . . . 559Truncar (TRN). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
Capítulo 17Instrucciones para puerto serie ASCII(ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565Ejecución de la instrucción. . . . . . . . . . . . . . . . . . . . . . 566Códigos de error ASCII . . . . . . . . . . . . . . . . . . . . . . . . 568Tipos de datos de cadena. . . . . . . . . . . . . . . . . . . . . . . 569
Prueba ASCII para línea de búfer (ABL) . . . . . . . . . . . . . . . 570Caracteres ASCII en el búfer (ACB) . . . . . . . . . . . . . . . . . . 573Borrar ASCII búfer (ACL). . . . . . . . . . . . . . . . . . . . . . . . . . 575Líneas de handshake ASCII (AHL) . . . . . . . . . . . . . . . . . . . 577Lectura ASCII (ARD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581Lectura ASCII de línea (ARL) . . . . . . . . . . . . . . . . . . . . . . . 585Escritura ASCII con anexo (AWA) . . . . . . . . . . . . . . . . . . . 589Escritura ASCII (ASCII Write (AWT)) . . . . . . . . . . . . . . . . . 594
Capítulo 18Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599Tipos de datos de cadena. . . . . . . . . . . . . . . . . . . . . . . 600
Concatenación de cadenas (CONCAT) . . . . . . . . . . . . . . . . 601Eliminación de cadena (DELETE). . . . . . . . . . . . . . . . . . . . 603Encontrar cadena (FIND). . . . . . . . . . . . . . . . . . . . . . . . . . 605Insertar cadena (INSERT). . . . . . . . . . . . . . . . . . . . . . . . . . 607Cadena central (MID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
Capítulo 19Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611Tipos de datos de cadena. . . . . . . . . . . . . . . . . . . . . . . 613
Cadena en DINT (STOD). . . . . . . . . . . . . . . . . . . . . . . . . . 614Cadena en REAL (STOR) . . . . . . . . . . . . . . . . . . . . . . . . . . 616DINT en cadena (DTOS) . . . . . . . . . . . . . . . . . . . . . . . . . . 619REAL en cadena (RTOS) . . . . . . . . . . . . . . . . . . . . . . . . . . 621Mayúsculas (UPPER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623Minúsculas (Lower Case (LOWER)) . . . . . . . . . . . . . . . . . . 625
Publicación 1756-RM003K-ES-P – Julio 2008 9
Índice
Capítulo 20Instrucciones de depuración(BPT, TPT)
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627Puntos de interrupción (BPT) . . . . . . . . . . . . . . . . . . . . . . 627
Formato de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . 628Puntos de rastreo (TPT). . . . . . . . . . . . . . . . . . . . . . . . . . . 631
Formato de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
Apéndice AAtributos comunes Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
Valores inmediatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635Conversiones de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
SINT o INT en DINT . . . . . . . . . . . . . . . . . . . . . . . . . . 637Entero en REAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639DINT en SINT o INT . . . . . . . . . . . . . . . . . . . . . . . . . . 639REAL en un número entero . . . . . . . . . . . . . . . . . . . . . 640
Apéndice BAtributos de bloque de funciones Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641
Selección de elementos de bloques de funciones . . . . . . . . 641Enclavamiento de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . 642Orden de ejecución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
Resolución de un lazo . . . . . . . . . . . . . . . . . . . . . . . . . 645Resolución del flujo de datos entre dos bloques . . . . . . 647Creación de un retardo de escán . . . . . . . . . . . . . . . . . 647Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
Respuestas de bloque de funciones a condiciones de overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648Modos de temporización . . . . . . . . . . . . . . . . . . . . . . . . . 649
Parámetros de instrucción comunes para modos de temporización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651Descripció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 CProgramación de texto estructurado
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659Sintaxis del texto estructurado . . . . . . . . . . . . . . . . . . . . . . 659Asignaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Especifique una asignación no retentiva . . . . . . . . . . . . 662Asigne un carácter ASCII a una cadena . . . . . . . . . . . . . 663
Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663Use funciones y operadores aritméticos . . . . . . . . . . . . 665Use operadores relacionales . . . . . . . . . . . . . . . . . . . . . 666Use operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . 668Use operadores a nivel de bits . . . . . . . . . . . . . . . . . . . 669Determine el orden de ejecución . . . . . . . . . . . . . . . . . 669
Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670Construcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
Algunas palabras clave están reservadas para uso futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
IF...THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672CASE...OF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675FOR…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678WHILE…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681REPEAT…UNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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) y de alarma analógica (ALMA) en un capítulo. Se añadió información sobre configuración, cadenas de mensajes y estados.
29
Capítulo 4 – Se añadieron nuevos atributos de objeto de controlador GSV/SSV.
180
Capítulo 20 – Se añadieron instrucciones de depuración (PPT, TPT). 627
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 instruccionesUse 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:
ABLPrueba ASCII para línea de búfer
609 lógica de escalera de reléstexto estructurado
ABSValor absoluto
277 lógica de escalera de reléstexto estructuradobloque de funciones
ACBCaracteres ASCII en el búfer
573 lógica de escalera de reléstexto estructurado
ACLBorrar ASCII búfer
575 lógica de escalera de reléstexto estructurado
ACSArco coseno
532 lógica de escalera de relésbloque de funciones, texto estructurado
ADDSuma
252 lógica de escalera de reléstexto estructuradobloque de funciones
AFIInstrucción siempre falso
456 lógica de escalera de relés
AHLLíneas de handshake ASCII
577 lógica de escalera de reléstexto estructurado
ALMAlarma
control de procesos
texto estructuradobloque de funciones
ALMAAlarma analógica
42 lógica de escalera de reléstexto estructuradobloque de funciones
ALMDAlarma digital
30 lógica de escalera de reléstexto estructuradobloque de funciones
ANDY a nivel de bits
304 lógica de escalera de reléstexto estructuradobloque de funciones
ARDLectura ASCII
581 lógica de escalera de reléstexto estructurado
ARLLectura ASCII de línea
585 lógica de escalera de reléstexto estructurado
ASNArco seno
529 lógica de escalera de reléstexto estructuradobloque de funciones
ATNArco tangente
535 lógica de escalera de reléstexto estructuradobloque de funciones
AVEPromedio de archivo
366 lógica de escalera de relés
AWAEscritura ASCII con anexo
589 lógica de escalera de reléstexto estructurado
AWTEscritura ASCII
594 lógica de escalera de reléstexto estructurado
BANDY booleano
317 texto estructuradobloque de funciones
BNOTNO booleano
326 texto estructuradobloque de funciones
BORO booleano
320 texto estructuradobloque de funciones
BPTPuntos de interrupción
627 lógica de escalera de relés
BRKInterrupción
473 lógica de escalera de relés
BSLDesplazamiento de bit a la izquierda
386 lógica de escalera de relés
BSRDesplazamiento de bit a la derecha
390 lógica de escalera de relés
BTDDistribuir campo de bits
295 lógica de escalera de relés
BTDTDistribuir campo de bits con receptor
295 texto estructuradobloque de funciones
BTRMensaje
144 lógica de escalera de reléstexto estructurado
BTWMensaje
144 lógica de escalera de reléstexto estructurado
BXORO exclusivo booleano
323 texto estructuradobloque de funciones
CCControl coordinado
control de procesos
texto estructuradobloque de funciones
CLRBorrar
295 lógica de escalera de reléstexto estructurado
CMPComparar
206 lógica de escalera de relés
CONCATConcatenar cadenas
601 lógica de escalera de reléstexto estructurado
COPCopiar archivo
356 lógica de escalera de reléstexto estructurado
COSCoseno
523 lógica de escalera de reléstexto estructuradobloque de funciones
Instrucción: Ubicación: Lenguajes:
16 Publicación 1756-RM003K-ES-P – Julio 2008
Ubicación de instrucciones
CPSCopiar archivo síncrono
356 lógica de escalera de reléstexto estructurado
CPTCalcular
248 lógica de escalera de relés
CTDConteo regresivo
132 lógica de escalera de relés
CTUConteo progresivo
128 lógica de escalera de relés
CTUDConteo progresivo/regresivo
136 texto estructuradobloque de funciones
D2SDDispositivo discreto de 2 estados
control de procesos
texto estructuradobloque de funciones
D3SDDispositivo discreto de 3 estados
control de procesos
texto estructuradobloque de funciones
DDTDetección de diagnóstico
486 lógica de escalera de relés
DEDTTiempo muerto
control de procesos
texto estructuradobloque de funciones
DEGGrados
553 lógica de escalera de reléstexto estructuradobloque de funciones
DELETEEliminar cadena
603 lógica de escalera de reléstexto estructurado
DERVDerivada
control de procesos
texto estructuradobloque de funciones
DFFCircuito multivibrador D
control de procesos
texto estructuradobloque de funciones
DIVDividir
261 lógica de escalera de reléstexto estructuradobloque de funciones
DTOSDINT en cadena
619 lógica de escalera de reléstexto estructurado
DTRTransición de datos
494 lógica de escalera de relés
EOTFin de transición
458 lógica de escalera de reléstexto estructurado
EQUIgual a
206 lógica de escalera de reléstexto estructuradobloque de funciones
ESELSelección mejorada
control de procesos
texto estructuradobloque de funciones
EVENTActivar tarea de evento
464 lógica de escalera de reléstexto estructurado
Instrucción: Ubicación: Lenguajes:
FALAritmética y lógica de archivo
335 lógica de escalera de relés
FBCComparación de bits de archivo
478 lógica de escalera de relés
FFLCarga FIFO
394 lógica de escalera de relés
FFUDescarga FIFO
400 lógica de escalera de relés
FGENGenerador de funciones
control de procesos
texto estructuradobloque de funciones
FINDEncontrar cadena
605 lógica de escalera de reléstexto estructurado
FLLLlenar archivo
362 lógica de escalera de relés
FORInstrucción FOR
470 lógica de escalera de relés
FRDConvertir en entero
559 lógica de escalera de relésbloque de funciones
FSCBúsqueda y comparación de archivos
347 lógica de escalera de relés
GEQMayor o igual que
215 lógica de escalera de reléstexto estructuradobloque de funciones
GRTMayor que
219 lógica de escalera de reléstexto estructuradobloque de funciones
GSVObtener valor del sistema
176 lógica de escalera de reléstexto estructurado
HLLLímite superior/inferior
control de procesos
texto estructuradobloque de funciones
HPFFiltro pasaaltos
control de procesos
texto estructuradobloque de funciones
ICONConector de cable de entrada
641 bloque de funciones
IMCControl de modelos interno
control de procesos
texto estructuradobloque de funciones
INSERTInsertar cadena
607 lógica de escalera de reléstexto estructurado
INTGIntegrador
control de procesos
texto estructuradobloque de funciones
IOTSalida inmediata
201 lógica de escalera de reléstexto estructurado
Instrucción: Ubicación: Lenguajes:
Publicación 1756-RM003K-ES-P – Julio 2008 17
Ubicación de instrucciones
IREFReferencia de entrada
641 bloque de funciones
JKFFCircuito multivibrador JK
control de procesos
texto estructuradobloque de funciones
JMPSaltar a etiqueta
434 lógica de escalera de relés
JSRSaltar a subrutina
436 lógica de escalera de reléstexto estructuradobloque de funciones
JXRSaltar a subrutina externa
447 lógica de escalera de relés
LBLEtiqueta
434 lógica de escalera de relés
LDL2Avance-retardo de segundo orden
control de procesos
texto estructuradobloque de funciones
LDLGAvance-retardo
control de procesos
texto estructuradobloque de funciones
LEQMenor o igual que
223 lógica de escalera de reléstexto estructuradobloque de funciones
LESMenor que
227 lógica de escalera de reléstexto estructuradobloque de funciones
LFLCarga LIFO
406 lógica de escalera de relés
LFUDescarga LIFO
412 lógica de escalera de relés
LIMLímite
231 lógica de escalera de relésbloque de funciones
LNLogaritmo natural
540 lógica de escalera de reléstexto estructuradobloque de funciones
LOGLogaritmo base 10
(1) lógica de escalera de reléstexto estructuradobloque de funciones
LOWERMinúsculas
625 lógica de escalera de reléstexto estructurado
LPFFiltro pasabajos
control de procesos
texto estructuradobloque de funciones
MAATAplicar ajuste a eje de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MAFRRestablecimiento de fallo de eje de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
Instrucción: Ubicación: Lenguajes:
MAGEngranaje de eje de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MAHDAplicar diagnósticos de conexión de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MAHPosición inicial de eje de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MAJImpulso de eje de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MAMMover eje de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MAOCLeva de salida de brazo de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MAPCLeva de posición de eje de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MARRegistro de brazo de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MASDDesactivación de eje de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MASParo de eje de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MASRRestablecer desactivación de eje de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MATCLeva de tiempo de eje de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MAVEPromedio móvil
control de procesos
texto estructuradobloque de funciones
MAWObservar brazo de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MAXCCaptura máxima
control de procesos
texto estructuradobloque de funciones
MCCDDinámica de cambio coordinado de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MCCMMovimiento circular coordinado de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MCCPPerfil de leva de cálculo de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
Instrucción: Ubicación: Lenguajes:
18 Publicación 1756-RM003K-ES-P – Julio 2008
Ubicación de instrucciones
MCDDinámica de cambio de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MCLMMovimiento lineal de coordenadas de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MCRRestablecimiento de control maestro
452 lógica de escalera de relés
MCSDDesactivación de coordenadas de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MCSParo de coordenadas de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MCSRRestablecimiento de desactivación de coordenadas de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MCTTransformada de coordenadas de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MCTPPosición de transformada de cálculo de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MDFVariador directo de movimiento desactivado
control de movimiento
lógica de escalera de reléstexto estructurado
MDOCLeva de salida de desactivación de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MDOVariador directo de movimiento activado
control de movimiento
lógica de escalera de reléstexto estructurado
MDRRegistro de desarme de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MDWObservar desarme de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MEQMáscara igual que
237 lógica de escalera de reléstexto estructuradobloque de funciones
MGSDDesactivación de grupo de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MGSParo de grupo de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MGSPPosición de estroboscopio de grupo de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
Instrucción: Ubicación: Lenguajes:
MGSRRestablecimiento de desactivación de grupo de movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MIDCadena central
609 lógica de escalera de reléstexto estructurado
MINCCaptura mínima
control de procesos
texto estructuradobloque de funciones
IMMCControl multivariable modular
control de procesos
texto estructuradobloque de funciones
MODMódulo
266 lógica de escalera de reléstexto estructuradobloque de funciones
MOVMover
283 lógica de escalera de relés
MRATAjuste de eje de movimiento de marcha
control de movimiento
lógica de escalera de reléstexto estructurado
MRHDDiagnósticos de conexión de movimiento de marcha
control de movimiento
lógica de escalera de reléstexto estructurado
MRPPosición de redefinir movimiento
control de movimiento
lógica de escalera de reléstexto estructurado
MSFServo de movimiento desactivado
control de movimiento
lógica de escalera de reléstexto estructurado
MSGMensaje
144 lógica de escalera de reléstexto estructurado
MSOServo de movimiento activado
control de movimiento
lógica de escalera de reléstexto estructurado
MSTDDesviación estándar de movimiento
control de procesos
texto estructuradobloque de funciones
MULMultiplicar
258 lógica de escalera de reléstexto estructuradobloque de funciones
MUXMultiplexor
control de procesos
bloque de funciones
MVMMover con máscara
285 lógica de escalera de relés
MVMTMover con máscara con receptor
288 texto estructuradobloque de funciones
NEGCambiar signo
274 lógica de escalera de reléstexto estructuradobloque de funciones
Instrucción: Ubicación: Lenguajes:
Publicación 1756-RM003K-ES-P – Julio 2008 19
Ubicación de instrucciones
NEQDiferente de
242 lógica de escalera de reléstexto estructuradobloque de funciones
NOPSin operación
457 lógica de escalera de relés
NOTNO a nivel de bits
314 lógica de escalera de reléstexto estructuradobloque de funciones
NTCHFiltro de muesca
control de procesos
texto estructuradobloque de funciones
OCONConector de cable de salida
641 bloque de funciones
ONSUn impulso
88 lógica de escalera de relés
ORO a nivel de bits
307 lógica de escalera de reléstexto estructuradobloque de funciones
OREFReferencia de salida
641 bloque de funciones
OSFIUn impulso en flanco descendente con entrada
99 texto estructuradobloque de funciones
OSFUn impulso en flanco descendente
94 lógica de escalera de relés
OSRIUn impulso en flanco ascendente con entrada
91 texto estructuradobloque de funciones
OSRUn impulso en flanco ascendente
91 lógica de escalera de relés
OTEActivación de salida
82 lógica de escalera de relés
OTLEnclavamiento de salida
84 lógica de escalera de relés
OTUDesenclavamiento de salida
86 lógica de escalera de relés
PATTConectar a fase de equipo
PhaseManager lógica de escalera de reléstexto estructurado
PCLFFallo de borrado de fase de equipo
PhaseManager lógica de escalera de reléstexto estructurado
PCMDComando de fase de equipo
PhaseManager lógica de escalera de reléstexto estructurado
PDETDesconectar de fase de equipo
PhaseManager lógica de escalera de reléstexto estructurado
Instrucción: Ubicación: Lenguajes:
PFLFallo de fase de equipo
PhaseManager lógica de escalera de reléstexto estructurado
PIDEPID mejorado
control de procesos
texto estructuradobloque de funciones
PIDProporcional integral derivativo
497 lógica de escalera de reléstexto estructurado
PIProporcional + Integral
control de procesos
texto estructuradobloque de funciones
PMULMultiplicador de impulsos
control de procesos
texto estructuradobloque de funciones
POSPProporcional de posición
control de procesos
texto estructuradobloque de funciones
POVRComando de anulación de fase de equipo
PhaseManager lógica de escalera de reléstexto estructurado
PPDFase de equipo en pausa
PhaseManager lógica de escalera de reléstexto estructurado
PRNPParámetros de nueva fase de equipo
PhaseManager lógica de escalera de reléstexto estructurado
PSCEstado de fase completo
PhaseManager lógica de escalera de reléstexto estructurado
PXRQSolicitud externa de fase de equipo
PhaseManager lógica de escalera de reléstexto estructurado
RADRadianes
553 lógica de escalera de reléstexto estructuradobloque de funciones
RESDRestablecimiento dominante
control de procesos
texto estructuradobloque de funciones
RESRestablecer
141 lógica de escalera de relés
RETRetorno
436 y 474 lógica de escalera de reléstexto estructuradobloque de funciones
RLIMLimitador de régimen
control de procesos
texto estructuradobloque de funciones
RMPSRampa y estabilización
control de procesos
texto estructuradobloque de funciones
RTOTemporizador retentivo activado
112 lógica de escalera de relés
RTORTemporizador retentivo activado con restablecimiento
124 texto estructuradobloque de funciones
Instrucción: Ubicación: Lenguajes:
20 Publicación 1756-RM003K-ES-P – Julio 2008
Ubicación de instrucciones
RTOSREAL en cadena
621 lógica de escalera de reléstexto estructurado
SBRSubrutina
436 lógica de escalera de reléstexto estructuradobloque de funciones
SCLEscalar
control de procesos
texto estructuradobloque de funciones
SCRVCurva en S
control de procesos
texto estructuradobloque de funciones
SELSeleccionar
control de procesos
bloque de funciones
SETDEstablecer dominante
control de procesos
texto estructuradobloque de funciones
SFPPausa SFC
460 lógica de escalera de reléstexto estructurado
SFRRestablecer SFC
462 lógica de escalera de reléstexto estructurado
SINSeno
520 lógica de escalera de reléstexto estructuradobloque de funciones
SIZETamaño en elementos
381 lógica de escalera de reléstexto estructurado
SNEGCambiar signo seleccionado
control de procesos
texto estructuradobloque de funciones
SOCControlador de segundo orden
control de procesos
texto estructuradobloque de funciones
SQISecuenciador de entrada
420 lógica de escalera de relés
SQLCarga de secuenciador
428 lógica de escalera de relés
SQOSecuenciador de salida
424 lógica de escalera de relés
SQRRaíz cuadrada
270 lógica de escalera de relésbloque de funciones
SQRTRaíz cuadrada
270 texto estructurado
SRTClasificación de archivo
371 lógica de escalera de reléstexto estructurado
SRTPDividir rango de tiempo proporcional
control de procesos
texto estructuradobloque de funciones
SSUMSumador seleccionado
control de procesos
texto estructuradobloque de funciones
Instrucción: Ubicación: Lenguajes:
SSVEstablecer valor del sistema
176 lógica de escalera de reléstexto estructurado
STDDesviación estándar de archivo
376 lógica de escalera de relés
STODCadena en DINT
614 lógica de escalera de reléstexto estructurado
STORCadena en REAL
616 lógica de escalera de reléstexto estructurado
SUBRestar
255 lógica de escalera de reléstexto estructuradobloque de funciones
SWPBIntercambiar byte
300 lógica de escalera de reléstexto estructurado
TANTangente
526 lógica de escalera de reléstexto estructuradobloque de funciones
TNDFin temporal
450 lógica de escalera de relés
TODConvertir en BCD
556 lógica de escalera de relésbloque de funciones
TOFRTemporizador de retardo a la desconexión con restablecimiento
120 texto estructuradobloque de funciones
TOFTemporizador de retardo a la desconexión
108 lógica de escalera de relés
TONRTemporizador de retardo a la conexión con restablecimiento
116 texto estructuradobloque de funciones
TONTemporizador de retardo a la conexión
104 lógica de escalera de relés
TOTTotalizador
control de procesos
texto estructuradobloque de funciones
TPTPuntos de rastreo
631 lógica de escalera de relés
TRNTruncar
561 lógica de escalera de relésbloque de funciones
TRUNCTruncar
561 texto estructurado
UIDInhabilitación de interrupción de usuario
454 lógica de escalera de reléstexto estructurado
Instrucción: Ubicación: Lenguajes:
Publicación 1756-RM003K-ES-P – Julio 2008 21
Ubicación de instrucciones
UIEHabilitación de interrupción de usuario
454 lógica de escalera de reléstexto estructurado
UPDNAcumulador progresivo/regresivo
control de procesos
texto estructuradobloque de funciones
UPPERMayúsculas
623 lógica de escalera de reléstexto estructurado
XICExaminar si está cerrado
78 lógica de escalera de relés
XIOExaminar si está abierto
80 lógica de escalera de relés
XORO exclusivo a nivel de bits
310 lógica de escalera de reléstexto estructuradobloque de funciones
XPYX a la potencia de Y
546 lógica de escalera de reléstexto estructuradobloque de funciones
(1)
Instrucción: Ubicación: Lenguajes:
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.
A quién está dirigido este manual
Este documento proporciona al programador los detalles acerca de cada una de las instrucciones disponibles para un controlador basado en Logix. El usuario ya debe estar familiarizado con la manera en que el controlador basado en Logix almacena y procesa datos.
Los programadores sin experiencia deben leer todos los detalles de una instrucción antes de usarla. Los programadores con experiencia pueden consultar la información sobre las instrucciones para verificar detalles.
Tarea/meta Documentos
Programar el controlador para aplicaciones secuenciales
Manual de referencia de instrucciones generales de controladores Logix5000, publicación 1756-RM003
Programar el controlador para aplicaciones de procesos o de variadores
Logix5000 Controllers Process Control and Drives Instructions Reference Manual, publicación 1756-RM006
Programar el controlador para aplicaciones de control de movimiento
Logix5000 Controllers Motion Instruction Set Reference Manual, publicación 1756-RM007
Programar el controlador para usar fases de equipo
PhaseManager User Manual, publicación LOGIX-UM001
Importar un archivo de texto o tags en un proyecto
Logix5000 Controllers Import/Export Reference Manual, publicación 1756-RM084
Exportar un proyecto o tags a un archivo de texto
Convertir una aplicación de PLC-5 o SLC 500 en una aplicación Logix5000
Logix5550 Controller Converting PLC-5 or SLC 500 Logic to Logix5550 Logic Reference Manual, publicación 1756-6.8.5
Usted se encuentra aquí
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:
Los siguientes iconos ayudan a identificar información específica del lenguaje:
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
Estructura de la instrucción indica los bits y valores de estado de control de la instrucción, si los hay
Descripción describes el uso de la instrucción
define cualquier diferencia cuando la instrucción está habilitada e inhabilitada, si corresponde
Indicadores de estado aritmético
define si la instrucción afecta o no los indicadores de estado aritmético
consulte el apéndice Atributos comunes
Condiciones de fallo define si la instrucción genera o no genera fallos menores o mayores
de ser así, define el tipo de fallo y el código
Ejecución especifica cómo funciona la instrucción
Ejemplo proporciona por lo menos un ejemplo de programación en cada lenguaje de programación disponible
incluye una descripción que explica cada ejemplo
si está disponible en lógica de escalera de relés, 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.
si está disponible en texto estructurado, describe los operandos
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 todas las instrucciones
El conjunto de instrucciones Logix5000 tiene algunos atributos comunes:
Convenciones y términos relacionados
Establecer y borrar
Este manual usa las funciones de establecer y borrar para definir el estado de los bits (booleanos) y los valores (no booleanos):
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.
Para esta información Vea este apéndice
atributos comunes El apéndice Atributos comunes define:
• indicadores de estado aritmético
• tipos de datos
• palabras clave
atributos de bloques de funciones
El apéndice Atributos de bloque de funciones:
• control del programa y del operador
• modos de temporización
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
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.
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.
instrucción de entrada
condición de entrada de renglón
instrucción de salida
condición de salida
de renglón
26 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones generales de controladores Logix5000™ Prefacio
Estados del bloque de funciones
El controlador evalúa las instrucciones de bloques de funciones según el estado de condiciones diferentes.
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.
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).
Posible condición Descripción
preescán El preescán para las rutinas de bloques de funciones es igual que para las rutinas de lógica de escalera de relés. La única diferencia radica en que el parámetro EnableIn para cada instrucción de bloque de funciones se borra durante el preescán.
primer escán de instrucción El primer escán de instrucción se refiere a la primera vez que se ejecuta una instrucción después del preescán. El controlador usa el primer escán de instrucción para leer las entradas actuales y determinar el estado apropiado en que estarán
primera ejecución de instrucción
La primera ejecución de instrucción se refiere a la primera vez que la instrucción se ejecuta con una nueva instancia de estructura de datos. El controlador usa la primera ejecución de instrucción para generar coeficientes y otros almacenamientos de datos que no cambian para un bloque de funciones después de una descarga inicial.
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 booleanas (verdadero/falso)
ALMD lógica de escalera de relés
texto estructurado
bloque de funciones
30
detectar alarmas en base al nivel o velocidad de cambio de un valor
ALMA lógica de escalera de relés
texto estructurado
bloque de funciones
42
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.
Texto estructurado
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.
Operando Tipo Formato Descripción
tag ALMD ALARM_DIGITAL Estructura Estructura ALMD
In BOOL TagInmediato
Texto estructurado solamente.
El valor se copia a In cuando se ejecuta la instrucción. El valor de entrada de alarma es comparado para determinar si existe una alarma.
ProgAck BOOL TagInmediato
El valor se copia a ConfProg (ProgAck) cuando se ejecuta la instrucción. En la transición de borrado a establecido, confirma la alarma (si se requiere confirmación).
ProgReset BOOL TagInmediato
El valor se copia a RestabProg (ProgReset) cuando se ejecuta la instrucción. En la transición de borrado a establecido, borra la alarma (si se requiere).
ProgDisable BOOL TagInmediato
El valor se copia a InhabProg (ProgDisable) cuando se ejecuta la instrucción. Cuando se establece, inhabilita la alarma (no anula los comandos de habilitación).
ProgEnable BOOL TagInmediato
El valor se copia a HabilitProg (ProgEnable) cuando se ejecuta la instrucción. Cuando se establece, habilita la alarma (tiene precedencia sobre los comandos de inhabilitación).
MinDurationPRE DINT Inmediato Lógica de escalera de relés solamente.
Especifica la duración de la alarma antes de que sea reportada (milisegundos).
MinDurationACC DINT Inmediato Lógica de escalera de relés solamente.
Indica el número de milisegundos que han transcurrido desde que se cumplió la condición de la alarma.
ALMD(ALMD, In, ProgAck, ProgReset, ProgDisable, ProgEnable);
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
Estructura ALARM_DIGITAL
Operando Tipo Formato Descripción
tag ALMD ALARM_DIGITAL Estructura Estructura ALMD
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Lógica de escalera de relés:
Corresponde al estado del renglón. No afecta el procesamiento.
Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción siempre se ejecuta.
In BOOL La entrada de señal digital para la instrucción.
La opción predeterminada es borrado.
Lógica de escalera de relés:
Sigue la condición del renglón. Se establece si la condición del renglón es verdadera. Se borra si la condición del renglón es falsa.
Texto estructurado:
Copiado del operando de instrucción.
InFault BOOL Indicador de estado deficiente para la entrada. El usuario puede establecer InFault para indicar que la señal de entrada tiene un error. Cuando se establece, la instrucción establece InFaulted (Status.1). Cuando se borra, la instrucción borra InFaulted (Status.1). En cualquier caso, la instrucción continúa evaluando In en lo que respecta a las condiciones de alarma.
La opción predeterminada es borrado (buen estado).
Condition BOOL Especifica cómo se activa la alarma. Cuando se establece la condición, se activa la condición de alarma cuando In se establece. Cuando se borra la condición, se activa la condición de alarma cuando In se borra.
La opción predeterminada es establecido.
Publicación 1756-RM003K-ES-P – Julio 2008 31
Capítulo 1 Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
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.
Parámetro de entrada
Tipo de datos Descripción
32 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA) Capítulo 1
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.
Parámetro de entrada
Tipo de datos Descripción
Publicación 1756-RM003K-ES-P – Julio 2008 33
Capítulo 1 Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
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 entrada
Tipo de datos Descripción
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
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.
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.
Parámetro de salida Tipo de datos Descripción
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
Latched = True
InAlarm = FalseAcked = True
InAlarm = TrueAcked = False
In = Condition, MinDurationACC >= MinDurationPRE
InAlarm = TrueAcked = True
In != Condition, Reset 2
Ack1
In != Condition, Reset2
Latched = False
InAlarm = FalseAcked = True
InAlarm = TrueAcked = False
In = Condition, MinDurationACC >= MinDurationPRE
In != Condition
InAlarm = FalseAcked = False
InAlarm = TrueAcked = True
In != Condition
Ack1Ack1
In = Condition, MinDurationACC >= MinDurationPRE
1 Alarm can be acked by several different ways: ProgAck, OperAck, clients (RSLogix 5000software, RSView software).
2 Alarm can be reset by several different ways: ProgReset, OperReset, clients (RSLogix 5000software, RSView software).
InAlarm = FalsoAcked = Verdadero
InAlarm = VerdaderoAcked = Falso
InAlarm = FalsoAcked = Falso
InAlarm = VerdaderoAcked = Verdadero
En = Condición, MinDurationACC >= Min DurationPRE
In != Condición
In = Condición, MinDurationACC >= MinDurationPRE
In != Condición
Ack1 Ack1
Enclavado = Falso
Enclavado = Verdadero
InAlarm = FalsoAcked = Verdadero
InAlarm = VerdaderoAcked = Falso
In = Condición, MinDurationACC >= MinDurationPRE
In != Condición, Reset2
In != Condición, Reset 2
Ack1
InAlarm = VerdaderoAcked = Verdadero
1 La alarma puede confirmarse de diferentes maneras: ProgAck, OperAck, clientes (software RSLogix 5000, software RSView).
2 La alarma puede restablecerse de diferentes maneras: ProgReset, OperReset, clientes (software RSLogix 5000, software RSView).
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
Indicadores de estadoaritmético: ninguno
Condiciones de fallo: ninguna
Ejecución:
InAlarm = False InAlarm = True
In = Condition, MinDurationACC >= MinDurationPRE
In != Condition
Acked = True
Latched = False
InAlarm = False InAlarm = True
In = Condition, MinDurationACC >= MinDurationPRE
In != Condition, Reset1
Acked = True
Latched = True
1 Alarm can be reset by several different ways: ProgReset, OperReset, clients (RSLogix 5000software, RSView software)
Enclavado = Falso
Enclavado = Verdadero
InAlarm = Falso InAlarm = Verdadero Acked = Verdadero
Acked = Verdadero
InAlarm = VerdaderoInAlarm = Falso
In != Condición
In != Condición, Resset1
1 La alarma puede restablecerse de diferentes maneras: ProgReset, OperReset, clientes (software RSLogix 5000, software RSView).
In = Condición, MinDurationACC >= MinDurationPRE
In = Condición, MínDuraciónACC >= MínDuraciónPRE
Condición Acción de lógica de escalera de relés
preescán La condición de salida de renglón se establece como falsa.
InAlarma se borra y Acked se establece.
Todas las peticiones del operador, sellos de hora e indicadores de entrega se borran.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
EnableIn y EnableOut se borran.
El Parámetro In se borra y la instrucción realiza una evaluación para determinar el estado de la alarma.
condición de entrada de renglón es verdadera
La condición de salida de renglón se establece como verdadera.
EnableIn y EnableOut se establecen
El Parámetro In se establece y la instrucción realiza una evaluación para determinar el estado de la alarma.
post-escán 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)
Confirmación de alarma ALMD requerida y enclavada
Condición Acción de bloque de funciones Acción de texto estructurado
preescán Todas las peticiones del operador, sellos de hora e indicadores de entrega se borran.
InAlarm se borra y Acked se establece.
Todas las peticiones del operador, sellos de hora e indicadores de entrega se borran.
InAlarm se borra y Acked se establece.
primer escán de instrucción Ninguna. Ninguna.
primera ejecución de instrucción
Ninguna. Ninguna.
EnableIn se borra La instrucción no se ejecuta.
EnableOut se borra.
La instrucción se ejecuta.
EnableOut siempre se establece.
EnableIn se establece La instrucción se ejecuta.
EnableOut se establece.
La instrucción se ejecuta.
EnableOut siempre se establece.
post-escán Ninguna. Ninguna.
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 REALDINTINTSINT
Taginmediato
El valor se copia a In cuando se ejecuta la instrucción. El valor de entrada de alarma, que se compara con los límites de alarma para detectar las condiciones de la alarma.
ProgAckAll BOOL TagInmediato
El valor se copia a ProgAckAll cuando se ejecuta la instrucción. En la transición de borrado a establecido, confirma todas las condiciones de alarma que requieren confirmación.
ProgDisable BOOL TagInmediato
El valor se copia a ProgDisable cuando se ejecuta la instrucción. Cuando se establece, inhabilita la alarma (no anula los comandos de habilitación).
ProgEnable BOOL TagInmediato
El valor se copia a ProgEnable cuando se ejecuta la instrucción. Cuando se establece, habilita la alarma (tiene precedencia sobre los comandos de inhabilitación).
HHlimit REAL Inmediato Lógica de escalera de relés solamente.
Límite de alarma alta alta.
HLimit REAL Inmediato Lógica de escalera de relés solamente.
Límite de alarma alta.
LLimit REAL Inmediato Lógica de escalera de relés solamente.
Límite de alarma baja.
LLLimit REAL Inmediato Lógica de escalera de relés solamente.
Límite de alarma baja baja.
42 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA) Capítulo 1
Texto estructurado
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
ALMA(ALMA, In, ProgAckAll, ProgDisable, ProgEnable);
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 entrada
Tipo de datos Descripción
EnableIn BOOL Lógica de escalera de relés:
Corresponde al estado del renglón. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Texto estructurado:
Ningún efecto. La instrucción siempre se ejecuta.
Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
In REAL El valor de entrada de alarma, el cual se compara con los límites de alarma para detectar las condiciones de la alarma.
Valor predeterminado = 0.0.
Lógica de escalera de relés:
Copiado del operando de instrucción.
Texto estructurado:
Copiado del operando de instrucción.
InFault BOOL Indicador de estado deficiente para la entrada. El usuario puede establecer InFault para indicar que la señal de entrada tiene un error. Cuando se establece, la instrucción establece InFaulted (Status.1). Cuando se borra, la instrucción borra InFaulted (Status.1). En cualquier caso, la instrucción continúa evaluando In en lo que respecta a las condiciones de alarma.
La opción predeterminada es borrado (buen estado).
HHEnabled BOOL Detección de condición de alarma alta alta. Se establece para habilitar la detección de la condición de alarma alta alta. Se borra para inhabilitar la detección de la condición de alarma alta alta.
La opción predeterminada es establecido.
HabilitadaA BOOL Detección de condición de alarma alta. Se establece para habilitar la detección de la condición de alarma alta. Se borra para inhabilitar la detección de la condición de alarma alta.
La opción predeterminada es establecido.
LEnabled BOOL Detección de condición de alarma baja. Se establece para habilitar la detección de la condición de alarma baja. Se borra para inhabilitar la detección de la condición de alarma baja.
La opción predeterminada es establecido.
LLEnabled BOOL Detección de condición de alarma baja baja. Se establece para habilitar la detección de la condición de alarma baja baja. Se borra para inhabilitar la detección de la condición de alarma baja baja.
La opción predeterminada es establecido.
44 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA) Capítulo 1
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.
Parámetro de entrada
Tipo de datos Descripción
Publicación 1756-RM003K-ES-P – Julio 2008 45
Capítulo 1 Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
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.
Parámetro de entrada
Tipo de datos Descripción
46 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA) Capítulo 1
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.
Parámetro de entrada
Tipo de datos Descripción
Publicación 1756-RM003K-ES-P – Julio 2008 47
Capítulo 1 Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
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.
Parámetro de entrada
Tipo de datos Descripción
48 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA) Capítulo 1
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.
Parámetro de entrada
Tipo de datos Descripción
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
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.
Parámetro de salida Tipo de datos Descripción
Publicación 1756-RM003K-ES-P – Julio 2008 51
Capítulo 1 Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
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ó.
Parámetro de salida Tipo de datos Descripción
52 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA) Capítulo 1
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.
InFaulted (Status.1) BOOL El programa del usuario estableció InFault para indicar datos de entrada de mala calidad. La alarma continúa evaluando In en lo que respecta a las condiciones de alarma.
SeverityInv (Status.2) BOOL La severidad de la alarma no es válida.
Si la severidad <1, la instrucción usa Severity = 1.
Si a severidad >1000, la instrucción usa Severity = 1000.
AlarmLimitsInv (Status.3)
BOOL La configuración de límite de alarma no es válida (por ejemplo, LLimit < LLLimit). Si no es válido, la instrucción borra todos los bits activos de condiciones de nivel. No se podrán detectar nuevas condiciones de nivel hasta que se borre el fallo.
DeadbandInv (Status.4) BOOL La configuración de la banda muerta no es válida. Si no es válida, la instrucción usa Deadband = 0.0.
Válido = 0 ≤ Deadband < Span desde la primera alarma baja habilitada hasta la primera alarma alta habilitada.
ROCPosLimitInv (Status.5)
BOOL Límite de velocidad de cambio positiva no válido. Si no es válido, la instrucción usa ROCPosLimit = 0.0, lo cual inhabilita la detección de velocidad de cambio positiva.
ROCNegLimitInv (Status.6)
BOOL Límite de velocidad de cambio negativa no válido. Si no es válido, la instrucción usa ROCNegLimit = 0.0, lo cual inhabilita la detección de velocidad de cambio negativa.
ROCPeriodInv (Status.7) BOOL Período de velocidad de cambio no válido. Si no es válido, la instrucción usa ROCPeriod = 0.0, lo cual inhabilita la detección de velocidad de cambio.
Parámetro de salida Tipo de datos Descripció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
HInAlarm = FalseHAcked = True
HInAlarm = TrueHAcked = False
In >= HLimit, MinDurationACC >= MinDurationPRE
In < (Hlimit - Deadband)
HInAlarm = FalseHAcked = False
HInAlarm = TrueHAcked = True
In < (HLimit - Deadband) Ack1Ack1
HHInAlarm = FalseHHAcked = True
HHInAlarm = TrueHHAcked = False
In >= HHLimit, MinDurationACC >= MinDurationPRE
In < (HHLimit - Deadband)
HHInAlarm = FalseHHAcked = False
HHInAlarm = TrueHHAcked = True
In < (HHLimit - Deadband)Ack1Ack1
LInAlarm = FalseLAcked = True
LInAlarm = TrueLAcked = False
In <= LLimit, MinDurationACC >= MinDurationPRE
In > (Llimit + Deadband)
LInAlarm = FalseLAcked = False
LInAlarm = TrueLAcked = True
In > (LLimit + Deadband)Ack1Ack1
LLInAlarm = FalseLLAcked = True
LLInAlarm = TrueLLAcked = False
In <= LLLimit, MinDurationACC >= MinDurationPRE
In > (LLLimit + Deadband)
LLInAlarm = FalseLLAcked = False
LLInAlarm = TrueLLAcked = True
In > (LLLimit + Deadband)Ack1
RocPosInAlarm = FalseRocPosAcked = True
RocPosInAlarm = TrueRocPosAcked = False
ROC >= RocPosLimit
ROC < RocPosLimit
RocPosInAlarm = FalseRocPosAcked = False
RocPosInAlarm = TrueRocPosAcked = True
ROC < RocPosLimit Ack1Ack1
l,
RocNegInAlarm = FalseRocNegAcked = True
RocNegInAlarm = TrueRocNegAcked = False
ROC <= -RocNegLimit
ROC > -RocNegLimit
RocNegInAlarm = FalseRocNegAcked = False
RocNegInAlarm = TrueRocNegAcked = True
ROC > -RocNegLimit Ack1Ack1
,
Ack1
In >= HLimit, MinDurationACC >= MinDurationPRE
In >= HHLimit, MinDurationACC >= MinDurationPRE
In <= LLimit, MinDurationACC >= MinDurationPRE
In <= LLLimit, MinDurationACC >= MinDurationPRE
ROC >= RocPosLimit
ROC <= -RocNegLimit
ROCPeriodsSample)In(Previou-Sample)In(CurrentROC =
Where a new sample is collected on thenext scan after the ROCPeriod has elapsed.
1 H alarm condition can be acked by several different ways: HProgAck, HOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).
1 HH alarm condition can be acked by several different ways: HHProgAck, HHOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).
1 L alarm condition can be acked by several different ways: LProgAck, LOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).
1 LL alarm condition can be acked by several different ways: LLProgAck, LLOperAck, ProgAckAll, OperAckAll,clients (RSLogix 5000 software, RSView software).
1 ROCNeg alarm condition can be acked by several different ways: RocNegProgAck, RocNegOperAck, ProgAckAll, OperAckAll, clients (RSLogix 5000 software, RSView software).
1 ROCPos alarm condition can be acked by several different ways: RocPosProgAck, RocPosOperAck, ProgAckAll, OperAckAll, clients (RSLogix 5000 software, RSView software).
HinAlarm = FalseHAcked = True
HinAlarm = TrueHAcked = False
LinAlarm = FalseLAcked = True
HinAlarm = FalseHAcked = False
HinAlarm = TrueHAcked = True
LinAlarm = TrueLAcked = False
LinAlarm = FalseLAcked = False
LinAlarm = TrueLAcked = True
HHinAlarm = FalseHHAcked = True
HHinAlarm = FalseHHAcked = False
HHinAlarm = TrueHHAcked = False
HHinAlarm = TrueHHAcked = True
LLinAlarm = FalseLAcked = True
LLinAlarm = TrueLAcked = False
LLinAlarm = FalseLAcked = False
LLinAlarm = TrueLAcked = True
RocNegInAlarm = FalseRocNegAcked = True
RocNegInAlarm = FalseRocNegAcked = False
RocNegInAlarm = TrueRocNegAcked = False
RocNegInAlarm = TrueRocNegAcked = True
RocPosInAlarm = TrueRocPosAcked = False
RocPosInAlarm = TrueRocPosAcked = True
RocPosInAlarm = FalseRocPosAcked = True
RocPosInAlarm = FalseRocPosAcked = False
In < (HLimit - Deadband)In < (HLimit - D
eadband)In < (HHLimit - Deadband)
In < (HHLimit - Deadband)
In < (LLLimit - Deadband)In < (LLLimit - D
eadband)In < (LLimit - Deadband)
In < (LLimit - Deadband)
ROC < RocPosLimitROC < RocPosLimit
ROC <= RocPosLimit
ROC < -RocNegLimitROC < -RocNegLimit
ROC <= -RocNegLimit
ROC <= -RocNegLimitROC <= RocPosLimit
Ack1 Ack1
Ack1Ack1
Ack1
Ack1Ack1 Ack1 Ack1
Ack1Ack1
Ack1
In >= HLimit, MinDurationACC >= MinDurationPRE
In >= HLimit, MinDurationACC >= MinDurationPRE
In >= HHLimit, MinDurationACC >= MinDurationPRE
In >= HHLimit, MinDurationACC >= MinDurationPRE
1 La condición de alarma H puede confirmarse de diferentes maneras: HProgAck, HOperAck, ProgAckAll, OperAckAll, clientes (software RSLogix 5000, software RSView).
1 La condición de alarma HH puede confirmarse de diferentes maneras: HHProgAck, HHOperAck, ProgAckAll, OperAckAll, clientes (software RSLogix 5000, software RSView).
In >= LLLimit, MinDurationACC >= MinDurationPREIn >= LLimit, MinDurationACC >= MinDurationPRE
In >= LLimit, MinDurationACC >= MinDurationPRE
In >= LLLimit, MinDurationACC >= MinDurationPRE
1 La condición de alarma LL puede confirmarse de diferentes maneras: LLProgAck, LLOperAck, ProgAckAll, OperAckAll, clientes (software RSLogix 5000, software RSView).
1 La condición de alarma H puede confirmarse de diferentes maneras: LProgAck, LOperAck, ProgAckAll, OperAckAll, clientes (software RSLogix 5000, software RSView).
1 La condición de alarma ROCPos puede confirmarse de diferentes maneras: RocPosProgAck, RocPosOperAck, ProgAckAll, OperAckAll, clientes (software RSLogix 5000, software RSView).
1 La condición de alarma ROCNeg puede confirmarse de diferentes maneras: RocNegProgAck, RocNegOperAck, ProgAkkAll, OperAckAll, clientes (software RSLogix 5000, software RSView).
Donde se recolecta una nueva muestra en el siguiente escán después de que haya transcurrido ROCPeriod
ROC = In(CurrentSample) - In(PreviousSample)
ROCPeriod
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
Indicadores de estadoaritmético: Los indicadores de estado aritmético se establecen para la salida ROC.
Condiciones de fallo:
Ejecución:
HInAlarm = False HInAlarm = True
In >= HLimit, MinDurationACC >= MinDurationPRE
In < (HLimit - Deadband)
HAcked = True
LInAlarm = False LInAlarm = True
In <= LLimit, MinDurationACC >= MinDurationPRE
In > (LLimit + Deadband)
LAcked = True
HHInAlarm = False HHInAlarm = True
In >= HHLimit, MinDurationACC >= MinDurationPRE
In < (HHLimit - Deadband)
HHAcked = True
LLInAlarm = False LLInAlarm = True
In <= LLLimit, MinDurationACC >= MinDurationPRE
In > (LLLimit + Deadband)
LLAcked = True
RocPosInAlarm = False RocPosInAlarm = True
ROC >= ROCPosLimit
ROC < ROCPosLimit
RocPosAcked = True
ROCPeriodsSample)In(Previou-Sample)In(CurrentROC =
RocNegInAlarm = False RocNegInAlarm = True
ROC <= -ROCNegLimit
ROC > -ROCNegLimit
RocNegAcked = True
Where a new sample is collected on thenext scan after the ROCPeriod has elapsed.
HinAlarm = False
LinAlarm = False
HHinAlarm = False
LLinAlarm = False
HinAlarm = True
LinAlarm = True
HHinAlarm = True
LLinAlarm = True
LAcked = True
HHAcked = True
HAcked = True
LLAcked = True
In >= HLimit, MinDurationACC >= MinDurationPRE
In >= LLLimit, MinDurationACC >= MinDurationPRE
In >= HHLimit, MinDurationACC >= MinDurationPRE
In >= LLLimit, MinDurationACC >= MinDurationPRE
In < (HLimit - Deadband)
In < (LLimit - Deadband)
In < (HHLimit - Deadband)
In < (LLLimit - Deadband)
RocPosInAlarm = False RocPosInAlarm = True
RocNegInAlarm = False RocNegInAlarm = True
RocPosAcked = True
RocNegAcked = True
ROC >= ROCPosLimit
ROC > ROCPosLimit
ROC >= -ROCNegLimit
ROC > -ROCNegLimit
Donde se recolecta una nueva muestra en el siguiente escán después de que haya transcurrido ROCPeriod
In(CurrentSample) - In(PreviousSample)
ROCPeriodROC =
Fallo menor Tipo de fallo Código de fallo
Overflow ROC 4 4
Condición Acción de lógica de escalera de relés
preescán La condición de salida de renglón se establece como falsa.
Todos los parámetros xInAlarm se borran y se confirman todas las condiciones de alarma.
Todas las peticiones del operador, sellos de hora e indicadores de entrega se borran.
condición de entrada de renglón es falsa
La instrucción no se ejecuta.
EnableOut se borra.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
EnableOut se establece.
post-escán 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 indicadores de entrega se borran.
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.
Todos los parámetros xInAlarm se borran y se confirman todas las condiciones de alarma.
primer escán de instrucción Ninguna. Ninguna.
primera ejecución de instrucción
Ninguna. Ninguna.
EnableIn se borra La instrucción no se ejecuta.
EnableOut se borra.
La instrucción se ejecuta.
EnableOut siempre se establece.
EnableIn se establece La instrucción se ejecuta.
EnableOut se establece.
La instrucción se ejecuta.
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 de alarma
Después de introducir una alarma ALMD o ALMA y especificar el nombre de tag de la alarma, use el diálogo Alarm Configuration para especificar los detalles del mensaje.
El diálogo Properties de la instrucción de alarma incluye la ficha Configuration.
Haga clic aquí para configurar la instrucción.
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
Input Rate of Change – 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.
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)
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.
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.
Opción Descripción
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 mensaje de alarma
Introduzca el texto de mensaje apropiado que se mostrará cuando una condición de alarma está activa (InAlarm). Para una instrucción ALMD, usted introduce la información del mensaje en la ficha Configuration. Para una instrucción ALMA, usted introduce la información de mensaje en la ficha Message.
Para definir un mensaje de alarma, especifique esta información.
Opción Descripción
Message String La cadena de mensaje contiene la información que se mostrará al operador respecto a la alarma. Además de introducir texto, también puede incorporar información variable. En el editor de mensaje de alarma, seleccione la variable que desee y añádala en cualquier lugar de la cadena de mensaje.
La cadena de mensaje puede tener un máximo de 255 caracteres, incluidos los caracteres que especifican las variables incorporadas (no el número de caracteres en los valores reales de las variables incorporadas). Por ejemplo, /*S:0 %Tag1*/ especifica un tag de cadena y añade 13 caracteres a la longitud total de la cadena, pero el valor real del tag de cadena podría tener 82 caracteres.
Usted no puede acceder programáticamente a la cadena del mensaje de alarma desde el tag de alarma. Para cambiar el mensaje de alarma basado en eventos específicos, configure uno de los tags asociados como tipo de datos de cadena e incorpore dicho tag asociado en el mensaje.
Usted puede tener versiones de los mensajes en múltiples idiomas. El idioma adicional se introduce mediante la utilidad de importación/exportación. Para obtener más información, vea la página 67.
Publicación 1756-RM003K-ES-P – Julio 2008 65
Capítulo 1 Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Variables de la cadena de mensaje
Puede incorporar esta información variable en una cadena de mensaje.
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.
Opción Descripción
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 controlador, nombre del programa y nombre de tag. Por ejemplo, [Zone1Controller]Program:Main.MyAlarmTagName.
/*S:0 %AlarmName*/
Condition name La condición que activa la alarma:
• la alarma digital muestra el disparo;
• la alarma analógica muestra HiHi, Hi, Lo, LoLo, ROC_POS ó ROC_NEG.
/*S:0 %ConditionName*/
Input value El valor de entrada para la alarma:
• la alarma digital muestra 0 ó 1;
• la alarma analógica muestra el valor de la variable de entrada que está monitoreando.
/*N:5 %InputValue NOFILL DP:0*/
Limit value El umbral de la alarma:
• 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.
/*N:5 %LimitValue NOFILL DP:0*/
Severity La severidad configurada de la condición de alarma. /*N:5 %Severity NOFILL DP:0*/
Values of associated tags El valor de un tag configurado para incluirse con el evento de alarma.
/*N:5 %Tag1 NOFILL DP:0*/
66 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA) Capítulo 1
El código varía según el tipo de tag que seleccione, cuántos dígitos o caracteres hay en un valor de tag y si desea rellenar los bits vacíos con espacios o ceros a la izquierda. Por ejemplo:
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.
Tag Código
Valor BOOL /*N:1 %Tag1 NOFILL DP:0*/
Valor DINT, 9 dígitos, relleno con espacio a la izquierda /*N:9 %Tag2 SPACEFILL DP:0*/
Valor de entrada REAL, 9 dígitos (incluye decimal) 3 dígitos después del decimal, relleno con ceros a la izquierda.
/*N:9 %InputValue NOFILL DP:3*/
Valor REAL, 8 dígitos (incluye decimal) 4 dígitos después del decimal, relleno con ceros a la izquierda.
/*N:8 %Tag3 ZEROFILL DP:4*/
Valor de cadena, sin ancho fijo /*S:0 %Tag4*/
Valor de cadena, 26 caracteres, ancho fijo /*S:26 %Tag4*/
Publicación 1756-RM003K-ES-P – Julio 2008 67
Capítulo 1 Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Use la utilidad de importación/exportación para crear y traducir cadenas de mensajes en múltiples idiomas. El formato de importación/exportación .TXT admite caracteres de doble byte, por lo tanto usted puede usar este formato para todos los idiomas, inclusive chino, japonés y coreano. El formato de importación/exportación .CVS no admite caracteres de doble byte.
Los mensajes de importación y exportación siempre realizan una fusión. Al eliminar un mensaje en un archivo .CSV o .TXT no se elimina el mensaje del archivo .ACD. Para eliminar un mensaje, importe el archivo .CSV o .TXT con los campos tipo, nombre y especificador llenados pero con la descripción en blanco.
Monitoreo del estado de alarma
En la ficha Status del diálogo de alarma, monitoree la condición de una alarma, confirme una alarma, inhabilite una alarma, suprima una alarma o restablezca una alarma. Use las selecciones del diálogo para ver cómo se comporta una alarma sin necesidad de tener un HMI en operación.
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 alarmas en el búfer
Para recibir mensajes de alarma basados en el controlador, los clientes de alarmas (como el servidor RSLinx Enterprise) deben establecer una suscripción a las alarmas en el controlador Logix. El controlador mantiene una conexión con cada suscriptor y monitorea el estado de dicha conexión.
A medida que ocurren cambios de estado de alarma, las instrucciones de alarma almacenan en caché la información necesaria (como sellos de hora y valores de tag asociados) y solicitan la transmisión del mensaje de alarma a todos los suscriptores. El mecanismo de publicación entrega los mensajes de alarma a cada suscriptor tan rápido como sea posible.
Si algún suscriptor no confirma recibo del mensaje de alarma, o si la conexión a un suscriptor conocido no es buena, el mecanismo de publicación almacena los mensajes de alarma no entregados en un búfer de 100 KB. Cada suscriptor tiene su propio búfer; por lo tanto, los problemas de comunicación con un suscriptor no interfieren con la entrega de mensajes de alarmas a otros suscriptores. Cuando el búfer está lleno, se descartan los mensajes de alarma más nuevos. El búfer se crea cuando el suscriptor establece su conexión inicial y se mantiene por un tiempo configurable (0...120 minutos, siendo el valor predeterminado 20 minutos) después de que un suscriptor pierde su conexión.
Cuando el suscriptor restablece una conexión dentro del intervalo de tiempo de espera del búfer, obtiene el estado actual de todas las alarmas, comienza a recibir mensajes de alarma actuales y también carga los mensajes que puedan haberse acumulado en el búfer. Aun si el búfer estuviera lleno y los mensajes fueras descartados, los suscriptores se sincronizan de manera exacta con el estado actual de las alarmas (inclusive los sellos de hora más recientes de InAlarmTime, RetToNormalTime y AckTime.
El almacenamiento en el búfer continúa hasta llenarse. Una vez lleno, el búfer deja de añadir transiciones de alarmas hasta que el suscriptor deje un espacio disponible en el búfer.
Publicación 1756-RM003K-ES-P – Julio 2008 69
Capítulo 1 Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA)
Acceda programáticamente a información de alarmas
Cada instrucción de alarma tiene una estructura de alarma que almacena información de configuración y ejecución de alarma. La estructura de alarma incluye tanto elementos de control de programa y de operador, como elementos de operador. Las instrucciones de alarma no usan ajustes de modo para determinar si el acceso al programa o el acceso al operador están activos; por lo tanto, estos elementos siempre están activos.
Existen tres maneras de realizar acciones en una instrucción de alarma.
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.
Acceso Elementos de estructura de alarmas
Consideraciones
Programa de usuario • ProgAck
• ProgReset
• ProgSuppress
• ProgDisable
• ProgEnable
Use la lógica del controlador para acceder programáticamente a elementos del sistema de alarmas. Por ejemplo, el programa de control puede determinar si se inhabilitará una serie de alarmas relacionadas con una sola causa raíz. Por ejemplo, el programa de control podría inhabilitar una instrucción de alarma, MyDigitalAlarm de tipo de datos ALARM_DIGITAL, mediante acceso al miembro de tag MyDigitalAlarm.ProgDisable.
HMI personalizado • OperAck
• OperReset
• OperSuppress
• OperDisable
• OperEnable
Cree una plantilla de HMI personalizada para acceder a elementos del sistema de alarmas. Por ejemplo, si el operador necesita retirar una herramienta, en lugar de inhabilitar manualmente o suprimir alarmas individualmente desde las pantallas de alarmas, el operador puede presionar una tecla de inhabilitación que brinda acceso a un tag MyDigitalAlarm.OperDisable.
Los parámetros del operador trabajan con cualquier interface de Rockwell Automation o de otros fabricantes para permitir el control de estados de alarma.
Cuando se establece un parámetro del operador, la instrucción evalúa si puede responder a la petición, y posteriormente restablece siempre el parámetro.
Objeto HMI estándar No accesible La interacción normal del operador se realiza a través de objetos del resumen de alarmas, indicador de alarma y explorador de estado de alarmas en la aplicación FactoryTalk View. Esta interacción es similar a la opción de HMI personalizada antes descrita, pero no hay interacción ni visibilidad programática.
70 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones basadas en Logix para alarmas y eventos FactoryTalk (ALMD, ALMA) Capítulo 1
En lógica de escalera de relés y en texto estructurado, si usted desea acceder programáticamente a la estructura de alarmas, asigne el tag de estructura al parámetro en la instrucción. Por ejemplo, para usar MyAnalogAlarm.ProgAck en lógica, asigne el tag MyAnalogAlarm.ProgAck al parámetro ProgAck.
Suprima o inhabilite alarmas
Suprima alarmas para retirar las alarmas cuya existencia usted conoce desde el HMI, pero mantenga las alarmas activas. Esto le permitirá borrar el resumen de alarmas mientras que usted está resolviendo una alarma conocida sin continuar viendo información de alarmas. Una alarma suprimida no aparece en las pantallas de indicadores o resumen de operador, pero una alarma suprimida igualmente se envía a los suscriptores, se registra en la base de datos históricos, puede cambiar el estado de alarma, tener sello de hora y responder a otras interacciones programáticas o del operador.
• Cuando una alarma se suprime, ésta continúa funcionando normalmente, monitorea el parámetro In en lo que respecta a las condiciones de alarma y responde a peticiones de confirmación. Todos los suscriptores son notificados de este evento, y todo mensaje de alarma generado mientras la alarma se encuentra en estado suprimido incluye el estado suprimido. Los clientes de alarmas pueden responder de manera diferente a las alarmas suprimidas. Por ejemplo, las alarmas suprimidas pueden registrarse en la base de datos históricos pero no pueden anunciarse al operador.
• Cuando una alarma no está suprimida, todos los suscriptores son notificados y los mensajes de alarma a los suscriptores ya no incluyen el estado suprimido.
Inhabilite una alarma para tratar la alarma como si ésta no existiera en el programa de control. Una alarma inhabilitada no cambia el estado de alarma ni se registra en la base de datos históricos. Una alarma inhabilitada aun se rastrea y puede rehabilitarse en el explorador de estado de alarmas en el software FactoryTalk View SE.
• Cuando una alarma está inhabilitada, todas sus condiciones se establecen en el estado inicial (InAlarm se borra y Acked se establece). El parámetro In no es monitoreado en lo que respecta a las condiciones de alarma. Todos los suscriptores son notificados de este evento.
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 basada en el controlador
Las alarmas basadas en el controlador procesan entradas provenientes de dos fuentes.
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.
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.
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:
• Mensaje de alarma: Fallo de contactor
• Clase de alarma: Zona de tanques A
1012 bytes
Alarma digital con dos tags asociados y esta configuración:
• 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
1100 bytes
Alarma digital con dos tags asociados y esta configuración:
• 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
1522 bytes
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
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.
Ejemplo de alarma analógica Tamaño aproximado
Alarma analógica sin tags asociados y esta configuración:
• 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
2228 bytes
Alarma analógica con dos tags asociados y esta configuración:
• 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
2604 bytes
Alarma analógica con dos tags asociados y esta configuración:
• 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
4536 bytes
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.
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.
Estado de renglón Tiempos de ejecución
Alarma digital (ALMD)
Alarma analógica (ALMA)
Sin cambio de estado de alarma
Renglón falso
8 μs 17 μs
Renglón verdadero
8 μs 60 μs
Cambio de estado de alarma
Renglón falso
35 μs 17 μs
Renglón verdadero
35 μs 126 μs
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
texto estructurado(1)
78
habilitar salidas cuando se borra un bit. XIO lógica de escalera de relés
texto estructurado(1)
80
establecer un bit OTE lógica de escalera de relés
texto estructurado(1)
82
establecer un bit (retentivo) OTL lógica de escalera de relés
texto estructurado(1)
84
borrar un bit (retentivo) OTU lógica de escalera de relés
texto estructurado(1)
86
habilitar salidas por un escán cada vez que el renglón se hace verdadero
ONS lógica de escalera de relés
texto estructurado(1)
88
establecer un bit por un escán cada vez que el renglón se hace verdadero
OSR lógica de escalera de relés 91
establecer un bit por un escán cada vez que el renglón se hace falso
OSF lógica de escalera de relés 94
establecer un bit por un escán cada vez que el bit de entrada se establece en el bloque de funciones
OSRI texto estructuradobloque de funciones
96
establecer un bit por un escán cada vez que el bit de entrada se borra en el bloque de funciones
OSFI texto estructuradobloque de funciones
99
(1) No hay una instrucción equivalente en texto estructurado. Use otra programación en texto estructurado para lograr el mismo resultado. Vea la descripción de la instrucción.
77Publicación 1756-RM003K-ES-P – Julio 2008 77
Capítulo 2 Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Examinar si está cerrado (XIC)
La instrucción XIC examina el bit de datos para determinar si está establecido.
Operandos:
Lógica de escalera de relés
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Operando Tipo Formato Descripción
bit de datos BOOL tag bit que se va a probar
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.
post-escán La condición de salida de renglón se establece como falsa.
examinar bit de datos
bit de datos = 0
bit de datos = 1
la condición de salida de renglón se establece como falsa
la condición de salida de renglón se establece como verdadera
condición de entrada de renglón es verdadera
fin
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 (XIO)
La instrucción XIO examina el bit de datos para determinar si está borrado.
Operandos:
Lógica de escalera de relés
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Operando Tipo Formato Descripción
bit de datos BOOL tag bit que se va a probar
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.
post-escán La condición de salida de renglón se establece como falsa.
examinar bit de datos
bit de datos = 0
bit de datos = 1
la condición de salida de renglón se establece como verdadera
la condición de salida de renglón se establece como falsa
condición de entrada de renglón es verdadera
fin
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
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Operando Tipo Formato Descripción
bit de datos BOOL tag bit que se va a establecer o borrar
Condición Acción de lógica de escalera de relés
preescán El bit de datos se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa El bit de datos se borra.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera El bit de datos se establece.
La condición de salida de renglón se establece como verdadera.
post-escán El bit de datos se borra.
La condición de salida de renglón se establece como falsa.
82 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capítulo 2
Ejemplo: Cuando se establece switch, la instrucción OTE establece (activa) light_1. Cuando se borra switch, la instrucción OTE borra (desactiva) light_1.
Lógica de escalera de relés
Texto estructurado
light_1 [:=] switch;
Publicación 1756-RM003K-ES-P – Julio 2008 83
Capítulo 2 Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Enclavamiento de salida (OTL)
La instrucción OTL establece (enclava) el bit de datos.
Operandos:
Lógica de escalera de relés
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Operando Tipo Formato Descripción
bit de datos BOOL tag bit que se va a establecer
Condición Acción de lógica de escalera de relés
preescán El bit de datos no se modifica.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa El bit de datos no se modifica.
La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera El bit de datos se establece.
La condición de salida de renglón se establece como verdadera.
post-escán El bit de datos no se modifica.
La condición de salida de renglón se establece como falsa.
84 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capítulo 2
Ejemplo: Cuando se habilita, la instrucción OTL establece light_2. Este bit de datos permanece establecido hasta que es borrado, generalmente por una instrucción OTU.
Lógica de escalera de relés
Texto estructurado
IF BOOL_expression THEN
light_2 := 1;
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008 85
Capítulo 2 Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Desenclavamiento de salida (OTU)
La instrucción OTU borra (desenclava) el bit de datos.
Operandos:
Lógica de escalera de relés
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Operando Tipo Formato Descripción
bit de datos BOOL tag bit que se va a borrar
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
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
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
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:
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.
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.
post-escán 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
fin
examinar bit de almacenamiento
bit de almacenamiento = 0
bit de almacenamiento = 1
el bit de almacenamiento se establece
la condición de salida de renglón se establece como verdadera
el bit de almacenamiento permanece establecido
la condición de salida de renglón se establece como falsa
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 ascendente (OSR)
La instrucción OSR establece o borra el bit de salida, dependiendo del estado del bit de almacenamiento.
Esta instrucción está disponible en texto estructurado y en bloque de funciones como OSRI; vea la página 96.
Operandos:
Lógica de escalera de relés
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
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
condición de entrada del renglón
bit de almacenamiento
bit de salida
la instrucciónse ejecuta
la instrucción se restablece durante la siguiente ejecución del escán
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.
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.
condición de entrada de renglón es verdadera
fin
examinar bit de almacenamiento
bit de almacenamiento = 0
bit de almacenamiento = 1
el bit de almacenamiento se establece
el bit de salida se establece la condición de salida de renglón se establece como verdadera
el bit de almacenamiento permanece establecido
el bit de salida se borra la condición de salida de renglón se establece como verdadera
92 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capítulo 2
Ejemplo: Cada vez que limit_switch_1 cambia de borrado a establecido, la instrucción OSR establece output_bit_1 y la instrucción ADD incrementa sum en 5. Siempre que limit_switch_1 permanezca establecido, sum permanece con el mismo valor. El limit_switch_1 debe cambiar de borrado a establecido nuevamente para que sum se incremente nuevamente. Usted puede usar output_bit_1 en varios renglones para activar otras operaciones.
Publicación 1756-RM003K-ES-P – Julio 2008 93
Capítulo 2 Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Un impulso en flanco descendente (OSF)
La instrucción OSF establece o borra el bit de salida dependiendo del estado del bit de almacenamiento.
Esta instrucción está disponible en texto estructurado y en bloque de funciones como OSFI; vea la página 99.
Operandos:
Operandos de lógica de escalera de relés
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
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
condición de entrada del renglón
bit de almacenamiento
bit de salida
la instrucciónse ejecuta
la instrucción se restablece durante la siguiente ejecución del escán
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:
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.
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 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.
condición de entrada de renglón es falsa
fin
examinar bit de almacenamiento
bit de almacenamiento = 0
bit de almacenamiento = 1
el bit de almacenamiento permanece borrado
el bit de salida se borra la condición de salida de renglón se establece como falsa
el bit de almacenamiento se borra
el bit de salida se establece la condición de salida de renglón se establece como falsa
Publicación 1756-RM003K-ES-P – Julio 2008 95
Capítulo 2 Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Un impulso en flanco ascendente con entrada (OSRI)
La instrucción OSRI establece el bit de salida por un ciclo de ejecución cuando el bit de entrada cambia de borrado a establecido.
Esta instrucción está disponible en lógica de escalera de relés como OSR; vea la página 91.
Operandos:
Texto estructurado
Bloque de funciones
Estructura FBD_ONESHOT
Operando Tipo Formato Descripción
tag OSRI FBD_ONESHOT estructura estructura OSRI
Operando Tipo Formato Descripción
tag OSRI FBD_ONESHOT estructura estructura OSRI
OSRI(OSRI_tag);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
InputBit BOOL Bit de entrada. Esto es equivalente a la condición del renglón para la instrucción OSR de lógica de escalera de relés.
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
OutputBit BOOL Bit de salida
96 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Capítulo 2
Descripción: Cuando InputBit se establece y InputBitn-1 se borra, la instrucción
OSRI establece OutputBit. Cuando InputBitn-1 se establece o cuando
InputBit se borra, la instrucción OSRI borra OutputBit.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
InputBit
OutputBit
40048la instrucción
se ejecutala instrucción se restablece durante la siguiente ejecución del escán
InputBitn-1
Condición Acción de bloque de funciones Acción de texto estructurado
preescán Ninguna. Ninguna.
primer escán de instrucción InputBit n-1 se establece. InputBit n-1 se establece.
primera ejecución de instrucción
InputBit n-1 se establece. InputBit n-1 se establece.
EnableIn se borra EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece En una transición de borrado a establecido de InputBit, la instrucción establece InputBit n-1.
La instrucción se ejecuta.
EnableOut se establece.
En una transición de borrado a establecido de InputBit, la instrucción establece InputBit n-1.
EnableIn siempre 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 descendente con entrada (OSFI)
La instrucción OSFI establece OutputBit por un ciclo de ejecución cuando InputBit cambia de establecido a borrado.
Esta instrucción está disponible en lógica de escalera de relés como OSF; vea la página 94.
Operandos:
Texto estructurado
Bloque de funciones
Estructura FBD_ONESHOT
Operando Tipo Formato Descripción
tag OSFI FBD_ONESHOT estructura estructura OSFI
Operando Tipo Formato Descripción
tag OSFI FBD_ONESHOT estructura estructura OSFI
OSFI(OSFI_tag);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
InputBit BOOL Bit de entrada. Esto es equivalente a la condición del renglón para la instrucción OSF de lógica de escalera de relés
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
OutputBit BOOL Bit de salida
Publicación 1756-RM003K-ES-P – Julio 2008 99
Capítulo 2 Instrucciones de bits (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Descripción: Cuando InputBit se borra y InputBit n-1 se establece, la instrucción
OSFI establece OutputBit. Cuando InputBit n-1 se borra o cuando
InputBit se establece, la instrucción OSFI borra OutputBit.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
InputBit
OutputBit
la instrucciónse ejecuta
la instrucción se restablece durante la siguiente ejecución del escán
InputBit n-1
40047
Condición Acción de bloque de funciones Acción de texto estructurado
preescán Ninguna. Ninguna.
primer escán de instrucción InputBit n-1 se borra. InputBit n-1 se borra.
primera ejecución de instrucción
InputBit n-1 se borra. InputBit n-1 se borra.
EnableIn se borra EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece En una transición de borrado a establecido de InputBit, la instrucción borra InputBit n-1.
La instrucción se ejecuta.
EnableOut se establece.
En una transición de borrado a establecido de InputBit, la instrucción borra InputBit n-1.
EnableIn siempre 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.
La base de tiempo para todos los temporizadores es 1 ms.
Si desea Use esta instrucción Disponible en estos lenguajes Vea la página
establecer el tiempo durante el cual un temporizador está habilitado
TON lógica de escalera de relés 104
establecer el tiempo durante el cual un temporizador está inhabilitado
TOF lógica de escalera de relés 108
acumular tiempo RTO lógica de escalera de relés 112
establecer el tiempo durante el cual un temporizador está habilitado con restablecimiento incorporado en el bloque de funciones
TONR texto estructurado
bloque de funciones
116
establecer el tiempo durante el cual un temporizador está inhabilitado con restablecimiento incorporado en el bloque de funciones
TOFR texto de estructura
bloque de funciones
120
acumular tiempo con restablecimiento incorporado en el bloque de funciones
RTOR texto estructurado
bloque de funciones
124
conteo progresivo CTU lógica de escalera de relés 128
conteo regresivo CTD lógica de escalera de relés 132
conteo progresivo y regresivo en el bloque de funciones
CTUD texto estructurado
bloque de funciones
136
restablecer un temporizador o un contador RES lógica de escalera de relés 141
103Publicación 1756-RM003K-ES-P – Julio 2008 103
Capítulo 3 Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporizador de retardo a la conexión (TON)
La instrucción TON es un temporizador no retentivo que acumula el tiempo cuando la instrucción está habilitada (la condición de entrada del renglón es verdadera).
Esta instrucción está disponible en texto estructurado y en bloque de funciones como TONR; vea la página 116.
Operandos:
Lógica de escalera de relés
Estructura TIMER
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.
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
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.
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.
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
condición de entrada del renglón
bit de habilitación de temporizador (.EN)
bit de temporizador expirado (.DN)
valor acumulado de temporizador (.ACC)
bit de temporizador temporizando (.TT)
preajuste
0 16649
el temporizador no llegó al valor .PRE
Retardo a la
conexión
IMPORTANTE Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta. De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de 69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de 69 minutos si lo coloca en una:
• subrutina• sección de código comprendida entre las instrucciones JMP y LBL • diagrama de función secuencial (SFC)• evento o tarea periódica• rutina de estado de una fase
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.
post-escán La condición de salida de renglón se establece como falsa.
examine el bit .DN Bit .DN = 1
Bit .DN = 0
el bit .EN se estableceel bit .TT se establecelast_time = current_time
condición de entrada de renglón es verdadera
examine .ACC .ACC ≥ .PRE
.ACC < .PRE
el bit .TT se establece.ACC = .ACC + (current_time - last_time)last_time = current_time
el valor .ACC retorna al valor
inicial
no
sí
.ACC = 2,147,483,647
examine el bit .EN Bit .EN = 0
Bit .EN = 1
la condición de salida de renglón se establece como verdadera
fin
.DN se estableceel bit .TT se borrael bit .EN se establece
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 desconexión (TOF)
La instrucción TOF es un temporizador no retentivo que acumula el tiempo cuando la instrucción está habilitada (la condición de entrada del renglón es falsa).
Esta instrucción está disponible en texto estructurado y en bloque de funciones como TOFR; vea la página 120.
Operandos:
Lógica de escalera de relés
Estructura TIMER
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.
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
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.
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.
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
condición de entrada del renglón
bit de habilitación de temporizador (.EN)
bit de temporizador expirado (.DN)
valor acumulado de temporizador (.ACC)
bit de temporizador temporizando (.TT)
0 16650
el temporizador no llegó al valor .PRE
preajuste
retardo a la desconexión
IMPORTANTE Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta. De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de 69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de 69 minutos si lo coloca en una:
• subrutina• sección de código comprendida entre las instrucciones JMP y LBL• diagrama de función secuencial (SFC)• evento o tarea periódica• rutina de estado de una fase
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 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.
examine el bit .DN Bit .DN = 0
Bit .DN = 1
el bit .EN se borrael bit .TT se establecelast_time = current_time
condición de entrada de renglón es falsa
examine .ACC .ACC ≥ .PRE
.ACC < .PRE
el bit .TT se establece.ACC = .ACC + (current_time - last_time)last_time = current_time
el valor .ACC retorna al
valor inicial
no
sí
.ACC = 2,147,483,647
examine el bit .EN Bit .EN = 1
Bit .EN = 0
la condición de salida de renglón se establece como falsa
fin
.DN se borrael bit .TT se borrael bit .EN se borra
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 activado (RTO)
La instrucción RTO es un temporizador retentivo que acumula tiempo cuando la instrucción está habilitada.
Esta instrucción está disponible en texto estructurado y en bloque de funciones como RTOR; vea la página 124.
Operandos:
Lógica de escalera de relés
Estructura TIMER
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.
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
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.
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.
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
condición de entrada del renglón
bit de habilitación de temporizador (.EN)
bit de temporizador expirado (.DN)
valor acumulado de temporizador (.ACC)
bit de temporizador temporizando (.TT)
preajuste
0
16651
condición de renglón que controla la instrucción RES
el temporizador no llegó al valor .PRE
IMPORTANTE Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta. De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de 69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de 69 minutos si lo coloca en una:
• subrutina• sección de código comprendida entre las instrucciones JMP y LBL• diagrama de función secuencial (SFC)• evento o tarea periódica• rutina de estado de una fase
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.
post-escán La condición de salida de renglón se establece como falsa.
examine el bit .DN Bit .DN = 1
Bit .DN = 0
el bit .EN se estableceel bit .TT se establecelast_time = current_time
condición de entrada de renglón es verdadera
examine .ACC .ACC ≥ .PRE
.ACC < .PRE
el bit .TT se establece.ACC = .ACC + (current_time - last_time)last_time = current_time
el valor .ACC retorna al
valor inicial
no
sí
.ACC = 2,147,483,647
examine el bit .EN Bit .EN = 0
Bit .EN = 1
la condición de salida de renglón se establece como verdadera
fin
.DN se estableceel bit .TT se borrael bit .EN se establece
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 a la conexión con restablecimiento (TONR)
La instrucción TONR es un temporizador no retentivo que acumula tiempo cuando TimerEnable está establecido.
Esta instrucción está disponible en lógica de escalera de relés como dos instrucciones separadas: TON (vea página 104) y RES (vea página 141).
Operandos:
Texto estructurado
Bloque de funciones
Estructura FBD_TIMER
Variable Tipo Formato Descripción
tag TONR FBD_TIMER estructura estructura TONR
Operando Tipo Formato Descripción
tag TONR FBD_TIMER estructura estructura TONR
TONR(TONR_tag);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
TimerEnable BOOL Si se establece, permite que el temporizador se ejecute y acumule tiempo.
La opción predeterminada es borrado.
PRE DINT Valor prefijado en el temporizador. Éste es un valor expresado en unidades de 1 ms al que ACC debe llegar antes de que concluya la temporización. Si no es válido, la instrucción establece el bit apropiado en Status y el temporizador no se ejecuta.
Válido = 0 hasta el entero positivo máximo
Reset BOOL Petición para restablecer el temporizador. Cuando se establece, el temporizador se restablece.
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
ACC BOOL Tiempo acumulado en milisegundos.
EN BOOL Salida de temporizador habilitado. Indica que la instrucción de temporizador está habilitada.
TT BOOL Salida de temporizador temporizando. Cuando se establece, se está ejecutando una operación de temporización.
116 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capítulo 3
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.
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)
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.
Parámetro de entrada
Tipo de datos Descripción
TimerEnable
bit de habilitación (EN)
bit de temporizador expirado (.DN)
valor acumulado de temporizador (.ACC)
bit de temporizador temporizando (TT)
preajuste
0
16649
Retardo a la
conexión
el temporizador no llegó al valor PRE
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
IMPORTANTE Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta. De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de 69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de 69 minutos si lo coloca en una:
• subrutina• sección de código comprendida entre las instrucciones JMP y LBL• diagrama de función secuencial (SFC)• evento o tarea periódica• rutina de estado de una fase
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.
El valor ACC se establece en 0.
Los bits EN, TT y DN se borran.
El valor ACC se establece en 0.
primera ejecución de instrucción
Los bits EN, TT y DN se borran.
El valor ACC se establece en 0.
Los bits EN, TT y DN se borran.
El valor ACC se establece en 0.
EnableIn se borra EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece Cuando EnableIn cambia de borrado a establecido, la instrucción se inicializa según lo descrito para el primer escán de la instrucción.
La instrucción se ejecuta.
EnableOut se establece.
EnableIn siempre se establece.
La instrucción se ejecuta.
restablecimiento Cuando el parámetro de entrada Reset se establece, la instrucción borra EN, TT y DN y estableceACC = cero.
Cuando el parámetro de entrada Reset se establece, la instrucción borra EN, TT y DN y establece 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 desconexión con restablecimiento (TOFR)
La instrucción TOFR es un temporizador no retentivo que acumula tiempo cuando TimerEnable está borrado.
Esta instrucción está disponible en lógica de escalera de relés como dos instrucciones separadas: TOF (vea página 108) y RES (vea página 141).
Operandos:
Texto estructurado
Operandos de bloque de funciones
Estructura FBD_TIMER
Variable Tipo Formato Descripción
TOFR tag FBD_TIMER estructura estructura TOFR
Operando Tipo Formato Descripción
TOFR tag FBD_TIMER estructura estructura TOFR
TOFR(TOFR_tag);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
TimerEnable BOOL Si se borra, permite que el temporizador se ejecute y acumule tiempo.
La opción predeterminada es borrado.
PRE DINT Valor prefijado en el temporizador. Éste es un valor en unidades de 1 ms al que ACC debe llegar antes de que concluya la temporización. Si no es válido, las instrucciones establecen el bit apropiado en Status y el temporizador no se ejecuta.
Válido = 0 hasta el entero positivo máximo
Reset BOOL Petición para restablecer el temporizador. Cuando se establece, el temporizador se restablece.
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
ACC BOOL Tiempo acumulado en milisegundos.
EN BOOL Salida de temporizador habilitado. Indica que la instrucción de temporizador está habilitada.
TT BOOL Salida de temporizador temporizando. Cuando se establece, se está ejecutando una operación de temporización.
120 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capítulo 3
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.
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)
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.
Parámetro de entrada
Tipo de datos Descripción
TimerEnable
bit de habilitación (EN)
bit de temporizador expirado (.DN)
valor acumulado de temporizador (.ACC)
bit de temporizador temporizando (TT)
0
retardo a la desconexión
16650
el temporizador no llegó al valor PRE
preajuste
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
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.
IMPORTANTE Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta. De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de 69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de 69 minutos si lo coloca en una:
• subrutina• sección de código comprendida entre las instrucciones JMP y LBL• diagrama de función secuencial (SFC)• evento o tarea periódica• rutina de estado de una fase
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.
El valor ACC se establece en PRE.
Los bits EN, TT y DN se borran.
El valor ACC se establece en PRE.
primera ejecución de instrucción
Los bits EN, TT y DN se borran.
El valor ACC se establece en PRE.
Los bits EN, TT y DN se borran.
El valor ACC se establece en PRE.
EnableIn se borra EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece Cuando EnableIn cambia de borrado a establecido, la 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.
EnableIn siempre se establece.
La instrucción se ejecuta.
restablecimiento Cuando el parámetro de entrada Reset se establece, la instrucción borra EN, TT y DN, y establece ACC = PRE. Tenga presente que esto es diferente a usar una instrucción RES en una instrucción TOF.
Cuando el parámetro de entrada Reset se establece, la instrucción borra EN, TT y DN, y establece ACC = PRE. Tenga presente que esto es diferente a usar una instrucción RES en una instrucción TOF.
post-escán Ninguna. Ninguna.
122 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capítulo 3
Texto estructurado
TOFR_01.Preset := 500
TOFR_01.Reset := reset;
TOFR_O1.TimerEnable := limit_switch1;
TOFR(TOFR_01);
timer_state2 := TOFR_01.DN;
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008 123
Capítulo 3 Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporizador retentivo activado con restablecimiento (RTOR)
La instrucción RTOR es un temporizador retentivo que acumula tiempo cuando TimerEnable está establecido.
Esta instrucción está disponible en lógica de escalera de relés como dos instrucciones separadas: RTO (vea página 112) y RES (vea página 141).
Operandos:
Texto estructurado
Operandos de bloque de funciones
Estructura FBD_TIMER
Variable Tipo Formato Descripción
RTOR tag FBD_TIMER estructura estructura RTOR
Operando Tipo Formato Descripción
RTOR tag FBD_TIMER estructura estructura RTOR
RTOR(RTOR_tag);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
TimerEnable BOOL Si se establece, permite que el temporizador se ejecute y acumule tiempo.
La opción predeterminada es borrado.
PRE DINT Valor prefijado en el temporizador. Éste es un valor expresado en unidades de 1 ms al que ACC debe llegar antes de que concluya la temporización. Si no es válido, la instrucción establece el bit apropiado en Status y el temporizador no se ejecuta.
Válido = 0 hasta el entero positivo máximo
Reset BOOL Petición para restablecer el temporizador. Cuando se establece, el temporizador se restablece.
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
ACC DINT Tiempo acumulado en milisegundos. Este valor queda retenido aun cuando la entrada TimerEnable se borra. Ésta es la diferencia entre el comportamiento de este bloque y el del bloque TONR.
EN BOOL Salida de temporizador habilitado. Indica que la instrucción de temporizador está habilitada.
TT BOOL Salida de temporizador temporizando. Cuando se establece, se está ejecutando una operación de temporización.
124 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capítulo 3
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.
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)
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.
Parámetro de entrada
Tipo de datos Descripción
TimerEnable
bit de habilitación (EN)
bit de temporizador expirado (.DN)
valor acumulado de temporizador (.ACC)
bit de temporizador temporizando (TT)
preajuste
0
16651
Reset
el temporizador no llegó al valor PRE
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
IMPORTANTE Asegúrese de escanear el temporizador por lo menos cada 69 minutos mientras se ejecuta. De no hacerse, el valor ACC no será correcto.
El valor last_time_scanned tiene un rango de hasta 69 minutos. El cálculo del temporizador regresa al valor inicial si usted no escanea el temporizador en un lapso de 69 minutos. Si esto sucede, el valor ACC no será correcto.
Durante la ejecución de un temporizador, escanéelo dentro de un lapso no mayor de 69 minutos si lo coloca en una:
• subrutina• sección de código comprendida entre las instrucciones JMP y LBL• diagrama de función secuencial (SFC)• evento o tarea periódica• rutina de estado de una fase
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.
El valor .ACC no se modifica.
Los bits EN, TT y DN se borran.
El valor .ACC no se modifica.
primera ejecución de instrucción
Los bits EN, TT y DN se borran.
El valor .ACC no se modifica.
Los bits EN, TT y DN se borran.
El valor .ACC no se modifica.
EnableIn se borra EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece Bloque de funciones:
Cuando EnableIn cambia de borrado a establecido, la instrucción se inicializa según lo descrito para el primer escán de la instrucción.
La instrucción se ejecuta.
EnableOut se establece.
EnableIn siempre se establece.
La instrucción se ejecuta.
restablecimiento Cuando el parámetro de entrada Reset se establece, la instrucción borra EN, TT y DN y establece ACC = cero.
Cuando el parámetro de entrada Reset se establece, la instrucción borra EN, TT y DN y establece 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
Estructura COUNTER
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
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.
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
condición de entrada del renglón
bit de habilitación de conteo progresivo (.CU)
bit de conteo progresivo efectuado (.DN)
valor acumulado de contador (.ACC)
preajuste
16636
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.
post-escán La condición de salida de renglón se establece como falsa.
examine el bit .CUbit .CU = 0
bit .CU = 1
condición de entrada de renglón es verdadera
el valor .ACC retorna al valor
inicial
sí
no
examine el bit .UN el bit .UN = 0
el bit .UN = 1
el bit .CU se establece
.ACC = .ACC + 1
examine el bit .OVel bit .OV = 0
examine el bit .UNel bit .UN = 1
el bit .UN = 0
el bit .UN se borrael bit .DN se borrael bit .OV se borra
el bit .OV se establece
examine .ACC .ACC ≥ .PRE
.ACC < .PRE
el bit .DN se establece
la condición de salida de renglón se establece como verdadera
fin
el bit .OV = 1
el bit .DN se borra
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
Estructura COUNTER
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
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.
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
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
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.
post-escán La condición de salida de renglón se establece como falsa.
examine el bit .CDel bit .CD = 0
el bit .CD = 1
condición de entrada de renglón es verdadera
el valor .ACC retorna al
valor inicial
sí
no
examine el bit .UN el bit .UN = 0
el bit .UN = 1
el bit .CD se establece
.ACC = .ACC - 1
examine el bit .OV el bit .OV = 0
examine el bit .OVel bit .OV = 1
el bit .OV = 0
el bit .OV se borrael bit .DN se borrael bit .UN se borra
el bit .UN se establece
examine .ACC .ACC ≥ .PRE
el bit .DN se establece
la condición de salida de renglón se establece como verdadera
fin
el bit .OV = 1
.ACC < .PRE
el bit .DN se borra
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/regresivo (CTUD)
La instrucción CTUD incrementa en uno el conteo cuando CUEnable cambia de borrado a establecido. La instrucción decrementa en uno el conteo cuando CDEnable cambia de borrado a establecido.
Esta instrucción está disponible en lógica de escalera de relés como tres instrucciones separadas: CTU (ver página 128), CTD (ver página 132), y RES (ver página 141).
Operandos:
Texto estructurado
Bloque de funciones
Estructura FBD_COUNTER
Variable Tipo Formato Descripción
CTUD tag FBD_COUNTER estructura estructura CTUD
Operando Tipo Formato Descripción
CTUD tag FBD_COUNTER estructura estructura CTUD
CTUD(CTUD_tag);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
CUEnable BOOL Habilita el conteo progresivo. Cuando la entrada cambia de borrado a establecido, el acumulador se incrementa en uno.
La opción predeterminada es borrado.
136 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de temporizador y contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Capítulo 3
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.
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 entrada
Tipo de datos Descripción
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.
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
Conteo regresivo
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
CUEnable
bit de habilitación de conteo progresivo (CU)
bit de conteo progresivo efectuado (.DN)
valor acumulado de contador (ACC)
preajuste
16636
CDEnable
bit de habilitación de conteo regresivo (CD)
bit de conteo regresivo efectuado (.DN)
valor acumulado de contador (ACC)
preajuste
16637
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:
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;
Condición Acción de bloque de funciones Acción de texto estructurado
preescán No se requiere inicialización. No se requiere inicialización.
primer escán de instrucción CUEnablen-1 y CDEnablen-1 se establecen. CUEnablen-1 y CDEnablen-1 se establecen.
primera ejecución de instrucción
CUEnablen-1 y CDEnablen-1 se establecen. CUEnablen-1 y CDEnablen-1 se establecen.
EnableIn se borra EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece La instrucción establece CUEnablen-1 y CDEnablen-1.
En una transición de borrado a establecido de EnableIn:
• La instrucción se ejecuta.
• EnableOut se establece.
La instrucción establece CUEnablen-1 y CDEnablen-1.
EnableIn siempre se establece.
La instrucción se ejecuta.
restablecimiento Cuando se establece, la instrucción borra CUEnablen-1, CDEnablen-1, CU, CD, DN, OV y UN y establece ACC = cero.
Cuando se establece, la instrucción borra CUEnablen-1, CDEnablen-1, CU, CD, DN, OV y UN y establece ACC = cero.
post-escán Ninguna. Ninguna.
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
Descripción: Cuando se habilita, la instrucción RES borra estos elementos:
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Operando Tipo Formato Descripción
estructura TIMER
CONTROL
COUNTER
tag estructura que se va a restablecer
Cuando se usa una instrucción RES para
La instrucción borra
TIMER el valor .ACC
los bits de estado de control
COUNTER el valor .ACC
los bits de estado de control
CONTROL el valor .POS
los bits de estado de control
ATENCIÓN Puesto que la instrucción RES borra el valor .ACC, el bit .DN y el bit .TT, no use la instrucción RES para restablecer un temporizador TOF.
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
texto estructurado
144
obtener información de estado del controlador GSV lógica de escalera de relés
texto estructurado
176
establecer información de estado del controlador
SSV lógica de escalera de relés
texto estructurado
176
• enviar valores de salida a un módulo de E/S o controlador consumidor en un punto específico de su lógica
IOT lógica de escalera de relés
texto estructurado
201
• 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
Texto estructurado
Los operandos son iguales a los de la instrucción MSG de lógica de escalera de relés.
Estructura MESSAGE
Operando Tipo Formato Descripción
Message control
MESSAGE tag estructura de mensaje
MSG(MessageControl);
ATENCIÓN Si usted revisa los bits de estado más de una vez
El controlador cambia los bits DN, ER, EW y ST de manera asíncrona con el escán de la lógica. Use una copia de los bits si los verifica en más de un lugar en la lógica. De lo contrario, los bits pueden cambiar durante el escán y la lógica no funcionará según lo esperado.
Una manera de hacer una copia es usar la palabra FLAGS. Copie la palabra FLAGS a otro tag y verifique los bits en la copia.
IMPORTANTE No cambie los siguientes bits de estado de una instrucción MSG:
• DN• EN• ER• EW• ST
No cambie esos bits por sí mismos ni como parte de la palabra FLAGS. Si lo hace, el controlador puede sufrir un fallo no recuperable. El controlador borra el proyecto de su memoria cuando sufre un fallo no recuperable.
144 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4
Mnemónico Tipo de datos
Descripción
.FLAGS INT El miembro .FLAGS proporciona acceso a los miembros de estado (bits) en una palabra de 16 bits.
Este bit: Es este miembro:
2 .EW
4 .ER
5 .DN
6 .ST
7 .EN
8 .TO
9 .EN_CC
Importante: No cambie los bits EW, ER, DN ni ST del miembro FLAGS. Por ejemplo, no borre toda la palabra FLAGS. El controlador ignora el cambio y usa los valores de los bits almacenados internamente.
.ERR INT Si el bit .ER está establecido, la palabra de código de error identifica los códigos de error de la instrucción MSG.
.EXERR INT La palabra de código de error extendida especifica información adicional de algunos códigos de error.
.REQ_LEN INT La longitud solicitada especifica cuántas palabras la instrucción de mensaje intentará transferir.
.DN_LEN INT La longitud efectuada identifica cuántas palabras se transfirieron realmente.
.EW BOOL Se establece el bit de habilitación/espera cuando el controlador detecta que una solicitud de mensaje ha entrado en la cola. El controlador restablece el bit .EW cuando se establece el bit .ST.
Importante: No cambie el bit EW. El controlador ignora el cambio y usa el valor del bit almacenado internamente.
.ER BOOL Se establece el bit de error cuando el controlador detecta el fallo de una transferencia. El bit .ER se restablece la próxima vez que la condición de entrada de renglón cambia de falsa a verdadera.
Importante: No cambie el bit ER.
.DN BOOL Se establece el bit de efectuado cuando se transfiere correctamente el último paquete del mensaje. El bit .DN se restablece la próxima vez que la condición de entrada de renglón cambia de falsa a verdadera.
Importante: No cambie el bit DN.
.ST BOOL Se establece el bit de arranque cuando el controlador comienza a ejecutar la instrucción MSG. El bit .ST se restablece cuando se establece el bit .DN o .ER.
Importante: No cambie el bit ST. El controlador ignora el cambio y usa el valor del bit almacenado internamente.
.EN BOOL Se establece el bit de habilitación cuando la condición de entrada de renglón se hace verdadera y permanece establecida hasta que se establece el bit .DN o .ER y la condición de entrada de renglón es falsa. Si la condición de entrada de renglón se hace falsa, pero los bits .DN y .ER se borran, el bit .EN permanece establecido.
Importante: No cambie el bit EN.
.TO BOOL Si se establece manualmente el bit .TO, el controlador interrumpe el procesamiento del mensaje y establece el bit .ER.
.EN_CC BOOL El bit de habilitación de caché determina cómo administrar la conexión MSG. Consulte Seleccione una opción de caché en la página 4-173. Las conexiones para instrucciones MSG a través del puerto serie no se guardan en la memoria caché aunque se establezca el bit .EN_CC.
.ERR_SRC SINT Usado por el software RSLogix 5000 para mostrar la ruta de error en el cuadro de diálogo Message Configuration
Publicación 1756-RM003K-ES-P – Julio 2008 145
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
.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 envía a través de esta red:
Especifique el número de ranura en:
E/S remotas universales
octal
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
Mnemónico Tipo de datos
Descripción
146 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4
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.
.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.
• 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.
.TimeoutMultiplier SINT
Mnemónico Tipo de datos
Descripción
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 .EW
conexión con .EN_CC = 0
41382
bit .ST
bit .DN o bit .ER
bit .EN
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
Ejecución:
Donde Descripción Donde Descripción
1 condición de entrada de renglón es verdadera
.EN se establece
.EW se establece
la conexión está abierta*
5 el mensaje se envía
.ST se establece
.EW se borra
2 el mensaje se envía
.ST se establece
.EW se borra
6 mensaje efectuado o con error
condición de entrada de renglón todavía es verdadera
.DN o .ER se establece
.ST se borra
La conexión está cerrada (si .EN_CC = 0)
3 mensaje efectuado o con error
condición de entrada de renglón es falsa
.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)
7 la condición de entrada de renglón se hace falsa y .DN o .ER se establece
.EN se borra
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
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008 149
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
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)
fin
la condición de salida de renglón se establece como falsa
examine el bit .ENbit .EN = 1
bit .EN = 0
examine el bit .EWbit .EW = 1
bit .EW = 0
examine el bit .STbit .ST = 1
bit .ST = 0
examine el bit .DNbit .DN = 1
bit .DN = 0
examine el bit .DNbit .DN = 1
bit .DN = 0
examine el bit .ERbit .ER = 1
bit .ER = 0
el bit .EN se borra
examine el bit .ERbit .ER = 1 bit .ER = 0 comando de
transferencia en bloques
la ruta de acceso del módulo es
válida
sí no
no
ejecute la petición de mensaje
el bit .EW se establece
conexión de módulo en ejecución
no
sí
sí
el bit .ER se establece
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.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
ejecución de la instrucción
fin
la condición de salida de renglón se establece como falsa
bit .EN = 0
examine el bit .EWbit .EW = 1
bit .EW = 0
examine el bit .STbit .ST = 1
bit .ST = 0
examine el bit .DNbit .DN = 1
bit .DN = 0
examine el bit .ERbit .ER = 1 bit .ER = 0 comando de
transferencia en bloques
la ruta de acceso del módulo es
válida
sí no
no
los bits .EW, .ST, .TO, .DN y .ER se borran
el bit .EN se establece
ejecute la petición de mensaje
el bit .EW se establece
conexión de módulo en ejecución
no
sí
sí
el bit .ER se establece
examine el bit .ENbit .EN = 1
examine el bit .EW
bit .EW = 0
examine el bit .ST
bit .ST = 0
los bits .EW, .ST, .TO, .DN y .ER se borran y el bit.EN se establece
el bit .EN se establece
bit .EW = 1
bit .ST = 1
Publicación 1756-RM003K-ES-P – Julio 2008 151
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Indicadores de estadoaritmé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 (hex)
Descripción Se muestra en el software
0001 Fallo de conexión (vea los códigos de error extendidos) idéntico a la descripción
0002 Recurso insuficiente idéntico a la descripción
0003 Valor no válido idéntico a la descripción
0004 Error de sintaxis IOI (vea los códigos de error extendidos) idéntico a la descripción
0005 Destino desconocido, clase no compatible, instancia no definida o elemento de estructura no definido (vea los códigos de error extendidos)
idéntico a la descripción
0006 Espacio de paquete insuficiente idéntico a la descripción
0007 Conexión perdida idéntico a la descripción
0008 Servicio no compatible idéntico a la descripción
0009 Error en segmento de datos o valor de atributo no válido idéntico a la descripción
000A Error de lista de atributos idéntico a la descripción
000B El estado ya existe idéntico a la descripción
000C Conflicto de modelo de objeto idéntico a la descripción
000D El objeto ya existe idéntico a la descripción
000E Atributo no se puede establecer idéntico a la descripción
000F Permiso denegado idéntico a la descripción
0010 Conflicto de estado de dispositivo idéntico a la descripción
0011 La respuesta no cabe idéntico a la descripción
0012 Fragmento primitivo idéntico a la descripción
0013 Datos de comando insuficientes idéntico a la descripción
0014 Atributo no compatible idéntico a la descripción
0015 Demasiados datos idéntico a la descripción
001A Petición de puente demasiado grande idéntico a la descripción
001B Respuesta de puente demasiado grande idéntico a la descripción
001C Lista de atributos insuficiente idéntico a la descripción
001D Lista de atributos no válida idéntico a la descripción
001E Error de servicio incorporado idéntico a la descripción
152 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4
001F Fallo relacionado con la conexión (vea los códigos de error extendidos)
idéntico a la descripción
0022 Respuesta no válida recibida idéntico a la descripción
0025 Error de segmento clave idéntico a la descripción
0026 Error IOI no válido idéntico a la descripción
0027 Atributo inesperado en lista idéntico a la descripción
0028 Error DeviceNet – ID de miembro no válido idéntico a la descripción
0029 Error DeviceNet – miembro no se puede establecer idéntico a la descripción
00D1 El módulo no se encuentra en estado de marcha error desconocido
00FB Puerto de mensajes no compatible error desconocido
00FC Tipo de mensaje no compatible error desconocido
00FD Mensaje no inicializado error desconocido
00FE Expiración de mensaje error desconocido
00FF Error general (vea los códigos de error extendidos) error desconocido
Código de error (hex)
Descripción Se muestra en el software
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.
Estos son los códigos de error extendidos para el código de error 001F.
Estos son los códigos de error extendidos para el código de error 0004 y 0005.
Código de error extendido (hex.):
Descripción
0100 Conexión en uso
0103 Transporte no compatible
0106 Conflicto de propiedad
0107 No se encontró la conexión
0108 Tipo de conexión no válido
0109 Tamaño de conexión no válido
0110 Módulo no configurado
0111 EPR no compatible
0114 Módulo incorrecto
0115 Tipo incorrecto de dispositivo
0116 Revisión incorrecta
0118 Formato de configuración no válido
011A Aplicación sin conexiones
0203 Expiración de conexión
0204 Expiración de mensaje no conectado
0205 Error de parámetro de envío no conectado
0206 Mensaje demasiado grande
0301 No hay memoria de búfer
0302 Ancho de banda no disponible
0303 No hay protectores disponibles
0305 Coincidencia de firma
0311 Porte no disponible
0312 Dirección de vínculo no disponible
0315 Tipo de segmento no válido
0317 Conexión no programada
Código de error extendido (hex.):
Descripción
Código de error extendido (hex.):
Descripción
0203 Expiración de conexión
Código de error extendido (hex.):
Descripción
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 error extendido (hex.):
Descripción
2001 IOI excesivo
2002 Valor de parámetro incorrecto
2018 Rechazo de semáforo
201B Tamaño demasiado pequeño
201C Tamaño no válido
2100 Fallo de privilegio
2101 Posición no válida de interruptor de llave
2102 Contraseña no válida
2103 No se emitió contraseña
2104 Dirección fuera de rango
2105 Dirección y cuántas fuera de rango
2106 Datos en uso
2107 Tipo no válido o no compatible
2108 Controlador en modo de carga o descarga
2109 Intento para cambiar el número de dimensiones de registro
210A Nombre de símbolo no válido
210B El símbolo no existe
210E La búsqueda entró en fallo
210F La tarea no se puede iniciar
2110 No se puede escribir
2111 No se puede leer
2112 Rutina compartida no editable
2113 Controlador en modo con fallo
2114 Modo de marcha inhibido
Código de error extendido (hex.):
Descripción
P
ublicación 1756-RM003K-ES-P – Julio 2008 155Capí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
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)
Códigos de error PLC y SLC (hex) (cont.)
R9.x y anteriores R10.x y posteriores Descripción
.ERR .EXERR .ERR .EXERR
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 (hex)
Descripción Se muestra en el software
00D0 El escáner no recibió una respuesta de transferencia en bloques del módulo de transferencia en bloques dentro de los 3.5 segundos siguientes a la petición
error desconocido
00D1 La suma de comprobación de la respuesta de lectura no coincidió con la suma de comprobación del flujo de datos
error desconocido
00D2 El escáner solicitó una lectura o una escritura, pero el módulo de transferencia en bloques respondió lo opuesto
error desconocido
00D3 El escáner solicitó una longitud y el módulo de transferencia en bloques respondió con una longitud diferente
error desconocido
00D6 El escáner recibió una respuesta del módulo de transferencia en bloques indicando que la petición de escritura falló.
error desconocido
00EA El escáner no estaba configurado para comunicarse con el rack que contendría este módulo de transferencia en bloques
error desconocido
00EB La ranura lógica especificada no está disponible para el tamaño de rack dado error desconocido
00EC Actualmente está en curso una petición de transferencia en bloques y se requiere una respuesta antes de que pueda comenzar otra petición.
error desconocido
00ED El tamaño de la petición de transferencia en bloques no es coherente con las peticiones de tamaño de transferencia en bloques válidas
error desconocido
00EE El tipo de la petición de transferencia en bloques no es coherente con la BT_READ o BT_WRITE esperada
error desconocido
00EF El escáner no pudo encontrar una ranura disponible en la tabla de transferencia en bloques para aceptar la petición de transferencia en bloques
error desconocido
00F0 El escáner recibió una petición para restablecer los canales de E/S remotas mientras que había transferencias en bloques pendientes
error desconocido
00F3 Las colas para las transferencias en bloques remotas están llenas error desconocido
00F5 Los canales de comunicación están configurados para el rack o ranura solicitada error desconocido
00F6 Ningún canal de comunicación está configurado para E/S remotas error desconocido
00F7 El tiempo de espera de la transferencia en bloques, establecido en la instrucción, expiró antes de concluir
error desconocido
00F8 Error en el protocolo de transferencia en bloques – transferencia en bloques no solicitada error desconocido
00F9 Los datos de la transferencia en bloques se perdieron debido a un canal de comunicación defectuoso
error desconocido
00FA El módulo de transferencia en bloques solicitó una longitud diferente a la instrucción de transferencia en bloques asociada
error desconocido
00FB La suma de comprobación de la transferencia en bloque de lectura era incorrecta error desconocido
00FC Hubo una transferencia no válida de datos de transferencia en bloques de escritura entre el adaptador y el módulo de transferencia en bloques
error desconocido
00FD El tamaño de la transferencia en bloques más el tamaño del índice en la tabla de datos de transferencias en bloques era mayor que el tamaño del archivo de tablas de datos de transferencia en bloques
error desconocido
158 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4
Especifique los detalles de configuración
Después de introducir la instrucción MSG y de especificar la estructura MESSAGE, use el cuadro de diálogo Message Configuration para especificar los detalles del mensaje.
Los detalles que usted configura dependen del tipo de mensaje que selecciona.
Haga clic aquí para configurar la instrucción MSG
42976
Si el dispositivo receptor es un Seleccione uno de estos tipos de mensaje
Vea la página
Controlador Logix5000 Lectura de tabla de datos CIP 160
Escritura de tabla de datos CIP
Módulo de E/S que usted configura usando el software RSLogix 5000
Reconfiguración de módulo 161
CIP genérico 162
Controlador PLC-5 TypedRead PLC5 163
TypedWrite PLC5
Lectura de rango de palabras PLC5
Escritura de rango de palabras PLC5
Controlador SLC
Controlador MicroLogix
TypedRead SLC 165
TypedWrite SLC
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:
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.
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.
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:
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];
En esta propiedad Seleccione
Tipo de mensaje Reconfiguración de módulo
Publicación 1756-RM003K-ES-P – Julio 2008 161
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Especifique mensajes genéricos CIP
Un mensaje genérico CIP realiza una acción específica en un módulo de E/S.
Si desea En esta propiedad Escriba o seleccione
Realizar una prueba de impulso en un módulo de salida digital
Tipo de mensaje CIP genérico
Tipo de servicio Prueba de impulso
Origen tag_name de tipo INT [5]
Esta matriz contiene:
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 un módulo de salida digital
Tipo de mensaje CIP genérico
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 un módulo de entrada digital
Tipo de mensaje CIP genérico
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 un módulo de salida digital
Tipo de mensaje CIP genérico
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
Especifique mensajes PLC-5
Use los tipos de mensajes PLC-5 para comunicarse con los controladores PLC-5.
Desenclavar la alarma de un módulo de entrada analógico
Tipo de mensaje CIP genérico
Tipo de servicio Seleccione la alarma que desea desenclavar:
• 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 salida analógico
Tipo de mensaje CIP genérico
Tipo de servicio Seleccione la alarma que desea desenclavar:
• Desenclavar todas las alarmas (O)
• Desenclavar alarma alta (O)
• Desenclavar alarma baja (O)
• Desenclavar alarma de rampa (O)
Instancia Canal de la alarma que desea desenclavar
Si desea En esta propiedad Escriba o seleccione
Seleccione este comando Si desea
TypedRead PLC5 Leer datos de números enteros de 16 bits, con punto flotante (coma flotante) o de tipo de cadena y mantener la integridad de los datos. Vea Tipos de datos para mensajes TypedRead y TypedWrite de PLC5 en la página 164.
TypedWrite PLC5 Escribir datos de números enteros de 16 bits, con punto flotante (coma flotante) o de tipo de cadena y mantener la integridad de los datos. Vea Tipos de datos para mensajes TypedRead y TypedWrite de PLC5 en la página 164
Lectura de rango de palabras PLC5
Leer un rango continuo de palabras de 16 bits en la memoria PLC-5 independientemente del tipo de datos.
Este comando comienza en la dirección especificada como el elemento de origen y lee secuencialmente el número de palabras de 16 bits solicitado.
Los datos del elemento de origen se almacenan a partir de la dirección especificada como tag de destino.
Escritura de rango de palabras PLC5
Escribir un rango continuo de palabras de 16 bits en la memoria Logix5000, independientemente del tipo de datos a la memoria PLC-5.
Este comando comienza en la dirección especificada en el tag de origen y lee secuencialmente el número de palabras de 16 bits solicitado.
Los datos del tag de origen se almacenan a partir de la dirección especificada como el elemento de destino en el procesador PLC-5.
Publicación 1756-RM003K-ES-P – Julio 2008 163
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
La siguiente tabla muestra los tipos de datos a usar con mensajes TypedRead de PLC5 y mensajes TypedWrite de PLC5.
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.
Tipos de datos para mensajes TypedRead y TypedWrite de PLC5
Para este tipo de datos PLC-5
Use este tipo de datos Logix5000
B INT
F REAL
N INT
DINT (solamente escriba valores DINT a un controlador PLC-5 si el valor es ≥ −32,768 y ≤ 32,767.)
S INT
ST STRING
palabras de 16 bits en procesador PLC-5
palabras de 32 bits en controlador Logix5000
Los comandos TypedWrite/TypedRead mantienen la estructura y el valor de los datos.
1
2
3
4
Comando TypedRead
1
2
3
4
palabras de 16 bits en procesador PLC-5
palabras de 32 bits en controlador Logix5000
Los comandos de rango de palabras llenan el tag de destino contiguamente. La estructura y valor de los datos se cambian según el tipo de datos de destino.
1
2
3
4
Comando de lectura de rango de palabras
1
3
2
4
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.
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.
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.
Para este tipo de datos SLC o MicroLogix
Use este tipo de datos Logix5000
F REAL
L (controladores MicroLogix 1200 y 1500) DINT
N INT
Si desea Seleccione este comando
leer los datos de un módulo de transferencia en bloques
Este tipo de mensaje reemplaza la instrucción BTR.
Lectura de transferencia en bloques
escribir datos en un módulo de transferencia en bloques
Este tipo de mensaje reemplaza la instrucción BTW.
Escritura de transferencia en bloques
Si usted desea que el Especifique
módulo de transferencia en bloques determine cuántos enteros de 16 bits enviar (BTR).
0 para el número de elementos
controlador envíe 64 enteros (BTW).
Publicación 1756-RM003K-ES-P – Julio 2008 165
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Especifique mensajes PLC-3
Los tipos de mensaje PLC-3 han sido diseñados para los procesadores PLC-3.
Seleccione este comando Si desea
TypedRead PLC3 leer números enteros o datos de tipo REAL.
Para enteros, este comando lee enteros de 16 bits del procesador PLC-3 y los almacena en matrices de datos SINT, INT o DINT en el controlador Logix5000, y mantiene la integridad de los datos.
Este comando también lee datos de punto flotante (coma flotante) del PLC-3 y los almacena en un tag de tipo de datos REAL en el controlador Logix5000.
TypedWrite PLC3 escribir números enteros o datos tipo REAL.
Este comando escribe datos SINT o INT en el archivo de números enteros PLC-3, y mantiene la integridad de los datos. Usted puede escribir datos DINT siempre y cuando estén comprendidos dentro de un tipo de datos INT (−32,768 ≥ ≤ 32,767).
Este comando también escribe datos de tipo REAL del controlador Logix5000 en un archivo de valores con punto flotante (coma flotante) PLC-3.
Lectura de rango de palabras PLC3
leer un rango continuo de palabras de 16 bits en la memoria PLC-3 independientemente del tipo de datos.
Este comando comienza en la dirección especificada en el elemento de origen y lee secuencialmente el número de palabras de 16 bits solicitado.
Los datos del elemento de origen se almacenan a partir de la dirección especificada como tag de destino.
Escritura de rango de palabras PLC3
escribir un rango continuo de palabras de 16 bits de la memoria Logix5000 independientemente del tipo de datos a la memoria PLC-3.
Este comando comienza en la dirección especificada en el tag de origen y lee secuencialmente el número de palabras de 16 bits solicitado.
Los datos del tag de origen se almacenan a partir de la dirección especificada como el elemento de destino en el procesador PLC-3.
166 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4
Los diagramas siguientes muestran la diferencia entre los comandos TypedWrite/TypedRead y de rango de palabras. El ejemplo usa los comandos de lectura de un procesador PLC-3 a un controlador Logix5000.
Especifique mensajes PLC-2
Los tipos de mensaje PLC-2 han sido diseñados para los procesadores PLC-2.
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).
palabras de 16 bits en el procesador PLC-3
palabras de 32 bits en el controlador Logix5000
Los comandos TypedWrite/TypedRead mantienen la estructura y el valor de los datos.
1
2
3
4
Comando TypedRead
1
2
3
4
palabras de 16 bits en el procesador PLC-3
palabras de 32 bits en el controlador Logix5000
Los comandos de rango de palabras llenan el tag de destino contiguamente. La estructura y el valor de los datos se cambian según el tipo de datos de destino.
1
2
3
4
Comando de lectura de rango de palabras
1
3
2
4
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.
Publicación 1756-RM003K-ES-P – Julio 2008 167
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Ejemplos de configuración MSG
Los ejemplos siguientes muestran tags de origen y destino, así como elementos para diferentes combinaciones de controladores.
Para las instrucciones MSG que provienen de un controlador Logix5000 y escriben en otro procesador:
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]
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
Logix5000 → SLC
tag de origen array_1[0]
elemento de destino N7:10
Puede usar un tag de alias para el tag de origen (en el controlador Logix5000 de origen).
Logix5000 → PLC-2 tag de origen array_1[0]
elemento de destino 010
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
Logix5000 → SLC
elemento de origen N7:10
tag de destino array_1[0]
Puede usar un tag de alias para el tag de destino (en el controlador Logix5000 de origen).
Logix5000 → PLC-2 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 de comunicación
Para configurar una instrucción MSG, usted especifica estos detalles en la ficha Communication.
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.
Especifique una ruta
Especifique un método de comunicación o una dirección de módulo
Seleccione una opción de caché
Si Entonces
La configuración de E/S del controlador tiene el módulo que obtiene el mensaje.
Use el botón Browse para seleccionar el módulo.
La configuración de E/S del controlador tiene sólo el módulo de comunicación local.
1. Use el botón Browse para seleccionar el módulo de comunicación local.
2. Escriba el resto de la ruta.
La configuración de E/S del controlador no tiene ninguno de los módulos que necesita para el mensaje.
Escriba la ruta.
Publicación 1756-RM003K-ES-P – Julio 2008 169
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Para escribir una ruta, use este formato:
port, next_address, port, next_address, …
Ejemplo
La configuración de E/S del controlador tiene el módulo que obtiene el mensaje.
La configuración de E/S del controlador tiene sólo el módulo de comunicación local.
La configuración de E/S del controlador no tiene ninguno de los módulos que necesita para el mensaje.
Haga clic en el botón Browse y seleccione el módulo.
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.
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.
Vaya a través del backplane…
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:
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.
Para transferencias en bloques mediante esta red
Añada estos módulos a la configuración de E/S
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)
Si el dispositivo de destino es un
Seleccione Y especifique
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+
DH+ Canal: Canal A o B del módulo 1756-DHRIO que está conectado a la red DH+
Controlador SLC por una red DH+
Vínculo de origen: La identificación de vínculo asignada al backplane del controlador en la tabla de encaminamiento del módulo 1756-DHRIO. (El nodo de origen en la tabla de encaminamiento es automáticamente el número de ranura del controlador).
Procesador PLC-3 Vínculo de destino La identificación de vínculo de la red DH+ remota donde reside el dispositivo receptor
Procesador PLC-2 Nodo de destino: Dirección de estación del dispositivo receptor, en octal
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
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.
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.
Aplicación en una estación de trabajo que recibe un mensaje no solicitado encaminado por una red Ethernet/IP o ControlNet a través de RSLinx.
CIP con ID de origen
(Esto permite que la aplicación reciba datos de un controlador)
Vínculo de origen: ID remoto del tema en el software RSLinx
Vínculo de destino: ID de vínculo virtual configurado en RSLinx (0-65535)
Nodo de destino: ID de destino (0-77 octal) proporcionado por la aplicación a RSLinx. Para el tema DDE en RSLinx, use 77.
El número de ranura del controlador ControlLogix se usa como nodo de origen.
Módulo de transferencia en bloques mediante una red de E/S remotas universales
RIO Canal: Canal A o B del módulo 1756-DHRIO que está conectado a la red RIO
Rack Número de rack (octal) del módulo
Grupo Número de grupo del módulo
Ranura Número de ranura donde está el módulo
Módulo de transferencia en bloques mediante una red ControlNet
ControlNet Ranura Número de ranura donde está el módulo
Si el dispositivo de destino es un
Seleccione Y especifique
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 usted Entonces
Almacena en caché la conexión
La conexión se mantiene abierta una vez finalizada la instrucción MSG. Así se optimiza el tiempo de ejecución. El abrir una conexión cada vez que se ejecuta el mensaje aumenta el tiempo de ejecución.
No almacena en caché la conexión
La conexión se cierra una vez finalizada la instrucción MSG. Así se libera la conexión para otros usos.
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 varios mensajes van al mismo dispositivo, es posible que los mensajes puedan compartir una conexión.
Si tiene esta revisión de software y firmware
Puede almacenar en caché
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 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 control.
Cada instrucción MSG requiere su propio tag de control.
• Tipo de datos = MESSAGE
• Alcance = controlador
• El tag no puede ser parte de una matriz ni de un tipo de datos definido por el usuario.
2. Mantenga los datos de origen y/o destino al alcance del controlador.
Una instrucción MSG puede acceder sólo a tags que están en la carpeta de tags del controlador (alcance del controlador).
3. Si su MSG es a un dispositivo que usa enteros de 16 bits, use un búfer de INT en el MSG y DINT en todo el proyecto.
Si su mensaje es a un dispositivo que usa enteros de 16 bits, tal como un controlador PLC-5® o SLC 500™, y éste transfiere enteros (no valores REAL), use un búfer de INT en el mensaje y DINT en todo el proyecto.
Así se aumenta la eficiencia de su proyecto porque los controladores Logix se ejecutan más eficientemente y usan menos memoria cuando trabajan con enteros de 32 bits (DINT).
Para convertir entre INT y DINT, consulte Logix5000 Controllers Common Procedures, publicación 1756-PM001.
4. Almacene en caché los MSG conectados que se ejecutan con mayor frecuencia.
Almacene en caché la conexión para dichas instrucciones MSG que se ejecutan con más frecuencia, hasta el número máximo permitido por la revisión del controlador.
Esto optimiza el tiempo de ejecución porque el controlador no tiene que abrir una conexión cada vez que se ejecuta el mensaje.
5. Si desea habilitar más de 16 MSG simultáneamente, use el mismo tipo de estrategia de administración.
Si usted habilita más de 16 MSG a la vez, algunas instrucciones MSG pueden experimentar retardos al ingresar en la cola. Para garantizar la ejecución de cada mensaje, use una de estas opciones.
• Habilite cada mensaje en secuencia.
• Habilite los mensajes en grupos.
• Programe un mensaje para comunicarse con varios dispositivos. Para obtener más información, consulte Logix5000 Controllers Common Procedures, publicación 1756-PM001.
• Programe la lógica para coordinar la ejecución de mensajes. Para obtener más información, consulte Logix5000 Controllers Common Procedures, publicación 1756-PM001.
6. Mantenga el número de MSG no conectados y no almacenados en caché en un valor menor que el número de búferes no conectados.
El controlador puede tener 10 - 40 búferes no conectados. El número predeterminado es 10.
• Si todos los búferes no conectados se usan cuando una instrucción deja la cola de mensajes, se produce un error en la instrucción y no transfiere los datos.
• Usted puede aumentar el número de búferes no conectados (40 máx.), pero continúe siguiendo las pautas 5.
• Para aumentar el número de búferes no conectados, consulte Logix5000 Controllers Common Procedures, publicación 1756-PM001.
Publicación 1756-RM003K-ES-P – Julio 2008 175
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Obtener valor del sistema (GSV) y establecer valor del sistema (SSV)
Las instrucciones GSV/SSV reciben y envían datos de sistema del controlador que se almacenan en los objetos.
Operandos:
Lógica de escalera de relés
Texto estructurado
Los operandos son iguales que para las instrucciones GSV y SSV de 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
INT
DINT
REAL
estructura
tag destino de los datos del atributo
Source (SSV) SINT
INT
DINT
REAL
estructura
tag el tag que contiene los datos que desea copiar al atributo
GSV(ClassName,InstanceName,AttributeName,Dest);
SSV(ClassName,InstanceName,AttributeName,Source);
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).
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].
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.
Publicación 1756-RM003K-ES-P – Julio 2008 177
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
Ejecución:
Ocurrirá un fallo menor si Tipo de fallo Código de fallo
dirección de objeto no válida 4 5
se especificó un objeto que no es compatible con GSV/SSV
4 6
atributo no válido 4 6
no se proporcionó suficiente información para una instrucción SSV
4 6
el destino GSV no es suficientemente grande para retener los datos solicitados
4 7
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
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 falsa.
Ninguna.
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.
Se puede obtener acceso a los siguientes objetos:
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.
Para obtener información acerca de este objeto
Vea esta página o publicación
AXIS ControlLogix Motion Module Setup and Configuration Manual, publicación 1756-UM006
CONTROLLER 180
CONTROLLERDEVICE 181
CST 183
DF1 184
FAULTLOG 187
MESSAGE 188
MODULE 190
MOTIONGROUP 191
PROGRAM 192
ROUTINE 193
SERIALPORT 193
TASK 195
WALLCLOCKTIME 197
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
SSV
El porcentaje de la CPU disponible que se asigna a las comunicaciones.
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.
ControllerLogTotalEntryCount
DINT SSV
GSV
Número de entradas de registro del controlador desde la última actualización de firmware.
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.
ControllerLogExecutionModificationCount
DINT SSV
GSV
Número de entradas de registro del controlador que se originó a partir de un cambio de propiedades de programa/tarea, una edición en línea o un cambio del segmento de tiempo del controlador. También puede configurarse para incluir entradas de registro que se originan a partir de forzados.
El número se restablecerá si la RAM entra en un mal estado.
El número no tiene como límite el mayor DINT, y puede ocurrir un salto entre los valores extremos (rollover).
ControllerLogUnsavedEntryCount
DINT GSV Número de entradas en el registro del controlador que todavía tienen que almacenarse en el medio físico extraíble.
Rango de 0 al número máximo de entradas.
ControllerLogAutoWrite BOOL MSG Indicador usado para determinar si la escritura automática del registro del controlador al medio físico extraíble está habilitada.
0 = la escritura automática está inhabilitada (fallo).
1 = el registro del controlador tratará de escribir al medio físico extraíble cuando el registro esté al 80% de su capacidad.
ExecutionCountConfigureMask
DINT MSG Matriz de bits usada para determinar qué hará que se incremente el conteo de modificación de ejecución.
0 = predeterminado (todo excepto los forzados).
1 = forzados incluidos (todo además de los forzados).
180 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4
Acceso al objeto CONTROLLERDEVICE
El objeto CONTROLLERDEVICE identifica el hardware físico del controlador.
Atributo Tipo de datos Instrucción Descripción
DeviceName SINT[33] GSV La cadena ASCII que identifica el número de catálogo del controlador y la tarjeta de memoria.
El primer byte contiene un conteo del número de caracteres ASCII retornados en la cadena de matriz.
ProductCode INT GSV Identifica el tipo de controlador.
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.
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
Publicación 1756-RM003K-ES-P – Julio 2008 181
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
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
Atributo Tipo de datos Instrucción Descripción
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 hora01 = nodo maestro de hora10 = nodo de relé de hora11 = 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 datos
Instrucción Descripción
ACKTimeout DINT GSV La cantidad de tiempo que se debe esperar por la confirmación de una transmisión de mensaje (punto a punto y maestro solamente).
El valor válido es 0-32,767. Retardo en conteos de períodos de 20 ms. El valor predeterminado es 50 (1 segundo).
DiagnosticCounters 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 maestro0 firma (0x0043) firma (0x0042) firma (0x0044)1 bits de módem bits de módem bits de módem2 paquetes enviados paquetes enviados paquetes enviados3 paquetes recibidos paquetes recibidos paquetes recibidos4 paquetes no entregados paquetes no entregados paquetes no entregados5 no se usa mensajes reenviados mensajes reenviados6 NAK recibidos NAK recibidos no se usa7 ENQ enviados paquetes de encuesta recibidos no se usa8 paquetes deficientes con NAK paquetes deficientes sin ACK paquetes deficientes sin ACK9 sin memoria enviado NAK sin memoria sin ACK no se usa10 recibidos paquetes duplicados recibidos paquetes duplicados recibidos paquetes duplicados 11 recibidos caracteres deficientes no se usa no se usa12 conteo de recuperaciones DCD conteo de recuperaciones DCD conteo de recuperaciones DCD13 conteo de módem perdido conteo de módem perdido conteo de módem perdido14 no se usa no se usa máximo de tiempo de escán prioritario15 no se usa no se usa último tiempo de escán prioritario16 no se usa no se usa máximo de tiempo de escán normal17 no se usa no se usa último tiempo de escán normal18 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 inhabilitadano 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 inhabilitadano 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
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ón1 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 mensajes1 basado en mensajes, pero permite a los esclavos
iniciar mensajes (predeterminado)2 estándar, transferencia de un solo mensaje por
escán de nodo3 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).
Atributo Tipo de datos
Instrucción Descripción
Publicación 1756-RM003K-ES-P – Julio 2008 185
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
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:
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.
PendingEmbeddedResponseEnable
SINT SSV Valor pendiente para el atributo EmbeddedResponse.
PendingENQTransmitLimit SINT SSV Valor pendiente para el atributo ENQTransmitLimit.
PendingEOTSuppression SINT SSV Valor pendiente para el atributo EOTSuppression.
PendingErrorDetection SINT SSV Valor pendiente para el atributo ErrorDetection.
PendingNormalPollGroupSize INT SSV Valor pendiente para el atributo NormalPollGroupSize.
PendingMasterMessageTransmit
SINT SSV Valor pendiente para el atributo MasterMessageTransmit.
PendingNAKReceiveLimit SINT SSV Valor pendiente para el atributo NAKReceiveLimit.
PendingPollingMode SINT SSV Valor pendiente para el atributo PollingMode.
PendingReplyMessageWait DINT SSV Valor pendiente para el atributo ReplyMessageWait.
PendingStationAddress INT SSV Valor pendiente para el atributo StationAddress.
PendingSlavePollTimeout DINT SSV Valor pendiente para el atributo SlavePollTimeout.
PendingTransmitRetries SINT SSV Valor pendiente para el atributo TransmitRetries.
Atributo Tipo de datos
Instrucción Descripción
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
SSV
Cuántos fallos mayores han ocurrido desde la última vez que se restableció este contador.
MinorEvents INT GSV
SSV
Cuántos fallos menores han ocurrido desde la última vez que se restableció este contador.
MajorFaultBits DINT GSV
SSV
Los bits individuales indican la razón del fallo mayor actual.
Bit: Significado:1 corte de energía3 E/S4 ejecución de instrucción (programa)5 administrador de fallos6 temporizador de control (watchdog)7 pila8 cambio de modo11 control de movimiento
MinorFaultBits DINT GSV
SSV
Los bits individuales indican la razón del fallo menor actual.
Bit: Significado:4 ejecución de instrucción (programa)6 temporizador de control (watchdog)9 puerto serie10 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.
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.
Atributo Tipo de datos Instrucción Descripción
ConnectionPath SINT[130] GSV
SSV
Datos para configurar la ruta de conexión. Los dos primeros bytes (byte inferior y byte superior) representan la longitud en bytes de la ruta de conexión.
ConnectionRate DINT GSV
SSV
Régimen de paquetes solicitado de la conexión.
MessageType SINT GSV
SSV
Especifica el tipo de mensaje.
Valor: Significado:0 no inicializado
Port SINT GSV
SSV
Indica el puerto por el que se debe enviar el mensaje.
Valor: Significado:1 backplane2 puerto serie
TimeoutMultiplier SINT GSV
SSV
Determina cuándo una conexión se debe considerar como que ha sobrepasado el tiempo de espera y se ha cerrado.
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
SSV
El tiempo de espera, en microsegundos, para todos los mensajes no conectados. La opción predeterminada es 30,000,000 microsegundos (30 segundos).
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.
Lógica de escalera de relés
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;
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
0 msg_path
Get System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeDest msg_1_type 2
GSVSet System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeSource tag_a 0
SSV
Set System ValueClass name MESSAGEInstance name msg_1Attribute Name ConnectionPathSource msg_1_path[0] 6
SSVSet System ValueClass name MESSAGEInstance name msg_1Attribute Name MessageTypeSource msg_1_type 2
SSV
1 /msg_1.EN
ENDNER
Type - CIP Data Table WriteMessage Control msg_1 ...
MSG
Get System ValueClass name MessageInstance name msg_1Attribute Name MessageTypeDest msg_1_type
2
Set System ValueClass name MessageInstance name msg_1Attribute Name MessageTypeSource tag_a
0
Set System ValueClass name MessageInstance name msg_1Attribute Name ConnectionPathSource msg_1path[0]
6
Set System ValueClass name MessageInstance name msg_1Attribute Name MessageTypeSource msg_1_type
2
Tipo – Escritura de tabla de datos CIPMessage Control msg_1
GSV SSV
SSV SSV
MSG
msg_path
msg_1.ENENDNER
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
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.
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
SSV
Especifica el modo actual del objeto MODULE.
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.
Atributo Tipo de datos Instrucción Descripción
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
SSV
Controla la ejecución de este programa.
Valor: Significado:0 ejecución habilitada1 ejecución inhabilitada
Instance DINT GSV Proporciona el número de instancia de este objeto PROGRAM.
LastScanTime DINT GSV
SSV
El tiempo necesario para que se ejecutara este programa la última vez que se ejecutó. El tiempo se representa en microsegundos.
MajorFaultRecord DINT[11] GSV
SSV
Registra los fallos mayores para este programa.
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
SSV
El tiempo de ejecución máximo registrado para este programa. El tiempo se representa en microsegundos.
MinorFaultRecord DINT[11] GSV
SSV
Registra los fallos menores para este programa
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
SSV
no se usa – reservado para uso futuro
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.
Acceso al objeto SERIALPORT
El objeto SERIALPORT proporciona una interface al puerto de comunicación serie.
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.
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)
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:
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.
Atributo Tipo de datos Instrucción Descripción
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
SSV
Habilita o inhabilita el procesamiento de salidas al final de una tarea.
Para: Establezca el atributo en:
habilitar el procesamiento de salidas al final de la tarea
0
inhabilitar el procesamiento de salidas al final de la tarea
1 (o cualquier valor excepto cero)
EnableTimeOut DINT GSV
SSV
Habilita o inhabilita la función de tiempo de espera de una tarea de evento.
Para: Establezca el atributo en:
inhabilitar la función de tiempo de espera
0
habilitar la función de tiempo de espera
1 (o cualquier valor excepto cero)
InhibitTask DINT GSV
SSV
Evita que se ejecute la tarea. Si se inhibe una tarea, el controlador igualmente preescanea la tarea cuando el controlador cambia del modo de programación al modo de marcha o al modo de prueba.
Para: Establezca el atributo en:
habitar la tarea 0 (predeterminado)
inhibir (inhabilitar) la tarea 1 (o cualquier valor excepto cero)
Instance DINT GSV Proporciona el número de instancia de este objeto TASK.
Los valores válidos son 0-31.
LastScanTime DINT GSV
SSV
El tiempo necesario para ejecutar esta tarea desde la última vez que se ejecutó. El tiempo se representa en microsegundos.
MaxInterval DINT[2] GSV
SSV
El intervalo de tiempo máximo entre las ejecuciones sucesivas de la tarea. DINT[0] contiene los 32 bits inferiores del valor; DINT[1] contiene los 32 bits superiores del valor.
Un valor de 0 indica 1 o menos ejecuciones de la tarea.
MaxScanTime DINT GSV
SSV
El tiempo de ejecución máximo registrado para este programa. El tiempo se representa en microsegundos.
MinInterval DINT[2] GSV
SSV
El intervalo de tiempo mínimo entre las ejecuciones sucesivas de la tarea. DINT[0] contiene los 32 bits inferiores del valor; DINT[1] contiene los 32 bits superiores del valor.
Un valor de 0 indica 1 o menos ejecuciones de la tarea.
OverlapCount DINT GSV
SSV
El número de veces que se activó la tarea mientras se estaba ejecutando. Válido para un evento o una tarea periódica.
Para borrar el conteo, establezca el atributo en 0.
Publicación 1756-RM003K-ES-P – Julio 2008 195
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Priority INT GSV
SSV
La prioridad relativa de esta tarea comparada con las otras tareas.
Valores válidos 1...15.
Rate DINT GSV
SSV
Si el tipo de tarea es: El atributo Rate especifica el:
periódica Período para la tarea. El tiempo se representa en microsegundos.
evento El valor de tiempo de espera para la tarea. El tiempo se representa en microsegundos.
StartTime DINT[2] GSV
SSV
El valor WALLCLOCKTIME cuando se inició la última ejecución de la tarea. DINT[0] contiene los 32 bits inferiores del valor; DINT[1] contiene los 32 bits superiores del valor.
Status DINT GSV
SSV
Proporciona información de estado acerca de la tarea. Una vez que el controlador establece uno de estos bits, usted puede borrar el bit manualmente.
Para determinar si: Examine este bit:
Una instrucción EVNT activó la tarea (tarea de evento solamente).
0
Un tiempo de espera sobrepasado activó la tarea (tarea de evento solamente).
1
Ocurrió una superposición para esta tarea.
2
Watchdog DINT GSV
SSV
El límite de tiempo para la ejecución de todos los programas asociados con esta tarea. El tiempo se representa en microsegundos.
Si se introduce 0, se asignan estos valores:
Tiempo: Tipo de tarea:
0.5 s periódica o de evento
5.0 s continua
Atributo Tipo de datos Instrucción Descripción
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
SSV
Offset positivo del CurrentValue del objeto CST (hora coordinada del sistema; vea la página 183). DINT[0] contiene los 32 bits inferiores del valor; DINT[1] contiene los 32 bits superiores del valor.
Valor en μs. El valor predeterminado es 0.
CurrentValue DINT[2] GSV
SSV
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.
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
SSV
La fecha y hora en un formato legible.
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 GSV/SSV
Obtenga información de fallo
Los siguientes ejemplos usan instrucciones GSV para obtener información de fallo.
Ejemplo 1: Este ejemplo obtiene información de fallo del módulo de E/S disc_in_2 y coloca los datos en una estructura definida por el usuario disc_in_2_info.
Lógica de escalera de relés
Texto estructurado
GSV(MODULE,disc_in_2,FaultCode,disc_in_2_info.FaultCode);
GSV(MODULE,disc_in_2,FaultInfo,disc_in_2_info.FaultInfo);
GSV(MODULE,disc_in_2,Mode,disc_in_2info.Mode);
Ejemplo 2: Este ejemplo obtiene información de estado acerca del programa discrete y coloca los datos en una estructura definida por el usuario discrete_info.
Lógica de escalera de relés
Texto estructurado
GSV(PROGRAM,DISCRETE,LASTSCANTIME,discrete_info.LastScanTime);
GSV(PROGRAM,DISCRETE,MAXSCANTIME,discrete_info.MaxScanTime);
198 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4
Ejemplo 3: Este ejemplo obtiene información de estado acerca de la tarea IO_test y coloca los datos en una estructura definida por el usuario io_test_info.
Lógica de escalera de relés
Texto estructurado
GSV(TASK,IO_TEST,LASTSCANTIME,io_test_info.LastScanTime);
GSV(TASK,IO_TEST,MAXSCANTIME,io_test_info.MaxScanTime);
GSV(TASK,IO_TEST,WATCHDOG,io_test_info.WatchDog);
Publicación 1756-RM003K-ES-P – Julio 2008 199
Capítulo 4 Instrucciones de entrada/salida (MSG, GSV, SSV, IOT)
Establezca los indicadores de habilitación e inhabilitación
El siguiente ejemplo usa la instrucción SSV para habilitar o inhabilitar un programa. Usted también podría usar este método para habilitar o inhabilitar un módulo de E/S, lo cual es similar a usar bits de inhibición con un procesador PLC-5.
Ejemplo: Según el estado de SW.1, coloque el valor apropiado en el atributo disableflag del programa discrete.
Lógica de escalera de relés
Texto estructurado
IF SW.1 THEN
discrete_prog_flag := enable_prog;
ELSE
discrete_prog_flag := disable_prog;
END_IF;
SSV(PROGRAM,DISCRETE,DISABLEFLAG,discrete_prog_flag);
200 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) 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
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:
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);
Marque esta casilla.
De esta manera se configura el tag para actualizar suactivador 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.
Los siguientes diagramas comparan la recepción de datos mediante una instrucción IOT por las redes EtherNet/IP y ControlNet.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
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 por una red ControlNet.
dentro del intervalo entre paquetes actual (API) del tag consumido (conexión)
Red EtherNet/IP Red ControlNet
tarea de evento en elcontrolador consumidor
valores cargados al tagproducido
instrucción IOT en elcontrolador productor
tarea de evento en elcontrolador consumidor
valores cargados al tagproducido
instrucción IOT en elcontrolador productor
RPI del tag producido
202 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de entrada/salida (MSG, GSV, SSV, IOT) Capítulo 4
Ejecución:
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);
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta. n. a.
La condición de salida de renglón se establece como verdadera.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción:
• actualiza la conexión del tag especificado.
• restablece el temporizador RPI de la conexión
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
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:
Lógica de escalera de relés
Texto estructurado
Produced_Tag se configura para actualizar su activador deeventos mediante una instrucción IOT.
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.
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.
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.
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éstexto estructurado(1)
206
probar si dos valores son iguales EQU lógica de escalera de reléstexto estructurado(2)
bloque de funciones
211
probar si un valor es mayor o igual que un segundo valor
GEQ lógica de escalera de reléstexto estructurado(1)
bloque de funciones
215
determinar si un valor es mayor que otro valor GRT lógica de escalera de reléstexto estructurado(1)
bloque de funciones
219
probar si un valor es menor o igual que un segundo valor
LEQ lógica de escalera de reléstexto estructurado(1)
bloque de funciones
223
determinar si un valor es menor que otro valor LES lógica de escalera de reléstexto estructurado(1)
bloque de funciones
227
determinar si un valor se encuentra entre otros dos valores
LIM lógica de escalera de reléstexto estructurado(1)
bloque de funciones
231
pasar dos valores a través de una máscara y determinar si son iguales
MEQ lógica de escalera de reléstexto estructurado(1)
bloque de funciones
237
determinar si un valor diferente a otro valor NEQ lógica de escalera de reléstexto estructurado(1)
bloque de funciones
242
(1) No hay una instrucción equivalente en texto estructurado. Use otra programación en texto estructurado para lograr el mismo resultado. Vea la descripción de la instrucción.
(2) No hay una instrucción equivalente en texto estructurado. Use el operador en una expresión.
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
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 estadoaritmético:
La instrucción CMP afecta los indicadores de estado aritmético si la expresión contiene un operador (por ejemplo, +, −, *, /) que afecta los indicadores de estado aritmético.
Condiciones de fallo: ninguna
Operando Tipo Formato Descripción
Expression SINT
INT
DINT
REAL
cadena
inmediato
tag
una expresión que consiste en tags y/o valores inmediatos separados por operadores.
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
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:
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:
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.
post-escán La condición de salida de renglón se establece como falsa.
fin
evalúe la expresión
la expresión es verdadera
la expresión es falsa
la condición de salida de renglón se establece como verdadera
la condición de salida de renglón se establece como falsa
condición de entrada de renglón es verdadera
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
+ sumar DINT, REAL
- restar/cambiar signo DINT, REAL
* multiplicar DINT, REAL
/ dividir DINT, REAL
= igual que DINT, REAL
< menor que DINT, REAL
<= menor o igual que DINT, REAL
> mayor que DINT, REAL
>= mayor o igual que DINT, REAL
<> diferente de DINT, REAL
** exponente (x a la y) DINT, REAL
ABS valor absoluto DINT, REAL
ACS arco coseno REAL
AND Y a nivel de bits DINT
ASN arco seno REAL
ATN arco tangente REAL
COS coseno REAL
DEG radianes a grados DINT, REAL
FRD BCD a entero DINT
LN logaritmo natural REAL
LOG logaritmo base 10 REAL
MOD módulo de división DINT, REAL
NOT complemento a nivel de bits
DINT
OR O a nivel de bits DINT
RAD grados a radianes DINT, REAL
SIN seno REAL
SQR raíz cuadrada DINT, REAL
TAN tangente REAL
TOD entero a BCD DINT
TRN truncar DINT, REAL
XOR O exclusivo a nivel de bits
DINT
Operador: Descripción Óptimo
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:
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.
Para operadores que operan en
Use este formato Ejemplos
un operando operador(operando) ABS(tag_a)
dos operandos operando_a operador operando_b
• tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f / tag_g)
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
• 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.
Operador Descripción
= igual que
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
<> diferente de
Caracteres ASCII Códigos hexadecimales
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
mayor
menor
AB < B
a > B
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
• 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
Use el signo igual “=” como operador dentro de una expresión. Esta expresión evalúa si sourceA es igual que sourceB.
Consulte el Apéndice C, Programación de texto estructurado para obtener información sobre la sintaxis de las expresiones en texto estructurado.
Operando Tipo Formato Descripción
Source A SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source B
Source B SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source A
IF sourceA = sourceB THEN
<statements>;
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
Estructura FBD_COMPARE
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Operando Tipo Formato Descripción
EQU tag FBD_COMPARE estructura estructura EQU
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
SourceA REAL Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB REAL Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest BOOL Resultado de la instrucción. Es equivalente a la condición de salida de renglón de la instrucción EQU de lógica de escalera de relés.
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
Bloque de funciones
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.
post-escán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
fin
Source A = Source Bsí
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
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
• 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
Use los signos mayor que e igual “>=” adyacentes como operador dentro de una expresión. Esta expresión evalúa si sourceA es mayor o igual que sourceB.
Consulte el Apéndice C, Programación de texto estructurado para obtener información sobre la sintaxis de las expresiones en texto estructurado.
Operando Tipo Formato Descripción
Source A SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source B
Source B SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source A
IF sourceA >= sourceB THEN
<statements>;
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
Estructura FBD_COMPARE
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.
Operando Tipo Formato Descripción
GEQ tag FBD_COMPARE estructura estructura GEQ
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
SourceA REAL Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB REAL Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest BOOL Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la instrucción GEQ de lógica de escalera de relés.
Caracteres ASCII Códigos hexadecimales
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
mayor
menor
AB < B
a > B
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
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.
post-escán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
fin
Source A ≥ Source Bsí
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
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
• 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
Use el signo mayor que “>” como un operador dentro de una expresión. Esta expresión evalúa si sourceA es mayor que sourceB.
Consulte el Apéndice C, Programación de texto estructurado para obtener información sobre la sintaxis de las expresiones en texto estructurado.
Bloque de funciones
Operando Tipo Formato Descripción
Source A SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source B
Source B SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source A
Operando Tipo Formato Descripción
GRT tag FBD_COMPARE estructura estructura GRT
IF sourceA > sourceB THEN
<statements>;
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
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
SourceA REAL Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB REAL Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest BOOL Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la instrucción GRT de lógica de escalera de relés.
Caracteres ASCII Códigos hexadecimales
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
mayor
menor
AB < B
a > B
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
Bloque de funciones
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.
post-escán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
fin
Source A > Source Bsí
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
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
• 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
Use los signos menor que e igual “<=” adyacentes como operador dentro de una expresión. Esta expresión evalúa si sourceA es menor o igual que sourceB.
Consulte el Apéndice C, Programación de texto estructurado para obtener información sobre la sintaxis de las expresiones en texto estructurado.
Operando Tipo Formato Descripción
Source A SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source B
Source B SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source A
IF sourceA <= sourceB THEN
<statements>;
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
Estructura FBD_COMPARE
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.
Operando Tipo Formato Descripción
LEQ tag FBD_COMPARE estructura estructura LEQ
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
SourceA REAL Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB REAL Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest BOOL Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la instrucción LEQ de lógica de escalera de relés.
Caracteres ASCII Códigos hexadecimales
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
mayor
menor
AB < B
a > B
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
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.
post-escán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
fin
Source A ≤ Source Bsí
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
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
• 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
Use el signo menor que “<” como un operador dentro de una expresión. Esta expresión evalúa si sourceA es menor que sourceB.
Consulte el Apéndice C, Programación de texto estructurado para obtener información sobre la sintaxis de las expresiones en texto estructurado.
Bloque de funciones
Operando Tipo Formato Descripción
Source A SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source B
Source B SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source A
Operando Tipo Formato Descripción
LES tag FBD_COMPARE estructura estructura LES
IF sourceA < sourceB THEN
<statements>;
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
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
SourceA REAL Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB REAL Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest BOOL Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la instrucción LES de lógica de escalera de relés.
Caracteres ASCII Códigos hexadecimales
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
mayor
menor
AB < B
a > B
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
Bloque de funciones
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.
post-escán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
fin
Source A < Source Bsí
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
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
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;
Operando Tipo Formato Descripción
Low limit SINT
INT
DINT
REAL
inmediato
tag
valor del límite inferior
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Test SINT
INT
DINT
REAL
inmediato
tag
valor que se prueba
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
High limit SINT
INT
DINT
REAL
inmediato
tag
valor del límite superior
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
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
Estructura FBD_LIMIT
Descripción: La instrucción LIM determina si el valor de prueba se encuentra dentro del rango de los límites inferior y superior.
Operando Tipo Formato Descripción
LIM tag FBD_LIMIT estructura estructura LIM
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta según lo descrito en Ejecución.
La opción predeterminada es establecido.
LowLimit REAL Valor del límite inferior
Válido = cualquier valor con punto flotante (coma flotante)
Test REAL Valor que se compara con límites
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest BOOL Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la instrucción LIM de lógica de escalera de relés.
HighLimit REAL Valor del límite superior
Válido = cualquier valor con punto flotante (coma flotante)
Si es límite inferior
Y el valor de prueba es La condición de salida de renglón se establece como
≤ Límite superior igual a o está entre los límites verdadera
diferente o está fuera de los límites
falsa
≥ Límite superior igual a o está fuera de los límites
verdadera
diferente o está dentro de los límites
falsa
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
−1
0
+1
límite inferior
límite superior
+n−(n+1)
n = valor máximo
Límite inferior ≤ Límite superior
La instrucción es verdadera si el valor de prueba se encuentra entre los límites inferior y superior, o coincide con uno de dichos límites.
Límite inferior ≥ Límite superior
La instrucción es verdadera si el valor de prueba se encuentra fuera de los límites inferior y superior, o coincide con uno de dichos límites.
−1
0
+1
límite superior
límite inferior
+n−(n+1)n = valor máximo
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
Bloque de funciones
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.
post-escán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
fin
evaluar el límite
la comparación es verdadera
la comparación es falsa
la condición de salida de renglón se establece como verdadera
la condición de salida de renglón se establece como falsa
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
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
Source SINT
INT
DINT
inmediato
tag
valor que se compara con Compare
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Mask SINT
INT
DINT
inmediato
tag
define qué bits se deben bloquear o pasar
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Compare SINT
INT
DINT
inmediato
tag
valor que se compara con Source
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
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
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.
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta según lo descrito en Ejecución.
La opción predeterminada es establecido.
Source DINT Valor que se compara con Compare.
Válido = cualquier número entero
Mask DINT Define qué bits se deben bloquear (enmascarar).
Válido = cualquier número entero
Compare DINT Valor de comparación.
Válido = cualquier número entero
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest BOOL Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la instrucción MEQ de lógica de escalera de relés.
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
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.
post-escán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
fin
origen enmascarado =
comparación enmascarada
sí
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
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).
Lógica de escalera de relés
Texto estructurado
light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));
Bloque de funciones
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_1enmascarado
0 1 0 1 0 1 0 1 1 1 1 1 X X X X value_2enmascarado
0 1 0 1 0 1 0 1 1 1 1 1 X X X X
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).
Lógica de escalera de relés
Texto estructurado
light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));
Bloque de funciones
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_1enmascarado
X X X X X X X X X X X X 1 1 1 1 value_2enmascarado
X X X X X X X X X X X X 0 0 0 0
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
• 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
Use los signos menor que y mayor que “<>” juntos como operador dentro de una expresión. Esta expresión evalúa si sourceA es diferente de sourceB.
Consulte el Apéndice C, Programación de texto estructurado para obtener información sobre la sintaxis de las expresiones en texto estructurado.
Bloque de funciones
Operando Tipo Formato Descripción
Source A SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source B
Source B SINT
INT
DINT
REAL
cadena
inmediato
tag
valor que se compara con Source A
Operando Tipo Formato Descripción
NEQ tag FBD_COMPARE estructura estructura NEQ
IF sourceA <> sourceB THEN
<statements>;
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
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).
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
SourceA REAL Valor que se compara con SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB REAL Valor que se compara con SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest BOOL Resultado de la instrucción. Es equivalente a la condición de salida de renglón para la instrucción NEQ de lógica de escalera de relés.
Caracteres ASCII Códigos hexadecimales
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
mayor
menor
AB < B
a > B
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
Bloque de funciones
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.
post-escán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
fin
Source A = Source Bsí
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
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.
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
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éstexto estructurado(1)
248
sumar dos valores ADD lógica de escalera de reléstexto estructurado(2)
bloque de funciones
252
restar dos valores SUB lógica de escalera de reléstexto estructurado(2)
bloque de funciones
255
multiplicar dos valores MUL lógica de escalera de reléstexto estructurado(2)
bloque de funciones
258
dividir dos valores DIV lógica de escalera de reléstexto estructurado(2)
bloque de funciones
261
determinar el residuo después de dividir un valor entre otro
MOD lógica de escalera de reléstexto estructurado(2)
bloque de funciones
266
calcular la raíz cuadrada de un valor SQR
SQRT(3)
lógica de escalera de reléstexto estructurado
bloque de funciones
270
tomar el signo opuesto de un valor. NEG lógica de escalera de reléstexto estructurado(2)
bloque de funciones
274
hallar el valor absoluto de un valor. ABS lógica de escalera de reléstexto estructurado
bloque de funciones
277
(1) No hay una instrucción equivalente en texto estructurado. Use otra programación en texto estructurado para lograr el mismo resultado. Vea la descripción de la instrucción.
(2) No hay una instrucción equivalente en texto estructurado. Use el operador en una expresión.
(3) Texto estructurado solamente.
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
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.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Operando Tipo Formato: Descripción
Destination SINTINTDINTREAL
tag tag para almacenar el resultado
Expression SINTINTDINTREAL
inmediato
tag
una expresión que consiste en tags y/o valores inmediatos separados por operadores
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
SUGERENCIA No hay límite en la longitud de una expresión.
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:
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.
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.
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
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:
Operador Descripción Óptimo
+ sumar DINT, REAL
- restar/cambiar signo DINT, REAL
* multiplicar DINT, REAL
/ dividir DINT, REAL
** exponente (x a la y) DINT, REAL
ABS valor absoluto DINT, REAL
ACS arco coseno REAL
AND Y a nivel de bits DINT
ASN arco seno REAL
ATN arco tangente REAL
COS coseno REAL
DEG radianes a grados DINT, REAL
FRD BCD a entero DINT
LN logaritmo natural REAL
LOG logaritmo base 10 REAL
MOD módulo de división DINT, REAL
NOT complemento a nivel de bits
DINT
OR O a nivel de bits DINT
RAD grados a radianes DINT, REAL
SIN seno REAL
SQR raíz cuadrada DINT, REAL
TAN tangente REAL
TOD entero a BCD DINT
TRN truncar DINT, REAL
XOR O exclusivo a nivel de bits
DINT
Operador Descripción Óptimo
Para operadores que operan en:
Use este formato: Ejemplos:
un operando operador(operando) ABS(tag_a)
dos operandos operando_a operador operando_b
• tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f / tag_g)
250 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cálculo/matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Capítulo 6
Determine el orden de operación
Las operaciones que usted escribe en la expresión son realizadas por la instrucción en un orden prescrito, que no es necesariamente el orden en que usted las escribe. Usted puede anular el orden de operación agrupando términos dentro de paréntesis, forzando a la instrucción para que realice una operación dentro del paréntesis antes de otras operaciones.
Las operaciones de igual orden se realizan de izquierda a derecha.
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
Texto estructurado
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:
Source A SINT
INT
DINT
REAL
inmediato
tag
valor que se suma a Source B
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Source B SINT
INT
DINT
REAL
inmediato
tag
valor que se suma a Source A
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando: Tipo: Formato: Descripción:
ADD tag FBD_MATH estructura estructura ADD
dest := sourceA + sourceB;
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
Descripción: La instrucción ADD suma Source A con Source B y coloca el resultado en Destination.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Parámetro de entrada:
Tipo de datos: Descripción:
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
SourceA REAL valor que se suma a SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB REAL valor que se suma a SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida:
Tipo de datos: Descripción:
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
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
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
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.
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
Texto estructurado
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:
Source A SINT
INT
DINT
REAL
inmediato
tag
valor del cual restar Source B
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Source B SINT
INT
DINT
REAL
inmediato
tag
valor que se resta de Source A
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando: Tipo: Formato: Descripción:
SUB tag FBD_MATH estructura estructura SUB
dest := sourceA - sourceB;
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
Descripción: La instrucción SUB resta Source B de Source A y coloca el resultado en Destination.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Parámetro de entrada:
Tipo de datos: Descripción:
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
SourceA REAL Valor del cual restar SourceB
Válido = cualquier valor con punto flotante (coma flotante)
SourceB REAL Valor que se resta de SourceA
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida:
Tipo de datos: Descripción:
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
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
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
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 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
Texto estructurado
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
Source A SINT
INT
DINT
REAL
inmediato
tag
valor del multiplicando
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Source B SINT
INT
DINT
REAL
inmediato
tag
valor del multiplicador
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
MUL tag FBD_MATH estructura estructura MUL
dest := sourceA * sourceB;
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
Descripción: La instrucción MUL multiplica Source A por Source B y coloca el resultado en Destination.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source A REAL Valor del multiplicando
Válido = cualquier valor con punto flotante (coma flotante)
Source B REAL Valor del multiplicador
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
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
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
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.
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
Texto estructurado
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.
Operando Tipo Formato Descripción
Source A SINT
INT
DINT
REAL
inmediato
tag
valor del dividendo
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Source B SINT
INT
DINT
REAL
inmediato
tag
valor del divisor
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
dest := sourceA / sourceB;
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
Estructura FBD_MATH
Descripción: Si el destino no es un tipo REAL, la instrucción maneja la porción fraccionaria del resultado de la siguiente manera:
Operando Tipo Formato Descripción
DIV tag FBD_MATH estructura estructura DIV
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source A REAL Valor del dividendo.
Válido = cualquier valor con punto flotante (coma flotante)
Source B REAL Valor del divisor.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
Si Source A Entonces la porción fraccionaria del resultado
Ejemplo
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:
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
Lógica de escalera de relés
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 enteros (SINT, INT o DINT)
Source A
por lo menos un operando es REAL SINT, INT o DINT positivo -1
negativo 0
REAL positivo 1.$ (infinito positivo)
negativo -1.$ (infinito negativo)
Se produce un fallo menor si
Tipo de fallo Código de fallo
el divisor es cero 4 4
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
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
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.
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
Texto estructurado
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
Source A SINT
INT
DINT
REAL
inmediato
tag
valor del dividendo
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Source B SINT
INT
DINT
REAL
inmediato
tag
valor del divisor
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
MOD tag FBD_MATH estructura estructura MOD
dest := sourceA MOD sourceB;
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
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:
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.
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source A REAL Valor del dividendo.
Válido = cualquier valor con punto flotante (coma flotante)
Source B REAL Valor del divisor.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
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 enteros (SINT, INT o DINT)
Source A
por lo menos un operando es REAL SINT, INT o DINT positivo -1
negativo 0
REAL positivo 1.$ (infinito positivo)
negativo -1.$ (infinito negativo)
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
Lógica de escalera de relés
Bloque de funciones
Se produce un fallo menor si
Tipo de fallo Código de fallo
el divisor es cero 4 4
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.
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
Texto estructurado
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.
Operando Tipo Formato Descripción
Source SINT
INT
DINT
REAL
inmediato
tag
halla la raíz cuadrada de este valor
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
dest := SQRT(source);
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
Estructura FBD_MATH_ADVANCED
Descripción: Si Destination no es REAL, la instrucción maneja la porción fraccionaria del resultado de la siguiente manera:
Si Source es negativo, la instrucción toma el valor absoluto de Source antes de calcular la raíz cuadrada.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Operando Tipo Formato Descripción
SQR tag FBD_MATH_ADVANCED estructura estructura SQR
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Halla la raíz cuadrada de este valor.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
Si Source Entonces la porción fraccionaria del resultado
Ejemplo
no es REAL se trunca Source DINT 3
Destination DINT 1
es REAL se redondea Source REAL 3.0
Destination DINT 2
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
Bloque de funciones
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 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.
Destination Source=
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
Texto estructurado
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
Source SINT
INT
DINT
REAL
inmediato
tag
valor cuyo signo se cambia
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
NEG tag FBD_MATH_ADVANCED estructura estructura NEG
dest := -source;
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
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
la opción predeterminada es establecido
Source REAL Valor cuyo signo se cambia.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
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.
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
Texto estructurado
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
Source SINT
INT
DINT
REAL
inmediato
tag
valor del cual hallar el valor absoluto
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
ABS tag FBD_MATH_ADVANCED estructura estructura ABS
dest := ABS(source);
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
Descripción: La instrucción ABS toma el valor absoluto de Source y coloca el resultado en Destination.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Valor del cual hallar el valor absoluto.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
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.
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
texto estructurado(1)
283
copiar una parte específica de un número entero
MVM lógica de escalera de relés 285
copiar una parte específica de un número entero en el bloque de funciones
MVMT texto estructurado
bloque de funciones
288
mover bits dentro de un número entero o entre números enteros
BTD lógica de escalera de relés 292
mover bits dentro de un número entero o entre números enteros en el bloque de funciones
BTDT texto estructurado
bloque de funciones
295
borrar un valor CLR texto estructurado(1)
lógica de escalera de relés
298
reacomodar los bytes de un tag INT, DINT o REAL
SWPB lógica de escalera de relés
texto estructurado
300
(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
&(1)
lógica de escalera de relés
texto estructurado(2)
bloque de funciones
304
operación O a nivel de bits Bitwise OR lógica de escalera de relés
texto estructurado(2)
bloque de funciones
307
operación O exclusivo a nivel de bits Bitwise XOR lógica de escalera de relés
texto estructurado(2)
bloque de funciones
310
operación NOT a nivel de bits Bitwise NOT lógica de escalera de relés
texto estructurado(2)
bloque de funciones
314
Y lógico hasta ocho entradas booleanas. Boolean AND (BAND) texto estructurado(2)
bloque de funciones
317
O lógico hasta ocho entradas booleanas. Boolean OR (BOR) texto estructurado(2)
bloque de funciones
320
realizar un O exclusivo en dos entradas booleanas.
Boolean Exclusive OR (BXOR)
texto estructurado(2)
bloque de funciones
323
complementar una entrada booleana. Boolean NOT (BNOT) texto estructurado(2)
bloque de funciones
326
(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
Texto estructurado
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Operando: Tipo: Formato Descripción:
Source SINT
INT
DINT
REAL
inmediato
tag
valor a mover (copiar)
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
dest := source;
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:
Ejemplo: Mueva los datos en value_1 a value_2.
Lógica de escalera de relés
Texto estructurado
value_2 := value _1;
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.
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
Texto estructurado
Esta instrucción está disponible en texto estructurado como MVMT. O puede combinar lógica a nivel de bits dentro de una expresión y asignar el resultado al destino. Esta expresión realiza un movimiento con máscara en Source.
Consulte Apéndice C, Programación de texto estructurado para obtener información sobre la sintaxis de expresiones y asignaciones en texto estructurado.
Descripción: La instrucción MVM usa una máscara para pasar o bloquear bits de datos de Source. Un número “1” en la máscara significa que se pasa el bit de datos. Un número “0” en la máscara significa que se bloquea el bit de datos.
Si mezcla diferentes tipos de datos enteros, la instrucción llena con ceros los bits superiores de los tipos de datos enteros menores para que tengan el mismo tamaño que el tipo de datos mayor.
Operando Tipo Formato Descripción
Source SINT
INT
DINT
inmediato
tag
valor a mover
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Mask SINT
INT
DINT
inmediato
tag
qué bits se bloquean o se pasan
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Destination SINT
INT
DINT
tag tag para almacenar el resultado
dest := (Dest AND NOT (Mask))OR (Source AND Mask);
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.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
condiciones de fallo ninguna
Ejecución:
Prefijo: Descripción
16# hexadecimal
por ejemplo; 16#0F0F
8# octal
por ejemplo; 8#16
2# binario
por ejemplo; 2#00110011
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).
Lógica de escalera de relés
Texto estructurado
value_b := (value_b AND NOT (mask_2)) OR(value_a AND mask_2);
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.
Publicación 1756-RM003K-ES-P – Julio 2008 287
Capítulo 7 Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Movimiento enmascarado con receptor (MVMT)
La instrucción MVMT primero copia Target en Destination. Seguidamente la instrucción compara Source enmascarado con Destination y hace los cambios requeridos en Destination. Target y Source permanecen sin ningún cambio.
Esta instrucción está disponible en lógica de escalera de relés como MVM; vea la página 285.
Operandos:
Texto estructurado
Bloque de funciones
Estructura FBD_MASKED_MOVE
Variable Tipo Formato Descripción:
MVMT tag FBD_MASKED_MOVE estructura estructura MVMT
Operando Tipo Formato Descripción
MVMT tag FBD_MASKED_MOVE estructura estructura MVMT
MVMT(MVMT_tag);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Bloque de funciones
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado
Ningún efecto. La instrucción se ejecuta.
Source DINT Valor de entrada para mover el destino con base en el valor de la máscara.
Válido = cualquier número entero
Mask DINT Máscara de bits para mover de Source a Dest. Todos los bits establecidos en uno hacen que los bits correspondientes se muevan de Source a Dest. Todos los bits que se establecen en cero hacen que los bits correspondientes no se muevan de Source a Dest.
Válido = cualquier número entero
Target DINT Valor de entrada para mover a Dest antes de mover los bits de Source a través de la máscara.
Válido = cualquier número entero
288 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capítulo 7
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.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
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.
Prefijo Descripción
16# hexadecimal
por ejemplo; 16#0F0F
8# octal
por ejemplo; 8#16
2# binario
por ejemplo; 2#00110011
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:
Ejemplo: 1. Copie el receptor a Dest.
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).
Texto estructurado
MVMT_01.Source := value _1;
MVMT_01.Mask := mask1;
MVMT_01.Target := target;
MVMT(MVMT_01);
value_masked := MVMT_01.Dest;
Condición Acción de bloque de funciones Acción de texto estructurado
preescán Ninguna. Ninguna.
primer escán de instrucción Ninguna. Ninguna.
primera ejecución de instrucción
Ninguna. Ninguna.
EnableIn se borra EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece La instrucción se ejecuta.
EnableOut se establece.
EnableIn siempre se establece.
La instrucción se ejecuta.
post-escán Ninguna. Ninguna.
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
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.
290 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capítulo 7
Bloque de funciones
Publicación 1756-RM003K-ES-P – Julio 2008 291
Capítulo 7 Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Distribuir campo de bits (BTD)
La instrucción BTD copia los bits especificados de Source, desplaza los bits a la posición apropiada y escribe los bits en Destination.
Esta instrucción está disponible en texto estructurado y en bloque de funciones como BTDT; vea la página 295.
Operandos:
Lógica de escalera de relés
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.
Operando Tipo Formato Descripción
Source SINT
INT
DINT
inmediato
tag
el tag que contiene los bits a mover
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Source bit DINT inmediato
(0-31 DINT)(0-15 INT)(0-7 SINT)
número del bit (número del bit más bajo) desde donde empezar el movimiento
debe estar dentro del rango válido para el tipo de datos de Source
Destination SINT
INT
DINT
tag tag a donde mover los bits
Destination bit
DINT inmediato
(0-31 DINT)(0-15 INT)(0-7 SINT)
número del bit (número del bit más bajo) desde donde empezar a copiar bits desde Source
debe estar dentro del rango válido para el tipo de datos del destino
Length DINT inmediato (1-32)
número de bits que se van a mover
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Ejemplo 1: Una vez habilitada, la instrucción BTD transfiere los bits dentro de value_1.
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.
value_1 antes de lainstrucción BTD
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
value_1 después de lainstrucción BTD
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
Las casillas sombreadas muestran los bits que cambiaron en value_1.
bit de origenbit de destino
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.
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
value_2 antes de lainstrucción BTD
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
value_2 después de lainstrucción BTD
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
Las casillas sombreadas muestran los bits que cambiaron en value_2.
bit de origen
bit de destino
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 con receptor (BTDT)
La instrucción BTDT primero copia Target en Destination. Seguidamente, la instrucción BTD copia los bits especificados desde Source, desplaza los bits a la posición apropiada y escribe los bits en Destination. Target y Source no cambian.
Esta instrucción está disponible en lógica de escalera de relés como BTD; vea la página 292.
Operandos:
Texto estructurado
Bloque de funciones
Estructura FBD_BIT_FIELD_DISTRIBUTE
Variable Tipo Formato Descripción
BTDT tag FBD_BIT_FIELD_DISTRIBUTE estructura estructura BTDT
Operando Tipo Formato Descripción
BTDT tag FBD_BIT_FIELD_DISTRIBUTE estructura estructura BTDT
BTDT(BTDT_tag);
Parámetro de entrada
Tipo de datos Descripción:
EnableIn BOOL Bloque de funciones:
Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
Si se establece, la instrucción se ejecuta.
La opción predeterminada es establecido.
Texto estructurado:
Ningún efecto. La instrucción se ejecuta.
Source DINT El valor de entrada que contiene los bits que se transfieren a Destination.
Válido = cualquier número entero
SourceBit DINT La posición de bit en Source (el número de bit más bajo desde el cual se inicia la transferencia).
Válido = 0-31
Length DINT Número de bits que se van a mover
Válido = 1-32
DestBit DINT La posición de bit en Dest (el número de bit más bajo al cual se comienza a copiar bits).
Válido = 0-31
Publicación 1756-RM003K-ES-P – Julio 2008 295
Capítulo 7 Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
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 estadoaritmético: Los indicadores de estado aritmético son afectados
Condiciones de fallo: ninguna
Ejecución:
Target DINT Valor de entrada que se transfiere a Dest antes de transferir los bits de Source.
Válido = cualquier número entero
Parámetro de salida:
Tipo de datos: Descripción:
EnableOut BOOL La instrucción produjo un resultado válido.
Dest DINT Resultado de la operación del traslado de bits. Se establecen indicadores de estado aritmético para esta salida.
Parámetro de entrada
Tipo de datos Descripción:
Condición Acción de bloque de funciones Acción de texto estructurado
preescán Ninguna. Ninguna.
primer escán de instrucción Ninguna. Ninguna.
primera ejecución de instrucción
Ninguna. Ninguna.
EnableIn se borra EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se actualizan.
n. a.
EnableIn se establece La instrucción se ejecuta.
EnableOut se establece.
EnableIn siempre 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.
2. SourceBit y Length especifican qué bits en Source se copian en Destination a partir de DestBit. Source y Target no cambian.
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
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
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
SourceBitDestBit
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
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Operando Tipo Formato Descripción
Destination SINT
INT
DINT
REAL
tag tag que se borra
dest := 0;
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
Texto estructurado
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).
Operando Tipo Formato Introduzca
Source INT
DINT
REAL
tag el tag que contiene los bytes que desea reacomodar
Modo de orden Si Source es un
Y usted desea cambiar los bytes a este patrón (cada letra representa un byte diferente)
Entonces seleccione
INT n. a. cualquiera de las opciones
DINT
REAL
ABCD ⇒ DCBA REVERSE (o introduzca 0)
ABCD ⇒ CDAB WORD (o introduzca 1)
ABCD ⇒ BADC HIGH/LOW (o introduzca 2)
Destination INT
DINT
REAL
tag tag para almacenar los bytes en el nuevo orden
Si Source es un
Entonces el destino debe ser un
INT INT
DINT
DINT DINT
REAL REAL
SWPB(Source,OrderMode,Dest);
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
42969
42968
B A Nombre del tag Valor Estilo Tipo
bar_code[0] AB ASCII INT
A B
lector de códigos de barras
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción reacomoda los bytes especificados. La instrucción reacomoda los bytes especificados.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008 301
Capítulo 7 Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Ejemplo 1: Las tres instrucciones SWPB reacomodan los bytes de DINT_1 según un modo de orden diferente. El estilo de visualización es ASCII, y cada carácter representa un byte. Cada instrucción coloca los bytes, en el nuevo orden, en un diferente Destination.
Lógica de escalera de relés
Texto estructurado
SWPB(DINT_1,REVERSE,DINT_1_reverse);
SWPB(DINT_1,WORD,DINT_1_swap_word);
SWPB(DINT_1,HIGHLOW,DINT_1_swap_high_low);
Ejemplo 2: El siguiente ejemplo invierte los bytes en cada elemento de una matriz. Para un proyecto RSLogix 5000 que contiene este ejemplo, abra la carpeta RSLogix 5000\Projects\Samples, archivo Swap_Bytes_in_Array.ACD.
1. Inicialice los tags. La instrucción SIZE encuentra el número de elementos en array y almacena ese valor en array_length. Una instrucción subsiguiente usa este valor para determinar cuándo actuó la rutina en todos los elementos de la matriz.
2. Invierta los bytes en un elemento de array.
• La instrucción SWPB invierte los bytes del número de elemento indicado por el valor de index. Por ejemplo, cuando index es igual a 0, la instrucción SWPB actúa sobre array[0].
• La instrucción ADD incrementa index. La próxima vez que se ejecute la instrucción, la instrucción SWPB actúa sobre el siguiente elemento en array.
3. Determine cuándo la instrucción SWPB actuó sobre todos los elementos en la matriz.
• Si index es menor que el número de elementos en la matriz (array_length), continúe con el siguiente elemento en la matriz.
• Si index es igual a array_length, significa que SWPB actuó sobre todos los elementos en la matriz.
302 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capítulo 7
Lógica de escalera de relés
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;
Inicialice los tags.
Invierta los bytes.
Determine si la instrucción SWPB actuó sobre todos los elementos en la matriz.
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
Texto estructurado
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
Source A SINT
INT
DINT
inmediato
tag
valor con que se realiza la operación Y con Source B
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Source B SINT
INT
DINT
inmediato
tag
valor con que se a realiza la operación AND con Source A
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Destination SINT
INT
DINT
tag almacena el resultado
Operando Tipo Formato Descripción
AND tag FBD_LOGICAL estructura estructura AND
dest := sourceA AND sourceB
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
Descripción: Una vez habilitada, la instrucción evalúa la operación AND:
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
SourceA DINT Valor con que se realiza la operación AND con SourceB
Válido = cualquier número entero
SourceB DINT Valor con que se realiza la operación AND con SourceA
Válido = cualquier número entero
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest DINT Resultado de la instrucción. Se establecen indicadores de estado aritmético para esta salida.
Si el bit en Source A es
Y el bit en Source B es
El bit en Destination es
0 0 0
0 1 0
1 0 0
1 1 1
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
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.
Lógica de escalera de relés
Texto estructurado
value_result_and := value_1 AND value_2;
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.
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
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
Texto estructurado
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
Source A SINT
INT
DINT
inmediato
tag
valor con que se realiza la operación O con Source B
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Source B SINT
INT
DINT
inmediato
tag
valor con que se realiza la operación O con Source A
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Destination SINT
INT
DINT
tag almacena el resultado
Operando Tipo Formato Descripción
OR tag FBD_LOGICAL estructura estructura OR
dest := sourceA OR sourceB
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
Descripción: Una vez habilitada, la instrucción evalúa la operación O:
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
SourceA DINT Valor con que se realiza la operación O con SourceB
Válido = cualquier número entero
SourceB DINT Valor con que se realiza la operación O con SourceA
Válido = cualquier número entero
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest DINT Resultado de la instrucción. Se establecen indicadores de estado aritmético para esta salida.
Si el bit en Source A es
Y el bit en Source B es
El bit en Destination es
0 0 0
0 1 1
1 0 1
1 1 1
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
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.
Lógica de escalera de relés
Texto estructurado
value_result_or := value_1 OR value_2;
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.
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
Publicación 1756-RM003K-ES-P – Julio 2008 309
Capítulo 7 Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
O exclusivo a nivel de bits (XOR)
La instrucción XOR realiza una operación O exclusivo a nivel de bits usando los bits en Source A y Source B, y coloca el resultado en Destination.
Para realizar una operación lógica XO, vea la página 323.
Operandos:
Lógica de escalera de relés
Texto estructurado
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
Source A SINT
INT
DINT
inmediato
tag
valor con que se realiza la operación XOR con Source B
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Source B SINT
INT
DINT
inmediato
tag
valor con que se realiza la operación XOR con Source A
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Destination SINT
INT
DINT
tag almacena el resultado
Operando Tipo Formato Descripción
XOR tag FBD_LOGICAL estructura estructura XOR
dest := sourceA XOR sourceB
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
Descripción: Una vez habilitada, la instrucción evalúa la función XOR:
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
SourceA DINT Valor con que se realiza la operación XOR con SourceB
Válido = cualquier número entero
SourceB DINT Valor con que se realiza la operación XOR con SourceA
Válido = cualquier número entero
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest DINT Resultado de la instrucción. Se establecen indicadores de estado aritmético para esta salida.
Si el bit en Source A es
Y el bit en Source B es
El bit en Destination es
0 0 0
0 1 1
1 0 1
1 1 0
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
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.
Lógica de escalera de relés
Texto estructurado
value_result_xor := value_1 XOR value_2;
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.
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
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
Texto estructurado
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
Source SINT
INT
DINT
inmediato
tag
valor sobre el cual se aplicará la operación NO
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Destination SINT
INT
DINT
tag almacena el resultado
Operando Tipo Formato Descripción
NOT tag FBD_LOGICAL estructura estructura NOT
dest := NOT source
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
Descripción: Una vez habilitada, la instrucción evalúa la operación NO:
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
la opción predeterminada es establecido
Source DINT Valor sobre el cual se aplicará la operación NO
Válido = cualquier número entero
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest DINT Resultado de la instrucción. Se establecen indicadores de estado aritmético para esta salida.
Si el bit en Source es:
El bit en Destination es:
0 1
1 0
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
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.
Lógica de escalera de relés
Texto estructurado
value_result_not := NOT value_1;
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.
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
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
Use AND o el signo “&” como operador dentro de una expresión. Los operandos deben ser valores BOOL o expresiones que resultan en valores BOOL. Esta expresión evalúa si tanto operandA como operandB están establecidos (verdaderos).
Consulte el Apéndice C, para obtener información sobre la sintaxis de las expresiones en texto estructurado.
Bloque de funciones
Estructura FBD_BOOLEAN_AND
Operando Tipo Formato Descripción
BAND tag FBD_BOOLEAN_AND estructura estructura BAND
IF operandA AND operandB THEN
<statement>;
END_IF;
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
In1 BOOL Primera entrada booleana.
La opción predeterminada es establecido.
In2 BOOL Segunda entrada booleana.
La opción predeterminada es establecido.
In3 BOOL Tercera entrada booleana.
La opción predeterminada es establecido.
In4 BOOL Cuarta entrada booleana.
La opción predeterminada es establecido.
In5 BOOL Quinta entrada booleana.
La opción predeterminada es establecido.
In6 BOOL Sexta entrada booleana.
La opción predeterminada es establecido.
In7 BOOL Séptima entrada booleana.
La opción predeterminada es establecido.
Publicación 1756-RM003K-ES-P – Julio 2008 317
Capítulo 7 Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Ejemplo 1: Este ejemplo efectúa la operación Y en bool_in1 y bool_in2 y coloca el resultado en value_result_and.
Texto estructurado
value_result_and := bool_in1 AND bool_in2;
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.
Parámetro de entrada
Tipo de datos Descripció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.
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
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
Use OR como operador dentro de una expresión. Los operandos deben ser valores BOOLEANOS o expresiones que resultan en valores BOOLEANOS. Esta expresión evalúa si operandA u operandB, o ambos están establecidos (verdaderos).
Consulte el Apéndice C, para obtener información sobre la sintaxis de las expresiones en texto estructurado.
Bloque de funciones
Estructura FBD_BOOLEAN_OR
Operando Tipo Formato Descripción
BOR tag FBD_BOOLEAN_OR estructura estructura BOR
IF operandA OR operandB THEN
<statement>;
END_IF;
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
In1 BOOL Primera entrada booleana.
La opción predeterminada es borrado.
In2 BOOL Segunda entrada booleana.
La opción predeterminada es borrado.
In3 BOOL Tercera entrada booleana.
La opción predeterminada es borrado.
In4 BOOL Cuarta entrada booleana.
La opción predeterminada es borrado.
In5 BOOL Quinta entrada booleana.
La opción predeterminada es borrado.
In6 BOOL Sexta entrada booleana.
La opción predeterminada es borrado.
In7 BOOL Séptima entrada booleana.
La opción predeterminada es borrado.
320 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de movimiento/lógicas (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Capítulo 7
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Ejemplo 1: Este ejemplo efectúa la operación O en bool_in1 y bool_in2 y coloca el resultado en value_result_or.
Texto estructurado
value_result_or := bool_in1 OR bool_in2;
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.
Parámetro de entrada
Tipo de datos Descripció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.
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
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 (BXOR)
La instrucción BXOR realiza una operación O exclusivo de dos entradas booleanas.
Para realizar un XOR a nivel de bits, vea la página 310.
Operandos:
Texto estructurado
Use XOR como operador dentro de una expresión. Los operandos deben ser valores BOOLEANOS o expresiones que resultan en valores BOOLEANOS. Esta expresión evalúa si sólo operandA o sólo operandB, está establecido (verdadero).
Consulte el Apéndice C, para obtener información sobre la sintaxis de las expresiones en texto estructurado.
Bloque de funciones
Estructura FBD_BOOLEAN_XOR
Descripción: La instrucción BXOR realiza una operación O exclusivo de dos entradas booleanas.
Out = In1 XOR In2
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Operando Tipo Formato Descripción
BXOR tag FBD_BOOLEAN_XOR estructura estructura BXOR
IF operandA XOR operandB THEN
<statement>;
END_IF;
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
In1 BOOL Primera entrada booleana.
La opción predeterminada es borrado.
In2 BOOL Segunda entrada booleana.
La opción predeterminada es borrado.
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL Habilitación de salida.
Out BOOL La salida de la instrucción.
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:
Ejemplo 1: Este ejemplo realiza una operación O exclusivo en bool_in1 y bool_in2 y coloca el resultado en value_result_xor.
Texto estructurado
value_result_xor := bool_in1 XOR bool_in2;
Bloque de funciones
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.
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
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
Use NOT como operador dentro de una expresión. El operando debe ser un valor BOOL o expresiones que resultan en valores BOOL. Esta expresión evalúa si el operando está borrado (falso).
Consulte el Apéndice C, Programación de texto estructurado para obtener información sobre la sintaxis de las expresiones en texto estructurado.
Bloque de funciones
Estructura FBD_BOOLEAN_NOT
Descripción: La instrucción BNOT complementa una entrada booleana.
Out = NOT In
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Operando Tipo Formato Descripción
BNOT tag FBD_BOOLEAN_NOT estructura estructura BNOT
IF NOT operand THEN
<statement>;
END_IF;
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
In BOOL Entrada a la instrucción
La opción predeterminada es establecido.
Parámetro de salida Tipo de datos Descripción:
EnableOut BOOL Habilitación de salida.
Out BOOL La salida de la instrucción.
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:
Ejemplo 1: Este ejemplo complementa bool_in1 y coloca el resultado en value_result_not.
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;
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.
Si BOOL_IN1 es Entonces VALUE_RESULT_NOT es
0 1
1 0
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.
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.
Si desea Use esta instrucción Disponible en estos lenguajes Vea la página
realizar operaciones aritméticas, lógicas, de desplazamiento y de funciones en valores en matrices
FAL lógica de escalera de relés
texto estructurado(1)
335
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
texto estructurado
356
copiar el contenido de una matriz en otra matriz sin interrupción
CPS lógica de escalera de relés
texto estructurado
356
llenar una matriz con datos específicos FLL lógica de escalera de relés
texto estructurado(1)
362
calcular el promedio de una matriz de valores AVE lógica de escalera de relés
texto estructurado(1)
366
organizar una dimensión de datos de matriz en orden ascendente
SRT lógica de escalera de relés
texto estructurado
371
calcular la desviación estándar de una matriz de valores
STD lógica de escalera de relés
texto estructurado(1)
376
encontrar el tamaño de una dimensión de una matriz
SIZE lógica de escalera de relés
texto estructurado
381
(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.
329Publicación 1756-RM003K-ES-P – Julio 2008 329
Capítulo 8 Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Selección del modo de operación
Para las instrucciones FAL y FSC, el modo indica al controlador cómo distribuir la operación de la matriz.
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.
Si desea Seleccione este modo
realizar una operación en todos los elementos especificados de una matriz antes de continuar con la próxima instrucción
Todos
distribuir operaciones de matriz entre un número de escanes
introduzca el número de elementos sobre los que se debe operar por escán (1-2147483647)
Numérico
manipular un elemento de la matriz cada vez que la condición de entrada de renglón cambia de falsa a verdadera
Incremental
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.
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.
un escán
operación concluida
borra los bits de estado y borra el valor .POS
condición de entrada de renglón
bit .EN
bit .DN
escán de la instrucción
40010no se realiza la ejecució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.
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.
IMPORTANTE Evite usar los resultados de una instrucción de archivo que funciona en modo numérico hasta que esté establecido el bit .DN.
un escán
16641
segundo escán
siguiente escán
múltiples escanes múltiples escanes
condición de entrada de renglón
bit .EN
bit .DN
escán de la instrucción
borra los bits de estado y borra el valor .POS
borra los bits de estado y borra el valor .POS
el renglón es verdadero al concluir el renglón es falso al concluir
40013operación concluida operación concluida
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.
16643
Habilitación de 1ª instrucciónHabilitación de 2ª instrucciónHabilitación de 3ª instrucción
Habilitación de última instrucción
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.
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.
un escán
condición de entrada de renglón
bit .EN
bit .DN
escán de la instrucción
operaciónconcluida
borra los bits de estado y borra el valor .POS
40014
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 archivo (FAL)
La instrucción FAL realiza operaciones de copia, aritméticas, lógicas y funciones en los datos almacenados en una matriz.
Operandos:
Lógica de escalera de relés
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.
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
INT
DINT
REAL
tag tag para almacenar el resultado
Expression SINT
INT
DINT
REAL
inmediato
tag
una expresión que consiste en tags y/o valores inmediatos separados por operadores
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
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
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
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.
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.
examine el bit .DN
Bit .DN = 0
bit .DN = 1
condición de entrada de renglón es falsa
la condición de salida de renglón se establece como falsa
fin
el bit .EN se borrael bit .ER se borrael bit .DN se borrael valor .POS se borra
modo INCno
sí
modo ALL no
sí
el bit .EN se borra
.POS = .POS + 1
modo numérico
se borra el bit interno
.LEN < 0 o .POS < 0
sí
no
fallo mayor
.POS = .POS - 1
.POS = 0sí
no
el bit .DN se establece el bit .EN se establece
.POS < .LENno
sí
.LEN > modo
sí
no
modo = .LEN
.LEN = 0sí
no
el bit .DN se establece el bit .EN se borra
página 341
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
la condición de salida de renglón se establece como verdadera
fin
examinar el bit .DN
bit .DN = 0
bit .DN = 1
.LEN = 0no
sí
modo INCno
sí
modo ALL
no
sí
loop_count = loop_count - 1
loop_count < 0no
sí
.POS = .POS + 1
evaluar la expresión
.POS = .POS + 1
examinar S:Vno
sí
el bit .ER se establece
.POS = .LENno
sí
el bit .DN se establece el bit .EN se establece .POS = .POS + 1
examinar el bit .ER
Bit .ER = 0
bit .ER = 1
el bit .DN se establece el bit .EN se establece modo
INCmodo ALL
modo numérico
común
página 341
página 339 página 340
.LEN < 0 o
.POS < 0sí
no
fallo mayor
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
examinar el bit .EN
bit .EN = 1
bit .EN = 0
.POS = .POS + 1
.POS ≥ .LENsí
no
el bit .EN se estableceloop_count = 1.POS = .POS - 1
examinar elbit interno
bit = 1
bit = 0
el bit interno se establece
modo INC
común
.POS = .POS - 1
.POS = 0sí
no
el bit .DN se establece el bit .EN se establece
la condición de salida de renglón se establece como verdadera
fin
página 338
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
examinar el bit .EN
bit .EN = 0
bit .EN = 1
.POS = .POS + 1
.POS ≥ .LENsí
no
loop_count = .LEN - .POS.POS = .POS - 1
examinar elbit interno
bit = 1
bit = 0
el bit .EN se establece
modo ALL
común
.POS = .POS - 1
.POS = 0sí
no
el bit .DN se establece el bit .EN se establece
la condición de salida de renglón se establece como verdadera
finpágina 338
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
post-escán La condición de salida de renglón se establece como falsa.
Condición Acción de lógica de escalera de relés
examinar el bit .EN
bit .EN = 1
bit .EN = 0
.POS = .POS + 1
.POS ≥ .LENsí
no
examinar elbit interno
bit = 1
bit = 0
el bit interno se establece
modo numérico
común
.POS = .POS - 1
.POS = 0sí
no
el bit .DN se establece el bit .EN se establece
la condición de salida de renglón se establece como verdadera
fin
.LEN ≥ modo
sí
nomodo = .LEN
el bit .EN se estableceloop_count = .LEN - .POS.POS = .POS - 1
modo ≥loop_count
no
el bit .EN se estableceloop_count = modo
sí
página 338
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.
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.
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.
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.
copia de matriz a matriz
Expresión:array_2[control_2.pos]
Destino:array_1[control_2.pos]
copia de elemento a matriz
Expresión:value_1
Destino:array_2[0,control_2.pos]
copia de matriz a elemento
Expresión:array_1[control_1.pos]
Destino:value_1
operación aritmética: (elemento + elemento) a matriz
Expresión:value_1 + value_2
Destino: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.
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.
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: (matriz/matriz) a matriz
Expresión:array_2[control_2.pos] / array_3[control_2.pos]
Destino:array_1[control_2.pos]
operación aritmética: (matriz + elemento) a matriz
Expresión:array_1[control_1.pos] + value_1
Destino:array_3[control_1.pos]
operación aritmética: (elemento + matriz) a elemento
Expresión:value_1 + array_1[control_1.pos]
Destino: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.
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.
operación aritmética: (matriz ∗ matriz) a elemento
Expresión:array_1[control_1.pos] * array_3[control_1.pos]
Destino:value_1
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
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:
Operador Descripción Óptimo
+ sumar DINT, REAL
- restar/cambiar signo DINT, REAL
* multiplicar DINT, REAL
/ dividir DINT, REAL
** exponente (x a la y) DINT, REAL
ABS valor absoluto DINT, REAL
ACS arco coseno REAL
AND Y a nivel de bits DINT
ASN arco seno REAL
ATN arco tangente REAL
COS coseno REAL
DEG radianes a grados DINT, REAL
FRD BCD a entero DINT
LN logaritmo natural REAL
LOG logaritmo base 10 REAL
MOD módulo de división DINT, REAL
NOT complemento a nivel de bits
DINT
OR O a nivel de bits DINT
RAD grados a radianes DINT, REAL
SIN seno REAL
SQR raíz cuadrada DINT, REAL
TAN tangente REAL
TOD entero a BCD DINT
TRN truncar DINT, REAL
XOR O exclusivo a nivel de bits
DINT
Operador Descripción Óptimo
Para operadores que operan en
Use este formato Ejemplos
un operando operador(operando) ABS(tag_a)
dos operandos operando_a operador operando_b • tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f / tag_g)
Publicación 1756-RM003K-ES-P – Julio 2008 345
Capítulo 8 Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Determine el orden de operación
Las operaciones que usted escribe en la expresión son realizadas por la instrucción en un orden prescrito, que no es necesariamente el orden en que usted las escribe. Usted puede cambiar el orden de operación agrupando términos dentro de paréntesis, forzando la instrucción para que realice una operación dentro del paréntesis antes de otras operaciones.
Las operaciones de igual orden se realizan de izquierda a derecha.
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 de archivos (FSC)
La instrucción FSC compara los valores en una matriz, elemento por elemento.
Operandos:
Lógica de escalera de relés
Estructura CONTROL
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
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
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.
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.
examinar el bit .DN
bit .DN = 0
bit .DN = 1
condición de entrada de renglón es falsa
la condición de salida de renglón se establece como falsa
fin
el bit .EN se borrael bit .ER se borrael bit .DN se borrael valor .POS se borra
modo INCno
sí
modo ALLno
sí
el bit .EN se borra
.POS = .POS + 1
modo numérico
se borra el bit interno
.LEN < 0 o .POS < 0
sí
no
fallo mayor
.POS = .POS - 1
.POS = 0sí
no
el bit .DN se establece el bit .EN se establece
.POS < .LENno
sí
.LEN > modo
sí
no
modo = .LEN
.LEN = 0sí
no
el bit .DN se establece el bit .EN se borra
página 341
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
post-escán La condición de salida de renglón se establece como falsa.
Condición Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
la condición de salida de renglón se establece como verdadera
fin
examinar el bit .IN
bit .DN = 0
bit .DN = 1
.LEN = 0no
sí
modo INCno
sí
modo ALL
no
sí
loop_count = loop_count - 1
loop_count < 0no
sí
.POS = .POS + 1
evalúe la comparación
.POS = .POS + 1
coincidenciano
sí
el bit .EN se estableceel bit .FD se estableceel bit .IN se establece
.POS = .LENno
sí
el bit .DN se establece el bit .EN se establece .POS = .POS + 1
examinar el bit .ER
bit .ER = 0
bit .ER = 1
el bit .DN se establece el bit .EN se establece modo
INCmodo ALL
modo numérico
común
página 341
página 339 página 340
.LEN < 0 o
.POS < 0sí
no
fallo mayor
examinar el bit .DN
bit .DN = 1
bit .IN = 0
bit .DN = 0
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.
00000000000000000000000000000000 0
00000000000000000000000000000000 1
00000000000000000000000000000000 2
00000000000000000000000000000000 3
11111111111111110000000000000000 4
11111111111111111111111111111111 5
11111111111111111111111111111111 6
11111111111111111111111111111111 7
11111111111111111111111111111111 8
11111111111111111111111111111111 9
array_1 array_2
La instrucción FSC determina que estos elementos son diferentes. La instrucción establece los bits .FD e .IN. El valor .POS (4) indica la posición de los elementos que son diferentes. Para continuar comparando el resto de la matriz, borre el bit .IN.
control_3.pos
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000001111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
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
La instrucción FSC determina que este elemento de matriz es igual a MySearchKey. La instrucción establece los bits .FD e .IN. El valor .POS (4) indica la posición de los elementos que son iguales. Para continuar comparando el resto de la matriz, borre el bit .IN.
control_3.pos
00000000000000000000000000000000 0
00000000000000000000000000000000 1
00000000000000000000000000000000 2
00000000000000000000000000000000 3
11111111111111110000000000000000 4
11111111111111111111111111111111 5
11111111111111111111111111111111 6
11111111111111111111111111111111 7
11111111111111111111111111111111 8
11111111111111111111111111111111 9
11111111111111110000000000000000
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.
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.
SAM
AFG 0
BEH 1
HUO 2
SAK 3
SAM 4
FQG 5
CLE 6
CAK 7
DET 8
BWG 9
code code_table
La instrucción FSC determina que este elemento de la matriz es igual a code. La instrucción establece los bits .FD e .IN. El valor .POS (4) indica la posición de los elementos que son iguales. Para continuar comparando el resto de la matriz, borre el bit .IN.
code_table_search.POS
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
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:
Operador Descripción Óptimo
+ sumar DINT, REAL
- restar/cambiar signo DINT, REAL
* multiplicar DINT, REAL
/ dividir DINT, REAL
= igual que DINT, REAL
< menor que DINT, REAL
<= menor o igual que DINT, REAL
> mayor que DINT, REAL
>= mayor o igual que DINT, REAL
<> diferente de DINT, REAL
** exponente (x a la y) DINT, REAL
ABS valor absoluto DINT, REAL
ACS arco coseno REAL
AND Y a nivel de bits DINT
ASN arco seno REAL
ATN arco tangente REAL
COS coseno REAL
DEG radianes a grados DINT, REAL
FRD BCD a entero DINT
LN logaritmo natural REAL
LOG logaritmo base 10 REAL
MOD módulo de división DINT, REAL
NOT complemento a nivel de bits
DINT
OR O a nivel de bits DINT
RAD grados a radianes DINT, REAL
SIN seno REAL
SQR raíz cuadrada DINT, REAL
TAN tangente REAL
TOD entero a BCD DINT
TRN truncar DINT, REAL
XOR O exclusivo a nivel de bits
DINT
Operador Descripción Óptimo
Para operadores que operan en
Use este formato Ejemplos
un operando operador(operando) ABS(tag_a)
dos operandos operando_a operador operando_b • tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD (tag_f / tag_g)
Publicación 1756-RM003K-ES-P – Julio 2008 353
Capítulo 8 Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Determine el orden de operación
Las operaciones que usted escribe en la expresión son realizadas por la instrucción en un orden prescrito, que no es necesariamente el orden en que usted las escribe. Usted puede anular el orden de operación agrupando términos dentro de paréntesis, forzando a la instrucción para que realice una operación dentro del paréntesis antes de otras operaciones.
Las operaciones de igual orden se realizan de izquierda a derecha.
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
• 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.
Operador Descripción
= igual que
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
<> diferente de
Caracteres ASCII Códigos hexadecimales
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
mayor
menor
AB < B
a > B
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) Copiar archivo síncrono (CPS)
Las instrucciones COP y CPS copian el o los valores de Source en Destination. Source no cambia.
Operandos:
Lógica de escalera de relés
Texto estructurado
Los operandos son iguales que los de las instrucciones COP y CPS de lógica de escalera de relés.
Operando Tipo Formato Descripción
Source SINT
INT
DINT
REAL
cadena
estructura
tag elemento inicial que se copia
Importante: Los operandos Source y Destination deben ser del mismo tipo; de lo contrario, pueden ocurrir resultados inesperados.
Destination SINT
INT
DINT
REAL
cadena
estructura
tag el elemento inicial que va a ser sobrescrito por Source
Importante: Los operandos Source y Destination deben ser del mismo tipo; de lo contrario, pueden ocurrir resultados inesperados.
Length DINT inmediato
tag
número de elementos de destino que se copian
COP(Source,Dest,Length);
CPS(Source,Dest,Length);
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:
El número de bytes copiados es:
Conteo de bytes = Length ∗ (número de bytes en el tipo de datos de Destination)
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Si Source o Destination es Y usted desea Entonces seleccione
Notas
• tag producido
• tag consumido
• datos de E/S
• datos que otra tarea puede sobrescribir
evitar que los datos cambien durante la operación de copia
CPS • Las tareas que intentan interrumpir una instrucción CPS se suspenden hasta que haya finalizado la instrucción.
• Para calcular el tiempo de ejecución de la instrucción CPS, consulte el documento ControlLogix System User Manual, publicación 1756-UM001.
permitir que los datos cambien durante la operación de copia
COP
ninguno de los anteriores COP
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.
Length es demasiado grande si es mayor que el número total de elementos en la matriz Destination.
Si el tag es Entonces
tipo de datos definido por el usuario
Si Length es demasiado grande, la instrucción escribe más allá del final de la matriz a otros miembros del tag. Se detiene al final del tag. No se genera un fallo mayor.
NO es un tipo de datos definido por el usuario
Si Length es demasiado grande, la instrucción se detiene al final de la matriz. No se genera un fallo mayor.
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 falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
ejecución de la instrucción
la condición de salida de renglón se establece como verdadera
fin
end_address = start_address + (Length ∗ número de bytes en un elemento de destino)
sí
no
end_address > fin de matriz de
destino
end_address = fin de matriz de destino
source_address = Source
sí
no
destination_address = end_address
copiar datos en source_address a destination_address
source_address = source_address + 1
destination_address = destination_address + 1
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.
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;
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]
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
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.
Operando Tipo Formato: Descripción
Source SINT
INT
DINT
REAL
inmediato
tag
elemento que se copia
Importante: Los operandos Source y Destination deben ser del mismo tipo; de lo contrario. pueden ocurrir resultados inesperados
Destination SINT
INT
DINT
REAL
estructura
tag elemento inicial que va a ser sobrescrito por Source
Importante: Los operandos Source y Destination deben ser del mismo tipo; de lo contrario, pueden ocurrir resultados inesperados
El método preferido para inicializar una estructura es mediante la instrucción COP.
Length DINT inmediato número de elementos que se llenan
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)
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
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.
Length es demasiado grande si es mayor que el número total de elementos en la matriz Destination.
Si el tag es Entonces
tipo de datos definido por el usuario
Si la longitud es demasiado grande, la instrucción escribe más allá del final de la matriz a otros miembros del tag. Se detiene al final del tag. No se genera un fallo mayor.
NO es un tipo de datos definido por el usuario
Si Length es demasiado grande, la instrucción se detiene al final de la matriz. No se genera un fallo mayor.
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)
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.
post-escán 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
fin
end_address = start_address + (Length ∗ número de bytes en un elemento de destino)
sí
no
end_address > fin de una matriz de
destino
end_address = fin de una matriz de destino
source_address = Source
sí
no
destination_address = end_address
copiar los datos en source_address a destination _address
destination_address = destination_address + 1
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
Texto estructurado
dest_1 := value _1;
Tipo de datos de Source (value_1)
Valor de Source (value_1)
Tipo de datos de Destination (dest_1)
Valor de Destination (dest_1) después de FLL
SINT 16#80 (-128) DINT 16#FFFF FF80 (-128)
DINT 16#1234 5678 SINT 16#78
SINT 16#01 REAL 1.0
REAL 2.0 INT 16#0002
SINT 16#01 TIMER 16#0101 0101
16#0101 0101
16#0101 0101
INT 16#0001 TIMER 16#0001 0001
16#0001 0001
16#0001 0001
DINT 16#0000 0001 TIMER 16#0000 0001
16#0000 0001
16#0000 0001
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
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;
Operando Tipo Formato Descripción
Array SINT
INT
DINT
REAL
tag de matriz
hallar el promedio de los valores en esta matriz
especificar el primer elemento del grupo de elementos que se va a promediar
no usar CONTROL.POS en el subíndice
Dimension to vary
DINT inmediato
(0, 1, 2)
qué dimensión usar
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
INT
DINT
REAL
tag resultado de la operación
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
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
Descripción: La instrucción AVE calcula el promedio de un conjunto de valores.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
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.
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.
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
.POS < 0 o .LEN < 0 4 21
Dimension to vary no existe en la matriz especificada
4 20
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 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.
examinar el bit .DNbit .DN = 0
bit .DN = 1
condición de entrada de renglón es falsa
la condición de salida de renglón se establece como falsa
fin
el bit .EN se borrael bit .ER se borrael bit .DN se borrael valor .POS se borra
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].
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;
dimensión 1
dimensión 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
AVE 19 14 9 4+ + +4
------------------------------------- 464------ 11.5= = =
dint_ave = 12
subíndices
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].
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;
dimensión 1
dimensión 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
AVE 5 4 3 2 1+ + + +5
---------------------------------------- 155------ 3= = =
subíndices
dint_ave = 3
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 (SRT)
La instrucción SRT clasifica un conjunto de valores en una dimensión (Dim to vary) de la matriz en orden ascendente.
Operandos:
Lógica de escalera de relés
Texto estructurado
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
Operando Tipo Formato Descripción
Array SINT
INT
DINT
REAL
tag de matriz
matriz que se clasifica
especificar el primer elemento del grupo de elementos que se clasifica
no use CONTROL.POS en el subíndice
Dimension to vary
DINT inmediato
(0, 1, 2)
qué dimensión usar
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
SRT(Array,Dimtovary,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.
É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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
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.
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
.POS < 0 o .LEN < 0 4 21
La dimensión que se va a variar no existe para la matriz especificada
4 20
La instrucción intenta obtener acceso a los datos fuera de los límites de la matriz.
4 20
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 .DN se borra.
El bit .ER se borra.
La condición de salida de renglón se establece como falsa.
El bit .EN se borra.
El bit .DN se borra.
El bit .ER se borra.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción clasifica los elementos especificados en la matriz en orden ascendente.
La instrucción clasifica los elementos especificados en la matriz en orden ascendente.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
examinar el bit .DN bit .DN = 0
bit .DN = 1
la condición de salida de renglón se establece como falsa
fin
el bit .EN se borrael bit .ER se borrael bit .DN se borrael valor .POS se borra
condición de entrada de renglón es 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].
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);
dimensión 1
dimensión 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
dimensión 1
dimensión 0
0 20 19 3 17 16
15 14 8 12 11
10 9 13 7 6
5 4 18 2 1
1
2
3
0 1 2 3 4
Antes Después
subíndices
subíndices
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].
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);
dimensión 1
dimensión 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
dimensión 1
dimensión 0
0 20 19 18 17 16
15 14 13 12 11
6 7 8 9 10
5 4 3 2 1
1
2
3
0 1 2 3 4
Antes Después
subíndices
subíndices
Publicación 1756-RM003K-ES-P – Julio 2008 375
Capítulo 8 Instrucciones de matriz (archivo)/misceláneas (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Desviación estándar de archivo (STD)
La instrucción STD calcula la desviación estándar de un conjunto de valores en una dimensión de la matriz y almacena el resultado en Destination.
Operandos:
Lógica de escalera de relés
Estructura CONTROL
Operando Tipo Formato Descripción
Array SINT
INT
DINT
REAL
tag de matriz
hallar la desviación estándar de los valores en esta matriz
especificar el primer elemento del grupo de elementos que se usan para calcular la desviación estándar
no use CONTROL.POS en el subíndice
Un tag SINT o INT se convierte en un valor DINT mediante extensión de signo.
Dimension to vary
DINT inmediato
(0, 1, 2)
qué dimensión usar
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
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:
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 =
X start i+( ) AVE–⟨ ⟩2[ ]
i 1=
N
∑⎝ ⎠⎜ ⎟⎜ ⎟⎛ ⎞
N 1–( )--------------------------------------------------------------------
Desviación estándar =
x start i+( )
i 1=
N
∑⎝ ⎠⎜ ⎟⎜ ⎟⎛ ⎞
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
.POS < 0 o .LEN < 0 4 21
La dimensión que se va a variar no existe en la matriz especificada
4 20
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 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.
examinar el bit .DN bit .DN = 0
bit .DN = 1
condición de entrada de renglón es falsa
la condición de salida de renglón se establece como falsa
fin
el bit .EN se borrael bit .ER se borrael bit .DN se borrael valor .POS se borra
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].
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));
dimensión 1
dimensión 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
STD 16 8.5–⟨ ⟩2 11 8.5–⟨ ⟩2 6 8.5–⟨ ⟩2 1 8.5–⟨ ⟩2+ + +
4 1–⟨ ⟩--------------------------------------------------------------------------------------------------------------------------- 6.454972= =
AVE 16 11 6 1+ + +4
------------------------------------- 344------ 8.5= = =
subíndices
real_std = 6.454972
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].
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));
dimensión 1
dimensión 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
STD 20 18–⟨ ⟩2 19 18–⟨ ⟩2 18 18–⟨ ⟩2 17 18–⟨ ⟩2 16 18–⟨ ⟩2+ + + +
5 1–⟨ ⟩------------------------------------------------------------------------------------------------------------------------------------------------------------ 1.581139= =
AVE 20 19 18 17 16+ + + +5
------------------------------------------------------- 905------ 18= = =
subíndices
real_std = 1.581139
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 (SIZE)
La instrucción SIZE encuentra el tamaño de una dimensión de una matriz.
Operandos:
Lógica de escalera de relés
Texto estructurado
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 estadoaritmético: no afectados
Operando Tipo Formato Descripción
Source SINT
INT
DINT
REAL
estructura
cadena
tag de matriz
la matriz en la cual la instrucción realizará la operación
Dimension to Vary
DINT inmediato (0, 1, 2)
dimensión que se va a usar:
Size SINT
INT
DINT
REAL
tag tag para guardar el número de elementos en la dimensión especificada de la matriz.
Para el tamaño de Introduzca
primera dimensión 0
segunda dimensión 1
tercera dimensión 2
SIZE(Source,Dimtovary,Size);
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:
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
Texto estructurado
SIZE(array_a,0,array_a_size);
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n .a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción encuentra el tamaño de una dimensión.
La instrucción encuentra el tamaño de una dimensión.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
Size in ElementsSource array_a[0]
255Dim. To Vary 0Size array_a_size
10
SIZETamaño en elementosSource array_a[0]
255Dim. to Vary 0Tamaño array_a_size
10
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
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
Texto estructurado
SIZE(strings_a[0].DATA[0],0,data_size_a);
Size in ElementsSource string_1.DATA[0]
'$00'Dim. To Vary 0Size string_1_size
82
SIZETamaño en elementosSource string_1.DATA[0]
’$00’Dim. to Vary 0Tamaño string_1_size
82
SIZE
Size in ElementsSource strings_a[0].DATA[0]
'$00'Dim. To Vary 0Size data_size_a
24
SIZETamaño en elementosSource strings_a[0].DATA[0]
’$00’Dim. to Vary 0Tamaño data_size_a
24
SIZE
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.
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.
Si desea Use esta instrucción Disponible en estos lenguajes Vea la página
Cargar bits, desplazar bits y descargar bits de una matriz de bits, bit por bit.
BSL lógica de escalera de relés 386
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 invertido.
LFL lógica de escalera de relés 406
LFU lógica de escalera de relés 412
385Publicación 1756-RM003K-ES-P – Julio 2008 385
Capítulo 9 Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Desplazamiento de bits a la izquierda (BSL)
La instrucción BSL desplaza los bits especificados dentro de la matriz una posición hacia la izquierda.
Operandos:
Lógica de escalera de relés
Estructura CONTROL
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Operando Tipo Formato Descripción
Array DINT tag de matriz
matriz que se modifica
especificar el primer elemento del grupo de elementos
no usar CONTROL.POS en el subíndice
Control CONTROL tag estructura de control para la operación
Source bit BOOL tag bit que se desplaza
Length DINT inmediato número de bits en la matriz que se desplazan
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.
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.
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)
post-escán La condición de salida de renglón se establece como falsa.
Condición: Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
examinar el bit .EN bit .EN = 1
bit .EN = 0
fin
el bit .DN se establece
desplazar matriz izquierda una posición a la izquierda
el bit .EN se establece
la condición de salida de renglón se establece como verdaderael bit .DN se establece
.POS = .LEN
.LEN = 0 sí
no
.LEN < 0 sí
no
bit de origenbit .UL matriz
examinar el bit de origen
.source bit = 1
.source bit = 0
el bit .UL permanece establecido.
el bit .UL se establece.
el bit .ER se establece
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.
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.
9 8 7 6 5 4 3 2 1 0
array_dint[0]antes del
desplazamiento
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
9 8 7 6 5 4 3 2 1 0
array_dint[0]después del
desplazamiento
0 1 1 1 1 0 0 0 0 1
1
input_10
bit .UL
estos bits se desplazan a la izquierda
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
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
input_1estos bits se desplazan a la izquierda
0
bit .UL
estos bits se desplazan a la izquierda
Publicación 1756-RM003K-ES-P – Julio 2008 389
Capítulo 9 Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
Desplazamiento de bits a la derecha (BSR)
La instrucción BSR desplaza los bits especificados dentro de la matriz una posición hacia la derecha.
Operandos:
Lógica de escalera de relés
Estructura CONTROL
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Operando Tipo Formato Descripción
Array DINT tag de matriz
matriz que se modifica
especificar el elemento a partir del cual se inicia el desplazamiento
no usar CONTROL.POS en el subíndice
Control CONTROL tag estructura de control para la operación
Source bit BOOL tag bit que se desplaza
Length DINT inmediato número de bits en la matriz que se desplazan
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.
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.
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
post-escán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
examinar el bit .EN bit .EN = 1
bit .EN = 0
fin
el bit .DN se establece
desplazar matriz izquierda una posición hacia la izquierda
el bit .EN se establece
la condición de salida de renglón se establece como verdaderael bit .DN se establece
.POS = .LEN
.LEN = 0 sí
no
.LEN < 0 sí
no
bit de origen
bit .ULmatriz
examinar el bit de origen
.source bit = 1
.source bit = 0
el bit .UL permanece establecido.
el bit .UL se establece
el bit .ER se establece
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.
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.
9 8 7 6 5 4 3 2 1 0
array_dint[0]antes del
desplazamiento
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
9 8 7 6 5 4 3 2 1 0
array_dint[0]después del
desplazamiento
1 0 0 1 1 1 1 0 0 0
estos bits se desplazan a la derecha
0
bit .UL1
input_1
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
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
estos bits se desplazan a la derecha 0
bit .UL
estos bits se desplazan a la derecha1
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
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.
Operando Tipo Formato Descripción
Source SINT
INT
DINT
REAL
cadena
estructura
inmediato
tag
datos que se almacenan en la FIFO
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
INT
DINT
REAL
cadena
estructura
tag de matriz
FIFO que se modifica
especificar el primer elemento de la FIFO
no usar CONTROL.POS en el subíndice
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
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
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
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.
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.
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
(elemento inicial + .POS) > tamaño de la matriz FIFO
4 20
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
fin
se establece el bit .EN para evitar una carga falsa cuando se inicia el escán
la condición de salida de renglón se establece como falsa
.LEN < 0 sí
no
.POS < 0 sí
el bit .EM se borra
el bit .DN se borra
no
.POS = 0 sí
no
el bit .EM está establecido
.POS ≥ .LEN sí
no
el bit .DN está establecido
el bit .EM está establecido
el bit .DN está establecido
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
fin
el bit .EN se borra
la condición de salida de renglón se establece como falsa
.LEN < 0 sí
no
.POS < 0 sí
el bit .EM se borra
el bit .DN se borra
no
.POS = 0 sí
no
el bit .EM está establecido
.POS ≥ .LEN sí
no
el bit .DN está establecido
el bit .EM está establecido
el bit .DN está establecido
Publicación 1756-RM003K-ES-P – Julio 2008 397
Capítulo 9 Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
post-escán La condición de salida de renglón se establece como falsa.
Condición Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
fin
la condición de salida de renglón se establece como verdadera
examinar el bit .EN
.EN = 0
.EN = 1
el bit .EN se establece .LEN < 0sí
no
.POS < 0sí
no
el bit .EM está establecido
el bit .DN está establecido
el bit .EM se borra
el bit .DN se borra
.POS = .POS + 1
.POS ≥ .LENsí
no
el bit .DN se establece
.POS o .LEN > tamaño de
la matriz
sí
no
fallo mayor
.POS > .LENsí
no
.POS = .POS - 1
FIFO[.POS - 1] = origen
.LEN < 0sí
no
.POS < 0sí
no
el bit .EM se borra
el bit .DN se borra
.POS = 0sí
no
el bit .EM está establecido
.POS ≥ .LENsí
no
el bit .DN se establece
el bit .EM está establecido
el bit .DN está establecido
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 FIFO
después de la carga 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
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.
Operando Tipo Formato Descripción
FIFO SINT
INT
DINT
REAL
cadena
estructura
tag de matriz
FIFO que se modifica
especificar el primer elemento de la FIFO
no usar CONTROL.POS en el subíndice
Destination SINT
INT
DINT
REAL
cadena
estructura
tag valor que sale de la FIFO
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
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
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
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.
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.
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
fin
se establece el bit .EU para evitar una descarga falsa cuando se inicia el escán
la condición de salida de renglón se establece como falsa
.LEN < 0 sí
no
.POS < 0 sí
el bit .EM se borra
el bit .DN se borra
no
.POS = 0 sí
no
el bit .EM está establecido
.POS ≥ .LEN sí
no
el bit .DN está establecido
el bit .EM está establecido
el bit .DN está establecido
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
fin
el bit .EU se borra
la condición de salida de renglón se establece como falsa
.LEN < 0 sí
no
.POS < 0 sí
el bit .EM se borra
el bit .DN se borra
no
.POS = 0 sí
no
el bit .EM está establecido
.POS ≥ .LEN sí
no
el bit .DN está establecido
el bit .EM está establecido
el bit .DN está establecido
Publicación 1756-RM003K-ES-P – Julio 2008 403
Capítulo 9 Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
post-escán La condición de salida de renglón se establece como falsa.
Condición Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
fin
examinar el bit .EU
.EU = 0
.EU = 1
el bit .EU está establecido
.LEN < 0sí
no
.POS < 0sí
no
el bit .EM está establecido
el bit .DN está establecido
el bit .EM se borra
el bit .DN se borra
.LEN > tamaño de la
matriz
sí
no
fallo mayor
.POS ≤ 1sí
no
el bit .EM está establecido
.LEN < 0sí
no
.POS < 0sí
no
el bit .EM se borra
el bit .DN se borra
.POS = 0sí
no
el bit .EM está establecido
.POS ≥ .LENsí
no
el bit .DN se establece
el bit .EM está establecido
el bit .DN está establecido
.POS < 1sí
no
Destination = 0
.POS = .POS -1
Destination = FIFO[0]
i = 1
FIFO[i - 1] = FIFO[i]
i = i +1
i < .LENsí
nola condición de salida de renglón se establece como verdadera
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 FIFO
después de la descarga 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
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.
Operando Tipo Formato Descripción
Source SINT
INT
DINT
REAL
cadena
estructura
inmediato
tag
datos que se almacenan en la LIFO
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
INT
DINT
REAL
cadena
estructura
tag de matriz
LIFO que se modifica
especificar el primer elemento de la LIFO
no usar CONTROL.POS en el subíndice
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
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
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
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.
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.
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
(elemento inicial + .POS) > tamaño de la matriz LIFO
4 20
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
fin
se establece el bit .EN para evitar una carga falsa cuando se inicia el escán
la condición de salida de renglón se establece como falsa
.LEN < 0 sí
no
.POS < 0 sí
el bit .EM se borra
el bit .DN se borra
no
.POS = 0 sí
no
el bit .EM está establecido
.POS ≥ .LEN sí
no
el bit .DN está establecido
el bit .EM está establecido
el bit .DN está establecido
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
fin
el bit .EN se borra
la condición de salida de renglón se establece como falsa
.LEN < 0 sí
no
.POS < 0 sí
el bit .EM se borra
el bit .DN se borra
no
.POS = 0 sí
no
el bit .EM está establecido
.POS ≥ .LEN sí
no
el bit .DN está establecido
el bit .EM está establecido
el bit .DN está establecido
Publicación 1756-RM003K-ES-P – Julio 2008 409
Capítulo 9 Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
post-escán La condición de salida de renglón se establece como falsa.
Condición: Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
fin
la condición de salida de renglón se establece como verdadera
examinar el bit .EN
.EN = 0
.EN = 1
el bit .EN se establece
.LEN < 0sí
no
.POS < 0sí
no
el bit .EM está establecido
el bit .DN está establecido
el bit .EM se borra
el bit .DN se borra
.POS = .POS + 1
.POS ≥ .LENsí
no
el bit .DN se establece
.POS o .LEN > tamaño de
la matriz
sí
no
fallo mayor
.POS > .LENsí
no
.POS = .POS - 1
LIFO[.POS - 1] = origen
.LEN < 0sí
no
.POS < 0sí
no
el bit .EM se borra
el bit .DN se borra
.POS = 0sí
no
el bit .EM está establecido
.POS ≥ .LENsí
no
el bit .DN se establece
el bit .EM está establecido
el bit .DN está establecido
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 LIFO
después de la carga 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
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.
Operando Tipo Formato Descripción
LIFO SINT
INT
DINT
REAL
cadena
estructura
tag de matriz
LIFO que se modifica
especificar el primer elemento de la LIFO
no usar CONTROL.POS en el subíndice
Destination SINT
INT
DINT
REAL
cadena
estructura
tag valor que sale de la LIFO
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
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
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
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.
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.
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
fin
se establece el bit .EU para evitar una descarga falsa cuando se inicia el escán.
la condición de salida de renglón se establece como falsa
.LEN < 0 sí
no
.POS < 0 sí
el bit .EM se borra
el bit .DN se borra
no
.POS = 0 sí
no
el bit .EM está establecido
.POS ≥ .LEN sí
no
el bit .DN está establecido
el bit .EM está establecido
el bit .DN está establecido
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
fin
el bit .EU se borra
la condición de salida de renglón se establece como falsa
.LEN < 0 sí
no
.POS < 0 sí
el bit .EM se borra
el bit .DN se borra
no
.POS = 0 sí
no
el bit .EM está establecido
.POS ≥ .LEN sí
no
el bit .DN está establecido
el bit .EM está establecido
el bit .DN está establecido
Publicación 1756-RM003K-ES-P – Julio 2008 415
Capítulo 9 Instrucciones de matriz (archivo)/desplazamiento (BSL, BSR, FFL, FFU, LFL, LFU)
post-escán La condición de salida de renglón se establece como falsa.
Condición Acción de lógica de escalera de relés:
condición de entrada de renglón es verdadera
fin
la condición de salida de renglón se establece como verdadera
examinar el bit .EU
.EU = 0
.EU = 1
el bit .EU está establecido
.LEN < 0sí
no
.POS < 0sí
no
el bit .EM está establecido
el bit .DN está establecido
el bit .EM se borra
el bit .DN se borra
.LEN > tamaño de la
matriz
sí
no
fallo mayor
.POS ≤ 1sí
no
el bit .EM está establecido
.LEN < 0sí
no
.POS < 0sí
no
el bit .EM se borra
el bit .DN se borra
.POS = 0sí
no
el bit .EM está establecido
.POS ≥ .LENsí
no
el bit .DN se establece
el bit .EM está establecido
el bit .DN está establecido
.POS < 1sí
no
.POS > .LENsí
no
.POS = .LEN
Destination = 0
Destination = LIFO[control.POS]
LIFO[control.POS) = 0
.POS = .POS -1
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 LIFO
después de la descarga 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.
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.
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 siguiente paso
SQO lógica de escalera de relés 424
Cargar condiciones de referencia en matrices de secuenciador
SQL lógica de escalera de relés 428
419Publicación 1756-RM003K-ES-P – Julio 2008 419
Capítulo 10 Instrucciones de secuenciador (SQI, SQO, SQL)
Secuenciador de entrada (SQI)
La instrucción SQI detecta cuándo ha concluido un paso en una pareja de instrucciones de secuencia SQO/SQI.
Operandos:
Lógica de escalera de relés
Estructura CONTROL
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
INT
DINT
tag
inmediato
qué bits se bloquean o se pasan
Un tag SINT o INT se convierte en un valor DINT mediante la extensión con signo.
Source SINT
INT
DINT
tag datos de entrada en la matriz de secuenciador
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
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Prefijo: Descripción
16# hexadecimal
por ejemplo; 16#0F0F
8# octal
por ejemplo; 8#16
2# binario
por ejemplo; 2#00110011
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.
post-escán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
.LEN ≤ 0
.POS < 0o
.POS > .LEN
no
sí
fin
el bit .ER se establece
la condición de salida de renglón se establece como falsa
Source enmascarada =
Array[.POS] enmascarada
sí
el bit .ER se borra
no
la condición de salida de renglón se establece como verdadera
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.
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.
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
Publicación 1756-RM003K-ES-P – Julio 2008 423
Capítulo 10 Instrucciones de secuenciador (SQI, SQO, SQL)
Secuenciador de salida (SQO)
La instrucción SQO establece condiciones de salida para el siguiente paso de una pareja de instrucciones SQO/SQI de secuencia.
Operandos:
Lógica de escalera de relés
Estructura CONTROL
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
INT
DINT
tag
inmediato
qué bits se bloquean o se pasan
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
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Prefijo Descripción
16# hexadecimal
por ejemplo; 16#0F0F
8# octal
por ejemplo; 8#16
2# binario
por ejemplo; 2#00110011
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)
post-escán La condición de salida de renglón se establece como falsa.
Condición Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
.LEN ≤ 0 o .POS < 0
no
sí
el bit .DN se establece
.POS = .LENno
sí
examine el bit .EN
.EN = 0
.EN = 1
el bit .EN se establece
el bit .ER se borra
el bit .DN se establece
.POS ≥ .LENsí
no
.POS = .POS + 1
el valor .POS retorna al
valor inicial
sí
no
el bit .ER se establece
fin
la condición de salida de renglón se establece como verdadera
el bit .DN se establece.POS = .LENsí
no
Destination = (Destination AND (NOT(Mask))) OR (Array[control.POS] AND Mask)
.POS > .LENno
sí
.POS = 1
ir a error
error
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.
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 SQOSi 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 SQOCada 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.
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
Publicación 1756-RM003K-ES-P – Julio 2008 427
Capítulo 10 Instrucciones de secuenciador (SQI, SQO, SQL)
Carga de secuenciador (SQL)
La instrucción SQL carga condiciones de referencia en una matriz de secuenciador.
Operandos:
Lógica de escalera de relés
Estructura CONTROL
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
INT
DINT
tag
inmediato
datos de entrada que se van a cargar en la matriz de secuenciador
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
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
Ejecución:
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.
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
Longitud > tamaño de la matriz 4 20
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)
post-escán La condición de salida de renglón se establece como falsa.
Condición Acción de lógica de escalera de relés
condición de entrada de renglón es verdadera
.LEN ≤ 0 o .POS < 0
no
sí
el bit .DN se establece
.POS = .LENno
sí
examine el bit .EN
.EN = 0
.EN = 1
el bit .EN se establece
el bit .ER se borra
el bit .DN se establece
.POS ≥ .LENsí
no
.POS = .POS + 1
el valor .POS retorna al
valor inicial
sí
no
el bit .ER se establece
fin
la condición de salida de renglón se establece como verdadera
el bit .DN se establece.POS = .LENsí
no
.POS > .LENno
sí
.POS = 1
ir a error
error
.LEN > tamaño de la
matriz
sí
no
Array[control.POS] = Source
fallo mayor
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 necesita ejecutarse.
JMPLBL
lógica de escalera de relés 434
Saltar a una rutina separada, pasar datos a la rutina, ejecutar la rutina y retornar resultados.
JSRSBRRET
lógica de escalera de relés 436
bloque de funciones
texto estructurado
Saltar a una rutina externa (controlador SoftLogix5800 solamente)
JXR lógica de escalera de relés 447
Marcar un fin temporal que detiene la ejecución de la rutina.
TND lógica de escalera de relés 450
texto estructurado
Inhabilitar todos los renglones en una sección de lógica.
MCR lógica de escalera de relés 452
Inhabilitar tareas de usuario. UID lógica de escalera de relés 454
texto estructurado
Habilitar tareas de usuario. UIE lógica de escalera de relés 454
texto estructurado
Inhabilitar un renglón. AFI lógica de escalera de relés 456
Insertar un indicador de posición en la lógica. NOP lógica de escalera de relés 457
Finalizar una transición para un diagrama de función secuencial
EOT lógica de escalera de relés 458
texto estructurado
Poner en pausa un diagrama de función secuencial
SFP lógica de escalera de relés 460
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)Etiqueta (LBL)
Las instrucciones JMP y LBL saltan porciones de la lógica de escalera.
Operandos:
Lógica de escalera de relés
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.
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 (_)
Operando Tipo Formato Descripción
instrucción JMP
Nombre de etiqueta
nombre de etiqueta
introduzca un nombre para la instrucción LBL asociada
instrucción LBL
Nombre de etiqueta
nombre de etiqueta
la ejecución salta a la instrucción LBL con el nombre de etiqueta al cual se hizo referencia
ATENCIÓN La lógica saltada no se escanea. Coloque la lógica crítica fuera de la zona saltada.
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 estadoaritmético: no afectados
Condiciones de fallo:
Ejecución:
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.
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
la etiqueta no existe 4 42
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.
[otros renglones de código]
Publicación 1756-RM003K-ES-P – Julio 2008 435
Capítulo 11 Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Salto a subrutina (JSR)Subrutina (SBR) Retorno (RET)
La instrucción JSR salta la ejecución a una rutina diferente. Las instrucciones SBR y RET son instrucciones opcionales que intercambian datos con la instrucción JSR.
Operandos de JSR:
Lógica de escalera de relés
Operando Tipo Formato Descripción
Nombre de la rutina
ROUTINE nombre rutina a ejecutar (es decir, subrutina)
Parámetro de entrada
BOOL
SINT
INT
DINT
REAL
estructura
inmediato
tag
tag de matriz
datos de esta rutina que desea copiar a un tag en la subrutina
• Los parámetros de entrada son opcionales.
• Introduzca múltiples parámetros de entrada, si es necesario.
Parámetro de retorno
BOOL
SINT
INT
DINT
REAL
estructura
tag
tag de matriz
el tag en esta rutina al cual desea copiar un resultado de la subrutina
• Los parámetros de retorno son opcionales.
• Introduzca múltiples parámetros de retorno, si es necesario.
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
Bloque de funciones
Los operandos son iguales a los de la instrucción JSR de lógica de escalera de relés.
Operando Tipo Formato Descripción
Nombre de la rutina
ROUTINE nombre rutina a ejecutar (es decir, subrutina)
Conteo de entradas
SINT
INT
DINT
REAL
inmediato número de parámetros de entrada
Parámetro de entrada
BOOL
SINT
INT
DINT
REAL
estructura
inmediato
tag
tag de matriz
datos de esta rutina que desea copiar a un tag en la subrutina
• Los parámetros de entrada son opcionales.
• Introduzca múltiples parámetros de entrada, si es necesario.
Parámetro de retorno
BOOL
SINT
INT
DINT
REAL
estructura
tag
tag de matriz
el tag en esta rutina al cual desea copiar un resultado de la subrutina
• Los parámetros de retorno son opcionales.
• Introduzca múltiples parámetros de retorno, si es necesario.
JSR(RoutineName,InputCount,InputPar,ReturnPar);
Parámetros de entrada
Parámetros de retorno
❇ ❇
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)
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
Texto estructurado
Los operandos son iguales a los de la instrucción SBR de lógica de escalera de relés.
Bloque de funciones
Los operandos son iguales a los de la instrucción SBR de lógica de escalera de relés.
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.
Operando Tipo Formato Descripción
Parámetro de entrada
BOOL
SINT
INT
DINT
REAL
estructura
tag
tag de matriz
el tag en esta rutina al cual desea copiar el parámetro de entrada correspondiente proveniente de la instrucción JSR.
SBR(InputPar);
Parámetros
❇
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
Texto estructurado
Los operandos son iguales a los de la instrucción RET de lógica de escalera de relés.
Bloque de funciones
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.
Operando Tipo Formato Descripción
Parámetro de retorno
BOOL
SINT
INT
DINT
REAL
estructura
inmediato
tag
tag de matriz
datos de esta rutina que usted desea copiar al parámetro de retorno correspondiente en la instrucción JSR.
RET(ReturnPar);
Parámetros
❇
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:
El diagrama siguiente ilustra cómo funcionan las instrucciones.
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).
Rutina que origina la llamada
JSR
SBR
RET
RET
JSR
1. Si desea copiar datos a un tag en la subrutina, introduzca un parámetro de entrada.
2. Si desea copiar un resultado de la subrutina a un tag en esta rutina, introduzca un parámetro de retorno.
3. Introduzca la cantidad necesaria de parámetros de entrada y retorno.
SBR
1. Si la instrucción JSR tiene un parámetro de entrada, introduzca una instrucción SBR.
2. Coloque la instrucción SBR como la primera instrucción en la rutina.
3. Para cada parámetro de entrada en la instrucción JSR, introduzca el tag en el cual desea copiar los datos.
42974
Subrutina
RET
1. Si la instrucción JSR tiene un parámetro de retorno, introduzca una instrucción RET.
2. Coloque la instrucción RET como la última instrucción en la rutina.
3. Para cada parámetro de retorno en la instrucción JSR, introduzca un parámetro de retorno para enviar la instrucción JSR.
4. En una rutina de lógica de escalera, coloque instrucciones RET adicionales para salir de la subrutina con base en diferentes condiciones de entrada, si es necesario. (Las rutinas de bloque de funciones sólo permiten una instrucción RET).
440 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT) Capítulo 11
No hay restricciones, excepto la memoria del controlador, para el número de rutinas anidadas que pueden existir ni para el número de parámetros que se pasan o retornan.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
Lógica de escalera de relés y texto estructurado
rutina principal
nivel 1
subrutina action_1
nivel 3
subrutina action_3
nivel 2
subrutina action_2
JSRJSR
JSR
SBRSBRSBR
RETRETRET
action_1
action_2 action_3
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 el usuario
0 o proporcionado por 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
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán El controlador ejecuta todas las subrutinas independientemente de la condición del renglón. Para asegurar que todos los renglones en la subrutina estén previamente escaneados, el controlador ignora las instrucciones RET. (es decir, las instrucciones RET no salen de la subrutina).
• En las versiones 6.x y anteriores, se pasan los parámetros de entrada y retorno.
• En las versiones 7.x y posteriores, no se pasan los parámetros de entrada y retorno.
Si existen llamadas recursivas a la misma subrutina, la subrutina es preescaneada sólo la primera vez. Si existen múltiples llamadas (no recursivas) a la misma subrutina, la subrutina es preescaneada cada vez.
La condición de salida de renglón se establece en falso (lógica de escalera de relés solamente).
La condición de entrada de renglón es falsa para la instrucción JSR
La subrutina no se ejecuta.
Las salidas en la subrutina permanecen en su último estado.
La condición de salida de renglón se establece como falsa.
n. a.
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 de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción
post-escán La misma acción que el preescán antes descrito. La misma acción que el preescán antes descrito.
Condición Acción de lógica de escalera de relés Acción de texto estructurado
parámetros de entrada
sí
no
JSR copia los parámetros de entrada en los tags SBR apropiados
fin
la ejecución de lógica comienza en la rutina identificada por JSR
fin de la subrutinasí
no
la condición de salida de renglón se establece como falsa
continuar ejecutando la subrutina
parámetros de retorno
sí
no
RET copia los parámetros de retorno en los tags JSR apropiados
la condición de salida de renglón se establece como verdadera
la ejecución de la lógica regresa a JSR
instrucción RETsí
no
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
Texto estructurado
Rutina: Programa
Rutina principal
Subrutina
[otros renglones de código]
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
42973
42972
2. Las instrucciones ADD suman Input_A, Input_B y Input_C, y colocan el resultado en Sum_A_B_C.
Instrucción JSR en Routine_A
Bloques de funciones de la rutina Add_Three_Inputs
1. Los valores en Add_Input_1, Add_Input_2 y Add_Input_3 se copian en Input_A, Input_B y Input_C, respectivamente.
3. El valor de Sum_A_B_C se copia en Add_Three_Result.
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 rutina externa
ROUTINE nombre rutina externa que se va a ejecutar
Control de rutina externa
EXT_ROUTINE_CONTROL
tag estructura de control (ver la siguiente página)
Parámetro BOOL
SINT
INT
DINT
REAL
estructura
inmediato
tag
tag de matriz
datos de esta rutina que desea copiar a una variable en la rutina externa
• Los parámetros son opcionales.
• Introduzca múltiples parámetros, si es necesario.
• Puede tener hasta 10 parámetros.
Parámetro de retorno
BOOL
SINT
INT
DINT
REAL
tag el tag en esta rutina al cual desea copiar un resultado de la rutina externa
• El parámetro de retorno es opcional
• Sólo puede tener un parámetro de retorno
Publicación 1756-RM003K-ES-P – Julio 2008 447
Capítulo 11 Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Estructura EXT_ROUTINE_CONTROL
Mnemónico Tipo de datos Descripción Implementación
ErrorCode SINT Si ocurre un error, este valor identifica el error. Los valores válidos son 0-255.
No hay códigos de error predefinidos. El encargado del desarrollo de la rutina externa debe proporcionar los códigos de error.
NumParams SINT Este valor indica el número de parámetros asociados con esta instrucción.
Visualización solamente – esta información proviene de la entrada de la instrucción.
ParameterDefs EXT_ROUTINE_PARAMETERS[10]
Esta matriz contiene definiciones de los parámetros que se van a pasar a la rutina externa. La instrucción puede pasar hasta 10 parámetros.
Visualización solamente – esta información proviene de la entrada de la instrucción.
ReturnParamDef EXT_ROUTIN_PARAMETERS
Este valor contiene definiciones del parámetro de retorno de la rutina externa. Sólo hay un parámetro de retorno.
Visualización solamente – esta información proviene de la entrada de la instrucción.
EN BOOL Cuando se establece, el bit de habilitación indica que la instrucción JXR está habilitada.
La rutina externa establece este bit.
ReturnsValue BOOL Si se establece, este bit indica que se introdujo un parámetro de retorno para la instrucción. Si se borra, este bit indica que no se introdujo un parámetro de retorno para la instrucción.
Visualización solamente – esta información proviene de la entrada de la instrucción.
DN BOOL El bit de efectuado se establece cuando la rutina externa se ha ejecutado una vez hasta el final.
La rutina externa establece este bit.
ER BOOL El bit de error se establece si ocurre un error. La instrucción detiene la ejecución hasta que el programa borra el bit de error.
La rutina externa establece este bit.
FirstScan BOOL Este bit identifica si éste es el primer escán después de que el controlador pasó al modo de marcha. Use FirstScan para inicializar la rutina externa, si es necesario.
El controlador establece este bit para reflejar el estado de escán.
EnableOut BOOL Habilitación de salida. La rutina externa establece este bit.
EnableIn BOOL Entrada de habilitación. El controlador establece este bit para reflejar la condición de entrada del renglón. La instrucción se ejecuta independientemente de la condición del renglón. El encargado del desarrollo de la rutina externa debe monitorear este estado y actuar como corresponde.
User1 BOOL Estos bits están disponibles para el usuario. El controlador no inicializa estos bits.
La rutina externa o el programa de usuario pueden establecer estos bits.
User0 BOOL
ScanType1 BOOL Estos bits identifican el tipo de escán actual:
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)
El controlador establece estos bits para reflejar el estado de escán.
ScanType0 BOOL
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 estadoaritmético: Los indicadores de estado aritmético no son afectados.
Condiciones de fallo:
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.
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo:
• ocurre una excepción en la rutina externa DLL
• el DLL no pudo cargarse
• el punto de entrada no se encontró en el DLL
4 88
Publicación 1756-RM003K-ES-P – Julio 2008 449
Capítulo 11 Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Fin temporal (TND) La instrucción TND sirve como límite.
Operandos:
Operadores de escalera de relé
ninguno
Texto estructurado
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
TND();
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción Se termina la rutina actual. Se termina la rutina actual.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
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 control maestro (MCR)
La instrucción MCR, usada en parejas, crea una zona de programa que puede inhabilitar todos los renglones dentro de las instrucciones MCR.
Operandos:
Lógica de escalera de relés
ninguna
Descripción: Cuando la zona MCR se habilita, los renglones en la zona MCR son escaneados para determinar la presencia de condiciones normales verdaderas o falsas. Cuando se inhabilita, el controlador todavía escanea renglones dentro de una zona MCR, pero el tiempo de escán se reduce debido a que las salidas no retentivas en la zona están inhabilitadas. La condición de entrada de renglón es falsa para todas las instrucciones dentro de la zona MCR inhabilitada.
Cuando programe una zona MCR, tenga presente que:
• Debe terminar la zona con una instrucción MCR incondicional.
• No puede anidar una zona MCR dentro de otra.
• No salte a una zona MCR. Si la zona es falsa, saltar a la zona activa la zona desde el punto en el que usted saltó al final de la zona.
• Si una zona MCR continúa al final de la rutina, usted no tiene que programar una instrucción MCR al final de la zona.
La instrucción MCR no sustituye a un relé de control maestro con cableado permanente que proporciona capacidad de paro de emergencia. Usted debe instalar un relé de control maestro con cableado permanente para proporcionar desactivación de emergencia de la alimentación eléctrica de E/S.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
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.
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:
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.
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.
Publicación 1756-RM003K-ES-P – Julio 2008 453
Capítulo 11 Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Inhabilitación de interrupción de usuario (UID) Habilitación de interrupción de usuario (UIE)
La instrucción UID y la instrucción UIE funcionan juntas para evitar que otras tareas interrumpan una cantidad pequeña de renglones críticos.
Operandos:
Lógica de escalera de relés
ninguno
Texto estructurado
ninguno
Se tienen que introducir los paréntesis () después del mnemónico de instrucción, aunque no haya operandos.
Descripción: Cuando la condición de entrada de renglón es verdadera:
• La instrucción UID evita que tareas de mayor prioridad interrumpan la tarea actual, pero no inhabilita la ejecución de una rutina de fallo o del administrador de fallos del controlador.
• La instrucción UIE habilita otras tareas para interrumpir la tarea actual.
Para evitar la interrupción de una serie de renglones:
1. Limite el número de renglones que no desea sean interrumpidos al menor número posible. Inhabilitar interrupciones por un tiempo prolongado puede ocasionar pérdida de comunicación.
2. Arriba del primer renglón que usted no desea sea interrumpido, introduzca un renglón y una instrucción UID.
3. Después del último renglón que usted no desea sea interrumpido, introduzca un renglón y una instrucción UIE.
4. Si lo desea, puede anidar parejas de instrucciones UID/UIE.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
UID();
UIE();
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:
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
Texto estructurado
UID();
<statements>
UIE();
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción UID evita la interrupción por parte de tareas de mayor prioridad.
La instrucción UIE habilita la interrupción por parte de tareas de mayor prioridad.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
UID
error_bit
ENDNER
File Search/CompareControl error_checkLength 10Position 8Mode ALLExpression error_code=error_list[error_check.POS]
FSC
error_check.FD
alarm
UIE
File Search/CompareControlLengthPositionModeExpression
error_check
error_code=error_list[error_check.POS]ALL
alarm
UID
ENDNER
FSCerror_bit
error_check.FD
Publicación 1756-RM003K-ES-P – Julio 2008 455
Capítulo 11 Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Instrucción siempre falso (AFI)
La instrucción AFI establece su condición de salida de renglón como falsa.
Operandos:
Lógica de escalera de relés
ninguno
Descripción: La instrucción AFI establece su condición de salida de renglón como falsa.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
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.
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.
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
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.
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.
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
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Operando Tipo Formato Descripción
bit de datos BOOL tag estado de la transición(0=en ejecución, 1=completada)
EOT(data_bit);
Condición Acción de lógica de escalera de relés: Acción de texto estructurado:
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción 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 falsa.
Ninguna.
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
Texto estructurado
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 estadoaritmético: no afectados
Condiciones de fallo:
Operando Tipo: Formato: Descripción:
SFCRoutine Name
ROUTINE nombre rutina SFC que se va a poner en pausa
TargetState DINT inmediato
tag
seleccione uno:
ejecutando (o introduzca 0)
puesta en pausa (o introduzca 1)
SFP(SFCRoutineName,TargetState);
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:
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
Texto estructurado
Se pone en pausa la rutina SFC. IF (sfp_en_p) THEN
SFP(normal,paused);
sfp_en_p := 0;
END_IF;
Condición: Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción pone en pausa o reanuda la ejecución de la rutina SFC especificada.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
Se pone en pausa la rutina SFC.
Se reanuda la ejecución de la rutina SFC.
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
Texto estructurado
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 estadoaritmético: no afectados
Operando Tipo Formato Descripción
SFCRoutine Name
ROUTINE nombre rutina SFC que se va a restablecer
Step Name SFC_STEP tag paso objetivo donde se va a reanudar la ejecución
SFR(SFCRoutineName,StepName);
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:
Ejecución:
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;
Ocurrirá un fallo mayor si: Tipo de fallo Código de fallo
el tipo de rutina no es una rutina SFC 4 85
el paso objetivo especificado no existe en la rutina SFC
4 89
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción restablece la rutina SFC especificada. La instrucción restablece la rutina SFC especificada.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
Publicación 1756-RM003K-ES-P – Julio 2008 463
Capítulo 11 Instrucciones de control de programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR, EVENT)
Activar tarea de evento (EVENT)
La instrucción EVENT activa una ejecución de una tarea de evento.
Operandos:
Lógica de escalera de relés
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.
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);
Atributo Status del objeto TASK
Atributo Tipo de datos Instrucción Descripción
Status DINT GSV
SSV
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.
Para determinar si: Examine este bit:
Una instrucción EVENT activó la tarea (tarea de evento solamente).
0
Al expirar un tiempo de espera se activó la tarea (tarea de evento solamente).
1
Ocurrió una superposición para esta tarea. 2
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición: Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta. n. a.
La condición de salida de renglón se establece como verdadera.
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 falsa.
Ninguna.
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
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;
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
FOR...DO(1)
lógica de escalera de relés
texto estructurado
470
Interrumpir la ejecución repetida de una rutina. BRK
EXIT(1)
lógica de escalera de relés
texto estructurado
473
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
Texto estructurado
Use la construcción FOR...DO. Consulte Apéndice C, Programación de texto estructurado para obtener información sobre construcciones de texto estructurado.
Descripción:
Operando Tipo Formato Descripción
Routine name
ROUTINE nombre de la rutina
rutina que se ejecuta
Index DINT tag cuenta cuántas veces la rutina se ha ejecutado
Initial value SINT
INT
DINT
inmediato
tag
valor en que se comienza el índice
Terminal value
SINT
INT
DINT
inmediato
tag
valor en que se detiene la ejecución de la rutina
Step size SINT
INT
DINT
inmediato
tag
cantidad que se añade al índice cada vez que la instrucción FOR ejecuta la rutina
FOR count:= initial_value TO final_value BY increment DO
<statement>;
END_FOR;
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 estadoaritmético: no afectados
Condiciones de fallo:
Ejecución:
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
la rutina principal contiene una instrucción RET
4 31
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)
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.
post-escán La condición de salida de renglón se establece como falsa.
Condición Acción de lógica de escalera de relés
índice ≥ valor terminalnosí
ejecutar rutina
índice = (index + step_size)
condición de entrada de renglón es verdadera
fin
index = initial_value
la condición de salida de renglón se establece como verdadera
tamaño de paso < 0no
sí
índice ≤ valor terminalno
sí
ir a fin
finir a fin
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
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
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.
EXIT;
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.
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:
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 estadoaritmético: no afectados
Condiciones de fallo:
Ejecució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).
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
la rutina principal contiene una instrucción RET
4 31
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 conocida y registrar las incongruencias.
FBC lógica de escalera de relés 478
Comparar datos con una buena referencia conocida, registrar las incongruencias y actualizar la referencia para que sea igual al origen.
DDT lógica de escalera de relés 486
Pasar los datos de origen a través de una máscara y comparar los resultados con los datos de referencia. Seguidamente escribir el origen en la referencia para la siguiente comparación.
DTR lógica de escalera de relés 494
Controlar un lazo PID. PID lógica de escalera de relés
texto estructurado
497
477Publicación 1756-RM003K-ES-P – Julio 2008 477
Capítulo 13 Instrucciones especiales (FBC, DDT, DTR, PID)
Comparación de bits de archivo (FBC)
La instrucción FBC compara los bits en una matriz de origen con los bits en una matriz de referencia.
Operandos:
Lógica de escalera de relés
Operando Tipo Formato Descripción:
Source DINT tag de matriz matriz que se va a comparar con la referencia.
no use CONTROL.POS en el subíndice
Reference DINT tag de matriz matriz que se va a comparar con el origen.
no use CONTROL.POS en el subíndice
Result DINT tag de matriz matriz para almacenar el resultado
no use CONTROL.POS en los subíndices
Cmp control CONTROL estructura estructura de control para la comparación
Length DINT inmediato número de bits que se van a comparar
Position DINT inmediato posición actual en el origen
el valor inicial es típicamente 0
Result control
CONTROL estructura estructura de control para los resultados
Length DINT inmediato número de ubicaciones de almacenamiento en el resultado
Position DINT inmediato posición actual en el resultado
el valor inicial es típicamente 0
ATENCIÓN 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
Estructura RESULT
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.
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.
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.
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.
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.
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
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
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.
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
fin
el bit compare.EN se borra
el bit compare.FD se borra
la condición de salida de renglón se establece como falsa
examine el bit compare.DN
compare.DN = 0
compare.DN = 1
el bit compare.DN se borra
el valor compare.POS se borra
el bit result.DN se borra
el valor result.POS se borra
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
fin
el bit compare.EN se borra
el bit compare.FD se borra
la condición de salida de renglón se establece como falsa
examine el bit compare.DN
compare.DN = 0
compare.DN = 1
el bit compare.DN se borra
el valor compare.POS se borra
el bit result.DN se borra
el valor result.POS se borra
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
examine el bit compare.EN
compare.EN = 1
compare.EN = 0
condición de entrada de renglón es verdadera
examine el bit compare.DN
compare.DN = 1
compare.DN = 0
El bit compare.EN se establece
el bit compare.ER se borra
el bit compare.FD se borracompare.LEN ≤ 0
sí
no
compare.POS < 0sí
noel bit compare.ER se establece
comparar
página 484fin
la condición de salida de renglón se establece como verdadera
ir a la salida
exit
ir a la salida
ir a la salida
Publicación 1756-RM003K-ES-P – Julio 2008 483
Capítulo 13 Instrucciones especiales (FBC, DDT, DTR, PID)
post-escán La condición de salida de renglón se establece como falsa.
Condición Acción de lógica de escalera de relés
compare.POS ≥ compare.LEN
sí
no
compare.POS = compare.LEN
el bit compare.DN se establece
comparar
ir a la salida
source[compare.POS] = reference[compare.POS]
no
sí
examine el bit result.DN bit
result.DN = 1
result.DN = 0
compare.POS =compare.POS + 1
el bit compare.FD se establece
el bit result.DN se borrael valor result.POS se borra
result.POS < 0sí
no
result.LEN ≤ 0sí
no el bit compare.ER se establece
ir a la salida
sí
no
fallo mayor
result[result.POS] = compare.POSresult.POS = result.POS + 1
result.POS > result.LEN
no
sí
el bit result.DN se establece
página 483
página 483
result.POS > tamaño de
matriz resultado
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.
origenarray_dint1
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
referenciaarray_dint2
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
resultadoarray_dint3
5 3
Publicación 1756-RM003K-ES-P – Julio 2008 485
Capítulo 13 Instrucciones especiales (FBC, DDT, DTR, PID)
Detección de diagnóstico (DDT)
La instrucción DDT compara los bits en una matriz de origen con los bits en una matriz de referencia para determinar cambios de estado.
Operandos:
Lógica de escalera de relés
Operando Tipo Formato Descripción
Source DINT tag de matriz
matriz que se va a comparar con la referencia
no use CONTROL.POS en el subíndice
Reference DINT tag de matriz
matriz que se va a comparar con el origen
no use CONTROL.POS en el subíndice
Result DINT tag de matriz
matriz para almacenar los resultados
no use CONTROL.POS en el subíndice
Cmp control CONTROL estructura estructura de control para la comparación
Length DINT inmediato número de bits que se van a comparar
Position DINT inmediato posición actual en el origen
el valor inicial es típicamente 0
Result control
CONTROL estructura estructura de control para los resultados
Length DINT inmediato número de ubicaciones de almacenamiento en el resultado
Position DINT inmediato posición actual en el resultado
el valor inicial es típicamente 0
ATENCIÓN 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
Estructura RESULT
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.
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.
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.
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.
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.
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
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
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.
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
fin
el bit compare.EN se borra
el bit compare.FD se borra
la condición de salida de renglón se establece como falsa
examine el bit compare.DN
compare.DN = 0
compare.DN = 1
el bit compare.DN se borra
el valor compare.POS se borra
el bit result.DN se borra
el valor result.POS se borra
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
fin
el bit compare.EN se borra
el bit compare.FD se borra
la condición de salida de renglón se establece como falsa
examine el bit compare.DN
compare.DN = 0
compare.DN = 1
el bit compare.DN se borra
el valor compare.POS se borra
el bit result.DN se borra
el valor result.POS se borra
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
examine el bit compare.EN
compare.EN = 1
compare.EN = 0
condición de entrada de renglón es verdadera
examine el bit compare.DN
bit compare.DN = 1
bit compare.DN = 0
El bit compare.EN se establece
el bit compare.ER se borrael bit compare.FD se borra compare.LEN ≤ 0
sí
no
compare.POS < 0sí
noel bit compare.ER se establece
comparar
página 492fin
la condición de salida de renglón se establece como verdadera
ir a la salida
salida
ir a la salida
ir a la salida
Publicación 1756-RM003K-ES-P – Julio 2008 491
Capítulo 13 Instrucciones especiales (FBC, DDT, DTR, PID)
post-escán La condición de salida de renglón se establece como falsa.
Condición: Acción de lógica de escalera de relés
compare.POS ≥ compare.LEN
sí
no
compare.POS = compare.LEN
el bit compare.DN se establece
comparar
ir a la salida
source[compare.POS] = reference[compare.POS]
no
sí
examine el bit result.DN bit
result.DN = 1
result.DN = 0
compare.POS =compare.POS + 1
compare.FD bit se establecereference[compare.POS] = source[compare.POS]
el bit result.DN se borrael valor result.POS se borra
result.POS < 0sí
no
result.LEN ≤ 0sí
no el bit compare.ER se establece
ir a la salida
sí
no
fallo mayor
result[result.POS] = compare.POSresult.POS = result.POS + 1
result.POS ≥ result.LEN
no
sí
el bit result.DN se establece
página 491
página 483
result.POS > tamaño de matriz
resultado
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
array_dint1
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
referencia (antes de comparación)
array_dint2
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
resultado
array_dint3
5 3
referencia (después de comparación)
array_dint2
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
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
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.
Operando: Tipo Formato Descripción
Source DINT inmediato
tag
matriz que se va a comparar con la referencia.
Mask DINT inmediato
tag
qué bits se bloquean o se pasan
Reference DINT tag matriz que se va a comparar con el origen.
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Prefijo Descripción:
16# hexadecimal
por ejemplo; 16#0F0F
8# octal
por ejemplo: 8#16
2# binario
por ejemplo: 2#00110011
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.
post-escán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
fin
origen enmascarado =
referencia
no
sí
la referencia se establece igual que el origen 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
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.
Un número “0” en la máscara deja el bit sin ningún cambio.
13385
El renglón permanece falso siempre que el valor de entrada no cambie.
El renglón permanece verdadero por un escán cuando se detecta un cambio.
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
1 8 3 1 8 7
máscara = 0FFF
1 8 7
origen
value_1
referencia
value_2
1 8 3
1 8 3
1 8 3
escán actual
escán previo escán previo
escán actual
ejemplo 1 ejemplo 2
97
0
0
0
0
496 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID) Capítulo 13
Proporcional integral derivativo (PID)
La instrucción PID controla una variable del proceso, tal como flujo, presión, temperatura o nivel.
Operandos:
Lógica de escalera de relés
Operando Tipo Formato Descripción
PID PID estructura estructura PID
Process variable
SINT
INT
DINT
REAL
tag valor que desea controlar
Tieback SINT
INT
DINT
REAL
inmediato
tag
(opcional) salida de una estación manual/automática que está pasando por alto la salida del controlador
Introduzca 0 si no desea usar este parámetro.
Control variable
SINT
INT
DINT
REAL
tag valor que va al dispositivo de control final (válvula, regulador, etc.)
Si usted está usando la banda muerta, la variable Control debe ser REAL o se forzará a 0 cuando el error esté dentro de la banda muerta.
PID master loop
PID estructura (opcional) tag PID para el PID maestro
Si está realizando control en cascada y este PID es un lazo esclavo, introduzca el nombre del PID maestro. Introduzca 0 si no desea usar este parámetro.
Inhold bit BOOL tag (opcional) estado actual del bit mantenido desde un canal de salida analógica 1756 para permitir un reinicio sin problemas
Introduzca 0 si no desea usar este parámetro.
Inhold value SINT
INT
DINT
REAL
tag (opcional) valor de repetición de lectura de datos desde un canal de salida analógica 1756 para permitir un reinicio sin problemas
Introduzca 0 si no desea usar este parámetro.
Publicación 1756-RM003K-ES-P – Julio 2008 497
Capítulo 13 Instrucciones especiales (FBC, DDT, DTR, PID)
Texto estructurado
Los operandos son iguales que los de la instrucción PID de lógica de escalera de relés. Sin embargo, usted especifica Setpoint, Process Variable y Output % accediendo a los miembros .SP, .PV. y .OUT de la estructura PID, en lugar de incluir valores en la lista de operandos.
Estructura PID
Setpoint muestra el valor actual del punto de ajuste
Process variable
muestra el valor actual de la variable del proceso escalada
Output % muestra el valor de porcentaje de la salida actual
Operando Tipo Formato Descripción
PID(PID,ProcessVariable,Tieback,ControlVariable,PIDMasterLoop,InholdBit,InHoldValue);
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
.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%)
Mnemónico: Tipo de datos Descripción
Publicación 1756-RM003K-ES-P – Julio 2008 499
Capítulo 13 Instrucciones especiales (FBC, DDT, DTR, PID)
.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í)
Mnemónico: Tipo de datos Descripción
500 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID) Capítulo 13
Descripción: La instrucción PID típicamente recibe la variable del proceso (PV) desde un módulo de entrada analógico y modula una salida de variable de control (CV) en un módulo de salidas analógicas a fin de mantener la variable del proceso en el punto de ajuste deseado.
El bit .EN indica el estado de ejecución. El bit .EN se establece cuando la condición de entrada del renglón cambia de falso a verdadero. El bit .EN se borra cuando la condición de entrada del renglón se hace falsa. La instrucción PID no usa el bit .DN. La instrucción PID se ejecuta en cada escán, siempre que la condición de entrada de renglón sea verdadera.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
.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í)
Mnemónico: Tipo de datos Descripción
estado de renglón
ejecución de la instrucción PID
bit .EN
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:
Configure una instrucción PID
Después de introducir la instrucción PID y especificar la estructura de PID, se usan las fichas de configuración para especificar cómo debe funcionar la instrucción PID.
Condición Acción Acción
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción 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 falsa.
Ninguna.
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.
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
PID equation Seleccione ganancias independientes o dependientes (.PE).
Use independientes cuando desee que las tres ganancias (P, I y D) operen de manera independiente. Use dependientes cuando desee una ganancia total del controlador que afecte a los tres términos (P, I y D).
Control action Seleccione ya sea E=PV-SP o E=SP-PV para la acción de control (.CA).
Derivative of Seleccione VP o error (.DOE).
Use la derivada de VP para eliminar los picos de salida causados por cambios del punto de ajuste. Use la derivada de error para respuestas rápidas a cambios del punto de ajuste cuando el algoritmo puede tolerar sobreimpulsos.
Loop update time Introduzca el tiempo de actualización (.UPD) para la instrucción.
CV high limit Introduzca un límite alto para la variable de control (.MAXO).
CV low limit Introduzca un límite bajo para la variable de control (.MINO).
Deadband value Introduzca un valor de banda muerta (.DB).
No derivative smoothing Habilite o inhabilite esta selección (.NDF).
No bias calculation Habilite o inhabilite esta selección (.NOBC).
No zero crossing in deadband
Habilite o inhabilite esta selección (.NOZC).
PV tracking Habilite o inhabilite esta selección (.PVT).
Cascade loop Habilite o inhabilite esta selección (.CL).
Cascade type Si el lazo en cascada está habilitado, seleccione esclavo o maestro (.CT).
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.
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.
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.
En este campo Especifique
PV unscaled maximum Introduzca un valor PV máximo (.MAXI) que sea igual al valor máximo sin escalado recibido desde el canal de entrada analógico para el valor PV.
PV unscaled minimum Introduzca un valor VP mínimo (.MINI) que sea igual al valor mínimo sin escalado recibido desde el canal de entrada analógico para el valor PV.
PV engineering units maximum
Introduzca el valor máximo de unidades de ingeniería correspondiente a .MAXI (.MAXS)
PV engineering units minimum
Introduzca el valor mínimo de unidades de ingeniería correspondiente a .MINI (.MINS)
CV maximum Introduzca un valor de CV máximo correspondiente al 100% (.MAXCV).
CV minimum Introduzca un valor de CV mínimo correspondiente al 0% (.MINCV).
Tieback maximum Introduzca un valor retenido máximo (.MAXTIE) que sea igual al valor máximo sin escalado recibido desde el canal de entrada analógico para el valor retenido.
Tieback minimum Introduzca un valor retenido mínimo (.MINTIE) que sea igual al valor mínimo sin escalado recibido desde el canal de entrada analógico para el valor retenido.
PID Initialized Si usted cambia las constantes de escalado durante el modo de marcha, desactívelo para reinicializar valores internos de desactivación de escalado (.INI).
-
+
14271
punto de ajuste
régimen de flujo
errorecuación PID
variable de controlvariable de proceso
detector de nivel
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(estándar ISA)
error (E)
variable de proceso (PV)
Ganancias independientes error (E)
variable de proceso (PV)
CV KC E 1Ti---- Edt Td
dEdt-------+
0
t
∫+ BIAS+=
CV KC E 1Ti---- Edt Td–
dPVdt
-----------
0
t
∫+ BIAS+=
E = SP - PV
CV KC E 1Ti---- Edt Td
dPVdt
-----------+
0
t
∫+ BIAS+=
E = PV - SP
CV KPE Ki+ Edt KddEdt-------+
0
t
∫ BIAS+=
CV KPE Ki+ Edt Kd–dPVdt
-----------
0
t
∫ BIAS+=
E = SP - PV
CV KPE Ki+ Edt KddPVdt
-----------+
0
t
∫ BIAS+=
E = PV - SP
506 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones especiales (FBC, DDT, DTR, PID) Capítulo 13
Donde:
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.
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:
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
KiKC
60Ti-----------=
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:
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
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.
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) THENTIC101.SWM [:=] 1;
ELSETIC101.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:
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.
Haga lo siguiente Detalles:
Configure el canal del módulo de salidas analógicas 1756 que recibe la variable de control proveniente de la instrucción PID
Marque la casilla de verificación de retener para inicialización (“hold for initialization”) en la página de propiedades del canal específico del módulo.
Esto indicará al módulo de salidas analógicas que cuando el controlador regrese al modo de marcha o vuelva a establecer comunicación con el módulo, el módulo debe retener la salida analógica en su valor actual hasta que el valor enviado desde el controlador coincida (dentro de un intervalo de 0.1%) con el valor actual usado por el canal de salida. La salida del controlador cambiará gradualmente al valor de salida retenido actualmente mediante el uso del término .BIAS. Este cambio en forma de rampa es similar al de la transferencia sin perturbaciones.
Introduzca el tag de bit Inhold y el tag Inhold Value en la instrucción PID
El módulo de salidas analógicas 1756 retorna dos valores por cada canal en su estructura de datos de entrada. El bit de estado en retención (.Ch2InHold, por ejemplo) cuando es verdadero, indica que el canal de salida analógica está reteniendo su valor. El valor de relectura de datos (.Ch2Data, por ejemplo) muestra el valor de salida actual en unidades de ingeniería.
Introduzca el tag del bit de estado en retención como parámetro InHold de la instrucción PID. Introduzca el tag del valor de relectura de datos como el parámetro Inhold Value.
Cuando el bit Inhold se hace verdadero, la instrucción PID mueve el Inhold Value a la salida de variable de control y se reinicializa para permitir un reinicio sin perturbaciones en dicho valor. Cuando el módulo de salidas analógicas recibe su valor de vuelta desde el controlador, éste desactiva el bit de estado InHold, lo cual permite que la instrucción PID comience normalmente a realizar el control.
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.
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.
error dentro del rango de banda muerta
+ banda muerta
punto de ajuste
- banda muerta
tiempo 41026
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
Proceso PID con lazos maestro/esclavo
+-
-1+
SP Mostrado como EU
Error mostrado como EU
Software A/Mo bien
Modo de estación A/M
Acción de control
Auto SP-PV
(Error)
Manual
No
Sí
PVT
SPPV-SP
Convierte de binario a unidades de ingeniería
(PV-mini)(maxs-mins) + minsmaxi-mini
PV
PVMostrado como EU
Convierte unidades de ingeniería a %
Error X 100maxs-mins
Cálculo PID
% de polarización
de salida
Modo A/M de software
Auto
Auto
% salida establecida
Convierte unidades de valor retenido a %
tieback-mintiemaxtie-mintie
x 100
ManualManual
Límite de salida
% salida establecida
Modo de estación A/M
Salida (CV) mostrada como % de escalado
EU
Convierte % a unidades CV
CV%(maxcv-mincv)100
+ mincvCV
(Out%)
+-
-1+
+-
-1+
SP
Auto
Manual
PVTNo
Sí
Convierte de binario a unidades de ingeniería(PV-mini)(maxs-mins)
maxi-mini+ mins
PV
SP-PV
PV-SP
(Error)Convierte unidades de ingeniería a %
Error X 100maxs-mins
Cálculo PID
% de polarización
de salida
Modo A/M de software
AutoAuto(Out%)
Límite de salida
% salida establecidaModo de
estación A/M
% salida establecida
ManualManual
(Master.Out)
SP
PV
Lazo maestro A/M de software
o bienModo de estación A/M
Acción de control
Lazo esclavo
Convierte de binario a unidades de ingeniería(PV-mini)(maxs-mins)
maxi-mini+ mins
(SP)
PV
Convierte % a unidades de ingeniería
Convierte unidades de valor retenido a %
tieback-mintiemaxtie-mintie
x 100
Convierte unidades de
ingeniería a %Error X 100maxs-mins
Convierte unidades de
ingeniería a %Error X 100maxs-mins
X (maxs-mins)100
+ mins
Acción de control
SP-PV
PV-SP
Cálculo PID
% de polarización
de salida
% salida establecida
Auto
Auto
Manual
Manual
Modo de estación A/M
Límite de salida
Modo A/M de software
% salida establecida
Convierte % a unidades CV
CV%(maxcv-mincv)100
+ mincv
Los ítems referidos en este cuadro son parámetros, unidades y modos que pertenecen al lazo esclavo designado.
Manual
Manual
Auto
Modo A/M de software
(Master.Out)
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.
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.
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éstexto estructurado
bloque de funciones
520
Hallar el coseno de un valor. COS lógica de escalera de reléstexto estructurado
bloque de funciones
523
Hallar la tangente de un valor. TAN lógica de escalera de reléstexto estructurado
bloque de funciones
526
Hallar el arco seno de un valor. ASN
ASIN(1)
lógica de escalera de reléstexto estructurado
bloque de funciones
529
Hallar el arco coseno de un valor. ACS
ACOS(1)
lógica de escalera de reléstexto estructurado
bloque de funciones
532
Hallar el arco tangente de un valor. ATN
ATAN(1)
lógica de escalera de reléstexto estructurado
bloque de funciones
535
(1) Texto estructurado solamente.
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
Texto estructurado
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
Estructura FBD_MATH_ADVANCED
Operando Tipo Formato Descripción
Source SINT
INT
DINT
REAL
inmediato
tag
hallar el seno de este valor
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
SIN tag FBD_MATH_ADVANCED estructura estructura SIN
dest := SIN(source);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
520 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Capítulo 14
Descripción: Source debe ser mayor o igual que -205887.4 (-2πx215) y menor o
igual que 205887.4 (2πx215). El valor resultante en Destination siempre es mayor o igual que -1 y menor o igual que 1.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
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.
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
Texto estructurado
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
Source SINT
INT
DINT
REAL
inmediato
tag
hallar el coseno de este valor
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
COS tag FBD_MATH_ADVANCED estructura estructura COS
dest := COS(source);
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
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
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
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
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 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
Texto estructurado
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
Source SINT
INT
DINT
REAL
inmediato
tag
halla la tangente de este valor
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
TAN tag FBD_MATH_ADVANCED estructura Estructura TAN
dest := TAN(source);
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
Descripción: Source debe ser mayor o igual que -102943.7 (-2πx214) y menor o
igual que 102943.7 (2πx214).
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
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.
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
Texto estructurado
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
Estructura FBD_MATH_ADVANCED
Operando Tipo Formato Descripción
Source SINT
INT
DINT
REAL
inmediato
tag
hallar el arco seno de este valor
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
ASN tag FBD_MATH_ADVANCED estructura estructura ASN
dest := ASIN(source);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
Publicación 1756-RM003K-ES-P – Julio 2008 529
Capítulo 14 Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Descripción: Source debe ser mayor o igual que -1 y menor o igual que 1. El valor resultante en Destination siempre es mayor o igual que -π/2 y menor o igual que π/2 (donde π = 3.141593).
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
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.
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
Texto estructurado
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
Estructura FBD_MATH_ADVANCED
Operando Tipo Formato Descripción
Source SINT
INT
DINT
REAL
inmediato
tag
hallar el arco coseno de este valor
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
ACS tag FBD_MATH_ADVANCED estructura estructura ACS
dest := ACOS(source);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
532 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Capítulo 14
Descripción: Source debe ser mayor o igual que -1 y menor o igual que 1. El valor resultante en Destination siempre es mayor o igual que 0 y menor o igual que π (donde π = 3.141593).
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
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.
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
Texto estructurado
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
Estructura FBD_MATH_ADVANCED
Operando: Tipo Formato Descripción
Source SINT
INT
DINT
REAL
inmediato
tag
hallar el arco tangente de este valor
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
ATN tag FBD_MATH_ADVANCED estructura estructura ATN
dest := ATAN(source);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
Publicación 1756-RM003K-ES-P – Julio 2008 535
Capítulo 14 Instrucciones trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN)
Descripción: El valor resultante en Destination siempre es mayor o igual que -π/2 y menor o igual que π/2 (donde π = 3.141593).
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
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.
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:
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.
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
texto estructurado
bloque de funciones
540
Hallar el logaritmo base 10 de un valor. LOG lógica de escalera de relés
texto estructurado
bloque de funciones
543
Elevar un valor a la potencia de otro valor. XPY lógica de escalera de relés
texto estructurado(1)
bloque de funciones
546
(1) No hay una instrucción equivalente en texto estructurado. Use el operador en una expresión.
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
Texto estructurado
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
Estructura FBD_MATH_ADVANCED
Operando Tipo Formato Descripción
Source SINT
INT
DINT
REAL
inmediato
tag
hallar el logaritmo natural de este valor
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
LN tag FBD_MATH_ADVANCED estructura estructura LN
dest := LN(source);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
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.
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
Texto estructurado
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
Source SINT
INT
DINT
REAL
inmediato
tag
hallar el logaritmo de este valor
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
LOG tag FBD_MATH_ADVANCED estructura Estructura LOG
dest := LOG(source);
Publicación 1756-RM003K-ES-P – Julio 2008 543
Capítulo 15 Instrucciones matemáticas avanzadas (LN, LOG, XPY)
Estructura FBD_MATH_ADVANCED
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Entrada a la instrucción matemática.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
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.
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
Texto estructurado
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
Source X SINT
INT
DINT
REAL
inmediato
tag
valor base
Source Y SINT
INT
DINT
REAL
inmediato
tag
exponente
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
XPY tag FBD_MATH estructura estructura XPY
dest := sourceX ** sourceY;
546 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones matemáticas avanzadas (LN, LOG, XPY) Capítulo 15
Estructura FBD_MATH
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
Lógica de escalera de relés
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source X REAL Valor base.
Válido = cualquier valor con punto flotante (coma flotante)
Source Y REAL exponente
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción matemática. Se establecen indicadores de estado aritmético para esta salida.
Ocurrirá un fallo menor si Tipo de fallo Código de fallo
Source X es negativo y Source Y no es un valor entero
4 4
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
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
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.
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.
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.
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
texto estructurado
bloque de funciones
550
Convertir grados en radianes. RAD lógica de escalera de relés
texto estructurado
bloque de funciones
553
Convertir un valor entero en un valor BCD. TOD lógica de escalera de relés
bloque de funciones
556
Convertir un valor BCD en un valor entero. FRD lógica de escalera de relés
bloque de funciones
559
Retirar la parte fraccionaria de un valor. TRN
TRUNC(1)
lógica de escalera de relés
texto estructurado
bloque de funciones
561
(1) Texto estructurado solamente.
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
Texto estructurado
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
Estructura FBD_MATH_ADVANCED
Operando Tipo Formato Descripción
Source SINT
INT
DINT
REAL
inmediato
tag
valor que se va a convertir en grados
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
DEG tag FBD_MATH_ADVANCED estructura Estructura DEG
dest := DEG(source);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Entrada a la instrucción de conversión.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción de conversión. Se establecen indicadores de estado aritmético para esta salida.
550 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC) Capítulo 16
Descripción: La instrucción DEG usa este algoritmo:Source*180/π (donde π = 3.141593)
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
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.
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
Texto estructurado
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
Estructura FBD_MATH_ADVANCED
Operando Tipo Formato Descripción
Source SINT
INT
DINT
REAL
inmediato
tag
valor que se va a convertir en radianes
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
RAD tag FBD_MATH_ADVANCED estructura estructura RAD
dest := RAD(source);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Entrada a la instrucción de conversión.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest REAL Resultado de la instrucción de conversión. Se establecen indicadores de estado aritmético para esta salida.
Publicación 1756-RM003K-ES-P – Julio 2008 553
Capítulo 16 Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Descripción: La instrucción RAD usa este algoritmo:Source*π/180 (donde π = 3.141593)
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
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.
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
Bloque de funciones
Estructura FBD_CONVERT
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
Operando Tipo Formato Descripción
Source SINT
INT
DINT
inmediato
tag
valor que se va a convertir en decimal
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Destination SINT
INT
DINT
tag almacena el resultado
Operando Tipo Formato Descripción
TOD tag FBD_CONVERT estructura estructura TOD
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source DINT Entrada a la instrucción de conversión.
Válido = cualquier número entero
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest DINT Resultado de la instrucción de conversión. Se establecen indicadores de estado aritmético para esta salida.
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:
Ejecución:
Lógica de escalera de relés
Bloque de funciones
Ocurrirá un fallo menor si Tipo de fallo Código de fallo
Source < 0 4 4
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 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.
condición de entrada de renglón es verdadera
fin
origen < 0no
sí
origen > 99,999,999no
sí
convertir origen en BCD
S:V se establece a 1
la condición de salida de renglón se establece como verdadera
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
Bloque de funciones
Estructura FBD_CONVERT
Descripción: La instrucción FRD convierte un valor BCD (Source) en un valor decimal y almacena el resultado en Destination.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Operando Tipo Formato Descripción
Source SINT
INT
DINT
inmediato
tag
valor que se va a convertir en decimal
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con ceros.
Destination SINT
INT
DINT
tag almacena el resultado
Operando Tipo Formato: Descripción
FRD tag FBD_CONVERT estructura estructura FRD
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source DINT Entrada a la instrucción de conversión.
Válido = cualquier número entero
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest DINT Resultado de la instrucción de conversión. Se establecen indicadores de estado aritmético para esta salida.
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
Bloque de funciones
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
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.
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.
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
Texto estructurado
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
Estructura FBD_TRUNCATE
Operando Tipo Formato Descripción
Source REAL inmediato
tag
valor que se va a truncar
Destination SINT
INT
DINT
REAL
tag tag para almacenar el resultado
Operando Tipo Formato Descripción
TRN tag FBD_TRUNCATE estructura estructura TRM
dest := TRUNC(source);
Parámetro de entrada
Tipo de datos Descripción
EnableIn BOOL Habilitación de entrada. Si se borra, la instrucción no se ejecuta y las salidas no se actualizan.
La opción predeterminada es establecido.
Source REAL Entrada a la instrucción de conversión.
Válido = cualquier valor con punto flotante (coma flotante)
Parámetro de salida Tipo de datos Descripción
EnableOut BOOL La instrucción produjo un resultado válido.
Dest DINT Resultado de la instrucción de conversión. Se establecen indicadores de estado aritmético para esta salida.
Publicación 1756-RM003K-ES-P – Julio 2008 561
Capítulo 16 Instrucciones de conversión matemática (DEG, RAD, TOD, FRD, TRN, TRUNC)
Descripción: El truncado no redondea el valor; en lugar de ello, la parte no fraccionaria permanece igual, independientemente del valor de la parte fraccionaria.
Indicadores de estadoaritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo: ninguna
Ejecución:
Lógica de escalera de relés
Bloque de funciones
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.
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 instrucción
Disponible en estos lenguajes
Vea la página
determinar cuándo el búfer contiene caracteres de terminación
ver si hay datos que tienen caracteres de terminación
ABL lógica de escalera de relés
texto estructurado
570
contar los caracteres en el búfer verificar el número requerido de caracteres antes de leer el búfer
ACB lógica de escalera de relés
texto estructurado
573
borrar el búfer • borrar datos antiguos del búfer al momento de la puesta en marcha
• sincronizar el búfer con un dispositivo
ACL lógica de escalera de relés
texto estructurado
575
borrar las instrucciones del puerto serie ASCII que actualmente se están ejecutando o están en la cola.
obtener el estado de las líneas de control del puerto serie
hacer que el módem cuelgue AHL lógica de escalera de relés
texto estructurado
577
activar y desactivar la señal DTR
activar y desactivar la señal RTS
leer un número fijo de caracteres leer datos desde un dispositivo que envía el mismo número de caracteres durante cada transmisión
ARD lógica de escalera de relés
texto estructurado
581
leer un número variable de caracteres, inclusive el primer conjunto de caracteres de terminación
leer datos desde un dispositivo que envía un número variable de caracteres en cada transmisión
ARL lógica de escalera de relés
texto estructurado
585
enviar caracteres y añadir automáticamente uno o dos caracteres adicionales para marcar el final de los datos
enviar mensajes que siempre usan los mismos caracteres de terminación
AWA lógica de escalera de relés
texto estructurado
589
enviar caracteres enviar mensajes que usan una variedad de caracteres de terminación
AWT lógica de escalera de relés
texto estructurado
594
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:
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
La instrucción entra en la cola ASCII.
Cola ASCII
Instrucción 1 La instrucción en la parte superior de la cola se ejecuta.
BúferPuerto serie
Instrucción 2
Instrucción 3
Instrucción 4
La condición de entrada de renglón de instrucción cambia de falsa a verdadera
Los datos fluyen entre la tarea y el búfer.
Los datos fluyen entre el búfer y el puerto serie.
Lógica Tarea ASCII
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.
condición de entrada de renglón
falsa verdadera falsa verdadera falsa
.EN desacti-vado
activado desactivado activado desacti-vado
.EU desacti-vado
activado
.RN desacti-vado
acti-vado
desacti-vado
acti-vado
desacti-vado
.DN o .ER desacti-vado
activado desacti-vado
activado
.FD desacti-vado
activado desacti-vado
activado
.EM desacti-vado
activado desactivado activado
escán escán escán escán
entra en la cola restablece los bits de estado
se ejecuta cuando se escanean y el bit .DN o .ER está establecido, se establece el bit .EMen este ejemplo,
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:
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:
condición de entrada de renglón
falsa verdadera falsa
.EN desacti-vado
activado
.EU desacti-vado
activado
escán escán escán escán
entra en la cola
intenta entrar en la cola, pero la cola está llena
Este código hexadecimal
Indica que
16#2 El módem se desconectó.
16#3 La señal CTS se perdió durante la comunicación.
16#4 El puerto serie estaba en el modo de sistema.
16#A Antes de que se ejecutara la instrucción, se estableció el bit .UL. Esto impide la ejecución de la instrucción.
16#C El controlador cambió del modo de marcha al modo de programación. Esto detiene la ejecución de una instrucción de puerto serie ASCII y borra la cola.
16#D En el cuadro de diálogo Controller Properties, ficha User Protocol, se cambiaron y se aplicaron los parámetros de tamaño de búfer o modo de eco. Esto detiene la ejecución de una instrucción de puerto serie ASCII y borra la cola.
16#E Instrucción ACL ejecutada.
16#F La configuración del puerto serie cambió del modo de usuario al modo de sistema. Esto detiene la ejecución de una instrucción de puerto serie ASCII y borra la cola de instrucciones de puerto serie ASCII.
16#51 El valor LEN del tag de cadena es negativo o mayor que el tamaño de DATA del tag de cadena.
16#54 La longitud de control del puerto serie es mayor que el tamaño del búfer.
16#55 La longitud de control del puerto serie es negativa o mayor que el tamaño de Source o Destination.
568 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Capítulo 17
Tipos de datos de cadenaLos 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 en la cadena
El LEN se actualiza automáticamente con el nuevo conteo de los caracteres cuando usted:
• usa el cuadro de diálogo String Browser para introducir caracteres
• usa las instrucciones que leen, convierten o manipulan una cadena
El LEN muestra la longitud de la cadena actual. El miembro DATA puede contener caracteres adicionales antiguos, los cuales no se incluyen en el conteo del LEN.
Datos Matriz SINT caracteres ASCII de la cadena
• Para obtener acceso a los caracteres de la cadena, utilice el nombre del tag.
Por ejemplo, para acceder a los caracteres del tag string_1, introduzca string_1.
• Cada elemento de la matriz DATA contiene un carácter.
• Usted puede crear nuevos tipos de datos de cadena que almacenen menos o más caracteres.
Publicación 1756-RM003K-ES-P – Julio 2008 569
Capítulo 17 Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Prueba ASCII para línea de búfer (ABL)
La instrucción ABL cuenta los caracteres en el búfer, inclusive el primer carácter de terminación.
Operandos:
Lógica de escalera de relés
Texto estructurado
Los operandos son iguales a los de la instrucción ABL de lógica de escalera de relés. Usted accede al valor de conteo de caracteres mediante el miembro .POS de la estructura SERIAL_PORT_CONTROL.
Estructura SERIAL_PORT_CONTROL
Operando Tipo Formato Descripción
Channel DINT inmediato
tag
0
Serial Port
Control
SERIAL_PORT_
CONTROL
tag tag que controla la operación
Character Count
DINT inmediato 0
Durante la ejecución, muestra el número de caracteres en el búfer, incluso el primer conjunto de caracteres de terminación.
ENDNER
ASCII Test For Buffer LineChannel ?SerialPort Control ?Character Count ?
ABLASCII Test For Buffer LineChannelSerialPort ControlCharacter Count
ABLENDNER
ABL(ChannelSerialPortControl);
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta cuando la condición de entrada del renglón alterna de borrado a establecido.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
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)
Ejemplo: Pruebe continuamente el búfer para determinar si contiene los caracteres de terminación.
Lógica de escalera de relés
Texto estructurado
ABL(0,MV_line);
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.
Condición Acción de lógica de escalera de relés Acción de texto estructurado
/MV_line.EN
ENDNER
ASCII Test For Buffer LineChannel 0SerialPort Control MV_lineCharacter Count 0
ABLASCII Test For Buffer LineChannelSerialPort ControlCharacter Count
ABLENDNERMV_line.E
MV_line.EN
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 búfer (ACB)
La instrucción ACB cuenta los caracteres en el búfer.
Operandos:
Lógica de escalera de relés
Texto estructurado
Los operandos son los mismos que para la instrucción ACB de lógica de escalera de relés. Sin embargo, usted especifica el valor de conteo de caracteres al acceder al miembro .POS de la estructura SERIAL_PORT_CONTROL, en lugar de incluir el valor en la lista de operandos.
Estructura SERIAL_PORT_CONTROL
Operando Tipo Formato Introduzca
Channel DINT inmediato
tag
0
Serial Port
Control
SERIAL_PORT_
CONTROL
tag tag que controla la operación
Character Count
DINT inmediato 0
Durante la ejecución, muestra el número de caracteres en el búfer.
ENDNER
ASCII Chars in BufferChannel ?SerialPort Control ?Character Count ?
ACBASCII Chars in BufferChannelSerialPort ControlCharacter Count
ACBENDNER
ACB(ChannelSerialPortControl);
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Ejemplo: Cuente continuamente los caracteres en el búfer.
Lógica de escalera de relés
Texto estructurado
ACB(0,bar_code_count);
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa. Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa. n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta cuando la condición de entrada del renglón alterna de borrado a establecido.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.La instrucción se ejecuta.
ejecución de la instrucción La instrucción 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.
/bar_code_count.EN
ENDNER
ASCII Chars in BufferChannel 0SerialPort Control bar_code_countCharacter Count 0
ACB
ASCII Chars in BufferChannelSerialPort ControlCharacter Count
ENDNERbar_code_count.EN
ACBbar_code_count.EN
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
Texto estructurado
Los operandos son iguales a los de la instrucción ACL de lógica de escalera de relés.
Descripción: La instrucción ACL inmediatamente realiza una de las dos siguientes acciones o ambas:
• borra el búfer de caracteres y borra la cola ASCII de instrucciones de lectura
• borra la cola ASCII de instrucciones de escritura
Para programar la instrucción ACL, siga estas pautas:
1. Configure el puerto serie del controlador:
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Operando Tipo Formato Introduzca
Channel DINT inmediato
tag
0
Clear Serial Port Read
BOOL inmediato
tag
Para borrar el búfer y eliminar las instrucciones ARD y ARL de la cola, introduzca Yes.
Clear Serial Port Write
BOOL inmediato
tag
Para eliminar las instrucciones AWA y AWT de la cola, introduzca Yes.
ASCII Clear BufferChannel ?Clear Serial Port Read ?Clear Serial Port Write ?
ACLBorrar ASCII búfer CanalBorrar lectura de puerto serieBorrar escritura de puerto serie
ACL
ACL(Channel,ClearSerialPortRead,ClearSerialPortWrite);
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
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:
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
Texto estructurado
osri_1.InputBit := S:FS;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
ACL(0,0,1);
END_IF;
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción borra las instrucciones especificadas y los búferes.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
S:FS
ASCII Clear BufferChannel 0Clear Serial Port Read 1Clear Serial Port Write 1
ACL
Borrar ASCII búfer CanalBorrar lectura de puerto serieBorrar escritura de puerto serie
ACL
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 (AHL)
La instrucción AHl obtiene el estado de las líneas de control, y activa o desactiva las señales DTR y RTS.
Operandos:
Lógica de escalera de relés
Texto estructurado
Los operandos son iguales que los de la instrucción AHL de lógica de escalera de relés. Sin embargo, se especifica el valor de estado del canal accediendo al miembro .POS de la estructura SERIAL_PORT_CONTROL, y no incluyendo el valor en la lista de operandos.
EN
DN
ER
ASCII Handshake LinesChannel ?AND Mask ?
??OR Mask ?
??SerialPort Control ?Channel Status(Decimal) ?
AHLASCII Handshake LinesChannelAND Mask
OR Mask
SerialPort ControlChannel Status(Decimal)
AHLEN
DN
ER
Operando Tipo Formato Introduzca
Channel DINT inmediato
tag
0
ANDMask DINT inmediato
tag
Remítase a la descripción.
ORMask DINT inmediato
tag
Serial Port Control SERIAL_PORT_CONTROL tag tag que controla la operación
Channel Status (Decimal) DINT inmediato 0
Durante la ejecución, muestra el estado de las líneas de control.
Para el estado de esta línea de control
Examine este bit:
CTS 0
RTS 1
DSR 2
DCD 3
DTR 4
Recibió el carácter XOFF 5
AHL(Channel,ANDMask,ORMask,SerialPortControl);
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
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:
2. Use la tabla siguiente para seleccionar los valores correctos para los operandos ANDMask y ORMask:
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.
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
Para poner DTR en el estado siguiente
Y poner RTS en el estado siguiente:
Introduzca este valor ANDMask
E introduzca este valor ORMask
desactivado desactivado 3 0
activado 1 2
sin cambio 1 0
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 estadoaritmético: no afectados
Condiciones de fallo:
Ejecución:
Tipo Código Causa Método de recuperación
4 57 La instrucción AHL no se ejecutó porque el puerto serie está configurado para no usar handshaking.
Realice una de los siguientes acciones:
• Cambie el ajuste de la línea de control del puerto serie.
• Elimine la instrucción AHL.
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta cuando la condición de entrada del renglón cambia de borrado a establecido.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción obtiene el estado de la línea de control y activa o desactiva las señales DTR y RTS.
El bit .EN se establece.
Los bits de estado restantes, excepto .UL, se borran.
La instrucción trata de entrar en la cola ASCII.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
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
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;
get_control_line_status
EN
DN
ER
ASCII Handshake LinesChannel 0AND Mask 0 OR Mask 0 SerialPort Control serial_portChannel Status(Decimal) 29
AHL
ASCII Handshake LinesChannelAND Mask
OR Mask
SerialPort ControlChannel Status(Decimal)
AHLEN
DN
ER
serial_port
get_control_line_status
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
Texto estructurado
Los operandos son los mismos que para la instrucción ARD de lógica de escalera de relés. Sin embargo, usted especifica los valores de Serial Port Control Length y Characters Read accediendo a los miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL, en lugar de incluir los valores en la lista de operandos.
EN
DN
ER
ASCII Read Channel ?Destination ?
??SerialPort Control ?SerialPort Control Length ?Characters Read ?
ARDARDEN
DN
ER
ASCII ReadChannelDestination
SerialPort ControlSerialPort Control LengthCharacters Read
Operando Tipo Formato Introduzca Notas
Channel DINT inmediato
tag
0
Destination cadena
SINT
INT
DINT
tag el tag al cual se transfieren los caracteres (lectura):
• Para un tipo de datos de cadena, introduzca el nombre del tag.
• Para una matriz SINT, INT o DINT, introduzca el primer elemento de la matriz.
• Si desea comparar, convertir o manipular los caracteres, use un tipo de datos de cadena.
• Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
Serial Port
Control
SERIAL_PORT_
CONTROL
tag tag que controla la operación
Serial Port
Control Length
DINT inmediato número de caracteres a transferir al destino (lectura)
• Serial Port Control Length debe ser menor o igual que el tamaño de Destination.
• Si desea establecer Serial Port Control Length igual que el tamaño de Destination, introduzca 0.
Characters Read DINT inmediato 0 Durante la ejecución, muestra el número de caracteres leídos.
ARD(Channel,Destination,SerialPortControl);
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
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
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.
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:
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
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta cuando la condición de entrada del renglón cambia de borrado a establecido.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción retira caracteres del búfer y los almacena en el destino.
El bit .EN se establece.
Los bits de estado restantes, excepto .UL, se borran.
La instrucción trata de entrar en la cola ASCII.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
/bar_code_count.EN
ENDNER
ASCII Chars in BufferChannel 0SerialPort Control bar_code_countCharacter Count 0
ACBASCII Chars in BufferChannelSerialPort ControlCharacter Count
ACB
bar_code_count.EN
EN
ERDN
bar_code_count.EN
Grtr Than or Eql (A>=B)Source A bar_code_count.pos
0Source B 24
GEQEN
DN
ER
ASCII ReadChannel 0Destination bag_bar_code
''SerialPort Control bar_code_readSerialPort Control Length 24Characters Read 0
ARDARDASCII ReadChannelDestination
SerialPort ControlSerialPort Control LengthCharacters Read
bag_bar_code
bar_code_read
EN
DN
ER
Grtr Than o Eql (A>=B)Source A bar_code_count.pos
Source B
GEQ
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 (ARL)
La instrucción ARL retira los caracteres especificados del búfer y los almacena en Destination.
Operandos:
Lógica de escalera de relés
Texto estructurado
Los operandos son los mismos que para la instrucción ARL de lógica de escalera de relés. Sin embargo, usted especifica los valores de Serial Port Control Length y Characters Read accediendo a los miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL, en lugar de incluir los valores en la lista de operandos.
EN
DN
ER
ASCII Read LineChannel ?Destination ?
??SerialPort Control ?SerialPort Control Length ?Characters Read ?
ARLARLASCII Read LineChannelDestination
SerialPort ControlSerialPort Control LengthCharacters Read
EN
DN
ER
Operando Tipo Formato Introduzca Notas
Channel DINT inmediato
tag
0
Destination cadena
SINT
INT
DINT
tag el tag al cual se transfieren los caracteres (lectura):
• Para un tipo de datos de cadena, introduzca el nombre del tag.
• Para una matriz SINT, INT o DINT, introduzca el primer elemento de la matriz.
• Si desea comparar, convertir o manipular los caracteres, use un tipo de datos de cadena.
• Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
Serial Port
Control
SERIAL_PORT_
CONTROL
tag tag que controla la operación
Serial Port Control Length
DINT inmediato número máximo de caracteres a leer si no se encuentran caracteres de terminación
• Introduzca el número máximo de caracteres que contendrá cualquier mensaje (es decir, cuándo se debe interrumpir la lectura si no se encuentran caracteres de terminación).
Por ejemplo, si el mensaje tiene de 3 a 6 caracteres de longitud, introduzca 6.
• Serial Port Control Length debe ser menor o igual que el tamaño de Destination.
• Si desea establecer la longitud de control del puerto serie igual que el tamaño de Destination, introduzca 0.
Characters Read DINT inmediato 0 Durante la ejecución, muestra el número de caracteres leídos.
ARL(Channel,Destination,SerialPortControl);
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
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.
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.
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
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.
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta cuando la condición de entrada del renglón cambia de borrado a establecido.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción retira los caracteres especificados del búfer y los almacena en el destino.
El bit .EN se establece.
Los bits de estado restantes, excepto .UL, se borran.
La instrucción trata de entrar en la cola ASCII.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
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
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;
/MV_line.EN
ENDNER
ASCII Test For Buffer LineChannel 0SerialPort Control MV_lineCharacter Count 0
ABLABLASCII Test For Buffer LineChannelSerialPort ControlCharacters Count
MV_line
ENDNER
MV_line.EN
MV_line.FD
EN
DN
ER
ASCII Read LineChannel 0Destination MV_msg
''SerialPort Control MV_readSerialPort Control Length 12Characters Read 0
ARLARLASCII Read LineChannelDestination
SerialPort ControlSerialPort Control LengthCharacters Read
EN
DN
ER
MV_line.EN
MV_line.EN
MV_line.FD
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 (AWA)
La instrucción AWA envía un número especificado de caracteres del tag Source a un dispositivo serie, y añade uno o dos caracteres predefinidos.
Operandos:
Lógica de escalera de relés
Texto estructurado
Los operandos son los mismos que para la instrucción AWA de lógica de escalera de relés. Sin embargo, usted especifica los valores de Serial Port Control Length y Characters Sent accediendo a los miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL, en lugar de incluir los valores en la lista de operandos.
EN
DN
ER
ASCII Write Append Channel ?Source ?
??SerialPort Control ?SerialPort Control Length ?Characters Sent ?
AWAAWAASCII Write AppendChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
EN
DN
ER
Operando Tipo Formato Introduzca Notas
Channel DINT inmediato
tag
0
Source cadena
SINT
INT
DINT
tag tag que contiene los caracteres a enviar:
• Para un tipo de datos de cadena, introduzca el nombre del tag.
• Para una matriz SINT, INT o DINT, introduzca el primer elemento de la matriz.
• Si desea comparar, convertir o manipular los caracteres, use un tipo de datos de cadena.
• Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
Serial Port
Control
SERIAL_PORT_
CONTROL
tag tag que controla la operación
Serial Port Control Length
DINT inmediato número de caracteres a enviar
• Serial Port Control Length debe ser menor o igual que el tamaño de Source.
• Si desea establecer Serial Port Control Length igual que el número de caracteres en Source, introduzca 0.
Characters Sent DINT inmediato 0 Durante la ejecución, muestra el número de caracteres enviados.
AWA(Channel,Source,SerialPortControl);
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
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?
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.
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.
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
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?
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
Si Entonces
la respuesta es afirmativa
En Serial Port Control Length, introduzca el número de caracteres a enviar.
la respuesta es negativa
Antes de que se ejecute la instrucción, establezca el miembro LEN del tag Source al miembro LEN del tag Serial Port Control.
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta cuando la condición de entrada del renglón cambia de borrado a establecido.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción envía un número especificado de caracteres y añade uno o dos caracteres predefinidos.
El bit .EN se establece.
Los bits de estado restantes, excepto .UL, se borran.
La instrucción trata de entrar en la cola ASCII.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
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
Texto estructurado
IF temp_high THEN
temp_high_write.LEN := 5;
AWA(0,string[1],temp_high_write);
temp_high := 0;
END_IF;
temp_high
EN
DN
ER
ASCII Write AppendChannel 0Source string[1]
'$1425\1'SerialPort Control temp_high_writeSerialPort Control Length 5Characters Sent 6
AWAAWAASCII Write AppendChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
string[1]
temp_high_write
EN
DN
ER
temp_high
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
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;
alarm
MoveSource alarm_msg.LEN 5Dest alarm_write.LEN 5
MOVEN
DN
ER
ASCII Write AppendChannel 0Source alarm_msg
'$1425\1'SerialPort Control alarm_writeSerialPort Control Length 5Characters Sent 6
AWAAWA
ASCII Write AppendChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
alarm_msg
alarm_write
EN
DN
ER
MOV
MoveSource alarm_msg.LEN
Dest. alarm_write.LEN
alarm
Publicación 1756-RM003K-ES-P – Julio 2008 593
Capítulo 17 Instrucciones para puerto serie ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)
Escritura ASCII (ASCII Write (AWT))
La instrucción AWT envía un número especificado de caracteres del tag de origen a un dispositivo serie.
Operandos:
Lógica de escalera de relés
Texto estructurado
Los operandos son los mismos que para la instrucción AWT de lógica de escalera de relés. Sin embargo, usted especifica los valores de Serial Port Control Length y Characters Sent accediendo a los miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL, en lugar de incluir los valores en la lista de operandos.
EN
DN
ER
ASCII WriteChannel ?Source ?
??SerialPort Control ?SerialPort Control Length ?Characters Sent ?
AWTAWTASCII WriteChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
DN
ER
EN
Operando Tipo Formato Introduzca Notas
Channel DINT inmediato
tag
0
Source cadena
SINT
INT
DINT
tag tag que contiene los caracteres a enviar:
• Para un tipo de datos de cadena, introduzca el nombre del tag.
• Para una matriz SINT, INT o DINT, introduzca el primer elemento de la matriz.
• Si desea comparar, convertir o manipular los caracteres, use un tipo de datos de cadena.
• Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
Serial Port
Control
SERIAL_PORT_
CONTROL
tag tag que controla la operación
Serial Port Control Length
DINT inmediato el número de caracteres a enviar
• Serial Port Control Length debe ser menor o igual que el tamaño de Source.
• Si desea establecer Serial Port Control Length igual que el número de caracteres en Source, introduzca 0.
Characters Sent DINT inmediato 0 Durante la ejecución, muestra el número de caracteres enviados.
AWT(Channel,Source,SerialPortControl);
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
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:
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?
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.
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
Si Entonces
la respuesta es afirmativa
En Serial Port Control Length, introduzca el número de caracteres a enviar.
la respuesta es negativa
Antes de que se ejecute la instrucción, mueva el miembro LEN del tag Source al miembro LEN del tag Serial Port Control.
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
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
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta cuando la condición de entrada del renglón cambia de borrado a establecido.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción 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 falsa.
Ninguna.
temp_low
EN
DN
ER
ASCII WriteChannel 0Source string[2]
'$142224\01$r'SerialPort Control temp_low_writeSerialPort Control Length 9Characters Sent 9
AWTAWT
ASCII Write ChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
string[2]
temp_low_write
EN
DN
ER
temp_low
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
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;
MV_update
MoveSource MV_msg.LEN
10Dest MV_write.LEN
10
MOVEN
DN
ER
ASCII WriteChannel 0Source MV_msg
'$161365\8\1$r'SerialPort Control MV_writeSerialPort Control Length 10Characters Sent 10
AWTAWTASCII Write ChannelSource
SerialPort ControlSerialPort Control LengthCharacters Sent
MV_msg
MV_write
EN
DN
ER
MOVMoveSource MV_msg.LEN
Dest. MV_write.LEN
MV_update
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.
También es posible usar las siguientes instrucciones para comparar o convertir caracteres ASCII:
Si desea Por ejemplo Use esta instrucción
Disponible en estos lenguajes
Vea la página
añadir caracteres al final de una cadena
añadir caracteres de terminación o delimitadores a una cadena
CONCAT lógica de escalera de relés
texto estructurado
601
eliminar caracteres de una cadena eliminar caracteres de encabezado o control de una cadena
DELETE lógica de escalera de relés
texto estructurado
603
determinar el carácter inicial de una subcadena
hallar un grupo de caracteres dentro de una cadena
FIND lógica de escalera de relés
texto estructurado
605
insertar caracteres dentro de una cadena
crear una cadena que usa variables INSERT lógica de escalera de relés
texto estructurado
607
extraer caracteres de una cadena extraer información de un código de barra
MID lógica de escalera de relés
texto estructurado
609
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)
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:
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
Si desea Use esta instrucción Vea la página
Nombre Tipo de datos Descripción Notas
LEN DINT número de caracteres en la cadena
El LEN se actualiza automáticamente al nuevo conteo de caracteres 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 LEN.
DATA Matriz SINT caracteres ASCII de la cadena
• Para obtener acceso a los caracteres de la cadena, utilice el nombre del tag.
Por ejemplo, para acceder a los caracteres del tag string_1, introduzca string_1.
• Cada elemento de la matriz DATA contiene un carácter.
• Usted puede crear nuevos tipos de datos de cadena que almacenen menos o más caracteres.
600 Publicación 1756-RM003K-ES-P – Julio 2008
Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID) Capítulo 18
Concatenación de cadenas (CONCAT)
La instrucción CONCAT añade caracteres ASCII al final de una cadena.
Operandos:
Lógica de escalera de relés
Texto estructurado
Los operandos son iguales a los de la instrucción CONCAT de lógica de escalera de relés.
Descripción: La instrucción CONCAT combina los caracteres en Source A con los caracteres en Source B y coloca el resultado en Destination.
• Los caracteres de Source A son los primeros, seguidos por los caracteres de Source B.
• A menos que Source A y Destination sean el mismo tag, Source A no cambia.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
String ConcatenateSource A ? ??Source B ? ??Dest ? ??
CONCATSting ConcatenateSource A ?
??Source B ?
??Dest ?
??
CONCAT
Operando Tipo Formato Introduzca Notas
Source A cadena tag tag que contiene los caracteres iniciales
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
Source B cadena tag tag que contiene los caracteres finales
Destination cadena tag tag para almacenar el resultado
CONCAT(SourceA,SourceB,Dest);
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es mayor que el tamaño de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
Publicación 1756-RM003K-ES-P – Julio 2008 601
Capítulo 18 Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Ejecución:
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
Texto estructurado
IF add_node THEN
CONCAT(string_1,node_num_ascii,msg);
add_node := 0;
END_IF;
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción concatena las cadenas.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
add_node
String ConcatenateSource A string_1
'$1423\'Source B node_num_ascii
'1'Dest msg
'$1423\1'
CONCATSting ConcatenateSource A string_1
’$1423\’Source B node_num_ascii
’1’Dest msg
’$1423\1’
CONCAT
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 (DELETE)
La instrucción DELETE retira los caracteres ASCII de una cadena.
Operandos:
Lógica de escalera de relés
Texto estructurado
Los operandos son iguales a los de la instrucción DELETE de lógica de escalera de relés.
Descripción: La instrucción DELETE elimina (retira) un grupo de caracteres de Source y coloca los caracteres restantes en Destination.
• La posición Start así como Quantity definen los caracteres a retirar.
• A menos que Source y Destination sean el mismo tag, Source no cambia.
String DeleteSource ? ??Qty ? ??Start ? ??Dest ? ??
DELETEDELETESting DeleteSource ?
??Qty ?
??Start ?
??Dest ?
??
Operando Tipo Formato Introduzca Notas
Source cadena tag el tag que contiene la cadena de la cual se desea eliminar los caracteres
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
Quantity SINT
INT
DINT
inmediato
tag
el número de caracteres que se desea eliminar
Start así como Quantity deben ser menores o iguales al tamaño de DATA de Source.
Start SINT
INT
DINT
inmediato
tag
la posición del primer carácter que se debe eliminar
Introduzca un número entre 1 y el tamaño de DATA de Source.
Destination cadena tag tag para almacenar el resultado
DELETE(Source,Qty,Start,Dest);
Publicación 1756-RM003K-ES-P – Julio 2008 603
Capítulo 18 Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
Ejecución:
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
Texto estructuradoIF term_read.EM THEN
DELETE(term_input,1,1,term_text);
term_read.EM := 0;
END_IF;
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es mayor que el tamaño de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
4 56 El valor de Start o Quantity no es válido.
1. Verifique que el valor de Start esté entre 1 y el tamaño de DATA de Source.
2. Verifique que el valor de Start más el valor Quantity sea menor o igual que el tamaño de DATA de Source.
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa. Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa. n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción elimina los caracteres especificados.
post-escán La condición de salida de renglón se establece como falsa. Ninguna.
term_read.EM
String DeleteSource term_input
'$0655'Qty 1
Start 1
Dest term_text
'55'
DELETE DELETESting DeleteSource term_input
’$0655’Qty 1
Start 1
Dest term_text’55’
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:
Lógica de escalera de relés
Texto estructurado
Los operandos son iguales a los de la instrucción FIND de lógica de escalera de relés antes descritos.
Descripción: La instrucción FIND busca en la cadena Source la cadena Search. Si la instrucción encuentra la cadena Search, Result muestra la posición de inicio de la cadena Search dentro de la cadena Source.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
Find StringSource ? ??Search ? ??Start ? ??Result ? ??
FINDFINDFind StringSource ?
??Search ?
??Start ?
??Result ?
??
Operando Tipo Formato Introduzca Notas
Source cadena tag cadena en que se debe buscar
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
Buscar cadena tag la cadena que se debe buscar
Start SINT
INT
DINT
inmediato
tag
la posición en Source en la cual se debe iniciar la búsqueda
Introduzca un número entre 1 y el tamaño de DATA de Source.
Result SINT
INT
DINT
tag el tag que almacena la posición inicial de la cadena que se debe buscar
FIND(Source,Search,Start,Result);
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es mayor que el tamaño de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
4 56 El valor de Start no es válido. 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:
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
Texto estructurado
IF MV_read.EM THEN
FIND(MV_msg,find,1,find_pos);
MV_read.EM := 0;
END_IF;
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción busca los caracteres especificados.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
MV_read.EM
Find StringSource MV_msg '$06324\12\1\$r'Search find
'\'Start 1
Result find_pos
5
FIND FINDFind StringSource MV_msg
’$06324\12\1\$r’Search find
’\’Start 1
Result find_pos5
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:
Lógica de escalera de relés
Texto estructurado
Los operandos son iguales a los de la instrucción INSERT de lógica de escalera de relés.
Descripción: La instrucción INSERT añade los caracteres en Source B a una posición designada dentro de Source A y coloca el resultado en Destination:
• Inicio define dónde se añade en Source A dicho Source B.
• A menos que SourceA y Destination sean el mismo tag, Source A no cambia.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
Insert StringSource A ? ??Source B ? ??Start ? ??Dest ? ??
INSERTINSERTInsert StringSource A ?
??Source B ?
??Start ?
??Dest ?
??
Operando Tipo Formato Introduzca Notas
Source A cadena tag la cadena a la cual se deben añadir los caracteres
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
Source B cadena tag la cadena que contiene los caracteres que se deben añadir
Start SINT
INT
DINT
inmediato
tag
la posición en Source A a la cual se deben añadir los caracteres
Introduzca un número entre 1 y el tamaño de DATA de Source.
Result cadena tag cadena para almacenar el resultado
INSERT(SourceA,SourceB,Start,Dest);
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es mayor que el tamaño de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
4 56 El valor de Start no es válido. 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:
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
Texto estructurado
IF temp_high THEN
INSERT(string_1,string_2,2,string_3);
temp_high := 0;
END_IF;
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción inserta los caracteres especificados.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
temp_high
Insert StringSource A string_1
'AD'Source B string_2
'BC'Start 2
Dest string_3
'ABCD'
INSERTINSERTInsert StringSource A string_1
’AD’Source B string_2
’BC’Start 2
Dest string_3’ABCD’
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
Texto estructurado
Los operandos son iguales a los de la instrucción MID de lógica de escalera de relés.
Descripción: La instrucción MID copia un grupo de caracteres desde Source y coloca el resultado en Destination.
• La posición Start así como Quantity definen los caracteres a copiar.
• A menos que Source y Destination sean el mismo tag, Source no cambia.
Indicadores de estadoaritmético: no afectados
Middle StringSource ? ??Qty ? ??Start ? ??Dest ? ??
MIDMIDMiddle StringSource ?
??Qty ?
??Start ?
??Dest ?
??
Operando Tipo Formato Introduzca Notas
Source cadena tag la cadena de la cual se deben copiar los caracteres
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
Quantity SINT
INT
DINT
inmediato
tag
el número de caracteres que se desea copiar
Start así como Quantity deben ser menores o iguales al tamaño de DATA de Source.
Start SINT
INT
DINT
inmediato
tag
la posición del primer carácter que se debe copiar
Introduzca un número entre 1 y el tamaño de DATA de Source.
Destination cadena tag la cadena a la cual se deben copiar los caracteres
MID(Source,Qty,Start,Dest);
Publicación 1756-RM003K-ES-P – Julio 2008 609
Capítulo 18 Instrucciones de cadena ASCII (CONCAT, DELETE, FIND, INSERT, MID)
Condiciones de fallo:
Ejecución:
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
Texto estructurado
IF bag_read.EM THEN
MID(bar_barcode,9,9,bag_flt_and_dest);
bag_read.EM := 0;
END_IF;
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es mayor que el tamaño de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
4 56 El valor de Start o Quantity no es válido.
1. Verifique que el valor de inicio esté entre 1 y el tamaño de DATA de Source.
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.
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa. Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa. n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción 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.
bag_read.EM
Middle StringSource bag_barcode 'NWA HOP 5058 AMS 01'
Qty 9
Start 9
Dest bag_flt_and_dest '5058 AMS '
MIDMIDMiddle StringSource bag_barcode
’NWA HOP 5058 AMS 01’Qty 9
Start 9
Dest bag_flt_and_dest’5058 AMS’
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 instrucción
Disponible en estos lenguajes
Vea la página
convertir la representación ASCII de un valor entero en un valor SINT, INT, DINT o REAL
convertir un valor proveniente de una báscula u otro dispositivo ASCII en un número entero para usarlo en la lógica
STOD lógica de escalera de relés
texto estructurado
614
convertir la representación ASCII de un valor de punto flotante (coma flotante) en un valor REAL
convertir un valor proveniente de una báscula u otro dispositivo ASCII en un valor REAL para usarlo en la lógica
STOR lógica de escalera de relés
texto estructurado
616
convertir un valor SINT, INT, DINT o REAL en una cadena de caracteres ASCII
convertir una variable en una cadena ASCII para enviarla a un terminal MessageView
DTOS lógica de escalera de relés
texto estructurado
619
convertir un valor REAL en una cadena de caracteres ASCII
convertir una variable en una cadena ASCII para enviarla a un terminal MessageView
RTOS lógica de escalera de relés
texto estructurado
621
convertir en mayúsculas las letras de una cadena de caracteres ASCII
convertir en mayúsculas una entrada hecha por un operador para poder buscarla en una matriz
UPPER lógica de escalera de relés
texto estructurado
623
convertir en minúsculas las letras en una cadena de caracteres ASCII
convertir en minúsculas una entrada hecha por un operador para poder buscarla en una matriz
LOWER lógica de escalera de relés
texto estructurado
625
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 datos:
Descripción: Notas:
LEN DINT número de caracteres en la cadena
El LEN se actualiza automáticamente con el nuevo conteo de los caracteres cuando usted:
• usa el cuadro de diálogo String Browser para introducir caracteres
• usa instrucciones que leen, convierten o manipulan una cadena
El LEN muestra la longitud de la cadena actual. El miembro DATA puede contener caracteres adicionales antiguos, los cuales no se incluyen en el conteo LEN.
DATA Matriz SINT caracteres ASCII de la cadena
• Para obtener acceso a los caracteres de la cadena, utilice el nombre del tag.
Por ejemplo, para acceder a los caracteres del tag string_1, introduzca string_1.
• Cada elemento de la matriz DATA contiene un carácter.
• Usted puede crear nuevos tipos de datos de cadena que almacenen menos o más caracteres.
Publicación 1756-RM003K-ES-P – Julio 2008 613
Capítulo 19 Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
Cadena en DINT (STOD) La instrucción STOD convierte la representación ASCII de un número entero en un valor entero o REAL.
Operandos:
Lógica de escalera de relés
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
String To DINTSource ? ??Dest ? ??
STODString To DINTSource ?
??Dest ?
??
STOD
Operando Tipo Formato Introduzca Notas
Source cadena tag el tag que contiene el valor en ASCII
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
Destination SINT
INT
DINT
REAL
tag el tag en que se almacena el valor entero
Si el valor Source es un número de punto flotante (coma flotante), la instrucción convierte solamente la parte no fraccionaria del número (independientemente del tipo de datos de destino).
STOD(Source,Dest);
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
Ejecución:
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
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es mayor que el tamaño de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
4 53 El número de salida sobrepasa los límites del tipo de datos de destino.
Realice uno de los siguientes:
• Reduzca el tamaño del valor ASCII.
• Use un tipo de datos mayor para el destino.
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción SC se establece
Destination se borra.
La instrucción convierte Source.
Si el resultado es cero, S:Z se establece.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
MV_read.EM
String To DINTSource MV_msg '$06324\12\1\$r'Dest MV_msg_nmbr
324
STODString To DINTSource MV_msg
’$06324\12\1\$r’Dest MV_msg_nmbr
324
STOD
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:
Operadores de escalera de relé
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 estadoaritmético: Los indicadores de estado aritmético son afectados.
String to RealSource ? ??Dest ? ??
STORSTORString to RealSource ?
??Dest ?
??
Operando Tipo Formato Introduzca Notas
Source cadena tag el tag que contiene el valor en ASCII
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
Destination REAL tag el tag en que se almacena el valor REAL
STOR(Source,Dest);
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:
Ejecución:
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
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es mayor que el tamaño de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
4 53 El número de salida sobrepasa los límites del tipo de datos de destino.
Realice uno de los siguientes:
• Reduzca el tamaño del valor ASCII.
• Use un tipo de datos mayor para el destino.
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción S:C se establece.
Destination se borra.
La instrucción convierte Source.
Si el resultado es cero, S:Z se establece.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
weight_read.EM
String to RealSource weight_ascii
'428.259'Dest weight
428.259
STORString to RealSource weight_axcii
’428.259’Dest weight
428.259
STOR
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:
Lógica de escalera de relés
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 estadoaritmético: no afectados
Condiciones de fallo:
DINT to StringSource ? ??Dest ? ??
DTOSDTOSDINT to StringSource ?
??Dest ?
??
Operando Tipo Formato Introduzca Notas
Source SINT
INT
DINT
REAL
tag el tag que contiene el valor Si Source es un número REAL, la instrucción lo convierte en un valor DINT. Consulte REAL en un número entero en la página 640.
Destination cadena tag el tag en que se almacena el valor ASCII
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
DTOS(Source,Dest);
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es mayor que el tamaño de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
4 52 La cadena de salida es mayor que el destino. 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:
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
Texto estructurado
IF temp_high THEN
DTOS(msg_num,msg_num_ascii);
temp_high := 0;
END_IF;
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción convierte Source.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
temp_high
DINT to StringSource msg_num
23Dest msg_num_ascii
'23'
DTOSDTOSDINT to StringSource msg_num
23Dest msg_num_ascii
’23’
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
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 estadoaritmético: no afectados
Condiciones de fallo:
Real to StringSource ? ??Dest ? ??
RTOSRTOSReal to StringSource ?
??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 el valor ASCII
Los tipos de datos de cadena son:
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted cree
RTOS(Source,Dest);
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es mayor que el tamaño de DATA del tag de cadena.
1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
4 52 La cadena de salida es mayor que el destino. 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:
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
Texto estructurado
IF send_data THEN
RTOS(data_1,data_1_ascii);
send_data := 0;
END_IF;
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción convierte Source.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
send_data
Real to StringSource data_1
15.3001Dest data_1_ascii '15.3001003'
RTOSRTOSReal to StringSource data_1
15.3001Dest data_1_ascii
’15.301003’
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
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
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);
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
Publicación 1756-RM003K-ES-P – Julio 2008 623
Capítulo 19 Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
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;
EnableIn se establece n .a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción convierte Source en mayúsculas.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
Condición Acción de lógica de escalera de relés Acción de texto estructurado
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 (LOWER))
La instrucción LOWER convierte en minúsculas los caracteres alfabéticos de una cadena.
Operandos:
Lógica de escalera de relés
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
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);
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa.
Ninguna.
condición de entrada de renglón es falsa
La condición de salida de renglón se establece como falsa.
n. a.
condición de entrada de renglón es verdadera
La instrucción se ejecuta.
La condición de salida de renglón se establece como verdadera.
n. a.
Publicación 1756-RM003K-ES-P – Julio 2008 625
Capítulo 19 Instrucciones de conversión ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER)
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;
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción convierte Source en minúsculas.
post-escán La condición de salida de renglón se establece como falsa.
Ninguna.
Condición Acción de lógica de escalera de relés Acción de texto estructurado
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.
Puntos de interrupción (BPT)
Los puntos de interrupción detienen la emulación del programa cuando un renglón es verdadero.
Operandos:
Lógica de escalera de relés
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.
Si desea Use esta instrucción Disponible en estos lenguajes Vea la página
detener la emulación del programa cuando un renglón es verdadero
BPT lógica de escalera de relés 627
registrar datos que usted selecciona cuando un renglón es verdadero
TPT lógica de escalera de relés 631
Operando Tipo Formato Descripción
Formato Cadena tag Una cadena que establece el formateo del texto que aparece en la ventana de rastreo del punto de interrupción.
Rastrear esto
BOOL, SINT, INT, DINT, REAL
tag El tag que tiene un valor que usted desea mostrar en la ventana de rastreo.
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.
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).
ATENCIÓN Cuando se activa un punto de interrupción, usted no podrá editar su proyecto hasta que permita que continúe la ejecución. Puede entrar en línea con el emulador para observar el estado de su proyecto, pero no podrá editarlo. Si intenta aceptar una edición de renglón mientras que está activado un punto de interrupción, aparece un cuadro de diálogo que indica que el controlador no está en el modo correcto.
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
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.
El encabezado (el texto que precede el signo de dos puntos en la cadena de formato) aparece aquí.
El número de ranura indica la ranura que contiene el módulo emulador que tiene el punto de rastreo o el punto de interrupción rastreado en la ventana de rastreo.
El texto para el valor REAL (representado en la cadena de formato mediante %e) aparece aquí.
El texto para el valor INT (representado en la cadena de formato mediante %d) aparece aquí.
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.
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
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.
Operando Tipo Formato Descripción
Format Cadena tag Una cadena que establece el formateo de los informes de rastreo (tanto en pantalla como registrados en el disco).
Trace This BOOL, SINT, INT, DINT,REAL
tag El tag que usted desea rastrear.
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.
. Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejecución:
El encabezado (el texto que precede el signo de dos puntos en la cadena de formato) aparece aquí.
El número de ranura indica la ranura que contiene el módulo emulador que tiene el punto de rastreo o el punto de interrupción rastreado en la ventana de rastreo.
El texto para el valor REAL (representado en la cadena de formato mediante %e) aparece aquí.
El texto para el valor INT (representado en la cadena de formato mediante %d) aparece aquí.
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.
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).
Conversiones de datos Las conversiones de datos ocurren cuando usted mezcla diferentes tipos de datos en la programación:
Si desea información acerca de Vea la página
Valores inmediatos 635
Conversiones de datos 635
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)
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?
• 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.
Si Los operandos de entrada (por ejemplo, origen, tag en una expresión, límite) se convierten en:
La respuesta es afirmativa
REAL
La respuesta es negativa
DINT
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.
Los siguientes ejemplos muestran los resultados de convertir un valor mediante extensión de signo y 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.
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.
Este valor 2#1111_1111_1111_1111 (-1)
Se convierte en este valor mediante extensión de signo
2#1111_1111_1111_1111_1111_1111_1111_1111 (-1)
Se convierte en este valor mediante relleno con ceros
2#0000_0000_0000_0000_1111_1111_1111_1111 (65535)
der Logic Listing - Total number of rungs: 3
EqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B 2#1111_1111_1111_1111
EQU
42093
Igual a (Equal)Source A remote_rack_1:I.Data[0]
2#1111_1111_1111_1111Source B 2#1111_1111_1111_1111
EQU
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.
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.
EqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B int_0 2#1111_1111_1111_1111
EQU
42093
2#1111_1111_1111_1111
MoveSource 2#1111_1111_1111_1111 Dest int_0 2#1111_1111_1111_1111
MOVEqualSource A remote_rack_1:I.Data[0] 2#1111_1111_1111_1111Source B int_0 2#1111_1111_1111_1111
EQU
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
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.
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
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.
Selección de elementos de bloques de funciones
Para controlar un dispositivo, use los siguientes elementos:
Use la siguiente tabla para seleccionar los elementos de bloques 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).
referencia de entrada (IREF) bloque de funciones
conector de cable de salida (OCON)
referencia de salida (OREF)
conector decable de entrada
(ICON)
Si usted desea Use una
suministrar un valor desde un dispositivo de entrada o tag
referencia de entrada (IREF)
enviar un valor a un dispositivo de salida o tag referencia de salida (OREF)
641Publicación 1756-RM003K-ES-P – Julio 2008 641
Apéndice B Atributos de bloque de funciones
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.
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.
realizar una operación con un valor o valores de entrada, y producir un valor o valores de salida
bloque de funciones
transferir datos entre bloques de funciones cuando éstos están:
• bastante separados en la misma hoja
• en hojas diferentes dentro de la misma rutina
conector de cable de salida (OCON) y un conector de cable de entrada (ICON)
dispersar datos a varios puntos en la rutina conector de cable de una salida (OCON) y varios conectores de cable de entrada (ICON)
Si usted desea Use una
IREF
tagA
Block_01
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.
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.
tagA
Block_01
Block_02
tagA
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.
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 2 3
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.
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.
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.
Este pin de entrada usa unasalida que el bloque produjo en
el escán anterior.
?? ?
1 2 3
Este pin de entrada usa la salidaque el bloque 3 produjo en el
escán anterior.
Indicador Suponer datos disponibles
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
El indicador Suponer datos disponibles define el flujo de datos dentro del lazo.
El controlador no puede resolver el lazo porque los cables usan el indicador Suponer datos disponibles.
Indicador Suponer datos disponibles
21 ??
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.
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.
Esto es correcto Esto no es correcto
Ningún cable usa el indicador Suponer datos disponibles.
Ambos cables usan el indicador Suponer datos disponibles.
Un cable usa el indicador Suponer datos disponibles y el otro cable no.
Indicador Suponer datos disponibles
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 funciones a condiciones de overflow
En general, las instrucciones de bloque de funciones que mantienen el historial no actualizan el historial con valores ±NAN o ±INF cuando se produce un overflow. Cada instrucción tiene una de estas respuestas frente a una condición de overflow:
Respuesta 1:
Los bloques ejecutan su algoritmo y verifican el resultado para ±NAN o ±INF. Si ±NAN o ±INF, el bloque establece la salida ±NAN o ±INF.
Respuesta 2:
Los bloques con límite de salida ejecutan su algoritmo y verifican el resultado para ±NAN o ±INF. Los límites de salida son 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.
Respuesta 3:
La condición de overflow no se aplica. Estas instrucciones generalmente tienen una salida booleana.
ALMNTCH
DEDTPMUL
DERVPOSP
ESELRLIM
FGENRMPS
HPFSCRV
LDL2SEL
LDLGSNEG
LPFSRTP
MAVESSUM
MAXCTOT
MINCUPDN
MSTD
MUX
HLL
INTG
PI
PIDE
SCL
SOC
BANDOSRI
BNOTRESD
BORRTOR
BXORSETD
CUTDTOFR
D2SDTONR
D3SD
DFF
JKFF
OSFI
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.
Hay tres modos de temporización diferentes:
DEDT
DERV
HPF
INTG
LDL2
LDLG
LPF
NTCH
PI
PIDE
RLIM
SCRV
SOC
TOT
Modo de temporización
Descripció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 ejecuta en
DeltaT es igual a
una tarea periódica el período de la tarea
un evento o una tarea continua
el tiempo transcurrido desde la ejecución previa
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
649Apéndice B Atributos de bloque de funciones
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.
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.
Modo de temporización
Descripció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 entrada
Tipo de datos Descripción
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ámetros de salida
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ámetro de entrada
Tipo de datos Descripción
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 (Status.27)
BOOL Valor no válido de TimingMode.
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 (Status.29)
BOOL Valor no válido de RTSTime.
RTSTimeStampInv (Status.30)
BOOL Valor no válido de RTSTimeStamp.
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.
TimingMode = 2TimingMode = 1TimingMode = 0
Determine el modo de base de tiempo
Temporización en tiempo realTemporización de sobremuestreoTemporización periódica
Determine el tipo de tarea
Tarea periódica Evento o tarea continua
DeltaT = OversampleDT
Si DeltaT < 0 o DeltaT > 4194.303 segundos, la instrucción establece DeltaT = 0.0 y establece el bit apropiado en Status.
Si DeltaT > 0, la instrucción se ejecuta.
DeltaT = RTSTimeStampn - RTSTimeStampn-1
Si DeltaT > 0, la instrucción se ejecuta.
Si |RTSTIME - DeltaT| > 1, la instrucción establece el bit RTSMissed en Status.
DeltaT = tiempo de escán de tarea
Si DeltaT > 0, la instrucción se ejecuta.
DeltaT = tiempo transcurrido desde la última ejecución
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/operador
Hay varias instrucciones compatibles con el concepto de control de programa/operador. Estas instrucciones incluyen:
• 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:
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.
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.
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.
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.
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.
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.
Sintaxis del texto estructurado
El texto estructurado es un lenguaje de programación textual que usa declaraciones para definir lo que se va a ejecutar.
• 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:
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
Término Definición Ejemplos
asignación
(ver página 661)
Use una declaración de asignación para asignar valores a los tags.
El operador := es el operador de asignación.
Termine la asignación con un punto y coma “;”.
tag := expression;
659Publicación 1756-RM003K-ES-P – Julio 2008 659
Apéndice C Programación de texto estructurado
expresión
(ver página 663)
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 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 se almacenan los datos (BOOL, SINT,INT,DINT, REAL, cadena).
value1
inmediatos Un valor constante. 4
operadores Un símbolo o mnemónico que especifica una operación dentro de una expresión.
tag1 + tag2
tag1 >= value1
funciones Cuando se ejecuta, una función produce un valor. 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.
function(tag1)
instrucción
(ver página 670)
Una instrucción es una declaración autónoma.
Una instrucción usa paréntesis para delimitar sus operandos.
Según la instrucción, puede haber cero, uno o varios operandos.
Cuando se ejecuta, una instrucción produce uno o más valores que son parte de una estructura de datos.
Termine la instrucción con un punto y coma “;”.
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.
instruction();
instruction(operand);
instruction(operand1, operand2,operand3);
Término Definición Ejemplos
660 Publicación 1756-RM003K-ES-P – Julio 2008
Programación de texto estructurado Apéndice C
Asignaciones Use una asignación para cambiar el valor almacenado dentro de un tag. Una asignación tiene esta sintaxis:
tag := expression ;
donde:
construcción
(ver página 671)
Una declaración condicional usada para activar código de texto estructurado (a saber, otras declaraciones).
Termine la construcción con un punto y coma “;”.
IF...THEN
CASE
FOR...DO
WHILE...DO
REPEAT...UNTIL
EXIT
comentario
(ver página 687)
Texto que explica o aclara lo que hace una sección de texto estructurado.
• Use comentarios para facilitar la interpretación del texto estructurado.
• Los comentarios no tienen ningún efecto en la ejecución del texto estructurado.
• Los comentarios pueden aparecer en cualquier lugar del texto estructurado.
//comment
(*start of comment . . . end of comment*)
/*start of comment . . . end of comment*/
Término Definición Ejemplos
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 datos:
Use este tipo de expresión:
BOOL expresión BOOL
SINT
INT
DINT
REAL
expresión numérica
; 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 datos:
Use este tipo de expresión:
BOOL expresión BOOL
SINT
INT
DINT
REAL
expresión numérica
; 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:
Para añadir o insertar una cadena de caracteres en un tag de cadena, use cualquiera de estas instrucciones de cadena ASCII:
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.
Esto es correcto Esto no es correcto.
string1.DATA[0]:= 65; string1.DATA[0] := A;
string1.DATA[0]:= string2.DATA[0]; string1 := string2;
Para Use esta instrucción
añadir caracteres al final de una cadena CONCAT
insertar caracteres dentro de una cadena INSERT
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 verdaderas o falsas
“Use operadores lógicos”en la página 668.
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.
Las funciones aritméticas realizan operaciones matemáticas. Especifique una constante, un tag no booleano o una expresión para la función.
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 división
MOD DINT, REAL
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 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:
Use los siguientes operadores relacionales:
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 especificación dice: “Añadir 15 a gain_4 y almacenar el resultado en gain_4_adj.”
gain_4_adj := gain_4+15;
operator value1 Si alarm y high_alarm son valores DINT y su especificación dice: “Cambiar signo de high_alarm y almacenar el resultado en alarm.”
alarm:= -high_alarm;
function(numeric_expression) Si overtravel y overtravel_POS son tags DINT y su especificación dice: “Calcular el valor absoluto de overtravel y almacenar el resultado en overtravel_POS.”
overtravel_POS := ABS(overtravel);
value1 operator (function((value2+value3)/2)
Si adjustment y position son tags DINT, sensor1 y sensor2 son tags REAL, y su especificación dice: “Encontrar el valor absoluto del promedio de sensor1 y sensor2, añadir el adjustment y guardar el resultado en position.”
position := adjustment + ABS((sensor1 + sensor2)/2);
Si la comparación es El resultado es
verdadera 1
falsa 0
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:
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.
• 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.
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: “Si temp es menor que 100° entonces…”
IF temp<100 THEN...
stringtag1 operator stringtag2
Si bar_code y dest son tags de cadena y su especificación dice: “Si bar_code es igual a dest entonces…”
IF bar_code=dest THEN...
char1 operator char2
Para introducir un carácter ASCII directamente en la expresión, introduzca el valor decimal del carácter.
Si bar_code es un tag de cadena y su especificación dice: “Si bar_code.DATA[0] es igual a ’A’ entonces…”
IF bar_code.DATA[0]=65 THEN...
bool_tag := bool_expressions
Si count y length son tags DINT, done es un tag BOOL y su especificación dice “Si count es mayor o igual que length, usted ya terminó el conteo.”
done := (count >= length);
Caracteres ASCII Códigos hexadecimales
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
mayor
menor
AB < B
a > B
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.
Use los siguientes operadores lógicos:
Por ejemplo:
Si la comparación es El resultado es
verdadera 1
falsa 0
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
Use este formato Ejemplo
Para esta situación Usted escribiría
BOOLtag Si photoeye es un tag BOOL y su especificación dice: “Si photoeye está activada, entonces…”
IF photoeye THEN...
NOT BOOLtag Si photoeye es un tag BOOL y su especificación dice: “Si photoeye está desactivada entonces…”
IF NOT photoeye THEN...
expression1 & expression2 Si photoeye es un tag BOOL, temp es un tag DINT y su especificación dice: “Si photoeye está activada y temp es menor que 100° entonces…”.
IF photoeye & (temp<100) THEN...
expression1 OR expression2 Si photoeye es un tag BOOL, temp es un tag DINT y su especificación dice: “Si photoeye está activada o temp es menor que 100° entonces…”.
IF photoeye O (temp<100) THEN...
expression1 XOR expression2 Si photoeye1 y photoeye2 son tags BOOL y su especificación dice: “Si:
• photoeye1 está activada mientras que photoeye2 está desactivada o
• photoeye1 está desactivada mientras que photoeye2 está activada
entonces…”
IF photoeye1 XOR photoeye2 THEN...
BOOLtag := expression1 & expression2
Si photoeye1 y photoeye2 son tags BOOL, open es un tag BOOL y su especificación dice: “Si photoeye1 y photoeye2 están ambas activadas, establezca open en verdadero”.
abrir := photoeye1 y photoeye2;
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.
Por ejemplo:
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.
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
Use este formato Ejemplo
Para esta situación Usted escribiría
value1 operator value2 Si input1, input2, y result1 son tags DINT y su especificación dice: “Calcule el resultado a nivel de bits de input1 e input2. Guarde el resultado en result1.”
result1 := input1 AND input2;
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.
Construcciones Las construcciones pueden programarse individualmente o anidadas dentro de otras construcciones.
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.
osri_1.InputBit := tag_xic;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
ABL(0,serial_control);
END_IF;
Si desea Use esta construcción Disponible en estos lenguajes Vea la página
hacer algo si o cuando ocurre una condición específica
IF...THEN texto estructurado 672
seleccionar qué hacer según a un valor numérico
CASE...OF texto estructurado 675
hacer algo un número específico de veces antes de hacer otra cosa
FOR...DO texto estructurado 678
continuar haciendo algo siempre que ciertas condiciones sean verdaderas
WHILE...DO texto estructurado 681
seguir haciendo algo hasta que una condición sea verdadera
REPEAT...UNTIL texto estructurado 684
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
Descripción: La sintaxis es:
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.
Operando Tipo Formato Introduzca
bool_expression
BOOL tag
expresión
Expresión o tag BOOL que evalúa respecto a un valor BOOL (expresión BOOL)
IF bool_expression THEN
<statement>;
END_IF;
IF bool_expression1 THEN
<statement >; declaraciones que deben ejecutarse cuando bool_expression1 es verdadero.
.
.
opcionalELSIF bool_expression2 THEN
<statement>; declaraciones que deben ejecutarse cuando bool_expression2 es verdadero.
.
.
opcionalELSE
<statement>; declaraciones que deben ejecutarse cuando ambas expresiones son falsas .
.
.
END_IF;
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo: ninguna
Ejemplo 1: IF…THEN
Ejemplo 2: IF…THEN…ELSE
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).
Si desea Y Use esta construcción
hacer algo si o cuando las condiciones son verdaderas
no hacer nada si las condiciones son falsas
IF…THEN
hacer algo diferente si las condiciones son falsas
IF…THEN…ELSE
seleccionar entre declaraciones alternativas (o grupos de declaraciones) según las condiciones de entrada
no hacer nada si las condiciones son falsas
IF…THEN…ELSIF
asignar declaraciones predeterminadas si todas las condiciones son falsas
IF…THEN…ELSIF…ELSE
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;
Si usted desea esto Introduzca este texto estructurado
Si el contacto de dirección del transportador = avance (1) entonces
IF conveyor_direction THEN
luz = apagada light := 0;
De lo contrario, luz = encendida ELSE
light [:=] 1;
END_IF;
Publicación 1756-RM003K-ES-P – Julio 2008 673
Apéndice C Programación de texto estructurado
Ejemplo 3: IF…THEN…ELSIF
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 el interruptor de final de carrera de azúcar baja = baja (activado) y el interruptor de final de carrera de azúcar alta = no alta (activado) entonces
IF Sugar.Low & Sugar.High THEN
válvula de entrada = abierta (activada) Sugar.Inlet [:=] 1;
Hasta que el interruptor de final de carrera de azúcar alta = alta (desactivado)
ELSIF NOT(Sugar.High) THEN
Sugar.Inlet := 0;
END_IF;
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
Descripción: La sintaxis es:
Operando Tipo Formato Introduzca
numeric_
expression
SINT
INT
DINT
REAL
tag
expresión
tag o expresión que evalúa respecto a un número (expresión numérica)
selector SINT
INT
DINT
REAL
inmediato el mismo tipo que numeric_expression
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.
CASE numeric_expression OF
selector1: statement;
selectorN: statement;
ELSE
statement;
END_CASE;
CASE numeric_expression OF
especifique todos losvalores de selector
alternativos (rutas) quenecesite
selector1 : <statement>;...
declaraciones a ejecutar cuando numeric_expression = selector1
selector2 : <statement>;...
declaraciones a ejecutar cuando numeric_expression = selector2
selector3 : <statement>;...
declaraciones a ejecutar cuando numeric_expression = selector3
opcional
ELSE
<statement>;...
declaraciones a ejecutar cuando 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:
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 estadoaritmético: no afectados
Condiciones de fallo: ninguna
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 rango de valores
valuea, valueb, value1..valueN : <statement>
676 Publicación 1756-RM003K-ES-P – Julio 2008
Programación de texto estructurado Apéndice C
Ejemplo
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).
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;
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
Operando Tipo Formato Descripción
count SINT
INT
DINT
tag tag para almacenar la posición de conteo a medida que FOR…DO se ejecuta
initial_ value
SINT
INT
DINT
tag
expresión
inmediato
se debe evaluar con respecto a un número
especifica el valor inicial del conteo
final_ value
SINT
INT
DINT
tag
expresión
inmediato
especifica el valor final del conteo, el cual determina cuándo salir del lazo
increment SINT
INT
DINT
tag
expresión
inmediato
(opcional) cantidad a incrementar el conteo cada vez que se pasa por el lazo
Si usted no especifica un incremento, el conteo se incrementa en 1.
FOR count:= initial_value TO final_value BY increment DO
<statement>;
END_FOR;
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:
Los siguientes diagramas muestran cómo se ejecuta un lazo FOR...DO y cómo una declaración EXIT deja el lazo anticipadamente.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
FOR count := initial_value
TO final_value
opcional { BY increment Si usted no especifica un incremento, el lazo se incrementa en 1.
DO
<statement>;
opcional
IF bool_expression THEN
EXIT; Si existen condiciones cuando usted desea salir del lazo anticipadamente, use otras declaraciones, tal como la construcción IF...THEN, para condicionar una declaración EXIT.
END_IF;
END_FOR;
declaración 1declaración 2declaración 3declaración 4…
¿Efectuado x veces?
no
sí
resto de la rutina
declaración 1declaración 2declaración 3declaración 4…¿Salir?
¿Efectuado x veces?
no
sí
resto de la rutina
sí
no
El lazo FOR…DO se ejecuta un número específico de veces.
Para detener el lazo antes de que el conteo llegue al último valor, use una declaración EXIT.
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
la construcción tiene un lazo excesivamente largo
6 1
Publicación 1756-RM003K-ES-P – Julio 2008 679
Apéndice C Programación de texto estructurado
Ejemplo 1:
Ejemplo 2:
Si usted desea esto Introduzca este texto estructurado
Borrar los bits 0 - 31 en una matriz de elementos BOOL:
1. Inicializar el tag subscript a 0.
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.
For subscript:=0 to 31 by 1 do
array[subscript] := 0;
End_for;
Si usted desea esto Introduzca este texto estructurado
Un tipo de datos definido por el usuario (estructura) almacena la siguiente información acerca de un ítem en su inventario:
• ID de código de barras del ítem (tipo de datos de cadena)
• Cantidad en inventario del ítem (tipo de datos DINT)
Una matriz de la estructura anterior contiene un elemento para cada ítem diferente en su inventario. Usted desea buscar la matriz para un producto específico (use su código de barras) y determine la cantidad que hay en inventario.
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.
SIZE(Inventory,0,Inventory_Items);
For position:=0 to Inventory_Items - 1 do
If Barcode = Inventory[position].ID then
Quantity := Inventory[position].Qty;
Exit;
End_if;
End_for;
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
Descripción: La sintaxis es:
Operando Tipo Formato Introduzca
bool_expression
BOOL tag
expresión
Expresión o tag BOOL que evalúa respecto a un valor BOOL
WHILE bool_expression DO
<statement>;
END_WHILE;
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.
WHILE bool_expression1 DO
<statement>; declaraciones que se ejecutan mientras bool_expression1 es verdadero
opcional
IF bool_expression2 THEN
EXIT; Si existen condiciones cuando usted desea salir del lazo anticipadamente, use otras declaraciones, tal como la construcción IF...THEN, para condicionar una declaración EXIT.
END_IF;
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
Ejemplo 1:
Mientras bool_expression es verdadero, el controlador ejecuta sólo las declaraciones dentro del lazo WHILE…DO.
Para detener el lazo antes de que las condiciones sean verdaderas, use una declaración EXIT.
declaración 1declaración 2declaración 3declaración 4…¿Salir?
expresión BOOL
verdadera
falsa
resto de la rutina
sí
no
declaración 1declaración 2declaración 3declaración 4…
expresión BOOL
verdadera
falsa
resto de la rutina
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
la construcción tiene un lazo excesivamente largo
6 1
Si usted desea esto Introduzca este texto estructurado
El lazo WHILE...DO evalúa sus condiciones primero. Si las condiciones son verdaderas, el controlador ejecuta las declaraciones dentro del lazo.
Esto es diferente del lazo REPEAT...UNTIL porque el lazo REPEAT...UNTIL ejecuta las declaraciones en la construcción y posteriormente determina si las condiciones son verdaderas antes de ejecutar las declaraciones nuevamente. 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.
pos := 0;
While ((pos <= 100) & structarray[pos].value <> targetvalue)) do
pos := pos + 2;
String_tag.DATA[pos] := SINT_array[pos];
end_while;
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 cadena. (En una matriz SINT, cada elemento retiene un carácter). Parar cuando llegue al retorno de carro.
1. Inicializar Element_number a 0.
2. Contar el número de elementos en SINT_array (la matriz que contiene los caracteres ASCII) y almacenar el resultado en SINT_array_size (tag DINT).
3. Si el carácter en SINT_array[element_number] = 13 (valor decimal del retorno de carro), parar.
4. Establecer String_tag[element_number] = el carácter en SINT_array[element_number].
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.
element_number := 0;
SIZE(SINT_array, 0, SINT_array_size);
While SINT_array[element_number] <> 13 do
String_tag.DATA[element_number] := SINT_array[element_number];
element_number := element_number + 1;
String_tag.LEN := element_number;
If element_number = SINT_array_size then
exit;
end_if;
end_while;
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
Descripción: La sintaxis es:
Operando Tipo Formato Introduzca
bool_expression
BOOL tag
expresión
Expresión o tag BOOL que evalúa respecto a un valor BOOL (expresión BOOL)
REPEAT
<statement>;
UNTIL bool_expression
END_REPEAT;
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.
REPEAT
<statement>; declaraciones que se ejecutan mientras bool_expression1 es falso
opcional
IF bool_expression2 THEN
EXIT; Si existen condiciones cuando usted desea salir del lazo anticipadamente, use otras declaraciones, tal como la construcción IF...THEN, para condicionar una declaración EXIT.
END_IF;
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.
Indicadores de estadoaritmético: no afectados
Condiciones de fallo:
Ejemplo 1:
Mientras bool_expression es falso, el controlador ejecuta sólo las declaraciones dentro del lazo REPEAT…UNTIL.
Para detener el lazo antes de que las condiciones sean falsas, use una declaración EXIT.
declaración 1declaración 2declaración 3declaración 4…
expresión BOOL
falsa
verdadera
resto de la rutinaexpresión BOOL
falsa
verdadera
resto de la rutina
declaración 1declaración 2declaración 3declaración 4…¿Salir? sí
no
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
la construcción tiene un lazo excesivamente largo
6 1
Si usted desea esto Introduzca este texto estructurado
El lazo REPEAT...UNTIL ejecuta las declaraciones en la construcción y posteriormente determina si las condiciones son verdaderas antes de ejecutar las declaraciones nuevamente.
Esto es diferente del lazo WHILE...DO porque el lazo WHILE...DO evalúa su condición primero. Si las condiciones son verdaderas, el controlador ejecuta las declaraciones 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.
pos := -1;
REPEAT
pos := pos + 2;
UNTIL ((pos = 101) OR (structarray[pos].value = targetvalue))
end_repeat;
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 cadena. (En una matriz SINT, cada elemento retiene un carácter). Parar cuando llegue al retorno de carro.
1. Inicializar Element_number a 0.
2. Contar el número de elementos en SINT_array (la matriz que contiene los caracteres ASCII) y almacenar el resultado en SINT_array_size (tag DINT).
3. Establecer String_tag[element_number] = el carácter en SINT_array[element_number].
4. Añadir 1 a element_number. Esto permite al controlador verificar el siguiente carácter en SINT_array.
5. Establecer el miembro Length de String_tag = 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.
element_number := 0;
SIZE(SINT_array, 0, SINT_array_size);
Repeat
String_tag.DATA[element_number] := SINT_array[element_number];
element_number := element_number + 1;
String_tag.LEN := element_number;
If element_number = SINT_array_size then
exit;
end_if;
Until SINT_array[element_number] = 13
end_repeat;
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
(*comment*)
/*comment*/
al final de una línea de texto estructurado
dentro de una línea de texto estructurado
(*comment*)
/*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
Aactivación de salida 82activar tarea de evento 464actualizar salida 201ajuste 503alarma digital 30alarmas 504arco coseno 532arco seno 529arco tangente 535aritmética y lógica de archivo 335ASCII
asignación de texto estructurado 663
asignacióncarácter ASCII 663no retentiva 662retentiva 661
atributosconversión de tipos de datos 635valores inmediatos 635
atributos comunes 635conversión de tipos de datos 635valores inmediatos 635
BBAND 317banda muerta 514BNOT 326BOR 320borrar 298Borrar ASCII búfer 575buscar cadena 605búsqueda y comparación de
archivos 347BXOR 323
Ccaché
conexión 173cadena
evaluación en texto estructurado 667
Cadena a DINT 614Cadena central 609Cadena en REAL 616cálculo 248cambiar signo 274caracteres ASCII en el búfer 573carga de secuenciador 428carga FIFO 394carga LIFO 406, 412CASE 675clasificar 371códigos de error
ASCII 568instrucción MSG 152
códigos de productos 181
comentariostexto estructurado 687
comparación de bits de archivo 478comparar 206concatenación de cadenas 601condiciones de overflow 648conector
diagrama de bloques de funciones 641
conector de cable de entrada 641conector de cable de salida 641conexión
caché 173configuración 159
instrucción MSG 159instrucción PID 502
construccióntexto estructurado 671
conteo progresivo 128conteo progresivo/regresivo 136conteo regresivo 132control de programa/operador
descripción general 654conversión de tipos de datos 635convertir a BCD 556convertir en entero 559copiar 356copiar síncrono 356coseno 523
Ddescarga FIFO 400descripción
texto estructurado 687desenclavamiento de salida 86desplazamiento de bits a la
derecha 390desplazamiento de bits a la
izquierda 386desviación estándar 376detección de diagnóstico 486determinación de igualdad con
máscara 237diagrama de bloques de funciones
creación de un retardo de escán 647
resolución del flujo de datos entre dos bloques 647
resolver un lazo 645selección de elementos 641
diferente de 242DINT en cadena 619distribuir campo de bits 292distribuir campo de bits con
receptor 295división 261documento
texto estructurado 687
689Publicación 1756-RM003K-ES-P – Julio 2008 689
Índice
Eelementos
instrucción SIZE 381Eliminación de cadena 603enclavamiento de datos 642enclavamiento de salida 84Encontrar cadena 605escalado 505escritura ASCII 594escritura ASCII con anexo 589establecer valor del sistema 176estado
tarea 195estructura COMPARE 479, 487estructura CONTROL 336, 347, 367,
371, 376, 386, 390, 395, 401, 406, 407, 413, 420, 424, 428
estructura COUNTER 128, 132estructura de control 448Estructura FBD_BIT_FIELD_
DISTRIBUTE 295Estructura FBD_BOOLEAN_
AND 317Estructura FBD_BOOLEAN_
NOT 326Estructura FBD_BOOLEAN_OR 320Estructura FBD_BOOLEAN_XOR 323estructura FBD_COMPARE 212, 216,
220, 224, 228, 243estructura FBD_CONVERT 556, 559Estructura FBD_COUNTER 136estructura FBD_LIMIT 232Estructura FBD_LOGICAL 305, 308,
311, 315Estructura FBD_MASKED_
MOVE 288Estructura FBD_MASK_EQUAL 238estructura FBD_MATH 253, 256, 259,
262, 267, 275, 547Estructura FBD_MATH_ADVANCED
271, 520, 524, 527, 529, 532, 535, 540, 544, 550, 553
estructura FBD_MATH_ADVANCED 278
estructura FBD_ONESHOT 96, 99estructura FBD_TIMER 116, 120, 124Estructura FBD_TRUNCATE 561estructura MESSAGE 144estructura PID 498estructura RESULT 479, 487Estructura SERIAL_PORT_
CONTROL 566, 568, 570, 573, 578, 582, 586, 590, 595
estructura STRING 568, 600, 613estructura TIMER 104, 108, 112estructuras
cadena 568, 613COMPARE 479, 487CONTROL 336, 347, 367, 371, 376,
386, 390, 395, 401, 406, 407, 413, 420, 424, 428
COUNTER 128, 132
FBD_BIT_FIELD_DISTRIBUTE 295FBD_BOOLEAN_AND 317FBD_BOOLEAN_NOT 326FBD_BOOLEAN_OR 320FBD_BOOLEAN_XOR 323FBD_COMPARE 212, 216, 220,
224, 228, 243FBD_CONVERT 556, 559FBD_COUNTER 136FBD_LIMIT 232FBD_LOGICAL 305, 308, 311, 315FBD_MASKED_MOVE 288FBD_MASK_EQUAL 238FBD_MATH 253, 256, 259, 262,
267, 275, 547FBD_MATH_ADVANCED 271, 278,
520, 524, 527, 529, 532, 535, 540, 544, 550, 553
FBD_ONESHOT 96, 99FBD_TIMER 116, 120, 124FBD_TRUNCATE 561instrucción RES 141MESSAGE 144PID 498RESULT 479, 487SERIAL_PORT_CONTROL 566, 568,
570, 573, 578, 582, 586, 590, 595
STRING 568, 600, 613TIMER 104, 108, 112
etiqueta 434, 627, 631examinar si está abierto 80expiración
configurar para tarea de evento 195exponencial 546expresión
expresión BOOLtexto estructurado 663
expresión numéricatexto estructurado 663
orden de ejecucióntexto estructurado 669
texto estructuradodescripción general 663funciones 665operadores a nivel de bits 669operadores aritméticos 665operadores lógicos 668operadores relacionales 666
expresión BOOLtexto estructurado 663
expresión numérica 663expresiones
formato 209, 250, 345, 353operadores válidos 208, 250, 345,
353orden de operación 209, 251, 346,
354
690 Publicación 1756-RM003K-ES-P – Julio 2008
Índice
Ffin temporal 450FOR…DO 678funciones
texto estructurado 665
Gganancia anticipativa 515grados 550
Hhabilitación de interrupción de
usuario 454
IICON 641IF...THEN 672igual a 211indicadores de estado aritmético
overflow 648inhabilitación de interrupción de
usuario 454Insertar cadena 607instrucción ABL 570instrucción ABS 277instrucción ACB 573instrucción ACL 575instrucción ACS 532instrucción activar tarea de
evento 464instrucción ADD 252instrucción AFI 456instrucción AHL 577instrucción ALMA 42instrucción ALMD, instrucciones
de alarmas y eventosALMD 30
instrucción AND 304instrucción ARD 581instrucción ARL 585instrucción ASN 529instrucción ATN 535instrucción AVE 366instrucción AWA 589instrucción AWT 594instrucción BRK 473instrucción BSL 386instrucción BSR 390instrucción BTD 292instrucción BTDT 295instrucción CLR 298instrucción CMP 206instrucción CONCAT 601instrucción COP 356instrucción COS 523instrucción CPS 356instrucción CPT 248instrucción CTD 132
instrucción CTU 128instrucción CTUD 136instrucción DDT
modo de búsqueda 488operandos 486
instrucción de salida inmediata 201instrucción DEG 550instrucción DELETE 603instrucción DIV 261instrucción DTOS 619instrucción DTR 494instrucción EOT 458instrucción EQU 211instrucción EVENT 464instrucción FAL
modo de operación 330operandos 335
instrucción FBCmodo de búsqueda 480operandos 478
instrucción FFL 394instrucción FFU 400instrucción fin de transición 458instrucción FIND 605instrucción FLL 362instrucción FOR 470instrucción FRD 559instrucción FSC
modo de operación 330operandos 347
instrucción GEQ 215instrucción GRT 219instrucción GSV
objetos 179operandos 176
instrucción INSERT 607instrucción IOT 201instrucción JMP 434, 627, 631instrucción JSR 436instrucción JXR
estructura de control 448instrucción LBL 434, 627, 631instrucción LEQ 223instrucción LES 227instrucción LFL 406instrucción LFU 412instrucción LIM 231instrucción LN 540instrucción LOG 543instrucción LOWER 625instrucción MCR 452instrucción MEQ 237instrucción MID 609instrucción MOD 266instrucción MOV 283instrucción MSG 159
códigos de error 152conexión en caché 173estructura 144método de comunicación 172operandos 144pautas de programación 175
Publicación 1756-RM003K-ES-P – Julio 2008 691
Índice
instrucción MUL 258instrucción MVM 285instrucción MVMT 288instrucción NEG 274instrucción NEQ 242instrucción NOP 457instrucción NOT 314instrucción ONS 88instrucción OR 307instrucción OSF 94instrucción OSFI 99instrucción OSRI 96instrucción OTE 82instrucción OTL 84instrucción OTU 86instrucción pausa SFC 460instrucción PID
ajuste 503alarmas 504banda muerta 514configuración 502escalado 505ganancia anticipativa 515operandos 497polarización de salida 515
instrucción RAD 553instrucción RES 141instrucción restablecer SFC 462instrucción RET 436, 474instrucción RTO 112instrucción RTOR 124instrucción RTOS 621instrucción SBR 436instrucción SFP 460instrucción SFR 462instrucción siempre falso 456instrucción SIN 520instrucción SIZE 381instrucción SQI 420instrucción SQL 428instrucción SQO 424instrucción SQR 270instrucción SRT 371instrucción SSV
objetos 179operandos 176
instrucción STOD 614instrucción STOR 616instrucción SUB 255instrucción SWPB 300Instrucción TAN 526instrucción TND 450instrucción TOD 556Instrucción TOF 108instrucción TOFR 120instrucción TON 104instrucción TONR 116instrucción TRN 561instrucción UID 454instrucción UIE 454instrucción UPPER 623instrucción XIO 80
instrucción XOR 310instrucción XPY 546instrucciones
alarmas y eventos 29bit 77cálculo 247comparar 205contador 103control de programa 433conversión 549conversión ASCII 611conversión de cadenas 611conversión matemática 549depurar 627desplazamiento 385entrada/salida 143especiales 477for/break 469lógicas 281manipulación de cadenas 599manipulación de cadenas
ASCII 599matemáticas avanzadas 539matrizmovimiento 281puerto serie 565puerto serie ASCII 565secuenciador 419temporizador 103trigonométricas 519
instrucciones ASCIIABL 570ACB 573ACL 575AHL 577ARD 581ARL 585AWA 589AWT 594CONCAT 601DELETE 603DTOS 619FIND 605INSERT 607LOWER 625MID 609RTOS 621STOD 614STOR 616SWPB 300UPPER 623
instrucciones de alarmas y eventosacceder programáticamente 70ALMA, alarma analógica 42almacenamiento de alarmas en el
búfer 69configuración 62ejecución de alarma basada en el
controlador 72
692 Publicación 1756-RM003K-ES-P – Julio 2008
Índice
estado de alarma 68suprima o inhabilite alarmas 71texto de mensaje 65
instrucciones de archivo. Vea instrucciones de matriz
instrucciones de bitONS 88OSF 94OSFI 99OSR 91OSRI 96OTE 82OTL 84OTU 86XIO 80
instrucciones de bitsintroducción 77
instrucciones de cálculoABS 277ADD 252CPT 248DIV 261formato de expresión 250, 345Introducción 247MOD 266MUL 258NEG 274operadores válidos 250, 345orden de operación 251, 346SQR 270SUB 255
instrucciones de comparaciónCMP 206EQU 211formato de expresión 209, 353GEQ 215GRT 219Introducción 205LEQ 223LES 227LIM 231MEQ 237NEQ 242operadores válidos 208, 353orden de operación 209, 354
instrucciones de contadorCTD 132CTU 128CTUD 136introducción 103RES 141
instrucciones de control de programa
AFI 456EOT 458EVENT 464introducción 433JMP 434, 627, 631JSR 436
LBL 434, 627, 631MCR 452NOP 457RET 436SBR 436TND 450UID 454UIE 454
instrucciones de conversiónDEG 550FRD 559Introducción 549RAD 553TOD 556TRN 561
instrucciones de conversión de cadena
DTOS 619LOWER 625RTOS 621STOR 616SWPB 300UPPER 623
instrucciones de conversión de cadenas
introducción 611STOD 614
instrucciones de conversión matemática
DEG 550FRD 559Introducción 549RAD 553TOD 556TRN 561
instrucciones de depuración 627instrucciones de desplazamiento
BSL 386BSR 390FFL 394FFU 400Introducción 385LFL 406LFU 412
instrucciones de entrada/salidaGSV 176introducción 143IOT 201MSG 144SSV 176
instrucciones de manipulación de cadenas
CONCAT 601DELETE 603FIND 605INSERT 607introducción 599MID 609
Publicación 1756-RM003K-ES-P – Julio 2008 693
Índice
instrucciones de matrizarchivo/misceláneas 329AVE 366BSL 386BSR 390COP 356CPS 356DDT 486desplazamiento 385FAL 335FBC 478FFL 394FFU 400FLL 362FSC 347LFL 406LFU 412modo de operación 330RES 141secuenciador 419SIZE 381SQI 420SQL 428SQO 424SRT 371STD 376
instrucciones de movimientoBTD 292BTDT 295CLR 298Introducción 281MOV 283MVM 285MVMT 288
instrucciones de puerto serieABL 570ACB 573ACL 575AHL 577ARD 581ARL 585AWA 589AWT 594
instrucciones de secuenciadorintroducción 419SQI 420SQL 428SQO 424
instrucciones de temporizadorintroducción 103RES 141RTO 112RTOR 124TOF 108TOFR 120TON 104TONR 116
instrucciones de traslado/lógicasBAND 317BNOT 326BOR 320BXOR 323
instrucciones especialesDDT 486DTR 494FBC 478introducción 477PID 497SFP 460SFR 462
instrucciones for/breakBRK 473FOR 470Introducción 469RET 474
instrucciones lógicasAND 304introducción 281NOT 314OR 307XOR 310
instrucciones matemáticas avanzadas
Introducción 539LN 540logaritmo 543XPY 546
instrucciones OSR 91instrucciones para puerto serie
Introducción 565instrucciones STD 376instrucciones trigonométricas
ACS 532ASN 529ATN 535COS 523Introducción 519SIN 520TAN 526
intercambiar byte 300interrumpir 473IREF 641
Llazo de retroalimentación
diagrama de bloques de funciones 645
lazo no resueltodiagrama de bloques de
funciones 645lectura ASCII 581límite 231línea de lectura ASCII 585líneas de handshake ASCII 577llenar archivo 362
694 Publicación 1756-RM003K-ES-P – Julio 2008
Índice
logaritmobase 10 543natural 540
logaritmo base 10 543logaritmo natural 540
Mmáscaras 495mayor o igual que 215mayor que 219mayúsculas 623menor o igual que 223menor que 227mensaje 144
conexiones en caché 173pautas de programación 175
mezcla de tipos de datos 635minúsculas 625modo de búsqueda 480, 488modo de operación 330modo incremental 333modo numérico 331modo todos 330modos de temporización 649módulo de división 266mover 283mover con máscara 285movimiento enmascarado con
receptor 288multiplicación 258
NNO a nivel de bits 314NO booleano 326
OO a nivel de bits 307O booleano 320O exclusivo a nivel de bits 310O exclusivo booleano 323objeto CONTROLLER 180objeto CONTROLLERDEVICE 181objeto CST 183objeto DF1 184objeto FAULTLOG 187objeto MESSAGE 188objeto MODULE 190objeto MOTIONGROUP 191objeto PROGRAM 192objeto ROUTINE 193objeto SERIALPORT 193objeto TASK 195objeto WALLCLOCKTIME 197objetos
CONTROLLER 180CONTROLLERDEVICE 181CST 183DF1 184
FAULTLOG 187instrucción GSV/SSV 179MESSAGE 188MODULE 190MOTIONGROUP 191PROGRAM 192ROUTINE 193SERIALPORT 193TASK 195WALLCLOCKTIME 197
obtener valor del sistema 176OCON 641operadores 208, 250, 345, 353
orden de ejecucióntexto estructurado 669
operadores a nivel de bitstexto estructurado 669
operadores aritméticostexto estructurado 665
operadores lógicostexto estructurado 668
operadores matemáticostexto estructurado 665
operadores relacionalestexto estructurado 666
orden de ejecución 644expresión de texto
estructurado 669orden de operación 209, 251, 346,
354OREF 641
Ppolarización de salida 515post-escán
texto estructurado 662promedio 366proporcional, integral y
derivativo 497prueba ASCII para línea de
búfer 570
Rradianes 553raíz cuadrada 270REAL en cadena 621referencia de entrada 641referencia de salida 641REPEAT…UNTIL 684resta 255restablecer 141restablecimiento de control
maestro 452retardo de escán
diagrama de bloques de funciones 647
retornar 474retorno 436
Publicación 1756-RM003K-ES-P – Julio 2008 695
Índice
SSalida
actualizar inmediatamente 201habilitar o inhabilitar fin de
procesamiento de tarea 195
saltar 434, 627, 631saltar a subrutina 436secuenciador de entrada 420secuenciador de salida 424seno 520sin operación 457subrutina 436sumar 252superposición
verifica 195suponer datos disponibles 645, 647
Ttamaño en elementos 381tangente 526tarea
activar mediante tag consumido 201
activar tarea de evento 464configurar programáticamente 195monitorear 195
tarea de eventoactivar mediante instrucción
EVENT 464activar mediante tag
consumido 201configurar 195
temporizador de retardo a la conexión 104
temporizador de retardo a la conexión con restablecimiento 116
temporizador de retardo a la desconexión 108
temporizador de retardo a la desconexión con restablecimiento 120
temporizador retentivo activado 112temporizador retentivo activado
con restablecimiento 124texto estructurado
asignación 661asignación no retentiva 662asigne carácter ASCII 663CASE 675comentarios 687componentes 659construcciones 671evaluación de cadenas 667expresión 663expresión numérica 663FOR…DO 678funciones 665
IF...THEN 672operadores a nivel de bits 669operadores aritméticos 665operadores lógicos 668operadores relacionales 666REPEAT…UNTIL 684WHILE…DO 681
tipo de datos de cadena 568, 600, 613
transición de datos 494truncar 561
Uun impulso 88un impulso en flanco ascendente 91un impulso en flanco ascendente
con entrada 96un impulso en flanco
descendente 94un impulso en flanco descendente
con entrada 99
Vvalor absoluto 277valores inmediatos 635
WWHILE…DO 681
XX a la potencia de Y 546
YY a nivel de bits 304Y booleano 317
696 Publicación 1756-RM003K-ES-P – Julio 2008
Códigos de caracteres ASCII
Carácter Dec Hex
[ctrl-@] NUL 0 $00
[ctrl-A] SOH 1 $01
[ctrl-B] STX 2 $02
[ctrl-C] ETX 3 $03
[ctrl-D] EOT 4 $04
[ctrl-E] ENQ 5 $05
[ctrl-F] ACK 6 $06
[ctrl-G] BEL 7 $07
[ctrl-H] BS 8 $08
[ctrl-I] HT 9 $09
[ctrl-J] LF 10 $l ($0A)
[ctrl-K] VT 11 $0B
[ctrl-L] FF 12 $0C
[ctrl-M] CR 13 $r ($0D)
[ctrl-N] SO 14 $0E
[ctrl-O] SI 15 $0F
[ctrl-P] DLE 16 $10
[ctrl-Q] DC1 17 $11
[ctrl-R] DC2 18 $12
[ctrl-S] DC3 19 $13
[ctrl-T] DC4 20 $14
[ctrl-U] NAK 21 $15
[ctrl-V] SYN 22 $16
[ctrl-W] ETB 23 $17
[ctrl-X] CAN 24 $18
[ctrl-Y] EM 25 $19
[ctrl-Z] SUB 26 $1A
ctrl-[ ESC 27 $1B
[ctrl-\] FS 28 $1C
ctrl-] GS 29 $1D
[ctrl-^] RS 30 $1E
[ctrl-_] US 31 $1F
SPACE 32 $20
! 33 $21
“ 34 $22
# 35 $23
$ 36 $24
% 37 $25
& 38 $26
‘ 39 $27
( 40 $28
) 41 $29
* 42 $2A
+ 43 $2B
, 44 $2C
- 45 $2D
. 46 $2E
/ 47 $2F
0 48 $30
1 49 $31
2 50 $32
3 51 $33
4 52 $34
5 53 $35
6 54 $36
7 55 $37
8 56 $38
9 57 $39
: 58 $3A
; 59 $3B
< 60 $3C
= 61 $3D
> 62 $3E
? 63 $3F
Carácter Dec Hex
@ 64 $40
A 65 $41
B 66 $42
C 67 $43
D 68 $44
E 69 $45
F 70 $46
G 71 $47
H 72 $48
I 73 $49
J 74 $4A
K 75 $4B
L 76 $4C
m 77 $4D
N 78 $4E
O 79 $4F
P 80 $50
Q 81 $51
R 82 $52
S 83 $53
T 84 $54
U 85 $55
V 86 $56
W 87 $57
X 88 $58
Y 89 $59
Z 90 $5A
[ 91 $5B
\ 92 $5C
] 93 $5D
^ 94 $5E
_ 95 $5F
Carácter Dec Hex
‘ 96 $60
a 97 $61
b 98 $62
c 99 $63
d 100 $64
e 101 $65
f 102 $66
g 103 $67
h 104 $68
i 105 $69
j 106 $6A
k 107 $6B
l 108 $6C
m 109 $6D
n 110 $6E
o 111 $6F
P 112 $70
q 113 $71
r 114 $72
s 115 $73
t 116 $74
u 117 $75
v 118 $76
w 119 $77
X 120 $78
y 121 $79
z 122 $7A
{ 123 $7B
| 124 $7C
} 125 $7D
~ 126 $7E
DEL 127 $7F
Carácter Dec Hex
Servicio de asistencia técnica de Rockwell Automation
Rockwell Automation ofrece información técnica en Internet para proporcionarle asistencia a la hora de utilizar sus productos. En http://support.rockwellautomation.com, puede encontrar manuales técnicos, 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:
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 Estados Unidos
+1.440.646.3223Lunes a viernes, de 8:00 am a 5:00 pm, hora oficial del Este de EE.UU.
Fuera de Estados Unidos
Póngase en contacto con el representante local de Rockwell Automation para cualquier consulta relacionada con asistencia técnica.
En los Estados Unidos
Póngase en contacto con el distribuidor. Debe proporcionar al 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 Estados Unidos
Póngase en contacto con el representante local de Rockwell Automation para obtener información sobre el procedimiento de devolución.
Publicación 1756-RM003K-ES-P – Julio 2008 699Reemplaza 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™M
anual de referencia