Operador IEC para la división de una variable entre otra:
Tipos permitidos:
oBYTE
oWORD
oDWORD
oLWORD
oSINT
oUSINT
oINT
oUINT
oDINT
oUDINT
oLINT
oULINT
oREAL
oLREAL
oTIME
Las variables TIME pueden dividirse entre variables de enteros.
(El resultado en Var1 es 4).
LD 8
DIV 2
ST Var1
var1 := 8/2;
1. series de módulos DIV
2. módulo DIV individual
3. módulo DIV con parámetros EN/ENO
Sistemas de destino distintos pueden comportarse de manera diferente respecto a un error de división entre cero. Puede dar lugar a una parada (HALT) del controlador o no llegarse a detectar.
|
FUNCIONAMIENTO IMPREVISTO DEL EQUIPO |
Use las funciones de comprobación descritas en este documento o escriba sus propias comprobaciones para evitar la división entre cero en el código de programación. |
El incumplimiento de estas instrucciones puede causar la muerte, lesiones serias o daño al equipo. |
NOTA: Para obtener más información acerca de las funciones de verificación implícitas consulte el capítulo POU para comprobaciones implícitas.
Puede utilizar las siguientes funciones de verificación para comprobar el valor del divisor con el fin de evitar una división entre cero y adaptarlas, si es necesario:
oCheckDivDInt
oCheckDivLint
oCheckDivReal
oCheckDivLReal
Para obtener información sobre cómo insertar la función, consulte la descripción de la función POUs para comprobaciones implícitas.
Las funciones de verificación son llamadas automáticamente antes de cada división detectada en el código de aplicación.
Consulte el ejemplo siguiente de implementación de la función CheckDivReal.
Implementación predeterminada de la función CheckDivReal
Parte de declaraciones:
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckDivReal : REAL
VAR_INPUT
divisor:REAL;
END_VAR
Parte de implementación:
// Implicitly generated code : only an suggestion for implementation
IF divisor = 0 THEN
CheckDivReal:=1;
ELSE
CheckDivReal:=divisor;
END_IF;
El operador DIV utiliza la salida de la función CheckDivReal como un divisor. En el siguiente ejemplo se prohíbe una división entre cero y el valor inicializado 0 del divisor d es cambiado por 1 por CheckDivReal antes de la ejecución de la división. Por lo tanto, el resultado de la división es 799.
PROGRAM PLC_PRG
VAR
erg:REAL;
v1:REAL:=799;
d:REAL;
END_VAR
erg:= v1 / d;