Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1756-rm003 - Es-P INSTRUCCIONES GENERALES LOGIX5000 PDF
1756-rm003 - Es-P INSTRUCCIONES GENERALES LOGIX5000 PDF
controladores Logix5000™
Manual de referencia
Números de catálogo 1756-L1x,
1756-L5x, 1756-L6x, 1768-L4x, 1769-
L30, 1769-L31, 1769-L32C, 1769-L32E,
1769-L35CR, 1769-L35E, 1789-L60,
1794-L34, 20D
Información importante para el usuario
Los equipos de estado sólido tienen características de funcionamiento distintas de las de los equipos electromecánicos.
El documento Safety Guidelines for the Application, Installation and Maintenance of Solid State Controls
(publicación SGI-1.1 disponible en la oficina de ventas local del Rockwell Automation o en línea en
http://literature.rockwellautomation.com) describe algunas diferencias importantes entre los equipos de estado sólido y
los dispositivos electromecánicos de lógica cableada. Debido a esta diferencia y también a la gran variedad de usos de los
equipos de estado sólido, toda persona encargada de la aplicación de estos equipos debe asegurarse de la idoneidad de
cada una de las aplicaciones concebidas con estos equipos.
En ningún caso Rockwell Automation, Inc. será responsable ni asumirá ninguna obligación por daños indirectos o
consecuentes que resulten del uso o de la aplicación de estos equipos.
Los ejemplos y diagramas presentados en este manual se incluyen únicamente con fines ilustrativos. Debido a las
numerosas variables y requisitos asociados con cualquier instalación en particular, Rockwell Automation, Inc. no puede
asumir responsabilidad u obligación alguna por el uso de estos equipos basado en ejemplos y diagramas.
Rockwell Automation, Inc. no asume ninguna obligación de patente con respecto al uso de la información, los circuitos,
los equipos o el software descritos en este manual.
Se prohíbe la reproducción total o parcial del contenido de este manual sin la autorización escrita de
Rockwell Automation, Inc.
Este manual contiene notas de seguridad en cada circunstancia en que se estimen necesarias.
Identifica información sobre prácticas o circunstancias que pueden provocar una explosión en un
ADVERTENCIA
ambiente peligroso, lo que podría causar lesiones personales o la muerte, daños materiales o
pérdidas económicas.
IMPORTANTE Identifica información importante para la correcta aplicación y comprensión del producto.
Identifica información sobre prácticas o circunstancias que pueden provocar lesiones personales
ATENCIÓN
o la muerte, daños materiales o pérdidas económicas. Los mensajes de Atención le ayudan a
identificar y evitar un peligro, y a reconocer las consecuencias.
PELIGRO DE CHOQUE Puede haber etiquetas en el exterior o en el interior del equipo (por ejemplo, en un variador o un
motor) para advertir sobre la posible presencia de un voltaje peligroso.
PELIGRO DE QUEMADURA Puede haber etiquetas en el exterior o en el interior del equipo (por ejemplo, en un variador o un
motor) para advertir sobre superficies que podrían estar a temperaturas peligrosas.
Allen-Bradley, Rockwell Automation y TechConnect son marcas comerciales de Rockwell Automation, Inc.
Las marcas comerciales no pertenecientes a Rockwell Automation son propiedad de sus respectivas empresas.
Índice
Prefacio
Capítulo 1
Instrucciones basadas en Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Logix para alarmas y eventos Alarma digital (ALMD). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
FactoryTalk Diagramas de estado cuando se requiere
(ALMD, ALMA) confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Diagramas de estado cuando no se requiere
confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Confirmación de alarma ALMD requerida y enclavada . . . 38
Confirmación de alarma ALMD requerida y no
enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Confirmación de alarma ALMD no requerida y
enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Confirmación de alarma ALMD no requerida y no
enclavada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Alarma Analógica (ALMA) . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Diagramas de estado cuando se requiere
confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Diagramas de estado cuando no se requiere
confirmación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Confirmación de condición de nivel ALMA requerida . . . 57
Confirmación de condición de nivel ALMA no
requerida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Confirmación de velocidad de cambio ALMA
requerida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Confirmación de velocidad de cambio ALMA
no requerida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Configure una instrucción de alarma . . . . . . . . . . . . . . . . . . 62
Introduzca el texto del mensaje de alarma . . . . . . . . . . . . . . 65
Variables de la cadena de mensaje . . . . . . . . . . . . . . . . . 66
Versiones de los mensajes de alarma en múltiples
idiomas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Monitoreo del estado de alarma. . . . . . . . . . . . . . . . . . . . . . 68
Almacenamiento de alarmas en el búfer. . . . . . . . . . . . . . . . 69
Acceda programáticamente a información de alarmas . . . . . . 70
Suprima o inhabilite alarmas . . . . . . . . . . . . . . . . . . . . . . . . 71
Ejecución de alarma basada en el controlador . . . . . . . . . . . 72
Uso de la memoria del controlador. . . . . . . . . . . . . . . . . 73
Tiempo de escán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Capítulo 2
Instrucciones de bits Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
(XIC, XIO, OTE, OTL, OTU, ONS, Examinar si está cerrado (XIC). . . . . . . . . . . . . . . . . . . . . . . 78
OSR, OSF, OSRI, OSFI) Examinar si está abierto (XIO) . . . . . . . . . . . . . . . . . . . . . . . 80
Activación de salida (OTE) . . . . . . . . . . . . . . . . . . . . . . . . . 82
Enclavamiento de salida (OTL) . . . . . . . . . . . . . . . . . . . . . . 84
Desenclavamiento de salida (OTU) . . . . . . . . . . . . . . . . . . . 86
Un impulso (ONS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Un impulso en flanco ascendente (OSR) . . . . . . . . . . . . . . . 91
Un impulso en flanco descendente (OSF) . . . . . . . . . . . . . . 94
Un impulso en flanco ascendente con entrada (OSRI) . . . . . 96
Un impulso en flanco descendente con entrada (OSFI). . . . . 99
Capítulo 3
Instrucciones de temporizador y Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
contador Temporizador de retardo a la conexión (TON). . . . . . . . . . 104
(TON, TOF, RTO, TONR, TOFR, Temporizador de retardo a la desconexión (TOF) . . . . . . . 108
RTOR, CTU, CTD, CTUD, RES) Temporizador retentivo activado (RTO) . . . . . . . . . . . . . . . 112
Temporizador de retardo a la conexión con
restablecimiento (TONR) . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Temporizador de retardo a la desconexión con
restablecimiento (TOFR) . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Temporizador retentivo activado con restablecimiento
(RTOR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Conteo progresivo (CTU) . . . . . . . . . . . . . . . . . . . . . . . . . 128
Conteo regresivo (CTD) . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Conteo progresivo/regresivo (CTUD) . . . . . . . . . . . . . . . . . 136
Restablecer (RES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Capítulo 4
Instrucciones de entrada/salida Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
(MSG, GSV, SSV, IOT) Mensaje (MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Códigos de error MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Códigos de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Códigos de error extendidos . . . . . . . . . . . . . . . . . . . . 154
Códigos de error PLC y SLC (.ERR) . . . . . . . . . . . . . . . . 156
Códigos de error de transferencia en bloques . . . . . . . . 158
Especifique los detalles de configuración . . . . . . . . . . . . . . 159
Especifique mensajes de lectura y escritura de la tabla
de datos CIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Reconfigure un módulo de E/S. . . . . . . . . . . . . . . . . . . 161
Especifique mensajes genéricos CIP . . . . . . . . . . . . . . . 162
Especifique mensajes PLC-5 . . . . . . . . . . . . . . . . . . . . . 163
Especifique mensajes SLC. . . . . . . . . . . . . . . . . . . . . . . 165
Especifique mensajes de transferencia en bloques . . . . . 165
Especifique mensajes PLC-3 . . . . . . . . . . . . . . . . . . . . . 166
Especifique mensajes PLC-2 . . . . . . . . . . . . . . . . . . . . . 167
Ejemplos de configuración MSG . . . . . . . . . . . . . . . . . . . . 168
Especifique los detalles de comunicación. . . . . . . . . . . . . . 169
Capítulo 5
Instrucciones de comparación Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
(CMP, EQU, GEQ, GRT, LEQ, LES, Comparar (CMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
LIM, MEQ, NEQ) Expresiones CMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 209
Determine el orden de operación . . . . . . . . . . . . . . . . . 209
Use cadenas en una expresión . . . . . . . . . . . . . . . . . . . 210
Igual a (EQU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Mayor o igual que (GEQ) . . . . . . . . . . . . . . . . . . . . . . . . . 215
Mayor que (GRT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Menor o igual que (LEQ). . . . . . . . . . . . . . . . . . . . . . . . . . 223
Menor que (LES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Límite (LIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Máscara igual que (MEQ) . . . . . . . . . . . . . . . . . . . . . . . . . 237
Introducción de un valor de máscara inmediato . . . . . . 238
Diferente de (NEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Capítulo 6
Instrucciones de cálculo/ Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
matemáticas Calcular (CPT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
(CPT, ADD, SUB, MUL, DIV, MOD, Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
SQR, SQRT, NEG, ABS) Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 250
Determine el orden de operación . . . . . . . . . . . . . . . . . 251
Sumar (ADD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Restar (SUB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Multiplicar (MUL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Dividir (DIV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Módulo (MOD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Raíz cuadrada (SQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Cambiar signo (NEG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Valor absoluto (ABS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Capítulo 7
Instrucciones de movimiento/ Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 281
lógicas Mover (MOV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 283
(MOV, MVM, BTD, MVMT, BTDT, Mover con máscara (MVM) . . . . . . . . . . . . . . . . . . . . . . .. 285
CLR, SWPB, AND, OR, XOR, NOT, Introduzca un valor de máscara inmediato . . . . . . . . .. 286
Movimiento enmascarado con receptor (MVMT). . . . . . . .. 288
BAND, BOR, BXOR, BNOT) Distribuir campo de bits (BTD) . . . . . . . . . . . . . . . . . . . .. 292
Distribuir campo de bits con receptor (BTDT) . . . . . . . . .. 295
Borrar (CLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 298
Intercambiar byte (SWPB) . . . . . . . . . . . . . . . . . . . . . . . .. 300
Y a nivel de bits (AND) . . . . . . . . . . . . . . . . . . . . . . . . . .. 304
O a nivel de bits (OR) . . . . . . . . . . . . . . . . . . . . . . . . . . .. 307
O exclusivo a nivel de bits (XOR) . . . . . . . . . . . . . . . . . .. 310
NO a nivel de bits (NOT) . . . . . . . . . . . . . . . . . . . . . . . .. 314
Y booleano (BAND) . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 317
O booleano (BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 320
O exclusivo booleano (BXOR). . . . . . . . . . . . . . . . . . . . .. 323
NO booleano (BNOT) . . . . . . . . . . . . . . . . . . . . . . . . . . .. 326
Capítulo 8
Instrucciones de matriz Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
(archivo)/misceláneas Selección del modo de operación . . . . . . . . . . . . . . . . . . . 330
(FAL, FSC, COP, CPS, FLL, AVE, Modo Todos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
SRT, STD, SIZE) Modo numérico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Modo incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Aritmética y lógica de archivo (FAL) . . . . . . . . . . . . . . . . . 335
Expresiones FAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 345
Determine el orden de operación . . . . . . . . . . . . . . . . . 346
Búsqueda y comparación de archivos (FSC) . . . . . . . . . . . . 347
Expresiones FSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Expresiones de formato . . . . . . . . . . . . . . . . . . . . . . . . 353
Capítulo 9
Instrucciones de matriz Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
(archivo)/desplazamiento Desplazamiento de bits a la izquierda (BSL) . . . . . . . . . . . . 386
(BSL, BSR, FFL, FFU, LFL, LFU) Desplazamiento de bits a la derecha (BSR). . . . . . . . . . . . . 390
Carga FIFO (FFL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Descarga FIFO (FFU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Carga LIFO (LFL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Descarga LIFO (LFU). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
Capítulo 10
Instrucciones de secuenciador Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
(SQI, SQO, SQL) Secuenciador de entrada (SQI) . . . . . . . . . . . . . . . . . . . . . 420
Introduzca un valor de máscara inmediato . . . . . . . . . . 421
Use SQI sin SQO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Secuenciador de salida (SQO) . . . . . . . . . . . . . . . . . . . . . . 424
Introduzca un valor de máscara inmediato . . . . . . . . . . 425
Uso de SQI con SQO . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Restablecimiento de la posición de SQO. . . . . . . . . . . . 427
Carga de secuenciador (SQL). . . . . . . . . . . . . . . . . . . . . . . 428
Capítulo 11
Instrucciones de control de Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
programa Saltar a etiqueta (JMP)
(JMP, LBL, JSR, RET, SBR, JXR, Etiqueta (LBL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
TND, MCR, UID, UIE, AFI, Salto a subrutina (JSR)
Subrutina (SBR) Retorno (RET) . . . . . . . . . . . . . . . . . . . . . 436
NOP, EOT, SFP, SFR, EVENT) Salto a rutina externa (JXR) . . . . . . . . . . . . . . . . . . . . . . . . 447
Fin temporal (TND). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
Restablecimiento de control maestro (MCR) . . . . . . . . . . . . 452
Inhabilitación de interrupción de usuario (UID)
Habilitación de interrupción de usuario (UIE) . . . . . . . . . . 454
Instrucción siempre falso (AFI) . . . . . . . . . . . . . . . . . . . . . 456
Sin operación (NOP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Fin de transición (EOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Pausa SFC (SFP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Restablecer SFC (SFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Activar tarea de evento (EVENT) . . . . . . . . . . . . . . . . . . . . 464
Determine programáticamente si una instrucción
EVENT activó una tarea . . . . . . . . . . . . . . . . . . . . . . . . 464
Capítulo 12
Instrucciones For/Break Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
(FOR, FOR...DO, BRK, EXIT, RET) For (FOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Interrumpir (BRK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Retornar (RET) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Capítulo 13
Instrucciones especiales Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
(FBC, DDT, DTR, PID) Comparación de bits de archivo (FBC). . . . . . . . . . . . . . . . 478
Selección del modo de búsqueda . . . . . . . . . . . . . . . . . 480
Detección de diagnóstico (DDT) . . . . . . . . . . . . . . . . . . . . 486
Selección del modo de búsqueda . . . . . . . . . . . . . . . . . 488
Transición de datos (DTR). . . . . . . . . . . . . . . . . . . . . . . . . 494
Introduzca un valor de máscara inmediato . . . . . . . . . . 495
Proporcional integral derivativo (PID) . . . . . . . . . . . . . . . . 497
Configure una instrucción PID. . . . . . . . . . . . . . . . . . . . . . 502
Especifique el ajuste. . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Especifique la configuración. . . . . . . . . . . . . . . . . . . . . 504
Especificación de alarmas. . . . . . . . . . . . . . . . . . . . . . . 504
Especificación de escalado . . . . . . . . . . . . . . . . . . . . . . 505
Uso de instrucciones PID . . . . . . . . . . . . . . . . . . . . . . . . . 505
Bloqueo de acción integral y transferencia sin
perturbaciones de manual a automático . . . . . . . . . . . . 507
Temporización de la instrucción PID . . . . . . . . . . . . . . 508
Reinicio sin problemas . . . . . . . . . . . . . . . . . . . . . . . . . 512
Suavizado derivativo . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Establezca la banda muerta . . . . . . . . . . . . . . . . . . . . . 514
Use límite de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Ganancia anticipativa o polarización de salida . . . . . . . 515
Lazos en cascada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Control de relación . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Teoría de PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Proceso PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Proceso PID con lazos maestro/esclavo . . . . . . . . . . . . 517
Capítulo 14
Instrucciones trigonométricas Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
(SIN, COS, TAN, ASN, ASIN, ACS, Seno (SIN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
ACOS, ATN, ATAN) Coseno (COS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Tangente (TAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Arco seno (ASN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
Arco coseno (ACS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Arco tangente (ATN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Capítulo 15
Instrucciones matemáticas Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
avanzadas Logaritmo natural (LN) . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
(LN, LOG, XPY) Logaritmo base 10 (LOG) . . . . . . . . . . . . . . . . . . . . . . . . . 543
X a la potencia de Y (XPY) . . . . . . . . . . . . . . . . . . . . . . . . 546
Capítulo 16
Instrucciones de conversión Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
matemática Grados (DEG). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
(DEG, RAD, TOD, FRD, TRN, Radianes (RAD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
TRUNC) Convertir a BCD (TOD). . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Convertir a entero (FRD) . . . . . . . . . . . . . . . . . . . . . . . . . . 559
Truncar (TRN). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
Capítulo 17
Instrucciones para puerto serie Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
ASCII Ejecución de la instrucción. . . . . . . . . . . . . . . . . . . . . . 566
(ABL, ACB, ACL, AHL, ARD, ARL, Códigos de error ASCII . . . . . . . . . . . . . . . . . . . . . . . . 568
AWA, AWT) Tipos de datos de cadena. . . . . . . . . . . . . . . . . . . . . . . 569
Prueba ASCII para línea de búfer (ABL) . . . . . . . . . . . . . . . 570
Caracteres ASCII en el búfer (ACB) . . . . . . . . . . . . . . . . . . 573
Borrar ASCII búfer (ACL) . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Líneas de handshake ASCII (AHL) . . . . . . . . . . . . . . . . . . . 577
Lectura ASCII (ARD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
Lectura ASCII de línea (ARL) . . . . . . . . . . . . . . . . . . . . . . . 585
Escritura ASCII con anexo (AWA) . . . . . . . . . . . . . . . . . . . 589
Escritura ASCII (ASCII Write (AWT)) . . . . . . . . . . . . . . . . . 594
Capítulo 18
Instrucciones de cadena ASCII Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
(CONCAT, DELETE, FIND, INSERT, Tipos de datos de cadena. . . . . . . . . . . . . . . . . . . . . . . 600
MID) Concatenación de cadenas (CONCAT) . . . . . . . . . . . . . . . . 601
Eliminación de cadena (DELETE). . . . . . . . . . . . . . . . . . . . 603
Encontrar cadena (FIND). . . . . . . . . . . . . . . . . . . . . . . . . . 605
Insertar cadena (INSERT). . . . . . . . . . . . . . . . . . . . . . . . . . 607
Cadena central (MID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
Capítulo 19
Instrucciones de conversión ASCII Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
(STOD, STOR, DTOS, RTOS, UPPER, Tipos de datos de cadena. . . . . . . . . . . . . . . . . . . . . . . 613
LOWER) Cadena en DINT (STOD). . . . . . . . . . . . . . . . . . . . . . . . . . 614
Cadena en REAL (STOR) . . . . . . . . . . . . . . . . . . . . . . . . . . 616
DINT en cadena (DTOS) . . . . . . . . . . . . . . . . . . . . . . . . . . 619
REAL en cadena (RTOS) . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Mayúsculas (UPPER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
Minúsculas (Lower Case (LOWER)) . . . . . . . . . . . . . . . . . . 625
Capítulo 20
Instrucciones de depuración Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
(BPT, TPT) Puntos de interrupción (BPT) . . . . . . . . . . . . . . . . . . . . . . 627
Formato de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
Puntos de rastreo (TPT). . . . . . . . . . . . . . . . . . . . . . . . . . . 631
Formato de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
Apéndice A
Atributos comunes Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
Valores inmediatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
Conversiones de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
SINT o INT en DINT . . . . . . . . . . . . . . . . . . . . . . . . . . 637
Entero en REAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
DINT en SINT o INT . . . . . . . . . . . . . . . . . . . . . . . . . . 639
REAL en un número entero . . . . . . . . . . . . . . . . . . . . . 640
Apéndice B
Atributos de bloque de funciones Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641
Selección de elementos de bloques de funciones . . . . . . . . 641
Enclavamiento de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . 642
Orden de ejecución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
Resolución de un lazo . . . . . . . . . . . . . . . . . . . . . . . . . 645
Resolución del flujo de datos entre dos bloques . . . . . . 647
Creación de un retardo de escán . . . . . . . . . . . . . . . . . 647
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
Respuestas de bloque de funciones a condiciones de
overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
Modos de temporización . . . . . . . . . . . . . . . . . . . . . . . . . 649
Parámetros de instrucción comunes para modos de
temporización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
Descripción general de los modos de temporización . . . 653
Control de programa/operador . . . . . . . . . . . . . . . . . . . . . 654
Apéndice C
Programación de texto Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
estructurado Sintaxis del texto estructurado . . . . . . . . . . . . . . . . . . . . . . 659
Asignaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Especifique una asignación no retentiva . . . . . . . . . . . . 662
Asigne un carácter ASCII a una cadena . . . . . . . . . . . . . 663
Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
Use funciones y operadores aritméticos . . . . . . . . . . . . 665
Use operadores relacionales . . . . . . . . . . . . . . . . . . . . . 666
Use operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . 668
Use operadores a nivel de bits . . . . . . . . . . . . . . . . . . . 669
Determine el orden de ejecución . . . . . . . . . . . . . . . . . 669
Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
Construcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
Algunas palabras clave están reservadas para uso
futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
IF...THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
CASE...OF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
FOR…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
WHILE…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
REPEAT…UNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
Índice Códigos de caracteres ASCII . . . . . . . . . . . . . . . . . . . . . 697
Cambio Página
Capítulo 1 – Se combinaron las instrucciones de alarma digital (ALMD) 29
y de alarma analógica (ALMA) en un capítulo. Se añadió información
sobre configuración, cadenas de mensajes y estados.
Capítulo 4 – Se añadieron nuevos atributos de objeto de controlador 180
GSV/SSV.
Capítulo 20 – Se añadieron instrucciones de depuración (PPT, TPT). 627
Notas:
Tarea/meta Documentos
Programar el controlador para aplicaciones Manual de referencia de instrucciones generales de controladores Logix5000,
secuenciales publicación 1756-RM003
Usted se encuentra aquí
Programar el controlador para aplicaciones Logix5000 Controllers Process Control and Drives Instructions Reference Manual,
de procesos o de variadores publicación 1756-RM006
Programar el controlador para aplicaciones Logix5000 Controllers Motion Instruction Set Reference Manual, publicación
de control de movimiento 1756-RM007
Programar el controlador para usar fases de PhaseManager User Manual, publicación LOGIX-UM001
equipo
Importar un archivo de texto o tags en un Logix5000 Controllers Import/Export Reference Manual, publicación 1756-RM084
proyecto
Exportar un proyecto o tags a un archivo de
texto
Convertir una aplicación de PLC-5 o SLC 500 Logix5550 Controller Converting PLC-5 or SLC 500 Logic to Logix5550 Logic Reference
en una aplicación Logix5000 Manual, publicación 1756-6.8.5
A quién está dirigido este Este documento proporciona al programador los detalles acerca de
cada una de las instrucciones disponibles para un controlador basado
manual en Logix. El usuario ya debe estar familiarizado con la manera en que
el controlador basado en Logix almacena y procesa datos.
Propósito de este manual Este manual proporciona una descripción de cada instrucción en este
formato:
Los pines mostrados en un bloque de funciones predeterminado son sólo los pines
predeterminados. La tabla de operandos indica todos los pines posibles para un
bloque de funciones.
Estructura de la instrucción indica los bits y valores de estado de control de la instrucción, si los hay
Descripción describes el uso de la instrucción
texto estructurado
bloque de funciones
condición condición
de entrada de salida
de renglón de renglón
Notas:
bloque de funciones
detectar alarmas en base al nivel o velocidad ALMA lógica de escalera de relés 42
de cambio de un valor
texto estructurado
bloque de funciones
Operandos:
Texto estructurado
ALMD(ALMD, In, ProgAck,
ProgReset, ProgDisable, Los operandos son iguales a los de la instrucción ALMD de lógica
ProgEnable); de escalera de relés, con algunas excepciones como se indicó
anteriormente.
Bloque de funciones
Estructura ALARM_DIGITAL
Bloque de funciones:
Texto estructurado:
Texto estructurado:
Una alarma enclavada sólo puede restablecerse cuando la condición de alarma es falsa.
Texto estructurado:
Texto estructurado:
Texto estructurado:
Texto estructurado:
Válido = 0...2,147,483,647.
Valor predeterminado = 0.
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.
En== Condition,
In Condición,MinDurationACC
MinDurationACC >=
>= Min DurationPRE
MinDurationPRE
InAlarm = Falso InAlarm = Verdadero
InAlarm = False InAlarm = True
Acked = Verdadero Acked = Falso
Acked = True ón n Acked = False
dici itio
!= C=onCond
In In ! EE
nPPRR
u ratio
Ack11 D 1
Ack Min Ack
Ack1
AC
C C >=
C
nA
ttioion In
uurraa I!n= !C
M
MininDD =oCnod
iioónn,, nitdioicn
nd itc ión
InAlarm = Falso Co
== C
InAlarm = Verdadero
InAlarm = False IInn InAlarm = True
Acked = Verdadero
Acked==False
Acked Falso Acked = True
Enclavado
Latched = Verdadero
= True
In== Condition,
In Condición, MinDurationACC
MinDurationACC >=
>= MinDurationPRE
MinDurationPRE
InAlarm = Falso InAlarm = Verdadero
InAlarm = False InAlarm = True
Acked = Verdadero
Acked = True Acked == Falso
Acked False
2
In != In != Condición,
Condition, ResetReset
2
InIn! 1
=!=CC Ack
Ack1
onodnd
itiioció
n,nR,
eRsees 2 2
tet
InAlarm = Verdadero
InAlarm = True
Acked = Verdadero
Acked = True
1
La
1 alarma puede confirmarse de diferentes maneras: ProgAck, OperAck, clientes
Alarm can be acked by several different ways: ProgAck, OperAck, clients (RSLogix 5000
(software RSLogix
software, RSView5000, software RSView).
software).
2
La
2 alarma puede restablecerse de diferentes maneras: ProgReset, OperReset, clientes
Alarm can be reset by several different ways: ProgReset, OperReset, clients (RSLogix 5000
(software RSLogix
software, RSView5000, software RSView).
software).
Enclavado
Latched = True= Verdadero
In = Condición, MínDuraciónACC >=
MínDuraciónPRE
In = Condition, MinDurationACC >= MinDurationPRE
InAlarm
InAlarm == False
Falso InAlarm = Verdadero
InAlarm = True Acked= =True
Acked
Verdadero
1
In In
!=!=Condición, Resset
Condition, Reset1
Indicadores de estado
aritmético: ninguno
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.
Texto estructurado
Motor101FaultConditions := Motor101Overtemp OR
Motor101FailToStart;
ALMD(Motor101Fault,Motor101FaultConditions,Motor101Ack,
0,0,0 );
Bloque de funciones
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:
Texto estructurado
ALMA(ALMA, In, ProgAckAll,
ProgDisable, ProgEnable);
Los operandos son iguales a los de la instrucción ALMD de lógica
de escalera de relés, con algunas excepciones como se indicó
anteriormente.
Bloque de funciones
Estructura ALARM_ANALOG
Texto estructurado:
Bloque de funciones:
Texto estructurado:
Texto estructurado:
Texto estructurado:
Texto estructurado:
Válido = HLimit < HHLimit < valor con punto flotante (coma flotante) positivo máximo.
Válido = valor con punto flotante (coma flotante) negativo máximo < LLLimit < LLimit.
Válido = 0...2,147,483,647.
Valor predeterminado = 0.
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.
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.
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.
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ó.
Válido = 0 ≤ Deadband < Span desde la primera alarma baja habilitada hasta la primera
alarma alta habilitada.
ROCPosLimitInv BOOL Límite de velocidad de cambio positiva no válido. Si no es válido, la instrucción usa
(Status.5) ROCPosLimit = 0.0, lo cual inhabilita la detección de velocidad de cambio positiva.
ROCNegLimitInv BOOL Límite de velocidad de cambio negativa no válido. Si no es válido, la instrucción usa
(Status.6) ROCNegLimit = 0.0, lo cual inhabilita la detección de velocidad de cambio negativa.
ROCPeriodInv (Status.7) BOOL Período de velocidad de cambio no válido. Si no es válido, la instrucción usa
ROCPeriod = 0.0, lo cual inhabilita la detección de velocidad de cambio.
1 La condición de alarma H puede confirmarse de diferentes maneras: HProgAck, HOperAck, 1 La condición de alarma HH puede confirmarse de diferentes maneras: HHProgAck, HHOperAck,
1 1
H alarm condition can be acked by several different ways: HProgAck, HOperAck, ProgAckAll, OperAckAll, HH alarm condition can be acked by several different ways: HHProgAck, HHOperAck, ProgAckAll, OperAckAll,
ProgAckAll, OperAckAll,
clients (RSLogix clientes
5000 software, (software
RSView RSLogix 5000, software RSView).
software). ProgAckAll, OperAckAll,
clients (RSLogix clientes
5000 software, (software
RSView RSLogix 5000, software RSView).
software).
InIn>=<=LLimit,
LLimit,MinDurationACC >=MinDurationPRE
MinDurationACC >= MinDurationPRE InIn>=<=LLLimit,
LLLimit,MinDurationACC >= MinDurationPRE
MinDurationACC >= MinDurationPRE
LinAlarm LinAlarm = True LLinAlarm = False
False LLinAlarm = True
LInAlarm == False
False LInAlarm = True LLInAlarm = LLInAlarm = True
LAcked = True
True LAcked = False
False LAcked ==True ) LAcked ==False
nd))
LAcked = LAcked = LLAcked True LLAcked False
dbaand d b anndd)
a
IInn <> Deaadb IInn < a
Deead
b
(LLLLiim
miitt + im it+- De > ((LL
LLLLim im it +- D
it RE
PREE (LLLLLLim
it
- De (LLLlim PnR
imiitt - oPnRPE
Ack1 adba InIn <> ( atiotino 1 1 +D Deead IInn >< ( uDrua
rtioatni Ack1
uurar Ack1 Ack1 adbba Ack1
Ack1 ndd)
) M ininDD Ack Ack anndd) MM iniDn
>> =
= M ) >==
CCC>
ACCCC
A ionnAAC
tiioonn urraattio
ninDD
uurraat inDDu
Mi Min
it,, M
LinAlarm = False it,itM
Lim
Lim
,
LinAlarm = True LLinAlarm = False LLLimimit
LLinAlarm = True
LInAlarm = False =<=LL LInAlarm = True LLInAlarm = False ==LLL LLInAlarm = True
LAcked
LAcked = False
= False InI>n LAcked
LAcked = True
= True LAcked
LLAcked==False
False InIn>< LAcked ==True
LLAcked True
ROC <=
ROC >= RocPosLimit
RocPosLimit ROC
ROC <=
<= -RocNegLimit
-RocNegLimit
RocPosInAlarm = False
RocPosInAlarm = False RocPosInAlarm
RocPosInAlarm == True
True RocNegInAlarm
RocNegInAlarm == False
False RocNegInAlarm = True
RocNegInAlarm = True
RocPosAcked
RocPosAcked = True
= True RocPosAcked = False
RocPosAcked = False RocNegAcked
RocNegAcked == True
True RocNegAcked
RocNegAcked = False
it
Limit imitit
Lim
RROOC cP PoossLim RROOC occN NeeggL
C<<
RRooc < RRooc C<>-
R < --RRo
ROOCC
< -Rooc
cPPoo cNNeg RO C>
OC
Ack11 ssLLim R
Ack11 Ack1 1 egLLi R Ack1 1
Ack imiitt Ack Ack miitt
im Ack
it
miitt Limit
ssLLiim NegeLg
im
cPPoo RooccN
Rooc -
<>== R <==-R
RocPosInAlarm = False
RocPosInAlarm = False RO C
C RocPosInAlarm
RocPosInAlarm == True
True RocNegInAlarm
RocNegInAlarm == False
False
RRO
OCC< RocNegInAlarm
RocNegInAlarm == True
True
RocPosAcked
RocPosAcked = False RocPosAcked = True
True RocNegAcked
RocNegAcked == False
False RocNegAcked
RocNegAcked == True
True
1 1
1 La condición de alarma ROCPos puede confirmarse de diferentes maneras: RocPosProgAck, RocPosOperAck, La
1
condición de alarma ROCNeg puede confirmarse de diferentes maneras: RocNegProgAck, RocNegOperAck,
ROCPos alarm condition can be acked by several different ways: RocPosProgAck, RocPosOperAck, ProgAckAll, ROCNeg alarm condition can be acked by several different ways: RocNegProgAck, RocNegOperAck, ProgAckAll,
l, ProgAkkAll, ,
ProgAckAll, OperAckAll,
OperAckAll, clients clientes
(RSLogix (softwareRSView
5000 software, RSLogixsoftware).
5000, software RSView). OperAckAll,OperAckAll, clientes
clients (RSLogix 5000(software
software, RSLogix 5000, software RSView).
RSView software).
In In
<=>=LLimit,
LLLimit,MinDurationACC
MinDurationACC >=
>= MinDurationPRE
MinDurationPRE
LinAlarm = False LinAlarm = True LAcked = True
LInAlarm = False LInAlarm = True LAcked = True
InIn> <(LLimit
(LLimit +- Deadband)
Deadband)
In >=
In >= HHLimit,MinDurationACC
HHLimit, MinDurationACC >=
>=MinDurationPRE
MinDurationPRE
HHinAlarm == False
HHInAlarm False HHinAlarm ==True
HHInAlarm True HHAcked ==True
HHAcked True
InIn< <(HHLimit
(HHLimit -- Deadband)
Deadband)
In >=
In <= LLLimit,MinDurationACC
LLLimit, MinDurationACC >=
>=MinDurationPRE
MinDurationPRE
LLinAlarm = False LLinAlarm = True LLAcked = True
LLInAlarm = False LLInAlarm = True LLAcked = True
In(CurrentSample) Donde
Wheresearecolecta una nueva muestraonenthe
el siguiente
In(Current Sample) -- In(PreviousSample)
In(PreviousSample) new sample is collected
ROC= =
ROC escán después
next scan de the
after queROCPeriod
haya transcurrido ROCPeriod
has elapsed.
ROCPeriod
ROCPeriod
ROC>=>= ROCPosLimit
ROC ROCPosLimit
RocPosInAlarm ==False
RocPosInAlarm False RocPosInAlarm ==True
RocPosInAlarm True RocPosAcked
RocPosAcked= True
= True
ROC<> ROCPosLimit
ROC ROCPosLimit
ROC<=
ROC >=-ROCNegLimit
-ROCNegLimit
RocNegInAlarm == False
RocNegInAlarm False RocNegInAlarm ==True
RocNegInAlarm True RocNegAcked
RocNegAcked= True
= True
ROC>> -ROCNegLimit
ROC -ROCNegLimit
Indicadores de estado
aritmético: Los indicadores de estado aritmético se establecen para la salida ROC.
Condiciones de fallo:
Fallo menor Tipo de fallo Código de fallo
Overflow ROC 4 4
Ejecución:
Condición Acción de lógica de escalera de relés
preescán La condición de salida de renglón se establece como falsa.
Todos los parámetros xInAlarm se borran y se Todos los parámetros xInAlarm se borran y se
confirman todas las condiciones de alarma. confirman todas las condiciones de alarma.
primer escán de instrucción Ninguna. Ninguna.
primera ejecución de Ninguna. Ninguna.
instrucción
EnableIn se borra La instrucción no se ejecuta. La instrucción se ejecuta.
Texto estructurado
ALMA(Tank32Level,Tank32LT,Tank32LevelAck,0, 0);
Bloque de funciones
Configure una instrucción Después de introducir una alarma ALMD o ALMA y especificar el
nombre de tag de la alarma, use el diálogo Alarm Configuration para
de alarma especificar los detalles del mensaje.
Seleccione Input=1 para una alarma activa cuando In=1. Seleccione Input=0 para una
alarma activa cuando In=0.
Input Level – Instrucción ALMA Nivel de entrada (High High, High, Low o Low Low) o velocidad de cambio de entrada
(positiva o negativa) para activar una alarma.
Input Rate of Change – Instrucción ALMA Seleccione las condiciones de la alarma e introduzca los límites para dichas condiciones.
Inhabilite las condiciones de velocidad de cambio introduciendo un 0 para el período o
límite.
Severity Seleccione un rango de severidades entre 1...1000 para clasificar la importancia de una
condición de alarma. Una severidad de 1 es para alarmas de baja prioridad, mientras que
una severidad de 1000 es para una condición de emergencia.
De manera predeterminada, en el sistema FactoryTalk Alarms and Events los rangos de
severidad se asignan a prioridades de la siguiente manera:
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.
Las alarmas que no requieren confirmación siempre tienen establecido el estado Acked.
Opción Descripción
Alarm class Use la clase de alarma para agrupar alarmas relacionadas. Especifique exactamente la
misma clase de alarma para cada alarma que usted desea mantener en la misma clase.
La clase de alarma permite distinguir mayúsculas de minúsculas.
Por ejemplo, especifique Zona de tanques A para agrupar todas las alarmas de los tanques
de un área específica. O especifique la clase Lazos de control para agrupar todas las
alarmas de lazos PID.
Después de ello podrá mostrar y filtrar alarmas en la interface operador-máquina (HMI)
según la clase. Por ejemplo, un operador puede mostrar todas las alarmas de tanques o
todas las alarmas de lazo PID.
La clase de alarma no limita las alarmas a las que se subscribe un objeto del resumen de
alarmas. Use la clase de alarmas para filtrar las alarmas que se muestran a un operador una
vez que éstas han sido recibidas por el objeto del resumen de alarmas. El software
FactoryTalk View puede filtrar la clase de alarma sustituyendo comodines por caracteres.
View command Ejecute un comando en la estación del operador cuando lo solicite el operador para una
alarma específica. Esto permite que un operador ejecute cualquier comando de FactoryTalk
View estándar, tal como llamar a plantillas y pantallas específicas, ejecutar macros,
acceder a archivos de ayuda e iniciar aplicaciones externas. Cuando se produce la condición
de alarma y se muestra al operador, un botón en las pantallas de resumen e indicador deja
que el operador ejecute un comando de visualización asociado.
Introduzca el texto del Introduzca el texto de mensaje apropiado que se mostrará cuando
una condición de alarma está activa (InAlarm). Para una instrucción
mensaje de alarma ALMD, usted introduce la información del mensaje en la ficha
Configuration. Para una instrucción ALMA, usted introduce la
información de mensaje en la ficha Message.
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.
Opción Descripción
Associated tags Puede seleccionar hasta cuatro tags adicionales desde el proyecto del controlador para
asociarlos con la alarma. Los valores de estos tags se envían con un mensaje de alarma al
servidor de alarmas. Por ejemplo, una alarma digital para una válvula de alivio de presión
también podría incluir información tal como la velocidad de la bomba y la temperatura del
tanque.
Los tags asociados pueden ser de cualquier tipo de datos atómico (BOOL, DINT, INT, SINT o
REAL) o un STRING. Pueden ser elementos en un UDT o una matriz. No se permiten
referencias a matrices variables. Si la alarma está bajo el control del controlador, los tags
asociados también deben estar bajo el control del controlador.
Tag Código
Valor BOOL /*N:1 %Tag1 NOFILL DP:0*/
Valor DINT, 9 dígitos, relleno con espacio a la izquierda /*N:9 %Tag2 SPACEFILL DP:0*/
Valor de entrada REAL, 9 dígitos (incluye decimal) /*N:9 %InputValue NOFILL DP:3*/
3 dígitos después del decimal, relleno con ceros a la
izquierda.
Valor REAL, 8 dígitos (incluye decimal) 4 dígitos después /*N:8 %Tag3 ZEROFILL DP:4*/
del decimal, relleno con ceros a la izquierda.
Valor de cadena, sin ancho fijo /*S:0 %Tag4*/
Valor de cadena, 26 caracteres, ancho fijo /*S:26 %Tag4*/
Monitoreo del estado de En la ficha Status del diálogo de alarma, monitoree la condición de
una alarma, confirme una alarma, inhabilite una alarma, suprima una
alarma alarma o restablezca una alarma. Use las selecciones del diálogo para
ver cómo se comporta una alarma sin necesidad de tener un HMI en
operación.
Acceda programáticamente Cada instrucción de alarma tiene una estructura de alarma que
almacena información de configuración y ejecución de alarma. La
a información de alarmas estructura de alarma incluye tanto elementos de control de programa
y de operador, como elementos de operador. Las instrucciones de
alarma no usan ajustes de modo para determinar si el acceso al
programa o el acceso al operador están activos; por lo tanto, estos
elementos siempre están activos.
Suprima o inhabilite Suprima alarmas para retirar las alarmas cuya existencia usted conoce
desde el HMI, pero mantenga las alarmas activas. Esto le permitirá
alarmas borrar el resumen de alarmas mientras que usted está resolviendo una
alarma conocida sin continuar viendo información de alarmas. Una
alarma suprimida no aparece en las pantallas de indicadores o
resumen de operador, pero una alarma suprimida igualmente se envía
a los suscriptores, se registra en la base de datos históricos, puede
cambiar el estado de alarma, tener sello de hora y responder a otras
interacciones programáticas o del operador.
• Cuando una alarma se suprime, ésta continúa funcionando
normalmente, monitorea el parámetro In en lo que respecta a
las condiciones de alarma y responde a peticiones de
confirmación. Todos los suscriptores son notificados de este
evento, y todo mensaje de alarma generado mientras la alarma
se encuentra en estado suprimido incluye el estado suprimido.
Los clientes de alarmas pueden responder de manera diferente a
las alarmas suprimidas. Por ejemplo, las alarmas suprimidas
pueden registrarse en la base de datos históricos pero no
pueden anunciarse al operador.
• Cuando una alarma no está suprimida, todos los suscriptores
son notificados y los mensajes de alarma a los suscriptores ya no
incluyen el estado suprimido.
Inhabilite una alarma para tratar la alarma como si ésta no existiera en
el programa de control. Una alarma inhabilitada no cambia el estado
de alarma ni se registra en la base de datos históricos. Una alarma
inhabilitada aun se rastrea y puede rehabilitarse en el explorador de
estado de alarmas en el software FactoryTalk View SE.
• Cuando una alarma está inhabilitada, todas sus condiciones se
establecen en el estado inicial (InAlarm se borra y Acked se
establece). El parámetro In no es monitoreado en lo que
respecta a las condiciones de alarma. Todos los suscriptores son
notificados de este evento.
Tiempo de escán
Notas:
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.
Examinar si está cerrado La instrucción XIC examina el bit de datos para determinar si está
establecido.
(XIC)
Operandos:
Texto estructurado
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción de lógica de escalera de relés
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
bit de datos = 1
la condición de salida de
renglón se establece como
verdadera
fin
Texto estructurado
IF limit_switch THEN
<statement>;
END_IF;
Texto estructurado
IF S:V THEN
<statement>;
END_IF;
Examinar si está abierto La instrucción XIO examina el bit de datos para determinar si está
borrado.
(XIO)
Operandos:
Texto estructurado
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción de lógica de escalera de relés
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
bit de datos = 1
la condición de salida de
renglón se establece como
falsa
fin
Texto estructurado
Texto estructurado
Operandos:
Texto estructurado
Indicadores de estado
aritmético: no afectados
Ejecución:
Texto estructurado
Texto estructurado
IF BOOL_expression THEN
data_bit := 1;
END_IF;
Indicadores de estado
aritmético: no afectados
Ejecución:
Texto estructurado
IF BOOL_expression THEN
light_2 := 1;
END_IF;
Texto estructurado
IF BOOL_expression THEN
data_bit := 0;
END_IF;
Indicadores de estado
aritmético: no afectados
Ejecución:
Texto estructurado
IF BOOL_expression THEN
light_2 := 0;
END_IF;
Operandos:
Texto estructurado
Indicadores de estado
aritmético: no afectados
Ejecución:
bit de
almacenamiento = 0 el bit de almacenamiento
examinar bit de se establece
almacenamiento
la condición de salida de
renglón se establece como
verdadera
bit de
almacenamiento = 1
el bit de almacenamiento
permanece establecido
la condición de salida de
renglón se establece como
falsa fin
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.
Texto estructurado
Un impulso en flanco La instrucción OSR establece o borra el bit de salida, dependiendo del
estado del bit de almacenamiento.
ascendente (OSR)
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como OSRI; vea la página 96.
Operandos:
condición de entrada
del renglón
bit de almacenamiento
bit de salida
Indicadores de estado
aritmético: no afectados
Ejecución:
el bit de almacenamiento
permanece establecido
Un impulso en flanco La instrucción OSF establece o borra el bit de salida dependiendo del
estado del bit de almacenamiento.
descendente (OSF)
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como OSFI; vea la página 99.
Operandos:
condición de
entrada del renglón
bit de
almacenamiento
bit de salida
Indicadores de estado
aritmético: no afectados
Ejecución:
el bit de almacenamiento
se borra
Operandos:
Bloque de funciones
Estructura FBD_ONESHOT
Texto estructurado:
InputBit
InputBitn-1
OutputBit
Indicadores de estado
aritmético: no afectados
Ejecución:
Texto estructurado
OSRI_01.InputBit := limit_switch1;
OSRI(OSRI_01);
State := OSRI_01.OutputBit;
Bloque de funciones
Operandos:
Bloque de funciones
Estructura FBD_ONESHOT
Texto estructurado:
InputBit
InputBit n-1
OutputBit
Indicadores de estado
aritmético: no afectados
Ejecución:
Texto estructurado
OSFI_01.InputBit := limit_switch1;
OSFI(OSFI_01);
Output_state := OSFI_01.OutputBit;
Bloque de funciones
Notas:
Operandos:
Estructura TIMER
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
.PRE < 0 4 34
.ACC < 0 4 34
Ejecución:
Condición Acción de lógica de escalera de relés
preescán Los bits .EN, .TT y .DN se borran.
Bit .DN = 1
examine el bit .DN
Bit .DN = 0
Bit .EN = 1
sí la condición de salida de
renglón se establece como
verdadera
.ACC = 2,147,483,647
fin
Operandos:
Estructura TIMER
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
.PRE < 0 4 34
.ACC < 0 4 34
Ejecución:
condición de entrada de
renglón es falsa
Bit .DN = 0
examine el bit .DN
Bit .DN = 1
Bit .EN = 0
el valor .ACC no
retorna al
valor inicial
sí la condición de salida de
renglón se establece como
falsa
.ACC = 2,147,483,647
fin
condición de entrada de renglón es verdadera Los bits .EN, .TT y .DN se establecen.
Operandos:
Estructura TIMER
preajuste
16651
valor acumulado de temporizador (.ACC)
0 el temporizador no llegó al valor .PRE
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ocurrirá un fallo mayor si Tipo de fallo Código de fallo
.PRE < 0 4 34
.ACC < 0 4 34
Ejecución:
Bit .DN = 1
examine el bit .DN
Bit .DN = 0
Bit .EN = 1
el valor .ACC no
retorna al
valor inicial
la condición de salida de
sí renglón se establece como
verdadera
.ACC = 2,147,483,647
fin
Operandos:
Bloque de funciones
Estructura FBD_TIMER
Texto estructurado:
TimerEnable
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción de bloque de funciones Acción de texto estructurado
preescán Ninguna. Ninguna.
primer escán de instrucción Los bits EN, TT y DN se borran. Los bits EN, TT y DN se borran.
La instrucción se ejecuta.
EnableOut se establece.
restablecimiento Cuando el parámetro de entrada Reset se establece, Cuando el parámetro de entrada Reset se establece,
la instrucción borra EN, TT y DN y establece la instrucción borra EN, TT y DN y establece
ACC = cero. ACC = cero.
post-escán Ninguna. Ninguna.
Texto estructurado
TONR_01.Preset := 500;
TONR_01.Reset : = reset;
TONR_O1.TimerEnable := limit_switch1;
TONR(TONR_01);
timer_state := TONR_01.DN;
Operandos:
Estructura FBD_TIMER
Texto estructurado:
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción de bloque de funciones Acción de texto estructurado
preescán Ninguna. Ninguna.
primer escán de instrucción Los bits EN, TT y DN se borran. Los bits EN, TT y DN se borran.
La instrucción se ejecuta.
EnableOut se establece.
restablecimiento Cuando el parámetro de entrada Reset se establece, Cuando el parámetro de entrada Reset se establece,
la instrucción borra EN, TT y DN, y establece la instrucción borra EN, TT y DN, y establece
ACC = PRE. Tenga presente que esto es diferente a ACC = PRE. Tenga presente que esto es diferente a
usar una instrucción RES en una instrucción TOF. usar una instrucción RES en una instrucción TOF.
post-escán Ninguna. Ninguna.
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
Operandos:
Estructura FBD_TIMER
Texto estructurado:
TimerEnable
Reset
preajuste
16651
valor acumulado de temporizador (.ACC)
0
el temporizador no llegó al valor PRE
Indicadores de estado
aritmético: no afectados
Ejecución:
La instrucción se ejecuta.
EnableOut se establece.
restablecimiento Cuando el parámetro de entrada Reset se establece, Cuando el parámetro de entrada Reset se establece,
la instrucción borra EN, TT y DN y establece la instrucción borra EN, TT y DN y establece
ACC = cero. ACC = cero.
post-escán Ninguna. Ninguna.
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
Operandos:
Estructura COUNTER
preajuste
Indicadores de estado
aritmético: no afectados
Ejecución:
bit .CU = 1 no
el bit .UN = 0
el bit .OV se
el bit .UN = 1 el bit .OV = 1 establece
.ACC ≥ .PRE
examine .ACC
la condición de salida de
renglón se establece como
verdadera
fin
Operandos:
Estructura COUNTER
Descripción: La instrucción CTD normalmente se usa con una instrucción CTU que
referencia la misma estructura de contador.
preajuste
16637
Indicadores de estado
aritmético: no afectados
Ejecución:
el bit .CD = 1 no
el bit .OV = 0
el bit .UN se
el bit .UN = 1 el bit .OV = 1 establece
.ACC ≥ .PRE
examine .ACC
la condición de salida de
renglón se establece como
verdadera
fin
Operandos:
Bloque de funciones
Estructura FBD_COUNTER
Texto estructurado:
El valor predeterminado es 0.
Reset BOOL Petición para restablecer el temporizador. Cuando se establece, el contador se restablece.
Conteo progresivo
CUEnable
preajuste
Conteo regresivo
CDEnable
preajuste
16637
Indicadores de estado
aritmético: no afectados
Ejecución:
Texto estructurado
CTUD_01.Preset := 500;
CTUD_01.Reset := Restart;
CTUD_O1.CUEnable := limit_switch1;
CTUD(CTUD_01);
counter_state := CTUD_01.DN;
Bloque de funciones
Operandos:
CONTROL
COUNTER
ATENCIÓN Puesto que la instrucción RES borra el valor .ACC, el bit .DN y
el bit .TT, no use la instrucción RES para restablecer un
temporizador TOF.
Indicadores de estado
aritmético: no afectados
Ejecución:
Instrucciones de entrada/salida
(MSG, GSV, SSV, IOT)
texto estructurado
obtener información de estado del controlador GSV lógica de escalera de relés 176
texto estructurado
establecer información de estado del SSV lógica de escalera de relés 176
controlador
texto estructurado
• enviar valores de salida a un módulo de E/S IOT lógica de escalera de relés 201
o controlador consumidor en un punto
específico de su lógica texto estructurado
• activar una tarea de evento en otro
controlador
Operandos:
Texto estructurado
MSG(MessageControl);
Los operandos son iguales a los de la instrucción MSG de lógica de
escalera de relés.
Estructura MESSAGE
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
bit .EN
bit .EW
bit .ST
41382
1 2 3 4 5 6 7
.ST se borra
.ST se borra
.EN se establece
.EW se establece
Ejecución:
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como Ninguna.
falsa.
bit .EW = 1
examine el bit .EW
bit .EW = 0
bit .ST = 1
examine el bit .ST
bit .ST = 0
bit .DN = 1
examine el bit .DN
bit .DN = 0
no sí
bit .DN = 1
examine el bit .DN sí conexión de no
módulo en
ejecución
bit .DN = 0 el bit .EN se borra ejecute la petición de
mensaje
bit .ER = 1
examine el bit .ER el bit .EW se establece el bit .ER se
establece
bit .ER = 0
fin
La instrucción se ejecuta.
ejecución de la instrucción
bit .EN = 1 bit .EN = 0
examine el bit .EN
no sí
sí conexión de no
módulo en
ejecución
los bits .EW, .ST, .TO, .DN y .ER se borran
el bit .EN se establece
ejecute la petición de mensaje
el bit .EW se establece el bit .ER se
establece
la condición de salida de
renglón se establece
como falsa
fin
Indicadores de estado
aritmético: no afectados
Códigos de error MSG Los códigos de error dependen del tipo de instrucción MSG.
Códigos de error
Memoria no disponible
Los detalles que usted configura dependen del tipo de mensaje que
selecciona.
42976
• 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.
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];
Este tag representa una máscara de bit de los puntos en los cuales se
restablecen los fusibles
Destino dejar en blanco
Restablecer diagnósticos enclavados en Tipo de mensaje CIP genérico
un módulo de entrada digital
Tipo de servicio Restablecer diagnósticos enclavados (I)
Origen tag_name de tipo DINT
Este tag representa una máscara de bit de los puntos en los cuales se
restablecen los diagnósticos.
Restablecer diagnósticos enclavados en Tipo de mensaje CIP genérico
un módulo de salida digital
Tipo de servicio Restablecer diagnósticos enclavados (O)
Origen tag_name de tipo DINT
Este tag representa una máscara de bit de los puntos en los cuales se
restablecen los diagnósticos.
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.
1 1 1 2 1
2 2 2 4 3
3 3 3
4 4 4
Los comandos TypedWrite/TypedRead mantienen la Los comandos de rango de palabras llenan el tag de destino
estructura y el valor de los datos. contiguamente. La estructura y valor de los datos se cambian
según el tipo de datos de destino.
Use los tipos de mensajes SLC para comunicarse con los controladores
SLC y MicroLogix. La siguiente tabla muestra los tipos de datos que la
instrucción le permite acceder. La tabla también muestra el tipo de
datos Logix5000 correspondiente.
Para este tipo de datos SLC o Use este tipo de datos Logix5000
MicroLogix
F REAL
L (controladores MicroLogix 1200 y 1500) DINT
N INT
• 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.
Los tipos de mensaje PLC-3 han sido diseñados para los procesadores
PLC-3.
Para enteros, este comando lee enteros de 16 bits del procesador PLC-3 y los almacena
en matrices de datos SINT, INT o DINT en el controlador Logix5000, y mantiene la
integridad de los datos.
Este comando también lee datos de punto flotante (coma flotante) del PLC-3 y los
almacena en un tag de tipo de datos REAL en el controlador Logix5000.
TypedWrite PLC3 escribir números enteros o datos tipo REAL.
Este comando escribe datos SINT o INT en el archivo de números enteros PLC-3, y
mantiene la integridad de los datos. Usted puede escribir datos DINT siempre y cuando
estén comprendidos dentro de un tipo de datos INT (−32,768 ≥ ≤ 32,767).
Este comando también escribe datos de tipo REAL del controlador Logix5000 en un
archivo de valores con punto flotante (coma flotante) PLC-3.
Lectura de rango de palabras leer un rango continuo de palabras de 16 bits en la memoria PLC-3 independientemente
PLC3 del tipo de datos.
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.
1 1 1 2 1
2 2 2 4 3
3 3 3
4 4 4
Los comandos TypedWrite/TypedRead mantienen la Los comandos de rango de palabras llenan el tag de destino
estructura y el valor de los datos. contiguamente. La estructura y el valor de los datos se
cambian según el tipo de datos de destino.
Los tipos de mensaje PLC-2 han sido diseñados para los procesadores
PLC-2.
Ejemplos de configuración Los ejemplos siguientes muestran tags de origen y destino, así como
elementos para diferentes combinaciones de controladores.
MSG
Para las instrucciones MSG que provienen de un controlador
Logix5000 y escriben en otro procesador:
No puede usar un tag de alias para el tag de destino. El destino debe ser un tag de
base.
Logix5000 → PLC-5 tag de origen array_1[0]
elemento de destino N7:10
Logix5000 → SLC
Puede usar un tag de alias para el tag de origen (en el controlador Logix5000 de
origen).
Logix5000 → PLC-2 tag de origen array_1[0]
elemento de destino 010
Puede usar un tag de alias para el tag de destino (en el controlador Logix5000 de
origen).
Logix5000 → PLC-5 elemento de origen N7:10
tag de destino array_1[0]
Logix5000 → SLC
Puede usar un tag de alias para el tag de destino (en el controlador Logix5000 de
origen).
Logix5000 → PLC-2 elemento de origen 010
tag de destino array_1[0]
Especifique los detalles Para configurar una instrucción MSG, usted especifica estos detalles
en la ficha Communication.
de comunicación
Si Entonces
La configuración de E/S del controlador Use el botón Browse para seleccionar el módulo.
tiene el módulo que obtiene el mensaje.
La configuración de E/S del controlador 1. Use el botón Browse para seleccionar el módulo de comunicación local.
tiene sólo el módulo de comunicación local. 2. Escriba el resto de la ruta.
La configuración de E/S del controlador no Escriba la ruta.
tiene ninguno de los módulos que necesita
para el mensaje.
Ejemplo
La configuración de E/S del controlador
tiene el módulo que obtiene el mensaje.
Haga clic en el botón Browse y seleccione el módulo.
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:
Si usted Entonces
Almacena en caché la La conexión se mantiene abierta una vez finalizada la
conexión instrucción MSG. Así se optimiza el tiempo de ejecución.
El abrir una conexión cada vez que se ejecuta el mensaje
aumenta el tiempo de ejecución.
No almacena en caché La conexión se cierra una vez finalizada la instrucción MSG.
la conexión Así se libera la conexión para otros usos.
Pautas
Pauta Detalles
1. Para cada instrucción MSG, cree un tag de Cada instrucción MSG requiere su propio tag de control.
control.
• Tipo de datos = MESSAGE
• Alcance = controlador
• El tag no puede ser parte de una matriz ni de un tipo de datos definido por el usuario.
2. Mantenga los datos de origen y/o destino al Una instrucción MSG puede acceder sólo a tags que están en la carpeta de tags del
alcance del controlador. controlador (alcance del controlador).
3. Si su MSG es a un dispositivo que usa Si su mensaje es a un dispositivo que usa enteros de 16 bits, tal como un controlador
enteros de 16 bits, use un búfer de INT en el PLC-5® o SLC 500™, y éste transfiere enteros (no valores REAL), use un búfer de INT en
MSG y DINT en todo el proyecto. el mensaje y DINT en todo el proyecto.
Así se aumenta la eficiencia de su proyecto porque los controladores Logix se ejecutan
más eficientemente y usan menos memoria cuando trabajan con enteros de 32 bits
(DINT).
Para convertir entre INT y DINT, consulte Logix5000 Controllers Common Procedures,
publicación 1756-PM001.
4. Almacene en caché los MSG conectados Almacene en caché la conexión para dichas instrucciones MSG que se ejecutan con
que se ejecutan con mayor frecuencia. más frecuencia, hasta el número máximo permitido por la revisión del controlador.
Esto optimiza el tiempo de ejecución porque el controlador no tiene que abrir una
conexión cada vez que se ejecuta el mensaje.
5. Si desea habilitar más de 16 MSG Si usted habilita más de 16 MSG a la vez, algunas instrucciones MSG pueden
simultáneamente, use el mismo tipo de experimentar retardos al ingresar en la cola. Para garantizar la ejecución de cada
estrategia de administración. mensaje, use una de estas opciones.
• Habilite cada mensaje en secuencia.
• Habilite los mensajes en grupos.
• Programe un mensaje para comunicarse con varios dispositivos. Para obtener más
información, consulte Logix5000 Controllers Common Procedures, publicación
1756-PM001.
• Programe la lógica para coordinar la ejecución de mensajes. Para obtener más
información, consulte Logix5000 Controllers Common Procedures, publicación
1756-PM001.
6. Mantenga el número de MSG no El controlador puede tener 10 - 40 búferes no conectados. El número predeterminado
conectados y no almacenados en caché en es 10.
un valor menor que el número de búferes no
• Si todos los búferes no conectados se usan cuando una instrucción deja la cola de
conectados.
mensajes, se produce un error en la instrucción y no transfiere los datos.
• Usted puede aumentar el número de búferes no conectados (40 máx.), pero continúe
siguiendo las pautas 5.
• Para aumentar el número de búferes no conectados, consulte Logix5000 Controllers
Common Procedures, publicación 1756-PM001.
Obtener valor del sistema Las instrucciones GSV/SSV reciben y envían datos de sistema del
controlador que se almacenan en los objetos.
(GSV) y establecer valor del
sistema (SSV)
Operandos:
INT
DINT
REAL
estructura
Source (SSV) SINT tag el tag que contiene los datos que desea copiar al atributo
INT
DINT
REAL
estructura
Texto estructurado
GSV(ClassName,InstanceName,AttributeName,Dest);
SSV(ClassName,InstanceName,AttributeName,Source);
Los operandos son iguales que para las instrucciones GSV y SSV de
lógica de escalera de relés.
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
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como Ninguna
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
la instrucción se ejecuta Obtenga o establezca el valor especificado. Obtenga o establezca el valor especificado.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
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.
ProductRev INT GSV Identifica la revisión del producto actual. La visualización debe
ser hexadecimal.
0010 reservado
0011 reservado
0110 marcha
0111 programa
Controlador = 14
Vendor INT GSV Identifica el suministrador del dispositivo.
Allen-Bradley = 0001
Valor: Significado:
0 detección de mensajes duplicados inhabilitada
no cero detección de mensajes duplicados inhabilitada
EmbeddedResponseEnable SINT GSV Habilita la funcionalidad de respuesta incorporada (punto a punto
solamente).
Valor: Significado:
0 se inicia solamente después de que se recibe uno
(opción predeterminada)
1 habilitado incondicionalmente
ENQTransmitLimit SINT GSV El número de consultas (ENQ) que se envían después del tiempo
de espera de ACK (punto a punto solamente).
Valor: Significado:
0 supresión de EOT inhabilitada
no cero supresión de EOT habilitada
Valor: Significado:
0 BCC (predeterminado)
1 CRC
MasterMessageTransmit SINT GSV Valor actual de la transmisión de mensaje del maestro (maestro
solamente).
Valor: Significado:
0 entre encuestas de estación
1 en secuencia de encuesta (en lugar del número de
estación del maestro)
El valor predeterminado es 0.
NAKReceiveLimit SINT GSV El número de NAK recibidos como respuesta a un mensaje antes
de detener la transmisión (comunicación punto a punto
solamente).
Valor: Significado:
0 basado en mensajes; no permite a los esclavos
iniciar mensajes
1 basado en mensajes, pero permite a los esclavos
iniciar mensajes (predeterminado)
2 estándar, transferencia de un solo mensaje por
escán de nodo
3 estándar, transferencia de varios mensajes por
escán de nodo
La configuración predeterminada es 1.
ReplyMessageWait DINT GSV El tiempo (actuando como maestro) que se debe esperar después
de recibirse un ACK antes de encuestarse el esclavo en busca de
una respuesta (maestro solamente).
SSV
MessageType SINT GSV Especifica el tipo de mensaje.
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
msg_path
msg_path GSV
GSV SSV
SSV
0 Get
GetSystem
SystemValue
Value Set
SetSystem
SystemValue
Value
Class
Classname
name Message
MESSAGE Class
Classname
name Message
MESSAGE
Instance
Instance name
name msg_1
msg_1 Instance
Instance name
name msg_1
msg_1
AttributeName
Attribute Name MessageType
MessageType Attribute
Attribute Name MessageType
Name MessageType
Dest
Dest msg_1_type
msg_1_type Source
Source tag_a
tag_a
22 00
SSV
SSV SSV
SSV
Set System
Set Value
System Value Set
SetSystem
SystemValue
Value
Class
Classname
name Message
MESSAGE Class
Classname
name Message
MESSAGE
Instance
Instancename
name msg_1
msg_1 Instance
Instance name
name msg_1
msg_1
Attribute Name
Attribute ConnectionPath
Name ConnectionPath Attribute
AttributeName MessageType
Name MessageType
Source
Source msg_1path[0]
msg_1_path[0] Source
Source msg_1_type
msg_1_type
66 22
msg_1.EN
msg_1.EN MSG
MSG
1 / Tipo
Type– Escritura
- CIP Datade tabla
Tablede Write
datos CIP EN
EN
Message
Message Control
Control msg_1 ...
msg_1 DN
DN
ER
ER
Texto estructurado
IF msg_path THEN
GSV(MESSAGE,msg_1,MessageType,msg_1_type);
SSV(MESSAGE,msg_1,MessageType,tag_a);
SSV(MESSAGE,msg_1,ConnectionPath,msg_1_path[0]);
SSV(MESSAGE,msg_1,MessageType,msg_1_type);
END_IF;
MSG(msg_1);
END_IF;
Valor: Significado:
16#0000 Reserva: el controlador se está encendiendo.
Bit: Significado:
0 forzados instalados (1=sí, 0=no)
1 forzados habilitados (1=sí, 0=no)
2-15 no se usa
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).
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
Code INT Decimal código único para el fallo (depende del tipo de fallo)
Info DINT[8] Hexadecimal información específica del fallo (depende del código y tipo de
fallo)
MaxScanTime DINT GSV El tiempo de ejecución máximo registrado para este programa.
El tiempo se representa en microsegundos.
SSV
MinorFaultRecord DINT[11] GSV Registra los fallos menores para este programa
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
Code INT Decimal código único para el fallo (depende del tipo de fallo)
Info DINT[8] Hexadecimal información específica del fallo (depende del código y tipo de
fallo)
SFCRestart INT GSV no se usa – reservado para uso futuro
SSV
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.
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.
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);
Texto estructurado
GSV(PROGRAM,DISCRETE,LASTSCANTIME,
discrete_info.LastScanTime);
GSV(PROGRAM,DISCRETE,MAXSCANTIME,discrete_info.MaxScanTime);
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);
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);
Salida inmediata (IOT) La instrucción IOT actualiza inmediatamente los datos de salida
especificados (tag de salida o tag producido).
Operandos:
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:
Con este controlador Mediante esta red El dispositivo consumidor recibe los
datos y el activador de evento
ControlLogix backplane inmediatamente
Red EtherNet/IP inmediatamente
Red ControlNet dentro del intervalo entre paquetes actual
(API) del tag consumido (conexión)
SoftLogix5800 Usted puede producir y consumir tags sólo dentro del intervalo entre paquetes actual
por una red ControlNet. (API) del tag consumido (conexión)
Indicadores de estado
aritmético: no afectados
Ejecución:
Texto estructurado
IOT (Local:5:O);
Texto estructurado
Instrucciones de comparación
(CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Operandos:
DINT
REAL
cadena
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Texto estructurado
IF BOOL_expression THEN
<statement>;
END_IF;
Ejecución:
la expresión es
verdadera la condición de salida de
evalúe la expresión
renglón se establece como
verdadera
la expresión es falsa
la condición de salida de
renglón se establece
como falsa
fin
Expresiones CMP
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:
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
Operador Descripción
= igual que
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
<> diferente de
Operandos:
DINT
REAL
cadena
Source B SINT inmediato valor que se compara con
Source A
INT tag
DINT
REAL
cadena
Texto estructurado
IF sourceA = sourceB THEN Use el signo igual “=” como operador dentro de una expresión. Esta
<statements>; expresión evalúa si sourceA es igual que sourceB.
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:
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
sí la condición de salida de
Source A = Source B
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
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.
Texto estructurado
Bloque de funciones
Mayor o igual que (GEQ) La instrucción GEQ determina si Source A es mayor o igual que
Source B.
Operandos:
INT tag
DINT
REAL
cadena
Source B SINT inmediato valor que se compara con Source A
INT tag
DINT
REAL
cadena
Texto estructurado
IF sourceA >= sourceB THEN Use los signos mayor que e igual “>=” adyacentes como operador
<statements>; dentro de una expresión. Esta expresión evalúa si sourceA es mayor o
igual que sourceB.
Bloque de funciones
Estructura FBD_COMPARE
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
sí la condición de salida de
Source A ≥ Source B
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
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.
Texto estructurado
Bloque de funciones
Mayor que (GRT) La instrucción GRT determina si Source A es mayor que Source B.
Operandos:
INT tag
DINT
REAL
cadena
Source B SINT inmediato valor que se compara con Source A
INT tag
DINT
REAL
cadena
Texto estructurado
IF sourceA > sourceB THEN Use el signo mayor que “>” como un operador dentro de una
<statements>; expresión. Esta expresión evalúa si sourceA es mayor que sourceB.
Bloque de funciones
Estructura FBD_COMPARE
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
sí la condición de salida de
Source A > Source B
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
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.
Texto estructurado
Bloque de funciones
Menor o igual que (LEQ) La instrucción LEQ determina si Source A es menor o igual que
Source B.
Operandos:
INT tag
DINT
REAL
cadena
Source B SINT inmediato valor que se compara con Source A
INT tag
DINT
REAL
cadena
Texto estructurado
IF sourceA <= sourceB THEN Use los signos menor que e igual “<=” adyacentes como operador
<statements>; dentro de una expresión. Esta expresión evalúa si sourceA es menor o
igual que sourceB.
Bloque de funciones
Estructura FBD_COMPARE
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
sí la condición de salida de
Source A ≤ Source B
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
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.
Texto estructurado
Bloque de funciones
Menor que (LES) La instrucción LES determina si Source A es menor que Source B.
Operandos:
INT tag
DINT
REAL
cadena
Source B SINT inmediato valor que se compara con Source A
INT tag
DINT
REAL
cadena
Texto estructurado
IF sourceA < sourceB THEN Use el signo menor que “<” como un operador dentro de una
<statements>; expresión. Esta expresión evalúa si sourceA es menor que sourceB.
Bloque de funciones
Estructura FBD_COMPARE
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
sí la condición de salida de
Source A < Source B
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
Bloque de funciones
Condición: Acción
preescán Ninguna.
primer escán de instrucción Ninguna.
primera ejecución de instrucción Ninguna.
EnableIn es falsa EnableOut se borra.
EnableIn es verdadera La instrucción se ejecuta.
EnableOut se establece.
post-escán Ninguna.
Texto estructurado
Bloque de funciones
Operandos:
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Test SINT inmediato valor que se prueba
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
High limit SINT inmediato valor del límite superior
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Texto estructurado
<statement>;
END_IF;
Bloque de funciones
Estructura FBD_LIMIT
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.
La instrucción es verdadera si el valor de prueba se encuentra entre los límites inferior y La instrucción es verdadera si el valor de prueba se encuentra fuera de los
superior, o coincide con uno de dichos límites. límites inferior y superior, o coincide con uno de dichos límites.
0
0
−1 +1
−1 +1
límite inferior
límite superior
límite superior
límite inferior
−(n+1) +n
−(n+1) +n
n = valor máximo n = valor máximo
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
la comparación es
verdadera la condición de salida de
evaluar el límite
renglón se establece
como verdadera
la comparación es falsa
la condición de salida de
renglón se establece
como falsa
fin
Bloque de funciones
Condición Acción
preescán Ninguna.
primer escán de instrucción Ninguna.
primera ejecución de instrucción Ninguna.
EnableIn se borra EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se
actualizan.
EnableIn se establece La instrucción se ejecuta.
EnableOut se establece.
post-escán Ninguna.
Texto estructurado
light_1 := 1;
ELSE
light_1 := 0;
END_IF;
Bloque de funciones
Texto estructurado
light_1 := 1;
ELSE
light_1 := 0;
END_IF;
Bloque de funciones
Máscara igual que (MEQ) La instrucción MEQ pasa los valores Source y Compare por una
máscara y compara los resultados.
Operandos:
INT tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Mask SINT inmediato define qué bits se deben bloquear o pasar
INT tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Compare SINT inmediato valor que se compara con Source
INT tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Texto estructurado
<statement>;
END_IF;
Bloque de funciones
Estructura FBD_MASK_EQUAL
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.
Prefijo Descripción
16# hexadecimal
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
origen
enmascarado = sí la condición de salida de
comparación renglón se establece
enmascarada como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
Bloque de funciones
Condición Acción
preescán Ninguna.
primer escán de instrucción Ninguna.
primera ejecución de instrucción Ninguna.
EnableIn se borra EnableOut se borra, la instrucción no efectúa ninguna operación y las salidas no se
actualizan.
EnableIn se establece La instrucción se ejecuta.
EnableOut se establece.
post-escán Ninguna.
value_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 value_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0
mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
value_1 0 1 0 1 0 1 0 1 1 1 1 1 X X X X value_2 0 1 0 1 0 1 0 1 1 1 1 1 X X X X
enmascarado enmascarado
Texto estructurado
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_1 X X X X X X X X X X X X 1 1 1 1 value_2 X X X X X X X X X X X X 0 0 0 0
enmascarado enmascarado
Texto estructurado
Bloque de funciones
Operandos:
INT tag
DINT
REAL
cadena
Source B SINT inmediato valor que se compara con Source A
INT tag
DINT
REAL
cadena
Texto estructurado
IF sourceA <> sourceB THEN Use los signos menor que y mayor que “<>” juntos como operador
<statements>; dentro de una expresión. Esta expresión evalúa si sourceA es
diferente de sourceB.
Bloque de funciones
Estructura FBD_COMPARE
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de
renglón es verdadera
sí la condición de salida de
Source A = Source B
renglón se establece
como verdadera
no
la condición de salida de
renglón se establece
como falsa
fin
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.
Texto estructurado
Bloque de funciones
Notas:
Instrucciones de cálculo/matemáticas
(CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Calcular (CPT) La instrucción CPT realiza las operaciones aritméticas que usted define
en la expresión.
Operandos:
Texto estructurado
destino := numeric_expresion;
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.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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:
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
Sumar (ADD) La instrucción ADD suma Source A con Source B y coloca el resultado
en Destination.
Operandos:
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Source B SINT inmediato valor que se suma a Source A
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceA + sourceB; Use el signo más “+” como operador dentro de una expresión. Esta
expresión suma sourceA a sourceB y almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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
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.
Texto estructurado
Bloque de funciones
Operandos:
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Source B SINT inmediato valor que se resta de Source A
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceA - sourceB; Use el signo menos “−” como operador en una expresión. Esta
expresión resta sourceB de sourceA y almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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
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.
Texto estructurado
Bloque de funciones
Operandos:
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Source B SINT inmediato valor del multiplicador
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceA * sourceB; Use el signo de multiplicación “∗” como operador en una expresión.
Esta expresión multiplica sourceA por sourceB y almacena el resultado
en dest.
Bloque de funciones
Estructura FBD_MATH
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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
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.
Texto estructurado
Bloque de funciones
Operandos:
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Source B SINT inmediato valor del divisor
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceA / sourceB; Use el signo de dividir “/” como operador en una expresión. Esta
expresión divide sourceA entre sourceB y almacena el resultado en
dest.
Bloque de funciones
Estructura FBD_MATH
Para detectar una posible división entre cero, examine el fallo menor
(S:MINOR). Consulte el documento Logix5000 Controllers Common
Procedures, publicación 1756-PM001.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
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
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.
Texto estructurado
Bloque de funciones
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.
43009
Operandos:
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Source B SINT inmediato valor del divisor
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceA MOD sourceB; Use MOD como operador en una expresión. Esta expresión divide
sourceA entre sourceB y almacena el residuo en dest.
Bloque de funciones
Estructura FBD_MATH
Para detectar una posible división entre cero, examine el fallo menor
(S:MINOR). Consulte el documento Logix5000 Controllers Common
Procedures, publicación 1756-PM001.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
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 )
Bloque de funciones
Condición Acción
preescán Ninguna.
primer escán de instrucción Ninguna.
primera ejecución de instrucción Ninguna.
EnableIn se borra EnableOut se borra.
post-escán Ninguna.
Texto estructurado
Bloque de funciones
Raíz cuadrada (SQR) La instrucción SQR calcula la raíz cuadrada de Source y coloca el
resultado en Destination.
Operandos:
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := SQRT(source); Use SQRT como función. Esta expresión calcula la raíz cuadrada de
source y almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH_ADVANCED
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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
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.
Texto estructurado
sqr_result := SQRT(value_1);
Bloque de funciones
Cambiar signo (NEG) La instrucción NEG cambia el signo de Source y coloca el resultado en
Destination.
Operandos:
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := -source; Use el signo menos “−” como operador en una expresión. La
expresión cambia el signo de source y almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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
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.
Texto estructurado
negate_result := -value_1;
Bloque de funciones
Valor absoluto (ABS) La instrucción ABS toma el valor absoluto de Source y coloca el
resultado en Destination.
Operandos:
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := ABS(source); Use ABS como función. Esta expresión calcula el valor absoluto de
source y almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH_ADVANCED
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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 |
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.
Texto estructurado
value_1_absolute := ABS(value_1);
Bloque de funciones
Notas:
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.
texto estructurado(1)
copiar una parte específica de un número MVM lógica de escalera de relés 285
entero
copiar una parte específica de un número MVMT texto estructurado 288
entero en el bloque de funciones
bloque de funciones
mover bits dentro de un número entero o entre BTD lógica de escalera de relés 292
números enteros
mover bits dentro de un número entero o entre BTDT texto estructurado 295
números enteros en el bloque de funciones
bloque de funciones
borrar un valor CLR texto estructurado(1) 298
bloque de funciones
operación O a nivel de bits Bitwise OR lógica de escalera de relés 307
texto estructurado(2)
bloque de funciones
operación O exclusivo a nivel de bits Bitwise XOR lógica de escalera de relés 310
texto estructurado(2)
bloque de funciones
operación NOT a nivel de bits Bitwise NOT lógica de escalera de relés 314
texto estructurado(2)
bloque de funciones
Y lógico hasta ocho entradas booleanas. Boolean AND (BAND) texto estructurado(2) 317
bloque de funciones
O lógico hasta ocho entradas booleanas. Boolean OR (BOR) texto estructurado(2) 320
bloque de funciones
realizar un O exclusivo en dos entradas Boolean Exclusive OR texto estructurado(2) 323
booleanas. (BXOR)
bloque de funciones
complementar una entrada booleana. Boolean NOT (BNOT) texto estructurado(2) 326
bloque de funciones
(1)
Texto estructurado solamente.
(2)
En texto estructurado, las operaciones AND, OR, XOR y NOT pueden ser lógicas o a nivel de bits.
Operandos:
INT tag
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := source; Use una asignación “:=” con una expresión. Esta asignación mueve el
valor de source a dest.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
Texto estructurado
Mover con máscara (MVM) La instrucción MVM copia Source a un Destination y permite
enmascarar porciones de los datos.
Operandos:
INT tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Mask SINT inmediato qué bits se bloquean o se pasan
INT tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination SINT tag tag para almacenar el resultado
INT
DINT
Texto estructurado
dest := (Dest AND NOT (Mask)) Esta instrucción está disponible en texto estructurado como MVMT.
OR (Source AND Mask); O puede combinar lógica a nivel de bits dentro de una expresión y
asignar el resultado al destino. Esta expresión realiza un movimiento
con máscara en Source.
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.
Prefijo: Descripción
16# hexadecimal
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
Ejemplo: Copie datos de value_a a value_b, mientras permite que los datos
sean enmascarados (un 0 enmascara los datos en value_a).
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1
Texto estructurado
Operandos:
Bloque de funciones
Estructura FBD_MASKED_MOVE
Texto estructurado
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.
Prefijo Descripción
16# hexadecimal
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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
Texto estructurado
MVMT(MVMT_01);
value_masked := MVMT_01.Dest;
Bloque de funciones
Distribuir campo de bits La instrucción BTD copia los bits especificados de Source, desplaza
los bits a la posición apropiada y escribe los bits en Destination.
(BTD)
Esta instrucción está disponible en texto estructurado y en bloque de
funciones como BTDT; vea la página 295.
Operandos:
INT tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Source bit DINT inmediato número del bit (número del bit más bajo)
desde donde empezar el movimiento
(0-31 DINT)
(0-15 INT) debe estar dentro del rango válido para el
(0-7 SINT) tipo de datos de Source
Destination SINT tag tag a donde mover los bits
INT
DINT
Destination DINT inmediato número del bit (número del bit más bajo)
bit desde donde empezar a copiar bits desde
Source
(0-31 DINT)
(0-15 INT) debe estar dentro del rango válido para el
(0-7 SINT) tipo de datos del destino
Length DINT inmediato número de bits que se van a mover
(1-32)
Indicadores de estado
aritmético: no afectados
Ejecución:
Ejemplo 1: Una vez habilitada, la instrucción BTD transfiere los bits dentro de
value_1.
value_1 antes de la 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
instrucción BTD
value_1 después de la 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
instrucción BTD
bit de origen
value_1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
bit de destino
value_2 antes de la 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
instrucción BTD
value_2 después de la 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
instrucción BTD
Operandos:
Bloque de funciones
Estructura FBD_BIT_FIELD_DISTRIBUTE
Texto estructurado:
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
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados
Ejecución:
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
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
Borrar (CLR) La instrucción CLR borra (pone en cero) todos los bits de Destination.
Operandos:
INT
DINT
REAL
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
Condición Acción de lógica de escalera de relés
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera La instrucción borra Destination.
Texto estructurado
value := 0;
Operandos:
DINT
REAL
Modo de orden Si Source Y usted desea cambiar los bytes a este Entonces
es un patrón (cada letra representa un byte seleccione
diferente)
INT n. a. cualquiera de las
opciones
DINT ABCD ⇒ DCBA REVERSE
(o introduzca 0)
REAL
ABCD ⇒ CDAB WORD (o introduzca 1)
ABCD ⇒ BADC HIGH/LOW
(o introduzca 2)
Destination INT tag tag para almacenar los bytes en el nuevo orden
Si Source Entonces el destino debe ser un
DINT
es un
REAL INT INT
DINT
DINT DINT
REAL REAL
Texto estructurado
SWPB(Source,OrderMode,Dest);
Los operandos son los mismos que los de la instrucción SWPB de
lógica de escalera de relés. Si selecciona el modo de orden
HIGH/LOW, introdúzcalo como HIGHLOW o HIGH_LOW (sin la
barra diagonal).
42968
AB
Indicadores de estado
aritmético: no afectados
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción reacomoda los bytes especificados. La instrucción reacomoda los bytes especificados.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
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.
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);
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;
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.
Operandos:
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Source B SINT inmediato valor con que se a realiza la operación AND
con Source A
INT tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination SINT tag almacena el resultado
INT
DINT
Texto estructurado
dest := sourceA AND sourceB
Use AND o el signo “&” como operador dentro de una expresión. Esta
expresión evalúa sourceA AND sourceB.
Bloque de funciones
Estructura FBD_LOGICAL
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
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.
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
Texto estructurado
Bloque de funciones
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.
Operandos:
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Source B SINT inmediato valor con que se realiza la
operación O con Source A
INT tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination SINT tag almacena el resultado
INT
DINT
Texto estructurado
dest := sourceA OR sourceB
Use OR como operador dentro de una expresión. Esta expresión
evalúa sourceA OR sourceB.
Bloque de funciones
Estructura FBD_LOGICAL
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
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.
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
Texto estructurado
Bloque de funciones
O exclusivo a nivel de bits La instrucción XOR realiza una operación O exclusivo a nivel de bits
usando los bits en Source A y Source B, y coloca el resultado en
(XOR) Destination.
Operandos:
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Source B SINT inmediato valor con que se realiza la operación
XOR con Source A
INT tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination SINT tag almacena el resultado
INT
DINT
Texto estructurado
dest := sourceA XOR sourceB
Use XOR como operador dentro de una expresión. Esta expresión
evalúa sourceA XOR sourceB.
Bloque de funciones
Estructura FBD_LOGICAL
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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_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
Texto estructurado
Bloque de funciones
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.
Operandos:
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination SINT tag almacena el resultado
INT
DINT
Texto estructurado
dest := NOT source
Use NOT como operador dentro de una expresión. Esta expresión
evalúa source con la operación NOT.
Bloque de funciones
Estructura FBD_LOGICAL
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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
Texto estructurado
Bloque de funciones
Operandos:
Texto estructurado
IF operandA AND operandB THEN
Use AND o el signo “&” como operador dentro de una expresión.
<statement>;
Los operandos deben ser valores BOOL o expresiones que resultan
END_IF; en valores BOOL. Esta expresión evalúa si tanto operandA como
operandB están establecidos (verdaderos).
Bloque de funciones
Estructura FBD_BOOLEAN_AND
Out = In1 AND In2 AND In3 AND In4 AND In5 AND In6 AND In7 AND In8
Indicadores de estado
aritmético: no afectados
Ejecución:
EnableOut se establece.
post-escán Ninguna.
Texto estructurado
Bloque de funciones
Texto estructurado
Operandos:
Texto estructurado
IF operandA OR operandB THEN
Use OR como operador dentro de una expresión. Los operandos
<statement>;
deben ser valores BOOLEANOS o expresiones que resultan en valores
END_IF; BOOLEANOS. Esta expresión evalúa si operandA u operandB, o
ambos están establecidos (verdaderos).
Bloque de funciones
Estructura FBD_BOOLEAN_OR
Indicadores de estado
aritmético: no afectados
Ejecución:
EnableOut se establece.
post-escán Ninguna.
Texto estructurado
Bloque de funciones
Texto estructurado
Operandos:
Texto estructurado
IF operandA XOR operandB THEN
Use XOR como operador dentro de una expresión. Los operandos
<statement>;
deben ser valores BOOLEANOS o expresiones que resultan en valores
END_IF; BOOLEANOS. Esta expresión evalúa si sólo operandA o sólo
operandB, está establecido (verdadero).
Bloque de funciones
Estructura FBD_BOOLEAN_XOR
Indicadores de estado
aritmético: no afectados
Ejecución:
EnableOut se establece.
post-escán Ninguna.
Texto estructurado
Bloque de funciones
Texto estructurado
Operandos:
Texto estructurado
IF NOT operand THEN
Use NOT como operador dentro de una expresión. El operando debe
<statement>;
ser un valor BOOL o expresiones que resultan en valores BOOL. Esta
END_IF; expresión evalúa si el operando está borrado (falso).
Bloque de funciones
Estructura FBD_BOOLEAN_NOT
Out = NOT In
Indicadores de estado
aritmético: no afectados
Ejecución:
EnableOut se establece.
post-escán Ninguna.
Texto estructurado
Bloque de funciones
Texto estructurado
Notas:
Instrucciones de matriz
(archivo)/misceláneas
(FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
texto estructurado
copiar el contenido de una matriz en otra matriz CPS lógica de escalera de relés 356
sin interrupción
texto estructurado
llenar una matriz con datos específicos FLL lógica de escalera de relés 362
texto estructurado(1)
calcular el promedio de una matriz de valores AVE lógica de escalera de relés 366
texto estructurado(1)
organizar una dimensión de datos de matriz en SRT lógica de escalera de relés 371
orden ascendente
texto estructurado
calcular la desviación estándar de una matriz STD lógica de escalera de relés 376
de valores
texto estructurado(1)
encontrar el tamaño de una dimensión de una SIZE lógica de escalera de relés 381
matriz
texto estructurado
(1)
No hay una instrucción equivalente en texto estructurado. Use otra programación en texto estructurado para lograr el mismo resultado. Vea la descripción de la
instrucción.
Selección del modo de Para las instrucciones FAL y FSC, el modo indica al controlador cómo
distribuir la operación de la matriz.
operación
Si desea Seleccione este
modo
realizar una operación en todos los elementos Todos
especificados de una matriz antes de continuar con la
próxima instrucción
distribuir operaciones de matriz entre un número de Numérico
escanes
Modo Todos
16639
un escán
bit .EN
bit .DN
borra los bits de estado y
borra el valor .POS
escán de la instrucción
Modo numérico
un escán
segundo escán
siguiente escán
16641
bit .EN
bit .DN
escán de la instrucción
Modo incremental
Habilitación de 1ª instrucción
Habilitación de 2ª instrucción
Habilitación de 3ª instrucción
16643
un escán
bit .EN
bit .DN
40014
escán de la instrucción
INT
DINT
REAL
Expression SINT inmediato una expresión que consiste en tags
y/o valores inmediatos separados por
INT tag operadores
DINT
REAL
Un tag SINT o INT se convierte en un valor DINT mediante extensión de
signo.
Texto estructurado
SIZE(destination,0,length-1);
FOR position = 0 TO length DO
destination[position] := numeric_expression;
END_FOR;
Estructura CONTROL
Descripción: La instrucción FAL realiza las mismas operaciones en las matrices que
la instrucción CPT realiza en los elementos.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
Bit .DN = 0 no
examine el modo INC se borra el bit interno
bit .DN
bit .DN = 1 sí
no .LEN < 0 o sí
el bit .EN se borra el bit .EN se borra modo ALL fallo mayor
.POS < 0
el bit .ER se borra
el bit .DN se borra
el valor .POS se borra sí no
.POS = .POS + 1
sí
.LEN = 0
no
sí
.POS = 0
no
no .POS < .LEN
.POS = .POS - 1 sí
no
.LEN > modo
el bit .DN se establece
el bit .EN se establece
sí
modo = .LEN
el bit .DN se
establece
el bit .EN se borra
modo
numérico
página 341
la condición de salida de
renglón se establece como
falsa
fin
no no
examinar el .LEN = 0 modo INC modo ALL
bit .DN
bit .DN = 1 sí sí sí
loop_count =
loop_count - 1
no
loop_count < 0 .POS = .POS + 1
sí
evaluar la expresión
no
examinar S:V
sí
no
.POS = .LEN
sí
la condición de salida de
renglón se establece como
verdadera
fin
modo
INC
bit .EN = 1
examinar el
bit .EN
bit .EN = 0
bit = 1
examinar el .POS = .POS + 1
bit interno
bit = 0
sí sí
.POS ≥ .LEN .POS = 0
no no
la condición de salida de
común renglón se establece como
verdadera
página 338
fin
modo
ALL
sí sí
.POS ≥ .LEN .POS = 0
no no
página 338
fin
modo
numérico
bit .EN = 1
examinar el
bit .EN
bit .EN = 0
.POS = .POS + 1
bit = 1
examinar el
bit interno
bit = 0
sí sí
.POS ≥ .LEN .POS = 0
no no
.POS = .POS - 1
no
modo = .LEN .LEN ≥ modo
sí
el bit .DN se establece la condición de salida de
el bit .EN se establece el bit .EN se establece renglón se establece como
loop_count = .LEN - .POS verdadera
.POS = .POS - 1
fin
modo ≥ sí
loop_count común
página 338
no
Expresión: Destino:
array_2[control_2.pos] array_1[control_2.pos]
Expresión: Destino:
value_1 array_2[0,control_2.pos]
Ejemplo 3: Cada vez que la instrucción FAL se habilita, copia el valor actual de
array_1 a value_1. La instrucción FAL usa el modo incremental; por
lo tanto, sólo se copia un valor de matriz cada vez que se habilita la
instrucción. La próxima vez que se habilita la instrucción, ésta
sobrescribe value_1 con el siguiente valor en array_1.
copia de matriz a elemento
Expresión: Destino:
array_1[control_1.pos] value_1
Expresión: Destino:
value_1 + value_2 array_1[control_1.pos]
Expresión: Destino:
array_2[control_2.pos] / array_3[control_2.pos] array_1[control_2.pos]
Expresión: Destino:
array_1[control_1.pos] + value_1 array_3[control_1.pos]
Ejemplo 7: Cada vez que la instrucción FAL se habilita, suma value_1 al valor
actual de array_1 y almacena el resultado en value_2. La instrucción
FAL usa el modo incremental; por lo tanto, sólo se suma un valor de
matriz a value_1 cada vez que se habilita la instrucción. La siguiente
vez que se habilita la instrucción, ésta sobrescribe value_2.
operación aritmética: (elemento + matriz) a elemento
Expresión: Destino:
value_1 + array_1[control_1.pos] value_2
Expresión: Destino:
array_1[control_1.pos] * array_3[control_1.pos] value_1
Expresiones FAL
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:
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
Búsqueda y comparación La instrucción FSC compara los valores en una matriz, elemento por
elemento.
de archivos (FSC)
Operandos:
Estructura CONTROL
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
bit .DN = 0 no
examinar el modo INC se borra el bit interno
bit .DN
bit .DN = 1 sí
no .LEN < 0 o sí
el bit .EN se borra el bit .EN se borra modo ALL fallo mayor
el bit .ER se borra .POS < 0
el bit .DN se borra
el valor .POS se borra sí no
.POS = .POS + 1
sí
.LEN = 0
no
sí
.POS = 0
no
no .POS < .LEN
.POS = .POS - 1 sí
no
.LEN > modo
el bit .DN se establece
el bit .EN se establece
sí
modo = .LEN
el bit .DN se
establece
el bit .EN se borra
modo
numérico
página 341
la condición de salida de
renglón se establece como
falsa
fin
no no
examinar el .LEN = 0 modo INC modo ALL
bit .IN
bit .DN = 1
bit .IN = 0 sí sí sí
bit .DN = 0
loop_count =
loop_count - 1
no
loop_count < 0 .POS = .POS + 1
sí
evalúe la comparación
no
coincidencia
sí
no
.POS = .LEN
sí
fin
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 00000000000000000000000000000000 0
00000000000000000000000000000000 00000000000000000000000000000000 1
00000000000000000000000000000000 00000000000000000000000000000000 2
00000000000000000000000000000000 00000000000000000000000000000000 3 La instrucción FSC determina que estos
elementos son diferentes. La instrucción
00000000000000001111111111111111 11111111111111110000000000000000 4 establece los bits .FD e .IN. El valor .POS (4)
11111111111111111111111111111111 11111111111111111111111111111111 5 indica la posición de los elementos que son
diferentes. Para continuar comparando el
11111111111111111111111111111111 11111111111111111111111111111111 6
resto de la matriz, borre el bit .IN.
11111111111111111111111111111111 11111111111111111111111111111111 7
11111111111111111111111111111111 11111111111111111111111111111111 8
11111111111111111111111111111111 11111111111111111111111111111111 9
00000000000000000000000000000000 0
00000000000000000000000000000000 1
00000000000000000000000000000000 2
00000000000000000000000000000000 3
La instrucción FSC determina que este
11111111111111110000000000000000 11111111111111110000000000000000 4 elemento de matriz es igual a
11111111111111111111111111111111 5 MySearchKey. La instrucción establece los
bits .FD e .IN. El valor .POS (4) indica la
11111111111111111111111111111111 6 posición de los elementos que son iguales.
11111111111111111111111111111111 7 Para continuar comparando el resto de la
matriz, borre el bit .IN.
11111111111111111111111111111111 8
11111111111111111111111111111111 9
AFG 0
BEH 1
HUO 2
SAK 3
La instrucción FSC determina que este
SAM SAM 4 elemento de la matriz es igual a code.
La instrucción establece los bits .FD e .IN.
FQG 5
El valor .POS (4) indica la posición de los
CLE 6 elementos que son iguales. Para continuar
CAK 7 comparando el resto de la matriz, borre el
bit .IN.
DET 8
BWG 9
Expresiones FSC
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:
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
Operador Descripción
= igual que
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
<> diferente de
Copiar archivo (COP) Las instrucciones COP y CPS copian el o los valores de Source en
Destination. Source no cambia.
Copiar archivo síncrono
(CPS)
Operandos:
cadena
estructura
Destination SINT tag el elemento inicial que va a ser sobrescrito
por Source
INT
Importante: Los operandos Source y
DINT Destination deben ser del mismo tipo; de lo
contrario, pueden ocurrir resultados
REAL inesperados.
cadena
estructura
Length DINT inmediato número de elementos de destino que se
copian
tag
Texto estructurado
COP(Source,Dest,Length);
Los operandos son iguales que los de las instrucciones COP y CPS de
CPS(Source,Dest,Length);
lógica de escalera de relés.
IMPORTANTE Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
Las instrucciones COP y CPS operan en memoria contigua. Realizan una copia de
memoria directa byte a byte. En algunos casos, escriben más allá de la matriz en
otros miembros del tag. Esto sucede si la longitud es excesiva y el tag es de un tipo
de datos definido por el usuario.
Si el tag es Entonces
tipo de datos definido por Si Length es demasiado grande, la instrucción escribe más
el usuario allá del final de la matriz a otros miembros del tag. Se detiene
al final del tag. No se genera un fallo mayor.
NO es un tipo de datos Si Length es demasiado grande, la instrucción se detiene al
definido por el usuario final de la matriz. No se genera un fallo mayor.
Indicadores de estado
aritmético: no afectados
Ejecución:
La instrucción se ejecuta.
no
source_address = Source
destination_address = sí
end_address
no
fin
destination_address =
destination_address + 1
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.
Texto estructurado
COP(array_4[0],array_5[0],10);
Texto estructurado
COP(timer_1,array_timer[5],1);
Texto estructurado
CPS(project_data[0],produced_array[0],100);
Texto estructurado
CPS(Local:0:I.Data[0],input_buffer[0],20);
array_timer[4]
•
•
•
array_timer[9] Finalmente, la instrucción copia los
valores de timer[9] a timer[10]
array_timer[10]
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;
Llenar archivo (FLL) La instrucción FLL llena los elementos de una matriz con el valor de
Source. Source no cambia.
Operandos:
Texto estructurado
SIZE(destination,0,length);
FOR position = 0 TO length-1 DO
destination[position] := source;
END_FOR;
IMPORTANTE Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción FLL realiza la operación en la memoria de datos contiguos. En algunos
casos, la instrucción escribe más allá de la matriz en otros miembros del tag. Esto
sucede si la longitud es excesiva y el tag es de un tipo de datos definido por el
usuario.
Si el tag es Entonces
tipo de datos definido por Si la longitud es demasiado grande, la instrucción escribe más
el usuario allá del final de la matriz a otros miembros del tag. Se detiene
al final del tag. No se genera un fallo mayor.
NO es un tipo de datos Si Length es demasiado grande, la instrucción se detiene al
definido por el usuario final de la matriz. No se genera un fallo mayor.
Indicadores de estado
aritmético: no afectados
Ejecución:
condición de entrada de
renglón es verdadera
no
source_address = Source
sí
destination_address =
end_address
no
la condición de salida de
renglón se establece como
destination_address = verdadera
destination_address + 1
fin
16#0101 0101
16#0101 0101
INT 16#0001 TIMER 16#0001 0001
16#0001 0001
16#0001 0001
DINT 16#0000 0001 TIMER 16#0000 0001
16#0000 0001
16#0000 0001
Texto estructurado
Operandos:
array[dim_0,dim_1,dim_2]
array[dim_0,dim_1]
array[dim_0]
Destination SINT tag resultado de la operación
INT
DINT
REAL
Control CONTROL tag estructura de control para la operación
Length DINT inmediato número de elementos de la matriz que se va
a promediar
Position DINT inmediato elemento actual en la matriz
Texto estructurado
SIZE(array,0,length);
sum := 0;
FOR position = 0 TO length-1 DO
sum := sum + array[position];
END_FOR;
destino := sum / length;
Estructura CONTROL
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
bit .DN = 0
examinar el bit .DN
bit .DN = 1
la condición de salida de
renglón se establece como
falsa
fin
condición de entrada de renglón es verdadera La instrucción AVE calcula el promedio sumando todos los elementos especificados en
la matriz y dividiendo el resultado entre el número de elementos.
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.
su
bín dimensión 1
d
0 1 2 3 4
ice
s
AVE = 19
0 20 19 18 17 16 + 14 + 9 + 4- = 46
------------------------------------ ------ = 11.5
4 4
1 15 14 13 12 11
dimensión 0
dint_ave = 12
2 10 9 8 7 6
3 5 4 3 2 1
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;
su
b
índ dimensión 1
0 1 2 3 4
ice
s
AVE = 5---------------------------------------
0 20 19 18 17 16 + 4 + 3 + 2 + 1- = 15 ------ = 3
5 5
1 15 14 13 12 11
dimensión 0 dint_ave = 3
2 10 9 8 7 6
3 5 4 3 2 1
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;
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
Texto estructurado
SRT(Array,Dimtovary,
Control); Los operandos son los mismos que para la instrucción SRT de lógica
de escalera de relés. Sin embargo, usted especifica los valores de
Length y Position al acceder a los miembros .LEN y .POS de la
estructura CONTROL, en lugar de incluir los valores en la lista de
operandos.
Estructura CONTROL
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.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
bit .DN = 1
la condición de salida de
renglón se establece como
falsa
fin
La instrucción se ejecuta.
ejecución de la instrucción La instrucción clasifica los elementos especificados La instrucción clasifica los elementos especificados
en la matriz en orden ascendente. en la matriz en orden ascendente.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
Antes Después
dimensión 1 dimensión 1
su
su
bín
bín
0 1 2 3 4
dic
d
0 1 2 3 4
ic e
es
s
0 20 19 18 17 16 0 20 19 3 17 16
1 15 14 13 12 11 1 15 14 8 12 11
dimensión 0 dimensión 0
2 10 9 8 7 6 2 10 9 13 7 6
3 5 4 3 2 1 3 5 4 18 2 1
Texto estructurado
control_1.LEN := 4;
control_1.POS := 0;
SRT(int_array[0,2],0,control_1);
Antes Después
dimensión 1 dimensión 1
su
su
bín
b
índ
0 1 2 3 4
dic
0 1 2 3 4
ice
se
s
0 20 19 18 17 16 0 20 19 18 17 16
1 15 14 13 12 11 1 15 14 13 12 11
dimensión 0 dimensión 0
2 10 9 8 7 6 2 6 7 8 9 10
3 5 4 3 2 1 3 5 4 3 2 1
Texto estructurado
control_1.LEN := 5;
control_1.POS := 0;
SRT(int_array[2,0],1,control_1);
Operandos:
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
Estructura CONTROL
Texto estructurado
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));
⎛ N ⎞
⎜ 2 ⎟
⎜∑
[ 〈 X – AVE 〉 ]
( start + i ) ⎟
Desviación estándar = ⎝i = 1 ⎠
--------------------------------------------------------------------
(N – 1)
Donde:
• inicio = subíndice de la dimensión para variar del operando de
la matriz
• xi = elemento variable en la matriz
• N = número de elementos especificados en la matriz
• AVE = N
⎛ ⎞
⎜ x ( start + i )⎟
⎜ ∑ ⎟
⎝i = 1 ⎠
-----------------------------------------
N
IMPORTANTE Asegúrese de que Length no haga que la instrucción exceda la Dimension to vary
especificada. Si ocurre esto, el destino será incorrecto.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
condición de entrada de
renglón es falsa
bit .DN = 0
examinar el bit .DN
bit .DN = 1
la condición de salida de
renglón se establece como
falsa
fin
condición de entrada de renglón es verdadera La instrucción STD calcula la desviación estándar de los elementos especificados.
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.
su
bín
0 1 2 3 4
di c
es
0 20 19 18 17 16
1 15 14 13 12 11
dimensión 0
AVE = 16 + 11 + 6 + 1- = 34 10 9 8 7 6
------------------------------------ ------ = 8.5 2
4 4
3 5 4 3 2 1
2 2 2 2
〈 16 – 8.5〉 + 〈 11 – 8.5〉 + 〈 6 – 8.5〉 + 〈 1 – 8.5〉 - = 6.454972
STD = --------------------------------------------------------------------------------------------------------------------------
〈 4 – 1〉
real_std = 6.454972
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));
su
bín
0 1 2 3 4
dic
es
0 20 19 18 17 16
1 15 14 13 12 11
dimensión 0
2 10 9 8 7 6
AVE = 20 + 19 + 18 + 17 + 16- = 90
------------------------------------------------------ ------ = 18
5 5 3 5 4 3 2 1
2 2 2 2 2
〈 20 – 18〉 + 〈 19 – 18〉 + 〈 18 – 18〉 + 〈 17 – 18〉 + 〈 16 – 18〉 - = 1.581139
STD = -----------------------------------------------------------------------------------------------------------------------------------------------------------
〈 5 – 1〉
real_std = 1.581139
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));
DINT
REAL
estructura
cadena
Dimension DINT inmediato dimensión que se va a usar:
to Vary (0, 1, 2)
Para el tamaño de Introduzca
primera dimensión 0
segunda dimensión 1
tercera dimensión 2
DINT
REAL
Texto estructurado
SIZE(Source,Dimtovary,Size);
Los operandos son iguales a los de la instrucción SIZE de lógica de
escalera de relés.
Indicadores de estado
aritmético: no afectados
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción encuentra el tamaño de una La instrucción encuentra el tamaño de una
dimensión. dimensión.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
Texto estructurado
SIZE(array_a,0,array_a_size);
Texto estructurado
SIZE(string_1.DATA[0],0,string_1_size);
Texto estructurado
SIZE(strings_a[0].DATA[0],0,data_size_a);
Notas:
Instrucciones de matriz
(archivo)/desplazamiento
(BSL, BSR, FFL, FFU, LFL, LFU)
Desplazamiento de bits a la La instrucción BSL desplaza los bits especificados dentro de la matriz
una posición hacia la izquierda.
izquierda (BSL)
Operandos:
Estructura CONTROL
IMPORTANTE Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción BSL realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción desplaza bits más allá de la matriz en otros miembros
del tag. Esto sucede si la longitud es excesiva y el tag es de un tipo de datos
definido por el usuario.
Indicadores de estado
aritmético: no afectados
Ejecución:
bit .EN = 1
examinar el bit .EN
bit .EN = 0
sí
.LEN = 0 el bit .DN se establece
no
.source bit = 1
examinar el bit de el bit .UL permanece
origen establecido.
sí
.LEN < 0 el bit .ER se establece
.source bit = 0
no
el bit .UL se establece.
desplazar matriz izquierda una posición a la
izquierda
bit de
bit .UL matriz origen
la condición de salida de
renglón se establece como
el bit .DN se establece verdadera
.POS = .LEN
fin
9 8 7 6 5 4 3 2 1 0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
antes del
desplazamiento 1
0 estos bits se desplazan
input_1
a la izquierda
bit .UL
9 8 7 6 5 4 3 2 1 0
array_dint[0] 0 1 1 1 1 0 0 0 0 1
después del
desplazamiento
31 0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
1
estos bits se desplazan a la izquierda
input_1
31 0
array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
bit .UL
Desplazamiento de bits a la La instrucción BSR desplaza los bits especificados dentro de la matriz
una posición hacia la derecha.
derecha (BSR)
Operandos:
Estructura CONTROL
IMPORTANTE Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción BSR realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción cambia los bits en otros miembros del tag. Esto sucede
si la longitud es excesiva y el tag es de un tipo de datos definido por el usuario.
Indicadores de estado
aritmético: no afectados
Ejecución:
bit .EN = 1
examinar el bit .EN
bit .EN = 0
sí
.LEN = 0 el bit .DN se establece
no
.source bit = 1
examinar el bit de el bit .UL permanece
origen establecido.
sí
.LEN < 0 el bit .ER se establece
.source bit = 0
no
el bit .UL se establece
desplazar matriz izquierda una posición hacia
la izquierda
bit de matriz bit .UL
origen
la condición de salida de
renglón se establece como
el bit .DN se establece verdadera
.POS = .LEN
fin
9 8 7 6 5 4 3 2 1 0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
antes del
desplazamiento
0
1 estos bits se desplazan
a la derecha bit .UL
input_1
9 8 7 6 5 4 3 2 1 0
array_dint[0] 1 0 0 1 1 1 1 0 0 0
después del
desplazamiento
31 0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
0
estos bits se desplazan a la derecha
bit .UL
31 0
array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
input_1
Operandos:
INT tag
DINT
REAL
cadena
estructura
Source se convierte en el tipo de datos del tag de matriz. Un número entero
menor se convierte en un número entero mayor mediante extensión de
signo.
FIFO SINT tag de FIFO que se modifica
matriz
INT especificar el primer elemento de la FIFO
REAL
cadena
estructura
Control CONTROL tag estructura de control para la operación
Estructura CONTROL
IMPORTANTE Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción FFL realiza la operación en la memoria de datos contiguos. En algunos
casos, la instrucción carga datos más allá de la matriz en otros miembros del tag.
Esto sucede si la longitud es excesiva y el tag es de un tipo de datos definido por el
usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
sí
.LEN < 0
no
sí
.POS < 0
no
sí
.POS = 0 el bit .EM está establecido
no
sí
.POS ≥ .LEN el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
sí
.LEN < 0
no
sí
.POS < 0
no
sí
.POS = 0 el bit .EM está establecido
no
sí
.POS ≥ .LEN el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
.EN = 0 sí
examinar el el bit .EN se establece .LEN < 0
bit .EN
.EN = 1 no
sí sí
.LEN < 0 .POS < 0
no no
no
sí
.POS = 0 el bit .EM está establecido
.POS o sí
no .LEN > tamaño de fallo mayor
la matriz
no
sí
.POS ≥ .LEN el bit .DN se establece
sí
no .POS > .LEN .POS = .POS - 1
no
FIFO[.POS - 1] = origen
la condición de salida de
renglón se establece como
verdadera
fin
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:
REAL
cadena
estructura
Destination SINT tag valor que sale de la FIFO
INT
DINT
REAL
cadena
estructura
El valor de destino se convierte en el tipo de datos del tag de Destination.
Un número entero menor se convierte en un número entero mayor
mediante extensión de signo.
Control CONTROL tag estructura de control para la operación
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.
IMPORTANTE Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción FFU realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción descarga datos desde otros miembros del tag. Esto
sucede si la longitud es excesiva y el tag es de un tipo de datos definido por el
usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
preescán
sí
.LEN < 0
no
sí
.POS < 0
no
sí
.POS = 0 el bit .EM está establecido
no
sí
.POS ≥ .LEN el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
sí
.LEN < 0
no
sí
.POS < 0
no
sí
.POS = 0 el bit .EM está establecido
no
sí
.POS ≥ .LEN el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
.EU = 0 sí
examinar el el bit .EU está .LEN < 0
bit .EU establecido
.EU = 1 no
sí sí
.LEN < 0 .POS < 0
no no
sí
.POS = 0 el bit .EM está establecido sí
.POS ≤ 1 el bit .EM está establecido
no
no
sí
sí .POS < 1 Destination = 0
.POS ≥ .LEN el bit .DN se establece
no
no
.POS = .POS -1
Destination = FIFO[0]
i=1
FIFO[i - 1] = FIFO[i]
i = i +1
sí
i < .LEN
no
la condición de salida de
renglón se establece como
verdadera
fin
Operandos:
INT tag
DINT
REAL
cadena
estructura
Source se convierte en el tipo de datos del tag de matriz. Un número entero
menor se convierte en un número entero mayor mediante extensión de
signo.
LIFO SINT tag de LIFO que se modifica
matriz
INT especificar el primer elemento de la LIFO
REAL
cadena
estructura
Control CONTROL tag estructura de control para la operación
Estructura CONTROL
IMPORTANTE Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción LFL realiza la operación en la memoria de datos contiguos. En algunos
casos, la instrucción carga datos más allá de la matriz en otros miembros del tag.
Esto sucede si la longitud es excesiva y el tag es de un tipo de datos definido por el
usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
preescán
sí
.LEN < 0
no
sí
.POS < 0
no
sí
.POS = 0 el bit .EM está establecido
no
sí
.POS ≥ .LEN el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
sí
.LEN < 0
no
sí
.POS < 0
no
sí
.POS = 0 el bit .EM está establecido
no
sí
.POS ≥ .LEN el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
.EN = 0 sí
examinar el el bit .EN se .LEN < 0
bit .EN establece
.EN = 1 no
sí sí
.LEN < 0 .POS < 0
no no
no
sí
.POS = 0 el bit .EM está establecido
.POS o sí
no .LEN > tamaño de fallo mayor
la matriz
no
sí
.POS ≥ .LEN el bit .DN se establece
sí
no .POS > .LEN .POS = .POS - 1
no
LIFO[.POS - 1] = origen
la condición de salida de
renglón se establece como
verdadera
fin
Descarga LIFO (LFU) La instrucción LFU descarga el valor en .POS de la LIFO y almacena 0
en ese lugar.
Operandos:
REAL
cadena
estructura
Destination SINT tag valor que sale de la LIFO
INT
DINT
REAL
cadena
estructura
El valor de destino se convierte en el tipo de datos del tag de Destination.
Un número entero menor se convierte en un número entero mayor
mediante extensión de signo.
Control CONTROL tag estructura de control para la operación
Estructura CONTROL
IMPORTANTE Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción LFU realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción descarga datos desde otros miembros del tag. Esto
sucede si la longitud es excesiva y el tag es de un tipo de datos definido por el
usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
preescán
sí
.LEN < 0
no
sí
.POS < 0
no
sí
.POS = 0 el bit .EM está establecido
no
sí
.POS ≥ .LEN el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
sí
.LEN < 0
no
sí
.POS < 0
no
sí
.POS = 0 el bit .EM está establecido
no
sí
.POS ≥ .LEN el bit .DN está establecido
no
la condición de salida de
renglón se establece como
falsa
fin
.EU = 0 sí
examinar el el bit .EU está .LEN < 0
bit .EU establecido
.EU = 1 no
sí sí
.LEN < 0 .POS < 0
no no
sí sí
.POS = 0 el bit .EM está establecido .POS < 1 Destination = 0
no no
sí
.POS > .LEN .POS = .LEN
sí
.POS ≥ .LEN el bit .DN se establece
no
no
.POS = .POS -1
.LEN > sí
tamaño de la fallo mayor
matriz
no
Destination = LIFO[control.POS]
LIFO[control.POS) = 0
la condición de salida de
renglón se establece como
verdadera
fin
Notas:
Instrucciones de secuenciador
(SQI, SQO, SQL)
INT inmediato
DINT
Un tag SINT o INT se convierte en un valor DINT mediante la extensión con
signo.
Source SINT tag datos de entrada en la matriz de secuenciador
INT
DINT
Un tag SINT o INT se convierte en un valor DINT mediante la extensión con
signo.
Control CONTROL tag estructura de control para la operación
Estructura CONTROL
Prefijo: Descripción
16# hexadecimal
Indicadores de estado
aritmético: no afectados
Ejecución:
.LEN ≤ 0
.POS < 0 no
o el bit .ER se borra
.POS > .LEN
sí
Source
no enmascarada =
Array[.POS]
enmascarada
sí
fin
INT inmediato
DINT
Un tag SINT o INT se convierte en un valor DINT mediante la extensión con
signo.
Destination DINT tag datos de salida provenientes de la matriz de
secuenciador
Control CONTROL tag estructura de control para la operación
Estructura CONTROL
Prefijo Descripción
16# hexadecimal
Indicadores de estado
aritmético: no afectados
Ejecución:
no sí
.POS = .LEN .POS ≥ .LEN .POS = 1
sí no
el valor sí ir a
.POS retorna al
valor inicial error
no
sí
.POS = .LEN el bit .DN se establece
no
no
.POS > .LEN
sí
error
fin
DINT
Un tag SINT o INT se convierte en un valor DINT mediante la extensión con
signo.
Control CONTROL tag estructura de control para la operación
Estructura CONTROL
IMPORTANTE Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción SQL realiza la operación en memoria contigua. En algunos casos, la
instrucción carga datos más allá de la matriz en otros miembros del tag. Esto sucede
si la longitud es excesiva y el tag es de un tipo de datos definido por el usuario.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
no sí
.POS = .LEN .POS ≥ .LEN .POS = 1
sí no
el valor sí ir a
.POS retorna al error
valor inicial
no
sí
.POS = .LEN el bit .DN se establece
no
no
.POS > .LEN
sí
.LEN > sí
tamaño de la
error matriz
no
fallo mayor
la condición de salida de
renglón se establece como
verdadera
fin
Notas:
Saltar a etiqueta (JMP) Las instrucciones JMP y LBL saltan porciones de la lógica de escalera.
Etiqueta (LBL)
Operandos:
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
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.
Salto a subrutina (JSR) La instrucción JSR salta la ejecución a una rutina diferente. Las
instrucciones SBR y RET son instrucciones opcionales que
Subrutina (SBR) Retorno intercambian datos con la instrucción JSR.
(RET)
Operandos de JSR:
estructura
Parámetro BOOL tag el tag en esta rutina al cual desea copiar un
de retorno resultado de la subrutina
SINT tag de
matriz • Los parámetros de retorno son
INT opcionales.
• Introduzca múltiples parámetros de
DINT retorno, si es necesario.
REAL
estructura
Texto estructurado
JSR(RoutineName,InputCount, Operando Tipo Formato Descripción
InputPar,ReturnPar);
Nombre de ROUTINE nombre rutina a ejecutar (es decir, subrutina)
la rutina
Conteo de SINT inmediato número de parámetros de entrada
entradas
INT
DINT
REAL
Parámetro BOOL inmediato datos de esta rutina que desea copiar a un
de entrada tag en la subrutina
SINT tag
• Los parámetros de entrada son
INT tag de opcionales.
matriz • Introduzca múltiples parámetros de
DINT entrada, si es necesario.
REAL
estructura
Parámetro BOOL tag el tag en esta rutina al cual desea copiar un
de retorno resultado de la subrutina
SINT tag de
matriz • Los parámetros de retorno son
INT opcionales.
• Introduzca múltiples parámetros de
DINT retorno, si es necesario.
REAL
estructura
Bloque de funciones
Parámetros de Parámetros de
entrada retorno
❇ ❇
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.
DINT
REAL
estructura
Bloque de funciones
Parámetros
❇
Operandos de RET:
INT tag de
matriz
DINT
REAL
estructura
Bloque de funciones
Parámetros
❇
SBR
Rutina que origina la llamada Subrutina
1. Si la instrucción JSR tiene un
parámetro de entrada, introduzca una
SBR
instrucción SBR.
JSR JSR
2. Coloque la instrucción SBR como la
1. Si desea copiar datos a un tag en la primera instrucción en la rutina.
RET
subrutina, introduzca un parámetro de
entrada. 3. Para cada parámetro de entrada en la
instrucción JSR, introduzca el tag en
2. Si desea copiar un resultado de la RET el cual desea copiar los datos.
subrutina a un tag en esta rutina,
introduzca un parámetro de retorno. 42974
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
Lógica de escalera de relés y texto estructurado
La instrucción se ejecuta.
ejecución de la instrucción
no
no no
sí
fin de la subrutina
no
la condición de salida de renglón se
establece como verdadera
la condición de salida de renglón
se establece como falsa la ejecución de la lógica regresa a JSR
continuar ejecutando la subrutina
fin
post-escán La misma acción que el preescán antes descrito. La misma acción que el preescán antes descrito.
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.
3. El controlador ejecuta los otros bloques de función en el orden determinado por su cableado.
Esto incluye otras instrucciones JSR.
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.
Rutina: Programa
Rutina principal
Subrutina
Texto estructurado
Rutina Programa
Rutina principal JSR(routine_1,2,value_1,value_2,float_value_1);
Subrutina SBR(value_a,value_b);
<statements>;
RET(float_a);
Ejemplo 2:
MainRoutine
Cuando abc está activado, subroutine_1 se ejecuta, calcula el número de cookies y coloca un valor en cookies_1.
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.
Ejemplo 3:
Bloque de funciones
42972
42973
2. Las instrucciones ADD suman Input_A, Input_B y Input_C, y colocan el resultado en Sum_A_B_C.
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:
REAL
estructura
Parámetro de BOOL tag el tag en esta rutina al cual desea copiar un resultado de la rutina externa
retorno
SINT • El parámetro de retorno es opcional
• Sólo puede tener un parámetro de retorno
INT
DINT
REAL
Estructura EXT_ROUTINE_CONTROL
00 Normal
01 Preescán
Indicadores de estado
aritmético: Los indicadores de estado aritmético no son afectados.
Condiciones de fallo:
Operandos:
ninguno
ninguno
Indicadores de estado
aritmético: no afectados
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción Se termina la rutina actual. Se termina la rutina actual.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
Texto estructurado
TND();
Restablecimiento de La instrucción MCR, usada en parejas, crea una zona de programa que
puede inhabilitar todos los renglones dentro de las instrucciones MCR.
control maestro (MCR)
Operandos:
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.
ATENCIÓN No superponga ni anide zonas MCR. Cada zona MCR debe estar
separada y completa. Si se superponen o se anidan, podría
ocurrir una operación inesperada de la máquina con posible
daño al equipo o lesiones personales.
Coloque las operaciones críticas fuera de la zona MCR. Si inicia
instrucciones tales como temporizadores en una zona MCR, se
detiene la ejecución de la instrucción cuando la zona se
inhabilita y el temporizador se borra.
Indicadores de estado
aritmético: no afectados
Ejecución:
ninguno
Indicadores de estado
aritmético: no afectados
Ejecución:
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.
UID
error_bit
error_bit FSC
FSC
FileSearch/Compare
File Search/Compare EN
EN
Control
Control error_check
error_check DN
Length
Length 10 ER
ER
Position
Position 8
Mode
Mode ALL
ALL
Expression
Expression error_code=error_list[error_check.POS]
error_code=error_list[error_check.POS]
error_check.FD
error_check.FD alarm
alarm
UIE
Texto estructurado
UID();
<statements>
UIE();
Instrucción siempre falso La instrucción AFI establece su condición de salida de renglón como
falsa.
(AFI)
Operandos:
ninguno
Indicadores de estado
aritmético: no afectados
Ejecución:
Operandos:
ninguno
Indicadores de estado
aritmético: no afectados
Ejecución:
Fin de transición (EOT) La instrucción EOT retorna un estado booleano a una transición SFC.
Operandos:
Indicadores de estado
aritmético: no afectados
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción retorna el valor del bit de datos a la rutina que originó la llamada.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
Texto estructurado
IF timer_1.DN THEN
EOT(state);
END_IF;
Pausa SFC (SFP) La instrucción SFP pone en pausa una rutina SFC.
Operandos:
Texto estructurado
SFP(SFCRoutineName,
TargetState); Los operandos son iguales a los de la instrucción SFP de lógica de
escalera de relés.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción pone en pausa o reanuda la ejecución de la rutina SFC especificada.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
Texto estructurado
SFP(normal,paused);
sfp_en_p := 0;
END_IF;
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:
Texto estructurado
SFR(SFCRoutineName,StepName);
Los operandos son iguales a los de la instrucción SFR de lógica de
escalera de relés.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción restablece la rutina SFC especificada. La instrucción restablece la rutina SFC especificada.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
Texto estructurado
IF shutdown THEN
SFR(mySFC,initialize);
END_IF;
Activar tarea de evento La instrucción EVENT activa una ejecución de una tarea de evento.
(EVENT)
Operandos:
El controlador no borra los bits del atributo Status una vez que éstos
están establecidos.
Indicadores de estado
aritmético: no afectados
Ejecución:
Programa A
Programa B
Texto estructurado
Programa A
Programa B
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).
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.
Notas:
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.
Operandos:
INT tag
DINT
Terminal SINT inmediato valor en que se detiene la ejecución de la
value rutina
INT tag
DINT
Step size SINT inmediato cantidad que se añade al índice cada vez
que la instrucción FOR ejecuta la rutina
INT tag
DINT
Texto estructurado
FOR count:= initial_value TO
final_value BY increment DO Use la construcción FOR...DO. Consulte Apéndice C, Programación de
<statement>;
texto estructurado para obtener información sobre construcciones de
texto estructurado.
END_FOR;
Descripción:
IMPORTANTE No use una instrucción FOR para llamar (ejecutar) la rutina principal.
• Usted puede colocar una instrucción FOR en la rutina principal o
en cualquier otra rutina.
• Si usted usa una instrucción FOR para llamar a la rutina principal y
posteriormente colocar una instrucción RET en la rutina principal,
se produce un fallo mayor (tipo 4, código 31).
Cada vez que la instrucción FOR ejecuta la rutina, añade el Step size al
Index.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
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 verdadera
index = initial_value
no
tamaño de paso < 0
sí
no
ir a índice ≤ valor terminal
fin
sí sí no
ir a
índice ≥ valor terminal fin
fin
ejecutar rutina
índice = (index + step_size)
la condición de salida de renglón
se establece como verdadera
fin
Interrumpir (BRK) La instrucción BRK interrumpe la ejecución de una rutina que fue
llamada por una instrucción FOR.
Operandos:
ninguna
Texto estructurado
EXIT;
Indicadores de estado
aritmético: no afectados
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.
Operandos:
ninguna
Descripción:
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
Notas:
Instrucciones especiales
(FBC, DDT, DTR, PID)
texto estructurado
Comparación de bits de La instrucción FBC compara los bits en una matriz de origen con los
bits en una matriz de referencia.
archivo (FBC)
Operandos:
Estructura COMPARE
0 = modo de todas
Estructura RESULT
IMPORTANTE Usted debe probar y confirmar que la instrucción no cambie datos que usted no
desea que cambien.
La instrucción FBC realiza la operación en la memoria de datos contiguos. En
algunos casos, la instrucción busca o escribe más allá de la matriz en otros
miembros del tag. Esto sucede si una longitud es excesiva y el tag es de un tipo de
datos definido por el usuario.
La diferencia entre las instrucciones DDT y FBC es que cada vez que
la instrucción DDT encuentra una incongruencia, la instrucción
cambia el bit de referencia para que coincida con el bit de origen.
La instrucción FBC no cambia el bit de referencia.
Cada vez que la condición de entrada del renglón cambia de falso a verdadero, la
instrucción FBC busca la siguiente incongruencia entre las matrices de origen y
referencia. Al encontrar una incongruencia, la instrucción establece el bit .FD, registra
la posición de la incongruencia y detiene la ejecución.
Todas las incongruencias Borre el bit .IN en la estructura CONTROL de comparación.
Cada vez que la condición de entrada del renglón cambia de falso a verdadero, la
instrucción FSC busca todas las incongruencias entre las matrices de origen y
referencia.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
preescán
compare.DN = 1
la condición de salida de
renglón se establece como
falsa
fin
condición de entrada de
renglón es falsa
el bit compare.EN se borra
el bit compare.FD se borra
compare.DN = 1
la condición de salida de
renglón se establece como
falsa
fin
compare.EN = 0
compare.DN = 0
no
sí
compare.POS < 0
exit
el bit compare.ER se
no establece
la condición de salida de
renglón se establece como
verdadera
comparar ir a la
salida
fin
página 484
comparar
result.DN = 1
no el bit result.DN se borra
source[compare.POS] = el bit compare.FD se examine el bit el valor result.POS se
reference[compare.POS] establece result.DN bit borra
sí result.DN = 0
compare.POS =
compare.POS + 1
sí
result.POS < 0
no
sí
result.LEN ≤ 0
no el bit compare.ER se
establece
sí result.POS >
tamaño de ir a la
fallo mayor salida
matriz
resultado
página 483
no
result[result.POS] = compare.POS
result.POS = result.POS + 1
no result.POS >
result.LEN
sí
origen 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
array_dint1
referencia 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
array_dint2
resultado 5 3
array_dint3
Detección de diagnóstico La instrucción DDT compara los bits en una matriz de origen con los
bits en una matriz de referencia para determinar cambios de estado.
(DDT)
Operandos:
Estructura COMPARE
0 = modo de todas
Estructura RESULT
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.
Cada vez que la condición de entrada del renglón cambia de falso a verdadero, la
instrucción DDT busca la siguiente incongruencia entre las matrices de origen y
referencia. Al encontrar una incongruencia, la instrucción establece el bit .FD, registra
la posición de la incongruencia y detiene la ejecución.
Todas las incongruencias Borre el bit .IN en la estructura CONTROL de comparación.
Cada vez que la condición de entrada del renglón cambia de falso a verdadero,
la instrucción DDT busca todas las incongruencias entre las matrices de origen y
referencia.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
preescán
compare.DN = 1
la condición de salida de
renglón se establece como
falsa
fin
condición de entrada de
renglón es falsa
el bit compare.EN se borra
el bit compare.FD se borra
compare.DN = 1
la condición de salida de
renglón se establece como
falsa
fin
compare.EN = 0
bit compare.DN = 0
no
sí
compare.POS < 0
salida
el bit compare.ER se
no establece
la condición de salida de
renglón se establece como
verdadera
comparar ir a la
salida
fin
página 492
comparar
result.DN = 1
compare.FD bit se
no establece el bit result.DN se borra
source[compare.POS] = examine el bit el valor result.POS se
reference[compare.POS] reference[compare.POS] result.DN bit
= source[compare.POS] borra
sí result.DN = 0
compare.POS =
compare.POS + 1
sí
result.POS < 0
no
sí
result.LEN ≤ 0
no el bit compare.ER se
establece
sí result.POS > ir a la
fallo mayor tamaño de matriz salida
resultado
página 483
no
result[result.POS] = compare.POS
result.POS = result.POS + 1
no result.POS ≥
result.LEN
sí
origen 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
array_dint1
array_dint2
resultado 5 3
array_dint3
referencia (después de comparación) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
array_dint2
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:
tag
Reference DINT tag matriz que se va a comparar con el origen.
Prefijo Descripción:
16# hexadecimal
Indicadores de estado
aritmético: no afectados
Ejecución:
origen no
enmascarado = la referencia se establece igual que el origen
referencia enmascarado
la condición de salida de renglón se establece como
verdadera
sí
la condición de salida de
renglón se establece
como falsa
fin
ejemplo 1 ejemplo 2
origen
7 1 8 3 9 1 8 7
value_1
máscara = 0FFF
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
referencia
Proporcional integral La instrucción PID controla una variable del proceso, tal como flujo,
presión, temperatura o nivel.
derivativo (PID)
Operandos:
Lógica de escalera de relés
DINT
REAL
Tieback SINT inmediato (opcional) salida de una estación manual/automática que está pasando por alto la salida del
controlador
INT tag
Introduzca 0 si no desea usar este parámetro.
DINT
REAL
Control SINT tag valor que va al dispositivo de control final (válvula, regulador, etc.)
variable
INT Si usted está usando la banda muerta, la variable Control debe ser REAL o se forzará a 0
cuando el error esté dentro de la banda muerta.
DINT
REAL
PID master PID estructura (opcional) tag PID para el PID maestro
loop
Si está realizando control en cascada y este PID es un lazo esclavo, introduzca el nombre del
PID maestro. Introduzca 0 si no desea usar este parámetro.
Inhold bit BOOL tag (opcional) estado actual del bit mantenido desde un canal de salida analógica 1756 para
permitir un reinicio sin problemas
REAL
Texto estructurado
PID(PID,ProcessVariable, Los operandos son iguales que los de la instrucción PID de lógica de
Tieback,ControlVariable, escalera de relés. Sin embargo, usted especifica Setpoint, Process
PIDMasterLoop,InholdBit, Variable y Output % accediendo a los miembros .SP, .PV. y .OUT de la
InHoldValue); estructura PID, en lugar de incluir valores en la lista de operandos.
Estructura PID
bit .EN
estado de renglón
ejecución de la instrucción PID
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
Condición Acción Acción
preescán La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción ejecuta el lazo PID. La instrucción ejecuta el lazo PID.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
Especifique el ajuste
El modo manual tiene precedencia sobre el modo manual de software, si ambos están
seleccionados.
Especifique la configuración
Use independientes cuando desee que las tres ganancias (P, I y D) operen de manera
independiente. Use dependientes cuando desee una ganancia total del controlador que
afecte a los tres términos (P, I y D).
Control action Seleccione ya sea E=PV-SP o E=SP-PV para la acción de control (.CA).
Derivative of Seleccione VP o error (.DOE).
Use la derivada de VP para eliminar los picos de salida causados por cambios del punto
de ajuste. Use la derivada de error para respuestas rápidas a cambios del punto de
ajuste cuando el algoritmo puede tolerar sobreimpulsos.
Loop update time Introduzca el tiempo de actualización (.UPD) para la instrucción.
CV high limit Introduzca un límite alto para la variable de control (.MAXO).
CV low limit Introduzca un límite bajo para la variable de control (.MINO).
Deadband value Introduzca un valor de banda muerta (.DB).
No derivative smoothing Habilite o inhabilite esta selección (.NDF).
No bias calculation Habilite o inhabilite esta selección (.NOBC).
No zero crossing in Habilite o inhabilite esta selección (.NOZC).
deadband
PV tracking Habilite o inhabilite esta selección (.PVT).
Cascade loop Habilite o inhabilite esta selección (.CL).
Cascade type Si el lazo en cascada está habilitado, seleccione esclavo o maestro (.CT).
Especificación de alarmas
Especificación de escalado
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.
detector de nivel
14271
E = PV - SP
t
1 dPV
CV = K C E + ---- ∫ Edt + T d ----------- + BIAS
Ti dt
0
E = PV - SP
t
dPV
CV = K P E + K i ∫ Edt + K d ----------- + BIAS
dt
0
Donde:
Variable Descripción
KP ganancia proporcional (sin unidades)
Kp = Kc sin unidades
Ki ganancia integral (segundos -1)
KC
K i = ----------
-
60T i
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
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.
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).
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);
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;
Texto estructurado
IF (Local:0:I.Ch0Fault) THEN
TIC101.SWM [:=] 1;
ELSE
TIC101.SWM := 0;
END_IF;
IF (Local:0:I.RollingTimestamp<>PreviousTimestamp) O
(Local:0:I.Ch0Fault) THEN
PreviousTimestamp := Local:0:I.RollingTimestamp;
PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,
Local:1:O.Ch0Data,0,Local:1:I.Ch0InHold,
Local:1:I.Ch0Data);
END_IF;
Cuando el bit Inhold se hace verdadero, la instrucción PID mueve el Inhold Value a la
salida de variable de control y se reinicializa para permitir un reinicio sin
perturbaciones en dicho valor. Cuando el módulo de salidas analógicas recibe su
valor de vuelta desde el controlador, éste desactiva el bit de estado InHold, lo cual
permite que la instrucción PID comience normalmente a realizar el control.
Suavizado derivativo
+ banda muerta
tiempo 41026
Lazos en cascada
Texto estructurado
PID(master,pv_master,0,cv_master,0,0,0);
PID (slave,pv_slave,0,cv_slave,master,0,0);
Control de relación
Texto estructurado
PID(pid_2,pv_2,tieback_2,cv_2,0,0,0);
Teoría de PID Las siguientes figuras muestran el flujo del proceso para una
instrucción PID.
Proceso PID
SP Error
Mostrado mostrado
como EU como EU
Software A/M
o bien % de
Modo de Acción de polarización
estación A/M de salida
control
Modo A/M de % salida
Auto SP-PV software establecida
Convierte unidades Modo de
(Error) de ingeniería a % (Out%) Auto estación A/M
+ Cálculo PID +
- Error X 100 Auto Convierte % a unidades CV
SP Manual -1
PV-SP maxs-mins Límite de CV
PVT Manual salida CV%(maxcv-mincv)
+ mincv
No % salida Manual 100
establecida
PV
Mostrado Salida (CV)
Sí como EU mostrada como
% de escalado
Convierte de binario a EU
Convierte unidades de
unidades de ingeniería valor retenido a %
(PV-mini)(maxs-mins) + mins tieback-mintie
maxi-mini x 100
maxtie-mintie
PV
Modo A/M de
Sí software
Auto
Convierte de binario a Convierte
SP unidades de
unidades de ingeniería ingeniería a % Manual
(PV-mini)(maxs-mins) Error X 100 Manual
+ mins PV
maxi-mini maxs-mins Los ítems referidos en este cuadro
son parámetros, unidades y modos
que pertenecen al lazo esclavo
designado.
PV
Lazo % de
esclavo Acción de polarización
control de salida
% salida
Modo A/M de establecida
Convierte % a unidades (SP) SP-PV Convierte software Modo de
(Master.Out) de ingeniería unidades de
+ ingeniería a % Cálculo PID Auto estación A/M
X (maxs-mins) - +
+ mins -1 Error X 100 Auto Convierte % a unidades CV
100 PV-SP maxs-mins Límite de
Manual salida CV%(maxcv-mincv)
% salida + mincv
Convierte de binario a Manual 100
unidades de ingeniería establecida
(PV-mini)(maxs-mins)
+ mins Convierte unidades de
maxi-mini
valor retenido a %
tieback-mintie x 100
maxtie-mintie
PV
Notas:
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:
INT tag
DINT
REAL
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := SIN(source); Use SIN como una función. Esta función calcula el seno de source y
almacena el resultado en dest.
Bloque de funciones
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 estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Texto estructurado
result := SIN(value);
Bloque de funciones
Coseno (COS) La instrucción COS halla el coseno del valor de origen (en radianes) y
almacena el resultado en Destination.
Operandos:
INT tag
DINT
REAL
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := COS(source); Use COS como función. Esta función calcula el coseno de source y
almacena el resultado en dest.
Bloque de funciones
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 estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Texto estructurado
result := COS(value);
Bloque de funciones
Tangente (TAN) La instrucción TAN halla la tangente del valor de origen (en radianes)
y almacena el resultado en Destination.
Operandos:
INT tag
DINT
REAL
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := TAN(source); Use TAN como función. Esta función calcula la tangente de source y
almacena el resultado en dest.
Bloque de funciones
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 estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Texto estructurado
result := TAN(value);
Bloque de funciones
Arco seno (ASN) La instrucción ASN halla el arco seno del valor de Source y almacena
el resultado en Destination (en radianes).
Operandos:
INT tag
DINT
REAL
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := ASIN(source); Use ASIN como función. Esta función calcula el arco seno de source y
almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH_ADVANCED
Descripción: Source debe ser mayor o igual que -1 y menor o igual que 1. El valor
resultante en Destination siempre es mayor o igual que -π/2 y menor
o igual que π/2 (donde π = 3.141593).
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Texto estructurado
result := ASIN(value);
Bloque de funciones
Arco coseno (ACS) La instrucción ACS halla el arco coseno del valor de Source y
almacena el resultado en Destination (en radianes).
Operandos:
INT tag
DINT
REAL
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := ACOS(source); Use ACOS como función. Esta función calcula el arco coseno de
source y almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH_ADVANCED
Descripción: Source debe ser mayor o igual que -1 y menor o igual que 1. El valor
resultante en Destination siempre es mayor o igual que 0 y menor o
igual que π (donde π = 3.141593).
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Texto estructurado
result := ACOS(value);
Bloque de funciones
Arco tangente (ATN) La instrucción ATN halla el arco tangente del valor de Source y
almacena el resultado en Destination (en radianes).
Operandos:
INT tag
DINT
REAL
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := ATAN(source); Use ATAN como función. Esta función calcula el arco tangente de
source y almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH_ADVANCED
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Texto estructurado
result := ATAN(value);
Bloque de funciones
Notas:
texto estructurado
bloque de funciones
Hallar el logaritmo base 10 de un valor. LOG lógica de escalera de relés 543
texto estructurado
bloque de funciones
Elevar un valor a la potencia de otro valor. XPY lógica de escalera de relés 546
texto estructurado(1)
bloque de funciones
(1)
No hay una instrucción equivalente en texto estructurado. Use el operador en una expresión.
Operandos:
INT tag
DINT
REAL
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := LN(source); Use LN como función. Esta función calcula el logaritmo natural de
source y almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH_ADVANCED
Descripción: Source debe ser mayor o igual que cero; de lo contrario, se establece
el bit de estado de overflow (S:V). El valor Destination resultante es
mayor o igual que -87.33655 y menor o igual que 88.72284.
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Texto estructurado
result := LN(value);
Bloque de funciones
Logaritmo base 10 (LOG) La instrucción LOG halla el logaritmo base 10 de Source y almacena el
resultado en Destination.
Operandos:
INT tag
DINT
REAL
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := LOG(source); Use LOG como función. Esta función calcula el logaritmo de source y
almacena el resultado en dest.
Bloque de funciones
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 estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Texto estructurado
result := LOG(value);
Bloque de funciones
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:
INT tag
DINT
REAL
Source Y SINT inmediato exponente
INT tag
DINT
REAL
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := sourceX ** sourceY; Use dos signos de multiplicación adyacentes “∗∗” como operador
dentro de una expresión. Esta expresión eleva sourceX a la potencia
de sourceY y almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
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.
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.
Texto estructurado
Bloque de funciones
texto estructurado
bloque de funciones
Convertir grados en radianes. RAD lógica de escalera de relés 553
texto estructurado
bloque de funciones
Convertir un valor entero en un valor BCD. TOD lógica de escalera de relés 556
bloque de funciones
Convertir un valor BCD en un valor entero. FRD lógica de escalera de relés 559
bloque de funciones
Retirar la parte fraccionaria de un valor. TRN lógica de escalera de relés 561
bloque de funciones
(1)
Texto estructurado solamente.
Operandos:
INT tag
DINT
REAL
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := DEG(source); Use DEG como función. Esta función convierte source en grados y
almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH_ADVANCED
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Texto estructurado
result := DEG(value);
Bloque de funciones
Operandos:
INT tag
DINT
REAL
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := RAD(source); Use RAD como función. Esta función convierte source a radianes y
almacena el resultado en dest.
Bloque de funciones
Estructura FBD_MATH_ADVANCED
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Texto estructurado
result := RAD(value);
Bloque de funciones
Operandos:
INT tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination SINT tag almacena el resultado
INT
DINT
Bloque de funciones
Estructura FBD_CONVERT
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Ejecución:
Condición Acción
preescán La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es falsa La condición de salida de renglón se establece como falsa.
condición de entrada de renglón es verdadera
no no
origen < 0 origen > 99,999,999 convertir origen en BCD
sí sí
S:V se establece a 1
la condición de salida de
renglón se establece como
verdadera
fin
condición de entrada de renglón es verdadera El controlador convierte Source en BCD y coloca el resultado en Destination.
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.
Bloque de funciones
Convertir a entero (FRD) La instrucción FRD convierte un valor BCD (Source) en un valor
decimal y almacena el resultado en Destination.
Operandos:
INT tag
DINT
Un tag SINT o INT se convierte en un valor DINT mediante un relleno con
ceros.
Destination SINT tag almacena el resultado
INT
DINT
Bloque de funciones
Estructura FBD_CONVERT
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Bloque de funciones
Operandos:
tag
Destination SINT tag tag para almacenar el resultado
INT
DINT
REAL
Texto estructurado
dest := TRUNC(source); Use TRUNC como función. Esta función trunca source y almacena el
resultado en dest.
Bloque de funciones
Estructura FBD_TRUNCATE
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Ejecución:
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.
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.
Texto estructurado
float_value_1_truncated := TRUNC(float_value_1);
Bloque de funciones
Notas:
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.
texto estructurado
contar los caracteres en el búfer verificar el número requerido de ACB lógica de escalera de 573
caracteres antes de leer el búfer relés
texto estructurado
borrar el búfer • borrar datos antiguos del búfer al ACL lógica de escalera de 575
momento de la puesta en marcha relés
borrar las instrucciones del puerto
serie ASCII que actualmente se están • sincronizar el búfer con un
dispositivo texto estructurado
ejecutando o están en la cola.
obtener el estado de las líneas de hacer que el módem cuelgue AHL lógica de escalera de 577
control del puerto serie relés
activar y desactivar la señal DTR
texto estructurado
activar y desactivar la señal RTS
leer un número fijo de caracteres leer datos desde un dispositivo que ARD lógica de escalera de 581
envía el mismo número de caracteres relés
durante cada transmisión
texto estructurado
leer un número variable de leer datos desde un dispositivo que ARL lógica de escalera de 585
caracteres, inclusive el primer envía un número variable de relés
conjunto de caracteres de caracteres en cada transmisión
terminación texto estructurado
enviar caracteres y añadir enviar mensajes que siempre usan AWA lógica de escalera de 589
automáticamente uno o dos los mismos caracteres de terminación relés
caracteres adicionales para marcar
el final de los datos texto estructurado
enviar caracteres enviar mensajes que usan una AWT lógica de escalera de 594
variedad de caracteres de relés
terminación
texto estructurado
Ejecución de la instrucción
Instrucción 4
Los datos fluyen
La instrucción entra en entre la tarea y el
la cola ASCII. búfer.
entra en la cola
Prueba ASCII para línea de La instrucción ABL cuenta los caracteres en el búfer, inclusive el
primer carácter de terminación.
búfer (ABL)
Operandos:
ABL
ABL Operando Tipo Formato Descripción
ASCII
ASCIITest
TestFor
ForBuffer Line
Buffer Line EN
Channel
Channel ? DN Channel DINT inmediato 0
SerialPort
SerialPortControl
Control ? ER
ER
Character
CharacterCount
Count ?
tag
Serial Port SERIAL_PORT_ tag tag que controla la operación
Control CONTROL
Character DINT inmediato 0
Count
Texto estructurado
ABL(Channel
Los operandos son iguales a los de la instrucción ABL de lógica de
SerialPortControl);
escalera de relés. Usted accede al valor de conteo de caracteres
mediante el miembro .POS de la estructura SERIAL_PORT_CONTROL.
Estructura SERIAL_PORT_CONTROL
Indicadores de estado
aritmético: no afectados
Ejecución:
La instrucción se ejecuta.
MV_line.EN
MV_line.EN ABL
ABL
/ ASCII
ASCII TestTest For Buffer
For Buffer Line Line EN
EN
Channel
Channel 0 DN
DN
SerialPort
SerialPortControl
Control MV_line.E
MV_line ER
ER
Character
Character Count
Count 0
Texto estructurado
ABL(0,MV_line);
Control CONTROL
Character DINT inmediato 0
Count
Texto estructurado
ACB(Channel Los operandos son los mismos que para la instrucción ACB de lógica
SerialPortControl); de escalera de relés. Sin embargo, usted especifica el valor de conteo
de caracteres al acceder al miembro .POS de la estructura
SERIAL_PORT_CONTROL, en lugar de incluir el valor en la lista de
operandos.
Estructura SERIAL_PORT_CONTROL
Mnemónico Tipo de datos Descripción
.EN BOOL El bit de habilitación indica que la instrucción está habilitada.
.EU BOOL El bit de cola indica que la instrucción entró en la cola ASCII.
.DN BOOL El bit de efectuado indica que ha finalizado la instrucción, pero es asíncrono respecto al
escán de la lógica.
.RN BOOL El bit de ejecución indica que la instrucción se está ejecutando.
.EM BOOL El bit de vacío indica que finalizó la instrucción, pero es síncrono respecto al escán de la
lógica.
.ER BOOL El bit de error indica que la instrucción falló (errores).
.FD BOOL El bit de encontrado indica que la instrucción encontró un carácter.
.POS DINT La posición determina el número de caracteres en el búfer, inclusive el primer conjunto de
caracteres de terminación.
.ERROR DINT El error contiene un valor hexadecimal que identifica la causa del error.
Indicadores de estado
aritmético: no afectados
Ejecución:
bar_code_count.EN
bar_code_count.EN ACB
ACB
/ ASCII
ASCII Chars
Chars in Buffer
in Buffer EN
EN
Channel
Channel 0 DN
DN
SerialPort
SerialPort Control
Control bar_code_count.EN
bar_code_count ER
ER
Character
Character Count
Count 0
Texto estructurado
ACB(0,bar_code_count);
Borrar ASCII búfer (ACL) La instrucción ACL borra inmediatamente el búfer y la cola ASCII.
Operandos:
ACL
ACL Operando Tipo Formato Introduzca
Borrar ASCII
ASCII Clear búfer
Buffer
Canal
Channel ?
Borrar Serial
Clear lecturaPort
de puerto
Read serie ?
Channel DINT inmediato 0
Borrar Serial
Clear escritura deWrite
Port puerto serie ?
tag
Clear Serial BOOL inmediato Para borrar el búfer y eliminar las
Port Read instrucciones ARD y ARL de la cola,
tag introduzca Yes.
Clear Serial BOOL inmediato Para eliminar las instrucciones AWA y AWT
Port Write de la cola, introduzca Yes.
tag
Texto estructurado
ACL(Channel,
Los operandos son iguales a los de la instrucción ACL de lógica de
ClearSerialPortRead,
ClearSerialPortWrite); escalera de relés.
Indicadores de estado
aritmético: no afectados
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción borra las instrucciones especificadas y los búferes.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
S:FS ACL
ACL
ASCII
Borrar Clear Buffer
ASCII búfer
Channel
Canal 0
Clear
BorrarSerial
lectura Port Read
de puerto serie 1
BorrarSerial
Clear escrituraPort
de puerto
Writeserie 1
Texto estructurado
osri_1.InputBit := S:FS;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
ACL(0,0,1);
END_IF;
Líneas de handshake ASCII La instrucción AHl obtiene el estado de las líneas de control, y activa
o desactiva las señales DTR y RTS.
(AHL)
Operandos:
AHL
AHL
ASCII Handshake
ASCII HandshakeLines
Lines EN
EN
Channel
Channel ?
AND Mask ? DN
DN
??
OR Mask
OR Mask ? ER
ER
??
SerialPort Control
SerialPort Control ?
Channel Status(Decimal)
Channel Status(Decimal) ?
tag
ANDMask DINT inmediato Remítase a la descripción.
tag
ORMask DINT inmediato
tag
Serial Port Control SERIAL_PORT_CONTROL tag tag que controla la operación
Channel Status (Decimal) DINT inmediato 0
Texto estructurado
AHL(Channel,ANDMask,ORMask,
Los operandos son iguales que los de la instrucción AHL de lógica de
SerialPortControl);
escalera de relés. Sin embargo, se especifica el valor de estado del
canal accediendo al miembro .POS de la estructura
SERIAL_PORT_CONTROL, y no incluyendo el valor en la lista de
operandos.
Estructura SERIAL_PORT_CONTROL
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
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
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.
get_control_line_status
get_control_line_status AHL
AHL
ASCII Handshake Lines EN
EN
ASCII Handshake Lines
Channel 0
Channel
AND Mask 0 DN
DN
AND Mask
OR Mask
OR Mask 0 ER
ER
SerialPort Control
SerialPort Control serial_port
serial_port
Channel Status(Decimal)
Channel Status(Decimal) 29
Texto estructurado
osri_1.InputBit := get_control_line_status;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
AHL(0,0,0,serial_port);
END_IF;
Lectura ASCII (ARD) La instrucción retira caracteres del búfer y los almacena en
Destination.
Operandos:
tag
Destination cadena tag el tag al cual se transfieren • Si desea comparar, convertir o manipular los
los caracteres (lectura): caracteres, use un tipo de datos de cadena.
SINT • Los tipos de datos de cadena son:
• Para un tipo de datos de
INT cadena, introduzca el • tipo de datos STRING predeterminado
nombre del tag.
DINT • cualquier tipo de datos nuevo que usted
• Para una matriz SINT, cree
INT o DINT, introduzca
el primer elemento de la
matriz.
Serial Port SERIAL_PORT_ tag tag que controla la
operación
Control CONTROL
Serial Port DINT inmediato número de caracteres a • Serial Port Control Length debe ser menor o
transferir al destino igual que el tamaño de Destination.
Control Length (lectura) • Si desea establecer Serial Port Control
Length igual que el tamaño de Destination,
introduzca 0.
Characters Read DINT inmediato 0 Durante la ejecución, muestra el número de
caracteres leídos.
Texto estructurado
ARD(Channel,Destination,
Los operandos son los mismos que para la instrucción ARD de lógica
SerialPortControl);
de escalera de relés. Sin embargo, usted especifica los valores de
Serial Port Control Length y Characters Read accediendo a los
miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL, en
lugar de incluir los valores en la lista de operandos.
Estructura SERIAL_PORT_CONTROL
Indicadores de estado
aritmético: no afectados
Ejecución:
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta cuando la condición de n. a.
renglón es verdadera entrada del renglón cambia de borrado a
establecido.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción retira caracteres del búfer y los almacena en el destino.
GEQ
GEQ ARD
ARD
GrtrThan
Grtr Thano Eqlor(A>=B)
Eql (A>=B) ASCII Read
ASCII Read EN
EN
Source A A bar_code_count.pos
Source bar_code_count.pos Channel
Channel 0
0 Destination
Destination bag_bar_code
bag_bar_code DN
DN
Source B B
Source 24 ''
SerialPort Control
SerialPort Control bar_code_read
bar_code_read ER
ER
SerialPort Control
SerialPort Length
Control Length 24
Characters Read
Characters Read 0
Texto estructurado
ACB(0,bar_code_count);
bar_code_read.LEN := 24;
ARD(0,bag_bar_code,bar_code_read);
END_IF;
Lectura ASCII de línea La instrucción ARL retira los caracteres especificados del búfer y los
almacena en Destination.
(ARL)
Operandos:
Lógica de escalera de relés
ARL
ARL
ASCII
ASCIIRead
ReadLine
Line EN
EN
Channel
Channel ?
Destination
Destination ? DN
DN
??
SerialPort
SerialPortControl
Control ? ER
ER
SerialPort
SerialPortControl
ControlLength
Length ?
CharactersRead
Characters Read ?
tag
Destination cadena tag el tag al cual se transfieren • Si desea comparar, convertir o manipular los
los caracteres (lectura): caracteres, use un tipo de datos de cadena.
SINT • Los tipos de datos de cadena son:
• Para un tipo de datos de
INT cadena, introduzca el • tipo de datos STRING predeterminado
nombre del tag.
DINT • cualquier tipo de datos nuevo que usted
• Para una matriz SINT, cree
INT o DINT, introduzca
el primer elemento de la
matriz.
Serial Port SERIAL_PORT_ tag tag que controla la
operación
Control CONTROL
Serial Port DINT inmediato número máximo de • Introduzca el número máximo de caracteres
Control Length caracteres a leer si no se que contendrá cualquier mensaje (es decir,
encuentran caracteres de cuándo se debe interrumpir la lectura si no
terminación se encuentran caracteres de terminación).
Por ejemplo, si el mensaje tiene de 3 a
6 caracteres de longitud, introduzca 6.
Texto estructurado
ARL(Channel,Destination,
Los operandos son los mismos que para la instrucción ARL de lógica
SerialPortControl);
de escalera de relés. Sin embargo, usted especifica los valores de
Serial Port Control Length y Characters Read accediendo a los
miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL,
en lugar de incluir los valores en la lista de operandos.
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.
Indicadores de estado
aritmético: no afectados
Ejecución:
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.
MV_line.EN
MV_line.EN ABL
ABL
/ ASCII
ASCII TestTest For Buffer
For Buffer Line Line EN
EN
Channel
Channel 0 DN
DN
SerialPort
SerialPort Control
Control MV_line
MV_line ER
ER
Characters
Character Count
Count 0
MV_line.FD
MV_line.FD ARL
ARL
ASCII Read
ASCII Read LineLine EN
EN
Channel
Channel 0
Destination
Destination MV_line.EN
MV_msg DN
DN
''
SerialPort Control
SerialPort Control MV_line.EN
MV_read ER
ER
SerialPort Control
SerialPort Length
Control Length 12
Characters Read
Characters Read 0
Texto estructurado
ABL(0,MV_line);
osri_1.InputBit := MVLine.FD;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
mv_read.LEN := 12;
ARL(0,MV_msg,MV_read);
END_IF;
Escritura ASCII con anexo La instrucción AWA envía un número especificado de caracteres del
tag Source a un dispositivo serie, y añade uno o dos caracteres
(AWA) predefinidos.
Operandos:
tag
Source cadena tag tag que contiene los • Si desea comparar, convertir o manipular los
caracteres a enviar: caracteres, use un tipo de datos de cadena.
SINT • Los tipos de datos de cadena son:
• Para un tipo de datos de
INT cadena, introduzca el • tipo de datos STRING predeterminado
nombre del tag.
DINT • cualquier tipo de datos nuevo que usted
• Para una matriz SINT, cree
INT o DINT, introduzca
el primer elemento de la
matriz.
Serial Port SERIAL_PORT_ tag tag que controla la
operación
Control CONTROL
Serial Port DINT inmediato número de caracteres a • Serial Port Control Length debe ser menor o
Control Length enviar igual que el tamaño de Source.
• Si desea establecer Serial Port Control
Length igual que el número de caracteres en
Source, introduzca 0.
Characters Sent DINT inmediato 0 Durante la ejecución, muestra el número de
caracteres enviados.
Texto estructurado
AWA(Channel,Source,
Los operandos son los mismos que para la instrucción AWA de lógica
SerialPortControl);
de escalera de relés. Sin embargo, usted especifica los valores de
Serial Port Control Length y Characters Sent accediendo a los
miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL,
en lugar de incluir los valores en la lista de operandos.
Estructura SERIAL_PORT_CONTROL
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
Si Entonces
la respuesta En Serial Port Control Length, introduzca el número de caracteres
es afirmativa a enviar.
la respuesta Antes de que se ejecute la instrucción, establezca el miembro LEN
es negativa del tag Source al miembro LEN del tag Serial Port Control.
Indicadores de estado
aritmético: no afectados
Ejecución:
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.
temp_high
temp_high AWA
AWA
ASCII Write
ASCII Write Append
Append EN
EN
Channel
Channel 0
Source
Source string[1]
string[1] DN
DN
'$1425\1'
SerialPort Control
SerialPort Control temp_high_write
temp_high_write ER
ER
SerialPort Control
SerialPort Control Length
Length 5
Characters Sent
Characters Sent 6
Texto estructurado
IF temp_high THEN
temp_high_write.LEN := 5;
AWA(0,string[1],temp_high_write);
temp_high := 0;
END_IF;
alarm
alarm MOV
MOV AWA
AWA
Move
Move ASCII Write
ASCII Write Append
Append EN
EN
Source alarm_msg.LEN
Source alarm_msg.LEN Channel
Channel 0
5 Source
Source alarm_msg
alarm_msg DN
DN
Dest.
Dest alarm_write.LEN
alarm_write.LEN '$1425\1'
5 SerialPort Control
SerialPort Control alarm_write
alarm_write ER
ER
SerialPort Control
SerialPort Length
Control Length 5
Characters Sent
Characters Sent 6
Texto estructurado
osri_1.InputBit := alarm;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
alarm_write.LEN := alarm_msg.LEN;
AWA(0,alarm_msg,alarm_write);
END_IF;
tag
Source cadena tag tag que contiene los • Si desea comparar, convertir o manipular los
caracteres a enviar: caracteres, use un tipo de datos de cadena.
SINT • Los tipos de datos de cadena son:
• Para un tipo de datos de
INT cadena, introduzca el • tipo de datos STRING predeterminado
nombre del tag.
DINT • cualquier tipo de datos nuevo que usted
• Para una matriz SINT, cree
INT o DINT, introduzca
el primer elemento de la
matriz.
Serial Port SERIAL_PORT_ tag tag que controla la
operación
Control CONTROL
Serial Port DINT inmediato el número de caracteres a • Serial Port Control Length debe ser menor o
Control Length enviar igual que el tamaño de Source.
• Si desea establecer Serial Port Control
Length igual que el número de caracteres en
Source, introduzca 0.
Characters Sent DINT inmediato 0 Durante la ejecución, muestra el número de
caracteres enviados.
Texto estructurado
AWT(Channel,Source,
Los operandos son los mismos que para la instrucción AWT de lógica
SerialPortControl);
de escalera de relés. Sin embargo, usted especifica los valores de
Serial Port Control Length y Characters Sent accediendo a los
miembros .LEN y .POS de la estructura SERIAL_PORT_CONTROL,
en lugar de incluir los valores en la lista de operandos.
Estructura SERIAL_PORT_CONTROL
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 En Serial Port Control Length, introduzca el número de caracteres
es afirmativa a enviar.
la respuesta Antes de que se ejecute la instrucción, mueva el miembro LEN del
es negativa tag Source al miembro LEN del tag Serial Port Control.
Indicadores de estado
aritmético: no afectados
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción envía un número especificado de caracteres.
temp_low
temp_low AWT
AWT
ASCII
ASCII Write
Write EN
EN
Channel
Channel 0
Source
Source string[2]
string[2] DN
DN
'$142224\01$r'
SerialPort Control
SerialPort Control temp_low_write
temp_low_write ER
ER
SerialPort Control
SerialPort LengthLength
Control 9
Characters SentSent
Characters 9
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;
MV_update
MV_update MOV
MOV AWT
AWT
Move
Move ASCII Write
ASCII Write EN
EN
Source MV_msg.LEN
Source MV_msg.LEN Channel
Channel 0
10 Source
Source MV_msg
MV_msg DN
DN
Dest.
Dest MV_write.LEN
MV_write.LEN '$161365\8\1$r'
10 SerialPort Control
SerialPort Control MV_write
MV_write ER
ER
SerialPort Control
SerialPort Length
Control Length 10
Characters SentSent
Characters 10
Texto estructurado
osri_1.InputBit := MV_update;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
MV_write.LEN := Mv_msg.LEN;
AWT(0,MV_msg,MV_write);
END_IF;
Notas:
Introducción Use las instrucciones de cadena ASCII para modificar y crear cadenas
de caracteres ASCII.
texto estructurado
eliminar caracteres de una cadena eliminar caracteres de encabezado o DELETE lógica de escalera de 603
control de una cadena relés
texto estructurado
determinar el carácter inicial de una hallar un grupo de caracteres dentro FIND lógica de escalera de 605
subcadena de una cadena relés
texto estructurado
insertar caracteres dentro de una crear una cadena que usa variables INSERT lógica de escalera de 607
cadena relés
texto estructurado
extraer caracteres de una cadena extraer información de un código de MID lógica de escalera de 609
barra relés
texto estructurado
Concatenación de cadenas La instrucción CONCAT añade caracteres ASCII al final de una cadena.
(CONCAT)
Operandos:
Texto estructurado
CONCAT(SourceA,SourceB,
Los operandos son iguales a los de la instrucción CONCAT de lógica
Dest);
de escalera de relés.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción concatena las cadenas.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
add_node CONCAT
CONCAT
Sting
StringConcatenate
Concatenate
Source
Source A A string_1
string_1
’$1423\’
'$1423\'
Source
SourceB B node_num_ascii
node_num_ascii
'1'’1’
Dest
Dest msgmsg
'$1423\1'
’$1423\1’
Texto estructurado
IF add_node THEN
CONCAT(string_1,node_num_ascii,msg);
add_node := 0;
END_IF;
Eliminación de cadena La instrucción DELETE retira los caracteres ASCII de una cadena.
(DELETE)
Operandos:
DELETE
Lógica de escalera de relés
DELETE
Sting Delete
String Delete
Source
Source ??
????
Qty
Qty ??
????
Start
Start ??
????
Dest
Dest ??
????
DINT
Start SINT inmediato la posición del primer Introduzca un número entre 1 y el tamaño de
carácter que se debe DATA de Source.
INT tag eliminar
DINT
Destination cadena tag tag para almacenar el
resultado
Texto estructurado
DELETE(Source,Qty,Start,
Los operandos son iguales a los de la instrucción DELETE de lógica de
Dest);
escalera de relés.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de 1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag
cadena es mayor que el de cadena.
tamaño de DATA del tag
de cadena. 2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
4 56 El valor de Start o Quantity 1. Verifique que el valor de Start esté entre 1 y el tamaño de DATA de Source.
no es válido.
2. Verifique que el valor de Start más el valor Quantity sea menor o igual que el
tamaño de DATA de Source.
Ejecución:
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa. Ninguna.
condición de entrada de La condición de salida de renglón se establece como falsa. n. a.
renglón es falsa
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción elimina los caracteres especificados.
post-escán La condición de salida de renglón se establece como falsa. Ninguna.
Dest
Dest term_text
term_text
’55’
'55'
Texto estructurado
IF term_read.EM THEN
DELETE(term_input,1,1,term_text);
term_read.EM := 0;
END_IF;
Encontrar cadena (FIND) La instrucción FIND localiza la posición de una cadena especificada
dentro de otra cadena.
Operandos:
FIND
Lógica de escalera de relés
FIND
Find
FindString
String
Source
Source ??
????
Search
Search ??
????
Start
Start ??
????
Result
Result ??
????
DINT
Result SINT tag el tag que almacena la
posición inicial de la
INT cadena que se debe buscar
DINT
Texto estructurado
FIND(Source,Search,Start,
Los operandos son iguales a los de la instrucción FIND de lógica de
Result);
escalera de relés antes descritos.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es 1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN
mayor que el tamaño de DATA del del tag de cadena.
tag de cadena.
2. En el valor LEN, introduzca el número de caracteres que contiene la
cadena.
4 56 El valor de Start no es válido. Verifique que el valor de Start esté entre 1 y el tamaño de DATA de Source.
Ejecución:
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción busca los caracteres especificados.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
Result
Result find_pos
find_pos
55
Texto estructurado
IF MV_read.EM THEN
FIND(MV_msg,find,1,find_pos);
MV_read.EM := 0;
END_IF;
Insertar cadena (INSERT) La instrucción INSERT añade caracteres ASCII a un lugar especificado
dentro de una cadena.
Operandos:
INSERT
Lógica de escalera de relés
INSERT
Insert
InsertString
String
Source
Source A A ??
????
Source
SourceB B ??
????
Start
Start ??
????
Dest
Dest ??
????
DINT
Result cadena tag cadena para almacenar el
resultado
Texto estructurado
INSERT(SourceA,SourceB,
Los operandos son iguales a los de la instrucción INSERT de lógica de
Start,Dest);
escalera de relés.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción inserta los caracteres especificados.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
temp_high INSERT
INSERT
Insert String
Insert String
Source
SourceA A string_1
string_1
’AD’
'AD'
Source
SourceB B string_2
string_2
'BC'’BC’
Start
Start 22
Dest
Dest string_3
string_3
'ABCD'
’ABCD’
Texto estructurado
IF temp_high THEN
INSERT(string_1,string_2,2,string_3);
temp_high := 0;
END_IF;
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:
DINT
Start SINT inmediato la posición del primer Introduzca un número entre 1 y el tamaño de
carácter que se debe copiar DATA de Source.
INT tag
DINT
Destination cadena tag la cadena a la cual se
deben copiar los caracteres
Texto estructurado
MID(Source,Qty,Start,
Los operandos son iguales a los de la instrucción MID de lógica de
Dest);
escalera de relés.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de 1. Verifique que ninguna instrucción esté escribiendo en el miembro LEN del tag
cadena es mayor que el de cadena.
tamaño de DATA del tag
de cadena. 2. En el valor LEN, introduzca el número de caracteres que contiene la cadena.
4 56 El valor de Start o Quantity 1. Verifique que el valor de inicio esté entre 1 y el tamaño de DATA de Source.
no es válido.
2. Verifique que el valor de Start más el valor de Quantity sea menor o igual que el
tamaño de DATA de Source.
Ejecución:
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como falsa. Ninguna.
condición de entrada de La condición de salida de renglón se establece como falsa. n. a.
renglón es falsa
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción La instrucción MID copia los caracteres especificados de una cadena y los almacena en otra cadena.
post-escán La condición de salida de renglón se establece como falsa. Ninguna.
Start
Start 99
Dest
Dest bag_flt_and_dest
bag_flt_and_dest
'5058 AMS
’5058 '
AMS’
Texto estructurado
IF bag_read.EM THEN
MID(bar_barcode,9,9,bag_flt_and_dest);
bag_read.EM := 0;
END_IF;
Operandos:
REAL
STOD(Source,Dest);
Texto estructurado
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es mayor que el tamaño 1. Verifique que ninguna instrucción esté escribiendo
de DATA del tag de cadena. en el miembro LEN del tag de cadena.
Ejecución:
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción SC se establece
Destination se borra.
MV_read.EM STOD
STOD
String
StringTo DINT
To DINT
Source
Source MV_msg
MV_msg
’$06324\12\1\$r’
'$06324\12\1\$r'
Dest MV_msg_nmbr
Dest MV_msg_nmbr 324
324
Texto estructurado
IF MV_read.EM THEN
STOD(MV_msg,MV_msg_nmbr);
MV_read.EM := 0;
END_IF;
Operandos:
STOR
Operadores de escalera de relé
STOR
String
Stringtoto
Real
Real
Source
Source ??
????
Dest
Dest ??
????
STOR(Source,Dest);
Texto estructurado
Indicadores de estado
aritmético: Los indicadores de estado aritmético son afectados.
Condiciones de fallo:
Tipo Código Causa Método de recuperación
4 51 El valor LEN del tag de cadena es mayor que el tamaño 1. Verifique que ninguna instrucción esté escribiendo
de DATA del tag de cadena. en el miembro LEN del tag de cadena.
Ejecución:
Condición Acción de lógica de escalera de relés Acción de texto estructurado
preescán La condición de salida de renglón se establece como Ninguna.
falsa.
condición de entrada de La condición de salida de renglón se establece como n. a.
renglón es falsa falsa.
condición de entrada de La instrucción se ejecuta. n. a.
renglón es verdadera
La condición de salida de renglón se establece como
verdadera.
EnableIn se establece n. a. EnableIn siempre se establece.
La instrucción se ejecuta.
ejecución de la instrucción S:C se establece.
Destination se borra.
weight_read.EM STOR
STOR
String
Stringto Real
to Real
Source weight_axcii
Source weight_ascii
’428.259’
'428.259'
Dest weight
Dest weight
428.259
428.259
Texto estructurado
IF weight_read.EM THEN
STOR(weight_ascii,weight);
weight_read.EM := 0;
END_IF;
Operandos:
DINT
REAL
Destination cadena tag el tag en que se almacena Los tipos de datos de cadena son:
el valor ASCII
• tipo de datos STRING predeterminado
• cualquier tipo de datos nuevo que usted
cree
DTOS(Source,Dest);
Texto estructurado
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción convierte Source.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
temp_high DTOS
DTOS
DINT
DINTto String
to String
Source msg_num
Source msg_num
23
Dest 23
msg_num_ascii
Dest msg_num_ascii ’23’
'23'
Texto estructurado
IF temp_high THEN
DTOS(msg_num,msg_num_ascii);
temp_high := 0;
END_IF;
Operandos:
RTOS(Source,Dest);
Texto estructurado
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción convierte Source.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
send_data RTOS
RTOS
Real
Realto String
to String
Source data_1
Source data_1
15.3001
Dest
15.3001
data_1_ascii
Dest data_1_ascii
’15.301003’
'15.3001003'
Texto estructurado
IF send_data THEN
RTOS(data_1,data_1_ascii);
send_data := 0;
END_IF;
Operandos:
UPPER(Source,Dest);
Texto estructurado
Indicadores de estado
aritmético: no afectados
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción convierte Source en mayúsculas.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
Texto estructurado
IF terminal_read.EM THEN
UPPER(catalog_number,catalog_number_upper_case);
terminal_read.EM := 0;
END_IF;
LOWER(Source,Dest);
Texto estructurado
Indicadores de estado
aritmético: no afectados
Ejecución:
La instrucción se ejecuta.
ejecución de la instrucción La instrucción convierte Source en minúsculas.
post-escán La condición de salida de renglón se establece como Ninguna.
falsa.
Texto estructurado
IF terminal_read.EM THEN
LOWER(item_number,item_number_lower_case);
terminal_read.EM := 0;
END_IF;
Instrucciones de depuración
(BPT, TPT)
Descripción:
Formato de cadena
encabezado:(texto)%(tipo)
Indicadores de estado
aritmético: no afectados
Ejecución:
La ejecución salta al renglón que contiene la instrucción LBL con el nombre de etiqueta
referenciado.
post-escán La condición de salida de renglón se establece como falsa.
Ejemplo: Usted puede mostrar muchos valores de tag con la instrucción BPT.
Sin embargo, la cadena de formateo puede contener sólo
82 caracteres. Puesto que la cadena de formateo requiere dos
caracteres para cada tag que usted desea en el punto de interrupción,
no podrá rastrear más de 41 tags con una sola instrucción BPT.
Sin embargo, para separar datos de tag en sus rastreos necesitará
incluir espacios y otro formateo, reduciendo así el número de valores
de tag que puede mostrar eficazmente una instrucción BPT a mucho
menos de 41.
Puntos de rastreo (TPT) Datos de registro de puntos de rastreo que usted selecciona cuando
un renglón es verdadero.
Operandos:
Descripción:
Formato de cadena
encabezado:(texto)%(tipo)
. Indicadores de estado
aritmético: no afectados
Ejecución:
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.
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.
Atributos comunes
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 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.
En otras palabras, use todos los tags DINT o tags REAL, junto con
valores inmediatos, en sus instrucciones.
EQU
Equal
Source A remote_rack_1:I.Data[0]
2#1111_1111_1111_1111
Source B int_0
2#1111_1111_1111_1111
42093
MOV EQU
Move Equal
Source 2#1111_1111_1111_1111 Source A remote_rack_1:I.Data[0]
2#1111_1111_1111_1111
Dest int_0 Source B int_0
2#1111_1111_1111_1111 2#1111_1111_1111_1111
42093
Entero en 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.
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.
conector de
cable de
salida (OCON)
conector de
cable de entrada
(ICON)
Enclavamiento de datos Si usted usa una IREF para especificar datos de entrada en una
instrucción de bloques de funciones, los datos en la IREF se enclavan
para el escán de la rutina de bloque de funciones. La IREF enclava
datos desde los tags bajo el control del programa y tags bajo el control
del controlador. El controlador actualiza todos los datos IREF al
comienzo de cada escán.
IREF
tagA
Block_02
tagA
Block_02
tagA
1 2 3
1 3 5
2 4 6
Resolución de un lazo
? ? ?
1 2 3
1 2 ? ?
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.
Ningún cable usa el indicador Suponer datos disponibles. Un cable usa el indicador Suponer datos disponibles y el otro
cable no.
2 1
Resumen
Los bloques ejecutan su algoritmo y Los bloques con límite de salida ejecutan La condición de overflow no se aplica. Estas
verifican el resultado para ±NAN o ±INF. su algoritmo y verifican el resultado para instrucciones generalmente tienen una
Si ±NAN o ±INF, el bloque establece la ±NAN o ±INF. Los límites de salida son salida booleana.
salida ±NAN o ±INF. definidos por los parámetros de entrada
HighLimit y LowLimit. Si ±INF, el bloque
establece la salida un resultado limitado.
Si ±NAN, los límites de salida no se usan y
el bloque establece la salida ±NAN.
ALMNTCH HLL BANDOSRI
DERVPOSP PI BORRTOR
LDL2SEL D3SD
LDLGSNEG DFF
LPFSRTP JKFF
MAVESSUM OSFI
MAXCTOT
MINCUPDN
MSTD
MUX
Modo de Descripción
temporización
periódico El modo periódico es el modo predeterminado y es adecuado para la mayoría de las aplicaciones de control.
Recomendamos que coloque las instrucciones que utilizan este modo en una rutina que se ejecute en una
tarea periódica. El tiempo delta (DeltaT) para la instrucción se determina de la siguiente manera:
Si la instrucción se DeltaT es igual a
ejecuta en
una tarea periódica el período de la tarea
un evento o una tarea el tiempo transcurrido desde la ejecución previa
continua
El controlador trunca el tiempo transcurrido a milisegundos (ms) enteros. Por ejemplo,
si el tiempo transcurrido = 10.5 ms, el controlador establece DeltaT = 10 ms.
La actualización de la entrada del proceso necesita sincronizarse con la ejecución de la tarea o muestrearse
5 - 10 veces más rápido que el tiempo en que se ejecuta la tarea a fin de minimizar los errores de muestreo
entre la entrada y la instrucción.
sobremuestreo En el modo de sobremuestreo, el tiempo delta (DeltaT) usado por la instrucción es el valor escrito en el
parámetro OversampleDT de la instrucción. Si la entrada del proceso tiene un valor de sello de hora, use en
lugar de ello el modo de muestreo en tiempo real.
Añada lógica al programa para controlar cuándo se ejecuta la instrucción. Por ejemplo, puede usar un
temporizador para establecer el valor de OversampleDeltaT y así controlar la ejecución usando la entrada
EnableIn de la instrucción.
La entrada del proceso necesita muestrearse 5 - 10 veces más rápido que el tiempo en que se ejecuta la
instrucción a fin de minimizar los errores de muestreo entre la entrada y la instrucción.
Modo de Descripción
temporización
muestreo en tiempo real En el modo de muestreo en tiempo real, el tiempo delta (DeltaT) usado por la instrucción es la diferencia entre
dos valores de sello de hora que corresponden a las actualizaciones de la entrada del proceso. Use este modo
cuando la entrada del proceso tiene un sello de hora asociado con sus actualizaciones y usted necesita una
coordinación precisa.
El valor del sello de hora se lee en el nombre de tag introducido para el parámetro RTSTimeStamp de la
instrucción. Normalmente este nombre de tag es un parámetro en el módulo de entrada asociado con la
entrada del proceso.
La instrucción compara el valor RTSTime configurado (período de actualización previsto) con el DeltaT
calculado para determinar si la instrucción está leyendo cada actualización de la entrada del proceso. Si
DeltaT no se encuentra dentro de un milisegundo del tiempo de configuración, la instrucción establece el bit
de estado RTSMissed para indicar que existe un problema con la lectura de actualizaciones de la entrada en
el módulo.
Parámetros de entrada
Valor: Descripción:
0 modo periódico
1 modo de sobremuestreo
válido = 0 a 2
valor predeterminado = 0
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.
1 conteo = 1 milisegundo
valor predeterminado = 0
Parámetros de salida
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.
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.
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.
Notas:
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 El texto estructurado es un lenguaje de programación textual que usa
declaraciones para definir lo que se va a ejecutar.
estructurado
• El texto estructurado no permite distinguir mayúsculas de
minúsculas.
• Use caracteres de tabulación y de retorno de carro (líneas
separadas) para facilitar la lectura del texto estructurado. Dichos
caracteres no tienen ningún efecto en la ejecución del texto
estructurado.
(ver página 670) Una instrucción usa paréntesis para delimitar sus operandos.
Cuando se ejecuta, una instrucción produce uno o más valores que son
parte de una estructura de datos.
instruction(operand1,
Termine la instrucción con un punto y coma “;”. operand2,operand3);
WHILE...DO
REPEAT...UNTIL
EXIT
comentario Texto que explica o aclara lo que hace una sección de texto estructurado. //comment
(ver página 687) • Use comentarios para facilitar la interpretación del texto
estructurado.
• Los comentarios no tienen ningún efecto en la ejecución del texto (*start of comment . . .
estructurado. end of comment*)
• Los comentarios pueden aparecer en cualquier lugar del texto
estructurado.
/*start of comment . . .
end of comment*/
tag := expression ;
donde:
Componente Descripción
tag representa el tag que está obteniendo el nuevo valor
INT
DINT
REAL
; finaliza la asignación
donde:
Componente Descripción
tag representa el tag que obtiene el nuevo valor
INT
DINT
REAL
; finaliza la asignación
Si desea Entonces
Calcular un valor aritmético “Use funciones y operadores aritméticos”en la página 665.
Comparar dos valores o cadenas “Use operadores relacionales”en la página 666.
Verificar si determinadas condiciones son “Use operadores lógicos”en la página 668.
verdaderas o falsas
Comparar los bits dentro de valores “Use operadores a nivel de bits”en la página 669.
Por ejemplo:
Si la comparación es El resultado es
verdadera 1
falsa 0
Por ejemplo:
Si la comparación es El resultado es
verdadera 1
falsa 0
Por ejemplo:
Por ejemplo:
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
END_IF;
osri_1.InputBit := tag_xic;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
ABL(0,serial_control);
END_IF;
• GOTO
• REPEAT
IF...THEN Use IF…THEN para hacer algo si o cuando ocurre una condición
específica.
Operandos:
Texto estructurado
IF bool_expression THEN
Operando Tipo Formato Introduzca
<statement>;
END_IF; bool_ BOOL tag Expresión o tag BOOL que evalúa respecto
expression a un valor BOOL (expresión BOOL)
expresión
IF bool_expression1 THEN
<statement >; declaraciones que deben
ejecutarse cuando
. bool_expression1 es verdadero
.
.
ELSIF bool_expression2 THEN
opcional
<statement>; declaraciones que deben
ejecutarse cuando
. bool_expression2 es verdadero
.
.
ELSE
opcional
<statement>; declaraciones que deben
ejecutarse cuando ambas
. expresiones son falsas
.
.
END_IF;
Indicadores de estado
aritmético: no afectados
Ejemplo 1: IF…THEN
Ejemplo 2: IF…THEN…ELSE
Ejemplo 3: IF…THEN…ELSIF
Ejemplo 4: IF…THEN…ELSIF…ELSE
CASE...OF Use CASE para seleccionar qué hacer según un valor numérico.
Operandos:
Texto estructurado
CASE numeric_expression OF
Operando Tipo Formato Introduzca
selector1: statement;
selectorN: statement; numeric_ SINT tag tag o expresión que evalúa respecto a un
número (expresión numérica)
ELSE expression INT expresión
statement;
END_CASE; DINT
REAL
selector SINT inmediato el mismo tipo que
numeric_expression
INT
DINT
REAL
CASE numeric_expression OF
selector1 : <statement>; declaraciones a ejecutar cuando
. numeric_expression = selector1
.
.
selector2 : <statement>; declaraciones a ejecutar cuando
especifique todos los numeric_expression = selector2
valores de selector .
alternativos (rutas) que .
necesite .
selector3 : <statement>; declaraciones a ejecutar cuando
. numeric_expression = selector3
.
.
ELSE
<statement>; declaraciones a ejecutar cuando
opcional . numeric_expression ≠ cualquier
selector
.
.
END_CASE;
Indicadores de estado
aritmético: no afectados
Ejemplo
FOR…DO Use el lazo FOR…DO para hacer algo una cantidad determinada de
veces antes de hacer otra cosa.
Operandos:
Texto estructurado
FOR count:= initial_value TO
final_value BY increment DO Operando Tipo Formato Descripción
<statement>; count SINT tag tag para almacenar la posición de conteo
END_FOR; a medida que FOR…DO se ejecuta
INT
DINT
initial_ SINT tag se debe evaluar con respecto a un número
value
INT expresión especifica el valor inicial del conteo
DINT inmediato
final_ SINT tag especifica el valor final del conteo, el cual
value determina cuándo salir del lazo
INT expresión
DINT inmediato
increment SINT tag (opcional) cantidad a incrementar el
conteo cada vez que se pasa por el lazo
INT expresión
DINT inmediato
Si usted no especifica un incremento, el
conteo se incrementa en 1.
¿Efectuado x sí ¿Efectuado x sí
veces? veces?
no no
declaración 1 declaración 1
declaración 2 declaración 2
declaración 3 declaración 3
declaración 4 declaración 4
… …
¿Salir? sí
resto de la rutina
no
resto de la rutina
El lazo FOR…DO se ejecuta un número Para detener el lazo antes de que el conteo llegue al
específico de veces. último valor, use una declaración EXIT.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejemplo 1:
3. Añadir 1 a subscript.
De lo contrario, parar.
Ejemplo 2:
b. Parar.
4. Añadir 1 a position.
De lo contrario, parar.
Operandos:
Texto estructurado
WHILE bool_expression DO
Operando Tipo Formato Introduzca
<statement>;
END_WHILE; bool_ BOOL tag Expresión o tag BOOL que evalúa
expression respecto a un valor BOOL
expresión
WHILE bool_expression1 DO
<statement>; declaraciones que se ejecutan mientras
bool_expression1 es verdadero
IF bool_expression2 THEN
EXIT; Si existen condiciones cuando usted desea
opcional salir del lazo anticipadamente, use otras
END_IF; declaraciones, tal como la construcción
IF...THEN, para condicionar una
declaración EXIT.
END_WHILE;
Mientras bool_expression es verdadero, el Para detener el lazo antes de que las condiciones
controlador ejecuta sólo las declaraciones sean verdaderas, use una declaración EXIT.
dentro del lazo WHILE…DO.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejemplo 1:
Ejemplo 2:
8. Ir a 3.
REPEAT…UNTIL Use el lazo REPEAT…UNTIL para continuar haciendo algo hasta que
las condiciones sean verdaderas.
Operandos:
Texto estructurado
REPEAT
Operando Tipo Formato Introduzca
<statement>;
UNTIL bool_expression bool_ BOOL tag Expresión o tag BOOL que evalúa respecto
expression a un valor BOOL (expresión BOOL)
END_REPEAT; expresión
REPEAT
<statement>; declaraciones que se ejecutan mientras
bool_expression1 es falso
IF bool_expression2 THEN
EXIT; Si existen condiciones cuando usted desea
opcional salir del lazo anticipadamente, use otras
END_IF; declaraciones, tal como la construcción
IF...THEN, para condicionar una
declaración EXIT.
UNTIL bool_expression1
END_REPEAT;
resto de la rutina
Mientras bool_expression es falso, el Para detener el lazo antes de que las condiciones
controlador ejecuta sólo las declaraciones dentro sean falsas, use una declaración EXIT.
del lazo REPEAT…UNTIL.
Indicadores de estado
aritmético: no afectados
Condiciones de fallo:
Ejemplo 1:
Esto es diferente del lazo WHILE...DO porque el lazo UNTIL ((pos = 101) OR
WHILE...DO evalúa su condición primero. Si las condiciones (structarray[pos].value = targetvalue))
son verdaderas, el controlador ejecuta las declaraciones end_repeat;
dentro del lazo. Las declaraciones en un lazo REPEAT...UNTIL
siempre se ejecutan por lo menos una vez. Las declaraciones
en un lazo WHILE...DO es posible que nunca se ejecuten.
Ejemplo 2:
7. Si el carácter en SINT_array[element_number] = 13
(valor decimal del retorno de carro), parar.
De lo contrario, ir a 3.
/*comment*/
dentro de una línea de texto (*comment*)
estructurado
/*comment*/
que abarque más de una línea (*start of comment . . . end of
comment*)
Por ejemplo:
Formato Ejemplo
//comment Al comienzo de una línea
IF conveyor_direction THEN...
light := 1;
END_IF;
(*comment*) Sugar.Inlet[:=]1;(*open the inlet*)
SIZE(Inventory,0,Inventory_Items);
A comentarios
texto estructurado 687
activación de salida 82 comparación de bits de archivo 478
activar tarea de evento 464 comparar 206
actualizar salida 201 concatenación de cadenas 601
ajuste 503 condiciones de overflow 648
alarma digital 30 conector
alarmas 504 diagrama de bloques de
arco coseno 532 funciones 641
arco seno 529
arco tangente 535 conector de cable de entrada 641
aritmética y lógica de archivo 335 conector de cable de salida 641
ASCII conexión
asignación de texto caché 173
estructurado 663 configuración 159
instrucción MSG 159
asignación
carácter ASCII 663 instrucción PID 502
no retentiva 662 construcción
texto estructurado 671
retentiva 661
conteo progresivo 128
atributos conteo progresivo/regresivo 136
conversión de tipos de datos 635 conteo regresivo 132
valores inmediatos 635 control de programa/operador
atributos comunes 635 descripción general 654
conversión de tipos de datos 635 conversión de tipos de datos 635
valores inmediatos 635 convertir a BCD 556
convertir en entero 559
copiar 356
B copiar síncrono 356
BAND 317 coseno 523
banda muerta 514
BNOT 326
BOR 320 D
borrar 298 descarga FIFO 400
Borrar ASCII búfer 575 descripción
buscar cadena 605 texto estructurado 687
búsqueda y comparación de desenclavamiento de salida 86
archivos 347 desplazamiento de bits a la
BXOR 323 derecha 390
desplazamiento de bits a la
izquierda 386
C desviación estándar 376
caché detección de diagnóstico 486
conexión 173 determinación de igualdad con
cadena máscara 237
evaluación en texto diagrama de bloques de funciones
estructurado 667 creación de un retardo de
Cadena a DINT 614 escán 647
Cadena central 609 resolución del flujo de datos entre
Cadena en REAL 616 dos bloques 647
cálculo 248 resolver un lazo 645
cambiar signo 274 selección de elementos 641
caracteres ASCII en el búfer 573 diferente de 242
carga de secuenciador 428 DINT en cadena 619
carga FIFO 394 distribuir campo de bits 292
carga LIFO 406, 412 distribuir campo de bits con
CASE 675 receptor 295
clasificar 371 división 261
códigos de error documento
ASCII 568 texto estructurado 687
instrucción MSG 152
códigos de productos 181
E FBD_BIT_FIELD_DISTRIBUTE 295
FBD_BOOLEAN_AND 317
elementos FBD_BOOLEAN_NOT 326
instrucción SIZE 381
FBD_BOOLEAN_OR 320
Eliminación de cadena 603
enclavamiento de datos 642 FBD_BOOLEAN_XOR 323
enclavamiento de salida 84 FBD_COMPARE 212, 216, 220,
Encontrar cadena 605 224, 228, 243
escalado 505 FBD_CONVERT 556, 559
escritura ASCII 594 FBD_COUNTER 136
escritura ASCII con anexo 589 FBD_LIMIT 232
establecer valor del sistema 176 FBD_LOGICAL 305, 308, 311, 315
estado FBD_MASKED_MOVE 288
tarea 195 FBD_MASK_EQUAL 238
estructura COMPARE 479, 487 FBD_MATH 253, 256, 259, 262,
estructura CONTROL 336, 347, 367, 267, 275, 547
371, 376, 386, 390, 395, 401, FBD_MATH_ADVANCED 271, 278,
406, 407, 413, 420, 424, 428
estructura COUNTER 128, 132 520, 524, 527, 529, 532,
estructura de control 448 535, 540, 544, 550, 553
Estructura FBD_BIT_FIELD_ FBD_ONESHOT 96, 99
DISTRIBUTE 295 FBD_TIMER 116, 120, 124
Estructura FBD_BOOLEAN_ FBD_TRUNCATE 561
AND 317 instrucción RES 141
Estructura FBD_BOOLEAN_ MESSAGE 144
NOT 326 PID 498
Estructura FBD_BOOLEAN_OR 320 RESULT 479, 487
Estructura FBD_BOOLEAN_XOR 323 SERIAL_PORT_CONTROL 566, 568,
estructura FBD_COMPARE 212, 216, 570, 573, 578, 582, 586,
220, 224, 228, 243
estructura FBD_CONVERT 556, 559 590, 595
Estructura FBD_COUNTER 136 STRING 568, 600, 613
estructura FBD_LIMIT 232 TIMER 104, 108, 112
Estructura FBD_LOGICAL 305, 308, etiqueta 434, 627, 631
311, 315 examinar si está abierto 80
Estructura FBD_MASKED_ expiración
MOVE 288 configurar para tarea de evento 195
Estructura FBD_MASK_EQUAL 238 exponencial 546
estructura FBD_MATH 253, 256, 259, expresión
262, 267, 275, 547 expresión BOOL
Estructura FBD_MATH_ADVANCED texto estructurado 663
271, 520, 524, 527, 529, 532, expresión numérica
535, 540, 544, 550, 553 texto estructurado 663
estructura FBD_MATH_ orden de ejecución
ADVANCED 278 texto estructurado 669
estructura FBD_ONESHOT 96, 99 texto estructurado
estructura FBD_TIMER 116, 120, 124 descripción general 663
Estructura FBD_TRUNCATE 561 funciones 665
estructura MESSAGE 144 operadores a nivel de bits 669
estructura PID 498 operadores aritméticos 665
estructura RESULT 479, 487 operadores lógicos 668
Estructura SERIAL_PORT_ operadores relacionales 666
CONTROL 566, 568, 570, 573, expresión BOOL
578, 582, 586, 590, 595 texto estructurado 663
estructura STRING 568, 600, 613 expresión numérica 663
estructura TIMER 104, 108, 112 expresiones
estructuras formato 209, 250, 345, 353
cadena 568, 613 operadores válidos 208, 250, 345,
COMPARE 479, 487 353
CONTROL 336, 347, 367, 371, 376, orden de operación 209, 251, 346,
386, 390, 395, 401, 406, 354
407, 413, 420, 424, 428
COUNTER 128, 132
N
P
NO a nivel de bits 314
NO booleano 326 polarización de salida 515
post-escán
texto estructurado 662
O promedio 366
proporcional, integral y
O a nivel de bits 307 derivativo 497
O booleano 320 prueba ASCII para línea de
O exclusivo a nivel de bits 310 búfer 570
O exclusivo booleano 323
objeto CONTROLLER 180
objeto CONTROLLERDEVICE 181 R
objeto CST 183
objeto DF1 184 radianes 553
objeto FAULTLOG 187 raíz cuadrada 270
objeto MESSAGE 188 REAL en cadena 621
objeto MODULE 190 referencia de entrada 641
objeto MOTIONGROUP 191 referencia de salida 641
objeto PROGRAM 192 REPEAT…UNTIL 684
objeto ROUTINE 193 resta 255
objeto SERIALPORT 193 restablecer 141
objeto TASK 195 restablecimiento de control
objeto WALLCLOCKTIME 197 maestro 452
objetos retardo de escán
CONTROLLER 180 diagrama de bloques de
CONTROLLERDEVICE 181 funciones 647
CST 183 retornar 474
DF1 184 retorno 436
S IF...THEN 672
operadores a nivel de bits 669
Salida operadores aritméticos 665
actualizar inmediatamente 201
operadores lógicos 668
habilitar o inhabilitar fin de
operadores relacionales 666
procesamiento de
REPEAT…UNTIL 684
tarea 195
WHILE…DO 681
saltar 434, 627, 631
saltar a subrutina 436 tipo de datos de cadena 568, 600,
secuenciador de entrada 420 613
secuenciador de salida 424 transición de datos 494
seno 520 truncar 561
sin operación 457
subrutina 436 U
sumar 252
superposición un impulso 88
verifica 195 un impulso en flanco ascendente 91
suponer datos disponibles 645, 647 un impulso en flanco ascendente
con entrada 96
un impulso en flanco
T descendente 94
un impulso en flanco descendente
tamaño en elementos 381 con entrada 99
tangente 526
tarea
activar mediante tag V
consumido 201
activar tarea de evento 464 valor absoluto 277
configurar programáticamente 195 valores inmediatos 635
monitorear 195
tarea de evento W
activar mediante instrucción
EVENT 464 WHILE…DO 681
activar mediante tag
consumido 201
configurar 195
X
temporizador de retardo a la X a la potencia de Y 546
conexión 104
temporizador de retardo a la
conexión con Y
restablecimiento 116 Y a nivel de bits 304
temporizador de retardo a la Y booleano 317
desconexión 108
temporizador de retardo a la
desconexión con
restablecimiento 120
temporizador retentivo activado 112
temporizador retentivo activado
con restablecimiento 124
texto estructurado
asignación 661
asignación no retentiva 662
asigne carácter ASCII 663
CASE 675
comentarios 687
componentes 659
construcciones 671
evaluación de cadenas 667
expresión 663
expresión numérica 663
FOR…DO 678
funciones 665
Carácter Dec Hex Carácter Dec Hex Carácter Dec Hex Carácter Dec Hex
[ctrl-@] NUL 0 $00 SPACE 32 $20 @ 64 $40 ‘ 96 $60
[ctrl-A] SOH 1 $01 ! 33 $21 A 65 $41 a 97 $61
[ctrl-B] STX 2 $02 “ 34 $22 B 66 $42 b 98 $62
[ctrl-C] ETX 3 $03 # 35 $23 C 67 $43 c 99 $63
[ctrl-D] EOT 4 $04 $ 36 $24 D 68 $44 d 100 $64
[ctrl-E] ENQ 5 $05 % 37 $25 E 69 $45 e 101 $65
[ctrl-F] ACK 6 $06 & 38 $26 F 70 $46 f 102 $66
[ctrl-G] BEL 7 $07 ‘ 39 $27 G 71 $47 g 103 $67
[ctrl-H] BS 8 $08 ( 40 $28 H 72 $48 h 104 $68
[ctrl-I] HT 9 $09 ) 41 $29 I 73 $49 i 105 $69
[ctrl-J] LF 10 $l ($0A) * 42 $2A J 74 $4A j 106 $6A
[ctrl-K] VT 11 $0B + 43 $2B K 75 $4B k 107 $6B
[ctrl-L] FF 12 $0C , 44 $2C L 76 $4C l 108 $6C
[ctrl-M] CR 13 $r ($0D) - 45 $2D m 77 $4D m 109 $6D
[ctrl-N] SO 14 $0E . 46 $2E N 78 $4E n 110 $6E
[ctrl-O] SI 15 $0F / 47 $2F O 79 $4F o 111 $6F
[ctrl-P] DLE 16 $10 0 48 $30 P 80 $50 P 112 $70
[ctrl-Q] DC1 17 $11 1 49 $31 Q 81 $51 q 113 $71
[ctrl-R] DC2 18 $12 2 50 $32 R 82 $52 r 114 $72
[ctrl-S] DC3 19 $13 3 51 $33 S 83 $53 s 115 $73
[ctrl-T] DC4 20 $14 4 52 $34 T 84 $54 t 116 $74
[ctrl-U] NAK 21 $15 5 53 $35 U 85 $55 u 117 $75
[ctrl-V] SYN 22 $16 6 54 $36 V 86 $56 v 118 $76
[ctrl-W] ETB 23 $17 7 55 $37 W 87 $57 w 119 $77
[ctrl-X] CAN 24 $18 8 56 $38 X 88 $58 X 120 $78
[ctrl-Y] EM 25 $19 9 57 $39 Y 89 $59 y 121 $79
[ctrl-Z] SUB 26 $1A : 58 $3A Z 90 $5A z 122 $7A
ctrl-[ ESC 27 $1B ; 59 $3B [ 91 $5B { 123 $7B
[ctrl-\] FS 28 $1C < 60 $3C \ 92 $5C | 124 $7C
ctrl-] GS 29 $1D = 61 $3D ] 93 $5D } 125 $7D
[ctrl-^] RS 30 $1E > 62 $3E ^ 94 $5E ~ 126 $7E
[ctrl-_] US 31 $1F ? 63 $3F _ 95 $5F DEL 127 $7F
Servicio de asistencia Rockwell Automation ofrece información técnica en Internet para
proporcionarle asistencia a la hora de utilizar sus productos. En
técnica de http://support.rockwellautomation.com, puede encontrar manuales técnicos,
Rockwell Automation una base de conocimientos con respuestas a preguntas frecuentes, notas
técnicas y de aplicación, ejemplos de código y vínculos a Service Packs de
software, así como un vínculo llamado MySupport que se puede personalizar
para sacar el máximo provecho de estas herramientas.
En los +1.440.646.3223
Estados Unidos Lunes a viernes, de 8:00 am a 5:00 pm, hora oficial del Este de EE.UU.
Fuera de Póngase en contacto con el representante local de
Estados Unidos Rockwell Automation para cualquier consulta relacionada con
asistencia técnica.