Diagnostyka w Codesys – jak sprawdzać działanie oprogramowania i sterownika?
Kurs programowania w Codesys odc. 8
Kontakt w sprawie artykułu: Mateusz Pytel - 2022-02-08
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Glowna-grafika-kursu-03-1.jpg)
Z tego artykułu dowiesz się:
- jakie komunikaty wysyła Codesys,,
- czym jest debugger i jak z niego korzystać,
- jak zdiagnozować błąd w projekcie.
Zapraszamy na kolejny odcinek naszego kursu. Tym razem skupimy się na diagnostyce w środowisku Codesys. Dzięki działaniom diagnostycznym będziesz w stanie znaleźć przyczynę problemu oraz jego rozwiązanie. Codesys posiada narzędzia, które pomogą Ci wyeliminować błędy w kodzie programu i zapewnić poprawną komunikację ze sterownikiem.
Kurs programowania w Codesys
Część I – Podstawowe funkcjonalności środowiska Codesys
1. Pierwsze kroki w Codesys. Jak stworzyć program?2. Pierwsze podłączenie i przygotowanie Codesys do pracy ze sterownikiem PLC.
3. Język drabinkowy (LD).
4. Typy danych w Codesys, rodzaje zmiennych, sposoby ich tworzenia.
5. Język schematów blokowych (FBD).
6. Tworzenie podstawowej wizualizacji HMI.
7. Język strukturalny (ST).
8. Diagnostyka w Codesys – jak sprawdzać działanie oprogramowania i sterownika?
9. Język bloków funkcyjnych (CFC).
10. Funkcja, blok funkcyjny, program – zmodyfikuj program w Codesys dla lepszej funkcjonalności.
Część II – Zaawansowane funkcje i możliwości środowiska Codesys
11. Komunikacja MQTT – jak skonfigurować w Codesys?12. Komunikacja EtherCAT – konfiguracja i przykładowa aplikacja.
13. Softmotion – synchronizacja serwonapędów przy pomocy sterownika PLC.
14. Komunikacja Modbus RTU i TCP/IP w środowisku Codesys.
15. Tworzenie projektów w Codesys ze sterownikami bezpieczeństwa Safety: architektura systemu bezpieczeństwa.
16. Programowanie sterownika bezpieczeństwa w Codesys.
17. Integracja sterownika PLC z systemem SCADA w Codesys.
18. Konfiguracja maszyny CNC z wykorzystaniem sterownika PLC – obsługa G-Code.
Dodatkowe materiały i lekcje dla kursantów:
1. Jak stworzyć wirtualny serwonapęd w Codesys? Instrukcja krok po kroku.2. Przykładowa aplikacja Codesys w języku ST i LD: napełnianie i opróżnianie zbiorników wraz z alarmowaniem.
Najczęściej zadawane pytania:
Sprawdź odpowiedzi na najczęściej zadawane pytania dotyczące środowiska Codesys.Jak zapewnić poprawną komunikację ze sterownikiem?
Na komunikację ze sterownikiem może wpływać wiele czynników np. nieodpowiednia deklaracja urządzenia w projekcie, błąd w kodzie programu, niepoprawne użycie wejścia lub wyjścia sterownika, a nawet niewłaściwy tryb jego pracy. Szybkie określenie problemu i jego przyczyny jest bardzo ważne podczas pracy ze sterownikiem PLC.
Gdy napisałeś/aś już swoją aplikację, kolejnym krokiem jest kompilacja i wgranie jej do sterownika. Jak to zrobić, dowiedziałeś/aś się w odcinku 2 kursu. Wraz z procesem wgrywania aplikacji, środowisko Codesys rozpoczyna komunikację ze sterownikiem. Po wgraniu aplikacji pojawią się zmiany w widoku drzewka projektu, a po przejściu w tryb online, zobaczysz nowe oznaczenia i symbole, ukazujące stan komunikacji ze sterownikiem.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Glowne-drzewko-projektu-w-Codesys-zrodlo-ASTOR.png)
Możesz zauważyć, że przed ikonami urządzeń pokazały się pewne symbole. Ich celem jest informowanie Cię o statusie urządzenia.
Poniżej znajdziesz wyjaśnienia poszczególnych symboli, z którymi możesz się spotkać podczas pracy w Codesys:
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Ikony_Codesys_ASTOR_Diagnostyka.jpg)
Jeśli nazwa urządzenia jest podświetlona na zielono, oznacza to, że jest ono podłączone i pracuje prawidłowo:
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Oznaczenie-poprawnego-polaczenia-zrodlo-ASTOR.jpeg)
Jeśli nazwa urządzenia jest zapisana kursywą, oznacza to, że urządzenie pracuje w trybie symulacji:
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Oznaczenie-trybu-symulacji-zrodlo-ASTOR.jpeg)
Powyższe symbole i oznaczenia informują o stanie komunikacji środowiska Codesys z Twoim sterownikiem PLC. Pomogą Ci one we wskazaniu miejsca występowania problemu oraz w jego eliminacji.
Okno Message – różnice między błędem, ostrzeżeniem i informacją
Samo określenie miejsca, w którym występuje błąd nie wystarczy, by sprawnie eliminować problemy. Ważne jest także rozpoznanie rodzaju błędu. Pomoże Ci w tym okno dialogowe Message. Pokazuje ono informacje o stanie aplikacji i jej działaniu. Dzięki niemu zyskasz wiedzę o błędach, które pojawiły się w kodzie programu lub podczas pracy sterownika, a także ostrzeżenia związane z funkcjonowaniem zaprogramowanej aplikacji oraz informacje dotyczące pracy sterownika.
Okno dialogowe Message znajduje się domyślnie na samym dole ekranu. Posiada ono łatwe narzędzie sortujące w postaci przycisków, dzięki któremu możesz porządkować jego zawartość tj. wyłączyć dany typ komunikatu.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Okno-dialogowe-Message-zrodlo-ASTOR-840x316.png)
Możemy wyróżnić 3 typy komunikatów: error, warning i message.
- Error – błąd w kodzie lub działaniu programu. Komunikat ten zawiera informacje o błędzie, który wystąpił podczas kompilacji programu lub w czasie jego pracy. Zawiera on informacje o typie błędu oraz miejscu tj. sekcji aplikacji i wierszu programu, w którym dany błąd wystąpił. Po dwukrotnym kliknięciu na komunikat, Codesys przeniesie Cię do miejsca wystąpienia błędu.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Powiadomienie_o_bledzie_CODESYS.png)
- Warning – ostrzeżenie. Komunikat ma na celu wskazanie problemów, które mogą wpłynąć na nieprawidłowe działanie aplikacji, choć nie muszą być jego powodem. Ukazują się przykładowo wtedy, gdy w kodzie programu widnieje nieużywana zmienna.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Powiadomienie_o_ostrzezeniu_CODESYS.png)
- Message – informacja. To informacje zwrotne na temat działania aplikacji lub procesów związanych z kompilacją, bądź komunikacją ze sterownikiem. Nie mają one wpływu na działanie programu.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Powiadomienie_o_wiadomosci_CODESYS.png)
Debugowanie
Debugowanie to proces systematycznego redukowania liczby błędów w oprogramowaniu. Zazwyczaj polega on na kontrolowanym wykonaniu programu pod nadzorem debuggera, czyli programu, który służy do dynamicznej analizy innych programów. Celem takiego działania jest odnalezienie i identyfikacja zawartych w tych programach błędów.
Debugowanie w środowisku Codesys polega na stosowaniu breakpointów, zwanych też punktami wstrzymania, w kodzie programu. Breakpointem nazywamy miejsce celowego wstrzymania wykonania programu, aby móc przeanalizować jego działania. Uruchomiony pod kontrolą debuggera program przerywa wykonanie we wskazanym punkcie i przekazuje sterowanie do debuggera, który zazwyczaj wyświetla kod źródłowy w miejscu wywołania wskazanej instrukcji. Po wstrzymaniu możliwe jest m.in. śledzenie aktualnych wartości zmiennych oraz zawartości rejestrów procesora.
Codesys posiada zintegrowany debugger, który pozwala na ustawianie breakpointów w edytorze kodu źródłowego oraz definicje warunków wykonania.
Możesz ustawić punkty przerwania w określonych miejscach programu, aby wymusić zatrzymanie jego wykonywania i monitorować wartości zmiennych. Możesz też wybrać specjalne punkty przerwania danych tak, aby zatrzymać wykonywanie programu wtedy, gdy zmieni się wartość określonej zmiennej.
Zatrzymanie w punkcie przerwania lub w punkcie przerwania danych może wiązać się z dodatkowymi warunkami. Możliwe jest również przedefiniowanie punktów przerwania i punktów danych, jako punktów wykonania, w których zamiast zatrzymania programu, wykonywany jest określony kod.
Aby dodać breakpoint, należy zalogować się do sterownika PLC, a następnie odnaleźć menu Debug w pasku narzędziowym i wybrać opcje New Breakpoint.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Utworzenie-punktu-przerwania-zrodlo-ASTOR-wybor_breakpoint.gif)
Po wybraniu, ukaże się okno dialogowe, które pozwoli Ci skonfigurować punkt przerwania w zależności od Twoich potrzeb. W zakładce Condition, możesz dostosować warunek załączenia punktu przerwania, tak by przerwanie wykonało się po spełnieniu określonego warunku.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Zakladka-Condition-zrodlo-ASTOR.png)
W zakładce Location, możesz nadać lokalizację tj. wiersz kodu źródłowego, w którym ma się utworzyć punkt przerwania.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Zakladka-Location-zrodlo-ASTOR.png)
W zakładce Execution Point Settings, możesz zamienić punkt przerwania w punkt wykonania. Po zaznaczeniu opcji w oknie dialogowym wystarczy dodać kod, który ma się wykonać po załączeniu punktu podczas debugowania.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Zakladka-Execution-Point-Settings-zrodlo-ASTOR.png)
Punkty przerwania są widoczne w postaci grafik w kodzie źródłowym i w zależności od typu lub stanu punktu, posiadają inną symbolikę. Lista symboli tych punktów znajduję się poniżej:
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Ikony_Codesys_ASTOR_Diagnostyka_2-768x734.jpg)
Aby aktywować breakpoint zaznacz lewym przyciskiem myszy wiersz, w którym się znajduje, a następnie kliknij na nim prawym przyciskiem, aby otworzyć menu. Z dostępnych opcji wybierz Enable Breakpoint. Jeśli chcesz dezaktywować breakpoint, wybierz opcję Disable Breakpoint. Inną dostępną opcją jest edycja punktu przerwań, widoczna pod wyborem Edit Breakpoint.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Operacje-na-breakpoincie-zrodlo-ASTOR-dzialanie_na_breakpoincie.gif)
Jeśli chcesz rozpocząć debugowanie, znajdź opcję Debug w pasku narzędziowym i wybierz Start lub kliknij przycisk F5. Program zacznie się wykonywać i zatrzyma się na pierwszym punkcie przerwania.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Rozpoczecie-debuggingu-zrodlo-ASTOR-start_debugger.gif)
Gdy program zatrzyma się na punkcie przerwań, możesz dokonać przeglądu jego wartości i przeanalizować, czy wszystkie zadania, które miał wykonać, przebiegły prawidłowo. Jeśli wyniki będą dla Ciebie satysfakcjonujące, możesz ponownie rozpocząć wykonywanie programu od punktu przerwania, wciskając przycisk F5.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Dzialanie-debuggera-zrodlo-ASTOR-dzialanie_debugger.gif)
Codesys posiada także cztery inne opcje poruszania się po kodzie podczas debuggingu. Po prawej stronie paska narzędziowego znajdziesz ikony, które pozwolą Ci na diagnozowanie krok po kroku.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Opcje-poruszania-sie-debuggera-zrodlo-ASTOR.jpeg)
Pierwszą z nich nazywa się Step Over. Jest to podstawowa funkcja debuggera. Gdy program zatrzyma się w punkcie przerwania, naciśnięcie tego przycisku spowoduje wykonanie się programu tylko w jednym wierszu kodu. Jeśli punkt przerwania zawiera odwołanie do pewnej funkcji lub bloku funkcyjnego, to po naciśnięciu nastąpi odwołanie i wykonanie zadań w nich zawartych, powrót do programu i zatrzymanie na jego następnym wierszu.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Dzialanie-opcji-Step-Over-zrodlo-ASTOR-step_over.gif)
Drugą funkcją jest Step Into. Działa ona tak samo jak Step Over, jednak różnica tkwi w odwoływaniu się do funkcji i bloków funkcyjnych. W odróżnieniu do poprzedniej opcji, Step Into zamiast wykonywania całości funkcji lub bloku, wykonuje ją krok po kroku. Aby przejść do kolejnego kroku, należy ponownie wcisnąć przycisk Step Into.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Dzialanie-opcji-Step-Into-zrodlo-ASTOR-step_into.gif)
Kolejna funkcja to Step Out. Wykorzystujemy ją, gdy podczas diagnozy znaleźliśmy się w kodzie funkcji lub bloku funkcyjnego i chcemy powrócić do miejsca wywołania. Po naciśnięciu tego przycisku, debugger powróci do miejsca, w którym dana funkcja bądź blok funkcyjny został wywołany. Jeśli odwołanie znajduje się w programie głównym, debugger zrobi przeskok do początku kodu, wykonując przy tym wszystkie operacje do jego końca.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Dzialanie-opcji-Step-Out-zrodlo-ASTOR-step_out.gif)
Ostatnią funkcją jest Run to Cursor. To najprostsza z wszystkich wymienionych funkcji, bazująca na wskazaniu przez użytkownika miejsca, do którego kod ma zostać wykonany, poczynając od bieżącego punktu przerwania.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Dzialanie-opcji-Run-To-Cursor-zrodlo-ASTOR-run_to_cursor.gif)
Pokażę teraz działanie debuggera na skonstruowanym przeze mnie kodzie. Stworzony program zawiera licznik, zliczający do 4. Liczy on pojawienia się zbocza narastającego na zmiennej xZmiana. Dodatkowo dopisałem w kodzie instrukcje IF z pewnymi warunkami, które mają na celu zmienić wartości zmiennej xZmiana lub zresetować licznik. Jednak kod jest błędny i nie daje zamierzonych efektów. Program nie pokazuje występowania błędu w oknie Message, więc nie jest to błąd systemowy, lecz po prostu błąd w zastosowanym algorytmie. W takim przypadku zalecane jest użycie debuggera. Tworzę więc breakpointy w wierszach zawierających licznik i warunki instrukcji IF. Posłużą one do kontroli realizacji programu.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Przykladowe-dzialanie-debuggera-zrodlo-ASTOR-przyklad.gif)
Za pomocą debuggera program realizuje się, zatrzymując się na breakpointach tak, aby użytkownik mógł dokonać analizy. W tym przypadku sprawa jest prosta – program nie wykonuje się, ponieważ wartość zmiennej xZmiana się nie zmienia – stale wynosi TRUE. Nie występuje zbocze narastające, więc licznik nie zwiększa swojej wartości. Aby naprawić program należy dopisać, wedle uznania, komendę zmieniającą wartość zmiennej xZmiana na FALSE. Wtedy z kolejnym cyklem warunek pierwszej instrukcji IF spełni się i zmieni wartość na TRUE, a licznik, będzie działać poprawnie.
Diagnostyka sterownika na podstawie webservera
Aby przeprowadzić działania diagnostyczne sterownika PLC, potrzebujesz dostępu do panelu administracyjnego. Do przybliżenia funkcji panelu, wykorzystasz sterownik Astraada One. W sekcji Tips&Tricks opisaliśmy, jak dostać się do takiego panelu.
Panel administracyjny sterownika Astraada One posiada sekcję diagnostyczną, gdzie można sprawdzić zarówno logi sterownika PLC jak i systemu, a także ustawienia połączeń typu Ethernet lub CAN. Wszystkie te opcje znajdują się w sekcji Diagnostics.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Sekcja-Diagnostics-w-webserverze-zrodlo-ASTOR-606x734.jpeg)
W sekcji PLC-Manager możesz kontrolować zachowanie sterownika PLC, między innymi zatrzymywać lub resetować jego pracę. Dostępne są też informacje o wgranej aplikacji.
Najczęstszym błędem w komunikacji sterownika ze środowiskiem jest konflikt wersji targetów. O targetach i o sposobie ich instalowania do środowiska Codesys opowiedzieliśmy w odcinku nr 2. Niewłaściwe wersje targetów powodują brak komunikacji pomiędzy środowiskiem a sterownikiem. Najłatwiejszym sposobem na sprawdzenie wersji firmware’u Twojego sterownika jest właśnie panel administracyjny.
Jeśli wystąpi taki błąd, zaloguj się do panelu, a następnie w sekcji System kliknij opcję Info.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Sekcja-System-w-webserverze-zrodlo-ASTOR-info_webserver.gif)
Otworzy to stronę z informacjami na temat specyfikacji sterownika takich jak numer seryjny, sposoby komunikacji, temperatura procesora czy zapełnienie pamięci. Numer targetu znajdziesz pod nazwą Firmware Version.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Wersja-firmware-zrodlo-ASTOR-626x734.jpeg)
Jeśli różni się on od targetu wgranego do środowiska Codesys, należy zainstalować poprawną wersję. Aby sprawdzić wersję zainstalowanego targetu, kliknij podwójnie urządzenie znajdujące się w drzewie projektu i wybierz sekcję Information. Wersja targetu opisana jest jako Version.
![](https://www.astor.com.pl/poradnikautomatyka/wp-content/uploads/2022/02/Sprawdzenie-wersji-targetu-w-Codesys-zrodlo-ASTOR-check_target.gif)
Jeśli wersje targetów się zgadzają, możesz zacząć pracę na swoim sterowniku.
To byłoby na tyle w tym odcinku kursu programowania w Codesys. W kolejnym odcinku nr 9, dowiesz się jak korzystać z języka bloków funkcyjnych CFC.
Do zobaczenia!
Autor artykułu: Mateusz Steczkowski