DIV
Operatore IEC per la divisione di una variabile per un'altra:
Tipi consentiti:
BYTE
WORD
DWORD
LWORD
SINT
USINT
INT
UINT
DINT
UDINT
LINT
ULINT
REAL
LREAL
TIME
Le variabili TIME possono essere divise per variabili intere.
1. serie di caselle DIV
2. casella DIV
singola
3. casella DIV
con parametri EN/ENO
Sistemi di destinazione diversi possono comportarsi in modo diverso per quanto riguarda l'errore della divisione per zero. Può verificarsi l'arresto del controller oppure l'errore può non venire rilevato.
AVVERTIMENTO | |
---|---|
Per verificare il valore di un divisore allo scopo di evitare la divisione per zero, è possibile utilizzare le seguenti funzioni di controllo e adattarle, se necessario:
CheckDivDInt
CheckDivLint
CheckDivReal
CheckDivLReal
Per informazioni sull'inserimento della funzione, consultare la descrizione della funzione .
Le funzioni di controllo vengono chiamate automaticamente prima di ogni divisione trovata nel codice applicazione.
Vedere l'esempio seguente per una implementazione della funzione CheckDivReal
.
CheckDivReal
Parte dichiarazione
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckDivReal : REAL
VAR_INPUT
divisor:REAL;
END_VAR
Parte implementazione:
// Implicitly generated code : only an suggestion for implementation
IF divisor = 0 THEN
CheckDivReal:=1;
ELSE
CheckDivReal:=divisor;
END_IF;
L'operatore DIV
utilizza l'uscita della funzione CheckDivReal
come divisore. Nel seguente esempio, una divisione per 0 non è consentita dato che con il valore inizializzato 0 del divisore d
è modificato a 1 da CheckDivReal
prima che venga eseguita la divisione. Pertanto il risultato della divisione è 799.
PROGRAM PLC_PRG
VAR
erg:REAL;
v1:REAL:=799;
d:REAL;
END_VAR
erg:= v1 / d;