C 實現儀器的自動化控制

2021-07-25 20:43:26 字數 2268 閱讀 8180

生產測試當中,測試儀器不可或缺,如果是小規模生產,手動測試可以對付;但是要想到達大批量生產的目的,為了簡化測試,節約時間,就需要進行自動化測試。出於這樣的需求,對儀器的自動化程式控制就有了需求。

下圖是乙個相對普遍的測試框架

整個控制過程中最為關鍵的部分就是上位機同測試儀器之間的通訊,首先測試環境搭建完畢之後,能通訊是關鍵的第一步,第二步就是用「儀器的語言」告訴儀器我們需要它們做什麼。簡而言之,就是這倆步。

下面先介紹幾個相關的知識點。

常見的控制介面主要有:gpib、串列埠(rs-232)、usb、lan或乙太網。

序列介面通訊速度較慢,現代測試系統已經很少使用。

雖然現代儀表控制介面豐富, 但是,對於儀表生產廠商和使用者而言,使用最為廣泛 的是gpib介面。

常用的usb介面版本為usb 2.0,其支援三種傳輸速率:低速1.5mbps , 全速12mbps 和 高速480mbps , 傳輸速度根據外接裝置自動調整,無需設定。直連最大的電纜長度5m, 最多連線裝置127臺。

乙太網是當今現有lan採用的最通用的通訊協議標準 , 可在互聯裝置間實現 10mbps-10gbps 資料通訊。

本人在實際中用到的主要是lan和usb方式,所以提及較多的主要是這倆種。

關於控制介面更加詳細的介紹,請到相關**進行查閱。

scpi (standard command for programmable instrumentation)程式控制儀器標準命令是1990由九家儀器公司聯合推出,其建立在ieee488.2的基礎,面向測試功能或測試訊號,倡導儀器控制的一致性。

主要特點為:

程式控制命令面向測試流程,而不是描述儀器操作;相容的程式設計環境使用同樣的命令和引數來控制具有相同功能的儀器。

在與通訊物理連線層硬體無關的高層次上定義程式控制訊息。

scpi基於ieee488.2形成,但並不侷限於gpib介面,它也可用於rs232c,lan,usb匯流排。

與程式設計手段和程式語言無關,scpi使用者測試程式模組易於移植。

scpi有公共的命令,即對所有的儀器都是可行的;也有特定的命令,即不同的儀器命令不同。但所有的命令都符合scpi標準。

對於scpi的更詳細的介紹,請查閱相關資料,這裡不再贅述。

visa是乙個驅動程式軟體架構,開發這一架構的目的在於統一與gpib、串列埠、乙太網/lan、ieee 1394和usb儀器的通訊,並簡化儀器的控制應用。通過visa api,開發人員可以使用gpib、串列埠、乙太網/lan、ieee 1394和usb儀器。

visa具備如下優勢:

對於visa更詳細的介紹,請查閱相關資料。

下面,詳細說一下如何使用visa同儀器進行通訊。

方法一平台:vs2013。

建立好工程後,現引入兩個.net的託管dll,將nationalinstruments.common與nationalinstruments.visans引用新增到專案。這兩個dll檔案在c:\program files (x86)\national instruments\measurementstudiovs20xx\dotnet\assemblies\目錄下面可以找到。

開啟乙個visa會話。

查詢資料,在建立了乙個與我們的儀器通訊的會話之後,我們可以開始傳送資料至該儀器,並讀回其響應。

我們也可用write函式只傳送不讀取資料。

最後將會話關閉

需要說明一點,在用串列埠和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通訊。

對於儀器控制很多地方我還有弄清楚,暫時先把這段時間的收穫記錄一下,如果對這方面也有想法的話,可以隨時交流。

自動化控制 術語匯

1.rfid radio frequency identification devices 無線射頻識別裝置 2.plc programable logic controller 可程式設計邏輯控制器 3.servo 伺服 伺服電機的簡稱,屬於電機的一種,由伺服驅動器控制其工作。4.伺服系統 根據自...

python自動化 控制手機

python os庫和subprocess庫 python提供了os庫可以訪問系統資源,也能執行系統命令.這就和上面的adb連起來了.比如下面是我寫的一些adb方法 def click ok os.system adb path adb shell input keyevent 23 time.sl...

對自動化控制的理解

在自動化控制領域,控制的模式可能很相似,像我現在實習公司的系統,可以分成資料採集,和資料處理兩個部分。對於資料的採集,主要通過前置機完成,和前置機相聯接的是許多電力裝置,這些電力裝置根據國家標準採用不同的協議向前置機傳送資料,在電力行業中有令牌協議,104協議等等。他們好像管這些協議叫做規約。這些硬...