W dziedzinie automatyki przemysłowej logika drabinkowa pozostaje jednym z najczęściej używanych języków programowania; jednakże w przypadku bardziej złożonych obiektów sterujących programowanie-obiektowe jest z pewnością bardzo wydajnym podejściem. Omówmy najpierw programowanie-obiektowe:
Programowanie-obiektowe to zaawansowany paradygmat programowania w językach komputerowych-wysokiego poziomu. Tę filozofię projektowania można również zastosować do programów PLC w przemysłowych systemach sterowania. Chociaż nie możemy wdrożyć wielu doskonałych funkcji programowania-obiektowego-takich jak „dziedziczenie”-, a język PLC może nawet nie posiadać cech języka programowania-obiektowego, podstawowymi pojęciami programowania-obiektowego są klasy i instancje klas (tj. obiekty). Musimy jedynie wykorzystać te koncepcje. W programowaniu komputerowym musimy abstrahować i uogólniać pewne byty, aby zdefiniować klasy. Jednakże w przemysłowych systemach sterowania obiekty sterujące, takie jak silniki i zawory, są jasno zdefiniowanymi kategoriami sterowania; możemy zdefiniować dla nich klasy bezpośrednio, bez potrzeby abstrakcji. W poniższych sekcjach wykorzystany zostanie język programowania Step7 firmy Siemens i język programowania Unity firmy Schneider w celu wyjaśnienia programowania obiektowego sterowników PLC.
I. Metody wdrażania
Programowanie-obiektowe w kroku 7 jest realizowane przy użyciu bloków funkcyjnych (FB). Kiedy pojawia się ten temat, ludzie często myślą o modułowym podejściu do programowania zaproponowanym przez firmę Siemens. Rzeczywiście jest to ta sama koncepcja, ale wprowadzone przez firmę Siemens terminy takie jak „modularyzacja”, „bloki danych w tle” i „wiele środowisk” nie zawsze pozwalają użytkownikom jasno zrozumieć i zastosować tę doskonałą filozofię projektowania.
Jeśli jednak podejdziesz do tego z perspektywy programowania-obiektowego, możesz znacznie lepiej zrozumieć ten wzorzec projektowy. „Blok FB” jest uważany za „klasę”; można go postrzegać jako grupę kodu dla podobnych obiektów sterujących. Na przykład dla przetwornicy-zmiennej częstotliwości MM440 można zapisać blok FB o nazwie „MtrMM440”. W programowaniu-obiektowym nazywa się to „klasą”. Jeśli chcesz zaprogramować sterowanie dla konkretnego silnika, możesz przypisać do niego blok DB tła-w programowaniu-zorientowanym obiektowo. Nazywa się to implementacją klasy (tj. tworzeniem instancji klasy: obiektu). Jeśli chcesz sterować wieloma silnikami, możesz przypisać różne bazy danych tła do tego bloku FB, co jest równoznaczne z utworzeniem wielu instancji klasy.
Step7 zawiera inny typ bloku programu: blok FC. Programowanie głównie przy użyciu bloków FC określa się w systemach firmy Siemens jako programowanie strukturalne, które można porównać do programowania proceduralnego w programowaniu komputerowym,-tj. programowania opartego wyłącznie na funkcjach-.
Programowanie za pomocą oprogramowania Unity firmy Schneider zapewnia lepsze zrozumienie programowania-obiektowego. Jego definicje DFB obejmują parametry wejściowe/wyjściowe, zmienne prywatne/publiczne i implementację kodu,-które są dokładnie podstawowymi elementami „klasy” w komputerowym programowaniu-orientowanym obiektowo. Tworzenie instancji klasy (obiektu) jest tak proste, jak utworzenie zwykłej zmiennej „Boolean”; wystarczy zdefiniować zmienną tej „klasy” w „Blokach funkcyjnych”.
Zarówno Step7, jak i Unity obsługują zarówno podejścia do programowania proceduralnego, jak i obiektowego-. Różnica między tymi dwoma podejściami jest podobna do różnicy między programowaniem w C i C++ w-językach komputerowych wysokiego poziomu.
W poniższym wyjaśnieniu bloki FB w kroku 7 i DFB w Unity będą nazywane „klasami”, podczas gdy połączenie FB i bazy danych tła w kroku 7, a także instancje DFB w Unity będą nazywane „obiektami”.
II.-Architektura programowania zorientowanego obiektowo
Powyższa dyskusja obejmuje szczegóły implementacji, ale filozofia programowania opiera się na architekturze programu. Samo użycie metod obiektowych-w określonej części kodu nie oznacza, że cały program jest zorientowany-obiektowo. Tego typu programowanie wymaga podejścia opartego na następujących aspektach:
1. Projekt obwodu strukturalnego.
W tej sekcji skupiono się przede wszystkim na zautomatyzowanych liniach produkcyjnych; w przypadku samodzielnych obrabiarek można zastosować uproszczoną konstrukcję:
<1>Warstwa zautomatyzowanej linii produkcyjnej: Jest to najwyższy poziom, obejmujący główny sterownik PLC sterujący różnymi strefami znajdującymi się pod nim.
<2>Warstwa projektu: ta warstwa ma niezależny system dystrybucji energii, ale nie ma sterownika PLC; składa się wyłącznie z rozproszonych modułów sterowanych przez zautomatyzowaną linię produkcyjną. Jak sama nazwa wskazuje, posiada wysoki stopień niezależności i może być zaprojektowany i wyprodukowany jako odrębny projekt. Gdy zautomatyzowana linia produkcyjna jest stosunkowo niewielka, warstwę tę można pominąć.
<3>Poziom grupy funkcjonalnej: W oparciu o podziały procesów segmenty urządzeń realizujące określoną funkcję procesu są grupowane w grupę funkcjonalną. Ta grupa należy do poziomu inżynierskiego; w przypadku pominięcia poziomu inżynieryjnego należy on do poziomu zautomatyzowanej linii produkcyjnej. Programowanie-zorientowane obiektowo niekoniecznie wymaga użycia powyższej struktury, ale dobrze-zaprojektowana struktura elektryczna lepiej sprzyja programowaniu-zorientowanym obiektowo.
2. Cała logika dowolnego obiektu sterującego jest zaimplementowana w ramach „klasy”.
Aby to osiągnąć, konieczna jest analiza informacji związanych z obiektem kontroli. Na przykład w przypadku silnika należy wziąć pod uwagę następujące istotne informacje:
Informacje wejściowe:
<1>,Informacje dotyczące zabezpieczeń obwodów, takie jak wyłącznik automatyczny silnika i przekaźnik termiczny.
<2>,Informacje dotyczące zabezpieczeń funkcjonalnych, takie jak wyłączniki krańcowe silników napędowych, wyłączniki ciśnieniowe wentylatorów i wyłączniki poziomu oleju w pompach olejowych.
<3>Warunki uruchamiania i zatrzymywania: Chociaż wspomniane powyżej zabezpieczenia obwodu i zabezpieczenia funkcjonalne mogą spowodować zatrzymanie silnika, a reset może spowodować ponowne uruchomienie, warunki, o których mowa tutaj, dotyczą uruchamiania i zatrzymywania podczas normalnej pracy-takiej jak etapy procesu sterowania sekwencyjnego.
<4>Tryby sterowania: takie jak ręczny i automatyczny.
<5>Reset błędu: Ponowne uruchomienie systemu za pomocą sygnałów resetowania.
Informacje wyjściowe:
<1>Wyjścia sterujące, takie jak główny stycznik sterujący silnikiem.
<2>Wyjścia informacji o stanie
<3>Wyjścia błędów
Informacje o przechowywaniu statusu:
Zmienne pośrednie wykorzystywane do implementacji kodu, a także zmienne statusowe, które mogą być odczytywane przez HMI. Zintegruj wszystkie powyższe informacje w jedną klasę i ujednolić parametry klasy tak bardzo, jak to możliwe. Jednakże nadal istnieją pewne różnice w porównaniu z językami programowania-wysokiego poziomu. W przypadku kroku 7 należy przestrzegać następującego standardu: struktura programu jest realizowana przy użyciu FC, a sterowanie obiektami jest realizowane przy użyciu bloków FB, co ilustruje następujący schemat strukturalny (którego struktura elektryczna opiera się na powyższym wstępie): Jest to jedynie przybliżona architektura programu PLC; dobra architektura powinna być bardziej wszechstronna i naukowa.
3. Ostrożnie planuj struktury danych
Zdefiniowanie struktur danych jest kluczowe i należy dążyć do maksymalnego ujednolicenia tych struktur, nie martwiąc się o przestrzeń dyskową; nowoczesna pamięć PLC jest w stanie pomieścić duże ilości danych. Warto zauważyć, że w kroku 7, jeśli to możliwe, powinieneś unikać definiowania typów-definiowanych przez użytkownika (UDT) poza klasami; zamiast tego zdefiniuj je w klasach. Chociaż może to skutkować powielaniem definicji tej samej struktury w różnych klasach, zwiększa to niezależność klas.
W kolejnych sekcjach porównamy te dwa podejścia do programowania:
Zalety programowania-obiektowego W porównaniu z logiką drabinkową, programowanie-obiektowe ma następujące zalety:
• Kod jest przenośny i łatwy do ponownego użycia;
• Łatwo jest używać funkcji matematycznych, pętli i innych konstrukcji;
• Programowania-obiektowego uczy się praktycznie na każdym kursie programowania komputerowego;
• Kod może działać na różnych platformach sprzętowych.
Aby opanować programowanie-obiektowe, musisz najpierw zrozumieć koncepcję obiektów i sposób ich używania. Po napisaniu obiektu lub klasy można go łatwo ponownie wykorzystać w wielu wywołaniach. Na przykład utwórz obiekt do sterowania silnikiem, który obsługuje wszystkie wejścia, wyjścia i błędy. W razie potrzeby można sterować wieloma silnikami, tworząc wielokrotnie instancję tego pojedynczego obiektu sterującego. Nazywa się to tworzeniem-na żądanie. Gdy trzeba sterować wieloma silnikami, ten pojedynczy obiekt może być używany wielokrotnie. Jest wywoływana w razie potrzeby, a instancje są tworzone w miarę ich używania.
Każde wystąpienie każdego silnika ma swoją własną charakterystykę, taką jak zatrzymanie silnika, praca silnika, prędkość silnika i przeciążenie silnika. Większość prac programistycznych jest zakończona w momencie pierwszego utworzenia obiektu. Jest to inny sposób myślenia niż logika drabinkowa i ma większe możliwości, ponieważ raz zbudowany obiekt jest łatwy w użyciu i ponownym użyciu. Programowanie-zorientowane obiektowo ułatwia wykonywanie złożonych funkcji matematycznych, obliczeń pętli, tablic i zagnieżdżonych podprogramów. Praktycznie każdy kurs programowania komputerowego-czy to w szkole średniej, na studiach, czy też tutoriale online-uczy się tej koncepcji. Utworzony kod jest przenośny i może działać na różnych platformach sprzętowych.
„Logika drabinkowa jest zgodna z formatem schematów drabinkowych stosowanych w systemach sterowania przekaźnikami i większość ludzi może szybko się jej nauczyć i opanować”.
Jednak w porównaniu z logiką drabinkową programowanie-obiektowe ma następujące wady:
• Wyższe koszty;
• Bardziej stroma krzywa uczenia się;
• Rozwiązywanie problemów nie jest szczególnie łatwe dla personelu zajmującego się konserwacją;
• Kompilacja jest zwykle wymagana przed przesłaniem kodu źródłowego do procesora.
W porównaniu z logiką drabinkową programowanie-obiektowe często wymaga większej ilości pamięci i większej mocy obliczeniowej, co skutkuje wyższymi kosztami. Nauka obiektowego-języka programowania może zająć więcej czasu. Prawdopodobnie wymagane jest nauczanie w klasie, a opanowanie podstawowych koncepcji wymaga dużej ilości czasu, praktyki, testowania i zastosowania. Programiści muszą często uczyć się programowania-obiektowego, aby używać znaczników do śledzenia kodu lub debugerów do debugowania logiki. W przypadku tego typu programowania-wysokiego poziomu wdrożenie funkcji monitorowania online-w czasie rzeczywistym może być trudne.
Przed pobraniem kodu źródłowego do sterownika należy go skompilować. Zazwyczaj kod źródłowy nie jest przechowywany w pamięci procesora. Oznacza to, że należy zachować ostrożność podczas tworzenia kopii zapasowej kodu źródłowego, ponieważ skompilowanego kodu zwykle nie można edytować. W przypadku programowania-obiektowego pliki bibliotek muszą być połączone z innymi zasobami używanymi w procesie kompilacji. Bez zrozumienia linków i zasobów uruchomienie programu będzie trudne.
Zalety logiki drabinkowej:
Logika drabinkowa to prosta,-samodokumentująca się metoda kodowania-niektórzy nawet kwestionują, czy kwalifikuje się ona jako język programowania. Jest zgodny z formatem diagramów drabinkowych stosowanych w systemach sterowania przekaźnikami i większość ludzi może szybko się go nauczyć i opanować. Od dziesięcioleci jest to jedyny język programowania szeroko stosowany w automatyce maszyn i w dającej się przewidzieć przyszłości pozostanie jednym z głównych języków programowania w branży automatyki.
Z biegiem czasu, w miarę jak do branży wchodzili ludzie z różnych środowisk i dziedzin, do zestawu narzędzi automatyki przemysłowej wprowadzono różne języki programowania. Należą do nich programowanie bloków funkcyjnych, tekst strukturalny, programowanie stanów i sekwencyjne wykresy funkcji. Te cztery języki programowania wraz z logiką drabinkową stanowią standardowe języki programowania zdefiniowane w normie Międzynarodowej Komisji Elektrotechnicznej (IEC) IEC 61131-3.
Logika stojąca za normą IEC 61131 polega na tym, że jeśli każdy dostawca będzie przestrzegać tego standardu,-przynajmniej w pewnym stopniu-osoba będzie musiała nauczyć się tylko tych pięciu języków programowania, aby łatwo przełączać się między platformami oferowanymi przez różnych dostawców. Jednak tak nie jest.
To samo dotyczy podstawowej logiki drabinkowej (takiej jak użycie styków i cewek przekaźników); jednakże podczas programowania należy poznać składnię i doświadczenia użytkownika każdego dostawcy, a także specyfikę korzystania z platformy programistycznej. Pomimo braku standaryzacji logika drabinkowa ma następujące zalety w porównaniu z programowaniem-obiektowym:
• Dobrze-nadaje się do sterowania maszynami i procesami;
• Jest łatwiejszy do zrozumienia, ponieważ z natury jest-dokumentowany;
• Ułatwia rozwiązywanie problemów w kontrolowanym systemie;
• Łatwo jest debugować;
• Kod źródłowy można zazwyczaj przechowywać w procesorze.
Logika drabinkowa-dobrze nadaje się do sterowania maszynami i procesami, szczególnie w systemach automatyki z dużą liczbą dyskretnych wejść i wyjść (we/wy). Z biegiem lat logika drabinkowa była również stale udoskonalana pod kątem obsługi analogowych wejść/wyjść, dzięki czemu jest bardziej odpowiednia dla szerokiego zakresu zastosowań związanych ze sterowaniem procesami
W porównaniu do aplikacji do sterowania maszynami, aplikacje procesowe mają zazwyczaj większy udział analogowych wejść/wyjść.
Ponieważ logika drabinkowa jest łatwiejsza w użyciu niż programowanie-obiektowe, wielu wykwalifikowanych techników i inżynierów może szybko się jej nauczyć. Logika jest wysoce systematyczna i zorganizowana, a jej-samodokumentujący się charakter ułatwia zrozumienie i opanowanie. Zanim urządzenie zostanie aktywowane, każda linia kodu musi mieć wartość true. Jeśli do sterowania jest pięć silników, wymagane jest co najmniej pięć linii kodu, co znacznie upraszcza proces.
„Kod źródłowy logiki drabinkowej i deskryptory są zwykle przechowywane w kontrolerze, co eliminuje potrzebę dostępu do kodu źródłowego, a tym samym eliminuje frustrację, której często doświadczają programiści, próbując zrozumieć skompilowane programy”.
Dla inżynierów elektryków i personelu konserwacyjnego logika drabinkowa jest wysoce intuicyjna. Chociaż logika drabinkowa wymaga innego sposobu myślenia niż programowanie-obiektowe, można ją szybko opanować poprzez naukę, a zrozumienie kodu napisanego przez innych zajmuje mniej czasu. Jest krystalicznie jasne, kiedy logika jest prawdziwa, a kiedy fałszywa. Nawet osoby z ograniczonym doświadczeniem w programowaniu mogą z łatwością zrozumieć takie pojęcia, jak stany włączenia/wyłączenia, zasilanie cewki, zmienne porównawcze i typowe funkcje matematyczne.

