POLSKI KOMPILATOR ORAZ STEROWNIKI PROGRAMOWANE ZA POMOC J ZYKA IL NORMY IEC 61131-3



Podobne dokumenty
Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Automatyka. Etymologicznie automatyka pochodzi od grec.

O autorze... 9 Wprowadzenie... 11

Wykład 2. Budowa komputera. W teorii i w praktyce

System do kontroli i analizy wydawanych posiłków

Elementy cyfrowe i układy logiczne

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

PRZEMYSŁOWY ODTWARZACZ PLIKÓW MP3 i WAV

Praca na wielu bazach danych część 2. (Wersja 8.1)

Edycja geometrii w Solid Edge ST

Architektura komputerów

Bazy danych. Andrzej Łachwa, UJ, /15

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

W Y B R A N E P R O B L E M Y I N Y N I E R S K I E

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

raceboard-s Szybki start

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

Budowa systemów komputerowych

Projektowanie bazy danych

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

INSTRUKCJA OBSŁUGI MC-2810 CYFROWY SYSTEM GŁOŚNIKOWY 5.1 KANAŁÓW DO KINA DOMOWEGO

Podstawy programowania sterowników GeFanuc

Elastyczne systemy wytwarzania

Język programowania: Lista instrukcji (IL Instruction List)

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Szczegółowe zasady obliczania wysokości. i pobierania opłat giełdowych. (tekst jednolity)

Komunikacja sterownika z rodziny Micro800 z Falownikiem PowerFlex40 przy pomocy sieci DeviceNet.

Harmonogramowanie projektów Zarządzanie czasem

Wiedza niepewna i wnioskowanie (c.d.)

2.Prawo zachowania masy

8. Konfiguracji translacji adresów (NAT)

INSTRUKCJA TESTOWANIA USŁUG NA PLATFORMIE ELA-ENT

Systemy mikroprocesorowe - projekt

Generowanie kodów NC w środowisku Autodesk Inventor 2014

Regulamin Obrad Walnego Zebrania Członków Stowarzyszenia Lokalna Grupa Działania Ziemia Bielska

PROGRAM ZAPEWNIENIA I POPRAWY JAKOŚCI AUDYTU WEWNĘTRZNEGO

PERSON Kraków

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Regulamin Zarządu Pogórzańskiego Stowarzyszenia Rozwoju

INSTRUKCJA OBSŁUGI URZĄDZENIA: HC8201

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

2.1 INFORMACJE OGÓLNE O SERII NX

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

Automatyczne przetwarzanie recenzji konsumenckich dla oceny użyteczności produktów i usług

Programowanie Zespołowe

Na podstawie art.4 ust.1 i art.20 lit. l) Statutu Walne Zebranie Stowarzyszenia uchwala niniejszy Regulamin Zarządu.

REGULAMIN WALNEGO ZEBRANIA STOWARZYSZENIA POLSKA UNIA UBOCZNYCH PRODUKTÓW SPALANIA

