2009/43 – 2. 9. 2009
PRÁCE S ROZHRANÍM RS-232 V PROSTŘEDÍ MATLAB® doc. Ing. Karel Zaplatílek, Ph.D., Ing. Miroslav Talpa Univerzita obrany, Katedra elektrotechniky Kounicova 65, 612 00 Brno Email:
[email protected], miroslav.
[email protected] Článek je věnován základům práce s rozhraním RS-232 v systému MATLAB. Jsou vysvětleny základní pojmy a možnosti a uvedeny kroky, vedoucí k úspěšnému softwarovému řízení sériové komunikace s využitím portů COM počítače. Činnost je ilustrována na několika příkladech reálného načítání dat z měřicích přístrojů a teplotního čidla. čidla a využití převodníku USB/COM.
•
typ konektorů,
1. ÚVOD
•
zapojení kabelů,
Programový balík MATLAB obsahuje ve svém jádru podporu komunikace s využitím rozhraní RS-232. Přes mnohé typy moderních měřicích systémů existuje stále početná skupina uživatelů, kteří přivítají možnost programovat komunikaci s měřicími přístroji nebo inteligentními čidly bez nutnosti dokupovat specializované rozšiřující knihovny, tzv. toolboxy [2] až [5]. Je tak poměrně snadno dostupný systém automatizovaných měření či řízení, omezený snad jen počtem a technickými parametry daného rozhraní. Hlavním cílem následujících kapitol je poskytnout jasný a srozumitelný postup programování daného rozhraní s využitím vybraných praktických příkladů. Použitý styl je volen tak, aby článek byl využitelný jak čtenáři, kteří nejsou v dané problematice odborníky, tak zkušenějšími uživateli systému MATLAB. Nevěnujeme se nadbytečným detailům, které jsou sice zajímavé, avšak lze je snadno dohledat v literatuře anebo dnes na internetu, pochopí-li čtenář správně podstatu problému.
•
napájení rozhraní.
Přístroje se vyskytují v obou podobách, bohužel někdy s nesprávnými konektory, což je silně matoucí v případě neexistence originálního kabelu. Propojení terminálterminál vyžaduje tzv. nulmodem nebo nulmodemový kabel. Jedná se o kabel, kde jsou překřížené datové vodiče. Vývod na straně prvního terminálu pro vysílání dat TxD míří do vývodu pro příjem dat RxD na straně druhého terminálu a naopak. Totéž se týká tzv. řídicích vodičů DTR a RTS, které míří do vstupů DSR a CTS. U propojení terminál-modem jsou propojovány stejnojmenné vývody. Řídicí vodiče se mohou použít pro tzv. hardwarové řízení přenosu dat a mohou se mezi sebou různě kombinovat. Prakticky lze očekávat, že co přístroj to jiný kabel a nezbývá tak, než prostudovat jeho dokumentaci. Poslední nepříjemnou skutečností je fakt, že mnohé přenosné přístroje mají své rozhraní napájené z řídicích vodičů rozhraní PC (výstupy DTR, RTS). Předpokládejme, že máme přístroj připojený správným kabelem. Pak ještě musíme znát nebo nastavit tzv. atributy přenosu, které musejí být shodné u obou zařízení. Mezi základní atributy patří:
2. ROZHRANÍ RS-232-C Uvedené rozhraní je sériového typu. Standard EIA-RS232C z roku 1969 definuje propojení terminálu (DTA – Data Terminal Equipment) s modemem (DCE – Data Communication Equipment) . Podrobný praktický popis je uveden v [7]. Krátce jen základní charakteristika. Maximální vzdálenost propojení 15-20m (dle kapacity kabelu). Minimální počet vodičů kabelu pro obousměrný přenos 2 signálové (TxD a RxD) a 1 zemní (GND). Maximální přenosová rychlost 20 kb/s. Použité konektory typu D s 9 nebo 25 vývody. Vidlice na straně terminálu, zásuvka na straně modemu.
přenosová rychlost v Bd,
•
počet datových bitů,
•
zabezpečení paritou,
•
počet stop bitů,
•
řízení toku dat.
Po jejich nastavení je už možné plně využívat vybudovaný komunikační kanál mezi PC a přístrojem.
2.1. ROZHRANÍ RS-232-C A MĚŘICÍ PŘÍSTROJE
3. PŘÍKLADY REÁLNÝCH KOMUNIKACÍ
Využití daného rozhraní v měřicí technice sahá do doby jeho aplikace ve výpočetní technice, kdy bylo použito pro připojení terminálů k sálovým počítačům. Výrobci měřidel však normu mírně „ohýbali“ a přizpůsobovali. Během času nastal stav, že lze nalézt mnoho typů propojení počítače s přístrojem.
V této kapitole se věnujeme sérii několika praktických experimentů. Vždy jde o tzv. data acquisition, tedy získávání či čtení dat z měřicích přístrojů a čidel směrem do prostředí MATLAB. Je třeba dodržet tyto zásady:
Naštěstí existuje jeden pevný bod. Rozhraní COM PC je správně uvažováno, včetně typu konektorů, jako terminál. Nejednoznačnost je zejména v těchto oblastech: •
•
chápání přístroje jako terminál nebo modem, 43-1
•
spuštěný počítač s rozhraním RS-232,
•
připojený přístroj nebo čidlo na port COM,
•
spuštěný systém MATLAB.
2009/43 – 2. 9. 2009 Pokud by počítač nebyl porty COM vybaven, typicky jde o notebooky nebo novější stolní počítače, lze tento problém řešit dodatečným pořízením speciální karty anebo dostupným převodníkem USB/COM.
3.1. POČET A VLASTNOSTI PORTŮ COM POČÍTAČE Budeme předpokládat práci na počítači s operačním systémem Microsoft® Windows®, pravděpodobně XP nebo Vista. Zde lze snadno dohledat informace o počtu a vlastnostech portů COM. Např. ve Windows XP postačí otevřít nabídku: Ovládací panely\Systém\Hardware\Správce zařízení (nebo podobnou) a zde vybrat nabídku Porty (COM a LPT), viz Obr. č. 1. Poklepáním myší na nabídku Komunikační port (COM) se objeví detailní přehled o vlastnostech portu, viz Obr. č. 2.
Obr. č. 2: Parametry nastavení portu COM1.
3.2. SOFTWAROVÉ ŘÍZENÍ ROZHRANÍ RS-232 Pro správné řízení sériové komunikace z prostředí MATLAB je třeba respektovat tyto základní kroky:
Obr. č. 1: Zjištění počtu a vlastností portů COM. Jak je známo a je současně vidět z Obr. č. 2, sériová komunikace má své parametry. Ty budou předmětem nastavení jak v konkrétním přístroji nebo čidlu, pokud je to konstrukčně možné, tak v prostředí MATLAB. Přitom každý přístroj nebo čidlo může vyžadovat poněkud odlišné číselné údaje. Jsou zpravidla vždy uvedeny v manuálech.
•
vytvoření objektu sériového portu příkazem serial,
•
připojení objektu sériového portu k přístroji (čidlu) příkazem fopen,
•
zápis (poslání) tzv. programovacího slova do přístroje příkazem fprintf (ne vždy to lze),
•
načtení tzv. informačního slova z přístroje příkazem fscanf (načtení hodnoty měřené veličiny),
•
odpojení objektu sériového portu od přístroje (čidla) příkazem fclose (regulérní ukončení).
Při zápisu programovacího slova příkazem fprintf je důležité znát možnosti konkrétního přístroje (čidla). Podobné platí u příkazu serial, kdy je třeba zadat konkrétní hodnoty parametrů rozhraní, které vyžaduje přístroj. Jak bude podrobněji popsáno níže, stává se, že z různých důvodů nedojde k regulérnímu uzavření komunikace příkazem fclose (chyba algoritmu, přístroje, rozhraní aj.). Otevřený komunikační port tak není uzavřen a nelze jej proto znovu otevírat např. opětovným spuštěním opraveného algoritmu. V takových případech je užitečným příkaz instrfind, který umí číst stav všech portů a ve spojení s fclose umožňuje regulérně uzavřít všechny porty. Zápisem a potvrzením příkazu fclose(instrfind) lze zavřít všechny otevřené porty. Jde o jistou formu záchrany v popsaných případech. V následujících příkladech reálných komunikací uvedeme
Moderní přístroje lze často řídit s využitím standardizovaných příkazů SCPI (Standard Code for Programmable Instrumentation). Jak vyplývá ze zkušeností, obsahují návody k přístrojům a čidlům často vzorové příklady komunikací, kde lze nalézt inspiraci. Pro tuto chvíli je třeba vědět, jaký počet a jaké označení portů váš počítač obsahuje (COM1, COM4 apod.).
43-2
2009/43 – 2. 9. 2009 vždy popis celého případu a zdrojový text algoritmu s případným bližším komentářem. Všechny příkazy lze samozřejmě používat také v dialogovém režimu (okno Command Window) systému MATLAB.
Příkazem fscanf je pak do proměnné DataString načtena velikost napětí (hodnota měřené veličiny) ve formátu string (řetezec). Pomocí str2num je řetězec převeden na číslo (double). Komunikace je ukončena díky fclose(s1).
3.3. MĚŘENÍ S MULTIMETREM AGILENT
Takto lze provádět počítačem řízená měření také jiných veličiny, např. střídavých napětí, kmitočtu nebo elektrického odporu. V těchto případech postačí pouze modifikovat programovací slova na:
Jako první uvádíme měření univerzálním multimetrem Agilent 34401A. Přístroj je připojen na port COM1 počítače kabelem s příslušnými konektory. Jako významné uvádíme doporučení zapínat nejprve počítač, poté provést vlastní propojení s přístrojem a ten zapnout až nakonec. Jde o opatření, které by mělo předcházet nedefinovaným stavům na portu COM.
fprintf(s1,’MEAS:VOLT:AC?’) fprintf(s1,‘MEAS:FREQ?‘) fprintf(s1,‘MEAS:RES?‘)
měření střídavých napětí měření frekvence měření odporu
Všechny příkazy je výhodnější zapisovat ve formě zdrojového textu m-souboru a spouštět např. klávesou F5.
Po zapnutí počítače a připojení měřicího přístroje je třeba přístroj zapnout a přesvědčit se, zda je nastaven na komunikaci RS-232 (může být přednastaven např. na GPIB). U běžných přístrojů jde o jistou kombinaci kláves. Zde jde o tlačítko Shift a dále se hledá v menu položky E:I/O MENU nastavení RS-232. Toto je třeba v různých podobách učinit u řady dalších typů měřidel. Pak by mělo být již vše připraveno pro softwarové řízení z prostředí MATLAB.
Na Obr. č. 4 je vidět zdrojový text pro opakované měření efektivní hodnoty harmonického napětí a jeho kmitočtu. Obě veličiny jsou v závěru vykresleny, resp. jejich odchylky. Šlo o měření síťového napětí 230V, transformovaného na jmenovitou hodnotu 7,3V s kmitočtem sítě ideálně 50Hz. Je zřejmé, že obě veličiny mírně kolísají od svých ideálních hodnot. Příklad je zajímavý tím, že příkazy fprintf a fscanf jsou použity v cyklu a tím dochází k opakovaným měřením. Počet průchodů cyklem volí uživatel v proměnní PocetMereni. Jedná se tedy o automatizované měření, řízené msouborem systému MATLAB.
Na Obr. č. 3 je vidět posloupnost příkazů, které uživatel píše a potvrzuje v okně Command Window systému MATLAB. Jde o jednoduché načtení velikosti změřeného stejnosměrného (DC) napětí. Nejprve je použit příkaz serial s příslušnými parametry rozhraní. Jejich konkrétní hodnoty se dozvíte v manuálu měřidla. Tím je vytvořen objekt s1 s danými parametry. Příkazem fopen(s1) je objekt připojen k přístroji. Pomocí fprintf je do přístroje vysláno programovací slovo.
Na Obr. č. 5 jsou ukázána data, přenesená do prostředí MATLAB včetně grafů. V prvním sloupci proměnné MaticeData jsou naměřené efektivní hodnoty napětí, ve druhém kmitočet. Časový odstup mezi dvěma měřeními nebyl exaktně nastavován, byl ponechán rychlosti komunikace a práce software.
Přístroj je tak nastaven do režimu dálkového řízení (REM) a nastaven pro měření stejnosměrného napětí (DC).
Obr. č. 3: Načtení hodnoty stejnosměrného napětí, měřeného multimetrem Agilent 34401A.
43-3
2009/43 – 2. 9. 2009
Obr. č. 4: Měření střídavého napětí a kmitočtu přístrojem Agilent 34401A v cyklu.
V závěru kapitoly opět upozorňujeme na nutnost uzavírání komunikace pomocí fclose, resp. záchranného fclose(instrfind). Samotný příkaz instrfind vám pak poskytne seznam vámi používaných objektů sériové komunikace RS-232. Potřebné parametry výše uvedených příkazů lze kromě manuálů dnes často získat i na internetu. Tam lze také nalézt příklady praktických komunikací mezi měřidly a počítačem.
Obr. č. 5a: Detail naměřených veličin.
Obr. č. 5b: Naměřené veličiny ve formě grafů.
43-4
2009/43 – 2. 9. 2009
3.4. MĚŘENÍ S MULTIMETREM METEX
3.5. MĚŘENÍ TEPLOTY S ČILDEM TM
Jedná se o ruční univerzální měřicí přístroj Metex M4650CR, jenž je vybaven pro komunikaci s využitím RS232. Dodávaný kabel však má zvláštní konektor na straně přístroje a pro připojení do počítače budete potřebovat redukci konektorů D CANON 24/9 pinů.
Dalším příkladem komunikace s využitím RS-232 je čtení dat, která produkuje teplotní čidlo TM, viz [6]. Jedná se o zařízení ve formě kabelu, které na jedné straně obsahuje vlastní teplotně citlivé čidlo a na straně druhé konektor pro připojení k portu COM, viz Obr. č. 8.
Problematice správného propojení přístroje (čidla) s počítačem je vždy třeba věnovat pozornost. Po připojení multimetru k počítači je třeba jej zapnout. Další kroky ukazuje posloupnost příkazů na Obr. č. 6.
Práce s vlastním čidlem je poměrně jednoduchá. Po jeho připojení k portu COM bude po krátkém čase, cca 1s, docházet automaticky k posílání dat s teplotou čidla v intervalu 10s do počítače. Zařízení tedy obsahuje elektroniku, napájenou přímo z portu COM. Tento typ zařízení nevyžaduje posílání programovacích slov, pouze čtení informačních slov příkazem fscanf.
Jak ukazuje obrázek, jedná se o analogickou posloupnost výše zmíněnému případu s přístrojem Agilent. Rozdíly spočívají v jiných parametrech příkazu serial (jsou dostupné v dodávaném návodu k přístroji) a odlišném programovacím slově v příkazu fprintf. Dále se již aplikace neliší. Díky fscanf je načtena hodnota měřené veličiny jako řetězec s následnou konverzí na double. Komunikace je správně ukončena použitím fclose. Obr. č. 7 ukazuje přenesený údaj v proměnné Data.
Na Obr. č. 9 je zdrojový text řízení komunikace. Po připojení čidla a spuštění m-souboru dojde k cyklickému čtení teploty přímo v jednotkách ˚C (string). V závěru je vykreslen jednoduchý graf naměřené teploty (zde jej neuvádíme). Konkrétní údaje v příkazu serial lze zjistit na citovaném webu anebo dotazem výrobci.
Je pochopitelné, že celý proces měření může být uveden v cyklu a měřit tak opakovaně. Jak je vidět, je třeba vždy získat jistou zkušenost s konkrétním případem, viz také [1].
Na Obr. č. 10 jsou vidět načtená data v prostředí Workspace systému MATLAB.
Obr. č. 6: Přenos stejnosměrného napětí, měřeného multimetrem Metex M-4650CR.
Obr. č. 7: Hodnoty naměřené veličiny v MATLAB. 43-5
2009/43 – 2. 9. 2009
3.6. POZNÁMKA K PRÁCI S OBJEKTEM KOMUNIKACE Ve výše uvedených příkladech reálných komunikací bylo vždy třeba vytvořit objekt sériové komunikace v rámci příkazu s1=serial(‘COM1’, ..... ). Pro běžnou práci toto plně postačuje. Nicméně může být zajímavé a užitečné prozkoumat objekt s1 podrobněji pro detailnější řízení spojení či z jiných důvodů, např. pro programové zadávání či čtení údajů v rámci m-souborů. Na Obr. č. 11 vidíte objekt s1 po zadání příkazu serial bez středníku na konci. Konkrétní číselné hodnoty parametrů jsou tak pod kontrolou s možností jejich modifikace ať již z příkazové řádky nebo programově ve zdrojovém textu m-souborů.
Obr. č. 8: Teplotní čidlo TM.
Obr. č. 9: Zdrojový text pro cyklické čtení dat z teplotního čidla TM.
Obr. č. 10: Naměřená teplota ve Workspace MATLAB. Obr. č. 11: Objekt s1 po zadání příkazu serial. 43-6
2009/43 – 2. 9. 2009 Další potřebné parametry, např. BaudRate, je možné specifikovat přímo během psaní serial. Lze je však zadat později a později lze potřebné údaje také zjišťovat či se dotazovat na možnosti, např. podle Obr. č. 12. K tomu lze využít příkazy get a set a také „tečkovou“ konvenci (anglicky dot notation).
Všechny možné parametry objektu s1 lze získat pomocí get(s1). Přehled možností editovatelných položek pak pomocí set(s1), viz Obr. č. 13 a 14. Je zřejmé, že podrobnosti využije pouze specialista. Mohou však mnohé napovědět např. při přechodu na jiný počítač, resp. při řešení potíží. Uvedené techniky jsou užiteční při řízení komunikace ve zdrojových textech, např. při přepínání portů, změně parametrů apod.
Obr. č. 14: Přehled editovatelných položek objektu s1. Obr. č. 12: Práce s daty objektu s1.
4. PRÁCE S HELPEM V PROSTŘEDÍ MATLAB Při práci s rozhraním RS-232 je užitečné pracovat s informacemi, které poskytují různé varianty zobrazení helpu, vestavěného v systému MATLAB. Zejména na počátku budou tyto informace velmi cenné, neboť kromě popisných částí obsahují často konkrétní příklady použití. V prostředí MATLAB existují dva principiální přístupy k helpu. Prvním je práce v dialogovém režimu, kdy klíčovým je příkaz help, viz Obr. č. 15.
Obr. č. 15: Práce s helpem v dialogovém režimu. Podstatně komfortnější a bohatší je práce s interaktivní podobou helpu, který je dosažitelný např. tlačítkem Start v systému MATLAB, viz Obr. č. 16. Interaktivní help lze však spustit také přímo z menu MATLAB volbou Desktop/Help. Je výhodné, že při příštím spuštění MATLAB se zobrazí také okno helpu, pokud nebylo předtím uzavřeno.
Obr. č. 13: Přehled všech parametrů objektu s1 (výběr).
43-7
2009/43 – 2. 9. 2009 Interaktivní help lze rozeznat podle nového okna s prostým názvem Help, viz Obr. č. 17. Uživatel zadává do prázdné řádky Help Navigator slova, k nimž požaduje nápovědu. Totéž lze v mírně pozměněném režimu provádět v záložce Index (systém ihned hledá, nečeká na ENTER). Jinou možností je klikání a rozbalování nabídek v záložce Contents. Zobrazené možnosti se ukazují v okně v pravé části (zde nezobrazena pro nedostatek místa).
Obr. č. 16: Spuštění interaktivního helpu.
Obr. č. 18: Nápověda k heslu serial v okně helpu. Na Obr. č. 19 vidíte konec nápovědy k heslu fopen, obsahující jak příklady příkazů, tak odkazy na další hesla.
Obr. č. 17: Interaktivního help po spuštění.
Obr. č. 19: Závěr nápovědy k heslu fopen.
Je vhodné doplnit, že okno hlepu může sloužit také jako prohlížeč internetu, spouštěč vestavěných demonstračních aplikaci apod. Doporučujeme podrobnější seznámení se s tímto pomocníkem. Může se stát velmi efektivní pomůckou při práci.
5. ZÁVĚR Využití komunikačního rozhraní RS-232 může být pomůckou pro poměrně snadno dosažitelnou obsluhu měřicích zařízení (přístrojů, čidel). Uživatel systému MATLAB má k dispozici sadu příkazů, s jejichž využitím může komunikaci efektivně řídit a spravovat. K práci není třeba žádných dalších toolboxů (rozšiřujících knihoven) či doplňků. Podmínkou je přítomnost portů COM ve vašem počítači. Tak je možné programovat
Zadáním hesla serial je možné získat mnoho informací a příkladů, viz Obr. č. 18. V textu a na konci nápovědy k heslu lze nalézt další příbuzné či využitelné odkazy. Vše navíc funguje na principu hypertextových odkazů.
43-8
2009/43 – 2. 9. 2009 automatizovaná měření, kdy lze využít jak čtení měřených dat, tak nastavování přístrojů do potřebných režimů (generátory, multimetry apod.). Relativní dostupností a možností vlastního řízení je rozhraní RS232 využitelné i v dnešní době, kdy existuje řada jiných sběrnic (GPIB, USB, Ethernet apod.). Na trhu jsou k dostání karty, které mohou počítač o rozhraní RS-232 rozšířit (stačí využít vyhledávač stránek na internetu), jakož i vzájemné konvertory rozhraní RS-232 a USB. Pro další informace a možnosti systému MATLAB lze využít webové stránky jeho tvůrce, viz [4].
POZNÁMKY •
Článek vznikl v rámci řešení projektu Výzkumného záměru FVT0000403 na Univerzitě obrany v Brně,
•
MATLAB® je registrovanou ochrannou známkou společnosti The MathWorksTM, Inc.
LITERATURA [1] SEDLÁČEK, Miloš a ŠMÍD, Radislav. MATLAB v měření. Vydavatelství ČVUT, Praha 2003. ISBN 8001-02851-8. [2] HANSELMAN, D., LITTLEFIELD, B. Mastering MATLAB® 7. Pearson Prentice Hall®, 2005. ISBN 013-143018-1. [3] ZAPLATÍLEK, Karel a DOŇAR, Bohuslav. MATLAB pro začátečníky. BEN-technická literatura, Praha 2005. 2. vydání. ISBN 80-7300-175-6. [4] www.mathworks.com – stránky tvůrce systému MATLAB, společnosti The MathWorks, Inc. [5] www.humusoft.cz – stránky prodejce MATLAB v ČR [6] www.papouch.com - stránky firmy Papouch, s.r.o. [7] www.hw.cz/rs-232 - známý server pro vývojáře.
43-9