Jest prosty i łatwy w użyciu, usprawniając rozwiązywanie problemów i debugowanie. Monitorując logikę, łatwo jest zrozumieć aktualne warunki pracy. Nie jest wymagane żadne wykształcenie informatyczne ani zaawansowane umiejętności programowania. Dzięki logice drabinkowej personel konserwacyjny i inżynieryjny może z łatwością śledzić proces i rozumieć, co się dzieje. Logikę drabinkową można traktować jako tablicę prawdy: jeśli logika po lewej stronie jest prawdziwa, aktywowana jest logika po prawej stronie.
Kod źródłowy i deskryptory logiki drabinkowej są zazwyczaj przechowywane w sterowniku. Eliminuje to frustrację, której często doświadczają programiści, próbując zrozumieć skompilowany kod bez dostępu do kodu źródłowego.-Problem ten jest również powszechny w programowaniu-obiektowym.
Jednakże w porównaniu z programowaniem-obiektowym logika drabinkowa ma również następujące wady:
• Programiści komputerowi i specjaliści IT nie są zaznajomieni z logiką drabinkową;
• Trudno jest wykonywać funkcje matematyczne, przetwarzać tekst i przetwarzać dane;
• Zależy od czasu skanowania;
• Do wykonania wymaga specjalistycznego sprzętu, takiego jak programowalny sterownik logiczny (PLC).
Logika drabinkowa to język symboliczny, którego programiści i specjaliści IT nie są zaznajomieni, ponieważ nie uczą się go w szkole. Obsługa funkcji matematycznych, ciągów tekstowych i danych w logice drabinkowej może być trudna, przede wszystkim dlatego, że logika drabinkowa nie została pierwotnie zaprojektowana do obsługi tych funkcji.
Logika drabinkowa zależy również od czasu skanowania. Większe programy wymagają więcej czasu na skanowanie i przetwarzanie logiki. Podczas wykonywania logiki drabinkowej system odczytuje wejścia, skanuje logikę, aktualizuje tabele danych i wyjścia, przeprowadza komunikację, a następnie powtarza cykl. Można wdrożyć takie funkcje, jak przerwania i inne techniki programowania, aby zapewnić szybsze wykonanie określonej logiki.
Chociaż programowe-sterowniki PLC skonfigurowane w oparciu o logikę drabinkową można uruchomić na komputerze PC, sprzęt (taki jak sterownik PLC) zazwyczaj musi być zgodny z oprogramowaniem do programowania i najlepiej kupić oba od tego samego dostawcy. Zapewnia to kompatybilność, ale nie jest szczególnie wygodne, jeśli chcesz zmienić dostawcę.
Oprócz porównania zalet i wad logiki drabinkowej i programowania-obiektowego użytkownicy powinni także ocenić, w jaki sposób te języki programowania będą używane w środowisku, w którym zostaną wdrożone. Jeśli w fabryce lub obiekcie ujednolicono już logikę drabinkową, nie zaleca się zastępowania jej programowaniem-obiektowym, nawet jeśli to drugie jest lepiej dostosowane do danego zastosowania. Ponieważ wykorzystanie programowania-obiektowego stale rośnie, oczekuje się, że przez nadchodzące dziesięciolecia będzie ono współistnieć z logiką drabinkową. Dobrze-myślącym przyszłościowo specjalistom w dziedzinie automatyzacji-dobrze byłoby opanować oba języki.




