< Wróć do bazy wiedzy

Jakie są wartości wyjściowe z bloków funkcyjnych, które są wyłączone?

 

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ą:

Przykład złego połączenia wyjść bloków funkcyjnych

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):

Wyjścia z bloków funkcyjnych

 

Nasz serwis wykorzystuje pliki cookies. Korzystając z witryny wyrażasz zgodę na ich zapis lub wykorzystanie. Zgoda na wykorzystanie plików cookies jest jednoznaczna z zapoznaniem się i przyjęciem treści polityki cookies.
Akceptuję