< Wróć do bazy wiedzy

Jakie są zasoby zmiennych w sterownikach Saia?

 

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:

Ustawienia ulotnych i nieulotnych flag w karcie Build Options

Ustawienia ulotnych i nieulotnych flag w karcie Build Options

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:

Flaga w programie sterownika

Flaga w programie sterownika

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:

Prosty przykład obrazujący działanie rejestrów

Prosty przykład obrazujący działanie rejestrów

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):

Program przedstawiający działanie stałych, rejestrów i zastosowania konwersji z wartości całkowitych na wartości zmiennoprzecinkowe

Program przedstawiający działanie stałych, rejestrów i zastosowania konwersji z wartości całkowitych na wartości zmiennoprzecinkowe

 

W oknie Symbol Editor istnieje możliwość zdefiniowania dwóch typów stałych: K oraz Const:

Stałe: K oraz Const

Stałe: 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.

Modyfikacja parametrów liczników i timerów w karcie Build Options

Modyfikacja parametrów liczników i timerów w karcie Build Options

 

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:

Prosty przypadek użycia licznika

Prosty przypadek użycia licznika

Ł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:

Definiowanie zmiennej tekstowej w oknie Symbol Editor

Definiowanie zmiennej tekstowej w 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.

Zakresy zmiennych typu TEXT RAM i DB RAM

Zakresy zmiennych typu TEXT RAM i DB RAM