Działanie programu - kolejność wykonywania bloków funkcyjnych


Program w Simultus wykonywany jest cyklicznie. Kolejność realizacji bloków funkcyjnych zależy od ich wzajemnych połączeń oraz – w przypadku bloków niezależnych – od ich położenia na diagramie. W trybie pracy z emulatorem sterownika program podzielony jest na sekcje STARTUP (wykonywana jednokrotnie po uruchomieniu RUN), CONTROL oraz PLC (wykonywane cyklicznie). W trybie bez emulatora wykonywana jest wyłącznie sekcja symulacyjna (SIM), bez faz sprzętowych I/O. Czas trwania cyklu określany jest w ustawieniach symulacji (Settings → Simulation).

W obszarze diagramu bloków funkcyjnych znajduje się program działania symulacji oraz sterownika. Program tworzony jest przy pomocy bloków funkcyjnych połączonych ze sobą liniami reprezentującymi wymianę informacji między blokami. Bardzo ważnym jest zapoznanie się z zasadami tworzenie programu, gdyż od znajomości tego zagadnienia zależy prawidłowe działanie stworzonego programu.

 

UWAGA: Nieprawidłowo napisany program może się przyczynić do nieoczekiwanego lub nieprzewidzianego zachowania się sterownika, co może spowodować niebezpieczny wypadek!!! Należy zapoznać się z poniższymi zasadami tworzenia programów przy pomocy bloków funkcyjnych w programie narzędziowym Simultus.

 

Bloki funkcyjne są przez kompilator podzielone na dwie grupy: A i B. Grupa A to bloki, których kolejność zależy od połączeń między blokami. Grupa B to bloki, które nie mają wyjść lub ich wyjścia nie są podłączone. Kolejność wykonywania tych bloków zalezy od ich położenia na diagramie. Najpierw są wykonywane bloki, które są położone wyżej. Jeżeli bloki tej grupy znajdują się na tym samym poziomie diagramu to kolejność ich wykonania zależy od odległości od lewej strony zgodnie z poniższym rysunkiem:

 


Ilustracja pokazuje dwa różne mechanizmy ustalania kolejności wykonywania bloków, ale z punktu widzenia projektanta najważniejsze są ich konsekwencje praktyczne.

1️⃣ Bloki zależne od połączeń (grupa A)

W przypadku bloków, których wyjścia są podłączone do wejść innych bloków, program tworzy rzeczywistą zależność logiczną. Oznacza to, że:

To sprawia, że diagram staje się nie tylko schematem logicznym, ale również mechanizmem sterującym kolejnością przetwarzania.


2️⃣ Bloki niezależne (grupa B)

Bloki bez połączeń wyjściowych do innych bloków nie tworzą łańcucha zależności. W ich przypadku program nie ma „wskazówek logicznych”, dlatego stosuje porządek geometryczny.

W praktyce oznacza to, że:


3️⃣ Znaczenie dla projektowania większych programów

W większych projektach mieszane występowanie bloków zależnych i niezależnych może powodować:

Dlatego w praktyce zaleca się:


4️⃣ Wniosek projektowy

Ilustracja pokazuje, że w Simultus:

To istotne przy modelowaniu procesów dynamicznych, liczników, timerów oraz operacji na wspólnych rejestrach.


kolejność reazlizacji bloków można sprawdzić zaznaczając przycisk '123...' w menu 'program':



Przycisk wyświetla kolejność wykonywania bloków funkcyjnych po kompilacji programu, zgodnie z zasadami opisanymi w tym rozdziale.


Czas cyklu symulacji ustawiany jest w zakładce 'Ustawienia' pod przyciskiem 'Symulacja':



W okienku dialogowym 'simulation settings' można ustawić tryb czasu rzeczywistego oraz czas odstępu między kolejnymi cyklami (okres):



Czas rzeczywisty oznacza, że każdy cykl jest uruchamiany co określony okres czasu (ustawiany w powyższym okienku dialogowym w mikrosekundach).

Brak zaznaczenia czasu rzeczywistego oznacza, że kolejny cykl rozpocznie się zaraz po zakończeniu poprzedniego. W tej sytuacji symulacja będzie działała najszybciej jak może na danym komputerze. 

 

Okno „Simulation settings” definiuje sposób pracy środowiska symulacyjnego Simultus. Ustawienia te mają bezpośredni wpływ na długość cyklu wykonywania programu, jego powtarzalność oraz zachowanie bloków skryptowych.


1️⃣ Simulation period

Real time

Opcja ta powoduje próbę wykonywania symulacji w czasie rzeczywistym.
Należy jednak zwrócić uwagę na ostrzeżenie widoczne w oknie:

Włączenie trybu real time nie gwarantuje pracy w czasie rzeczywistym.

System operacyjny może:

Symulacja nie jest systemem czasu rzeczywistego klasy RTOS.


Period [µs]

Parametr ten określa nominalny czas jednego cyklu symulacji.

Przykład:

Jeżeli wykonanie bloków trwa krócej niż ustawiony okres:

Jeżeli wykonanie trwa dłużej:

To ustawienie bezpośrednio definiuje tempo działania symulowanego sterownika.


2️⃣ Simulation timeout

Stop the simulation after time

Pozwala zatrzymać symulację po określonym czasie (w mikrosekundach).

Jest to przydatne przy:


Stop the emulator

Zatrzymuje emulator po osiągnięciu warunku zakończenia symulacji.