KONCEPCJA NAUCZANIA PRZEDMIOTU RACHUNKOWOŚĆ SKOMPUTERYZOWANA" NA WYDZIALE ZARZĄDZANIA UNIWERSYTETU GDAŃSKIEGO

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Implant ślimakowy wszczepiany jest w ślimak ucha wewnętrznego (przeczytaj artykuł Budowa ucha

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Podstawy Informatyki Gramatyki formalne

Załącznik nr 1 do projektu wzoru umowy - szczegółowe zasady realizacji i odbioru usług

PROCEDURA ADMINISTROWANIA ORAZ USUWANIA

Uniwersytet Rzeszowski

Klasyfikacja i oznakowanie substancji chemicznych i ich mieszanin. Dominika Sowa

PROJEKT. w sprawie: wyboru Przewodniczącego Nadzwyczajnego Walnego Zgromadzenia Spółki

Zamawiający potwierdza, że zapis ten należy rozumieć jako przeprowadzenie audytu z usług Inżyniera.

Generalny Dyrektor Ochrony rodowiska. Art.32 ust. 1. Art. 35 ust. 5. Art. 38. Art. 26. Art 27 ust. 3. Art. 27a

Morska Stocznia Remontowa Gryfia S.A. ul. Ludowa 13, Szczecin. ogłasza

Podstawy programowania

(Tekst ujednolicony zawierający zmiany wynikające z uchwały Rady Nadzorczej nr 58/2011 z dnia r.)

EdgeCAM 12.0 brak moŝliwości instalacji na Windows 2000

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

SPECYFIKACJA ISTOTNYCH WARUNKÓW ZAMÓWIENIA. na obsługę bankową realizowaną na rzecz Gminy Solec nad Wisłą

7. REZONANS W OBWODACH ELEKTRYCZNYCH

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

Wtedy wystarczy wybrać właściwego Taga z listy.

Formularz Zgłoszeniowy propozycji zadania do Szczecińskiego Budżetu Obywatelskiego na 2016 rok

Wynagrodzenia i świadczenia pozapłacowe specjalistów

Warunki Oferty PrOmOcyjnej usługi z ulgą

RZECZPOSPOLITA POLSKA. Prezydent Miasta na Prawach Powiatu Zarząd Powiatu. wszystkie

Microsoft Management Console

Ogłoszenie o zwołaniu Nadzwyczajnego Walnego Zgromadzenia Spółki ELKOP S.A.

WYJASNIENIA I MODYFIKACJA SPECYFIKACJI ISTOTNYCH WARUNKÓW ZAMÓWIENIA

PODSTAWY METROLOGII ĆWICZENIE 4 PRZETWORNIKI AC/CA Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010 SEMESTR 3

Warszawa, r.

Instrukcja instalacji oraz wykorzystania podpisu cyfrowego

Stacjonarne Wszystkie Katedra Inżynierii Produkcji dr Sławomir Luściński. Kierunkowy Nieobowiązkowy Polski Semestr trzeci. Semestr zimowy Brak Tak

INSTRUKCJA RUCHU I EKSPLOATACJI SIECI DYSTRYBUCYJNEJ

REGULAMIN KOMISJI ETYKI BANKOWEJ

System kontroli wersji SVN

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

EGZAMIN MATURALNY Z INFORMATYKI CZERWIEC 2011 POZIOM ROZSZERZONY WYBRANE: CZĘŚĆ I. Czas pracy: 90 minut. Liczba punktów do uzyskania: 20

INSTRUKCJA OBS UGI

PKN ORLEN S.A. Elektroniczny słownik lub tłumacz multijęzyczny. Zapytanie ofertowe. Dotyczy: Wersja: 1.0 Data: r.

InsERT GT Własne COM 1.0

INSTRUKCJA DLA UCZESTNIKÓW ZAWODÓW ZADANIA

Spring MVC Andrzej Klusiewicz 1/18

Prezentacja dotycząca sytuacji kobiet w regionie Kalabria (Włochy)

Konfiguracja historii plików

Załącznik nr 8. Warunki i obsługa gwarancyjna

Transkrypt:

mgr in. Jan Sadolewski, Ewelina Szmyd Politechnika Rzeszowska, Katedra Informatyki i Automatyki POLSKI KOMPILATOR ORAZ STEROWNIKI PROGRAMOWANE ZA POMOC J ZYKA IL NORMY IEC 61131-3 W pracy przedstawiono prototypowy kompilator j zyka IL (Instruction List) normy IEC 61131-3. Kompilator jest sk adnikiem pakietu CPDev opracowywanym w Politechnice Rzeszowskiej. Omówiono jego budow i metody interpretacji kodu IL do postaci drzew wyra e u ywanych przez kompilator j zyka ST zawarty w CPDev. Wynikiem kompilacji jest binarny kod po redni interpretowany przez dedykowane maszyny wirtualne pracuj ce na sterownikach opartych o ró ne procesory (AVR, ARM, MCS51) oraz komputerach PC. POLISH COMPILER AND CONTROLLERS PROGRAMMED IN INSTRUCTION LIST LANGUAGE OF IEC 61131-3 STANDARD The paper presents a prototype compiler of IL (Instruction List) language from IEC 61131-3 standard. The compiler is a component of CPDev engineering environment for programming of industrial controllers. The CPDev has been developed at Technical University of Rzeszów. IL code conversion into tree expressions to be processed by the CPDev s ST compiler is described. Compilation result is an indirect binary code interpreted by dedicated virtual machines implemented in controllers with different processors (AVR, ARM, MCS- 51) and PC computers. 1. WPROWADZENIE Spo ród dost pnej w Polsce aparatury kontrolno-pomiarowej przewag maj du e i rednie systemy zagranicznych producentów. Polscy wytwórcy wdra aj w asne rozwi zania dla ma ych i niekiedy redniej wielko ci obiektów. Systemy sterowania producentów zagranicznych maj w asne rodowiska in ynierskie programowane wed ug normy IEC 61131-3 [2], która zosta a przyj ta w Polsce w 2004 r. Producenci krajowi stosuj w asne rozwi zania programistyczne niezgodne z t norm, co czyni ich urz dzenia ma o konkurencyjnymi. W celu poprawy tej sytuacji w Politechnice Rzeszowskiej, przy wsparciu MNiSzW powsta pakiet CPDev 1 (Control Program Developer). W sk ad pakietu, którego charakterystyk funkcjonaln omówiono w [9] wchodz : rodowisko do tworzenia projektów, kompilator j zyka ST, symulator projektów oraz konfigurator zasobów sprz towych. Do CPDev nale y równie wieloplatformowa maszyna wirtualna zdolna do wykonywania kodu binarnego, b d cego wynikiem kompilacji j zyka ST do postaci uniwersalnego asemblera VMASM (Virtual Machine Assembler). Niniejszy artyku przedstawia stan prac nad kolejnymi elementami pakietu, tzn. kompilatorem j zyka IL bazuj cym na istniej cym kompilatorze ST oraz przekszta ceniem komputera PC wyposa onego w kart wej /wyj obiektowych w urz dzenie typu softcontroller. W punkcie 2 omówiono budow kompilatora j zyka IL oraz przedstawiono konieczne do wspó pracy z nim zmiany w kompilatorze ST. Punkt 3 zawiera transformacj przyk adowego kodu w j zyku ST do drzew wyra e i dalej, do postaci VMASM. Podano równowa ny kod w j zyku IL oraz szczegó y analizy instrukcji j zyka IL i budowania z nich drzew wyra e. 1 Praca realizowana w ramach projektu rozwojowego MNiSzW nr R02 058 03. automation 2009 615

Punkt 4 omawia interpretacj specyficznych konstrukcji j zyka IL z udzia em modyfikatorów. Przedstawiono problemy wynikaj ce z u ywania j zyków normy do ró nych obiektów POU (Program Organization Units). Zaprezentowano autorskie rozwi zania s u ce bezproblemowej wspó pracy j zyków IL i ST w oparciu o dyrektywy i metody analizy kodu. Punkt 6 zawiera opis sterownika SMC produkowanego przez Lumel Zielona Góra, w którym po raz pierwszy wdro ono uniwersaln maszyn wirtualn rodowiska CPDev. Scharakteryzowano równie sposób wykorzystania jak urz dzenia typu softcontroller komputera PC z kart wej /wyj krakowskiej firmy InTeCo. 2. J ZYKI PROGRAMOWANIA W NORMIE IEC 61131-3 Norma IEC 61131-3 definiuje pi j zyków programowania, w tym dwa tekstowe ST (Structured Text) i IL (Instruction List). Ze wzgl du na identyczno sekcji deklaracyjnych obu j zyków, kompilator IL zosta zbudowany jako rozszerzenie kompilatora j zyka ST, którego opis mo na znale w [5, 6]. Kompleksowy przyk ad tworzenia systemu sterowania prost instalacj c.o. w j zyku ST zaprezentowano w [3]. Do struktury kompilatora ST, wprowadzono alternatywny strumie danych wej ciowych w formie pliku z kodem ród owym w j zyku IL. Spowodowa o to konieczno zmiany budowy wewn trznej kompilatora do postaci pokazanej na rys. 1. Plik z kodem w j zyku ST Plik z kodem w j zyku IL SKANER ST SKANER IL Lista leksemów Lista leksemów PARSER ST PARSER IL Kod mnemoniczny GENERATOR KODU Posta wykonywalna Rys. 1. Elementy kompilatora j zyków ST i IL Skaner j zyka IL zosta utworzony na bazie skanera ST. Jest on analizatorem leksykalnym, którego zadaniem jest wyodr bnienie z pojedynczych znaków elementarnych jednostek zwanych leksemami. W stosunku do skanera j zyka ST zmianie uleg zestaw s ów kluczowych oraz reakcja na znaki nowej linii, które wskazuj koniec instrukcji IL. Wynikiem dzia ania skanera jest lista leksemów, przekazywana do analizatora semantycznego parsera. Jego zadaniem jest konwersja leksemów do kodu mnemonicznego VMASM, dok adniej omówionego w pracach [7, 8]. Podobnie jak w przypadku skanera, parser IL zosta zbudowany jako rozszerzenie parsera ST. Pozwoli o to unikn redundancji kodu ród owego obu kompilatorów poprzez wspólne u ywanie znacznych fragmentów, np. obs uga sekcji deklaracji zmiennych. Ostatnim elementem kompilatora jest generator kodu, którego zadaniem jest przetworzenie po redniego kodu zapisanego w asemblerze VMASM do postaci binarnej. Zarówno VMASM jak i generator kodu s wspólne dla obu j zyków. 3. METODY KONWERSJI J ZYKA IL DO VMASM W kompilatorze ST zawarte s metody zamiany wyra e zapisanych za pomoc funkcji i operatorów do postaci drzew wyra e [1]. Zawiera on równie procedury konwersji tych drzew do kodu VMASM. Przyk ad konwersji j zyka ST do drzewa wyra enia i kodu VMASM pokazano na rys. 2. W pierwszym etapie zostanie rozpoznana instrukcja podstawienia (rys. 2a) i dla wyra enia wyst puj cego po prawej stronie operatora (:=) zostanie utworzone drzewo (rys. 2b), uwzgl dniaj ce priorytet operatorów. Wywo uje ono odpowiednie funkcje dzia aj ce na operandach. Li cie drzewa wyra enia s zmiennymi b d warto ciami sta ymi. Funkcje reprezentuj wierzcho ki nie b d ce li mi. Tak przygotowane drzewo mo e 616 automation 2009

ulec optymalizacji polegaj cej na obliczaniu warto ci elementarnych funkcji o sta ych argumentach. Obliczalne poddrzewa s zast powane nowymi wierzcho kami zawieraj cymi warto ci sta e ju na etapie kompilacji. Przed konwersj do postaci binarnej sta e wyst puj ce w drzewie s zamieniane na zmienne po rednie i inicjowane. W przyk adzie z rys. 2. sta 4 zamieniono identyfikatorem?lc01 i zainicjowano w pierwszym wierszu kodu VMASM (rys. 2c). Pojedynczy rozkaz asemblera VMASM sk ada si z instrukcji elementarnej oraz operandów. Podstawowe instrukcje elementarne tego kodu realizowane przez maszyn wirtualn podano w tabeli 1. Sk adaj si na nie operatory, funkcje arytmetyczne i logiczne, przesuni cia, kilka typów skoków itd. Skompilowany program jest list takich instrukcji. Operandami s nazwy zmiennych wyst puj cych w programie lub warto ci sta e. Tymczasowe zmienne generowane przez kompilator posiadaj w nazwie znak zapytania?, wykluczaj cy kolizj nazw nadawanych automatycznie z nazwami u ytkownika. a) b) c) VAR +?LV03 A, B, C : INT; END_VAR C := B + A * 4; B * A 4?LV02 01: MCD?LC01, #02, #0400 02: MUL?LV02, A,?LC01 03: ADD C, B,?LV02 Rys. 2. Etapy transformacji kodu j zyka ST do asemblera VMASM Transformacja drzewa z rys. 2b rozpoczyna si od wierzcho ka o najwi kszej g boko ci nie b d cego li ciem. Spowoduje to wytworzenie drugiej linii kodu VMASM (rys. 2c) z zapisaniem wyniku do tymczasowej zmiennej lokalnej?lv02. Dalsze post powanie utworzy lini kodu VMASM zapisuj c wynik operacji dodawania do zmiennej tymczasowej?lv03. Na tym etapie drzewo zosta o obliczone a jego wynik znajduj cy si w zmiennej?lv03 zostanie podstawiony do zmiennej C. Zmienne tymczasowe w realizacji instrukcji podstawiania zast powane s zmiennymi docelowymi, co wyja nia obecno zmiennej C trzeciej linii kodu VMASM w wyniku operacji dodawania. Gdy podstawienie odbywa si pomi dzy zmiennymi u ytkownika generowany jest kod kopiowania warto ci (instrukcja MEMCP). Tab. 1. Wybrane instrukcje elementarne maszyny wirtualnej Funkcja Opis Funkcja Opis EXPT Pot ga AND Iloczyn logiczny NEG Negacja arytm. OR Suma logiczna SUB Ró nica XOR Suma symetryczna MUL Iloczyn SHL,SHR DIV Iloraz ROL,ROR Przesuni cia i obroty bitowe w prawo i lewo ADD Suma JMP Skok bezwarunkowy CONCAT Konkatenacja JZ GT Wi kszy JNZ Skoki warunkowe GE Wi kszy lub równy JR Skok bezwarunkowy wzgl dny LE Mniejszy lub równy JRN LT Mniejszy JRZ Skoki warunkowe wzgl dne EQ Równy RETURN Powrót z funkcji u ytkownika NE Ró ny MCD Zainicjowanie sta ej warto ci NOT Negacja bitowa MEMCP Kopiowanie warto ci automation 2009 617

W j zyku IL wykorzystywany jest rejestr (akumulator) oznaczany przez [2]. Mo e on mie- ci zmienne dowolnego typu, w czaj c w to tablice i bloki funkcjonalne. Program napisany w j zyku IL przypomina asemblerowy kod pewnego bli ej nieokre lonego procesora. Pomimo niskopoziomowego podej cia do programowania, mo liwa jest analiza i transformacja kodu IL do postaci drzew wyra e interpretowanych przez generator kodu kompilatora ST. Jako uzasadnienie zostanie przedstawiony sposób konstrukcji drzewa wyra enia na podstawie kodu IL pokazanego na rys. 3a, równowa nego z kodowi ST z rys. 2a. Po zako czonym etapie analizy leksykalnej lista leksemów jest przekazywana do parsera j zyka IL. Sposób deklaracji obiektów POU oraz zmiennych jest zgodny z j zykiem ST. Po deklaracjach nast puje sekcja kodu (linie 4-7 rys. 3a). Parser IL tworzy bazowy kontekst parsowania, sk adaj cy si z: 1) referencji zmiennej b d cej obecnym rejestrem, 2) przetwarzanej instrukcji, 3) bie cego drzewa wyra enia i referencji zmiennej przechowuj cej jego wynik?ret. Warto ci pocz tkowe bazowego kontekstu rejestru, drzewa wyra enia i referencji zmiennej wyniku pocz tkowo ustawione s na warto null (rys 3b). Warto null oznacza brak ustalonej referencji zmiennej lub drzewa. Pierwsz napotkan instrukcj jest LD A, która tutaj nie operacji kopiuje warto ci zmiennej A do rejestru, a ustawia referencj rejestru na zmienn A. Drzewo wyra enia, oraz referencja zmiennej pami taj cej jego wynik pozostaj bez zmian (rys. 3c). a) b) c) 01: VAR 02: A, B, C : INT; 03: END_VAR?ret null null?ret A null d)?lv01?lv01 * 04: LD A 05: MUL 4 06: ADD B 07: ST C A 4 e)?lv02 f) C g) 01: MCD?LC03, #02, #0400?LV02 +?LV01 * A 4 B C +?LV01 * A 4 B 02: MUL?LV01, A,?LC03 03: ADD C, B,?LV01 Rys. 3. Etapy transformacji kodu j zyka IL do VMASM i budowania drzewa wyra enia Po napotkaniu wywo ania standardowej funkcji mno enia z argumentem (linia 5 rys. 3a) MUL 4, jest konstruowane drzewo. Korzeniem drzewa staje si operator lub nazwa funkcji, pierwszym argumentem (lewy potomek) zmienna przechowywana w rejestrze, a kolejnymi potomkami pozosta e argumenty przekazane w linii podczas wywo ywania funkcji. Kompilator tworzy tymczasow zmienn?lv01 na pami tanie warto ci drzewa. Jej referencja zostaje za adowana do rejestru (jako wynik ostatniej operacji). Bie cy kontekst parsowania pokazano na rys. 3d. Kolejn instrukcj jest funkcja ADD z argumentem B, linia 6 rys. 3a. W tym przypadku nowym korzeniem drzewa wyra enia zostaje ostatnio napotkana funkcja lub jej operator, pierwszym potomkiem korze starego drzewa z ca ym poddrzewem, a drugim po- 618 automation 2009

