Dawniej, aby zaprogramować sterownik, korzystając z oprogramowania dostarczanego zwykle przez producenta tego urządzenia, należało najpierw dobrze poznać parametry techniczne i specyfikę zarówno PLC, jak i samego programu. Między aplikacjami od różnych dostawców często wstępowały bowiem różnice w zakresie przykładowo składni języków programowania.
Ponadto zazwyczaj algorytm sterowania można było zapisać tylko w jednym języku. Z tych powodów za każdym razem, gdy instalowano sterowniki nowego typu lub od innego producenta, ich programowania uczono się od podstaw.
Utrudnione było również tworzenie przenośnego kodu, nawet w przypadku sterowników od jednego dostawcy. Wszystko to negatywnie wpływało na komfort oraz efektywność pracy programistów PLC. Powodowało to też stratę czasu oraz zwiększało koszty projektowania oraz rozwoju systemów sterowania i automatyki. Czasem z tego powodu całkiem rezygnowano z planów zakupu nowych sterowników.
IEC 61131-3
Nadzieja na zmianę tej sytuacji pojawiła się w latach 90. ubiegłego wieku. Wówczas organizacja IEC (International Electrotechnical Commision) rozpoczęła prace nad standaryzacją własności funkcjonalnych, eksploatacyjnych oraz procesu programowania sterowników programowalnych. W efekcie powstała specyfikacja zawarta obecnie w standardzie IEC 61131.
Dla środowiska programistów PLC szczególne znaczenie miała część trzecia tego dokumentu, która definiuje języki programowania sterowników. Chociaż przestrzeganie wytycznych tego standardu nie jest obowiązkowe, coraz częściej jest on odniesieniem dla twórców narzędzi programistycznych.
Ułatwia to posługiwanie się nimi programistom, którzy również znają tę specyfikację. Ma również wpływ na cały cykl życia kodu, usprawnia oraz przyspiesza jego projektowanie, wdrożenie, testowanie i modernizację.
Krzysztof GołąbMultiprojekt
Różnorodność producentów sterowników na rynku pociągnęła za sobą pojawienie się różnego typu oprogramowania do ich obsługi. Rosło zatem zagrożenie, że następstwem będzie zróżnicowanie sposobów programowania PLC. W pewnym momencie do każdego urządzenia potrzebny byłby osobny specjalista, a programiści musieliby poświęcać dużo czasu na naukę. W związku z tym wprowadzenie pewnych standardów w pisaniu programów było bardzo pomocne przede wszystkim dla automatyków tworzących aplikacje na sterowniki PLC. Spowodowało to na pewno dużą oszczędność czasu dla firm, a co za tym idzie również kosztów. Obecnie, nawet jeśli programista ma do czynienia z nowym urządzeniem od innego producenta, to i tak wie, że niezależnie od zastosowanego oprogramowania, język programowania będzie zachowany. Jako dystrybutor sterowników FATEK często spotykamy się z niepokojem ze strony przyszłych użytkowników, czy przejście z innego sterownika na nasz będzie odbywało się bez większych problemów. Dzięki jednak standardowi i językowi LD proces ten jest w większości przypadków bezproblemowy - kwestią jest zazwyczaj raczej odszukanie podobnej funkcjonalności w oprogramowaniu, a nie w samym języku programowania.
Wady i zalety stosowania standardowego i dedykowanego urządzenia trzeba rozpatrywać na dwa sposoby - od strony użytkownika oraz producenta. Patrząc od strony producenta - zdobycie klienta i nauczenie go obsługi urządzenia wiąże się ze związaniem klienta z firmą na długie lata. Dotyczy to szczególnie sytuacji, gdy rozwiązanie jakiejś aplikacji jest unikalne. Zapewne gdyby nie rynek i wymagania klientów, byłby to preferowany rodzaj współpracy dla producentów. Z kolei patrząc ze strony klientów - zastosowanie standardowych, uniwersalnych, czy tzw. otwartych rozwiązań powoduje, że w momencie awarii czy w najgorszym wypadku upadłości aktualnego dostawcy, klient zawsze może w miarę szybko zastąpić dotychczasowe rozwiązanie nowym. Stosowanie urządzeń standaryzowanych wymusza też konkurencyjność pod względem cenowym na rynku. Klient nie jest zmuszony do korzystania z jednego rozwiązania - może w każdej chwili, np. z powodu ceny, zmienić dostawcę urządzeń. Będzie to skutkowało nauką nowego oprogramowania czy zapoznaniem się z nowym urządzeniem od strony sprzętowej, ale nie będzie musiało się to wiązać z długimi szkoleniami programistów jakiegoś nowego języka programowania.
W naszym odczuciu przeważy trend standaryzacji. Już w tym momencie klienci bardzo niechętnie patrzą na produkty, które mają tzw. zamknięte protokoły komunikacyjne, czyli komunikację unikalną tylko dla jednego dostawcy. Zdają się to zauważać producenci, którzy coraz częściej tworzą grupy zrzeszające różnych wytwórców, nieraz konkurencyjnych, pracujących nad wspólnym standardem dla swoich klientów. Przykładem mogą być tutaj te związane z Ethernet Powerlink czy EtherCAT - każda z organizacji zajmujących się tymi standardami zrzesza po kilkaset różnych firm. |
JEDNOSTKI ORGANIZACYJNE I TYPY DANYCH W IEC 61131-3
W standardzie IEC 61131-3 scharakteryzowano najważniejsze elementy języków programowania sterowników (rys. 1). Zamieszczono w nim m.in. definicje podstawowych pojęć, ogólne zasady tworzenia kodu oraz zdefiniowano tzw. jednostki organizacyjne oprogramowania. Te ostatnie to funkcje, bloki funkcyjne oraz programy.
Są to podstawowe komponenty aplikacji użytkownika, które można też przenosić między różnymi projektami. Funkcje oraz bloki funkcyjne mogą być tworzone przez programistę (listing 1), ma on również do dyspozycji standardowe rozwiązania.
Przykładem są funkcje konwersji typów, liczbowe (m.in. trygonometryczne, logarytmiczne, dodawania, mnożenia), wyboru (na przykład wartości maksymalnej lub minimalnej) i porównywania oraz operacje na bitach, ciągach znaków oraz typach danych czasowych i datach.
Przykładem standardowych bloków funkcyjnych są natomiast elementy dwustanowe (przerzutniki), detekcji zbocza, liczniki oraz timery. W specyfikacji tej określono również typy danych, na których operuje program. Zdefiniowane zostały słowa kluczowe, które identyfikują poszczególne typy danych, zakresy wartości, jakie mogą one przyjmować oraz ilość pamięci wymaganą do ich przechowywania.
Elementarne typy danych to: typ boolowski, liczby całkowite, rzeczywiste, dane czasowe i daty (przykładowo DATE, TIME_OF_DAY, czyli czas dnia, DATE_ AND_TIME, czyli data i czas dnia), ciągi znaków, bajt oraz słowo. Z wykorzystaniem podstawowych typów danych programista może też definiować własne, tzw. pochodne typy danych. Na przykład w ten sposób można stworzyć typ danych obejmujący stany wejść analogowych sterownika.