Bardzo często jedno z wejść bloku funkcyjnego odpowiada za załączenie tego bloku (najczęściej są one oznaczone etykietą „En”). Gdy na to wejście podana jest wartość 1, blok realizuje swoje funkcje i wystawia na wyjścia odpowiednie wartości.
Gdy wejście to ma wartość 0, blok nie pracuje. To, jakie wartości wychodzą wtedy z wyjść bloku funkcyjnego (są wpisywane do podpiętych zmiennych) zależy od implementacji danego bloku funkcyjnego. Najczęściej jest to jedno z poniższych podejść:
– wyjścia są zerowane
– wyjścia są nadpisywane ostatnią wartością z okresu pracy bloku
– wyjścia w ogóle nie są nadpisywane
Wiedza jak zachowują się wyjścia wyłączonego bloku funkcyjnego jest bardzo ważna i programista powinien sprawdzić jak dany blok się zachowuje. Błędne zrozumienie tego zachowania może doprowadzić do błędów w programie i nieprzewidzianego zachowania. Zazwyczaj informacja o tym, co ustawiane jest na wyjściach podczas gdy blok jest wyłączony znajduje się w pomocy do danego bloku funkcyjnego. W pozostałych przypadkach dobrą praktyką jest przetestowanie jak blok zachowuje się, gdy jest wyłączony.
Przykład złego zrozumienia wartości wyjściowych z wyłączonych bloków:
W programie znajdują się dwa bloki PID (mogą to być też przykładowo blok PID i PI). Zgodnie z zamysłem programisty tylko jeden z tych bloków pracuje w tym samym momencie. Wyjścia obu bloków połączone są z tą samą zmienną:
Blok PID charakteryzuje się tym, że gdy jest wyłączony, na wyjście podawana jest wartość 0. Skutkuje to tym, że:
– gdy załączony jest drugi blok – układ działa poprawnie, w zmiennej pid_y znajduje się wartość z drugiego bloku PID,
– gdy załączony jest pierwszy blok – w zmiennej pid_y zawsze znajduje się wartość 0, gdyż taka jest ustawiana na wyjściu drugiego bloku (Zobacz też: [xyz-ihs snippet=”obrazekfaq”] W jakiej kolejności przetwarzane są bloki funkcyjne na stronie Fupla?)
Mając świadomość powyższego zachowania rozwiązaniem może być zastosowanie dodatkowego bloku Multipleksera (po sprawdzeniu jak zachowuje się on, gdy np. żadna z flag sterujących nie jest załączona):