Który z przedstawionych programów, zapisanych w języku FBD, realizuje zależność logiczną zapisaną równaniem \(Y = \overline{X1} \vee \overline{X2} \vee X3\)?
A. Program 2.

B. Program 4.

C. Program 3.

D. Program 1.

Pytanie z egzaminu CKE, styczeń 2022 (arkusz EE.21-SG-22.01).
Program 4 jest właściwy, bo realizuje dokładnie zależność $Y=\overline{X1}\vee\overline{X2}\vee X3$. W języku FBD trzeba patrzeć nie tylko na sam blok OR, ale też na to, które sygnały są zanegowane przed wejściem do bloku. W tym równaniu X1 i X2 mają kreskę nad nazwą, czyli do dalszej części programu trafiają jako wartości przeciwne: gdy X1 = 0, to ¬X1 = 1, i tak samo dla X2. Sygnał X3 wchodzi bez negacji, czyli jego stan jest brany normalnie. Wyjście Y będzie więc aktywne, jeżeli X1 jest nieaktywne albo X2 jest nieaktywne albo X3 jest aktywne. W praktyce PLC taki zapis spotyka się np. przy warunkach zezwolenia, blokadach bezpieczeństwa czy prostych sygnałach alarmowych: wystarczy spełnienie jednego z warunków, aby ustawić wyjście. Moim zdaniem najłatwiej sprawdzać takie zadania od końca: najpierw rozpoznać bramkę końcową, potem zobaczyć, gdzie są negacje. To jest zgodne z dobrą praktyką czytania schematów FBD według IEC 61131-3, gdzie funkcję programu analizuje się po przepływie sygnału od wejść do wyjścia.
W tym zadaniu łatwo pomylić się przez samo oznaczenie programów, bo poprawna odpowiedź to Program 4, ale na liście odpowiedzi znajduje się pod numerem 3. Ważniejsza jest jednak analiza logiczna, a nie numer klikanej opcji. Równanie $Y=\overline{X1}\vee\overline{X2}\vee X3$ oznacza sumę logiczną trzech warunków: zanegowanego X1, zanegowanego X2 oraz niezanegowanego X3. Jeżeli wybrany schemat FBD neguje X3, nie neguje X1 lub X2, albo używa bloku AND zamiast OR w głównym połączeniu, to realizuje już inną funkcję. To nie jest drobna kosmetyka, bo w sterowniku PLC jedna źle postawiona negacja może całkowicie zmienić działanie maszyny, na przykład zamiast zezwolenia może powstać blokada. Typowy błąd myślowy polega na patrzeniu tylko na bramkę końcową i ignorowaniu małych kółek negacji albo bloków NOT przy wejściach. Drugi częsty błąd to traktowanie wyrażenia z kreską nad X1 i X2 tak, jakby negacja obejmowała całą sumę, a tak nie jest. Negacja dotyczy tylko tych konkretnych zmiennych. W FBD trzeba czytać schemat bardzo metodycznie: od wejść X1, X2, X3, przez ewentualne bloki NOT, aż do bramki OR i wyjścia Y. Z mojego doświadczenia to najlepszy sposób, bo zgadywanie po wyglądzie programu często prowadzi do wyboru schematu podobnego, ale logicznie niepoprawnego.