Podstawową cechą platformy PLCnext Technology jest szeroko rozumiana otwartość. Oznacza to między innymi otwarte podejście do sposobu programowania sterownika PLC. Korzystając z PLCnext Technology nie jesteśmy ograniczani przez wymogi wynikające z normy IEC 61131, która definiuje klasyczne języki programowania sterowników PLC, jak na przykład ladder diagram („drabinka”) czy function block („bloczki”).
Programista ma zatem możliwość stworzenia części lub całości programu w języku wysokopoziomowym (np. C++), a dzięki mechanizmom zawartym w PLCnext Technology takie programy mogą wymieniać dane z klasycznymi programami sterującymi, a wszystko dzieje się z zachowaniem czasu rzeczywistego wykonywania programu.
Poniżej prezentuję, jak łatwo można użyć programu napisanego w C++ do wykonywania obliczeń i wymieniania danych z klasycznym programem napisanym w języku FBD.
Przygotowanie programu w C++
Pierwszym etapem będzie przygotowanie kodu programu w języku C++. Można do tego użyć popularnego środowiska programistycznego przeznaczonego dla języków wysokopoziomowych – Eclipse. Po zainstalowaniu Eclipse należy dodać do niego wtyczki PLCnext Technology (dostępne bezpłatnie na naszej stronie internetowej), które uproszczą przygotowywanie projektów i umożliwią kompilację programu w wersji na sterownik PLC.
Nasz program w C++ będzie prostym licznikiem, działającym według założenia, że po uruchomieniu przez zmienną liczy w górę od 0 do 1000, a następnie w dół do 0 i tak dalej. W budowie programu użyjemy zmiennych:
- xActive – zmienna bitowa wejściowa – uruchamia licznik
- xDirection – zmienna bitowa wyjściowa – informuje o kierunku działania licznika
- iValue – liczba całkowita – aktualna wartość licznika
Powyższe zmienne według nomenklatury PLCnext Technology są definiowane w kodzie jako porty wejściowe i wyjściowe. Dzięki temu będziemy mieli dostęp do tych zmiennych z poziomu innych programów działających na sterowniku PLC. Fragmenty kodu definiujące porty oraz pozostałe pliki konfiguracyjne są generowane automatycznie poprzez wtyczkę PLCnext Technology doinstalowaną do Eclipse.
Aby tak przygotowany program użyć w PC Worx Engineer i wymieniać z nim dane z poziomu aplikacji napisanej w języku FBD, wystarczy już tylko wykonać kompilację i zapisać rezultat w formacie biblioteki zewnętrznej .pcwlx.
Integracja w PC Worx Engineer
Drugim krokiem jest stworzenie projektu w PC Worx Engineer. Wszystkie etapy przygotowania przebiegają tak samo jak w przypadku klasycznych projektów. Po wykonaniu konfiguracji sprzętowej oraz konfiguracji sterownika PLC do pracy w sieci, tworzymy w języku FBD prosty program, który będzie przepisywał stan fizycznego wejścia binarnego do zmiennej xIECActive, a także przepisywał wartość zmiennej xIECDirection do fizycznego wyjścia binarnego. Wspomniane zmienne oraz, dodatkowo, zmienną całkowitoliczbową iIECValue definiujemy jako porty wejściowe i wyjściowe programu.
Następnie importujemy do projektu wygenerowaną za pomocą Eclipse bibliotekę zewnętrzną. Plik zawierający program napisany w C++ pojawi się na liście dostępnych bibliotek w sekcji typów programu PC Worx Engineer.
Teraz wystarczy dodać program napisany w FBD oraz zaimportowaną bibliotekę do odpowiednio zdefiniowanego taska. W naszym przypadku będzie to task cykliczny wykonujący się z interwałem 100ms.
Ostatnim etapem jest wykonanie w PC Worx Engineer powiązania portów wejściowych i wyjściowych programu FBD i programu C++, tak aby mogły wymieniać między sobą informacje.
Projekt można teraz wgrać do sterownika i przetestować efekty działania. Zgodnie z oczekiwaniami, po aktywowaniu fizycznego wejścia sterownika, licznik cyklicznie zwiększa swoją wartość do 1000, informując równocześnie stanem zmiennej xIECDirection o tym, że aktualne liczenie jest „w górę”, a po osiągnięciu wartości maksymalnej zmienia się kierunek liczenia i licznik odlicza „w dół”.
Autor: | Konrad Sobczyk– Młodszy Specjalista ds. Szkoleń i Wsparcia Technicznego |
Ciekawy poradnik, polecam
Ciekawy poradnik, polecam