Promotic

Sequencer - karta obiektu PmaSequencer

Opis:
Karta służy do ustawienia podstawowych parametrów obiektu PmaSequencer.
Konfiguratory:
Maksymalna ilość elementówMaksymalna ilość elementów, które mogą jednocześnie czekać w obiekcie PmaSequencer.
Konfigurator ten stawia wartość początkową właściwości MaxSize.
Wartość -1 przedstawia nieograniczoną ilość elementów. Ograniczenie jest wskazane by zapobiec stworzeniu błędów projektanckich, kiedy to ilość czekających pozycji mógł rosnąć ponad wszelkie limity.
Typ uruchamiania elementówSens timeouta. Timeout określa się w metodzie Add.
0 = pozycje są uruchamiane niezależnie, każdy według swego timeouta - To znaczy, że timeout jest okresem pomiędzy wprowadzeniem pozycji (przy pomocy metody Add) a jego uruchomieniem (zdarzeniem onStep).
1 = pozycje są uruchamiane stopniowo, timeout jest opóźnieniem pomiędzy nimi - To znaczy, że timeout jest okresem pomiędzy zwolnieniem poprzedniej pozycji oraz uruchomieniem następnej pozycji.
Jeżeli przy wywołaniu metody Add w obiekcie nie znajduje się żadena czekająay pozycja a ostatnia pozycja była uruchomiona przed dłuższym czasem niż timeout, wtedy zostanie ten nowy pozycja uruchomiony natychmiast.
Zastosowany wątek (thread)Określa wątek (thread), w którym zostanie uruchomiony skrypt zdarzenia onStep. Opcja "nowy wątek roboczy" oznacza, że dany obiekt PmaSequencer po uruchomieniu aplikacji wytworzy sobie nowy wątek o określonym pryorytecie. Patrz również: Jak uruchamiać skrypty w innym wątku (threadu).
Main = główny wątek aplikacji, w którym domyślnie są uruchamioane również inne skrypty
Normal = nowy wątek roboczy o normalnym pryorytecie
BelowNormal = nowy wątek roboczy o niższym pryorytecie
AboveNormal = nowy wątek roboczy o wyższym pryorytecie.
Timeout podczas zatrzymywania przed zakończeniem wątku roboczego [s]Ważne tylko dla nowego wątku roboczego! Limit czasu (timeout), w którym system podczas zatrzymywania aplikacji czeka na zakończenie aktualnie uruchomionej pozycji, po którym dojdzie do twardego wyłączenia wątku roboczego (twarde wyłączenie jest wszak niebezpieczne oraz niepożądane). Jeżeli akurat nie jest wykonywana żadna pozycja, lub pozycja została poprawnie zakończona w określonym limicie czasu, wtedy wątek roboczy zostanie poprawnie zakończony (ewentualne czekające pozycje w kolejce zostaną pominięte). Wątek roboczy można podczas zamykania aplikacji zatrzymać prawidłowo (bezpiecznie) tylko jeżeli w danej chwili nie jest wykonywana żadna pozycja. Jeżeli w danej chwili jest wykonywana, wtedy jest konieczne chwilę poczekać na jej zakończenie. By nie czekać zbyt długo (jeżeli doszło do nieoczekiwanie długiego wykonywania pozycji) istnieje limit czasu, w którym system odczeka zanim twardo zakończy wątek roboczy.
Uwaga! W normalnych okolicznościach, projektant powinien zapewnić, żeby nie dochodziło do wymuszonego zakończenia pracy (wątku roboczego). Można to osiągnąć w prosty sposób przez ustawienie wystarczająco dużego limitu nawet dla najdłuższego wymogu. Czasochłonne wymogi można często skrócić tak, że podczas zatrzymania aplikacji zostanie ustawiona globalna zmienna użytkownika, wskazujący zatrzymywanie aplikacji. Podczas przetwarzania wymogu należy testować tą zmienną a w przypadku wykrycia zatrzymywania aplikacji należy przedwcześnie zakończyć wymóg nawet jeżeli nie zostanie wykonany do końca. Jest to bardzo przydatne podczas długich iteracyjnych obliczeń lub przetwarzania poszczególnych elementów dużego pakietu danych.
Do wprowadzenia można zastosować Makro wyrażenie (wartość jest obliczana po uruchomieniu aplikacji).
Notatka:
Uwaga! Jeżeli zostanie użyty inny wątek (thread), wtedy dostęp do pozostałych obiektów w skrypcie przebiega w innym niż w wątku głównym i jest konieczne brać pod uwagę ewentualne problemy synchronizacji przy odczycie i zapisie do Pma obiektów. Opcja ta jest stosowna zwłaszcza do czasochłonnych czynności obliczeniowych wykonywanych w tle.

Historia:
Pm9.00.21: W konfiguratorze "Timeout podczas zatrzymywania przed zakończeniem wątku roboczego [s]" można do wprowadzania wartości wykorzystać makro wyrażenie.
© MICROSYS, spol. s r.o.