1.概述
生產測驗當中,測驗儀器不可或缺,如果是小規模生產,手動測驗可以對付;但是要想到達大批量生產的目的,為了簡化測驗,節約時間,就需要進行自動化測驗。出于這樣的需求,對儀器的自動化程控就有了需求。Namisoft就儀器程控為大家做一個講解。
下圖是一個相對普遍的測驗框架

整個控制程序中最為關鍵的部分就是上位機同測驗儀器之間的通信,首先測驗環境搭建完畢之后,能通信是關鍵的第一步,第二步就是用“儀器的語言”告訴儀器我們需要它們做什么。簡而言之,就是這倆步。
2.常見的控制介面
Namisoft在自動化測驗研發程序中,遇到的常見的控制介面主要有:GPIB、串口(RS-232)、USB、LAN或以太網。
串行介面通信速度較慢,現代測驗系統已經很少使用。
雖然現代儀表控制介面豐富, 但是,對于儀表生產廠商和用戶而言,使用最為廣泛 的是GPIB介面。
常用的USB介面版本為USB 2.0,其支持三種傳輸速率:低速1.5Mbps , 全速12Mbps 和 高速480Mbps , 傳輸速度根據外接設備自動調整,無需設定。直連最大的電纜長度5M, 最多連接設備127臺。
以太網是當今現有LAN采用的最通用的通信協議標準 , 可在互聯設備間實作 10Mbps-10Gbps 資料通信。
Namisoft在實際中用到的主要是LAN和USB方式,所以提及較多的主要是這倆種,GPIB成本較高。
關于控制介面更加詳細的介紹,請到相關網站進行查閱。
3.SCPI(可編程儀器標準語言)
主要特點為:
(1)、程控命令面向測驗流程,而不是描述儀器操作;兼容的編程環境使用同樣的命令和引數來控制具有相同功能的儀器。
(2)、在與通信物理連接層硬體無關的高層次上定義程控訊息。
SCPI基于IEEE488.2形成,但并不局限于GPIB介面,它也可用于RS232C,LAN,USB總線。
(3)、與編程手段和程式語言無關,SCPI用戶測驗程式模塊易于移植。
SCPI有公共的命令,即對所有的儀器都是可行的;也有特定的命令,即不同的儀器命令不同。但所有的命令都符合SCPI標準。
對于SCPI的更詳細的介紹,請查閱相關資料,這里不再贅述。
4.VISA(虛擬儀器軟體架構)
VISA是一個驅動程式軟體架構,開發這一架構的目的在于統一與GPIB、串口、以太網/LAN、IEEE 1394和USB儀器的通信,并簡化儀器的控制應用。通過VISA API,開發人員可以使用GPIB、串口、以太網/LAN、IEEE 1394和USB儀器。
Namisoft對VISA優勢總結:
(1)介面獨立性--VISA提供了一個單一的API以相同的方法與儀器進行通信,而不考慮其介面型別。例如,VISA命令,發送一個ASCII字串到一個基于訊息的儀器,對于GPIB、串口、以太網/LAN、IEEE 1394和USB介面是完全相同的。
(2)一種面向物件的架構,可以方便地適應未來開發的儀器介面。
(3)功能全面的儀器編程特性,通過一個非常緊湊的命令集實作。
對于VISA更詳細的介紹,請查閱相關資料。
5.Namisoft儀器控制程序
連接儀器:通過常用的控制介面將上位機和待控儀器連接。
確定儀器資源的名稱:也稱之為儀器描述符,描述了VISA資源的準確名稱與位置。確認儀器的資源名稱,可以下載硬體驅動,打開軟體后可以識別出來。
在設備和介面選項下面就可以找到儀器的資源名稱,如果找不到(大多數情況是使用LAN介面的情況),可以手動添加,將儀器的IP地址(有可能需要埠號)輸入,軟體就可以識別儀器。
撰寫控制程式:
這里需要說明兩點,不同的儀器使用方法并不相同。撰寫儀器控制程式有幾種方式。
1.使用儀器驅動。有的儀器廠商可能會自己基于VISA或者SCPI開發儀器的驅動,也就是往高層做了進一步封裝,同時也是是對VISA和SCPI做了進一步封裝,這樣就進一步簡化了開發流程。我們可以根據驅動說明或者儀器的編程說明使用儀器驅動軟體架構。需要實作什么功能,呼叫相應的驅動API即可。還可以參考提供的樣例。
2.使用VISA。使用VISA同儀器獲得通信的橋梁,然后將“儀器語言”通過VISA介面通知給儀器,儀器就會按我們的邏輯進行相關的操作。這里的儀器語言需要參考儀器對應的編程說明(可以到儀器相應的官網下載),主要是指SCPI通信指令集。下文會稍作詳細的介紹該方法。
3.實作自己的通信。這一點主要是針對LAN口通信的方式來說的,因為我目前只碰到過這一種情況。有的儀器并沒有那么先進,去支持VXI-11協議,雖然也是TCPIP類的資源名稱,但是這種情況下需要我們自己去實作TCP通信程序。并不難,我們只要實作一個TCP的客戶端就可以。通過儀器提供的IP地址和PORT埠號,我們的客戶端同儀器進行TCP連接,連接完成后給儀器發送“儀器語言”,同時也會接受到儀器的回應。
下面,詳細說一下如何使用VISA同儀器進行通信。
方法一
平臺:vs2013。
建立好工程后,現引入兩個.NET的托管DLL,將Common與VisaNS參考添加到專案。這兩個dll檔案在C:\Program Files (x86)\National Instruments\MeasurementStudioVS20XX\DotNET\Assemblies\目錄下面可以找到。
打開一個VISA會話。

查詢資料,在創建了一個與我們的儀器通信的會話之后,我們可以開始發送資料至該儀器,并讀回其回應。

我們也可用Write函式只發送不讀取資料。
最后將會話關閉

Namisoft小提示:
在用串口和USB口控制時,使用此種方法容易出問題,所以解說第二種方法。現在我還沒試驗過是否該方法對所有的串口和U口都不能用,如果你測驗過了,可以相互交流一下。同樣,這種方式不適用于使用Socket的儀器。
方法二
第二種方法使用visa介面。
控制流程同第一種方法差不多。首先,將Visa32.dll檔案放在工程的debug目錄下面,如果不這么做,程式會先搜索debug目錄,然后搜索system32目錄,尋找Visa32.dll檔案。這里,不像上面一樣,將dll檔案引入專案,是因為該dll檔案是.NET非托管的程式集,需要顯式引入,負責引入的類檔案參考Visa32.cs。(注:通過dumpbin -depents ***.exe或dll可以查看該檔案是否屬于托管,如果有mscoree.dll就是托管的,否則非托管)
在專案中建立Visa32.dll后就可以參考里面的函式。具體的使用方法請參考:NI-Visa help。
下面是部分代碼

這種方法對于不支持VXI-11協議的儀器也不適用,需要自己實作TCP通信。
對于儀器控制很多地方我還有弄清楚,暫時先把這段時間的識訓記錄一下,如果對這方面也有想法的話,可以隨時交流。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/74201.html
標籤:嵌入開發(WinCE)
上一篇:uiautomator2,一款比appium還好用的app自動化測驗框架
下一篇:Android 體系結構
