Una derivazione parallela permette di implementare una valutazione parallela degli elementi logici, tramite un metodo denominato SCE (Short Circuit Evaluation). Il metodo SCE permette di evitare l'esecuzione di un blocco funzione con un'uscita booleana se alcune condizioni parallele sono valutate come TRUE. La condizione può essere rappresentata nell'editor LD con una derivazione parallela alla derivazione del blocco funzione. La condizione SCE è definita da uno o più contatti nell'ambito della derivazione, collegati in modo parallelo o sequenziale.
I collegamenti verticali delle diramazioni di valutazione di corto circuito eseguite in parallelo sono rappresentate da una doppia linea per differenziarle dai costrutti OR rappresentati da una singola linea (vedere la figura Diramazione parallela per SCE in una rete ladder).
NOTA: Il termine derivazione viene utilizzato anche per un altro elemento che suddivide un flusso di segnale. A differenza della derivazione parallela, questa derivazione non ha punto di giunzione.
La derivazione parallela funziona come segue: prima di tutto viene analizzata per rilevare le derivazioni che non contengono alcun blocco funzione. Se una di tali derivazioni è valutata TRUE, allora il blocco funzione della derivazione parallela non viene richiamato e il valore all'ingresso della derivazione del blocco funzione viene trasferito all'uscita. Se la condizione SCE è valutata come FALSE, il blocco funzione viene richiamato e il risultato booleano della chiamata di esecuzione del blocco funzione viene trasferito.
Se tutte le derivazioni contengono blocchi funzione, vengono valutate dall'alto al basso e le relative uscite vengono combinate con operazioni logiche OR. Se non vi sono derivazioni contenenti la chiamata di un blocco funzione, viene eseguita la normale operazione OR.
Per inserire una derivazione parallela con funzione SCE, selezionare il modulo del blocco funzione ed eseguire il comando Inserire contatto parallelo (sopra) o Inserire contatto parallelo (sotto). Questa operazione è possibile solo se il primo ingresso e l'uscita principale del blocco funzione sono di tipo BOOL.
Di seguito è riportato un esempio del modello di linguaggio generato per la rete considerata.
L'istanza del blocco funzione x1 (TON) ha un ingresso e un'uscita booleani. La sua esecuzione può essere omessa, se la condizione della derivazione parallela è valutata come TRUE. Questo valore della condizione deriva dalle operazioni OR e AND che collegano i contatti cond1, cond2 e cond3.
Derivazione parallela per SCE in una rete ladder
1 Le linee di collegamento verticali doppie indicano un costrutto soggetto a uno SCE.
2 La linea di collegamento verticale singola indica un costrutto OR.
L'elaborazione avviene come mostrato di seguito, dove P_IN e P_OUT rappresentano rispettivamente il valore booleano all'ingresso (punto di suddivisione) e all'uscita (punto di giunzione) della derivazione parallela.
P_IN := b1 AND b2;
IF ((P_IN AND cond1) AND (cond2 OR cond3)) THEN
P_OUT := P_IN;
ELSE
x1(IN := P_IN, PT := {p 10}t#2s);
tElapsed := x1.ET;
P_OUT := x1.Q;
END_IF
bRes := P_OUT AND b3;
Le immagini che seguono mostrano il flusso di dati (di colore blu) nel caso in cui il blocco funzione venga eseguito (condizione risultante da cond1, cond2 e cond3 con valore FALSE) oppure omesso (condizione TRUE).
Con condizione FALSE, il blocco funzione venga eseguito:
Con condizione TRUE, il blocco funzione viene omesso: