Automatizace meˇrˇenı´ v Borland Delphi Se´riove´ rozhranı´ Se´riove´ rozhranı´ V.24 (RS 232) patrˇilo mezi nejrozsˇ´ırˇeneˇjsˇ´ı standardnı´ rozhranı´. Pu˚vodneˇ bylo navrzˇeno pro spojenı´ pocˇ´ıtacˇe a modemu, nutne´ho k propojenı´ dvou pocˇ´ıtacˇu˚ na veˇtsˇ´ı vzda´lenosti. Se´riove´ rozhranı´ lze ale pouzˇ´ıt k prˇipojenı´ i jiny´ch zarˇ´ızenı´. I v soucˇasnosti, kdy z osobnı´ch pocˇ´ıtacˇu˚ bylo prakticky vytlacˇeno rozhranı´m USB (a je nutne´ si pro neˇj porˇ´ıdit adapte´r na USB), je standardem pro prˇipojova´nı´ meˇrˇicı´ch prˇ´ıstroju˚. Mezi pocˇ´ıtacˇem a meˇrˇicı´m prˇ´ıstrojem jsou prˇ´ıkazy a meˇrˇena´ data obvykle prˇena´sˇena ve formeˇ textovy´ch rˇeteˇzcu˚.
Sbeˇrnice GPIB GPIB je asi nejpouzˇ´ıvanejsˇ´ım standardem pro prˇipojova´nı´ drazˇsˇ´ıch meˇrˇicı´ch zarˇ´ızenı´ ve fyzika´lnı´ch laboratorˇ´ıch. Je to osmibitove´ paralelnı´ rozhranı´, ktere´ mu˚zˇe by´t realizova´no jako za´suvna´ karta (pro sbeˇrnici PCI, ISA), prˇ´ıdavna´ karta PCMCIA (pro notebooky) nebo jako perifernı´ zarˇ´ızenı´, ktere´ se k pocˇ´ıtacˇi prˇipojuje pomocı´ sbeˇrnice USB, SCSI atd. Ke sbeˇrnici lze prˇipojit maxima´lneˇ 15 zarˇ´ızenı´, ktera´ jsou rozlisˇova´na cˇ´ıselnou adresou. Prima´rnı´ adresa je cˇ´ıslo v rozmezı´ 0 . . . 30, karta ma´ obvykle prima´rnı´ adresu nulovou. Prima´rnı´ adresa meˇrˇicı´ho prˇ´ıstroje je nastavena prˇi vy´robeˇ, zmeˇnu lze prova´deˇt programoveˇ nebo prˇes ovla´dacı´ prvek na meˇrˇicı´m prˇ´ıstroji. Prˇ´ıkazy a meˇrˇena´ data jsou pro lepsˇ´ı kompatibilitu prˇena´sˇeny ve formeˇ textovy´ch rˇeteˇzcu˚. Meˇrˇicı´ prˇ´ıstroje s GPIB rozhranı´m se navı´c cˇasto rˇ´ıdı´ textovy´mi prˇ´ıkazy jednotne´ho jazyka SCPI (Standard Commands for Programmable Instruments) pro da´lkove´ ovla´da´nı´ meˇrˇicı´ch zarˇ´ızenı´.
Multimetr M 3850 Multimetr M3850 je vybaven se´riovy´m rozhranı´m RS 232 pro prˇipojenı´ k pocˇ´ıtacˇi. Multimetr mu˚zˇe pracovat ve dvou rezˇimech 1. rezˇim prˇ´ıjmu znaku od pocˇ´ıtacˇe, znak urcˇuje na´sledujı´cı´ cˇinnost multimetru: ’D’ multimetr posˇle pra´veˇ zmeˇrˇenou hodnotu ’M’ multimetr posˇle obsah vnitrˇnı´ pameˇti ’C’ multimetr vymazˇe obsah vnitrˇnı´ pameˇti 2. rezˇim vysla´nı´ 14 znaku˚ obsahujı´cı´ch nameˇrˇenou hodnotu. Zatı´mco prvnı´ dva znaky majı´ vy´znam identifika´toru meˇrˇene´ velicˇiny, prˇedposlednı´ cˇtyrˇi obsahujı´ jejı´ jednotku. Poslednı´ znak je znak konce rˇa´dku (viz tabulka 1). Se´riove´ rozhranı´ je modifikovany´ standard RS 232, pouzˇ´ıva´ celkem peˇt linek – TD, RD, SG, DTR a RTS. Ke komunikaci s multimetrem je nutne´ mı´t nastavenu linku DTR na logickou u´rovenˇ 1 a linku RTS na logickou u´rovenˇ 0. Porˇadı´ znaku (hex.) 1 2 3 4 5 6 7 8 9 A B C D E Prˇ´ıklad 1 D C 4 . 5 0 2 V CR Prˇ´ıklad 2 O H 3 . 2 0 0 M o h m CR Tabulka 1: Ko´dova´nı´ meˇrˇene´ hodnoty multimetrem M 3850
1
Druh meˇrˇenı´ stejnosmeˇrne´/strˇ´ıdave´ elektricke´ napeˇtı´ stejnosmeˇrne´/strˇ´ıdave´ elektricke´ napeˇtı´ stejnosmeˇrny´/strˇ´ıdavy´ elektricky´ proud stejnosmeˇrny´/strˇ´ıdavy´ elektricky´ proud elektricky´ odpor kapacita kondenza´toru frekvence strˇ´ıdave´ho signa´lu test tranzistoru test diody Celsiova teplota (s termocˇla´nkem) Celsiova teplota (pokojova´) logicka´ u´rovenˇ napeˇtı´
Identifika´tor Jednotka DC/AC mV DC/AC V DC/AC mA DC/AC A OH Ohm, KOhm, MOhm CA uF, nF FR KHz, MHz hF – DI mV TM C TM C LO –
Tabulka 2: Multimetrem M 3850 meˇrˇene´ velicˇiny prˇenosova´ rychlost datovy´ch bitu˚ stop-bitu˚ parita
1200 bps 7 2 zˇa´dna´
Multimetr HP 34401A Multimetr HP 34401A je digita´lnı´ meˇˇricı´ prˇ´ıstroj firmy Hewlett-Packard. K pocˇ´ıtacˇi mu˚zˇe by´t prˇipojen prˇes se´riove´ rozhranı´ V.24 (RS 232) nebo prˇes rozhranı´ GPIB (IEEE 488.2). Na rozdı´l od prˇ´ıstroje M 3850 je multimetr HP 34401A vybaven interpretem jazyka SCPI.1 Obeˇ rozhranı´ lze tedy pouzˇ´ıvat nejen k jednoduche´mu zı´ska´va´nı´ hodnot meˇrˇeny´ch velicˇin, ale i k pomeˇrneˇ slozˇite´ konfiguraci prˇ´ıstroje. Multimetrem meˇrˇene´ velicˇiny uda´va´ tabulka 3. Ekvivalent SCPI lze dosadit do cˇa´sti
Velicˇina stejnosmeˇrne´ napeˇtı´ relativnı´ stejnosmeˇrne´ napeˇtı´ strˇ´ıdave´ napeˇtı´ stejnosmeˇrny´ proud strˇ´ıdavy´ proud elektricky´ odpor (2 vodicˇe) elektricky´ odpor (4 vodicˇe) test propojenı´ frekvence perioda test diod
Ekvivalent SCPI VOLTage:DC VOLTage:DC:RATio VOLTage:AC CURRent:DC CURRent:AC RESistance FRESistance CONTinuity FREQuency PERiod DIODe
Tabulka 3: Velicˇiny meˇrˇene´ multimetrem HP 34401A prˇ´ıkazu˚ SCPI Ekvivalent SCPI lze dosadit do cˇa´sti prˇ´ıkazu˚ SCPI 1 Krome ˇ
preferovane´ho jazyka SCPI rozumı´ te´zˇ jazyku˚m prˇ´ıstroju˚ HP 3478A a Fluke 8840A.
2
MEASure:? <parameters> – zmeˇrˇ´ı nastavenou velicˇinu, CONFigure: <parameters> – pouze velicˇinu nastavı´.
Programova´nı´ meˇrˇenı´ s multimetrem M3850 v Borland Delphi V te´to cˇa´sti si uka´zˇeme vytvorˇenı´ programu pro operacˇnı´ syste´m Windows XP, ktery´ nava´zˇe spojenı´ s multimetrem M 3850 prˇes se´riove´ rozhranı´, prˇevezme od multimetru hodnotu pra´veˇ meˇrˇene´ velicˇiny a zobrazı´ ji. Ke komunikaci s multimetrem M 3850 pouzˇijte komponentu TMetex, jezˇ je definova´na v jednotce M3850a.pas a v paleteˇ komponent je v za´lozˇce Mereni. Nejdrˇ´ıve je nutne´ multimetr k pocˇ´ıtacˇi prˇipojit. Vyhleda´me tedy volny´ konektor se´riove´ho rozhranı´. Prˇed zasunutı´m konektoru kabelu jesˇteˇ zjistı´me, ma´-li oznacˇenı´ COM1 nebo COM2. Program vytvorˇ´ıme v prostrˇedı´ Borland Delphi 5. Po spusˇteˇnı´ prostrˇedı´ se na´m v hornı´ cˇa´sti obrazovky objevı´ okno, ktere´, kromeˇ jine´ho, obsahuje paletu komponent. Komponenta je objekt, odvozeny´ od trˇ´ıdy TComponent, ktery´ mu˚zˇeme v paleteˇ komponent oznacˇit a kliknutı´m umı´stit na formula´rˇ. Vyhneme se tak jinak nutne´ deklaraci ukazatele na objekt a vytva´rˇenı´ objektu v dobeˇ beˇhu programu. Najdeme tedy v paleteˇ komponent za´lozˇku Mereni, v nı´ komponentu TMetex a kliknutı´m ji umı´stı´me na formula´rˇ.2 Tı´m jsme se vyhnuli nutnosti zapsat do programu ko´d var M3850: TMetex; // deklarace ukazatele M3850:= TMetex.Create(nil); // vytvor ˇenı ´ objektu. Spustı´me si inspektor objektu˚ (obvykle kla´vesou F11), ve ktere´m mu˚zˇeme meˇnit vlastnosti pra´veˇ oznacˇene´ komponenty. Zvolı´me v neˇm tedy se´riovy´ port,3 k neˇmuzˇ ma´me multimetr prˇipojen. Take´ zmeˇnı´me jme´no objektu na M3850. Vlastnost Limit urcˇuje nejdelsˇ´ı cˇas v sekunda´ch, po ktery´ pocˇ´ıtacˇ cˇeka´ na odpoveˇd’ od multimetru. Nynı´ mu˚zˇeme naprogramovat zı´ska´nı´ nameˇrˇene´ hodnoty z multimetru. Na formula´rˇ si podobneˇ jako komponentu TMetex da´me tlacˇ´ıtko a trochu ho zveˇtsˇ´ıme. Dvojity´m kliknutı´m nad tlacˇ´ıtkem se vytvorˇ´ı procedura, ktera´ se spustı´ za beˇhu programu prˇi kliknutı´ na tlacˇ´ıtko.4 Multimetr na´m posˇle meˇrˇenou hodnotu pote´, co mu zasˇleme znak „D“. Zapı´sˇeme proto do procedury prˇ´ıkaz M3850.Prikaz:= ’D’;. Nato multimetr posı´la´ 14 znaku˚ s identifika´torem meˇrˇenı´ a s cˇ´ıslicemi nameˇrˇene´ hodnoty, ktere´ zprˇ´ıstupnˇuje vlastnost komponenty Data. Cely´ rˇeteˇzec tedy vypı´sˇeme na tlacˇ´ıtko prˇ´ıkazem Button1.Caption:= M3850.Data;. Kdybychom program prˇelozˇili uzˇ nynı´, zjistili bychom, zˇe nefunguje. Musı´me totizˇ jesˇteˇ operacˇnı´mu syste´mu ozna´mit, zˇe dany´ se´riovy´ port pouzˇ´ıva´me, aby mohl sledovat jeho stav a ovla´dat jej. To provedeme metodou M3850.Otevri, kterou zavola´me hned po vytvorˇenı´ aplikace. Tento prˇ´ıkaz proto zapı´sˇeme do procedury FormCreate, kterou vytvorˇ´ıme tak, zˇe si v inspektoru objektu˚ za zobrazovany´ objekt zvolı´me formula´rˇ (Form1) a v za´lozˇce Events najdeme uda´lost OnCreate. Vedle nı´ poklepeme mysˇ´ı a procedura se vytvorˇ´ı. Prˇed ukoncˇenı´m programu bychom meˇli port opeˇt uvolnit. Uvolneˇnı´ portu provedeme prˇi zavı´ra´nı´ hlavnı´ho formula´rˇe, tedy prˇi uda´losti OnClose, kterou rovneˇzˇ najdeme v inspektoru objektu˚. Do procedury zapı´sˇeme M3850.Zavri. Nynı´ uzˇ mu˚zˇeme program prˇelozˇit (tlacˇ´ıtkem se zelenou sˇipkou) a sledovat, jake´ znaky na´m prˇi stisku tlacˇ´ıtka multimetr posı´la´. 2 Pokud
v paleteˇ komponenta nenı´, musı´me ji nejprve nainstalovat. je jiny´ termı´n pro rozhranı´. 4 Na rozdı´l od DOSu, ve ktere ´ m program ma´ formu da´vky prˇ´ıkazu˚, se ve Windows programujı´ reakce na urcˇite´ uda´losti (naprˇ. spusˇteˇnı´ programu, kliknutı´ na komponentu atd.) 3 Port
3
Vy´pis 0.0: hlavnı´ jednotka programu u n i t Hlavni ; interface uses Windows , Messages , S y s U t i l s , C l a s s e s , G r a p h i c s , C o n t r o l s , Forms , D i a l o g s , S t d C t r l s , M3850a ; type TForm1 = c l a s s ( TForm ) M3850 : TMetex ; Button1 : TButton ; procedure Button1Click ( Sender : TObject ) ; procedure FormCreate ( Sender : TObject ) ; p r o c e d u r e FormClose ( S e n d e r : T O b j e c t ; var Action : TCloseAction ) ; private { Private declarations } public { Public declarations } end ; var Form1 : TForm1 ; implementation {$R ∗ .DFM} p r o c e d u r e TForm1 . B u t t o n 1 C l i c k ( S e n d e r : T O b j e c t ) ; begin M3850 . P r i k a z : = ’D ’ ; B u t t o n 1 . C a p t i o n : = M3850 . D a t a ; end ; p r o c e d u r e TForm1 . F o r m C r e a t e ( S e n d e r : T O b j e c t ) ; begin M3850 . O t e v r i ; end ; p r o c e d u r e TForm1 . FormClose ( S e n d e r : T O b j e c t ; var Action : TCloseAction ) ; begin M3850 . Z a v r i ; end ; end .
4
´ koly U V prostrˇedı´ Borland Delphi postupneˇ vytvorˇte jednoduchy´ program, ktery´ bude prova´deˇt na´sledujı´cı´ cˇinnosti: 1. Stiskem tlacˇ´ıtka v programu posˇlete multimetru M3850 prˇ´ıkaz k odesla´nı´ meˇrˇene´ hodnoty do pocˇ´ıtacˇe, prˇecˇteˇte tuto hodnotu a vypisˇte ji na formula´rˇ. Multimetrem meˇrˇte bud’ teplotu prˇipojene´ho termocˇla´nkove´ho teplomeˇru, nebo napeˇtı´ prˇevodnı´ku STUPt, odpovı´dajı´cı´ teploteˇ platinove´ho odporove´ho teplomeˇru na jeho vstupu. Teplomeˇr umı´steˇte do ohrˇ´ıvane´ vodnı´ la´zneˇ. Rˇid’te se postupem v prˇedesˇle´ cˇa´sti. 2. Odpovı´dajı´cı´ cˇa´st zı´skane´ho textovy´ rˇeteˇzce (v prˇedesˇle´m u´kolu) prˇeved’te na cˇ´ıslo (naprˇ. procedurou val). 3. Zı´skane´ cˇ´ıslo spolu s cˇasem meˇˇrenı´ vlozˇte jako bod do XY grafu (za´lozˇka sgraph, komponenty sp XYplot, sp XYline, funkce sp XYLine1.AddXY). Cˇas vracı´ funkce Now ve formeˇ rea´lne´ho cˇ´ısla, jehozˇ desetinna´ cˇa´st uda´va´ cˇa´st dne, ktera´ ubeˇhla od pu˚lnoci. 4. Na formula´rˇ si dejte cˇasovacˇ (za´lozˇka system, timer), ktery´ doka´zˇe periodicky volat jemu zadanou proceduru. Zadejte mu jizˇ napsanou proceduru obsluhujı´cı´ stisk tlacˇ´ıtka a nastavte interval spousˇteˇnı´ 1 s. 5. Hotovy´m programem periodicky meˇrˇte teplotu chladnoucı´ la´zneˇ s rozpusˇteˇnou nezna´mou la´tkou. (Nastavte nejprve la´zenˇ na 90 ◦ C a nechte la´tku zcela rozta´t.) 6. Podle cˇasovy´ch mozˇnostı´ si vyzkousˇejte multimetr HP 34401A nebo modul NI USB-9211 pro meˇrˇenı´ teploty. Pouzˇijte hotove´ programy. Experimentujte s nastavenı´m prˇ´ıstroje HP 34401A.
5
Obra´zek 1: Prostrˇedı´ Delphi s na´vrhem programu
6
Obra´zek 2: Okno programu Prvnı´API
7