Sterowanie sekwencyjne

Blok funkcyjny sterowania sekwencyjnego umożliwia programowanie sekwencji funkcji w formie tekstowej.
W ten sposób można zautomatyzować różne procesy, które wymagają sterowania sekwencyjnego.

Blok funkcyjny może uprościć te procesy, które często wymagają kilku konwencjonalnych bloków funkcyjnych ze złożonym programowaniem.

Poszczególne kroki są programowane linia po linii, grupa linii, która wykonuje określoną funkcję, nazywana jest sekwencją.

Spis treści


Wejścia

Skrót Krótki opis Opis Zakres wartości
S1-8 Activate sequence 1-8 -
AI1-8 Inputs 1-8 -
S Select sequence 0...8
Off Off Impuls: Wyjścia są resetowane / wyłączane.
Włączone: Blok jest zablokowany.
Dominujące wejście.
0/1




Wyjścia

Skrót Krótki opis Opis Zakres wartości
AQ1-8 Outputs 1-8 -
S Current active sequence
L Current program line
TQ Text output Wyjście może być wykorzystywane przez sekwencje. -
AC API Connector Inteligentny connector oparty na interfejsie API. -




Właściwości

Krótki opis Opis Zakres wartości Wartość standardowa
Konfiguracja Edytor kodu programu - -
Interwał[ms] Interwał, w którym wykonywane są wiersze programu. Niskie wartości mogą wpływać na obciążenie procesora. 20...1000 500




Przykład zastosowania

Poniższy przykład przedstawia prostą aplikację do ogrzewania wody użytkowej, w której dwa zasobniki ciepłej wody są kolejno ogrzewane przez centralną grzałkę.

Na wejścia bloku funkcyjnego podawane są temperatury podgrzewacza, dwóch zbiorników ciepłej wody oraz wartość zadana temperatury ciepłej wody.
Sekwencja 1 jest uruchamiana za pomocą wejścia (S1), w tym przykładzie impulsem o określonej godzinie.
Grzejnik, pompy i zawory są sterowane za pomocą wyjść:

Kliknij dwukrotnie blok funkcyjny, aby otworzyć okno programowania.
Biblioteka po lewej stronie okna zawiera listę dostępnych wejść, wyjść, poleceń i zmiennych.
Dwukrotne kliknięcie jednego z obiektów wstawią go do okna edytora po prawej stronie, gdzie można go dalej dostosować:

Każda linia musi zaczynać się od polecenia, jak widać w powyższym przykładzie.
Zielone komentarze nie są wymagane do działania sekwencji, ale pozwalają na udokumentowanie poszczególnych kroków.

Uwaga: Ten przykład ma na celu przedstawienie przeglądu bloku funkcyjnego i jego funkcjonalności. Może być zastosowany do konkretnego zastosowania tylko w ograniczonym zakresie.


Opis działania

Sekwencje są wykonywane linia po linii w regulowanym odstępie czasu. Określone sekcje można pominąć za pomocą warunków lub opóźnić za pomocą poleceń czasowych.
Możliwe jest tworzenie wielu sekwencji, każda sekwencja może być uruchamiana indywidualnie lub przełączana za pomocą polecenia.

Blok funkcyjny zawiera również kontrolę składni, która podkreśla błędy składni podczas edycji sekwencji. Nieprawidłowe lub puste wiersze są pomijane, gdy sekwencja jest uruchomiona.

Wiersz programowania zawsze zaczyna się od żądanej funkcji, po której następują wymagane parametry i operatory, każdy oddzielony spacją.

Wejścia i wyjścia określone w bibliotece bloku mogą być ustawiane lub sprawdzane.
Jeżeli wejście jest połączone z logiką, obowiązuje ostatnia ustawiona wartość. Zmiany na wejściu zastępują wartość ustawioną przez sekwencję.

Polecenia obsługiwane przez blok funkcyjny Wzór mogą być używane do ustawiania i porównywania wyjść (np. SET AQ1 = AI2 * 3).


