Tworzenie projektów w Codesys ze sterownikami bezpieczeństwa Safety: architektura systemu bezpieczeństwa
Kurs programowania w Codesys odc. 15
Kontakt w sprawie artykułu: Mateusz Pytel - 2023-08-09
Z tego artykułu dowiesz się:
- czym jest sterownik bezpieczeństwa,
- jaka jest jego zasada działania,
- jak przygotować środowisko Codesys oraz projekt aplikacji Safety.
Zapraszamy na kolejny odcinek naszego kursu. Będzie on poświęcony obsłudze sterowników bezpieczeństwa w środowisku Codesys.
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.Sterownik bezpieczeństwa to kluczowy element układu bezpieczeństwa w maszynie, który ma za zadanie zapewnić bezpieczeństwo użytkownikom. Jego głównym zadaniem jest przywrócenie procesu lub maszyny do stanu bezpiecznego w przypadku wystąpienia sytuacji niebezpiecznej.
Sterownik bezpieczeństwa różni się od konwencjonalnych sterowników PLC tak pod względem sprzętu, jak i oprogramowania. Słowo kluczowe, które opisuje różnice między tymi urządzeniami, to „redundancja”.
Sterowniki Safety posiadają zdublowaną architekturę sprzętową. Zarówno warstwa logiki przetwarzania sygnałów, jak i układy wejść/wyjść bezpiecznych są dwukanałowe. Sterownik Safety PLC posiada oddzielny mikroprocesor odpowiedzialny za komunikację, a także dwa redundantne układy procesorowe realizujące logikę. Zbierają one sygnały z dwukanałowych wejść/wyjść Safety I/O, wykonują obliczenia i porównują je wzajemnie. W przypadku wykrycia niezgodności lub uszkodzenia któregoś z układów, proces natychmiast zostaje przekierowany do stanu bezpiecznego. Dwukanałowość układów Safety I/O zapewnia, że sygnał wejściowy zostanie poprawnie przetworzony, a sygnał wyjściowy pojawi się na wyjściu nawet w przypadku uszkodzenia jednego z kanałów.
Rozbudowane funkcje autodiagnostyki wykrywają wszelkie możliwe usterki wewnętrzne – zarówno sprzętu, jak i oprogramowania, dzięki czemu awaria sterownika nie prowadzi do sytuacji „niebezpiecznej”. Sterowniki Safety PLC posiadają również ważne zabezpieczenia przed nieautoryzowanym dostępem. Są one realizowane poprzez wielopoziomowy dostęp chroniony hasłem oraz śledzenie zmian w programie Safety. Sterowniki Safety przechodzą rygorystyczne testy podczas procesu certyfikacji, mające na celu eliminację błędów zarówno w warstwie sprzętowej, jak i oprogramowaniu.
Sterownik bezpieczeństwa jest urządzeniem typu Slave – w systemie, który kontrolowany jest przez jednostkę nadrzędną. Najczęściej jest nią zwykły sterownik PLC. Do opracowania tego odcinka kursu użyto sterownika bezpieczeństwa Astraada SC-1000, a komunikacja pomiędzy sterownikami realizowana jest za pomocą protokołu EtherCAT. Natomiast komunikacja bezpieczeństwa pomiędzy sterownikiem Safety a układami wejść/wyjść Safety realizowana jest za pomocą certyfikowanego protokołu bezpieczeństwa FSoE (Fail Safe over EtherCAT), dla którego EtherCAT jest medium komunikacyjnym.
Sterownik bezpieczeństwa Astraada, podobnie jak sterowniki Astraada One, programuje się w środowisku Codesys, co ułatwia szybkie zbudowanie spójnego układu bezpieczeństwa. Programowanie funkcji bezpieczeństwa odbywa się za pośrednictwem certyfikowanego rozszerzenia Safety w tym oprogramowaniu. Sterownik Safety korzysta z biblioteki PLCopen Safety, która oferuje certyfikowane bloki funkcyjne dedykowane do budowania programów bezpieczeństwa. Ważną zaletą jest dwukierunkowa wymiana danych pomiędzy jednostką główną oraz jednostką Safety, dzięki czemu możliwa jest wizualizacja stanu bezpieczeństwa maszyny oraz wzajemne oddziaływanie programów.
Przygotowanie środowiska do utworzenia projektu Safety
Aby móc dodać oraz programować sterownik bezpieczeństwa Astraada, musisz posiadać odpowiednią wersję środowiska Codesys na swoim komputerze. Rekomendowaną wersją oprogramowania jest wersja 3.5 SP16 Patch 4. Jeśli chciałbyś zacząć pracę ze sterownikiem bezpieczeństwa Astraada na innej wersji Codesys, najpierw skonsultuj tą kwestię z naszym Działem Pomocy Technicznej.
Dodatkowo oprogramowanie wymaga specjalnych plików sprzętowych Device Repository oraz Package Manager, które można uzyskać, kontaktując się z Działem Pomocy Technicznej ASTOR.
Odpowiednio przygotowane środowisko wraz ze sterownikiem powinno posiadać:
- Rozszerzenie Safety (E-IO_Safety_Extension_V1.5.0.0_for_CODESYS_V3.5.14.40) w narzędziu Package Manager.
- Firmware w wersji 1.22.3 zainstalowany w sterowniku nadrzędnym.
- Target w projekcie w wersji 1.22.3.
- Odpowiednie pliki dotyczące modułów Safety za pomocą narzędzia Device Repository.
Dodanie sterownika bezpieczeństwa do projektu Codesys
Jeśli wszystkie wyżej wymienione punkty zostały spełnione, możesz przejść do utworzenia projektu Safety. Aby to zrobić, wybierz opcję New Project, a następnie Empty Safety Project oraz nazwij swój projekt i kliknij przycisk OK:
W taki sposób utworzyliśmy nowy projekt Safety. Domyślnie jest on pusty, zatem musisz dodać nowe urządzenie do swojego projektu. Kliknij prawym przyciskiem myszy na jedyny utworzony segment w drzewku projektowym i wybierz Add Device. Z listy należy wybrać sterownik nadrzędny, który jest podłączony do sterownika Safety:
Po dodaniu sterownika kliknij na niego dwukrotnie i w menu Communication Settings wpisz jego adres IP oraz zatwierdź klawiszem ENTER, aby połączyć się ze sterownikiem:
Po dodaniu sterownika czas na dodanie i konfigurację komunikacji z sterownikiem bezpieczeństwa. W tym przypadku, będzie to wykonywane z wykorzystaniem protokołu EtherCAT, za pomocą Buscouplera Astraada. Zacznij od dodania EtherCAT Master do projektu. Wybierz prawym przyciskiem myszy sterownik nadrzędny, wybierz opcję Add Device i dodaj EtherCAT Master:
Następnie skonfiguruj połączenie EtherCAT – poprzez kliknięcie na EtherCAT Master i ustawienie adresu MAC wykorzystywanego portu (w przykładowym sterowniku jest to eth1), uprzednio ustawiając port RJ45 w sterowniku nadrzędnym do komunikacji za pomocą tego protokołu, co można zrobić z poziomu webservera. Warto także rozwinąć segment Options i zaznaczyć opcję Auto restart slaves – umożliwi to automatyczne nawiązywanie komunikacji z urządzeniami na wypadek utraty komunikacji:
Dzięki tej konfiguracji dostępna będzie opcja Scan for Devices, która automatycznie wykryje połączone ze sterownikiem urządzenia slave, które wykorzystują protokół EtherCAT, czyli w tym przypadku Buscoupler oraz sterownik bezpieczeństwa. Opcję tę możesz znaleźć poprzez kliknięcie prawym przyciskiem myszy na EtherCAT Master w drzewku projektowym:
Po krótkim czasie zostanie wyświetlona lista podłączonych urządzeń. Aby dodać wybrane urządzenia do projektu, należy przytrzymać lewy klawisz CTRL na klawiaturze i jednocześnie kliknąć lewym przyciskiem myszy na poszczególne urządzenia. Po zaznaczeniu odpowiednich urządzeń, należy wybrać opcję Copy to project:
Aplikacja poprosi o podanie loginu i hasła. Najwyższy poziom dostępu oferuje login Owner, który standardowo nie ma zaprogramowanego żadnego hasła. W związku z tym należy podać sam login i potwierdzić klawiszem OK:
Drzewko zostanie automatycznie rozbudowane o urządzenia Safety wraz z bibliotekami i opcjami umożliwiającymi stworzenie programu Safety i wgrania go do urządzenia. Jeśli zostały dodane same urządzenia, należy dodać pozostałe części projektu samodzielnie, aby drzewko projektu wyglądało jak na zdjęciu poniżej.
Przy korzystaniu z dodatkowych modułów Safety I/O należy sprawdzić, czy posiadają one poprawnie zdefiniowany adres ID sieci FSoE. Aby to zrobić, należy zweryfikować stan przełączników DIP na wewnętrznej stronie modułu I/O. Wszystkie przełączniki fabrycznie powinny być ustawione na pozycję OFF. Należy wybrać odpowiedni adres FSoE, zgodnie z wymaganiami. Na przykład, jeśli moduł I/O ma mieć adres 1, należy przestawić drugi przełącznik z prawej strony dolnego segmentu w tryb ON.
Następnie przejdź do drzewa projektu i dwukrotnie kliknij dodany moduł I/O w segmencie Logical I/Os. W efekcie wyświetli się menu konfiguracyjne modułu I/O. W tym miejscu ważne jest, aby upewnić się, czy adres Slave (adres podrzędny) zgadza się z fizycznym ustawieniem przełączników. Należy sprawdzić, czy adres w menu konfiguracyjnym odpowiada rzeczywistemu stanowi przełączników.
Jeżeli wystąpi niezgodność, kompilator wykryje błąd i uniemożliwi wgranie programu. Następnym krokiem jest dodanie obiektu POU (Program Organization Unit), w którym można zapisać program w języku Safety FBD. Aby to zrobić, kliknij prawym przyciskiem myszy na SafetyApp i rozwiniętą opcję Add Object. Masz do wyboru dwa rodzaje obiektów POU: Basic i Extended. Obiekt Basic oferuje mniejszą liczbę obsługiwanych funkcji i rodzajów zmiennych w porównaniu do obiektu Extended. Ponadto, można ograniczyć dostęp do tych dwóch obiektów, tak aby zalogowany użytkownik miał dostęp tylko do określonego typu. W tym przykładzie wybierzemy obiekt Extended:
W następnym odcinku przejdziemy do tworzenia aplikacji Safety.