Diagnostika_programové vybavení XV.
Transkript
Programová podpora měřicích systémů http://www.ni.com/products/ Programová podpora měřicích systémů http://www.ni.com/labview/ Programová podpora měřicích systémů http://www.ni.com/lwcvi/ Programová podpora měřicích systémů Programová podpora měřicích systémů http://www.home.agilent.com/agilent/product.jspx?nid=536900532.734557.00&cc=US&lc=eng Programová podpora měřicích systémů http://www.keithley.com SCPI je sdružení pro vývoj řídicího jazyka užívaného mezi programovatelným přístrojem a počítačem. Jeho cílem je podporovat běžné programovatelné nástroje. http://www.scpiconsortium.org/ SCPI standard specifikuje strukturu instrukcí pro programovatelné přístroje řízené po sběrbici GPIB, RS-232C, USB, LAN, VXIbus atd. SCPI také zahrnuje standardní předepsané sady příkazů pro různé "třídy" přístrojů DMMs a osciloskopy atd. SCPI sdružení je organizace jehož členové mají zájem sjednotit komunikaci mezi počítači a měřícími přístroji. SCPI standard je postaven na principu IEEE- 488.2, standardních kódů a formátů. SCPI příkaz je složen znaky ASCII, a proto může být aplikován v libovolném počítačovém jazyce, jako standardní C, nebo C++. To může také být využíváno v aplikačních prostředí jako LabWindows/CVI, LabVIEW, nebo HP VEE. SCPI je na hardwaru nezávislý. SCPI řetězce mohou být přeneseny libovolnými rozhraními, např. GPIB, sériové propojení do 15 m, VXIbus nebo LAN sítě. Cílem a úkolem SCPI sdružení je zlepšit efektivitu testovacích nástrojů - softwaru, zvyšovat stabilitu měřících systémů a součinnost přístrojů a zařízení od různých výrobců. SCPI rozvíjí obecné příkazy na základě "anglický zkratek“. SCPI sdružení doufá, že zlepší programování pro širokou škálu měřících přístrojů a pro softwarovou dokumentaci a udržovatelnost. SCPI sdružení se setkává nejméně jednou ročně, a kdykoliv členové cítí že je nezbytné uvažovat o nových příkazech. V posledních letech, bylo setkání dvakrát ročně. Valná hromada se scházi pravidelně v lednu každým rokem v San Diego, CA. Další schůzky se plánují podle potřeby, v jiné členské zemi. Ukázka SCPI příkazu pro nastavení OSC. SCPI se řídí stromovou strukturu. Související příkazy jsou seskupené do větví na stromu. Každé klíčové slovo v příkazu se nazývá uzel . WFMPre YMUlt YMUlt? První uzel je nazvaný kořenný uzel . YUNit 1.00 YUNit? Volt Header Space Arguments Příkaz (Commands) WFMPre:YMUlt 1.00V Dotaz (Query) WFMPre:YMUlt? (Malá písmena jsou nepovinná.) <Header> základní příkaz, jednotlivé fukce jsou odděleny dvojtečkou „:“ <Mnemonic> jednotlivé funkce „Headeru“ <Argument> fodnota velikosti, kvality, omezení nebo limitních mezí <Comma> čárka odělující jednotlivé hodnoty argumentu <Space> mezera mezi headerem a argumentem Příkaz (Commands) [:]<Header>[<Space><Argument>[<Comma><Argument>]….] WFMPre:YUNit_Volt,YMUlt _1.00V Dotaz (Queries) [:]<Header>? [:]<Header>?[<Space><Argument>[<Comma><Argument>]….] WFMPre:YUNit? Typy argumentů <Numeric Arguments> <NR1> jednoduché celé číslo <NR2> reálné číslo bez exponentu <NR3> reálné číslo s exponentem <String Arguments> <Q-String> string of ASCII text / 7-bit ASCII character set všechny znaky mezi „………“ znakovou zprávu zasíláme „this is an ’acceptable’ string” znakové řetězce lze seskupovat „here is a“ “mark“ <Block Arguments> seskupení argumentů do jednoho bloku <Block> ::= {#<NZD><Dig>[<Dchar>] ALIas:DEFINE “SETUp1”, #231AUTOSet EXECute;:SELect:REF1 ON Block Header Number of Length Digits Specifies data Length COMM = 1; OpenComConfig (COMM, "COM1", 9600, 0, 8, 1, 4096, 4096); SetComTime (COMM, 1.5); SetCTSMode (COMM, 1); Fmt (Zapis, "%s<VERB OFF\r\n"); ComWrt (COMM, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<HEAD ON\r\n"); ComWrt (COMM, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<LOC NON\r\n"); ComWrt (COMM, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<ID?\r\n"); ComWrt (COMM, Zapis, (long)NumFmtdBytes()); ComRdTerm (COMM, Cteni, 100, 13); Scan (Cteni, "%s>%s[w50t-]", Typ_DSO); SetCtrlVal (Panel_OSCIL, OSCIL_TYP, Typ_DSO); ComWrt (COMM, "SEL:CH1?\r\n", 10); ComRdTerm (COMM, Cteni, 25, 13); Scan (Cteni, "%s[i8]>%i", &Sel); if (Sel) { //----------------------------ComWrt (COMM, "DAT:SOU CH1\r\n", 13); ComWrt (COMM, "DAT:WID 2\r\n", 11); ComWrt (COMM, "DAT:ENC RPB\r\n", 13); ComWrt (COMM, "WFMP:ENC BIN\r\n", 14); ComWrt (COMM, "WFMP:BYT_N 2\r\n", 14); ComWrt (COMM, "DAT:STAR 1\r\n", 12); ComWrt (COMM, "DAT:STOP 10000\r\n", 16); Record = 10000; ComWrt (COMM, "CH1:VOL?\r\n", 10); ComRdTerm (COMM, Cteni, 100, 13); SetCtrlVal (Panel_OSCIL, OSCIL_WA_1, Cteni); FillBytes (Cteni, 0, 100, 0); ComWrt (COMM, "HOR:MAI?\r\n", 10); ComRdTerm (COMM, Cteni, 100, 13); SetCtrlVal (Panel_OSCIL, OSCIL_TIM, Cteni); FillBytes (Cteni, 0, 100, 0); ComWrt (COMM, "TRIG:MAI:EDGE?\r\n", 16); ComRdTerm (COMM, Cteni, 100, 13); SetCtrlVal (Panel_OSCIL, OSCIL_TRIG, Cteni); FillBytes (Cteni, 0, 100, 0); //---------------------------------------------Fmt (Str1, "%s<%i", 10000 * 2); Fmt (Str2, "%s<:CURV #%i%i", NumFmtdBytes(), 10000 * 2); StartData = StringLength (Str2); DF = OpenFile ("DATA_W", VAL_READ_WRITE, VAL_OPEN_AS_IS, VAL_BINARY); ComWrt (COMM, "CURVE?\r\n", 8); ComToFile (COMM, DF, 0, -1); FlushOutQ (COMM); SetFilePtr (DF, StartData, 0); ScanFile (DF, "%*i[b2uo10]>%*i",Record,Record, Wave_1); CloseFile (DF); Device = OpenDev ("DEV4", "DEV4"); ibtmo (Device, T3s); Fmt (Zapis, "%s<VERB OFF"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<HEAD ON"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<LOC NON"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<ID?"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); ibrd (Device, Cteni, 100); Scan (Cteni, "%s>%s[w50t-]", Typ_DSO); SetCtrlVal (Panel_OSCIL, OSCIL_TYP, Typ_DSO); Fmt (Zapis, "%s<SEL:CH1?"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); ibrd (Device, Cteni, 100); Scan (Cteni, "%s[i8]>%i", &Sel); if (Sel) { //-------------------------------------------------------------Fmt (Zapis, "%s<DAT:SOU CH1"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<DAT:WID 2"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<DAT:ENC RPB"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<WFMP:ENC BIN"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<WFMP:BYT_N 2"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<DAT:STAR 1"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<DAT:STOP 10000"); Record = 10000; ibwrt (Device, Zapis, (long)NumFmtdBytes()); Fmt (Zapis, "%s<CH1:VOL?"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); ibrd (Device, Cteni, 100); SetCtrlVal (Panel_OSCIL, OSCIL_WA_1, Cteni); Fmt (Zapis, "%s<HOR:MAI?"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); ibrd (Device, Cteni, 100); SetCtrlVal (Panel_OSCIL, OSCIL_TIM, Cteni); FillBytes (Cteni, 0, 100, 0); Fmt (Zapis, "%s<TRIG:MAI:EDGE?"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); ibrd (Device, Cteni, 100); SetCtrlVal (Panel_OSCIL, OSCIL_TRIG, Cteni); FillBytes (Cteni, 0, 100, 0); //---------------------------------------------Fmt (Str1, "%s<%i", 10000 * 2); Fmt (Str2, "%s<:CURV #%i%i", NumFmtdBytes(), 10000 * 2); StartData = StringLength (Str2); Fmt (Zapis, "%s<CURVE?"); ibwrt (Device, Zapis, (long)NumFmtdBytes()); ibrdf (Device, "DATA_W"); DF = OpenFile ("DATA_W", VAL_READ_WRITE, VAL_OPEN_AS_IS, VAL_BINARY); SetFilePtr (DF, StartData, 0); ScanFile (DF, "%*i[b2uo10]>%*i",Record,Record, Wave_1); CloseFile (DF); Device = OpenDev ("DEV1", "DEV1"); ibtmo (Device, T3s); ibwrt (Device, "VERB OFF", 8); ibwrt (Device, "HEAD ON", 7); ibwrt (Device, "LOC NON", 7); ibwrt (Device, "ID?", 3); ibrd (Device, Cteni, 100); puts (Cteni); ibwrt (Device, "DAT:SOU CH1", 11); ibwrt (Device, "DAT:WID 1", 9); ibwrt (Device, "DAT:ENC RPB", 11); ibwrt (Device, "WFMP:ENC BIN", 12); ibwrt (Device, "WFMP:BYT_N 1", 12); ibwrt (Device, "DAT:STAR 1", 10); ibwrt (Device, "DAT:STOP 10000", 14); ibwrt (Device, "WFMP:ENC BIN", 12); ibwrt (Device, "CH1:VOL?", 8); ibrd (Device, Cteni, 100); puts (Cteni); ibwrt (Device, "HOR:MAI?", 8); ibrd (Device, Cteni, 100); puts (Cteni); ibwrt (Device, "TRIG:MAI:EDGE?", 14); ibrd (Device, Cteni, 100); puts (Cteni); //---------------------------------------------ibwrt (Device, "CURVE?", 6); ibrd (Device, Data, 12000); Scan (Data, "%*i[b1ui13]>%*i",Record,Record, Wave_1); WaveformGraphPopup ("", Wave_1, 10000, VAL_INTEGER, 1.0, 0.0, 0.0, 1.0); FillBytes (Cteni, 0, 100, 0); FillBytes (Cteni, 0, 100, 0); FillBytes (Cteni, 0, 100, 0); FillBytes (Cteni, 0, 100, 0); Record = 10000; Device = OpenDev ("DEV1", "DEV1"); ibtmo (Device, T3s); ibwrt (Device, "VERB OFF", 8); ibwrt (Device, "HEAD ON", 7); ibwrt (Device, "LOC NON", 7); ibwrt (Device, "ID?", 3); ibrd (Device, Cteni, 100); puts (Cteni); ibwrt (Device, "DAT:SOU CH1", 11); ibwrt (Device, "DAT:WID 2", 9); ibwrt (Device, "DAT:ENC RPB", 11); ibwrt (Device, "WFMP:ENC BIN", 12); ibwrt (Device, "WFMP:BYT_N 2", 12); ibwrt (Device, "DAT:STAR 1", 10); ibwrt (Device, "DAT:STOP 10000", 14); ibwrt (Device, "WFMP:ENC BIN", 12); ibwrt (Device, "CH1:VOL?", 8); ibrd (Device, Cteni, 100); puts (Cteni); ibwrt (Device, "HOR:MAI?", 8); ibrd (Device, Cteni, 100); puts (Cteni); ibwrt (Device, "TRIG:MAI:EDGE?", 14); ibrd (Device, Cteni, 100); puts (Cteni); //---------------------------------------------ibwrt (Device, "CURVE?", 6); ibrd (Device, Data, 25000); Scan (Data, "%*i[b2uo01i6]>%*i",Record,Record, Wave_1); WaveformGraphPopup ("", Wave_1, 10000, VAL_INTEGER, 1.0, 0.0, 0.0, 1.0); FillBytes (Cteni, 0, 100, 0); FillBytes (Cteni, 0, 100, 0); FillBytes (Cteni, 0, 100, 0); FillBytes (Cteni, 0, 100, 0); http://www.ni.com/events/tutorials/campus.htm http://www.ni.com/swf/presentation/us/pxiconselec/default.htm http://www.ni.com/swf/presentation/us/labview/lvpctarget/ 26
Podobné dokumenty
Řada PIC18F1XK50 a její použití pro převodníku USB
Low Pin Count USB Development Kit – Jednoduchý a levný vývojový kit usnadňující vývoj
aplikací pro PIC18F1XK50. Obsahuje dokumentaci s příklady zapojení a programů, jednu
osazenou a druhou neosazen...
The `pst-map2d` package A PSTricks package for
Il faut en effet indiquer le chemin des données dans la variable path. Cette
variable contient le chemin des données sur mon disque dur :
path=C:/mappemonde/wdb
Il faut donc avant le \begin{documen...
Technika k dělení a úkosování trubek
Přepravní kufr s výztuhami...............................................13
Stroje k dělení a úkosování trubek RA 21 S.................... 14
Přepravní kufr s výztuhami................................
redarove mereni.qxd
hladinomÏru vyuûÌvajÌcÌho techniky FMCW. Oscil·tor s promÏnn˝m kmitoËtem je ¯Ìzen mikroprocesorem tak, aby na v˝stupu poskytoval line·rnÏ frekvenËnÏ modulovan˝ sign·l. Tento
sign·l se zesÌlÌ a pomo...
Ovládání komunikace dle IEC 870-5-101 - UTEE
Téměř žádný automatizovaný proces se dnes neobejde bez vizualizace a možnosti
vzdáleného řízení. Tuto oblast nejvíce reprezentují známé SCADA (Supervisory Control And
Data Acquistion) systémy, znám...