Skip to main content

POU: CheckLRageUnsigned

Funzione per il monitoraggio dei limiti di campo di un tipo di sottocampo di tipo ULINT

Per un esempio di implementazione del monitoraggio dell'intervallo, vedere la pagina della guida per il CheckRangeSigned funzione.

Limiti dell'intervallo di monitoraggio

Questo funzione di monitoraggio è responsabile della gestione appropriata delle violazioni dei limiti di portata. Esempi di reazioni alle violazioni includono l'impostazione di flag di errore e la modifica dei valori. Le funzioni vengono chiamate implicitamente quando un valore viene assegnato a una variabile di tipo sottointervallo.

Attenzione

Per ottenere la funzionalità per le funzioni di monitoraggio, non modificare la parte della dichiarazione. Tuttavia, è consentito aggiungere variabili locali.

. Quando la funzione viene chiamata, riceve i seguenti parametri di input:
  • value: Valore che deve essere assegnato alle variabili di tipo sottointervallo

  • lower: Limite di portata inferiore

  • upper: Limite superiore dell'intervallo

Il valore restituito è il valore di assegnazione purché sia compreso nell'intervallo valido. In caso contrario, viene restituito il limite superiore o inferiore, a seconda della soglia violata.

Ad esempio, l'incarico i := 10*y è sostituito implicitamente da i := CheckRangeSigned(10*y, -4095, 4095);

Se y è "1000", quindi "10*1000=10000" non è assegnato a i come nel codice originale. Viene invece assegnato il limite di intervallo superiore di "4095".

Lo stesso vale per CheckRangeUnsigned funzione.

Importante

Se le funzioni non sono disponibili, il sottointervallo non viene verificato per le rispettive variabili in fase di esecuzione. In questo caso è possibile assegnare qualsiasi valore compreso tra -2147483648 e +2147483648 (o tra 0 e 4294967295) ad una variabile di tipo di sottointervallo DINT/UDINT. È possibile assegnare qualsiasi valore compreso tra -9223372036854775808 e +9223372036854775807 (o compreso tra 0 e 18446744073709551615) a una variabile di un tipo di sottointervallo LINT/ULINT.

Attenzione

Il collegamento delle funzioni di monitoraggio dell'area può portare a loop infiniti. Ad esempio, un ciclo infinito può verificarsi se la variabile contatore di un ciclo FOR è un tipo di sottointervallo e l'intervallo di conteggio per il ciclo esce dal sottointervallo definito.

Esempio 537. Esempio di ciclo infinito:
VAR
        ui : UINT (0..10000);
 ...
END_VAR
FOR ui:=0 TO 10000 DO
        ...
END_FOR

Il programma non esce mai dal ciclo FOR perché il CheckRangeSigned la funzione di monitoraggio impedisce ui dall'essere impostato su un valore maggiore di 10000.