Niedawno napisałem Ci, że zmienne definiuje się w blokach danych. Dzisiaj dowiesz się dokładnie, jak to zrobić krok po kroku. Wykorzystamy projekt FirstProject, w którym użyjemy zdefiniowanych zmiennych z bloku danych.
Bloki danych DB
Blok danych nazywany również DB są przeznaczone tylko do przechowywania zmiennych dowolnego typu. W bloku DB tworzy się zmienną poprzez podanie nazwy oraz typu. Można także określić wartość startową, czyli wartość którą zostanie zainicjalizowana zmienna podczas tworzenia tej zmiennej przez kompilator.
Zmienne znajdujące się w bloku danych są widoczne ze wszystkich bloków funkcyjnych (OB, FC, FB). O blokach FC i FB napiszę oddzielny wpis. Widoczność we wszystkich blokach wynika z tego, że jest to typ globalny.
Istnieją też bloki danych powiązane z tylko z blokami typu FB, ale o tym innym razem.
Raz utworzona zmienna w bloku danych nie jest usuwana.
Siemens zaleca umieszczanie wszystkich zmiennych w blokach danych. Wynika to z fakty większej szybkości wykonywania kodu programu, ponieważ dostęp do zmiennych jest maksymalnie zoptymalizowany.
Jak utworzyć nowy blok danych?
Dodanie nowego bloku danych DB do projektu wygląda podobnie, jak w przypadku dodania nowego bloku organizacyjnego OB.
Z drzewa projektu należy rozwinąć Program block i wybrać Add new block. Pojawi się okno Add new block, które przedstawiono poniżej
W tym oknie z lewej strony zaznacz ikonę Data block. W polu Name wpisujesz nazwę bloku. W projekcie nie mogą się znajdować dwa bloki mające te same nazwy. Możesz teraz nazwać blok DB jako MyDataBlock. Widzisz, że w polu Type domyślnie został wybrany typ jako Global DB. Numer bloku jest wybierany automatycznie. Pozostało nam zatwierdzić wciskając przycisk OK.
Po chwili pojawi się nam okno przedstawione na poniższym rysunku
Widok edytora z otwartym blokiem DB jest podobne do widoku bloku OB1. Na górze znajduje się pasek narzędzi. Poniżej znajduje się sekcja, w której definiuje się zmienne. Opiszę Ci, do czego służą poszczególne kolumny:
- Name – Nazwa zmiennej, która musi być unikalną w tym bloku danych,
- Data type – określa typ zmiennej, który można wpisać lub wybrać z rozwijanej listy,
- Start value – wpisana wartość inicjalizuje zmienną podczas rozpoczęcia wykonywania programu,
- Retain – zaznaczenie tej opcje powoduje podtrzymanie wartości zmiennej w przypadku zaniku zasilania,
- Accessible from HMI – zaznaczenie umożliwia dostęp do zmiennej podczas działania systemu operacyjnego wizualizacji,
- Visible in HMI – zaznaczenie powoduje, że zmienną można wykorzystać podczas tworzenia wizualizacji,
- Setpoint – przywrócenie wartości inicjalizującej daną zmienną podczas wykonywania programu,
- Comment – komentarz opisujący dokładne znaczenie i ewentualnie sposób użycia lub przeznaczenia zmiennej.
Utwórzmy dwie zmienne typu Byte o nazwach MyVariableForTest oraz Variable, co przedstawia poniższy rysunek.
Zmiennej Variable przypisano wartość startową 13.
Jak wykorzystać zmienne w kodzie programu?
Domyślasz się zapewne, że trzeba użyć nazwy zmiennej (czyli identyfikatora) w kodzie programu. Dokładnie tak, jednak trzeba też określić, w jakim bloku danych znajduje się ta zmienna. W dwóch różnych blokach danych przecież może znajdować się zmienna mająca taką samą nazwę.
W kodzie programu bloku OB1 wpisujesz nazwę bloku danych czylu MyDataBlock i następnie wpisujesz kropkę (.). Pojawi Ci się lista wszystkich dostępnych zmiennych znajdujących się w tym bloku danych, co przedstawia poniższy rysunek.
Na liście znajdują się dwie zmienne i każda z nich jest typu Byte, czyli wszystko się zgadza. Umieszczamy następujący kod:
„MyDataBlock”.MyVariableForTest := „MyDataBlock”.Variable;
Zmiennej MyVariableForTest jest zainicjalizowana wartością 0 (kolumna Start value w bloku MyDataBlock). W tej linii kodu zmiennej MyVariableForTest z bloku MyDataBlock jest przypisywana wartość zmiennej Variable z bloku MyDataBlock. Zatem po wykonaniu tej linii kodu obie zmienne będą miały tą samą wartość.
Oczywiście taką operację przypisania można przeprowadzić na zmiennych znajdujących się w różnych blokach danych. Jedyny warunek to ten sam typ zmiennych. Jeżeli typy będą różne, wówczas kompilator zgłosi błąd.
Teraz możesz przeprowadzić kompilację projektu, która powinna zakończyć się bez żadnych błędów.
Po wykonaniu kodu programu napisanego dzisiaj obie zmienne będą miały wartość równą 13. W następnym wpisie sprawdzimy, czy tak jest w rzeczywistości.
Kurs wideo
Więcej na temat programowania w języku SCL znajdziesz w kursie Sterownik PLC w praktyce: