Kurs Codesys: Tips&Tricks

Tips&Tricks 1: Jak zmieniać wartości zmiennych podczas pracy programu?

Nie masz jeszcze stworzonej wizualizacji, w której będziesz mógł/mogła za pomocą przycisków i innych obiektów graficznych zmieniać wartości zmiennych. Nic straconego – w Codesys możesz „ręcznie” zmieniać wartości zmiennych programu np. w edytorze zmiennych.

Aby to zrobić, ustaw odpowiednią wartość w kolumnie „Prepared value”, a następnie po kliknięciu prawym przyciskiem myszy, wybierz opcję: Write All Values of ‘Device.Application’.

Możesz użyć również skrótu klawiszowego ALT+F7. Wartości zmiennych wprowadzone w kolumnie Prepared value zostaną wpisane do pamięci sterownika.

Tips&Tricks 2: Panel administracyjny sterownika

Panel administracyjny sterownika PLC, a w tym przypadku Astraada One to miejsce, do którego logujesz się za pomocą przeglądarki internetowej. W panelu administracyjnym możesz wykonywać takie operacje jak:

  • zmiana adresu IP sterownika,
  • aktualizacja firmware,
  • odczytanie logów diagnostycznych,
  • reset sterownika do stanu fabrycznego,
  • ustawienie zegara czasu rzeczywistego,
  • aktywacja FTP Server,
  • konfiguracja VNC-Server itp.

Aby wejść do panelu administracyjnego sterownika PLC Astraada One, wpisz jego adres IP do przeglądarki internetowej. W następnym kroku zostaniesz poproszony o login oraz hasło. Domyślnie:

Login: admin

Hasło: admin

Astraada One – logowanie do panelu administracyjnego

Panel administracyjny sterownika Astraada One przedstawia się następująco:

Astraada One – panel administracyjny

W tym odcinku T&T dowiesz się w jaki sposób możesz zmienić adres IP sterownika Astraada One. Aby skonfigurować adres IP sterownika, przejdź do zakładki Network, w której masz możliwość skonfigurowania adresu IP dwóch kart sieciowych sterownika (ETH1, ETH2):

Astraada One – zakładka Newtork w panelu administracyjnym

Obie karty sterownika mogą pracować w kilku trybach:

  • adres statyczny,
  • adres dynamiczny DHCP,
  • EtherCAT,
  • Profinet,
  • nieaktywny.
Astraada One – tryby karty sieciowej

Warto zauważyć, że sterowniki Astraada One posiadają możliwość skonfigurowania karty ETH0 dla dwóch niezależnych adresów IP w różnych podsieciach (ETH0 oraz ETH0:1). Jest to wygodne rozwiązanie pozwalające uruchomić na danej karcie komunikację w dwóch protokołach komunikacyjnych jednocześnie (np. Modbus TCP oraz Profinet). W drugim scenariuszu, możesz wykorzystać tę funkcjonalność, aby zalogować się do sterownika przy równolegle działającej komunikacji w jednym z protokołów obsługiwanych przez PLC Astraada One. Dodatkowo do Twojej dyspozycji pozostaje karta ETH1, która przykładowo może posłużyć do komunikacji w protokole EtherCAT z napędami.

Po zmianie adresu IP karty ETH0, pamiętaj o zapisaniu zmian przyciskiem SAVE. Następnie zostaniesz poproszony/a o zrestartowanie sterownika PLC. Możesz wykonać tę operację w Panelu administracyjnym klikając zakładkę Reboot lub restartując zasilanie sterownika. Po ponownym włączeniu, sterownik będzie posiadał nowy adres IP.

W tym odcinku T&T to wszystko, zapraszam do śledzenia dalszych odcinków kursu oraz T&T, gdzie będziemy zamieszczać sporo praktycznych informacji dotyczących środowiska Codesys oraz sterowników Astraada One. Do zobaczenia!

Tips&Tricks 3: Jak przekonwertować program z symulatora na fizyczny sterownik PLC?

W tym odcinku Tips&Tricks będziesz bazować na podstawie programu z 3 odcinka kursu Codesys. Program ten był przeznaczony na symulator, dowiesz się, jak przekonwertować go na fizyczne urządzenie i zmapować utworzone już zmienne.

Konwersja programu jest bardzo prosta – wystarczy, że zmienisz target w projekcie. Kliknij na Device w drzewku projektowym prawym przyciskiem myszy i wybierz opcję Update Device. Zobaczysz okno wyboru targetów. W przypadku sterownika Astraada One, wybierz target Berghof MX6 Control.

Zmiana targetu w Codesys, źródło: ASTOR

Następnie dodaj do drzewa projektu wejścia/wyjścia –  tak jak w odcinku nr 2 naszego kursu.

Dodawanie modułu I/O do projektu w Codesys

Od teraz możesz przypisać zmienną do faktycznego wejścia. Aby tego dokonać, kliknij dwukrotnie na moduł I/O i przejdź do segmentu BGH Slot BUS I/O Mapping.

Rozwiń segment Digital In – w przypadku wejść lub Digital Out w przypadku wyjść. Następnie rozwiń pierwszą gałąź opisaną jako Digital Input 0 lub Digital Output 0. Kliknij dwukrotnie przy znaku zmiennej aż pojawi się przycisk z trzema kropkami, który także kliknij. Wybierz swoją zmienną, którą chcesz przypisać.

Mapowanie zmiennych w Codesys, źródło: ASTOR

Tak przygotowany program wgraj do sterownika. W ten sposób możesz testować programy na symulatorze, a następnie w kilka sekund wykonać konwersję na fizyczny sterownik.

Tips&Tricks 4: Jak używać narzędzia Help?

Codesys jest rozbudowanym środowiskiem, dlatego też warto wiedzieć, jak korzystać z narzędzia Help. W Help znajdziesz definicje i przykłady dotyczące każdego, nawet najmniejszego elementu środowiska. Codesys oferuje dwa rodzaje Helpa: Offline i Online. Domyślnie, jeżeli masz dostęp do Internetu, Codesys będzie zawsze wczytywał wersję Online. Gdzie włączyć/wyłączyć taką opcję?

Przejdź do zakładki Tools w prawym górnym rogu głównego ekranu programu. W zakładce wybierz Options… Następnie przejdź do zakładki Help. Zobaczysz jeden, jedyny box do zaznaczenia. Jeżeli jest zaznaczony, wersja Online będzie wczytywana, gdy masz dostęp do Internetu, jeżeli nie jest zaznaczony – zawsze będziesz korzystać z wersji Offline.

Ustawianie trybu pracy Help w Codesys, źródło: ASTOR

Jak uaktywnić Help? Są dwie możliwości. Najbardziej przydatną opcją jest skorzystanie z klawisza F1. Wystarczy, że klikniesz lewym przyciskiem myszy na element, którego nie znasz, bądź nie rozumiesz i wciśniesz klawisz F1. Help automatycznie uruchomi się na szukanym elemencie. Drugim sposobem kliknięcie zakładki Help w prawym górnym rogu głównego ekranu Codesys i wybranie opcji Contents lub Index.

Otwieranie narzędzia Help w Codesys, źródło: ASTOR

Zaleca się korzystanie z Help Online – jest on nie tylko zawsze aktualny, ale również posiada możliwość używania komend dla łatwiejszego wyszukiwania. Możesz wykorzystać:

  • AND – jest to łącznik, a więc jeśli wpiszesz Device AND Diagnosis, Help wyszuka informacje o Device Diagnosis
  • OR – jest to klasyczne lub. Jeśli wpiszesz w wyszukiwarkę Device OR Diagnosis, Help znajdzie informacje osobno o Device i o Diagnosis.
  • NOT – używane, gdy chcesz wyszukać konkretnych informacji. Jeśli wpiszesz Device NOT Diagnosis, Help znajdzie informacje o Device, które nie zawierają wzmianki o Diagnosis.
  • ANDNOT – kombinacja AND oraz NOT, stosowana, gdy budujesz dłuższe sformułowanie z AND. Czyli jeśli wpiszesz Device AND Diagnosis ANDNOT Output, Help wyszuka informacje o Device Diagnosis, które nie zawierają wzmianki o Output.
  • ANDMAYBE – jest to opcja łącząca OR i NOT. Jeśli wpiszesz Device ANDMAYBE Diagnosis, Help wyszuka przede wszystkim informacje o samym Device, ale również poda klika wierszy na temat Device Diagnosis.

Oprócz komend można zastosować też dwa znaki:

* – zastępuje dowolną ilość znaków w wyrazie,

? – zastępuje tylko jeden znak w konkretnym miejscu.

Tips&Tricks 5: Konwersja języka LD do FBD.

Masz program napisany w języku LD, lecz zauważyłeś/aś, że język FBD posiada wszystkie jego zalety, a dodatkowo jest bardziej czytelny i prosty w analizie?

Mam dobrą wiadomość. Musisz wykonać TYLKO JEDNĄ akcję w Codesys, aby automatycznie skonwertować Twój program w LD na FBD 🙂

W tym celu, kliknij na ikonkę LD/FBD/IL w górnej wstążce programu oraz wybierz widok FBD:

Konwersja LD – FBD, Codesys, źródło: ASTOR

Tips&Tricks 6: Program do sortowania danych w języku ST – instrukcja krok po kroku cz. 1

Program, który napiszesz będzie wykorzystywać dwa algorytmy sortowania: Quick Sort oraz sortowanie bąbelkowe. Użytkownik, będzie mógł zadeklarować wielkość tablicy, do której wpisze własne wartości, a po uzupełnieniu wartości, będzie mógł wybrać metodę sortowania wartości w tablicy.

Pierwszym krokiem będzie dodanie bloków funkcyjnych. Dodasz dwa bloki funkcyjne w języku ST, dla obu algorytmów, które użyjesz do sortowania.

Wejdź w opcję Project znajdującą się na górnym pasku i wybierz opcję Add object, a następnie wybierz POU.

Dodawanie bloku funkcyjnego, źródło: ASTOR

Następnie zmień typ POU na Function Block, nadaj mu nazwę np. BubbleSort lub QuickSort oraz zmień język na ST.

Zmiana ustawień nowego obiektu, źródło: ASTOR

Tym samym sposobem dodaj drugi blok funkcyjny, w którym zapiszesz algorytm sortowania i nadaj mu nazwę odpowiadającą nazwie algorytmu.

Otwórz blok funkcyjny, w którym zapiszesz algorytm sortowania metodą QuickSort i dodaj następujące zmienne.

Zmienne potrzebne do wykonania algorytmu QuickSort, źródło: ASTOR

Dodaj do kodu instrukcję warunkową IF. Dzięki niej program będzie poprawnie wykonywać algorytm. Instrukcja wraz z operacjami ma wyglądać następująco.

Pętla główna algorytmu QuickSort, źródło: ASTOR

Zmienna podtrzymaj posłuży nam za numer indeksu wartości, będącą osią, na której będziemy opierać działanie algorytmu, zgodnie z jego zasadami.

Do środka instrukcji IF dodaj pętle WHILE, która będzie odpowiadać za ograniczenie przedziału sortowania zgodnie z działaniem algorytmu sortowania. Pętla wraz z operacjami ma wygląda następująco:

Dodawanie pętli ograniczającej przedział działania algorytmu, źródło: ASTOR

Kolejna pętla WHILE będzie odpowiedzialna za zwiększanie wartości zmiennej i. Tutaj wartości tablicy będą sprawdzane zgodnie z algorytmem działania metody sortowania.

Dodawanie pętli sprawdzającej wartość względem osi, źródło: ASTOR

Zamknij pętlę i dodaj nową pętlę While, która będzie odpowiedzialna za odszukanie największej wartości tablicy.

Dodawanie nowej pętli sprawdzającej wartość względem osi, źródło: ASTOR

Zamknij pętlę i dodaj nową instrukcję IF. W niej zapisz operacje zamiany wartości komórek.

Dodawanie instrukcji zamieniającej wartości komórek tablicy, źródło: ASTOR

Po zamknięciu pętli While, dodaj operacje zmiany wartości osi, służącej do segregacji wartości tablicy.

Dodawanie instrukcji zmieniającej wartość osi, źródło: ASTOR

Ostatnim krokiem, jest dodanie wskaźników do tworzonego przez Ciebie bloku funkcyjnego, dzięki którym stworzysz zjawisko rekurencji. Nie możesz wywołać tego samego bloku w jego kodzie, więc do utworzenia rekurencji używamy wskaźnika THIS

Wykorzystanie wskaźnika do stworzenia zjawiska rekurencji, źródło: ASTOR

Końcowa wersja kodu pokazana jest na poniższym zdjęciu:

Algorytm sortowania QuickSort, źródło: ASTOR

Tips&Tricks 7: Program do sortowania danych w języku ST – instrukcja krok po kroku cz. 2

Przejdź do drugiego bloku funkcyjnego. W nim napiszesz algorytm sortowania metodą bąbelkową

Do bloku funkcyjnego dodaj następujące zmienne:

Zmienne potrzebne do wykonania algorytmu QuickSort, źródło: ASTOR

Tak jak w algorytmie QuickSort, dodaj instrukcję IF warunkującą poprawną pracę algorytmu wraz z operacjami

Pętla główna algorytmu BubbleSort, źródło: ASTOR

Następnie dodaj do środka instrukcji pętle FOR, która powieli instrukcje i operacje niezbędne do sortowania. Do środka pętli FOR dodaj pętlę WHILE, służącą do wykrywania wartości, które trzeba zamienić miejscami i operacje ich zamiany.

Dodawanie pętli zamieniającej wartości komórek tablicy, źródło: ASTOR

Po zakończeniu pętli FOR, dodaj operacje ponownego nadania zmiennym i oraz j wartości początkowych.

Końcowy kod algorytmu powinien wyglądać następująco:

Algorytm sortowania bąbelkowego, źródło: ASTOR

Mając gotowe bloki funkcyjne z algorytmami sortowania, przejdź do programu PLC_PRG, zadeklaruj utworzone bloki funkcyjne, licznik zliczający w górę oraz następujące zmienne:

  • Tablicę zmiennych typu INT o wielkości od 1 do 25
  • 3 zmienne typu INT
  • 4 zmiennych typu BOOL

Zmienne typu INT będą potrzebne do przechowania informacji o:

  • Obecnej wartości licznika, potrzebnej do określenia komórki tablicy, do której wpiszesz wartość
  • Rozmiarze tablicy

Wartości wpisywanej do danej komórki tablicy Zmienne typu BOOL będą potrzebne do:

  • Utworzenia dwóch przycisków odpowiedzialnych za rozpoczęcie wybranego algorytmu sortowania
  • Utworzenia przycisku odpowiedzialnego za zatwierdzenie zapisu wartości do komórki tablicy
  • Zresetowania licznika do wartości początkowej po wypełnieniu tablicy.
  • Przestrzeń zmiennych programu powinna wyglądać następująco:
Zmienne wykorzystane w programie, źródło: ASTOR

Najpierw wywołaj licznik, potrzebny do zliczania kliknięć przycisku zatwierdzania wartości komórki tablicy.

Wywołanie licznika zliczającego w górę, źródło: ASTOR

Następnie zapisz instrukcję IF, warunkiem której, będzie naciśnięcie przycisku zatwierdzania wartości, a w niej przypisanie wartości zmiennej liczba, do komórki tablicy o indeksie i oraz podtrzymanie resetu licznika w stanie zerowym.

Dodawanie instrukcji wpisującej wartość do tablicy, źródło: ASTOR

Następnie dodaj instrukcję IF, która po przekroczeniu wielkości tablicy, zresetuje licznik.

Dodawanie instrukcji resetującej licznik, źródło: ASTOR

Dodaj także instrukcje IF, które wywołają bloki funkcyjne z algorytmami, kiedy zostanie naciśnięty przycisk rozpoczynający sortowanie wybraną metodą

Program kontrolujący działanie projektu, źródło: ASTOR

Następnie należy utworzyć wizualizację, z poziomu której będziesz kontrolować działanie aplikacji. Sposób dodawania wizualizacji został ukazany w odcinku nr 6.

Najpierw dodaj tablicę do swojej wizualizacji. Wejdź w Visualization Toolbox, znajdujący się po prawej stronie programu i wybierz kategorię Common Controls. Wybierz element Table i przeciągnij na przestrzeń roboczą

Dodawanie tablicy do wizualizacji, źródło: ASTOR

Następnie przypisz do tablicy zmienną z programu PLC_PRG w sekcji Properties, znajdującej się pod Visualization Toolbox. Wybierz opcję Data Array do przypisania tablicy z programu oraz maksymalną wielkość tablicy do ukazania w opcji Maximum array index.

Zmiana ustawień tablicy, źródło: ASTOR

Dodatkowo dodaj dwa pola tekstowe, które posłużą do wpisywania wartości wielkości tablicy i wartości komórek tablicy. Wejdź ponownie w Visualization Toolbox oraz wybierz kategorie Common Controls. Wybierz element Textfield i przeciągnij w przestrzeń roboczą wizualizacji.

Dodawanie pola tekstowego do wizualizacji, źródło: ASTOR

Następnie należy dodać zmienną, która zapisze tekst wpisywany do pola tekstowego. Robimy to wchodząc w Properties pola tekstowego. Wejdź w sekcję Text variables i przydziel zmienną do pola tekstowego, w zależności od pola: zmienną odpowiadającą za przechowanie wielkości tablicy lub wartości do wpisania w komórkę tablicy.

Zmiana ustawień pola tekstowego, źródło: ASTOR

Dla pola tekstowego, które odpowiada za wielkość tablicy należy dodać dodatkowe ustawienie. Po wpisaniu rozmiaru tablicy, ma ona automatycznie się ukazać w zadanym rozmiarze. Można to uzyskać poprzez opcję Input Configuration w części Properties pola. Wejdź w tę opcję i kliknij na pole OnMouseClick. Ukaże ci się okno dialogowe, dzięki któremu dodasz opcję zapisu wartości. W ten sposób po kliknięciu na pole tekstowe i wpisaniu w nie wartości, tablica automatycznie przybierze żądany rozmiar.

Dodawanie ustawienia wpisującego wartość do pola tekstowego po kliku, źródło: ASTOR

Następnie dodaj przyciski. Ponownie wejdź w Visualization Toolbox i wybierz kategorię Common Controls. Wyszukaj w niej elementu Button i przeciągnij do przestrzeni roboczej programu.

Dodawanie przycisku do wizualizacji, źródło: ASTOR

Na końcu przypisz do przycisku zmienną, do której ma przekazać sygnał. Wejdź w Properties, następnie wybierz sekcję Input Configuration, następnie Tap i w opcję Variable wpisz zmienną.

Dodatkowo możesz dodać tekst, który wyświetli się na przycisku. Aby to zrobić wybierz sekcję Texts w Properties i w opcji Text wpisz treść do wyświetlenia.

Zmiana ustawień przycisku, źródło: ASTOR

Poniżej znajduje się instrukcja działania stworzonego przez ciebie programu.

INSTRUKCJA:

1. Wpisz wielkość tablicy do pola tekstowego
2. Wpisz wartość komórki tablicy do drugiego pola tekstowego
3. Potwierdź wpisanie przyciskiem
4. Powtórz krok 2 i 3 do zapełnienia tablicy
5.Po zapełnieniu tablicy naciśnij przycisk rozpoczynający sortowanie.

Pobierz gotowy program i przetestuj działanie -> LINK