Definizione dei termini: Standard = non relativo alla sicurezza.
Il termine "standard" si riferisce sempre a elementi/oggetti non relativi alla sicurezza. Esempi: un elemento di dati di un processo standard può venire letto/scritto solo da un dispositivo I/O non relativo alla sicurezza, ossia da un dispositivo standard. Sono dati non relativi alla sicurezza tutte le variabili / le funzioni / i blocchi di funzione standard. Il termine "controllore standard" designa un PLC non relativo alla sicurezza.
Variabili di sicurezza e standard si possono utilizzare insieme in uno stesso FdL di codice TS e, in determinate circostanze, all'interno di una stessa istruzione TS.
Valgono le seguenti regole:
In genere, è possibile scrivere una variabile di sicurezza in una variabile standard utilizzando l'operatore di assegnazione '='. In questo modo viene eseguita una conversione del tipo implicita da un tipo di dati di sicurezza a un tipo di dati standard.
Esempio valido: MyStandardBool := MySafeBool; (* permesso *)
AVVERTENZA | |
---|---|
L'assegnazione da una variabile standard a una variabile di sicurezza in genere non è permessa perché significherebbe una conversione del tipo implicita da un tipo di dati standard a un tipo di dati di sicurezza.
Esempio di errore: MySafeBool := MyStandardBool; (*
non
permesso *)
Le variabili di sicurezza e standard si possono combinare in una singola istruzione a condizione che non avvengano assegnazioni da una variabile standard a una variabile di sicurezza.
Gli operatori simbolici, come & = + - * /
, vengono considerati come non digitati. Gli "operatori funzionali", come AND, OR, DIV, MUL
, ecc. vengono considerati come digitati. Per gli operatori digitati si devono distinguere la "variante standard" e la "variante di sicurezza" (ad es., AND/AND_S).
Esempi validi:
MyStandardResult := MyStandardBool AND MyStandardBool2; (* permesso *)
MySafeResult := MySafeBool1 AND_S MySafeBool2; (* permesso *)
MySafeResult := MySafeBool1 & MySafeBool2; (* permesso *)
MyStandardResult := MyStandardBool & MySafeBool; (* permesso *)
Esempi di errore:
MySafeResult := MyStandardBool & MySafeBool; (*
non
permesso *)
MySafeResult := MyStandardBool AND_S MySafeBool; (*
non
permesso *)
Variabili di sicurezza e standard si possono combinare in uno stesso richiamo di FU/BF a condizione che non venga assegnata una variabile standard a una variabile di sicurezza. Ciò include anche l'assegnazione di parametri: le variabili standard non si possono collegare a parametri formali di FU/BF di sicurezza, dato che questi prevedono il collegamento di tipi di dati di sicurezza.
Esempi validi:
MyStandardResult:= AND(MySafeBool, MyStandardBool); (* permesso *)
MyStandardCTU(CU := MySafeVar, RESET := 0, PV := INT#50); (* permesso *)
Esempi di errore:
MySafeResult:= AND(MySafeBool, MyStandardBool); (*
non
permesso *)
MySafeCTU(CU := MyStandardVar, RESET := 0, PV := INT#50); (*
non
permesso *)
Per facilitare la distinzione tra variabili standard e variabili di sicurezza, l'editore di codice TS le visualizza diversamente. Le variabili di sicurezza sono sottolineate in rosso, mentre le variabili standard non sono sottolineate.
Nonostante sia possibile combinare variabili di sicurezza e standard in TS, non è permesso realizzare il principio di abilitazione. A tal fine, utilizzare SBF/LD. Fare riferimento all'argomento "Programmare il principio di abilitazione".