3️⃣ LUA – obsługa skryptów

Stop simulation on script error

W przypadku błędu w bloku skryptowym (LUA) symulacja zostaje zatrzymana.

Zalecane ustawienie przy testowaniu nowych bloków skryptowych, aby uniknąć:


Scripts execution timeouts

Określają maksymalny czas wykonywania:

Podane wartości (w µs) zabezpieczają symulację przed zawieszeniem spowodowanym:

Jeżeli czas zostanie przekroczony — wykonywanie zostanie przerwane.

To ważny mechanizm bezpieczeństwa symulacji.


4️⃣ Modbus

Sekcja ta określa tryb komunikacji Modbus TCP/IP.

Dostępne opcje:

Adres IP (np. 127.0.0.1) wskazuje lokalny host.

To ustawienie ma znaczenie przy:


Znaczenie tych ustawień dla rozdziału o cyklu wykonywania

Najważniejszy parametr z punktu widzenia kolejności i czasu wykonania bloków to:

Simulation period

To on definiuje:

Diagram cyklu wykonywania programu należy interpretować w kontekście tego parametru.


Wniosek inżynierski

Okno „Simulation settings” nie jest jedynie konfiguracją symulacji — definiuje ono:

Ustawienia te powinny być świadomie dobrane w zależności od:


 

Cykl wykonywania programu bez emulatora sterownika

1️⃣ Kontekst pracy bez emulatora

Gdy nie jest używany wewnętrzny emulator sterownika PLC (blok funkcyjny 4S2A) - to jest najczęśtszy przypadek, Simultus działa wyłącznie jako:

W tym trybie:

Wszystkie zmienne mają charakter wewnętrzny (logicznymodelowy).


2️⃣ Charakter wykonywanych zmiennych

W trybie bez emulatora operujemy wyłącznie na:

Zmienne te nie reprezentują fizycznych sygnałów sprzętowych, lecz stan modelu.


3️⃣ Uproszczony cykl symulacyjny (bez emulatora)

Model cyklu wygląda następująco:

Start symulacji


Wykonanie bloków funkcyjnych
(kolejność zależna od:
1) połączeń logicznych,
2) położenia bloków na diagramie)

Aktualizacja zmiennych wewnętrznych

Bezczynność do końca okresu symulacji

Następny cykl symulacji
 

Nie występuje tu:

❌ odczyt wejść X
❌ zapis wyjść Y
❌ synchronizacja z fizycznym sprzętem


4️⃣ Brak faz sprzętowych

W trybie bez emulatora nie istnieją:

Każdy cykl jest czysto obliczeniowy i dotyczy wyłącznie logiki modelu.


5️⃣ Brak inicjalizacji sprzętowej

Nie istnieje również:

Jeżeli program wymaga zachowania jednorazowego startu (np. ustawienia wartości początkowych), musi to być jawnie zaimplementowane w logice programu (np. marker inicjalizacji).


6️⃣ Zależność od czasu symulacji

Jedynym elementem czasowym determinującym cykl jest:

Settings → Simulation → Simulation period

Parametr ten określa:


7️⃣ Praca z zewnętrznym sterownikiem PLC (dla porządku)

Jeżeli Simultus współpracuje z zewnętrznym, fizycznym sterownikiem PLC (np. FATEK, TRIO lub innych poprzez MODBUS):

Diagram cyklu Simultusa nie opisuje wtedy cyklu PLC, a jedynie cykl symulacyjno-komunikacyjny.


Podczas działania symulacji istnieje możliwość sprawdzenia rzeczywistego czasu trwania poprzedniego cyklu poprzez wykorzystanie bloku funkcyjnego SYS_DATA z zakładki 'Timery i liczniki':





Sugerujemy zapoznanie się z podrozdziałem Okno główne programu, w którym znaduje się opis najważniejszych elementów menu.
 

Różnice między sekcjami CONTROL i PLC

W trybie pracy z emulatorem sterownika program wykonywany jest cyklicznie w dwóch głównych sekcjach: CONTROL oraz PLC.

Obie sekcje są funkcjonalnie identyczne — mogą zawierać te same bloki funkcyjne, operacje logiczne, matematyczne, timery, liczniki czy skrypty. Nie różnią się typem dostępnych elementów.

Różnica dotyczy kolejności wykonania i stabilności czasowej.


1️⃣ Sekcja CONTROL

Znaczenie praktyczne

Jeżeli dana część algorytmu:

należy ją umieścić w sekcji CONTROL.

Sekcja ta stanowi czasowo najbardziej deterministyczną część programu.


2️⃣ Sekcja PLC

Znaczenie praktyczne

Sekcja PLC nadaje się do:


3️⃣ Kluczowa różnica

Cecha CONTROL PLC
Zawartość bloków Dowolna Dowolna
Kolejność w cyklu Pierwsza Druga
Stabilność startu Najbardziej stabilna Zależna od CONTROL
Zalecane użycie Logika wymagająca stałego cyklu Logika mniej wrażliwa czasowo

4️⃣ Wniosek projektowy

Jeżeli jakaś funkcjonalność:

należy umieścić ją w sekcji CONTROL.

Sekcja PLC jest wykonywana później, dlatego jej moment startu jest przesunięty o czas potrzebny na realizację sekcji CONTROL.


5️⃣ Uwaga

Podział ten ma znaczenie wyłącznie w trybie pracy z emulatorem sterownika.
W trybie bez emulatora nie występuje rozdział na CONTROL i PLC.