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
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
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
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).
ADD
(2 entradas): AritméticaADD
operadorADD
(3 entradas): Suma con tres entradasSUB
:RestaMUL
:MultiplicaciónDIV
:DivisiónEQ
:Comparación para la igualdadNE
:Comparación por desigualdadLT
: 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"
SEL
MUX
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
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 |
| División por 0 |
Extendido |
| 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: |
Extendido |
| El valor de salida no está en el rango de valores del tipo de destino: al convertir entre dos
asimismo
|
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.
SEL
:para k<0
SEL
:para k>max, n...valor máximo
MUX
para k<0
MUX
para k>0