DIV
Opérateur IEC servant à diviser une variable par autre variable.
Types autorisés
BYTE
WORD
DWORD
LWORD
SINT
USINT
INT
UINT
DINT
UDINT
LINT
ULINT
REAL
LREAL
TIME
Les variables TIME peuvent être divisées par des variables de type entier.
1. Série de zones DIV
2. Zone DIV
unique
3. Zone DIV
avec paramètres EN/ENO
Une division par zéro ne génère pas la même erreur en fonction du système cible. Elle peut entraîner l'arrêt du contrôleur ou bien ne pas être détectée.
AVERTISSEMENT | |
---|---|
Les fonctions de vérification suivantes permettent de vérifier la valeur du diviseur afin d'éviter une division par 0 et, le cas échéant, de les adapter :
CheckDivDInt
CheckDivLint
CheckDivReal
CheckDivLReal
Pour plus d'informations sur l'insertion de la fonction, consultez la description de la fonction .
Les fonctions de vérification sont appelées automatiquement avant chaque division trouvée dans le code de l'application.
Pour une implémentation de la fonction CheckDivReal
, consultez l'exemple ci-dessous.
CheckDivReal
Partie déclaration
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckDivReal : REAL
VAR_INPUT
divisor:REAL;
END_VAR
Partie implémentation :
// Implicitly generated code : only an suggestion for implementation
IF divisor = 0 THEN
CheckDivReal:=1;
ELSE
CheckDivReal:=divisor;
END_IF;
L'opérateur DIV
utilise la sortie de la fonction CheckDivReal
comme diviseur. La division par 0 étant interdite, dans l'exemple suivant, la fonction CheckDivReal
remplace la valeur d'initialisation 0 du diviseur d
par 1 avant l'opération de division. Le résultat de la division est donc égal à 799.
PROGRAM PLC_PRG
VAR
erg:REAL;
v1:REAL:=799;
d:REAL;
END_VAR
erg:= v1 / d;