Používateľské prostredie 1PLC
1. | Kompilátor jazyka ST |
2. | Kompilátor IIC modulov |
3. | Komunikačný modul |
4. | Používateľské prostredie 1PLC
|
Obsah
Cieľom tejto kapitoly je vytvoriť grafické užívateľské prostredie, ktoré bude využívať všetky možnosti predchádzajúcich modulov, (kompilátor, IIC, komunikácia). Pre tento účel som zvolil wxPython. Jedná sa o implementáciu knižnice wxWidgets pre pre jazyk python.
WxWidgets je povodne napísaný v jazyku C++ ako štruktúra zahŕňajúca nástroje na vytváranie GUI a iné nástroje, určené pre rôzne platformy. To znamená všetky verzie operačných systémov Windows, Unix s GTK+, Unix s Motif a MacOS. WxWidgets bol povodne vyvinutý v Artificial Intelligence Applications Institute, na univerzite v Edinburgu. Pôvodne určený pre vnútorné použitie, publikovaný bol v roku 1992.
Štruktúra užívateľského prostredia
Užívateľské prostredie v sebe zahŕňa niekoľko modulov. Modul kompilátora STL a IIC, komunikácie, služieb a hlavný Main modul. V blokovej schéme je zreteľne vidieť, že všetky moduly sú prepojené s hlavným modulom. Ten uchováva a poskytuje informácie o projekte ostatným modulom a tiež vykonáva interakcie medzi modulmi.
Obsluha užívateľského prostredia
Po spustení aplikácie vývojového prostredia sa nám ukáže hlavne formulárové okno obr. 4. V hornej časti sa nachádza nástrojová lišta. Obsahuje základné nástroje na prácu s projektom a PLC. Konkrétne, zľava vytvorenie nového projektu, otvorenie projektu, uloženie projektu, načítanie programu s pamäte PLC, nahratie programu do PLC, nahratie konfiguračného bloku, kompilácia zdrojového kódu, mapa pamäte, konfigurácia PLC, vytvorenie IIC datagramu, použitie IIC datatgramu, spustenie a stop PLC.
Ľavú časť predstavuje okno projektu, kde môžeme vidieť a nastaviť parametre PLC a projektu samotného.
Pravá časť obsahuje editačné okno editora jazyka STL a okno pre výpis informačných správ.
Nastavenie konfiguračného bloku
Konfiguračný blok PLC slúži na definovanie vstupno/výstupných portov a stavu jednotlivých pinov v režime stop.
Na dialógovom okne vidíme polia zaškrtávacích políčok reprezentujúcich piny príslušných portov. Podľa zvoleného typu PLC sú aktivované alebo deaktivované tie piny, ktoré PLC neobsahuje. Na pravej strane sa nachádza schéma zvoleného PLC s rozmiestnením portov. Zmeny v konfiguračnom bloku sa v PLC prejavia až po nahratí konfiguračného bloku.
Nastavenie typu PLC
Na výber typu PLC slúži dialógové okno. Na ľavej strane sa nachádza list všetkých PLC ktorých konfiguračné súbory sa našli v zložke Config. Na pravej strane sa nachádza textový popis vybraného PLC. Tento popis je načítaný s XML konfiguračného súboru.
Výber typu PLC je potrebný pre kompilátor STL a IIC, na identifikovanie podporovaných príkazov a rozsahu pamäti. Tiež ho vyžaduje modul komunikácie pre určenie veľkosti dátového bloku.
Nastavenie komunikačného portu PC/PLC
Po otvorení okna s nastavením komunikácie stačí vybrať príslušný port so zoznamu a potvrdiť. V prípade neskoršieho pripojenia je funkcia scan ktorá prehľadá všetky prístupné sériové a USB porty na PC.
Vytvorenie IIC ovládača zariadenia
Tento formulár slúži na vytváranie konfiguračného súboru ovládačov pre IIC. Vyžaduje mena ovládača, adresy IIC, masky IIC a zoznamom všetkých príkazov IIC zariadenia. Výsledný ovládač je uložený vo formáte ini súboru. V prípade že chceme upravovať stávajúci ovládač použijeme funkciu load a nájdeme príslušný ovládač.
Použitie IIC ovládača zariadenia
Ak chceme použiť IIC zariadenie musíme mať jeho ovládač v zložke Config/IIC. Pri otvorení dialógu sa automaticky vyhľadajú všetky ovládače a zobrazia sa v hornom zozname. Po pridaní ovládača do projektu Add, musíme vyplniť všetky premenné príkazov, ktoré sú definované.
Konfigurácia terminálového modulu
Terminálový modul predstavuje zariadenie na vizualizácia, signalizáciu a získavanie údajov od užívateľa. Tento modul je štandardné IIC zariadenie v režime slave. Každá akcia ktorú modul vykonáva je závislá na požiadavke nadradeného zariadenia.
Úlohou nástroja na konfiguráciu terminálového modulu je vytvoriť IIC datagram pre konkrétny stav obrazovky, odoslanie premenných a načítanie stavu tlačítok. Taktiež treba generovať ST kód obsahujúci samotný obsah obrazovky a pomocne rutiny.
Zoznam na pravej strane okna predstavuje všetky obrazovky ktoré máme pre dané PLC nakonfigurované. Pridávanie novej obrazovky sa vykoná tlačítkom Add a odstránenie tlačítkom Remove. Samotné telo správy sa vpisuje do stredného textového poľa. Zobrazenie premennej zabezpečujú formátovacie značky označené {premenná,adresa,počet znakov(,počet znakov desatinnej časti)}. Typ premennej je definovaný znakom B,W,F. Obrazovka ďalej umožňuje nastavenie signalizačného zvuku a povoľovacieho bitu ktorý zapíše obrazovku z PLC do terminálového modulu. Ak chceme použiť aj tlačidlá na terminále je potrebne v záložke Outputs definovať povoľovací bit a adresu kam sa majú uložiť 2 bajty predstavujúce stav tlačidiel.
Vygenerovaný ST kód je umiestnený na koniec zdrojového kódu a označený špeciálnym výrazom kvôli identifikácii.
#@Term@ # Nemazat tato cast kodu je generovana automaticky #-----Screen------ ld v100.0 movb v10,116 movb v11,101 movb v12,115 movb v13,116 movb v14,32 movb v15,37 movb v16,51 movb v17,100 #---------- beep,var movb v18,0 movb v19,2 movb v20,255 #------Variable----- movb v40,0 movb v0,0 = v0.0 ld sp0.0 r v0.1 r v0.2 r v0.3 ld sp0.0 ==b v40,0 movb v1,2 movd v2, v105 s v0.3 ld sp0.0 incb v40 ==b v40,1 movb v40,0
Výraz #@Term@ je identifikačná značka určená pre ľahké rozpoznávanie generovaného kódu od užívateľského programu. Vygenerovaný kód pre terminálový modul pozostáva z dvoch častí.
V prvej časti sa uložia znaky formátovacieho reťazca a ukončia sa 0. pridá sa adresa premenných ktoré sú použité na obrazovke a dĺžka pípnutia. Dĺžka formátovacieho reťazca je obmedzená na 32 viditeľných znakov, vzhľadom na použitý modul znakového displeja 16x2. Dĺžka zvukovej signalizácie je voliteľná v 5 možnostiach (žiaden zvuk, krátke pípnutie, stredne dlhé pípnutie, dlhé a veľmi dlhé pípanie).
V druhej časti sa nachádza vynulovanie počítadiel a povoľovacích bitov pre odoslanie premenných a rutiny ktoré definujú zdrojovú a cieľovú adresu odoslanej premennej v pamäti terminálového modulu.
Online sledovanie obsahu pamäte PLC
Jedným z užitočných diagnostických nástrojov vývojového prostredia je Memorymap alebo tiež nástroj na online sledovanie obsahu pamäte PLC. Hlavný princíp nástroja spočíva v cyklickom načítavaní obsahu pamäte cez sériový port, dekódovaní a vypisovaní dát na obrazovku.
Editor LAD
Na tvorbu programu pre PLC je primárne určený jazyk STL. Ak užívateľ preferuje tvorbu programov pomocou rebríkových schém (LAD), stačí prepnúť záložku nad textovým editorom STL do režimu LAD. V tomto režime pracuje vývojové prostredie ako LAD editor.
Na tvorbu programu teraz stačí kurzorom myši označiť pozíciu na ploche LAD editora a z panela na ľavej strane vybrať príslušnú schematickú značku. Po vytvorení schémy je program možné skompilovať ako STL kód. Pri tomto procese sa matica LAD schémy prevedie na postupnosť STL príkazov a spojí sa s kódom STL editora. Toto umožňuje spoluprácu nástroja na konfiguráciu terminálového modulu s editorom LAD aj STL. Pretože jazyky STL a LAD sú štrukturálne podobné, nieje potrebné písať zvlášť kompilátor na LAD a STL ale postačí prevodník z LAD do STL.
LAD schéma programu slúži nielen na programovanie ale využíva sa aj pri simulácii. V tomto režime sú schematické značky farebne označené pre jasnú identifikáciu aktuálneho stavu.
Simulácia prebieha cyklicky a v každom cykle sa kontrolujú stavy vstupov a stav bitu ktorý značka predstavuje. Vstupom rozumieme stav výstupu predchádzajúcej značky. Zelenou sú potom označené tie značky ktorých vstup a vnútorný stav je logická 1 a červenou všetky ostaté značky. Ručné zmeny stavov sa dajú vykonať v okne Memory map kde prepísaním hodnoty na príslušnej adrese zmeníme aj hodnoty stavov príslušných LAD objektov.
Štruktúra projektového súboru
Projektový súbor ktorý užívateľ používa je klasický xml súbor. Na prácu s projektovými súbormi slúži modul Project.py. Modul sa stará o načítavanie a ukladanie projektov a serializáciu dátových štruktúr.
<project> <head author="" date="" description="" name="Olare" version="1.0" /> <code> <stlcode> ... </stlcode> <ladcode> ... </ladcode> </code> <config config="myPLC32.xml" inputs="0 0 0 0 0 0 0 " programversion="1.0" state="0 0 0 0 0 0 0 " /> <workspace> ... </workspace> <iic>...</iic> <terminal>...</terminal> <terminaliic>...</terminaliic> </project>
Projekt v hlavičke definuje základné informácie o projekte, ako autor, dátum vytvorenia, popis , názov a verziu projektu. Sekcia code obsahuje textovú podobu STL programu a serializované dáta matice LAD programu. V sekcii config definujeme typ PLC pre ktorý je projekt napísaný a stav konfiguračného bloku. Sekcia workspace obsahuje serializované dáta popisujúce rozloženie okien a panelov v projekte. Iic a terminaliic sú sekcie kde sa nachádzajú serializované IIC datagrami zariadení a terminálového modulu. Sekcia terminal predstavuje dáta pre konfiguráciu terminálového modulu.
Záver
Cieľom diplomovej práce bolo vytvoriť softvérové vybavenie pre jedončipové PLC, umožňujúce kompilovať, nahrávať a čítať programy pre toto PLC. Taktiež bolo potrebné umožniť užívateľovi prácu s IIC zariadeniami pomocou rôznych konfiguračných nástrojov.
Cieľ práce sa podarilo splniť. Bol vytvorený kompilátor jazyka STL s kontrolou syntaxe, kompilátor IIC datablokov a tiež modul na prevod schém jazyka LAD do kódu STL. Úspešne bol implementovaný komunikačný protokol a tiež samotná komunikácia cez modul pyserial. Podarilo sa vytvoriť základné užívateľské prostredie s využitím knižnice wxWidgets, pre jednoduchú prácu s uvedenými modulmi a tiež nástroje na diagnostiku a sledovanie PLC v reálnom čase. Do vývojového prostredia bola tiež úspešne implementovaná podpora IIC zariadení a nástroj na jednoduché konfigurovanie terminálového modulu.
Softvérové vybavenie bolo vytvorené ako program jazyka Python s využitím príslušných knižníc uvedených v prílohe. To umožňuje jeho použitie na rôznych operačných systémoch ako Windows, Linux a teoreticky MAC.
Program bol testovaný s verziou jednočipového PLC na báze ATMega 32 a ATMega 8 kde pracoval stabilne bez porúch. Pri testoch sme použili operačné systémy Windows XP a distribúciu Arch Linux. Kompilátor STL, komunikačný modul, IIC zariadenia, terminálová konfigurácia a prevodník LAD-STL pracovali správne.
Možnosti ďalšieho postupu pri zdokonaľovaní a vylepšovaní stávajúceho vývojového prostredia je niekoľko. Veľmi užitočná by bola podpora funkcií a kompozitných blokov v STL a LAD. Pre tento účel by bolo treba definovať nové gramatické pravidlá v syntaktickej analýze kompilátora. Ďalšia vec ktorá by zvýšila úroveň práce je lepšia podpora komunikácie medzi viacerými PLC a možnosť prepojenia celej siete zariadení.
Použitá literatúra
- Váňa, V.: Mikrokontroléry ATMEL AVR – Popis procesoru a instrukční soubor. BEN – technická literatúra, Praha, 2003. ISBN 80-7300-083-0
- Harms, D. - Mcdonald, K.: - Začíname programovat v jazyce Python. Computer press, 2008. ISBN 978-80-2512-161-0
- Van Rossum, G.: Python Library Reference, relase 2.5.2. 21. Február, 2008. http://www.python.org/doc/
- Smart, J. - Roebling, R. - Zeitlin, V. - Dunn, R.: wxWidgets 2.8.4: A portable C++ and Python GUI toolkit, March, 2007, http://www.wxpython.org
- Sova, M.: Návrh a realizácia jednočipového PLC, Diplomová práca, TNUAD v Trenčíne, 2010
- Kloz, V.: Softwárové PLC, Diplomová práce, ČVUT v Prahe, 2003
- A.M. Kuchling. Regular Expression HOWTO, posledná aktualizácia 3. 3. 2007 http://www.amk.ca/python/howto/regex
- Liechti C.: pySerial – Python Serial Port Extension, 2008, http://pyserial.sf.net
- Bazley M. D.: PLY (Python Lex – Yacc), PLY version 2.5, Máj, 2008, posledná aktualizácia 11. 5. 2008, http://groups.google.com/group/ply-hack[1]
- Niemann T.: A Compact Guide To Lex&Yacc, ePaper Press
- Siemens AG: Programovatelný automat s7-200 Systémový manuál, Jún, 2004
- Julian Smart, Robert Roebling, Vadim Zeitlin, Robin Dunn, et al: wxWidgets 2.8.4: A portable C++ and Python GUI toolkit, Marec, 2007
Príloha A – CD
- Aplikácia myPLC_Studio
- Kópia diplomovej práce
- Inštalačné programy
- Ukážkové projekty