Virtual machine described in the paper is a runtime program for controllers in small distributed systems. The machine executes intermediate universal code similar to an assembler, compiled in CPDev engineering environment from source programs written in control languages of IEC 61131-3 standard. The machine is implemented as a C program, so it can run on different target platforms. Data formats and commands of the machine code are presented, together with the machine's Petri-net model, C implementation involving universal and platform-dependent modules, target hardware interface, input/output programming mechanisms, and practical applications.
PL
W artykule przedstawiono projekt i implementację maszyny wirtualnej będącą elementem środowiska wykonawczego dla sterowników. Przeznaczona jest przede wszystkim do małych, rozproszonych systemów sterowania. Maszyna współpracuje z pakietem CPDev, opracowanym na Politechnice Rzeszowskiej, który służy do programowania w językach normy IEC 61131-3 (PN-EN 61131-3) (Rys. 1). Programy w ST, IL lub FBD są kompilowane do kodu pośredniego VMASM, który w postaci binarnej może być wykonywany przez maszynę na platformie docelowej (Rys. 2 i Tab. 2). Zestaw instrukcji maszyny wirtualnej oraz obsługiwane przez nią typy danych zostały dostosowane do normy IEC (Tab. 1). Działanie maszyny zostało zamodelowane za pomocą hierarchicznej czasowej kolorowanej sieci Petriego. Elementami tego modelu jest strona przedstawiająca cykl zadania (nadrzędna, Rys. 3) oraz podrzędna, reprezentująca moduł wykonawczy (Rys. 4). Symulacja modelu pozwoliła zweryfikować przyjęte założenia projektowe. Maszyna wirtualna została zaimplementowana jako program w języku C. Jej strukturę wewnętrzną przedstawiono na Rys. 5. Część modułów jest uniwersalna, pozostałe zależą od platformy docelowej sterownika. Dzięki takiemu układowi, maszyna może być przystosowana do różnego sprzętu. Dostosowanie maszyny polega na przygotowaniu funkcji wchodzących w skład interfejsu sprzętowego, określających m.in. sposób ładowania programu, obsługę cyklu zadania i zegara czasu rzeczywistego. Współpraca ze sprzętem obejmuje także odczyt wejść i zapis wyjść procesowych. Konfigurator zasobów sprzętowych pozwala przypisać zmienne programu do określonych wejść/wyjść. Mechanizm bloków sprzętowych pozwala natomiast bezpośrednio korzystać z mechanizmów niskopoziomowych w kodzie programu. W ten sposób zrealizowano m.in. obsługę protokołu NMEA (Rys. 4). Dwa pierwsze zastosowania maszyny wirtualnej ze środowiskiem CPDev to sterownik SMC polskiej firmy Lumel, będący centralnym węzłem małego rozproszonego systemu sterowania (mini-DCS, Rys. 6a, b) oraz system Mini-Guard z Praxis Automation (Holandia) stosowany do monitorowania systemów na statku i jego pozycjonowania (Rys. 6c). Dzięki maszynie wirtualnej programy tworzone w środowisku CPDev w językach normy IEC 61131-3 (ST, IL, FBD) mogą być uruchamiane na różnych sterownikach, wyposażonych w procesory AVR, ARM, x86 i inne. Przedmiotem dalszych prac będzie możliwość jednoczesnego wykonywania przez maszynę kilku zadań sterujących (wielozadaniowość).
JavaScript jest wyłączony w Twojej przeglądarce internetowej. Włącz go, a następnie odśwież stronę, aby móc w pełni z niej korzystać.