tomkiem argument. W przypadku funkcji wieloargumentowej pozosta e operandy równie zostaj dopisane jako kolejni potomkowie korzenia drzewa. Warto drzewa wyra enia zostaje zapisana do tymczasowej zmiennej?lv02 oraz trafia jako referencja rejestru (rys. 3e). Nast pn instrukcj jest ST C, której interpretacja zale y od zmiennej wskazywanej przez rejestr. Gdy w rejestrze znajduje si zmienna tymczasowa, to wszystkie referencje tej zmiennej tymczasowej zostaj zast pione zmienn b d c argumentem instrukcji ST. Taka sytuacja ma tutaj miejsce zmienna C zast puje tymczasow zmienn?lv02. Gdy w rejestrze znajduje si zmienna u ytkownika to nast puje kopiowanie warto ci pomi dzy zmiennymi. Tak przygotowane drzewo wyra enia jest równoznaczne z drzewem zapisanym w j zyku ST. Omówiony poprzednio algorytm konwersji drzewa wyra enia do kodu VMASM dokona jego transformacji do niemal identycznego kodu, ró ni cego si tylko nazwami zmiennych tymczasowych. Wida to porównuj c rys. 2c i 3g. 4. INTERPRETACJA MODYFIKATORÓW W j zyku IL wyst puj modyfikatory operandów powoduj ce zmian ich warto ci u ywanej podczas wykonywania instrukcji. Najcz ciej u ywanymi modyfikatorami s N wyra aj cy negacj argumentu oraz ( oznaczaj cy pocz tek instrukcji zagnie d onych, których wynik b dzie pó niej u yty jako operand. Modyfikator N zastosowany w standardowych funkcjach jak np. AND, powoduje zmian drzewa wyra enia poprzez wprowadzenie funkcji NOT aplikowanej do prawego poddrzewa funkcji AND. Na rys. 4b pokazano drzewo wyra enia dla kodu z rys. 4a, bez modyfikatora N. Rys. 4d przedstawia drzewo wyra enia dla kodu z modyfikatorem N w funkcji ANDN (rys. 4c). a) b) c) VAR A, B, C : BOOL; END_VAR AND VAR A, B, C : BOOL; END_VAR LD C OR B AND A C OR B A LD C OR B ANDN A d) C OR AND B NOT A Rys. 4. Drzewa wyra e dla kodu bez modyfikatora i z modyfikatorem N Inna sytuacja nast puje w przypadku u ycia modyfikatora N dla funkcji STN oraz LDN. W przypadku STN korzeniem drzewa wyra enia staje si NOT, a jego potomkiem korze poprzedniego drzewa wraz z ca ym poddrzewem. Dalsza operacja przeprowadzana jest podobnie jak w instrukcji ST. Jedyn ró nic jest brak modyfikacji (zamiany) zmiennej tymczasowej przechowywanej w rejestrze na zmienn b d c argumentem funkcji STN. U ycie funkcji LDN jest jednoznaczne z wywo aniem kolejno LD, a nast pnie NOT. Odwrotnie ni w przypadku STN, funkcja LDN nie modyfikuje warto ci operandu tylko tworzy jej lokaln zanegowan kopi. Drugi modyfikator ( oznacza, e bie ca instrukcja i rejestr s zapami tywane do czasu napotkania ogranicznika ) tworz cego par z obecnym. Instrukcje zawarte w nawiasach s wykonywane z nowym rejestrem, a warto wyniku u ywana jako operand w zapami tanej instrukcji. Kompilator po napotkaniu modyfikatora ( tworzy nowy kontekst parsowania i inicjuje go nast pnym operandem, podobnie jak czyni to instrukcja LD. Poprzedni kontekst jest umieszczany na stosie, a kolejne instrukcje s przetwarzane na nowym kontek cie do napotkania ogranicznika ). Po jego napotkaniu referencja do zmiennej b d cej automation 2009 619

