Pakiet inżynierski CPDev
1. Ogólna charakterystyka.
Środowisko CPDev (Control Program Developer) jest pakietem inżynierskim przeznaczonym do programowania sterowników PLC/PAC zgodnie z normą PN/EN 61131-3 (IEC). Typowe aplikacje to: przetwarzanie pomiarów, sterowanie logiczno-sekwencyjne, regulacja ciągła, obliczenia procesowe, statystyczne i inne. Program użytkownika, skompilowany w komputerze PC do uniwersalnego kodu binarnego, po stronie sterownika jest wykonywany przez program runtime funkcjonujący jako maszyna wirtualna (podobnie jak w Javie). Maszyna wirtualna CPDev uzupełniona o funkcje niskopoziomowe producenta może być implementowana na różne platformy sprzętowe, np. AVR, ARM, PC z kartami I/O itp.
Norma PN/EN 61131-3 definiuje pięć języków programowania:
- ST (Structured Text – Tekst strukturalny),
- IL (Instruction List – Lista rozkazów),
- FBD (Function Block Diagram – Funkcjonalny schemat blokowy),
- LD (Ladder Diagram – Schemat drabinkowy),
- SFC (Sequential Function Chart – Sekwencyjny schemat funkcjonalny).
Język LD jest często stosowany do programowania sterowników zastępujących starsze systemy bazujące na przekaźnikach. Języka FBD chętnie używają automatycy oraz inżynierowie nie mający doświadczenia w programowaniu komputerów. SFC jest makrojęzykiem, którego elementami są podprogramy napisane w pozostałych językach, stosowanym do realizacji ciągu sekwencji (etapów produkcyjnych). Najbardziej uniwersalnym jest jednak tekstowy język ST, będący odpowiednikiem języków typu C lub Pascal. Do ST przekształcane są programy tworzone w językach graficznych. Wszystkie języki normy są dostępne w CPDev.
2. Programowanie.
Drzewo projektu CPDev (rys. 1) składa się z jednostek organizacyjnych oprogramowania POU, listy zmiennych globalnych, zadań oraz dołączonych bibliotek. Każda jednostka POU (program, blok funkcjonalny lub funkcja) może być napisana z użyciem innego języka. Pozwala to na wspólne tworzenie projektu przez kilka osób, w wybranych przez siebie językach, a następnie łączenie wszystkiego w całość kompilowaną do programu sterownika. Programy zdefiniowane w POU są przypisywane do zadań wykonywanych przez sterownik z zadanym cyklem, zwykle wynikającym z mocy obliczeniowej procesora. Zadanie wykonywane w sterowniku przez maszynę wirtualną runtime może zawierać praktycznie dowolną liczbę programów. Ograniczeniem są jedynie zasoby sprzętowo-programowe.
Pierwszym krokiem prac nad projektem jest dokonanie podziału na jednostki oprogramowania POU i wybór języka dla każdej jednostki. Następnie należy przygotować listę zmiennych globalnych, które mają być dostępne we wszystkich programach. Na koniec koduje się opracowane wcześniej algorytmy dotyczące jednostek POU. W zależności od wybranego języka, edytory udostępniają: skróty klawiszowe, podpowiedzi, kolorowanie kodu, automatyczne łączenie bloków itp. Jeżeli podczas kompilacji wykryty został błąd, wówczas odpowiedni komunikat wskazuje niepoprawną linię i rodzaj błędu. Generowane są również ostrzeżenia. Finalnym krokiem jest skonfigurowanie warstwy sprzętowej systemu oraz komunikacji z urządzeniami obiektowymi i komputerem nadrzędnym. Na zakończenie skompilowany kod i dane konfiguracyjne komunikacji przesyłane są do sterownika.
Załączanie/wyłączanie zrealizowane w pięciu językach w środowisku CPDev
Często wykorzystywane fragmenty programów można zapisywać w bibliotekach i wykorzystywać w przyszłych projektach. W środowisku CPDev dostępne są trzy biblioteki podstawowych bloków funkcjonalnych:
- IEC_61131 – standardowe bloki normy,
- Basic blocks – bloki proste,
- Complex blocks – bloki złożone (opcjonalna).
Użytkownik może oczywiście tworzyć własne biblioteki. Środowisko CPDev udostępnia następujące typy danych:
- elementarne: BOOL, BYTE, WORD, DWORD, LWORD, SINT, INT, DINT, LINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME,
- złożone: tablice jednowymiarowe, typy strukturalne.
Pakiet CPDev zawiera także przykłady prostych programów sterowania napisane w różnych językach.
3. Uruchamianie i testowanie programów.
Oprócz programowania sterownika PLC, środowisko CPDev umożliwia uruchomienie i sprawdzenie poprawności działania programu w symulatorze CPSim (rys. 2). Służy on zarówno do śledzenia wykonywania programu w komputerze PC (off-line) jak również w sterowniku (on-line), tj. w trybie uruchamiania – commissioning.
W drzewie projektu (na rys. 2 po lewej) widoczne są zmienne globalne oraz zadania zawierające zmienne lokalne poszczególnych programów. Użytkownik może połączyć się z wybranym źródłem danych (symulator w PC lub sterownik) i obserwować bieżące wartości. Mogą one być dodatkowo wizualizowane na małych panelach. Wartości zmiennych można modyfikować w trakcie symulacji. W oknie Zadanie użytkownik odczytuje czas cyklu zadania, śledzi liczbę wykonanych cykli oraz aktualny czas zegara systemowego. Sygnalizowane jest przekroczenie czasu cyklu, rozmiaru tablicy podczas wykonywania programu itp.
Symulacja załączania/wyłączania w CPsim
Możliwe jest również zautomatyzowanie testowania poprzez utworzenie pliku wejściowego zawierającego wartości zmiennych wejściowych oraz informację o czasie, w którym zmiany mają zostać wprowadzone. Wyniki symulacji można zapisać w pliku wyjściowym, do analizy za pomocą zewnętrznych narzędzi (Excel, Matlab).
Edytory graficzne języków FBD, LD i SFC pozwalają monitorować wartości zmiennych bezpośrednio na diagramie programu (rys. 3). Do najważniejszych funkcjonalności należą:
- uruchomienie i zatrzymanie wykonywania programu (w trybie symulacji w PC),
- prezentacja wartości zmiennych na diagramie, w tym również wartości dla połączeń,
- zmiana wartości zmiennych wejściowych (wymuszanie),
- zapisywanie wartości zmiennych w pliku tekstowym,
- obsługa pułapek, zarówno bezwarunkowych jak i warunkowych.
Monitorowanie wartości zmiennych na diagramach
Sposób prezentacji bieżących wartości zmiennych zależy od języka i rodzaju prezentowanych danych. W diagramach FBD i LD połączenia dla sygnałów logicznych (BOOL) są rysowane linią ciągłą (TRUE) lub przerywaną (FALSE). Ponadto, po wskazaniu kursorem wejścia, wyjścia lub połączenia, wyświetlana jest aktualna wartość zmiennej. Dostępna jest także opcja ciągłego prezentowania wartości połączeń.
Edytory graficzne zostały wyposażone w możliwość zatrzymywania programów po napotkaniu pułapek. Użytkownik może wtedy sprawdzić stan systemu i wartości poszczególnych zmiennych. W CPDev funkcjonuje również mechanizm pozwalający na tworzenie testów weryfikacyjnych skierowanych na jednostki organizacyjne oprogramowania (POU).
4. Porównanie CPDev z CoDeSys.
Oprogramowanie CoDeSys jest popularnym, niezależnym sprzętowo narzędziem projektowania, zgodnym z normą IEC 61131-3, przeznaczonym do programowania sterowników PLC/PAC. Podobnie jak CPDev wymaga ono od producentów sprzętu opracowania własnych, niskopoziomowych funkcji specyficznych dla danego sterownika oraz przygotowania narzędzi umożliwiających zaprogramowanie.
Środowisko CPDev powstawało niezależnie od CoDeSys, jednak z uwagi na podobną funkcjonalność i dostosowanie się do wymogów normy IEC cechuje je znaczny stopień podobieństwa (tab. 1).
Cecha | CPDev | CoDeSys |
Język programowania ST, IL, FBD, LD, SFC | *** | *** |
Biblioteki bloków użytkownika | *** | *** |
Symulacja off-line | ** | *** |
Testowanie on-line (commissioning) | ** | *** |
Zmienne lokalne i globalne | *** | *** |
Programowanie sterownika z poziomu środowiska | *** | *** |
Pułapki | *** | *** |
Testy jednostkowe | *** | – |
Wielozadaniowość | ** | *** |
Uniwersalność dla różnych platform sprzętowych | *** | *** |
Porównanie środowiska CPDev z CoDeSys
CoDeSys jest bardziej rozbudowany niż CPDev, ale podstawowe funkcjonalności są zbliżone. Osoby znające CoDeSys nie powinny mieć trudności w korzystaniu z CPDev.
5. Podsumowanie.
Obecnie czas realizacji projektu ma kluczowe znaczenie. Jednak nie zawsze istnieje możliwość wcześniejszego zapoznania się architekturą procesora, aby napisać program w asemblerze, języku C czy Basicu. Naprzeciw takim wymaganiom wychodzi uniwersalne środowisko CPDev, które można implementować w różnych architekturach sprzętowych. Ponadto, dzięki zgodności z normą PN/EN 61131-3 (IEC), CPDev umożliwia szybkie napisanie aplikacji przez programistę (automatyka), który wcześniej zdobył doświadczenie w podobnych środowiskach, np. CoDeSys.
Program CPDev
6. Instalacja programu CPDev.
- Program CPDev, wersja pełna, cpdev-etronix-1.2.5.2.exe (17MB),
- Pakiet potrzebny do funkcjonowania symulatora CPSim, vcredist_x86.exe (2,5MB).
7. Za pomocą pakietu CPDev można zaprogramować sterownik PLC SU 1.7.