Dzień dobry, drodzy czytelnicy tego artykułu. Piszę to w formacie przeglądu
Małe ostrzeżenieChcę ostrzec, że jeśli od razu zrozumieliście, o co chodzi z tytułu, radzę pierwszą pozycję (właściwie, jądro PLC) wymienić na cokolwiek z wyższej półki cenowej.
Żadna oszczędność finansowa nie jest warta takiej ilości nerwów, subiektywnie.
Dla tych, którzy nie boją się nieco siwych włosów i amplitudy nerwowego tiknięcia, później szczegółowo opiszę, jak tworzyłem to technologiczne cudo. W tym artykule jednak krótka analiza projektu z pewną dozą krytycyzmu.
Narodziny. Postawienie zadania
Właściwie, pracuję w biurze projektowym i testujemy sprzęt automatyzacji do integracji w naszych zakładach pod klucz. Niedawno na magazyn dotarł sprzęt OVEN i postanowiono z niego zbudować stanowisko testowe:
- PLC110[M02]-MS4 (środowisko MasterSCADA 4D)
- Panel operatorski SP307
- Moduł uniwersalny do wprowadzania sygnałów analogowych MW110-224.2A
- Moduł wprowadzania sygnałów z czujników tensometrycznych MW110-4TD
- Moduł pomiarowy MW110-220.3M
Struktura systemu została wybrana z podziałem sieci według przeznaczenia:
- Modbus RTU na bazie RS-485 — komunikacja PLC z podrzędnymi urządzeniami (moduły, falowniki, inteligentne czujniki, panel HMI SP307), PLC-mistrz sieci.
- Modbus TCP na bazie Ethernet — komunikacja między różnymi PLC oraz z serwerem OPC
- PC-serwer Serwery OPC i systemy SCADA są jednocześnie bramą między dwiema różnymi sieciami (korporacyjna LAN przedsiębiorstwa i sieć controllera Modbus TCP (dwa adaptery sieciowe z routowaniem danych standardowymi środkami Windows)
- Korporacyjny LAN ma dostęp do internetu przez serwer proxy
Struktura systemu w ogólnym zarysie przedstawiona jest na poniższym obrazie:
![BARAN PLC110[M02]-MS4, HMI, OPC i SCADA, czyli ile herbaty rumiankowej potrzebuje człowiek. Część 1](/wp-content/uploads/2019/10/18cb2554a35fbb11111a78572d0f2bf9.png)
Zaprojektowana funkcjonalność
- Zbieranie i przekazywanie danych z PLC do serwera OPC
- Lokalne zarządzanie i monitorowanie za pomocą panelu HMI
- Zarządzanie i monitorowanie z SCADA poprzez serwer OPC
- Zarządzanie z dowolnego PC w sieci LAN przedsiębiorstwa i przez internet za pomocą klienta SCADA
- Podłączenie mobilnych monitorów OPC przez LAN i internet
- Oczywiście archiwizacja i generowanie raportów
Chyba niczego nie pominęliśmy. Ogólny opis systemu jest, a teraz właściwie przechodząc do tematu (sposoby rozwiązania będę opisywać w artykułach dotyczących realizacji każdego węzła):
Napotkane trudności
1. Dokumentacja do PLC
Beta-testy zadeklarowanego PLC opartego na jądrze MasterSCADA 4D zostały ogłoszone przez producenta w 2012 roku. Mimo tak imponującego okresu istnienia koncepcji, wszystko, co ma deweloper w 2019 roku, to podręcznik programowania o długości 28(!?) stron, na których przydatnych informacji jest prawie tyle co nic, a zrzuty ekranu w podręczniku pochodzą z MasterSCADA 3D, co jest dość zabawne biorąc pod uwagę, że interfejs się zmienił.
Wątek na forum z 20 tematami jest także aktywnie wspierany przez trzech zwolenników i menedżera sprzedaży.
2. Architektura modułów PLC
To osobny temat do omówienia. Krótko: PLC komunikuje się z modułami jako urządzeniami Modbus RTU slave, które wcześniej należy skonfigurować za pomocą narzędzia, podłączając każdy osobno do komputera przez konwerter RS-485.
Oczywiście tacy mądrzy panowie potrafią to zrobić bez konwertera przez PLC, łącząc moduły w sieci szeregowo i zapisując odpowiednie rejestry, ale takie umiejętności przychodzą z doświadczeniem i ogromną ilością bólu.
Dla dewelopera, który pierwszy raz widzi taką architekturę, zupełnie nie jest przyjazna dla użytkownika.
Również wszystkie moduły analogowe mają tendencję do awarii z nieznanych powodów, zabierając ze sobą całą sieć RS-485 w Terra Incognita, ale o tym także chcę opowiedzieć osobno, to cała epopeja, oczywiście. Problemy, jak można się domyślić, mają już 10 lat, a producent żartuje. „Trzeba przyznać, nie udały nam się szablony”, jednak to jedyny interfejs komunikacji z modułami, a ludzie, całkiem poważnie, od dawna zapisują swoje realizacje Modbus RTU.
Tymczasem rumiankowa herbata się kończyła… Słońce zachodziło za horyzont
3. IDE MasterSCADA
Nie będziemy mówić o narzędziach graficznych, nie testowałem ich zbyt intensywnie, ale od razu powiem, że mi się nie podobały.
Mówimy o realizacji wymiany danych i językach standardu IEC:
Fizyczne wejścia i wyjścia kontrolera nie są zmiennymi globalnymi i nie można się do nich odwołać z dowolnej części programu, używając aliasu, np. „DI1”. Do każdego programu należy je przeciągnąć ręcznie, tam formuje się zmienna lokalna, która dziedziczy lub przekazuje wartość. Tzn. sama istota PLC, w moim przewidywaniu, została nieco utracona: urządzenie powinno upraszczać programowanie logiki pracy kanałów fizycznych do poziomu „Jeśli zadziałał wejście DI1 — Włączamy wyjście DO1”, a wygląda to tak «Wejście DI1 — Zmienna LI1 — Zmienna LO1 - Wyjście DO1», a także z powodu braku wiedzy o tej zasadzie w IDE można natknąć się na doskonałe ostrzeżenie „Nie można skonwertować Boolean-Boolean” (prawdopodobnie to jeden z nich jest wskaźnikiem, ale wyobrażam to sobie w wersji twórców, tak harmonijnie).
Biblioteki języków ST, FBD, SFC są dość obszerne i oferują wiele możliwości łatwego programowania, jednak te komponenty nie są funkcjami, lecz klasami, w których są zaszyte metody, a na większości z nich brakuje dokumentacji z opisem funkcji i typów danych. Moja upartość zaprowadziła mnie do bibliotek jądra CodeSys, stąd te wszystkie funkcje zostały wzięte, a ich dokumentacja pomogła.
4. Wymiana z panelem SP307
Dość interesujące wydarzenie dla tych, którzy nie mają co zrobić przez kilka dni.
Standardowe testowanie GUI (HMI lub SCADA) to dla mnie wykonanie 6 prób:
- Odczyt sygnału dyskretnego
- Zapis sygnału dyskretnego
- Odczyt wartości całkowitej
- Zapis wartości całkowitej
- Odczyt wartości rzeczywistej
- Zapis wartości rzeczywistej
Odpowiednio, rysuję na ekranie 6 komponentów-prymitywów i każdy z nich kolejno sprawdzam
Wymiana jest dokładnie taka sama jak z modułami, ale z osobnego portu PLC RS-232/485, i, jak się wydaje, bardziej stabilna. Ponieważ HMI jest niewolnikiem, to pisałem do niego w przypadku zmiany, a odczytywałem pollingiem co 500 ms, aby nie przeoczyć działań operatora.
Pierwsze 4 punkty zostały wykonane doskonale, ale 5 i 6 sprawiły problemy.
Wysyłamy dane typu Single Float, na ekranie je wyświetlamy i widzimy, że dane są inne, chociaż wszystkie ustawienia wyjścia (Float, wymiar 1 rejestr i inne) są skonfigurowane prawidłowo. Będzie nieprawdą powiedzieć, że w dokumentacji nie opisano tego przypadku, jednak spróbuj znaleźć, w której i gdzie, to jest strona zabawna.
Po histerycznym przebadaniu wszystkich ustawień dotyczących samych danych i ich wysyłki, piszemy do wsparcia technicznego, odpowiedź zajmuje średnio 5-6 dni kalendarzowych, działamy zgodnie z standardowym skryptem wsparcia technicznego: „Sprawdź, czy zasilanie jest włączone — sprawdź wersję oprogramowania — prosimy o czekanie jeszcze tydzień — Zajmujemy się tym sami”.
Swoją drogą, udało się to rozwiązać poprzez zaznaczenie jednego zaznaczenia w całkowicie nieadekwatnym miejscu z całkowicie nieadekwatnym podpisem.
W funkcjonalności ekranu nie przewidziano wprowadzenia sygnału analogowego formatu „Suwak”, można wpisać tylko w polu tekstowym cyframi. To po prostu wspaniałe, albo korzystamy z przycisków „±” i skryptu samodzielnie, albo wprowadzamy cyfrę z klawiatury, a o delikatnym sterowaniu jakimś napędem zapominamy.
Nie będę zbytnio przeciążać artykułu, dlatego opiszę problemy z górnym poziomem w części 2.
Podsumowując, chcę zaznaczyć, że miałem wystarczającą swobodę i dużo czasu na rozwiązanie tych problemów, które na pierwszy rzut oka mogą wydawać się błahe, ale powodują wiele bólu u poszkodowanego. W warunkach ograniczonego czasu stawianie czoła takim problemom jest krytyczne.
P.S.: Wszystkie tezy przedstawione tutaj są subiektywne i są jedynie próbą ostrzeżenia nieprzygotowanych, a nie dyskryminowania producentów, proszę patrzeć na ten artykuł właśnie z tej perspektywy.
Druga część już tutaj:
Źródło: habr.com
