Jak tworzyć oraz konfigurować bazę zmiennych w środowisku Cscape?
Kurs programowania PLC od podstaw
Odc. 3
Kontakt w sprawie artykułu: Kamil Zajdel - 2020-01-23
Z tego artykułu dowiesz się:
- Jakie są typy zmiennych dostępnych w Cscape?
- Jak tworzyć zmienne w obiekcie I/O Names?
- Jak tworzyć zmienne z poziomu programu logicznego?
- Jak zrobić import i export listy zmiennych?
- Jak wykorzystać zmienne w programie sterującym?
W poprzednim artykule poznałeś/aś środowisko Cscape oraz nauczyłeś/aś się organizacji pracy podczas tworzenia projektów. Teraz czas na dalsze działania i naukę kolejnych podstaw niezbędnych do programowania sterowników Horner. Kolejnym ważnym dla Ciebie krokiem będzie przygotowanie listy zmiennych oraz nauka właściwego ich wykorzystania w programie sterującym. Umiejętność tę będziesz wykorzystywał w każdym tworzonym projekcie, dlatego zapraszamy do dalszej lektury!
Kurs programowania PLC od podstaw dla automatyków i elektryków
Podstawy programowania sterowników PLC
Programowanie sterownika PLC w języku drabinkowym
Programowanie zintegrowanego panelu HMI
Komunikacja sterowników PLC w sieci szeregowej i Ethernet
Zaawansowane funkcje sterownika PLC
Krok 1: Jakie typy zmiennych wykorzystywane są w środowisku Cscape?
Zmienna to podstawowy element programów sterujących w sterownikach PLC, posiadający cztery podstawowe atrybuty:
- unikalną nazwę (identyfikator, tag) – służy do identyfikowania zmiennej w programie,
- unikalny adres referencyjny – umożliwia dostęp do miejsca przechowywania zmiennej w wewnętrznej pamięci sterownika PLC,
- typ – określa rodzaj przechowywanych w niej danych oraz sposób reprezentacji jej wartości. W zależności od typu, zmienna przechowywana jest w określonym obszarze pamięci sterownika,
- bieżącą wartość – wartość zmiennej, która może być zmieniana oraz odczytywana w trakcie wykonywania programu.
W zależności od typu wartości, jakie zmienna może przyjmować, określany jest jej rodzaj. Sterowniki Horner pozwalają na obsługę następujących typów zmiennych:
- zmienne bitowe – służą do opisywania stanów, a ich wartości interpretowane są jako ciągi bitów (każdy bit może przyjmować wartość 0 lub 1),
Pojedynczy bit. Może on posiadać tylko wartość ‘0’ lub ‘1’. | |||
Ciąg 8 kolejnych bitów. Wartości typu bajt są stosowane, jeżeli ustawienia poszczególnych bitów mają większe znaczenie niż sama wartość. | |||
Ciąg 16 kolejnych bitów. Wartości typu bajt są stosowane, jeżeli ustawienia poszczególnych bitów mają większe znaczenie niż sama wartość. | |||
Ciąg 32 kolejnych bitów. Wartości typu bajt są stosowane, jeżeli ustawienia poszczególnych bitów mają większe znaczenie niż sama wartość. |
- zmienne rejestrowe – służą do przechowywania wartości liczbowej (np. 123.5) i wykorzystywane do obsługi poszczególnych bloków funkcyjnych; pojedynczy rejestr jest 16-bitowy,
Wartość 16-bitowa ze znakiem. Typ ten jest stosowany, jeżeli przewidywane jest, że wartość będzie mieścić się w przedziale -32 768 do +32 768 | |||
Wartość 32-bitowa ze znakiem. Typ ten jest stosowany, jeżeli przewidywane jest, że wartość będzie mieścić się w przedziale -2 147 483 648 do +2 147 483 648 | |||
Wartość 32-bitowa. Wartości te są przechowywane i przetwarzane w formacie IEEE pojedynczej precyzji (sześć cyfr). Wartość musi mieścić się w przedziale od – 3.40282E+38do +3.40282E+38 | |||
Wartość 64-bitowa. Wartości te są przechowywane i przetwarzane w formacie IEEE pojedynczej precyzji (sześć cyfr). Wartość musi mieścić się w przedziale od –1.797693E+308 do +1.797693E+308 |
- zmienne string – przechowują kody znaków ASCII,
| | | |
| Ciąg znaków o zmiennej długości. Każdy ze znaków jest reprezentowany przez jeden bajt. |
Krok 2: Jak zorganizowana jest pamięć w sterownikach Horner?
Zmienne wykorzystywane w programie mogą wykorzystywać poniższe obszary pamięci:
1-bit systemowy sygnał dyskretny | ||||
16-bitowy rejestr systemowy | ||||
1-bitowy sygnał dyskretny bez podtrzymania wartości po zaniku napięcia zasilania | ||||
1-bitowy sygnał dyskretny z podtrzymaniem wartości po zaniku napięcia zasilania | ||||
16-bitowe rejestry z podtrzymaniem wartości po zaniku napięcia zasilania | ||||
1-bitowy sygnał dyskretny dający bezpośredni dostęp z poziomu programu do wszystkich przycisków umieszczonych na panelu HMI | ||||
Flagi cyfrowe wykorzystywane do sterowania wyświetlanymi ekranami na panelu HMI. Jeśli bit jest ustawiony, pojawi się dany ekran. |
Pamięć odpowiedzialna za rejestrowanie stanów sygnałów wejściowych i wyjściowych zorganizowana jest w następujący sposób:
1-bitowe wejście dyskretne, najczęściej wykorzystywane do podłączenia przełączników czynników dyskretnych | ||||
1-bitowe wyjście dyskretne, najczęściej wykorzystywane do podłączenia fizycznych wyjść | ||||
16-bitowe rejestry wejściowe analogowe stosowane w celu zebrania danych wejściowych, takich jak napięcia, temperatury pochodzących z dołączonych urządzeń | ||||
16-bitowe rejestry wyjściowe do przesyłania informacji analogowych takich jak napięcia, prądy podłączonych urządzeń |
Krok 3: Jak zarządzać zmiennymi w oprogramowaniu Cscape?
Operacje na zmiennych takie jak dodawanie, usuwanie i edycja możliwe są po wybraniu opcji I/O Names, znajdującej się w oknie Project Navigator oprogramowania Cscape.
Nową zmienną dodasz, wybierając przycisk Add, a następnie uzupełniając parametry odnoszące się do jej adresu, typu i unikalnej nazwy. Opcjonalnie wykorzystując pole komentarza możesz podać informację, do czego wykorzystywana będzie tworzona zmienna.
Nowa zmienna pojawia się na liście dostępnych zmiennych w programie.
Programowanie w akcji!
Dodasz teraz zmienne, które wykorzystasz w programie.
W sposób zaprezentowany powyżej uzupełnij bazę kolejnymi zmiennymi:
%m00001 | 1 | Impuls_100ms |
%m00002 | 1 | Zawor_napelniajacy_ZB1 |
%m00003 | 1 | Zawor_oprozniajacy_ZB1 |
%m00004 | 1 | Zawor_napelniajacy_ZB2 |
%m00005 | 1 | Zawor_oprozniajacy_ZB2 |
%m00006 | 1 | Zawor_oprozniajacy_ZB3 |
Aby usunąć lub zmodyfikować zmienną, zaznacz konkretną pozycję na liście i wybierz przycisk Remove lub Edit.
Dodatkowo dostępna jest opcja Where, która poinformuje Cię, gdzie wybrana zmienna została wykorzystana w kodzie.
Środowisko Cscape daje możliwość importowania bazy zmiennych z arkusza kalkulacyjnego. W tym celu skopiuj przygotowany zestaw zmiennych przy użyciu schowka systemowego, a następnie wklej je do okna I/O Names, używając przycisku Paste.
Uwaga: Przy tworzeniu zestawu w arkuszu kalkulacyjnym zwróć uwagę, by pierwsza kolumna zawierała adres zmiennej, kolejna kolumna – liczbę bitów, a ostatnia kolumna – unikalną nazwę.
Możliwy jest także eksport zmiennych przy użyciu opcji Copy all. Następnie w arkuszu kalkulacyjnym wybierz polecenie Wklej. Na wyeksportowanych elementach możesz dalej pracować, dowolnie je edytując.
Teraz w arkuszu kalkulacyjnym przygotuj listę zmiennych z poniższej grafiki i wklej ją do bazy zmiennej w programie Cscape.
Dodawanie zmiennych możliwe jest również z poziomu programu sterującego.
Czas rozpocząć programowanie w języku drabinkowym!
W tym celu w projekcie utwórz pierwszy szczebel kodu. Z górnego paska wybierz ikonę styku i umieść ją na szarym tle. Obok umieść ikonę cewki.
Elementy drabinki będą omówione w dalszej części kursu, na razie wykorzystamy tylko te dwa na potrzebę stworzenia zmiennych.
Kolejno kliknij dwukrotnie na wybranym elemencie i w oknie edycyjnym podaj adres i nazwę zmiennej. Typ zmiennej konfigurowany jest automatycznie. Tak wprowadzone dane wystarczą do utworzenia nowej zmiennej w bazie programu.
Jest to bardzo szybkie rozwiązanie, jednak nie polecane do tworzenia dużego i złożonego zestawu zmiennych – nie daje ono pełnej kontroli i podglądu tworzonej bazy. Bardzo użyteczne okazuje się w przypadku tworzenia pojedynczych zmiennych pomocniczych.
Przypisywanie zmiennych z bazy do wybranych elementów drabinki realizowane jest tą samą drogą. W otwartym oknie, otwierającym się po kliknięciu w element, wpisujemy nazwę lub adres, pod którym znajduje się zmienna.
Na potrzeby tworzonego programu do styku normalnie otwartego przypisz zmienną programową o nazwie T_100ms i adresie %S004 (wystarczy w miejscu Address wpisać „s4”), natomiast do cewki przypisz zmienną o nazwie Impuls_100ms i adresie %M00001 (wystarczy w miejscu Address wpisać „m1”).
Zmienna T_100ms o adresie %S004 ustawia wartość 1 co 100 ms, co powoduje przepływ sygnału co kolejne 100 ms i cykliczne zasilanie cewki. Inne zmienne programowe znaleźć można w tablicy I/O names.
W kolejnym artykule z cyklu kurs „Programowanie oraz konfiguracja sterowników PLC zintegrowanych z hmi”: Jak korzystać ze styków, cewek i bloków operacji arytmetycznych w programie sterującym?
- Jak dodać do programu sterującego styki, cewki i bloki arytmetyczne w środowisku Cscape?
- Jak utworzyć prostą logikę programu sterującego?
- Jak skompilować stworzony program i wgrać go do sterownika?
- Jak śledzić wykonywany program i jak monitorować wartości wykorzystanych zmiennych?