Použití sériových rozhraní (RS232 a USB) pro ovládání měřicích přístrojů Ing. Antonín Platil, Ph.D. Katedra měření ČVUT v Praze, FEL Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Sériové rozhraní RS232 pro měřicí přístroje Alternativa GPIB (IEEE 488) Hlavně pro levnější modely bez GPIB + Výhoda: po několik dekád široce rozšířené standardní rozhraní PC dostupnost - Potenciální problém: reimplementace do přístrojů s GPIB (co možno zachování existujícího jádra firmware při podpoře RS232) - V poslední době méně rozšířené (nástup USB)
Sériové rozhraní RS232 Prapůvodní standard: EIA-RS232-C (1969) Dnes: popsáno modernizovanými verzemi standardu: EIA/TIA- RS232-F, ANSI/TIA/EIA- 574, a dalšími Původní konektor: 25 pólový DB-25 Původní účel: propojení mezi počítačem a modemem (DTE a DCE) PROBLÉM: časté odchylky v detailech implementace u jednotlivých výrobců
RS232 DTE RS232 PSTN DCE DCE RS232 DTE DTE, Data Terminal Equipment = počítač, PC DCE, Data Circuit-Termination Equipment (někdy: Data Communicatiuon Equipment) = modem PSTN, Public Switched Telephone Network = věřejná telef. síť
RS232 Dnešní varianta: obvykle 9-pólový konektor 1 - CD, Carrier Detect (nosná) DB-9 2 - RxD, Received Data, příchozí data 3 TxD, Transmitted Data, odchozí data 4 DTR, Data Terminal Ready, terminál připraven 5 SG, Signal Ground, společná zem 6 DSR, DCE Ready (Data Set Ready), modem připraven 7 RTS (*), Request to Send, požadavek vysílat 8 CTS, Clear to Send, modem potvrzuje že lze vysílat 9 RI, Ring Indicator, vyzvánění, příchozí hovor (*) signál 7 dnes obvykle redefinován jako RFR (viz dále) Obr.: http://www.camiresearch.com/data_com_basics/rs232_standard.html
Propojení RS232 kabelem a) Propojení DTE-DCE: kabel 1:1, prodlužovačka Použití: obvykle propojení počítač-modem vzácněji: počítač-přístroj (netypické, ale vyskytuje se)
Propojení RS232 kabelem b) Propojení DTE-DTE: dnes mnohem typičtější SG TxD RxD TxD RxD Propojení kříženým kabelem ( nulový modem ): Minimálně: TxD -> RxD a naopak (minimálně SW handshake) Obvykle i: CTS -> RTS (RFR) a naopak (HW handshake) Použití: počítač-přístroj
SW Handshake (DTE-DTE) Softwarový hanshake: výměna speciálních znaků Xon Xoff - pouze pro přenos textů - nelze pro binární data (může se náhodně vyskytnout Xon nebo Xoff v datech) SG TxD RxD TxD RxD Minimální implementace: nutné 3 vodiče
HW Handshake (DTE-DTE) Hardwarový hanshake: výměna povolovacích signálů RTS-CTS Původně (u rozhraní DTE-DCE) význam: žádost o přenos, povolení přenosu, tj. pouze jednostranné řízení. DTE nemůže zabrzdit příjem. Dnes (u rozhraní DTE-DTE) redefinice významu RTS signálu: RFR Ready for receiving. Umožňuje oboustranné řízení toku dat. Někdy je třeba řešit i signály DSR, DTR SG TxD RxD CTS TxD RxD CTS RTS RTS Minimální implementace: 5 vodičů
Signálové úrovně RS232 U +15V POZOR: inverzní logika SPACE, Log. 0 +3V (přijímač), +5V (vysílač) Zakázané pásmo -3V (přijímač), -5V (vysílač) t MARK, Log. 1-15V 1 0 1 Převod z logiky procesoru (TTL 0-5V): obvod MAX232 apod.
Odesílání po rámcích (frame) Klidový stav -> Start bit -> N bitů dat -> (event. Parita) -> Stop bit(y)=klidový stav (Logicky:) 1 0 1 1 Klid Start LSB MSB Par Stop Klid Resynchronizace hodin příjemce (Napěťově:) + - Start LSB MSB Par Stop
Skladba rámce Každý rámec začíná 1 Start bitem (přechod z klidového stavu do log. 0 pro resynchronizaci hodin příjemce) Pokračuje N bity dat (typicky 7 nebo 8, vzácně i jiné nastavení), nejprve nejméně významný bit (LSB), poslední nejvyšší (MSB) Následuje jeden bit parity (je-li povolena) Volby: None (žádná), Even (sudá), Odd (lichá), Mark (vždy 1), Space (vždy 0) Následuje 1 (nebo více) Stop bity (přechod zpět do klidové úrovně) MUSÍ souhlasit nastavení formátu rámce u vysílače a příjemce a to včetně přenosové rychlosti (Baud rate)
Baud rate Baud rate = Symbolová rychlost (rychlost kódujících impulsů na fyzickém rozhraní) Není totéž co Efektivní bitová rychlost dat Obecně(ne u RS232) jeden symbol přenosu může nést více bitů (modulace typu QAM apod.) u RS232 jeden puls = jeden bit, ALE: navíc start bit, parita, stop bit(y), možná prodleva mezi rámci Standardní rychlosti: 75, 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
Příklady průběhů 9600Bd tj. 1 bit (symbol) = 104 us, 8 bit, No Parity Znak = 0x0F = 0000 1111bin = 15dek S 1 1 1 1 0 0 0 0 Stop SPACE, Log. 0 MARK, Log. 1
Příklady průběhů 9600Bd tj. 1 bit (symbol) = 104 us, 8 bit, No Parity Znak = 0xAA = 1010 1010bin = 170dek S 0 1 0 1 0 1 0 1 Stop SPACE, Log. 0 MARK, Log. 1
Příklady průběhů 2400Bd tj. 1 bit (symbol) = 417 us, 8 bit, EVEN Parity Znak = 0xFF = 1111 1111bin = 255dek S 1 1 1 1 1 1 1 1 P=0 Stop SPACE, Log. 0 MARK, Log. 1
Příklady průběhů 2400Bd tj. 1 bit (symbol) = 417 us, 8 bit, EVEN Parity Znak = 0x01 = 0000 0001bin = 01dek S 1 0 0 0 0 0 0 0 P=1 Stop SPACE, Log. 0 MARK, Log. 1
Snahy o zahrnutí do standardů měřicích systémů IEEE 1174 standard 2000, revize 2009 ALE: Mimimální rozšíření Definuje: HW rozhraní: 9-pinový RS232 (EIA-574) Emulaci speciálních zpráv IEEE 488.1 po RS232 Implementaci IEEE 488.2 (protokoly zpráv, obecné příkazy, atd.) na základě RS232 Účel: maximálně zachovat část firmware přístroje realizující 488.2 (tj. s minimálními změnami vnucenými přechodem na RS232)
IEEE 1174 Emulace zpráv IEEE 488.1 např.: &SRQ CRLF = Service Request &POL = Serial Poll &GET = Group Execute Trigger &DCL CRLF = Device Clear (Minimální skutečná podpora mezi výrobci) Podpora IEEE 488.2: Obr.: Standard IEEE 1174 Hlavně řešení nestandardních situací (zahlcení zprávami, uváznutí)
Programování komunikace RS232 V LabView i LabWindows/CVI: Pomocí knihovny RS232 Pomocí knihovny VISA Podobně v MATLAB Instrument Control Toolboxu Případně přímo Win32 API
Příklad programu CVI - RS232 Nastavení portu (COM1, 9600Bd, )
Příklad programu CVI - VISA VISA resource: ASRL1 = COM1 Nastavení atributů Baudrate, N bitů, Parity
USB v měřicí technice Široké rozšíření standardu USB v počítačích =>Motivace pro podporu komunikace s přístroji Možná náhrada rozhraní GPIB (IEEE 488) Rychlejší přenosová rychlost než RS232 i GPIB Více účastníků na sběrnici (127) PROBLÉM: zachování maxima investic do firmware přístrojů (IEEE 488.2) => standardizace USB třídy Test and Measurement
USB + Rychlost 1. USB 1.1 (1998): 12 Mbit/s 2. USB 2 (2000): 280 MBit/s (35 MByte/s) 3. USB 3 (2008): 4 Gbit/s Nejdříve osciloskopy: USB host pro paměťové USB disky (ukládání dat a screenshotů) Později podpora i komunikace a řízení z PC (náhradou / doplňkem k GPIB)
Definice USB třídy Test and Measurement Device USB standard definuje třídy zařízení: Audio class, Battery charging, Imaging class, IrDA, Printer Class,, Test & Measurement Class,, Video Class Účel: zachování maxima firmware přístrojů 488.2, náhrada nižších vrstev (488.1 -> USB) Viz: http://www.usb.org/developers/devclass_docs#approved
Detekce v PC Zde: osciloskop Agilent řady DSO1012A Jako u všech USB: automatická detekce a zavedení ovladačů
VISA a USB Problém: Na rozdíl od např. GPIB je VISA resource descriptor u USB je velice citlivý na úplnost (sériové číslo, atd.) Proto je třeba pečlivě zanést úplnou specifikaci: zde více než u GPIB se vyplatí program napsat flexibilně, tj. s importem VISA resource string z GUI nebo z.cfg souboru + VISA resource je možno získat Copy & Paste z MAX + možno dohledat přes VISA funkci vifindrsrc (, "?*INSTR",,, ); Běžná podpora ve VISA a integrovaných nástrojích (NI MAX, Agilent IO Control)
Detekce v NI MAX VISA resource lze kopírovat přes schránku
Nástroje MAXu:
Základní komunikace USB v MAXu Identifikace - Odpověď Záznam NI I/O Trace
Příklad programu v CVI - VISA
Příklad programu v LabView