OOP – nowy wymiar programowania sterowników PLC w e!COCKPIT
Najnowsza aktualizacja normy IEC 61131 zawiera standard programowania zorientowanego obiektowo (OOP – object oriented programming). Na bazie nowych wytycznych powstał e!COCKPIT – nowoczesne oprogramowanie do sterowników WAGO.
W dotychczasowych aplikacjach wykorzystywane były techniki programistyczne oparte na strukturalnej budowie programu, co zapewniało przejrzystość oraz łatwą możliwość rozbudowy programu dla sterownika. W nowej aplikacji połączyliśmy technologię programistyczną IT z narzędziem do programowania sterowników przemysłowych PLC. I w ten sposób powstało oprogramowanie inżynierskie e!COCKPIT. Należy zaznaczyć, że nowa funkcjonalność programowania obiektowego w e!COCKPIT jest opcjonalna, tzn. użytkownik ma możliwość wyboru pomiędzy klasycznym, czyli strukturalnym lub zorientowanym obiektowo programowaniem sterowników PLC.
Teminologia w programowaniu zorientowanym obiektowo w e!COCKPIT
- Blok funkcyjny jest klasą zawierającą dokładnie jedną metodę. Dzięki rozszerzeniu do funkcjonalności pełnej klasy, metody i interfejsy mogą być implementowane w jednym bloku funkcyjnym.
- Metody to procedury, które są przypisane do bloku funkcyjnego lub interfejsu. Wykorzystują one dane z bloków funkcyjnych, ale mogą, tak jak funkcje w IEC 61131, posiadać zmienne wejściowe, wyjściowe lub zmienne lokalne.
- Interfejs to zbiór metod wraz z deklaracją zmiennych niezbędnych do działania tych metod. Ciało metody jest programowane w bloku funkcyjnym (klasie), który implementuje dany interfejs.
- Obiekty to instancje bloków funkcyjnych (klas)
- IMPLEMENTS (nowe słowo kluczowe) umożliwia implementację interfejsu przez dany blok funkcyjny. Poprzez to wszystkie metody zadeklarowane w interfejsie muszą być zrealizowane w bloku funkcyjnym.
- EXTENDS to możliwość dziedziczenia metod i właściwości innego bloku funkcyjnego.
Typowe zastosowania aplikacyjne w automatyce przemysłowej
- Programowanie różnych napędów za pomocą identycznych funkcjonalności (np. pozycjonowanie, status błędu, najazd na punkt startowy) wykorzystujące interfejsy i metody
- Programowanie różnych modułów do obsługi maszyn za pomocą identycznych lub podobnych funcjonalności (np. tryb ręczny, tryb automatyczny)
- Obsługa różnych rodzajów komunikacji (np. start, stop, asynchroniczne wysyłanie wiadomości) za pomocą interfejsów i metod
Przykład praktyczny
Sterowanie automatyką w budynku z różnymi typami pomieszczeń
W przykładzie przedstawionym na rysunku w budynku znajduje się wiele pomieszczeń, które mogą być przypisane do jednej z trzech kategorii (Typ1, Typ2, Typ3). Typ pomieszczenia określa, czy w pomieszczeniu są jeden lub dwa punkty świetlne, czy aktywny jest nocny lub dzienny tryb sterowania oraz czy istnieje sterowanie klimatyzacją.
Typ 1 jest pomieszczeniem bazowym, które implementuje interfejs do sterowania oświetleniem oraz interfejs określający tryb pracy. Interfejsy te posiadają deklaracje odpowiednich metod (M – methods) i właściwości (P – properties).
Typ 2 posiada funkcjonalność pomieszczenia Typu 1 (dziedziczy go) oraz dodatkowy punkt świetlny. W związku z tym metoda WlaczSwiatlo zostanie nadpisana i będzie odpowiednio sterować dwoma punktami świetlnymi. Jednakże definicja działań (metod) i właściwości dla każdego obiektu jest określona przez interfejs.
Typ 3 pomieszczeń, oprócz sterowania oświetleniem i trybem pracy (dziedziczy pełną funkcjonalność Typu 2), posiada także implementację interfejsu do sterowania klimatyzacją. Dzięki takiej strukturyzacji wszystkie pokoje w budynku można zadeklarować jako bloki funkcyjne odpowiedniego typu (Typ1, Typ2 lub Typ3). Obiektowe podejście do kompleksowego systemu sterowania umożliwia łatwe i przejrzyste operacje na danych reprezentowanych przez bloki funkcyjne przy wykorzystaniu metod i właściwości zdefniowanych w interfejsach.
Zalety programowania zorientowanego obiektowo
- Utworzony program może być łatwiej i szybciej zmieniony oraz dopasowany do wymagań klienta.
- Zmniejszenie objętości kodu programu dzięki mechanizmowi dziedziczenia.
- Bardziej przejrzysta struktura kodu, ponieważ wymiana danych odbywa się poprzez metody i właściwości zamiast przez zmienne globalne.
- Bloki funkcyjne mogą być w prosty sposób rozbudowywne, bez konieczności duplikowania kodu programu.
- Programowanie obiektowe jest uznanym i sprawdzonym standardem w świecie IT.
WAGO.PL