Normalna praca sterownika PLC polega na cyklicznym wykonywaniu: odczytu wejść, sekwencji kolejnych rozkazów składających się na program oraz ustawieniu wyjść.
Wyobraź sobie taki ciąg rozkazów umieszczony w OB1:
1. A = 1
2. B = 2
3. CALL FC1
4. B = 1
5. A = 2
6. CALL FC1
Wewnątrz FC1 zawsze zmienna A <> B. Podprogram (FC1) jest wykonywany tylko w momencie określonym przez programistę, tj. w pkt. 3 i pkt. 6, tzn. "synchronicznie" z wykonaniem programu.
Jeśli zaimplementujesz blok obsługi przerwania (wszystko jedno jakiego, time delay/cyclic/hardware) to może on być wykonany w dowolnym momencie cyklu, po wykonaniu dowolnej instrukcji programu. Wynika to z przyczyn zewnętrznych - upływu czasu lub sygnału na dedykowanym wejściu modułu I/O. Programista nie ma wpływu na moment rozpoczęcia obsługi przerwania. To jest "asynchronicznie".
W czasie wykonywania bloku przerwania mogą dziać się "dziwne" rzeczy, np. dla programu powyżej może się zdarzyć że A = B - gdy przerwanie wystąpi pomiędzy krokiem 4 i 5. Dlatego programowanie przerwań jest trudne. Program może działać "poprawnie" podczas testów, a po kilku godzinach/dniach/tygodniach przerwanie wystąpi akurat w takiej chwili, że ujawni się błąd w programie.
elektronikq napisał: Właśnie zaczynam się bawić tymi przerwaniami bo chcę podłączyć silnik krokowy. I ktoś mi mówi, że silnik krokowy "to tylko z przerwaniami" ale co i dlaczego to już nie potrafił odpowiedzieć.
Może załóż nowy temat, opisz co i jak chcesz podłączyć i jak tym sterować. Zacznij od napisania normalnego programu w OB1 i zobacz czy jego działanie jest zadowalające.