Používateľské prostredie 1PLC

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání

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.

Obrázok 4: Štruktúra programu užívateľského prostredia


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.

Obrázok 5: Okno užívateľského prostredia

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.

Obrázok 6: Dialógové okno konfiguračného bloku

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.

Obrázok 7: Dialógové okno výberu typu PLC

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.

Obrázok 8: Dialógové okno nastavenia komunikácie

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č.

Obrázok 9: Dialógové okno vytvárania ovládačov IIC

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é.

Obrázok 10: Dialógové okno použitia ovládačov IIC

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.

Obrázok 11: Dialógové okno nastavenia terminálového modulu

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


Ukážka 44: Automaticky generovaný kód terminálového modulu

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.

Obrázok 12: Okno Memory map - online sledovania obsahu pamäte

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.

Obrázok 13: 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.

Obrázok 14: Editor LAD v režime simulácie

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>


Ukážka 45: Štruktúra projektového xml súboru

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

  1. Váňa, V.: Mikrokontroléry ATMEL AVR – Popis procesoru a instrukční soubor. BEN – technická literatúra, Praha, 2003. ISBN 80-7300-083-0
  2. Harms, D. - Mcdonald, K.: - Začíname programovat v jazyce Python. Computer press, 2008. ISBN 978-80-2512-161-0
  3. Van Rossum, G.: Python Library Reference, relase 2.5.2. 21. Február, 2008. http://www.python.org/doc/
  4. 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
  5. Sova, M.: Návrh a realizácia jednočipového PLC, Diplomová práca, TNUAD v Trenčíne, 2010
  6. Kloz, V.: Softwárové PLC, Diplomová práce, ČVUT v Prahe, 2003
  7. A.M. Kuchling. Regular Expression HOWTO, posledná aktualizácia 3. 3. 2007 http://www.amk.ca/python/howto/regex
  8. Liechti C.: pySerial – Python Serial Port Extension, 2008, http://pyserial.sf.net
  9. 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]
  10. Niemann T.: A Compact Guide To Lex&Yacc, ePaper Press
  11. Siemens AG: Programovatelný automat s7-200 Systémový manuál, Jún, 2004
  12. 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