Środowisko inżynierskie CPDev
Charakterystyka ogólna
Środowisko CPDev (Control Program Developer) jest pakietem inżynierskim przeznaczonym do programowania sterowników PLC/PAC, softPLC (PC jako PLC) oraz rozproszonych systemów sterowania 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 jest kompilowany w stacji inżynierskiej (PC) do uniwersalnego kodu binarnego, który po stronie sterownika jest wykonywany przez program runtime funkcjonujący jako maszyna wirtualna (podobnie jak w Javie).
Środowisko CPDev jest:
- uniwersalne w sensie przeznaczenia dla różnych platform sprzętowych, w tym AVR, ARM, FPGA, x86 oraz systemowych - pętla programowa, FreeRTOS, Windows, QNX, Windows CE,
- otwarte dla konstruktorów sterowników oraz inżynierów wdrażających CPDev, którzy do uniwersalnych modułów maszyny wirtualnej napisanych w języku C dołączają własne niskopoziomowe procedury wejścia/wyjścia, komunikacyjne, obsługi panelu czołowego itp., otrzymując po kompilacji całości program runtime, czyli maszynę wirtualną zapisywaną w pamięci stałej sterownika,
- otwarte dla użytkowników - programistów mogących tworzyć własne biblioteki z programami, blokami funkcjonalnymi i funkcjami przeznaczonymi do wielokrotnego użycia.
Programowanie - PN/EN 61131-3
1. Języki programowania
- tekst strukturalny ST (Structured Text),
- lista instrukcji IL (Instruction List),
- schemat blokowy FBD (Function Block Diagram),
- język drabinkowy LD (Ladder Diagram),
- język SFC (Sequential Function Chart).
2. Jednostki organizacyjne oprogramowania POU
- program,
- blok funkcjonalny,
- funkcja.
Zadanie wykonywane w sterowniku przez maszynę wirtualną runtime może zawierać praktycznie dowolną liczbę programów.
3. 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.
Typ LREAL służy do precyzyjnych obliczeń. W razie potrzeby istnieje możliwość dodania typów specjalnych (np. liczba dziesiętna o stałej pozycji przecinka).
4. Zmienne
- globalne - dostępne we wszystkich programach aplikacji,
- lokalne - w programie, bloku funkcjonalnym, funkcji.
5. Biblioteki
- standardowa - IEC_61131 - bloki normy,
- opcjonalne:
- Basic blocks - bloki proste, podobne jak w Sipart DR24, Siemens,
- Complex blocks - regulatory PID, pozycjoner trójpołożeniowy, automatyczne strojenie.
6. Bloki natywne i podobne
Bloki zależne od platformy sprzętowej, np. komunikacyjne, zapis parametrów do pamięci Flash/EEPROM, status sprzętu, obsługa GPS. Tworzone są zazwyczaj w języku C.
Składniki CPDev
1. Stacja inżynierska
- edytory programów ST, IL, FBD, LD i SFC,
- kompilatory ST i IL,
- symulator CPSim do symulacji off-line i testowania on-line (commissioning),
- konfigurator CPCon zasobów sprzętowych i rozproszonego systemu sterowania (wersje zależne od platformy),
- inne: raport projektu, Modbus RTU/TCP, adaptacja serwera lightOPC.
2. Sterownik
Maszyna wirtualna runtime będąca programem w języku C, w skład którego wchodzą:
- moduły uniwersalne: interpreter instrukcji, emulator stosu, obsługa typów danych,
- moduły zależne od platformy: niskopoziomowe procedury wejścia/wyjścia i komunikacyjne, dostęp do pamięci, zegar RTC (opracowują je konstruktorzy sterownika lub inżynierowie wdrażający CPDev).
Zastosowania
Rozproszony system kontrolno-pomiarowy
- Zakłady LUMEL, Zielona Góra, www.lumel.com.pl - sterownik SMC (ATmega128), rozproszone moduły I/O serii SM i inne urządzenia LUMELu, Modbus RTU (max. 230 kbit/s), panel HMI lub pakiet SCADA,
- Mini-Guard Ship Alarm and Control System Praxis Automation Technology, Lejda, Holandia, www.praxis-automation.com - 7 typów sterowników z dedykowanymi panelami czołowymi (ARM LPC 23xx/24xx), moduły I/O zależne od sterownika, redundowany Ethernet,
- SoftPLC - Windows - PC z kartą I/O USB National Instruments lub Inteco Kraków do zastosowań diagnostyczno-laboratoryjnych, Modbus TCP, serwer OPC.


