< Wróć do bazy wiedzy

Na czym polega statyczne i dynamiczne adresowanie zmiennych sterownika?

Statyczne adresowanie zmiennych

Statyczne adresowanie zmiennych polega na definiowaniu zmiennych i przypisywaniu im adresów przez użytkownika.

1. Tworzymy nowy plik programu Fupla:

Okno Symbol Editor

Rys.1 Okno Symbol Editor w Edytorze Fupla

2. Wszystkie zmienne wykorzystywane przez program sterownika przechowane są w oknie Symbol Editor. Aby dodać zmienną należy wpisać ją w wolny wiersz tabeli:

Dodawanie zmiennej

Rys. 2 Dodawanie zmiennej w oknie Symbol Editor

3. Definiowanie nowej zmiennej wymaga od użytkownika podania jej nazwy, typu (np. rejestr, flaga), oraz adresu. Dodatkowo można utworzyć opis zmiennej w celu jej łatwiejszej identyfikacji. Analogicznie definiujemy dodatkowe zmienne w celu stworzenia prostego programu. Okno Symbol Editor powinno wyglądać następująco:

Definiowanie zmiennych

Rys. 3 Definiowanie zmiennych w oknie Symbol Editor

4. Zdefiniowane statycznie zmienne można teraz użyć w programie. W tym celu należy przycisnąć obszar po lewej stronie tabeli odpowiadający pożądanej zmiennej, a następnie przeciągnąć myszką do odpowiedniego konektora. Zmienna zostaje dodana do algorytmu programu:

Dodawanie zmiennej do algorytmu

Rys. 4 Dodawanie zmiennej do algorytmu programu

5. Wprowadzając w analogiczny sposób pozostałe zmienne można utworzyć prosty program w Edytorze Fupla. Adresy zmiennych zostały wprowadzone w sposób statyczny przez użytkownika (numery adresów są widoczne w kolumnie Address / Value) w oknie Symbol Editor:

Prosty program dla zdefiniowanych statycznie zmiennych

Rys. 5 Prosty program dla zdefiniowanych statycznie zmiennych

6. Po kompilacji i wgraniu programu do sterownika, adresy widoczne są w kolumnie Actual Address:

Okno Symbol Editor

Rys. 6 Okno Symbol Editor po wgraniu programu do sterownika

Dynamiczne adresowanie zmiennych

Dynamiczne adresowanie zmiennych jest znacznie wygodniejszym i szybkim sposobem projektowania niż adresowanie statyczne. Użytkownik nie musi bowiem wykonywać znacznej części operacji, które wymagane były do stworzenia zmiennej adresowanej statycznie. Dynamiczne adresowanie zmiennych nie wymaga od użytkownika konieczności ręcznego wpisywania adresu. Wszystkie zmienne są bowiem adresowane automatycznie podczas procesu kompilacji programu.

1. W celu zobrazowania działania dynamicznego adresowania zmiennych, tworzymy projekt analogiczny do odpowiednika z punktu 1. W tym celu otwieramy nowy plik Edytora Fupla, a następnie wpisujemy do odpowiednich konektorów nazwy zmiennych:

Dynamiczne adresowanie zmiennych

Rys. 7 Dynamiczne adresowanie zmiennych – użytkownik podaje tylko nazwę zmiennej, nie adresuje jej

2. Po wpisaniu nazw zmiennych do konektorów, pojawiają się one także w oknie Symbol Editor:

Zmienne w oknie Symbol Editor

Rys. 8 Zmienne w oknie Symbol Editor

3. Po wykonaniu tych operacji można przystąpić do kompilacji programu oraz wgrania go do sterownika. W oknie Symbol Editor widoczne są aktualne adresy zmiennych:

Okno Symbol Editor

Rys. 9 Okno Symbol Editor – adresy dynamiczne w kolumnie Actual Address

 

Po kompilacji, program sam przypisał adresy do utworzonych przez użytkownika zmiennych, co jest widoczne na rys. 9. Utworzone przez użytkownika zmienne zostały zaadresowane w sposób następujący: F2021, F2022 oraz F2023.

Warto zauważyć, że adresy dynamiczne rozpoczynają się od numeru 2000 wzwyż. Ustawienia adresów dynamicznych są możliwe do modyfikacji w karcie Build Options drzewa projektu PG5:

Build options

Rys. 10 Ustawienia adresów dynamicznych w karcie Build Options

W oknie Build Options można zmieniać numery adresów dynamicznych. Domyślne ustawienia przewidują adresowanie flag i rejestrów od numeru 2000 do 8191.

Zobacz też: [xyz-ihs snippet=”obrazekfaq”] W jaki sposób PG5 przydziela i zwalnia adresy dla zmiennych dynamicznych?

Uwaga:

Należy pamiętać, że adresując zmienne statycznie nie możemy działać na obszarze zmiennych dynamicznych. Dla przykładu, zaadresowanie zmiennej adresem statycznym 2050 spowoduje błąd kompilacji programu:

Błąd kompilacji

Rys. 11 Błąd kompilacji spowodowany niedozwolonym zaadresowaniem statycznym zmiennej