Instrucciones Generales RSLogix5000 Allen Bradley

701
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™

description

En este documento encontraras todas las instrucciones de RSLogix5000 asi como ejemplos de aplicaciones

Transcript of Instrucciones Generales RSLogix5000 Allen Bradley

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

.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

.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

.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

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

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

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

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 155

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

Códigos de error PLC y SLC (.ERR)

Logix, revisión de firmware 10.x y posteriores, proporciona nuevos códigos de error asociados con tipos de mensajes PLC y SLC (mensajes PCCC).

• Este cambio permite que el software RSLogix 5000 muestre una descripción significativa para muchos de los errores. Anteriormente, el software no daba una descripción de ninguno de los errores asociados con el código de error 00F0.

• El cambio también hace que los códigos de errores sean más coherentes con los errores devueltos por otros controladores, tales como los controladores PLC-5.

La siguiente tabla muestra el cambio en los códigos de error de R9.x y anteriores hasta R10.x y posteriores. Como resultado del cambio, el miembro .ERR retorna un valor único por cada error PCCC. .EXERR ya no se requiere para estos errores.

Códigos de error PLC y SLC (hex)

R9.x y anteriores R10.x y posteriores Descripción

.ERR .EXERR .ERR .EXERR

0010 1000 Comando o formato prohibido proveniente del procesador local

0020 2000 El módulo de comunicación no funciona

0030 3000 Nodo remoto ausente, desconectado o desactivado

0040 4000 Procesador conectado pero en fallo (hardware)

0050 5000 Número de estación incorrecto

0060 6000 La función solicitada no está disponible

0070 7000 El procesador está en el modo de programación

0080 8000 El archivo de compatibilidad del procesador no existe

0090 9000 El nodo remoto no puede almacenar temporalmente el comando

00B0 B000 El procesador está descargando, por lo que no es accesible

00F0 0001 F001 El procesador convirtió la dirección incorrectamente

00F0 0002 F002 Dirección incompleta

00F0 0003 F003 Dirección incorrecta

00F0 0004 F004 Formato de dirección prohibido – no se encontró el símbolo

00F0 0005 F005 Formato de dirección prohibido – El símbolo tiene 0 o es mayor que el máximo número de caracteres aceptados por el dispositivo

00F0 0006 F006 El archivo de direcciones no existe en el procesador receptor

00F0 0007 F007 El archivo de destino es demasiado pequeño para el número de palabras solicitado

00F0 0008 F008 No puede completarse la solicitud

La situación cambió durante la operación con múltiples paquetes

00F0 0009 F009 Los datos o el archivo son demasiado grandes

Memoria no disponible

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

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

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

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

modo ALL no

el bit .EN se borra

.POS = .POS + 1

modo numérico

se borra el bit interno

.LEN < 0 o .POS < 0

no

fallo mayor

.POS = .POS - 1

.POS = 0sí

no

el bit .DN se establece el bit .EN se establece

.POS < .LENno

.LEN > modo

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

modo INCno

modo ALL

no

loop_count = loop_count - 1

loop_count < 0no

.POS = .POS + 1

evaluar la expresión

.POS = .POS + 1

examinar S:Vno

el bit .ER se establece

.POS = .LENno

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

nomodo = .LEN

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

modo ≥loop_count

no

el bit .EN se estableceloop_count = modo

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

modo ALLno

el bit .EN se borra

.POS = .POS + 1

modo numérico

se borra el bit interno

.LEN < 0 o .POS < 0

no

fallo mayor

.POS = .POS - 1

.POS = 0sí

no

el bit .DN se establece el bit .EN se establece

.POS < .LENno

.LEN > modo

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

modo INCno

modo ALL

no

loop_count = loop_count - 1

loop_count < 0no

.POS = .POS + 1

evalúe la comparación

.POS = .POS + 1

coincidenciano

el bit .EN se estableceel bit .FD se estableceel bit .IN se establece

.POS = .LENno

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)

no

end_address > fin de matriz de

destino

end_address = fin de matriz de destino

source_address = Source

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)

no

end_address > fin de una matriz de

destino

end_address = fin de una matriz de destino

source_address = Source

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

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

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

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

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

fin

el bit .ER se establece

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

Source enmascarada =

Array[.POS] enmascarada

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

el bit .DN se establece

.POS = .LENno

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

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

.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

el bit .DN se establece

.POS = .LENno

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

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

.POS = 1

ir a error

error

.LEN > tamaño de la

matriz

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

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

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

índice ≤ valor terminalno

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

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

no

compare.POS = compare.LEN

el bit compare.DN se establece

comparar

ir a la salida

source[compare.POS] = reference[compare.POS]

no

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

no

fallo mayor

result[result.POS] = compare.POSresult.POS = result.POS + 1

result.POS > result.LEN

no

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

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

no

compare.POS = compare.LEN

el bit compare.DN se establece

comparar

ir a la salida

source[compare.POS] = reference[compare.POS]

no

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

no

fallo mayor

result[result.POS] = compare.POSresult.POS = result.POS + 1

result.POS ≥ result.LEN

no

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

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

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

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

origen > 99,999,999no

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

649

Apé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

resto de la rutina

declaración 1declaración 2declaración 3declaración 4…¿Salir?

¿Efectuado x veces?

no

resto de la rutina

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

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