Wprowadzenie
W poniższej instrukcji przedstawione zostanie zestawienie wszystkich typów zmiennych, które mogą być wykorzystane w programach sterowników Saia. Opisane zostaną również możliwości użycia oraz dostępny zakres adresowy zmiennych.
Programy sterowników zawierają wiele instrukcji mających na celu odczyt i zapis parametrów. Zasoby zmiennych sterownika umożliwiają jego komunikację ze światem zewnętrznym.
Zasoby zmiennych
Wejścia/wyjścia cyfrowe i analogowe
Wejścia i wyjścia cyfrowe reprezentują wartości binarne (1 bit). Wejścia obrazują stany przełączników, przycisków, sensorów, itp. Wyjścia cyfrowe mogą aktywować np. zawory, lampki, silniki, itp. Sygnały analogowe mogą przyjmować dowolne wartości z ciągłego przedziału.
Zarządzanie wejściami i wyjściami przez sterownik możliwe jest, w zależności od modelu, poprzez:
- wejścia/wyjścia zabudowane na płycie głównej sterownika,
- moduły wejść/wyjść umieszczane w slotach sterownika.
Adresy wejść/wyjść są stałe i zostały zdefiniowane przez producenta. Dokumentacja każdego ze sterowników zawiera szczegółowy ich opis. Dla przykładu: Moduły adresowane są od 0. Dla każdego z modułów sterownik rezerwuje 16 kolejnych adresów. Początkowy adres modułu jest stały i zależy od numeru slotu w którym został umieszczony (numer slotu*16).
Zasoby wewnętrzne
Flagi
Flaga przechowuje pojedynczy bit danych (0 lub 1). Flagi są domyślnie ustawione na wartość non-volatile (nieulotne). Oznacza to, że jeżeli przy wyłączeniu sterownika wartość flagi będzie wynosić 1, to po jego ponownym włączeniu ten stan nie ulegnie zmianie (warunkiem jest sprawność baterii sterownika). Wszystkie flagi z ustawioną wartością volatile (ulotne) przyjmują wartość 0 gdy sterownik jest wyłączony. Liczba nieulotnych flag jest zdefiniowana w karcie Build Options drzewa projektu PG5. Można tam definiować liczbę dostępnych flag, a także określić parametry adresowania dynamicznego:
Proste użycie flagi przedstawiono na rys. 4. Flaga F 20 osiąga wartość 1 gdy wystąpi stan wysoki na wejściu I1 oraz I2:
Rejestry
Rejestry mogą przechowywać 32-bitowe zmienne ze znakiem lub liczby zmiennoprzecinkowe. Są one często używane do operacji matematycznych, np. do zarządzania wartościami analogowymi procesu. Wszystkie rejestry są typu non-volatie (nieulotne), co oznacza, że ich wartości są zachowywane przy wystąpieniu zaniku napięcia.
Edytor Fupla rozróżnia typy zmiennych przechowywanych przez rejestry za poprzez różne kolory połączeń: linie żółte odpowiadają wartościom zmiennoprzecinkowym (Floating point), natomiast linie zielone liczbom całkowitym (Integer). Zmienna typu całkowitego nie może być bezpośrednio połączona z rejestrem przechowującym wartość zmiennoprzecinkową – jedna z wartości musi być najpierw przekonwertowana.
Przykład użycia:
Poniższy przykład obrazuje dodawanie liczby do wartości w rejestrze R5. Wynik dodawania przechowywany jest w rejestrze R6:
Stałe
Stałe są wartościami, które mogą być wprowadzane bezpośrednio lub też przechowywane w pamięci. Mogą one przyjmować wartości całkowite lub zmiennoprzecinkowe. Liczniki i timery przechowują jedynie wartości całkowite bez znaku, np. 0…2, 256, 485, itp.
Przykład użycia:
W poniższym przykładzie do rejestru R10 przypisywana jest stała wartość 10, która następnie dzielona jest przez wartość zmiennoprzecinkową (0.25). Z racji tego, że rejestr R10 przechowuje wartość całkowitą, przed wykonaniem działania musi być on przekonwertowany na wartość zmiennoprzecinkową. Następuje przypisanie wartości działania do rejestru R11, który z kolei konwertowany jest na wartość typu całkowitego (rejestr R12):
W oknie Symbol Editor istnieje możliwość zdefiniowania dwóch typów stałych: K oraz Const:
Różnice pomiędzy typami wynikają z zakresów ich stosowania. Stałe typu K mogą przechowywać wartości max. 14-bitowe bez znaku. Symbole typu const stosowane są do przechowywania wartości 32-bitowych ze znakiem.
Liczniki i Timery
Liczniki i timery mogą przechowywać wartości od 0 do 2147483648 (31 bitów). Posiadają one ten sam zakres adresowy: od 0 do 1599. Liczba komponentów definiowana jest w karcie Build Options (rys. 8). Stała czasowa timerów jest domyślnie zdefiniowana jako 100ms, co oznacza, że wartość przechowywana w timerze jest zmniejszana o 1 co każde 100ms.
Liczniki i timery mogą przechowywać jedynie całkowite wartości dodatnie. Zmienne w timerach mogą być jedynie zmniejszane, natomiast w licznikach mogą być one zarówno zmniejszane jak i zwiększane.
Uwaga:
Im więcej zadeklarowanych timerów, tym większe obciążenie pamięci sterownika. Taka sytuacja występuje także przy zmniejszaniu stałej czasowej komponentów.
Przykład użycia:
Wartość przechowywana w liczniku zostaje zwiększona za każdym razem, gdy wejście I3 osiągnie stan wysoki oraz zostaje zmniejszona, gdy wejście I4 przyjmie wartość 1. Liczenie wywoływane jest przez zbocze narastające wejść. Zerowanie licznika realizowane jest przez zbocze narastające na wejściu I5. Wartość inicjalizacyjną ustawiono jako 3:
Łańcuchy znaków i bloki danych
Łańcuchy znaków i bloki danych (Data Blocks DB – tablice wartości 32-bitowych) są zmiennymi nieulotnymi. Teksty są używane np. jako powiadomienia na wyświetlaczach, linie poleceń, itp. Bloki danych znajdują zastosowanie w zapisie danych. Łańcuchy tekstowe i bloki danych posiadają ten sam zakres adresowy. Jeżeli zdefiniowano łańcuch Text1, to niemożliwe jest stworzenie bloku DB1. Podstawowa pamięć programu przewiduje deklarowanie max. 4000 łańcuchów. Maksymalna liczba łańcuchów i bloków danych zależy od sterownika:
Typ sterownika | Max. liczba łańcuchów / bloków danych |
PCD1 | 5000 (0..4999) |
PCD2 | 6000 (0..5999) |
PCD2.M480, PCD3 | 8192 (0..8191) |
Przykład:
Definiowanie zmiennej tekstowej o oknie Symbol Editor:
W oknie Symbol Editor istnieje także możliwość zdefiniowania zmiennych typu TEXT RAM i DB RAM. Różnią się one od wcześniej omówionych symboli typu TEXT i DB możliwością ich nadpisywania, a także zakresem adresowym. Szczegóły dotyczące zakresów adresowania widoczne są w karcie Build Options drzewa projektu PG5.
Parametr First writeable Text/DB numer określa początkowy numer zmiennej typu Text/DB, która może być nadpisywana (domyślne ustawienie to 4000). Oznacza to, że symbole z adresami poniżej tego numeru będą zmiennymi tylko do odczytu. Jeżeli chcemy, by wszystkie zmiennej Text/DB mogły być nadpisywane, należy ustawić wartość parametru na 0.