Operatory, wejścia/wyjścia (IO) i zmienne

Dostępne operatory to =, >=, >, <=, <, !=

Dostępne wejścia: (AI1 - 8). Nazwy wejść można dostosować w oknie dialogowym.

Dostępne wyjścia: (AQ1 - 8). Nazwy wyjść można dostosować w oknie dialogowym.

Zmienne: wartość1 - wartość5. Nazwy zmiennych można dostosować w oknie dialogowym.
Zmienne są używane do przetwarzania wartości, które nie są dostępne w operacjach we/wy. Mogą być ustawiane jak IO, używane w obliczeniach lub jako pamięć.


Polecenia

Sleep
Czekaj przez określony czas
Składnia: sleep [wartość] [s: sekundy, m: minuty]
Przykłady:
sleep 300 s (czeka 300 sekund, następnie przechodzi do następnej linii)
sleep 10 m (czeka 10 minut, następnie przechodzi do następnej linii)

Waitcondition
Oczekiwanie na spełnienie warunku
Składnia: waitcondition [IO] [operator] [wartość]
Przykłady:
waitcondition AI1 > AQ1 (czeka, aż AI1 będzie większe niż AQ1, a następnie przechodzi do następnej linii)
waitcondition AI1 + 3 > wartość1 (czeka, aż AI1 + 3 będzie większe niż zmienna wartość1, następnie przechodzi do następnej linii)

Set
Ustawia wejście, wyjście lub zmienną na wartość
Składnia: set [IO] = [wartość]
Przykłady:
set AQ1 = AI1 - AI2 (odejmuje AI2 od AI1 i wyprowadza wynik na AQ1)
set wartość1 = AI2 + AI3 (dodaje AI2 i AI3 i ustawia zmienną wartość1 do wyniku)

Setpulse
Impulsuje wejście lub wyjście
Składnia: setpulse [IO]
Przykłady:
setpulse AQ1 (zapewnia krótki impuls do AQ1 )
setpulse AI2 = 4 (daje krótki impuls o wartości 4 na AI2)

Startsequence
Rozpoczyna określoną sekwencję
Składnia: startsequence [numer] lub startsequence [nazwa sekwencji]
Przykłady:
startsequence 2 ( rozpoczyna drugą sekwencję)
startsequence Alarm (rozpoczyna sekwencję o nazwie “Alarm”)

Return
Jeżeli bieżąca sekwencja została rozpoczęta przez inną sekwencję z [startsequence], to polecenie powraca do sekwencji wywołującej i przechodzi do następnej linii
Składnia: return

Goto
Przejdź do określonej linii
Składnia: goto [wartość]
Przykłady:
goto 1 (rozpoczyna sekwencję od początku)
goto 23 (przeskakuje do linii 23 i stamtąd kontynuuje)

If
"Jeżeli" sprawdza najpierw, czy warunek jest spełniony. Tylko jeśli warunek jest spełniony, wykonywane są kolejne polecenia aż do „endif”.
Składnia: if [lewy termin] [operator] [prawy termin] ... endif
Przykład:
If AQ3 >= 4
set AQ1 = AQ3
endif

Komentarze i teksty

Comment
Dodaj komentarz do bieżącego wiersza lub wyłącz resztę wiersza
Składnia: //
Przykłady:
waitcondition AI2 > AI4 // czekaj, aż AI2 będzie większe niż AI4 (komentarz służy do opisu linii)
//waitcondition AI2 >gt; AI4 (ukośniki w komentarzach są używane na początku do wyłączenia całej linii)

Wyjście tekstowe TQ
Znaki w cudzysłowie są wyprowadzane jako tekst, w przeciwnym razie są obsługiwane jak wartości analogowe
Składnia: set TQ = "..."
Przykłady:
[set TQ = AQ2] wypisze "27,5"
[set TQ = "Wartość AQ2 to" AQ2] wypisze "Wartość AQ2 to 27,5"