VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Počítačové systémy
Řízení modelu vlakového uzlu bakalářská práce
Autor: Jakub Lesák Vedoucí práce: Ing. Michal Bílek Jihlava 2014
Anotace Bakalářská práce vznikla za účelem vytvoření funkčních ovládacích aplikací pro model železničního uzlu. Vzniklé aplikace umožní uživateli tento model ovládat pomocí PC nebo pomocí programovatelného logického automatu WAGO. Druh ovládání si uživatel může zvolit sám. Na výběr je ze dvou možností a to z automatického režimu anebo z manuálního. Práce obsahuje informace o PLC, jeho programovacích jazycích, sériové komunikaci a v neposlední řadě i o aplikacích a způsobu ovládání zmíněného vlakového uzlu. Klíčová slova: PLC, WAGO, PC, C#, model železničního uzlu, sériová komunikace, vlak, bit, CoDeSys.
Annotation The bachelor thesis originated in order to create functional control applications for the model of the railway junction. The resulting application allows the user to control this model using the PC or using a programmable logic automatic machine WAGO. The type of control can be chosen by the user himself. There is a choice of two options the automatic mode or themanual. The work contains information about the PLC, its programming languages, serial communication, and last but not least about the applications and the way of controlling the mentioned train node. Key words: PLC, WAGO, PC, C#, railway junction, serial communication, train, bit, CoDeSys.
Prohlašuji, že předložená bakalářská práce je původní a zpracoval/a jsem ji samostatně. Prohlašuji, že citace použitých pramenů je úplná, že jsem v práci neporušil/a autorská práva (ve smyslu zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů, v platném znění, dále též „AZ“). Souhlasím s umístěním bakalářské práce v knihovně VŠPJ a s jejím užitím k výuce nebo k vlastní vnitřní potřebě VŠPJ. Byl/a jsem seznámen s tím, že na mou bakalářskou práci se plně vztahuje AZ, zejména § 60 (školní dílo). Beru na vědomí, že VŠPJ má právo na uzavření licenční smlouvy o užití mé bakalářské práce a prohlašuji, že s o u h l a s í m s případným užitím mé bakalářské práce (prodej, zapůjčení apod.). Jsem si vědom/a toho, že užít své bakalářské práce či poskytnout licenci k jejímu využití mohu jen se souhlasem VŠPJ, která má právo ode mne požadovat přiměřený příspěvek na úhradu nákladů, vynaložených vysokou školou na vytvoření díla (až do jejich skutečné výše), z výdělku dosaženého v souvislosti s užitím díla či poskytnutí licence. V Jihlavě dne
............................................... Podpis
Poděkování Na tomto místě bych rád poděkoval svému vedoucímu práce Ing. Michalu Bílkovi, za vedení bakalářské práce a zprostředkování modelu železničního uzlu, bez kterého by tato práce nemohla vzniknout. Poděkování také patří rodině a přátelům, kteří mě po dobu studia podporovali.
Obsah 1
2
Úvod.......................................................................................................................... 8 1.1
Zdůvodnění ........................................................................................................ 8
1.2
Cíl ....................................................................................................................... 8
Sériová komunikace .................................................................................................. 9 2.1
2.1.1
Synchronní přenos .................................................................................... 10
2.1.2
Asynchronní přenos .................................................................................. 11
2.2 3
4
RS-232................................................................................................................ 9
Převodník USB na RS-232............................................................................... 11
Programovatelné automaty ..................................................................................... 13 3.1
Definice ............................................................................................................ 13
3.2
Programovací jazyky........................................................................................ 14
3.2.1
Textové jazyky .......................................................................................... 15
3.2.2
Grafické jazyky ......................................................................................... 15
PLC WAGO 750 ..................................................................................................... 17 4.1
Koncepce .......................................................................................................... 17
4.1.1
5
Označení modulů ...................................................................................... 18
4.2
První kroky ....................................................................................................... 19
4.3
Použitý modul .................................................................................................. 20
Vývojové prostředí CoDeSys ................................................................................. 21 5.1
Struktura projektu............................................................................................. 21
5.2
Komponenty projektu....................................................................................... 22
5.2.1
POU (Program Organization Unit) ........................................................... 22
5.2.2
Funkce ....................................................................................................... 22
5.2.3
Funkční blok ............................................................................................. 22
5.2.4
Program ..................................................................................................... 23
5.2.5
PLC_PRG ................................................................................................. 24
5.2.6
Akce .......................................................................................................... 24
5.2.7
Zdroje ........................................................................................................ 25
5.2.8
Datové typy ............................................................................................... 25
5.2.9
Knihovny .................................................................................................. 25
5.2.10
Vizualizace................................................................................................ 26
5.3
Testování a ladění projektu .............................................................................. 26
5.4
Další vlastnosti ................................................................................................. 26
5.5
Použité knihovny.............................................................................................. 27
6
7
Model železničního uzlu ......................................................................................... 29 6.1
Popis modelu .................................................................................................... 29
6.2
Ovládání modelu .............................................................................................. 30
Realizace ................................................................................................................. 33 7.1
Aplikace pro PC ............................................................................................... 34
7.1.1
Popis získání polohy vlaku ....................................................................... 37
7.1.2
Popis zdrojového kódu.............................................................................. 37
7.2
Aplikace pro WAGO........................................................................................ 41
7.2.1
Popis získání polohy vlaku ....................................................................... 42
7.2.2
Automatické řízení .................................................................................... 44
7.2.3
Ruční řízení ............................................................................................... 45
8
Závěr ....................................................................................................................... 46
9
Seznam použité literatury ....................................................................................... 47
10 Seznam obrázků ...................................................................................................... 49 11 Přílohy..................................................................................................................... 51
1
Úvod
Žijeme v době počítačů a automatizovaných procesů, kde se k obsluze stroje nebo dokonce celého výrobního procesu stačí jeden jediný člověk, navíc se postupně ukázalo, že rozmanitost automatizačních úloh je tak velká, že nelze všechny dílčí algoritmy napevno vyrobit a produkovat v dostatečném množství a kvalitě. Problém vyřešil nástup volně programovatelných automatů neboli PLC. PLC jsou počítače s CPU se speciálním programovacím jazykem optimalizovaným na rychle probíhající děje.
1.1
Zdůvodnění
Téma mé bakalářské práce vychází z mé obliby PLC zařízení a programovacího jazyku C#. Obliba k PLC vznikla během školní praxe v roce 2012, kterou jsem absolvoval ve firmě Aucon s.r.o.. Ta se zabývá především zprovozňováním strojních a technologických automatizovaných technologií. V Aucon s.r.o. jsem spolupracoval na projektu vytvoření automatizované linky pro výrobu rybího odpadu. Proto jsem si vybral práci pod vedením pana inženýra Bílka, který ve škole vyučuje předmět Programovatelné automaty. Výběr prací byl široký, ale nakonec jsem zvolil možnost řízení modelu vlakového uzlu.
1.2
Cíl
Cílem práce bude vytvoření ovládacího softwaru pro zmiňovaný model jak pro PC, tak pro PLC WAGO. Aplikace pro ovládání pomocí PC bude vytvořena v programovacím jazyku C# a bude mít dva režimy. První plně automatický, kde si uživatel pouze vybere trať, kterou má vláček jezdit. A druhý manuální, kde uživatel skrze vizualizované rozhraní ovládá výhybky, semafory a rychlost vlaku podle sebe. Aplikace pro PLC WAGO bude psána ve strukturovaném textu, jež je programovací jazyk navržený pro programovatelné logické automaty podle standardu IEC 61131-3. Tato aplikace bude mít stejné ovládací možnosti jako aplikace psaná pro PC. Lze zvolit ruční nebo automatické řízení modelu, které je k dispozici přes vizualizaci.
8
2
Sériová komunikace
Sériové rozhraní je určeno především pro komunikaci mezi dvěma zařízeními. Sériový přenos je jednodušší než přenos paralelní. V telekomunikacích a informatice je sériový přenos proces přenosu, kde se data posílají postupně po jednotlivých bitech pomocí komunikačního kanálu nebo sběrnice. Větší množství dat se tedy musí přenášet postupně bit po bitu. Během sériového přenosu se přenáší v jednom časovém okamžiku pouze jeden datový bit. Nevýhodou je, že přenos trvá déle, ale jeho realizace je lehčí a cenově nenáročná. Je v přímém protikladu s paralelní komunikací, kde je několik bytů posíláno najednou. Sériový přenos se dělí na synchronní a více používaný asynchronní.[1]
2.1
RS-232
Standart RS-232, resp. jeho poslední varianta RS-232C, která vznikla před desítkami let jako komunikační rozhraní pro potřeby připojování modemů k počítači, posléze se však jeho působnost nasazení rozšířila, připojovala se na něj například světelná pera, myši nebo i dotykové LCD. Tento typ konektoru je mimo jiné podporován i v mnoha dalších zařízeních. Mohou se pomocí něj programovat regulátory motorů v průmyslových strojích a v případě potřeby lze pomocí něj přistupovat k některým aktivním prvkům značky Cisco. Jak můžete vidět na obrázku Obrázek 1, konektor je tvořen devíti piny.[2]
Obrázek 1 – RS-232 (zdroj: http://www.hw-group.com)
9
Význam jednotlivých pinů
Pin 1 – DCD (Data Carrier Detect) – detekce nosného signálu. Vysílač oznamuje přijímači, že na lince detekoval nosný kmitočet.
Pin 2 – RXD (Receive Data) – přijímaná data,
Pin 3 – TXD (Transmit Data) – odchozí data,
Pin 4 – DTR (Data Terminal Ready) – přijímač oznamuje vysílači, že je připraven komunikovat.
Pin 5 – SGND (Signal Groud) – signálová zem,
Pin 6 – DSR (Data Set Ready) – vysílač tímto signálem oznamuje přijímači, že je připraven komunikovat.
Pin 7 – RTS (Request To Send) – přijímač tímto signálem oznamuje, že je komunikační cesta volná.
Pin 8 – CTS (Clear To Send) – vysílač tímto signálem oznamuje, že je komunikační cesta volná.
Pin 9 – RI (Ring Indicator) – indikátor zvonění. Vysílač oznamuje přijímači, že na lince indikoval signál zvonění.[3]
2.1.1 Synchronní přenos Při synchronním sériovém přenosu se data vyšlou jako nepřetržitý řetězec bitů. Navíc se zde nepoužívají žádné znaky, které by označovali začátek nebo konec přenosu. Tato situace se řeší speciálními značkami, které slouží pro vzájemnou synchronizaci obou komunikujících zařízení. Z toho vyplývá, že se během přenosu musí přenášet buď data, nebo tyto speciální znaky z vysílače na přijímač. Také je potřeba určit, které zařízení bude vysílač, a které přijímač, jelikož je synchronní sériová linka pouze jednosměrná. Synchronní přenos se nejčastěji používá tam, kde se očekává nepřetržitý přenos větších objemů dat. Na obrázku Obrázek 3 je ukázáno, jak takový přenos vypadá. SYN je synchronizační znak, který ohraničuje nijak od sebe neoddělené přenášené znaky.[1]
Obrázek 2 – Synchronní přenos (http://www.earchiv.cz)
10
2.1.2 Asynchronní přenos V případě asynchronního sériového přenosu se přenášená data rozdělí na menší části a každá část se posílá nezávisle na ostatních. Typická velikost části neboli znaku je 5–8 bitů. Znaky jsou přenášený s libovolným časovým odstupem. Příjemce ale nemůže vědět, kdy začíná další znak, a proto se opět používají speciální znaky, které označují začátek a konec posílaného znaku. Nazývají se start-bit a stop-bit. Start-bit určuje začátek každého znaku a také umožnuje přijímači aby si správně nastavil svou časovou základnu, která je nutná pro určení správných časových okamžiků. Časové okamžiky jsou důležité pro správné vyhodnocení stavu jednotlivých bitů. Stop-bit slouží pro určení konce znaku, a tím pádem povoluje příjem znaku dalšího. Ve znaku se také objevuje jakýsi paritní bit, což je kontrolní bit obsahující informaci o počtu jedničkových bitů ve slově. Do znaku se přidává, aby se vyloučila možná chyba při jeho přijetí. [1] Parita může být:
žádná – parita není kontrolována, sudá – doplnění datových bitů dalším bitem, tak aby součet znaku byl sudý, lichá – doplnění datových bitů dalším bitem, tak aby součet znaků byl lichý.
Pokud nastane situace, kdy celkový počet jedničkových bitů nesouhlasí s paritou, došlo k chybnému přijetí informace. [1]
Obrázek 3 – Asynchronní přenos (zdroj: autor)
Na obrázku Obrázek 3 je zobrazeno uspořádání jednotlivých bitů ve znaku. ‚S‘ reprezentuje start-bit, dále následuje přenášená informace, ‚P‘ označuje paritní bit a nakonec je stop-bit.
2.2
Převodník USB na RS-232
Ne všechny moderní počítače jsou vybaveny sériovým portem, naštěstí existuje dnes velice rozšířený převodník, který umožní připojit k počítači zařízení s konektorem RS-232. Díky kvalitním ovladačům komunikace funguje nejen s 32-bitovými a 64bitovými aplikacemi, ale dokonce i s 16-bitovými a aplikacemi pro MS-DOS. Největší
11
zastoupení májí převodníky od společnosti FTDI Chip obsahující jednoduchý obvod pro přenos signálu. [2] Ve své práci jsem použil velice kvalitní převodník, který vytvořila firma RWetc. s.r.o. Převodník využívá čip FTDI RS232R. Součástí obvodu je i integrovaná 1024 bitovou EEPROM obsahující základní nastavení obvodu (např. typ obvodu, USB VID a PID, USB sériové číslo, identifikaci výrobce, popis produktu apod.) a uživatelská data. Mezi jeho další klíčové vlastnosti patří rychlost přenosu, která začíná na 300Bd a končí na 1MBd, 256 bajtová příjímací a 128 bajtová vysílací vyrovnávací paměť umožňující využití vysoké datové propustnosti. Také má k dispozici integrovaný 3,3V regulátor pro USB operace. Je napájený ze sběrnice a jeho spotřeba je 15mA/5V bez dalšího připojeného zařízení.[4]
Obrázek 4 – Převodník RS232R (zdroj: autor)
12
3
Programovatelné automaty
Nejvýznamnějším řídícím prostředkem pro řízení technologických procesů, výrobních linek a strojů v reálném čase se staly programovatelné logické automaty, zkráceně PLC, již během 80. let. Byla to reakce na vývoj mikroelektronické technologie, který umožnil vytlačit centralizované řízení, reprezentované řídícími počítači a minipočítači distribuovanou řídící technikou – PLC. A i když byl vývoj PLC oproti řídícím počítačům a minipočítačům pozadu, vykazoval oproti nim nesmírné výhody.[8]
3.1
Definice
Programovatelný
logický
automat,
zkráceně
PLC,
je
zvláštní
formou
mikroprocesorového automatu, který využívá programovatelné paměti k uložení instrukcí a využívá logické, časovací, sekvenční, čítací a aritmetické funkce za účelem řízení strojů a procesů. Je navržen tak, aby jeho ovládání bylo srozumitelné i pro programátory s omezenými znalostmi počítačů a programovacích jazyků. Tyto automaty jsou navrženy tak aby bylo možné měnit nebo vytvářet jejich programy bez pomocí programátora. PLC totiž využívají jednoduchý a srozumitelný programovací jazyk založený především na logických a přepínacích operacích (například: když nastane situace A nebo B, tak přepni přepínač C; když nastane situace A a zároveň B, přepni přepínač D). K PLC je však nutné připojit vstupní zařízení (senzory) a výstupní zařízení (motory, ventily, apod.). Operátor do něj poté nahraje uživatelský program s podmínkami a kontrolními pravidly. Automat následně monitoruje vstupy a výstupy a tento program cyklicky vykonává.[8]
Obrázek 5 – Blokové schéma PLC (zdroj: http://www.e-automatizace.cz)
13
PLC mají velkou výhodu, ten samý řídící obvod může být použit společně s širokou škálou řídicích systémů. Chceme-li změnit kontrolní systém nebo pravidla, která mají byt použita, stačí program prostě upravit nebo nahrát nový. Výsledkem je flexibilní, cenově efektivní systém, který může být použit s jinými řídicími systémy nehledě na jejich povahu a složitost. Výhody:
PLC jsou robustní a navrženy tak aby odolávaly vibracím, teplotě, vlhkosti a hluku.
Snadné programování,
rychlé přeprogramování úlohy,
flexibilita,
možnost rozšíření,
hospodárnost,
podpora vyšších programovacích jazyků.[7]
Nevýhody:
3.2
Nižší programátorský komfort než u minipočítačů.
Dražší než IPC.
Nezbytnost hierarchické architektury při připojování do větších celků.[7]
Programovací jazyky
V rámci standardu IEC 61131-3 je definováno pět jazyků. Jejich sémantika i syntaxe je přesně definována a nenechává žádný prostor pro nepřesný zápis kódu. Zvládnutí těchto jazyků otevírá cestu k ovládání široké škály řídicích systémů, které jsou na tomto standardu definovány.[5] Programovací jazyky se dělí do dvou kategorií.
14
3.2.1 Textové jazyky IL – Instruction List První z kategorie textových jazyků je IL, který je český nazýván jazyk seznamu instrukcí. Program je složen ze sekvencí instrukcí. Každá instrukce začíná na novém řádku, každý řádek obsahuje operátor a závisle na typu operace jeden nebo více operandů oddělených čárkou.[5] ST – Structured Text Do textových jazyků patří také ST neboli jazyk strukturovaného textu. Je to velmi využívaný vyšší programovací jazyk, který vznikl na jazycích Ada, Pascal a C. Obsahuje smyčky, podmínky a cykly což jsou moderní prvky programovacího jazyka. Tento jazyk je ideální pro vytváření funkčních bloků, které mohou být použity v jakémkoli jiném programovacím jazyku daného standardu.[5]
Obrázek 6 – Textové programovací jazyky (zdroj: http://www.edumat.cz)
3.2.2 Grafické jazyky LD – Ladder Diagram Ladder diagram je jazyk příčkového diagramu nebo také kontaktních schémat, který vznikl v USA a je založen na grafické reprezentaci reléové logiky. Program je zapsán sítí propojených grafických prvků, ta je z obou stran ohraničena svislými čarami, jejich názvy jsou levá a pravá napájecí sběrnice. Je vhodný pro návrh logických kontaktních polí a lze v něm vytvářet struktury podobné těm v FBD.[5] SFC – Sequential Function Chart Česky, jazyk sekvenčních diagramů je odvozen ze symboliky Petriho sítí, ale liší se od nich tím, že grafická reprezentace se zde převádí přímo do souboru výkonných řídících prvků. Popisuje chronologický sled různých akcí v algoritmu. Akce se značí místy grafu 15
a podmínky přechodu mezi akce jsou označovány hranami grafu. Umožňuje rozložit úlohu na menší, zvládnutelné čísti a zachovat přitom přehled o chování celku.[5] FBD – Function Block Diagram Jazyk funkčního blokového schématu je velice blízký procesnímu průmyslu. Pracuje s množinou sítí a každá sít obsahuje strukturu reprezentující logický nebo aritmetický výraz, volání funkčního bloku, skok nebo instrukci. Charakterizuje chování funkcí, funkčních bloků, také popisuje vzájemné vztahy systému. Tento jazyk lze použít pro detailní popis podmínek přechodů a akcí v SFC.[5]
Obrázek 7 – Grafické programovací jazyky (zdroj: autor)
16
4
PLC WAGO 750
WAGO-I/O-SYSTÉM
750
je
rozšiřitelné
zařízení
skládající
se
z hlavního
procesorového modulu, který řídí a vyhodnocuje komunikaci mezi ostatními moduly. Společnost WAGO, průkopník v oblasti pružinového připojení elektrických vodičů, přišla v roce 1995 na trh automatizační techniky s WAGO-I/O-SYSTEM 750. Od uvedení na trh se systém dočkal podstatného rozšíření o jednotlivé moduly na straně I/O (vstupy / výstupy) i na straně procesorových modulů. Nasazení systému si našlo široké spektrum aplikací od řízení jednoúčelových strojů, čistíren odpadních vod, záložních zdrojů (UPS) a v neposlední řadě i při automatizaci budov.[6] WAGO-I/O-SYSTÉM 750 se skládá z hlavního procesorového modulu, který řídí a vyhodnocuje komunikaci mezi ostatními moduly. Dále lze připojit až 64 dalších modulů pro zpracování jakéhokoli signálu. Posledním připojeným modulem se tak sběrnice uzavírá v celek.[6]
4.1
Koncepce
„Řídicí systém WAGO byl navržen tak, aby umožňoval co nejjednodušší použití při automatizaci. Je potřeba zmínit, že WAGO-I/O-SYSTEM 750 (viz obrázek) umožňuje libovolně kombinovat v jedné řídicí stanici binární a analogové I/O moduly s různými napěťovými
úrovněmi
(5/12/15/24/42/48/60/110/220VDC
a
24/120/
250VAC).
Analogové moduly existují pro připojení unifikovaných signálů (0/4-20mA, ±10V DC, 0-10V AC/DC), ale i pro speciální rozsahy 0-30VDC, 0-1A (5A), 3-fázový modul pro měření proudu / napětí/ výkonu a spotřeby atd.). Samozřejmostí jsou také moduly pro přímé připojení odporových čidel teploty (Pt100, Pt1000, Ni100, Ni1000 apod.) a pro všechny typy termočlánků (J, K, B, E, N, R, S, T, U, L). Navíc je možné ke stanici připojit moduly poskytující různé formy komunikace (RS232, RS485, Modus RTU, LON, KNX/TP1, MP-Bus, DALI, Enocean, Bluetooth atd.).“[6] Řídicí systémy WAGO jsou rovněž vybaveny rozhraními, která se využívají zejména při komunikaci s nadřazenými informačními systémy jako ERP nebo MES.
17
Obrázek 8 - WAGO 750-841 (zdroj: http://www.conrad.de)
„Každý modul má ještě indikaci stavu sepnutí pomocí LED diod (zelená) pro každý kanál, u analogových proudových smyček indikace přetížení, rozpojení, zkrat (červená LED).“ „Procesorový modul umožňuje vykonávání zadaného programu, např. řízení osvětlení, žaluzií, teploty v místnostech apod., dle požadavků dané aplikace. Dále komunikují dle potřeby s nadřazenými BMS systémy (Building Management System) či mezi sebou po standardizovaných sběrnicích (BacNet, KNX/IP, Lon, Ethernet). Řídicí programy jsou přenosné mezi jednotlivými typy procesorů. Proto je přechod z BacNet na KNX/IP se stejnými I/O moduly, nejen možný, ale i jednoduchý. Tato variabilita na straně hardwaru i softwaru umožňuje zkrácení časů potřebných pro realizaci (projektová činnost, programování, uvedení do provozu a údržba). Procesorové stanice s Ethernetem obsahují již v základu webový server, přes který je možno nejen vizualizovat hodnoty z daného prostoru (signalizace zda světlo svítí / nesvítí), ale i je nastavovat (časové plány, centrální funkce apod.), a to přímo z internetového prohlížeče s Javou.“[6]
4.1.1 Označení modulů Moduly obsahující určité vstupy a výstupy jsou od sebe odlišeny barevným proužkem na vrchu přední strany modulu.
žlutá – binární vstupy,
červená – binární výstupy,
zelená – analogové vstupy,
18
modrá – analogové výstupy,
průhledná – ostatní moduly,
ostatní moduly – průhledná.[6]
Obrázek 9 – barevné označení modulů (zdroj: http://www.wago.com)
4.2
První kroky
Jelikož se tato sestava prodává nezapojená, je potřeba aby první krok byl, připojit napětí 230V na zdroj. Dále je nutné propojit 24V DC ze zdroje se stanicí 750-841. Procesorová stanice 750-841 obsahuje rozhraní Ethernet, které je potřeba před prvním použití nakonfigurovat. Ke správnému nastavení stanice existují dva způsoby. Prvním způsobem je použití sériového kabelu a programu WAGO Ethernet Settings, druhý je připojit se k stanici pomocí síťového kabelu a programu WAGO BootP Server. [zdroj: autor] Protože jsou oba způsoby popisově rozsáhlé, je možné si je prohlédnout v souboru wago_navod.pdf na přiloženém CD.
19
4.3
Použitý modul
Použitý modul umožňující sériovou komunikaci je WAGO 750-650 / 003-000.
Obrázek 10 – použitý modul 750-650/003-000 (zdroj: [10])
Komunikace probíhá přes přenosové kanály TxD a RxD. TxD je kanál pro příjem dat a RxD je kanál pro odesílání. Pro bezpečnou a správnou funkčnost se doporučuje připojit i zemnění vodičů. Modul také podporuje řízenou komunikaci přes signály RTS a CTS. Stínění se připojuje do zástrčky posledních dvou otvorů, označených na obrázku jako Shield. Celé rozhraní pracuje v souladu se standardy TIA/EIA-232-F, CCITT V.28/DIN 66259-1. Maximální přenosová rychlost je 1920 baud rate. Rozhraní RS-232 zaručuje vysokou odolnost vůči rušení, díky galvanicky odděleným signálům.[10] V horní části modulu jsou 3 LED diody, které indikují stav a připravenost linek pro přenos. [10]
20
5
Vývojové prostředí CoDeSys
Zkratka CoDeSys vznikla ze tří anglických slov, Controller Development System. Je to univerzální vývojové prostředí pro aplikační programy řídicích systémů PLC vytvořené společností 3S-Smart Software Solutions GmbH právě podle standardu IEC 61131-3, bez ohledu na použitý hardware. CoDeSys slouží pro jednoduchou editaci algoritmů. Editory a ladící funkce jsou založeny na spolehlivých moderních programovacích jazycích a nástrojích.[9]
Obrázek 11 – CoDeSys (zdroj: autor)
5.1
Struktura projektu
Pojmenovaný projekt se uloží do stejnojmenného adresáře. Při založení projektu se automaticky vygeneruje POU (Program Organization Unit – programová organizační jednotka) pojmenovanou PLC_PRG. Tato jednotka je primární, spouští se při spuštění programu a volají se z ní všechny ostatní funkce a funkční bloky. Projekt obsahuje několik druhů objektů – POU, datové typy, grafické objekty vizualizace a programové prostředky.[9]
21
5.2
Komponenty projektu
5.2.1 POU (Program Organization Unit) Česky, programová organizační jednotka. Touto jednotkou jsou funkce, funkční bloky a programy. Každá tato jednotka je rozdělena na deklarační část a tělo. Tělo je část, v které vznikají algoritmy programu jedním z programovacích jazyků. POU může volat jinou POU, ale neumožnuje rekurzi.[9]
5.2.2 Funkce Funkcí se rozumí POU, jejímž výstupem je pouze jeden datový element. Může se použít jako operand ve výrazu. Výstupní datový element může být složen z dalších elementů (např. pole nebo struktura). Název funkce je zároveň i názvem výstupní proměnné. Po deklaraci funkce je důležité definovat typ výstupní proměnné. Naštěstí se CoDeSys vždy po vytvoření funkce zeptá na výstupní datový typ, takže je tato záležitost ve většině případů bez chyby. V SFC lze funkci volat jen v místě nebo na hraně orient-ovaného grafu. Příklad: je definována funkce Fct s výstupním datovým typem INT, Obrázek 11 ukazuje způsob její volání.[9]
5.2.3 Funkční blok Funkční blok je POU, od funkce se liší tím, že může mít více vstupních a výstupních datových typů, nevrací tedy pouze jednu pro-měnnou, a proto nemůže být použit jako operand. Funkční blok se pozná podle klíčového slova FUNCTION_BLOCK na prvním řádku.
Obrázek 12 – Volání fnkčního bloku (zdroj: http://www.wago.com)
22
Funkční bloky využívají pro svoje volání instance, čímž jsou přístupné pouze jejich vstupní a výstupní proměnné, vnitřní proměnné jsou skryty. Instance si ponechávají informace o datové struktuře obsahující vstupní, výstupní a vnitřní proměnné přiřazeného funkčního bloku. Deklarují se obdobně jako obyčejné proměnné. Příklad deklarace: INSTANCE:FBD; Možnost použití instance funkčního bloku je omezena vzhledem k POU, ve kterém byla instance deklarována, výjimka nastává, pokud je instance deklarována globálně.[9] Instance nelze použít ve funkcích. Volání funkčního bloku je zobrazeno na obrázku.
Obrázek 13 – Volání funkčního bloku (zdroj: http://www.wago.com)
5.2.4 Program Program je POU vracející několik hodnot během své činnosti. Program lze použít v celém projektu, může být volán ze všech POU až na POU typu funkce. Program nepotřebuje ke své funkci instanci.
Obrázek 14 – Volání programu (zdroj: http://www.wago.com)
23
Pokud je volán program a dojde ke změně nějakých hodnot proměn-ných, jsou tyto hodnoty zálohovány až do dalšího běhu tohoto programu. POU programu se pozná podle klíčových slov PROGRAM na prvním řádku a END_PROGRAM na řádku posledním. [9]
5.2.5 PLC_PRG Tato, již zmiňovaná část programu je speciální předdefinovaná součást každého projektu a není možné, aby byla v projektu vícekrát. Je to hlavní POU, která je volána vždy jednou a jako první ve scan-cyklu. Při založení nového projektu je PLC_PRG automaticky vytvořen. [9]
5.2.6 Akce Akce, označuje definovaný úkon, přiřazený k některému vytvořenému funkčnímu bloku. Akce může být vytvořena v jiném programovacím jazyku, než je tvořen funkční blok nebo samotný program. Každý tento úkon, pracuje jen s daty svého přiděleného funkčního bloku, tzn., že využívá jeho vstupní, výstupní a lokální proměnné.[9] Volání akce v jazycích IL, ST a FBD vysvětluje Obrázek 11.
Obrázek 15 – Volání akce (zdroj: http://www.wago.com)
24
5.2.7 Zdroje Důležitá část celého projektu, jsou potřebné k jeho organizaci a konfiguraci.
Global variable – proměnné dostupné v rámci celého projektu,
Library manager – správa knihoven,
Log – správa logů pro záznam akcí během chodu programu,
PLC Configuration – PLC konfigurace (definování připojovaných modulů),
Task Configuration – konfigurace úloh,
Watch and Receipt Manager – zobrazování a sledování hodnot a nastavování počátečních hodnot proměnných,
Target Setting – nastavení cílové stanice,
Workspace – konfigurace pracovního prostředí.
Zdroje závislé na typu cílové stanice jsou:
Sampling Trace – zobrazování a trasování hodnot proměnných,
Parameter manager – výměna dat mezi ostatními stanicemi v síti,
PLC-Browser – sledování proměnných ve stanici,
Tools – další správa vlastností závislá na typu cílové stanice. [9]
5.2.8 Datové typy Mimo širokého zastoupení standardních datových typů, si navíc uživatel může definovat svoje vlastní datové typy.[9]
5.2.9 Knihovny K projektu v CoDeSysu je možné připojit knihovny. Knihovny obsahují POU, datové typy a globální proměnné, jejichž využití je stejné jako u standardních předdefinovaných knihoven.[9] Knihovny standard.lib a util.lib jsou předdefinované a jsou standardně k dispozici. Ve své práci jsem navíc použil knihovny oscat_basic_333.lib a Serial_Interface_01.lib, které jsou popsány dále.
25
5.2.10 Vizualizace Soucasti CoDeSys je i vizualizace, kde je možné zobrazovat aktuální stavy proměnných v projektu. Lze přidávat grafické objekty a tvořit z nich uživatelské rozhraní, nebo jen sledovač hodnot. K dispozici je řada objektů, například tlačítko, obrázek, tabulka, sledovač průběhu změn hodnot, scrollbar a další. Vizualizace má dva režimy:
Online,
Offline.
V offline modu je možné editovat objekty podle požadavků uživatele. V online modu se hodnoty a vlastnosti objektů mění v závislosti na proměnných.[9]
5.3
Testování a ladění projektu
Pokud se podaří správně nakonfigurovat PLC, tak aby adresy odpovídaly nastavení projektu a pokud se podaří správně vytvořit algoritmus bez chyb, je na čase aktivovat simulaci PLC (Simulation mode). Po přihlášení do simulovaného PLC bude potřeba do něj projekt nahrát. CoDeSys umožnuje nejen ruční vkládání hodnot proměnných a stavů vstupů, ale i pozorování výstupních hodnot včetně vývoje lokálních proměnných, nebo lze po kliknutí na Watch and Receipt Manager sledovat pouze vybrané proměnné. CoDeSys taktéž podporuje možnost ladění programu pomocí tzv. breakpointů (místo přerušení algoritmu). V místě breakpointu se algoritmus zastaví a lze zkoumat hodnoty proměnných.[9]
5.4
Další vlastnosti o Vývojové prostředí CoDeSys podporuje export projektu do textového souboru. o Ke každému PLC existuje jakýsi konfigurační soubor cílové stanice, který dovoluje uložení programu i do jiných PLC. o Pro komunikaci je k dispozici symbolické a DDE rozhraní. DDE rozhraní (dynamická výměna dat) slouží ke sdílení proměnných mezi několika aplikacemi na jednom počítači. 26
o Aktivací příslušného konfiguračního souboru dané cílové stanice související se síťováním PLC lze zpřístupnit manažer parametrů a globální síťové proměnné. o CoDeSys také nabízí ENI rozhraní (Engineering interface), umožňující víceuživatelský přístup k vyvíjenému programu. Zkompilovaný program je uložen do společné databáze, odkud je přístupný přes ENI Server. Funkčnost takového systému lze přirovnat k systémům souběžných verzí, známých též pod názvem CVS (Concurent Version System). o Nechybí zde ani podpora vizualizace, která může být provozována jak na libovolném PLC-monitoru (Target Visualization), tak přes Internet (WebVisualization). [9]
Použité knihovny
5.5
Oscat_basic_333.lib Knihovna OSCAT BASIC je vytvořena skutečnými profesionály v oboru programování PLC s ohledem na normu IEC 61131-3. Je tedy kompatibilní se všemi PLC a vývojovými prostředími podporující tuto normu. Softwarové moduly v knihovně OSCAT jsou nabízeny s úmyslem sloužit jako pomůcka pro vývoj algoritmů pro PLC. Moduly jsou nabízeny zcela zdarma a proto OSCAT neposkytuje žádnou záruku správné funkčnosti jednotlivých funkcí a modulů, je to tzv. OpenSourceLibrary. Knihovna obsahuje několik stovek modulů či funkcí, které usnadní programování PLC. Obsahuje například funkce pro:
aritmetické operace a operace s desetinnou čárkou,
počítání s komplexními čísly,
geometrické a vektorové operace,
operace s řetězci,
operace s poli,
generování signálů.[9]
Knihovna a veškerý seznam funkcí s jejich popisem je uložen na přiloženém CD.
27
Serial_Interface_01.lib Jelikož vývojové prostředí CoDeSys standardně nepodporuje sériovou komunikaci, bylo nutné pro tuto práci stáhnout knihovnu Serial_Interface_01.lib, která je volně stažitelná ze stránky www.wago.com. Tato knihovna obsahuje funkční blok SERIAL_INTERFACE umožňující ovládat modul WAGO 750-65x pro sériovou komunikaci. Díky tomuto funkčnímu bloku, lze nastavit všechny parametry, které sériová komunikace vyžaduje (baud rate, bytesize, stopbit, parity,flow_control). Pro odeslání dat je důležité vybrat zdroj dat a zadat počet bitů, které mají být přeneseny. Poté již stačí přivést signál do proměnné xSTART_SEND. Funkční blok proměnnou automaticky vyresetuje po odeslání dat. Přijatá data se ukládají do pole utReceivedBuffer.data. Dále existuje proměnná utReceivedBuffer.Index typu INT, zvyšující se s každým přijatým znakem.[12] Knihovna a její dokumentace jsou k dispozici na přiloženém CD.
28
6
Model železničního uzlu
Model železničního uzlu (dále jen MŽU) je navržen tak, aby odpovídal reálnému provozu železnice. Model má tvar ležaté osmičky s odstavným místem v podobě nástupiště a je umístěn na desce o rozměrech 2x1,5 metru. Celý model se skládá z:
6 výhybek, 12 snímačů pro indikaci polohy vlaku, 11 semaforů, 2 vlaků, elektronického modulu, 12V zdroje.
Obrázek 16 – Vzhled fyzického modelu (zdroj: [11])
6.1
Popis modelu
Model disponuje celkem 23 digitálními výstupy, přičemž 11 jich slouží pro ovládání semaforů a zbylých 12 pro ovládání výhybek. Dále má 12 digitálních vstupů, signalizujících polohu vlaku a 7 analogových výstupů pro napájení jednotlivých kolejových segmentů. Vstupy a výstupy jsou určeny z pohledu PLC. „Elektronika modelu je realizována s využitím mikrokontroléru LPC1754 (Cortex-M3) od společnosti NXP a je propojena s nadřazeným řídicím systémem pomocí sériové rozhraní RS-232 nebo využitím analogových a digitálních vstupů (výstupů PLC nebo iPC. Program pro procesor je vytvořen s využitím jazyku C.“[11]
29
Blokové schéma
Obrázek 17 – Blokové schéma modelu (zdroj: [11])
6.2
Ovládání modelu
Obrázek 18 – Technický vzhled modelu (zdroj: [11])
Kolejiště je rozděleno do 7 segmentů, každý segment je možné napájet zvlášť v rámci jednoho směru. Rychlost a směr vláčku je určena napětím přivedeným do kolejí. Napětí se do vlaku dostane přes jeho kolečka a přes vodivé plíšky na kolejnicích. Do kolejí je z bezpečnostních důvodů povoleno přivádět vždy jen jedno z napětí, tzn. napětí pro jízdu vpřed nebo napětí pro jízdu vzad. Napěťový rozsah je od 0-10V. Pro jízdu dopředu je napětí 5-10V, respektive 5,5-9,75V a pro jízdu dozadu je 0-5V, respektive 0,25-4,5V. Jak je patrné z obrázku, tak při 4,5-5,5V je vlak v mezipásmu, kdy stojí. Zajímavé je, že se u směru jízdy vzad nezvyšuje rychlost společně s napětím, ale naopak. Čím větší napětí je přivedeno, tím pomaleji vlak jede.[11]
30
Obrázek 19 – Způsob napájení segmentů (zdroj: [11])
Snímač polohy vlaku je tvořen jazýčkovým relé umístěným mezi kolejnicemi. Přejezdem vlaku přes relé dojde působením magnetického pole k jeho sepnutí, vlak má totiž ve spod umístěn magnet, který toto magnetické pole vyvolává. Při sepnutém relé je do PLC vyslán signál, který tuto skutečnost vyhodnotí logickou úrovní 1 na digitálním vstupu, při rozepnutém relé logickou úrovní 0. Z důvodu různých rychlostí vlaku je délka impulsu softwarově prodloužena na 2s. Po zapnutí modelu se všechny výhybky nastaví do výchozího nastavení, tedy do polohy A. Ovládání výhybek je dvouúrovňové. Pro nastavení výhybky do polohy A je nutné přivést logickou 1 na příslušný výstup PLC. Impuls do výhybky může trvat libovolně dlouho, ale napětí do ní je určeno střídou 1:8, tzn., že délka doby předchozího vypnutí určuje délku doby napájení výhybky. Například: pokud bude výhybka vypnuta 2s, bude při dalším sepnutí napájena jen 0,25s. Maximální doba je omezena na 0,6s. Toto opatření vzniklo za účelem zabránit přehřátí výhybky. V situaci, kdy by vlak najel na špatně nastavenou výhybku, dojde ke zkratu a vlak se zastaví. Pokud nevypadl z kolejí, postačí výhybku přepnout do správné polohy a vlak bude pokračovat v jízdě. Pro správný přejezd mezi prvním a druhým segmentem je důležité, aby obě výhybky byly ve stejné poloze. Pokud se bude vlak nacházet v segmentu 1 a bude chtít pokračovat do segmentu 2, uživatel musí obě výhybky přepnout polohy B. Semafory se ovládají podobně jako výhybky. Bude-li na digitální výstup daného semaforu přivedena logická 1, na semaforu rozsvítí červená dioda. V opačném případě se rozsvítí dioda zelená. Na semaforu nelze rozsvítit obě diody zároveň a také nelze, aby obě byly vypnuté, vždy svítí pouze jedna. Ovládání semaforů je nezávislé na poloze vlaku a výhybky, vlak tedy může projet na červenou. Semafory u tohoto modelu spíše ztvárňují realistickou podobu vlakového uzlu, nikoli praktickou.
31
Na elektronice modelu najdeme navíc dvě LED diody, červenou a zelenou. Červená dioda se rozsvítí přivedením napětí na svorku X51.1 na PLC, to způsobí bezpečnostní vypnutí modelu a všechny signály z PLC budou ignorovány. Odpojením napětí dioda zhasne a dojde k zapnutí modelu. Zelená dioda nemá žádnou funkci, tu si uživatel může definovat sám.[11]
32
7
Realizace
Pro správnou realizaci obou aplikací, tedy práce obecně, bylo nutné zjistit, jak model železničního uzlu komunikuje. Jaké jsou přenosové rychlosti dat a vůbec, bylo potřeba zjistit jak správně nastavit sériovou linku v PC / PLC aby bylo možné komunikaci navázat. Model tedy komunikuje přes sériovou linku s parametry:
19200 / 34800 baud rate,
8 datových bitů,
žádný paritní bit,
1 stop bit,
žádné řízení signálu (žádný handshake).
Když už byla komunikace navázána, bylo nutné zjistit, jak s modelem komunikovat, jaké příkazy přijímá a v jaké podobě a jaký formát dat bude odesílat zpět. Ačkoli má model digitální vstupy a výstupy, bylo potřeba komunikovat s elektronikou, která ho řídí. Po připojení příjímacího sériového terminálu k zapnutému modelu se ukázalo, že přichází řetězec v následující podobě: #M0000000000. Tento řetězec posílaný z modelu nese informaci o poloze vlaku, tedy o aktívních čidlech trati. Takovýto formát řetězce je v programu z praktického hlediska k nevyužití, neboť je v hexadecimální soustavě. Proto je nutné ho nejdříve dekódovat, a až poté s ním je možné pracovat. #M jsou tedy řídící znaky řetězce, podle nichž se pozná jeho začátek. Poté následuje 10 čísel, na pozicích 6,7 a 9 se objevují čísla 0,1,2,4,8, ale vždy jen jedno, na jedné pozici, pokud tedy na trati nejsou dva vlaky zároveň. Jsou to tedy hexadecimální čísla a po jejichž konverzi do bitové podoby víme, že tvoří 12 místný bitový kód, kde každý jeden bit reprezentuje jedno čidlo na trati. Proto je důležité dekódovat čísla ve správném pořadí. Řetězec
sloužící
pro
ovládání
modelu
je
42
místný.
Jeho
tvar
je
%P{výhybkyA}{výhybkyB}{semafory}{napájení segmentů}/x0d. %P jsou 2 znaky, považovány jako řídící. Dále následuje informace o výhybkách, které se mají nastavit do polohy A a výhybkách které se mají nastavit do polohy B. Poté se přidají 4 znaky, určující nastavení semaforů, jaký má svítit červeně a jaký zeleně. Poslední a nejdelší informace před ukončovacím znakem příkazu je informace o nastavení napájení jednotlivých segmentů, která musí být napsána 7krát po sobě. Veškeré prvky ovládajícího řetězce je nutné psát v hexadecimální (šestnáctkové) soustavě.
33
Výsledný ovládací řetězec posílaný z PC nebo PLC do modelu může vypadat takto: %P3F000000CA08CA08CA08CA08CA08CA08CA08/x0d.
7.1
Aplikace pro PC
K vytvoření aplikace „Model železnice“, což je aplikace pro PC, vytvořená ve vývojovém prostředí od společnosti Microsoft, Visual Studio 2010 Express s využitím jazyku C#.
Obrázek 20 – Aplikace pro PC
Ovládání modelu železnice pomocí aplikace „Model železnice“ je velmi jednoduché a intuitivní. Na Obrázku 20 je ukázán její vzhled. Před spuštěním jízdy vlaku je doporučeno nejdříve nastavit komunikační parametry. Kliknutím na záložku Akce ->Nastavení se otevře okno, kde je uživatel vyzván k jejich nastavení. Aplikace má 3 režimy, z čehož jsou pouze dva ovládací. Je nutné říci, že aktivní může být v jednu dobu pouze jeden z režimů a přepínat je lze pouze ve vypnutém stavu. Automatický režim Uživatel si v levém horním rohu vybere rychlost vlaku, trasu jakou má vlak projíždět a směr, poté již stačí pouze stisknout tlačítko START a vlak bude projíždět zvolenou trasou.
34
Rychlost a některé trasy jde během jízdy vlaku měnit okamžitě, směr vlaku ale už ne. Rychlosti pro vlak jsou pouze dvě, rychle a pomalu. Rychlost je omezena napěťovým rozsahem segmentů, takže by nemělo smysl, aby rychlostí bylo více, jelikož rozdíl v nich by byl nepatrný.
Obrázek 21 – Rychlost
Tras je hned několik, jízda malého okruhu, jízda velkého okruhu, jízda velkého okruhu přes nástupiště, jezdění okruhů a speciální trasa pro dva vlaky. Trasu Okruhy a Dva vlak je možné zapnout pouze před startem, poté je jejich zastoupení v seznamu tras vymazáno. Stiskem tlačítka STOP se vše zastaví, vrátí se zpět do seznamu a je možné je zvolit. Volba směru je prostá, dopředu nebo dozadu.
Obrázek 22 – Trasa
Při výběru trasy Okruhy je nutné určit, kolikrát má vlak vykonat trasu velký okruh a kolikrát trasu malý okruh.
Obrázek 23 – Okruhy
Jelikož jsou k dispozici vlaky dva, je zde i trasa pro jízdu dvou vlaků, kdy jeden vlak začíná jízdu ve vnějším malém kruhu a druhý u nástupiště. Jeden vlak krouží po velkém okruhu, a když je volno na segmentu 3, vlak z malého okruhu vyjede a hned zase zajede zpět. Směr lze snadno určit z obrázku v aplikaci, na výkresu tratě jsou malé šipečky, které určují kladný směr jízdy.
35
Ruční režim Ruční režim umožní uživateli řídit celé kolejiště podle sebe. Nastavení semaforů, výhybek, rychlosti segmentů a směru, to vše má uživatel k dispozici. Rychlost segmentů se nastavuje přes scrollbary umístěné v levém dolním rohu. Lze je ovládat každý zvlášť, nebo všechny najednou zaškrtnutím příslušného checkboxu.
Obrázek 24 – Ovládání rychlosti a směru
Zaškrtnutím checkboxu s názvem Dozadu se obrátí směr jízdy, ale pozor, pouze při vypnutém provozu. Semafory se přepínají pomocí checkboxů, každý checkbox je popsaný, takže odpovídá označení semaforu na obrázku i ve skutečnosti.
Obrázek 25 – Přepínání semaforů
Kliknutím na písmeno A nebo B na obrázku, dojde k přehození výhybky do dané polohy.
Obrázek 26 – Přepnutí výhybky
36
Demo režim Demo režim je speciální režim, který se nijak neovládá a nijak nenastavuje. Slouží především pro prezentaci celkové funkčností a možností vlakového uzlu. Vlak má pevně nastavenou rychlost a směr a projíždí předem nadefinované trasy v předem definovaném pořadí.
7.1.1 Popis získání polohy vlaku K získání dat z příchozího řetězce, o kterém jsem se zmiňoval výše, slouží metoda private void prevod(char hex, int pozice). Parametry této funkce jsou hexadecimální znak a pozice (určuje pozici znaku v řetězci). Hexadecimální znak je převeden do binární podoby, a jelikož je to malé číslo a je potřeba 4 bitový řetězec, doplní se 0 na správnou stranu. Poté se hodnoty zapíšou do pole boolů na pozice určené parametrem pozice. Hlavním zdrojem informací o poloze vlaku je tedy 12 místné pole boolů cidlo[].
7.1.2 Popis zdrojového kódu Pro nastavení komunikačních parametrů slouží dialogové okno Nastavení, toto dialogové okno se otevře kliknutím na Nastavení v záložce Akce. Pokud jsou splněny podmínky a parametry jsou správně nastavené, uloží se do textového souboru ve zdrojovém adresáři aplikace. Další nastavení tím pádem již není nutné. Při dalším spuštění aplikace či samotného provozu parametry se načtou z textového souboru. Textový soubor je kontrolován při každém spuštění provozu, z důvodu kdy by došlo ke změně parametrů. Nastavené hodnoty parametrů jsou poté uloženy do proměnných potřebných pro komponentu serialPort1. serialPort1.BaudRate a serialPort1.PortName.
37
Obrázek 27 – Uložení nastavení komunikace
Automatický režim Výběrem automatického režimu se nastaví logická proměnná do stavu logické 1. automat = true; Výběrem ručního režimu se přepne do logické 0. automat = false; Příkazy automatického režimu jsou stejně jako u ostatních režimů posílány na výstup sériové linky ve 100ms intervalech, aby došlo k co nejrychlejší reakci na změnu příkazu nebo na určení polohy vlaku.
Obrázek 28 – Ovládání automatického režimu
Metoda void OnTimedEventAutomat(object sender, EventArgs e), je místo kde vzniká celý ovládací řetězec. Prvně se kontroluje, jaké položky jsou vybrány v comboboxech, a podle nich sepne správnou trasu, vybere správný směr a rychlost. Směr a rychlost se určují pouze pomocí hodnot pro napájení, rychlost lze volit v rozsahu -4500 – 0 a 0 – 4500. Tyto hodnoty je nutné převést do správného formátu, který umí model vlakového uzlu přečíst. Správný formát je číslo převedené do hexadecimální soustavy a dva první znaky musí být prohozeny s dvěma posledními. Záporné číslo znamená záporný směr a opačně.
38
Obrázek 29 – Příklad napájení
Jak je napsáno výše, cely řetězec se musí skládat z několika částí. Do proměnné toSend typu string jsou postupně přidávány tyto části. V závislosti na zvolené trase se nastaví hodnoty pro výhybky.
Obrázek 30 – Nastavení výhybek
Dále se přepínají v závislosti na získané poloze vlaku, přicházející z modelu.
Obrázek 31 – Nastavení výhybek podle čidel
V tomto režimu jsou všechny semafory nastaveny na zelenou, tomu odpovídá hodnota 0000.
Obrázek 32 – Nastavení semaforů
Poté je nutné přidat 7krát napájení, pro každý segment jedno. Konec je označen znaky ”/x0d”. Hotový řetězec se předá metodě SendData, která ho pošle na sériový port.
Obrázek 33 – Vytvoření řetězce pro odeslání
39
Ruční režim Ovládací řetězec vzniká v tomto režimu stejně jako v předchozím, tentokrát ale s využitím metody void OnTimedEventManual(object sender, EventArgs e). Výhybky si uživatel přepíná sám kliknutím na písmeno A nebo B dané výhybky. Toto jsem docílil vytvořením oblastí, které reagují na kliknutí myši. K reakci na klik slouží metoda private void panelDrawing_MouseDown(object sender, MouseEventArgs e), která přes parametr MouseEventArgs e tyto kliknutí sleduje.
Obrázek 34– Přepnutí výhybek
K snadnějšímu přepínání výhybek jsem vytvořil dvě pole integerů do kterého se ukládají polohy výhybek. První pole slouží pro výhybky v poloze A. Výhybka v poloze A je v tomto poli reprezentována číslem 1 a výhybka v poloze B číslem 0. Druhé pole je opačné k tomuto. Obě pole se poté převedou do hexadecimální soustavy a slouží k nastavení výhybek. Scrollbary sloužící k nastavování rychlosti se dají ovládat zvlášť, nebo jak je ukázáno na obrázku, po splnění podmínky zaškrtnutého checkboxu Najednou, se hodnota prvního z nich převádí na všechny, a rychlost je ve všech segmentech stejná.
Obrázek 35 – Ovládání rychlosti
Veškeré stavy semaforů, se taktéž ukládají do pole integerů, které je následně převedeno do hexadecimální soustavy. Obrázek semaforu je uložen v komponentě PictureBox, a jako defaultní obrázek je nastaven ten, kde svítí červená barva, po zaškrtnutí chceckboxu příslušného semaforu se obrázek v PictureBoxu přepne na zeleně svítící.
40
Obrázek 36 – Ovládání semaforů
Demo režim Tento třetí a zároveň poslední režim využívá k vytvoření ovládacího řetězce metodu void OnTimedEventDemo(object sender, EventArgs e. Jak je uvedeno výše, v tomto režimu nelze nic ovládat. Po stisknutí tlačítka START začne přepínač (switch), který obsahuje několik návěstí (case) vykonávat svou funkci. Na čidle 7 se počítají průjezdy, a když je počet průjezdů roven číslu návěstí, dojde k přepnutí trasy na další.
7.2
Aplikace pro WAGO
Aplikace pro WAGO byly vyvíjeny v programu CoDeSys v2.3, v souladu s normou IEC 61131-3. Jako programovací jazyk jsem použil Strukturovaný Text. Lepší ovladatelnost a přehlednost jsem docílil rozdělením aplikace na dvě, přičemž jedna z nich je věnována automatickému řízení a druhá ručnímu. Jelikož Strukturovaný Text nepodporuje různé funkce a metody jako Visual Studio a C#, bylo potřeba některé funkce pro převod nebo pro operace s proměnnými nejdříve vytvořit. Vzhled aplikace byl upraven, jelikož CoDeSys nepodporuje různé komponenty využívané ve Visual Studiu, funkčnost ale zůstala stejná. Komunikační parametry jsou zde stejné jako u počítačové aplikace, s rozdílem že zde jsou nastaveny podle aktuální konfigurace připojených modulů na sběrnici. Tyto parametry využívá knihovna Serial_Interface_01.lib.
41
Obrázek 37 – Komunikační parametry a ovládání sériové komunikace v CoDeSys
Důležité je správně nakonfigurovat pořadí modulů, aby správně komunikovaly s celým systémem. Obrázek ukazuje správné pořadí modulů použitého systému.
Obrázek 38 – pořadí modulů
7.2.1 Popis získání polohy vlaku Bylo tedy potřeba vytvořit především funkce, které dekódují příchozí řetězec a převedou ho na pole boolů. Prvně jsem musel zjistit, na které z pozic se hexadecimální číslo pro převod nachází. Proto se musí vybrat pozice, na kterých se číslo může objevit a všechny se musí otestovat a převést. Následující postup se vykonává pro všechny tři pozice. K tomu slouží funkce VYBER_ZNAKU. Metoda tedy vybere číslo a předá ho jako string funkci STRING_TO_INT, a ta ho převede na integer.
42
Obrázek 39 – metoda Výběr znaku
Nyní bylo potřeba vytvořit funkci, co převede číslo do binární soustavy, k tomu jsem vytvořil funkci DEC_TO_BIN.
Obrázek 40 – metoda Dec_To_Bin
Dále bylo nutné dvoumístné binární číslo doplnit o dva znaky, aby bylo čtyřmístné, a
poté
ho
bylo
možné
převést
do
4
prvkového
pole
bajtů
metodou
STRING_TO_bARRAY.
Obrázek 41 – metoda String_To_bArray
A odtud ho převést opět do 4 prvkového pole, tentokrát stringů, s využitím metody BYTE_TO_STRING_ARRAY.
Obrázek 42 – metoda Byte_To_String_Array
43
Nakonec se všechna 3 pole spojí v jedno 12 prvkové, které reprezentuje čidla modelu. Pokud je některé z čidel aktivní, na obrázku v aplikaci se objeví zelené kolečko, které označuje polohu vlaku.
7.2.2 Automatické řízení Automatické řízení je obdobné automatickému režimu v aplikaci pro PC.
Obrázek 43 – CoDeSys aplikace pro automatické řízení
Veškeré ostatní ovládání a metody pro vytvoření ovládacího řetězce jsou ve většině případů stejné nebo si velmi podobné jako u aplikace vytvořené pro PC. Z tohoto důvodu tedy není nutné je detailněji popisovat. Logika a ovládání zůstaly stejné.
44
7.2.3 Ruční řízení
Obrázek 44 – CoDeSys aplikace pro ruční řízení
I ruční řízení je převzato z aplikace pro PC a bylo doplněno o grafické znázornění polohy výhybky, pomocí červených křivek. Semafory se nyní přepínají pouze kliknutím na obrázek semaforu. Po stisknutí tlačítka START se pod ním objeví nápis ZAPNUTO, a po stisku tlačítka STOP, nápis VYPNUTO.
45
8
Závěr
Hlavní cíle této bakalářské práce bylo vytvořit aplikace pro ovládání modelu železničního uzlu pomocí počítače a programovatelného automatu WAGO. Ovládání mělo být ruční a automatické. Ovládání ruční mělo umožnit uživateli určovat rychlost vlaku, směr a trasu podle svého uvážení. Automatické řízení bylo vytvořeno tak, aby si uživatel pouhým kliknutím vybral konkrétní trasu, kterou měl vlak projíždět. I tyto dva cíle byly splněny. Navíc byl vytvořen samostatný režim s názvem Demo, které mělo sloužit pro praktickou ukázku možných tras. Režim Demo střídá povolené trasy jednu za druhou. Žádná práce není dokonalá, a i tato by se dala vylepšit či rozšířit o další funkce. Aplikace by si jistě zasloužili lepší vizualizaci, v podobě 3D trati a 3D modelu vlaku. Bakalářská práce pro mě měla značný přínos ohledně sériové komunikace, kde jsem si připomněl druhy přenosů a jak se uskutečňují. Dále mi umožnila podrobněji porozumět programování PLC zařízení a hlavně se velice zlepšila má orientace ve vývojovém prostředí CoDeSys. Některá z těchto aplikací bude určitě přínosem, při prezentování modelu železničního uzlu na veřejnosti. Díky možnosti zapnutí režimu Demo, již nemusí být obsluha modelu neustále u počítače a nemusí vlak řídit. Režim Demo to vše udělá. Je možné že aplikace bude mít význam i pro studenty VŠPJ, kteří se budou moci zdokonalit v oblasti propojení a komunikace PLC přes sériovou linku.
46
9
Seznam použité literatury
[1] Základní formy přenosů. EArchiv.cz [online]. 2011 [cit. 2014-05-10]. Dostupné z: http://www.earchiv.cz/a91/a140c110.php3.
[2] Sériový port RS-232C. ROOT.cz [online]. 2010 [cit. 2014-05-10]. Dostupné z: http://www.root.cz/clanky/seriovy-port-rs-232c/#ic=serial-box&icc=texttitle
[3] Zapojení konektorů pro RS-232. Hw.cz [online]. 2014 [cit. 2014-05-10]. Dostupné z: http://www.hw.cz/rozhrani/hw-server-predstavuje-seriova-linka-rs232.html#konektory.
[4] FT232R - USB UART IC. FTDI Chip [online]. 2014 [cit. 2014-05-10]. Dostupné z: http://www.ftdichip.com/Products/ICs/FT232R.htm.
[5] Programovací jazyky pro PLC. Elektrotechnika [online]. 2014 [cit. 2014-05-18]. Dostupné z: http://coptel.coptkm.cz/?action=2&doc=3905&docGroup=179&cmd=0.
[6] Modulární řízení v budovách: WAGO-I/O-SYSTEM 750. Tzbinfo [online]. 2014 [cit. 2014-05-18]. Dostupné z: http://elektro.tzb-info.cz/9027-modularni-rizeni-vbudovach-wago-i-o-system-750.
[7] ZEZULKA, František, Zdeněk BRADÁČ, Petr FIEDLER, Pavel KUČERA, Radek ŠTOHL. Programovatelné automaty. Brno, 2003. Dostupné z: http://www.vaeprosys.cz/Dokumentace/Programovatelne_automaty/Programovatelne_a utomaty-Skripta_FEKT_VUT_Brno.pdf. Skripta. Vysoké učení technické v Brně.
[8] Bolton, W.: Programmable Logic Controllers. 4. vyd. Oxford: Newnes, 2006. 304 s. ISBN 978-0750681124.
47
[9] 3S - Smart Software Solutions GmbH. User Manual for PLC Programming with CoDeSys 2.3 [manuál]. 2010. Dostupné z: http://www.wago.com/wagoweb/documentation/759/eng_manu/333/m07590333_00000 000_1en.pdf [10] WAGO Kontakttechnik GmbH & Co. KG. Fieldbus Independent I/O Modules – Serial Interface RS 232 C – 750-650 [manuál]. 2006. Dostupné z: http://www.wago.com/wagoweb_china/public/750/eng_manu/modules/m07500650_00 000000_0en.pdf [11] RWETC. S.R.O. Model železničního uzlu: Uživatelská dokumentace. 1. vyd. Jihlava. Rok vydání neuveden [12] WAGO Kontakttechnik GmbH & Co. KG. Serial_Interface_01.lib [manuál] Dostupné z: http://www.wago.com/wagoweb/documentation/app_note/libdoku/ml00700e.pdf
48
10
Seznam obrázků
Obrázek 1 – RS-232 (zdroj: http://www.hw-group.com) ................................................. 9 Obrázek 2 – Synchronní přenos (http://www.earchiv.cz)............................................... 10 Obrázek 3 – Asynchronní přenos (zdroj: autor) ............................................................. 11 Obrázek 4 – Převodník RS232R (zdroj: autor) ............................................................... 12 Obrázek 5 – Blokové schéma PLC (zdroj: http://www.e-automatizace.cz) ................... 13 Obrázek 6 – Textové programovací jazyky (zdroj: http://www.edumat.cz) .................. 15 Obrázek 7 – Grafické programovací jazyky (zdroj: autor) ............................................. 16 Obrázek 8 - WAGO 750-841 (zdroj: http://www.conrad.de) ......................................... 18 Obrázek 9 – barevné označení modulů (zdroj: http://www.wago.com) ......................... 19 Obrázek 10 – použitý modul 750-650/003-000 (zdroj: [10]) ......................................... 20 Obrázek 11 – CoDeSys (zdroj: autor)............................................................................. 21 Obrázek 12 – Volání fnkčního bloku (zdroj: http://www.wago.com) ............................ 22 Obrázek 13 – Volání funkčního bloku (zdroj: http://www.wago.com) .......................... 23 Obrázek 14 – Volání programu (zdroj: http://www.wago.com) ..................................... 23 Obrázek 15 – Volání akce (zdroj: http://www.wago.com) ............................................. 24 Obrázek 16 – Vzhled fyzického modelu (zdroj: [11]) .................................................... 29 Obrázek 17 – Blokové schéma modelu (zdroj: [11]) ...................................................... 30 Obrázek 18 – Technický vzhled modelu (zdroj: [11]) .................................................... 30 Obrázek 19 – Způsob napájení segmentů (zdroj: [11]) .................................................. 31 Obrázek 20 – Aplikace pro PC ....................................................................................... 34 Obrázek 21 – Rychlost .................................................................................................... 35 Obrázek 22 – Trasa ......................................................................................................... 35 Obrázek 23 – Okruhy ...................................................................................................... 35 Obrázek 24 – Ovládání rychlosti a směru ....................................................................... 36 Obrázek 25 – Přepínání semaforů ................................................................................... 36 Obrázek 26 – Přepnutí výhybky ..................................................................................... 36 Obrázek 27 – Uložení nastavení komunikace................................................................. 38 Obrázek 28 – Ovládání automatického režimu............................................................... 38 Obrázek 29 – Příklad napájení ........................................................................................ 39 Obrázek 30 – Nastavení výhybek ................................................................................... 39 Obrázek 31 – Nastavení výhybek podle čidel ................................................................ 39 Obrázek 32 – Nastavení semaforů .................................................................................. 39
49
Obrázek 33 – Vytvoření řetězce pro odeslání ................................................................. 39 Obrázek 35– Přepnutí výhybek....................................................................................... 40 Obrázek 36 – Ovládání rychlosti .................................................................................... 40 Obrázek 37 – Ovládání semaforů ................................................................................... 41 Obrázek 38 – Komunikační parametry a ovládání sériové komunikace v CoDeSys ..... 42 Obrázek 39 – pořadí modulů .......................................................................................... 42 Obrázek 40 – metoda Výběr znaku................................................................................. 43 Obrázek 41 – metoda Dec_To_Bin ................................................................................ 43 Obrázek 42 – metoda String_To_bArray........................................................................ 43 Obrázek 43 – metoda Byte_To_String_Array ................................................................ 43 Obrázek 44 – CoDeSys aplikace pro automatické řízení ............................................... 44 Obrázek 45 – CoDeSys aplikace pro ruční řízení ........................................................... 45
50
Přílohy
11
Veškeré přílohy jsou k dispozici na přiloženém CD Seznam příloh:
Bakalářská práce v pdf formátu,
Knihovna pro sériové rozhraní WAGO,
Knihovna OSCAT pro práci s daty,
Uživatelská dokumentace k modelu vlakového uzlu,
Zdrojový kód aplikace pro PC,
Zdrojové kódy aplikací pro PLC WAGO,
Návod na nastavení komunikace počítače s PLC WAGO.
51