rejestrem zostaje przekazana jako operand dla instrukcji, która znajdzie si na szczycie stosu po zdj ciu z niego obecnego kontekstu. Wi e si to równie z do czeniem do poprzedniego drzewa wyra enia, korzenia drzewa z poddrzewami pochodz cego z by ego kontekstu parsowania. Prosty uk ad Start-Stop, którego kod w j zyku IL pokazano na rys. 5a, pokazuje efekty zastosowania omówionej metody interpretacji modyfikatora ( i ogranicznika ). a) b) VAR START, STOP, SILNIK, ALRARM : BOOL; END_VAR OR AND NOT LD START OR SILNIK ANDN ( STOP OR ALARM ) ST SILNIK STA RT SIL NIK ST OP OR ALA RM Rys. 5. Uk ad Start-Stop zapisany w j zyku IL (a) oraz jego drzewo wyra enia (b) 5. PROBLEMY WYNIKAJ CE Z ODWO A DO KODU ST Z POZIOMU IL Podczas tworzenia projektów, w których obiekty POU konstruowane s w ró nych j zykach, napotyka si problemy zwi zane z nazwami identyfikatorów, odwo aniami do bezargumentowych funkcji, a tak e inne. Pakiet CPDev zapewnia wspó u ywalno bibliotek skompilowanych do kodu VMASM, których ród a mog by utworzone w ró nych j zykach normy. W trakcie prac nad kompilatorem j zyka IL napotkano problem kolizji s ów kluczowych R i S z nazwami wej przerzutników RS i SR [2]. Aby umo liwi u ywanie tych bloków, w kodzie IL podczas rozpoznawania s ów kluczowych wprowadzono regu, e R lub S mo e by s owem kluczowym, czyli instrukcj IL tylko wtedy, gdy jest pierwszym identyfikatorem w tej linii kodu. Opcjonalnie s owo kluczowe mo e by poprzedzone etykietami oraz dyrektywami. W pozosta ych przypadkach R i S s traktowane jak zwyk e identyfikatory. Planuje si, aby zasad t stosowa dla wszystkich s ów kluczowych j zyka IL, a nie tylko dla R i S. Pozwoli to na bezpo redni dost p do nazw zmiennych zdefiniowanych w innych j zykach. Kolejnym problemem jest wywo anie w j zyku IL funkcji bezargumentowej. Jedn z nich jest funkcja maszyny wirtualnej CUR_TIME zwracaj ca czas systemowy. W przypadku zapisania jej bez operandów zostanie utworzone drzewo, którego korzeniem b dzie CUR_TIME, a pierwszym potomkiem zmienna znajduj ca si w rejestrze. Kompilator b dzie wtedy poszukiwa funkcji o sygnaturze odpowiadaj cej jej nazwie i typowi argumentu wej ciowego, która mo e nie istnie lub inaczej dzia a. Aby temu zapobiec zosta a wprowadzona dyrektywa (*$NOARG*), której zadaniem jest oznaczenie wywo ania nast pnej funkcji jako bezargumentowej. Zakres dzia ania dyrektywy ogranicza si tylko do najbli szej funkcji. 6. STEROWNIKI W asortymencie polskiej aparatury kontrolno-pomiarowej znajduj si sterowniki programowalne i karty pomiarowe, które w po czeniu z innymi urz dzeniami mog tworzy ma e systemy rozproszone. Jednym z takich sterowników jest SMC z LUMELu Zielona Góra (rys. 6), prezentowany na targach Automaticon. Sterownik ten interpretuje kod VMASM zapisany w postaci binarnej, poprzez wbudowan w oprogramowanie firmowe maszyn wirtualn [8]. 620 automation 2009

