Skip to main content

Operadores

Las funciones estándar integradas que representan un subconjunto de las funciones estándar IEC se denominan operadores. No se pueden crear funciones definidas por el usuario en la programación de seguridad.

Los operadores tienen la misma semántica que en CODESYS Estándar.

Se pueden conectar a ambos SAFExxx y Tipos de datos Estándar.

Inserción de operadores

Los operadores se insertan utilizando el Caja de inserción o Insertar cuadro vacío dominio.

Los operadores también se pueden agregar desde la caja de herramientas en el Caja de instrumento Vista. La caja de herramientas del Editor de FBD de seguridad contiene las siguientes categorías:

  • Operadores booleanos

  • Operadores matemáticos

  • Otros operadores

Asistente de entrada

En el Asistente de entrada se muestran las siguientes categorías para los operadores:

  • Operadores

  • Conversiones (no en el nivel básico)

Operadores extensibles

. Operadores ampliables mediante entradas adicionales
  • AND

  • OR

  • ADD (sólo en el Nivel Extendido)

  • MUL (sólo en el Nivel Extendido)

  • MUX (sólo en el Nivel Extendido)

El EQ, LT, LE, GT, y GE Los operadores, que también son extensibles según IEC, sólo se pueden utilizar con dos entradas (como en el caso del estándar).

El Insertar entrada El comando agrega una entrada adicional a un cuadro de operador extensible.

Operadores en el Nivel Básico

. Operadores booleanos
  • AND (2 entradas)

  • AND (3 entradas)

  • OR (2 entradas)

  • OR (3 entradas)

Todos los operandos de la OR debe ser SAFEBOOL.

Operadores en el nivel extendido

. Operadores booleanos
  • AND (2 entradas)

  • AND (3 entradas)

  • OR (2 entradas)

  • OR (3 entradas)

  • XOR

  • NOT

Importante

El uso descuidado de la XOR y NOT Los operadores pueden provocar la pérdida de la propiedad de seguridad de SAFExxx variables. El verificador de seguridad no genera ninguna advertencia para dichas construcciones.

El XOR y NOT Los operadores pueden negar la propiedad a prueba de fallos de un SAFExxx variable, de modo que la SAFE La variable pierde su propiedad de seguridad, es decir, se convierte en "no segura". Esto puede provocar un arranque involuntario de la planta.

Regla de programación: La SAFExxx salidas de NOT y XOR Se deben determinar. Posteriormente, se debe asegurar que estos NOT/XOR Las salidas no están conectadas a través de salidas (E/S).

. Operadores matemáticos
  • ADD (2 entradas): Aritmética ADD operador

  • ADD (3 entradas): Suma con tres entradas

  • SUB:Resta

  • MUL:Multiplicación

  • DIV:División

  • EQ:Comparación para la igualdad

  • NE:Comparación por desigualdad

  • LT: Comparación de "menor que"

  • LE:Comparación de "menor que" o "igual a"

  • GT: Comparación para "mayor que"

  • GE:Comparación de "mayor que" o "igual a"

. Otros operadores
  • SEL

  • MUX

. Conversiones
  • BOOL_TO_INT

  • BOOL_TO_DINT

  • BOOL_TO_TIME

  • BOOL_TO_WORD

  • BYTE_TO_INT

  • BYTE_TO_DINT

  • BYTE_TO_TIME

  • BYTE_TO_WORD

  • DINT_TO_BOOL

  • DINT_TO_BYTE

  • DINT_TO_INT

  • DINT_TO_TIME

  • DINT_TO_WORD

  • DINT_TO_DWORD

  • DWORD_TO_DINT

  • DWORD_TO_TIME

  • INT_TO_BOOL

  • INT_TO_BYTE

  • INT_TO_DINT

  • INT_TO_DWORD

  • INT_TO_TIME

  • INT_TO_WORD

  • TIME_TO_BOOL

  • TIME_TO_BYTE

  • TIME_TO_INT

  • TIME_TO_DINT

  • TIME_TO_WORD

  • TIME_TO_DWORD

  • WORD_TO_BOOL

  • WORD_TO_BYTE

  • WORD_TO_DINT

  • WORD_TO_INT

  • WORD_TO_TIME

  • WORD_TO_DWORD

Operadores con características de seguridad

En las siguientes secciones se describen las características de algunos operadores específicos de

Error de tiempo de ejecución en caso de que el operador exceda el rango en el nivel extendido

Importante

Es responsabilidad de los desarrolladores diseñar la lógica del programa de tal manera que no se produzcan errores en tiempo de ejecución.

Reacciona a los siguientes sobrealcances con un error de tiempo de ejecución, como resultado de lo cual se detiene la aplicación y se genera una entrada de registro.

Nivel

Elemento del lenguaje

Error de tiempo de ejecución en caso de

Extendido

DIV

División por 0

Extendido

MUX

Llamada con primera entrada con un valor negativo o con un valor N que sea mayor que el número de entradas menos 1. Ejemplo: MUX(2, 16#8000, 16#8001)

Extendido

DINT_TO_INT,

TIME_TO_DINT,

TIME_TO_INT,

DINT_TO_TIME,

INT_TO_TIME,

DINT_TO_WORD,

TIME_TO_WORD,

DINT_TO_BYTE,

INT_TO_BYTE,

TIME_TO_BYTE, WORD_TO_BYTE

El valor de salida no está en el rango de valores del tipo de destino: al convertir entre dos ANY_MAGNITUDE tipos (INT, DINT, TIME), el valor numérico de salida debe estar dentro del rango de valores del tipo de destino (donde TIME Los valores se cuentan como un número de milisegundos). Al convertir de/a tipos de cadena de bits (BYTE, WORD, DWORD), el patrón de bits del valor de salida debe ser un patrón de bits del tipo de destino. Ejemplos:

DINT_TO_INT(16#0000FFFF), porque 216-1 no es un INT valor,

asimismo DINT_TO_TIME(-1), porque no hay nada negativo TIME- valores

TIME_TO_DINT(t#365d), porque 365 días = 3.153.600.000 ms = 16#BBF81E00 y, por lo tanto, es mayor que el número DINT más grande 231-1 = 16#7FFFFFFF

INT_TO_BYTE(-1), porque BYTE abarca solo de 0 a 255,

WORD_TO_BYTE(0xFFFF), porque BYTE se extiende solo a 0xFF.

Sugerencia

El comportamiento estándar de SEL/MUX (es decir, se selecciona el valor máximo si el valor de entrada es demasiado grande y se selecciona 0 si el valor de entrada es negativo) debe programarse en la aplicación de seguridad.

figura 40. Programación del comportamiento estándar de SEL:para k<0
Programación del comportamiento estándar de SEL:para k<0


figura 41. Programación del comportamiento estándar de SEL:para k>max, n...valor máximo
Programación del comportamiento estándar de SEL:para k>max, n...valor máximo


figura 42. Programación del comportamiento estándar de MUX para k<0
Programación del comportamiento estándar de MUX para k<0


figura 43. Programación del comportamiento estándar de MUX para k>0
Programación del comportamiento estándar de MUX para k>0