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
![](/i/images/4/3/4/dz0yMDAmaD0xNDM=_src_132434-15727iec_rys.jpg)
Rys. 1. W normie IEC 61131-3 zdefiniowano cztery języki programowania sterowników oraz ich główne elementy wspólne, w tym typy danych, jednostki organizacyjne oprogramowania, zmienne oraz elementy konfiguracji
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ę.
|
JEDNOSTKI ORGANIZACYJNE I TYPY DANYCH W IEC 61131-3
![](/i/images/4/3/6/dz0yMDAmaD0xMDE=_src_132436-15728iec_rys.jpg)
Rys. 2. IEC 61131-3 wprowadza model oprogramowania oparty na pojęciach konfiguracji, zasobów oraz zadań
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.