Modu centralny SMC nie posiada w asnych wej ani wyj obiektowych, dlatego musi by wyposa ony w modu y wej cia/wyj cia (np. SM1 do SM5), z którymi komunikuje si za pomoc protoko u Modbus. Stany wej /wyj modu ów interpretowane s przez program jako zmienne globalne. Szczegó owy sposób konfigurowania komunikacji i programowania sterownika za pomoc j zyka ST mo na znale w [3, 4]. Nieco inaczej wygl da sytuacja w przypadku, gdy do sterowania np. procesem laboratoryjnym ma by u yty komputer PC z kart wej /wyj obiektowych. Do tego celu mo na u y programu Soft Controller nale cego do pakietu CPDev. Do wspó pracy z kart potrzebna jest biblioteka (bridge) dla platformy.net cz ca sterownik karty zainstalowany w systemie operacyjnym z aplikacj Soft Controller. Biblioteka ta musi by modu em adowanym dynamicznie (assembly). Etap konfiguracji karty jest podobny jak dla sterownika SMC, ale tutaj nast puje przywi zanie zmiennych globalnych do kana ów pomiarowych karty. Pomy lne testy przesz a karta kontrolno-pomiarowa krakowskiej firmy InTeCo, pokazana wraz z panelem testowym na rys. 6b. a) b) Rys. 6. a) Stoisko z sterownikiem SMC na targach AUTOMATICON; b) Testowanie karty wej /wyj InTeCo 7. PODSUMOWANIE Przedstawiono prototypowy kompilator j zyka IL dla pakietu CPDev. Budowa wewn trzna zosta a oparta na istniej cym kompilatorze j zyka ST do kodu VMASM. Analiza semantyczna programu w j zyku IL pozwala na utworzenie drzew wyra e, podobnych do powstaj cych przy kompilacji programu ST. Drzewa te s optymalizowane i przekszta cane do kodu asemblera VMASM. Instrukcje j zyka IL mog zawiera modyfikatory, które przekszta caj fragmenty utworzonego drzewa lub zmieniaj referencj zmiennej rejestru. Nieprzemy lane nazewnictwo zmiennych wej ciowych/wyj ciowych w blokach funkcjonalnych i funkcjach mo e uniemo liwi ich wykorzystanie w innym j zyku programowania ni macierzysty. Przedstawiono wybrane metody analizy kodu pozwalaj ce na wspó u ywalno obiektów POU utworzonych w ró nych j zykach. Zaprezentowano dwa wdro enia maszyny wirtualnej wykonuj cej skompilowany kod w sterowniku SMC oraz w aplikacji Soft Controller pracuj cej na komputerze PC z kart wej /wyj obiektowych firmy InTeCo. W przysz o ci planuje si pe n integracj kompilatora j zyka IL z edytorem projektów pakietu CPDev i dalsze rozszerzanie jego funkcjonalno ci. automation 2009 621

BIBLIOGRAFIA [1] Cooper K., Torczon L.: Engineering a Compiler. Morgan Kaufmann, San Francisco, 2003. [2] PN-EN 61131-3 Sterowniki programowalne. Cz 3: J zyki programowania. Warszawa, 2004. [3] Rzo ca D., Sadolewski J., Stec A., wider Z., Trybus B., Trybus L.: Programowanie w j zyku ST sterownika SMC Lumel dla minisystemu rozproszonego. Zg oszony na konf. Automation 2009. [4] Rzo ca D., Sadolewski J., Stec A., wider Z., Trybus B., Trybus L.: rodowisko programistyczne dla rozproszonych minisystemów kontrolno pomiarowych. Metody Informatyki Stosowanej, Nr 1, (tom 13) Szczecin 2008. [5] Rzo ca D., Sadolewski J., Trybus B.: Executable form of IEC 61131-3 ST language programs in CPDev environment. Proceedings of the International Multiconference on Computer Science and Information Technology, Wis a 2007. [6] Rzo ca D., Sadolewski J., Trybus B.: Kompilator j zyka ST normy IEC, 61131-3 na uniwersalny kod wykonywalny. Systemy Czasu Rzeczywistego (red. Z. Huzar, Z. Mazur). Wydawnictwa Komunikacji i czno ci, Warszawa 2007. [7] Rzo ca D., Sadolewski J., Trybus B.: Prototype environment for controller programming in the IEC 61131-3 ST language, ComSIS Vol. 4, No. 2, 2007. [8] Sadolewski J., Trybus B.: Wieloplatformowa maszyna wirtualna dla systemów sterowania. Modele i Zastosowania Systemów Czasu Rzeczywistego (red. Z. Huzar, Z. Mazur). Wydawnictwa Komunikacji i czno ci, Warszawa 2008. [9] Stec A., wider Z., Trybus L.: Charakterystyka funkcjonalna prototypowego systemu do programowania systemów wbudowanych wed ug normy IEC 61131-3. Systemy Czasu Rzeczywistego (red. Z. Huzar, Z. Mazur), Wydawnictwa Komunikacji i czno ci, Warszawa 2007. 622 automation 2009