C#實(shí)現(xiàn)儀器的自動(dòng)控制
1.概述
在生產(chǎn)測(cè)試中,測(cè)試設(shè)備必不可少。如果是小規(guī)模生產(chǎn),則可以進(jìn)行手動(dòng)測(cè)試。但是,為了達(dá)到批量生產(chǎn)的目的,為了簡(jiǎn)化測(cè)試并節(jié)省時(shí)間,需要自動(dòng)測(cè)試。出于這種需求,需要對(duì)儀器進(jìn)行自動(dòng)程序控制。
下面的圖片是一個(gè)相對(duì)常見的測(cè)試框架
整個(gè)控制過(guò)程中最關(guān)鍵的部分是主機(jī)與測(cè)試儀器之間的通信。首先,在建立測(cè)試環(huán)境之后,溝通是關(guān)鍵的第一步。第二步是使用“儀器語(yǔ)言”告訴儀器我們需要他們做什么。簡(jiǎn)而言之,這兩個(gè)步驟。
讓我們首先介紹一些相關(guān)的知識(shí)點(diǎn)。
2.通用控制界面
公共控制接口主要包括:GPIB,串行端口(RS-232),USB,LAN或以太網(wǎng))。
串行接口的通信速度很慢,并且很少使用現(xiàn)代測(cè)試系統(tǒng)。
盡管現(xiàn)代儀器控制界面非常豐富,但對(duì)于儀器制造商和用戶而言,GPIB接口是使用最廣泛的。
常用的USB接口版本是USB 2. 0,它支持三種傳輸速率:低速1. 5Mbps,全速12Mbps和高速480Mbps。傳輸速度根據(jù)外部設(shè)備自動(dòng)調(diào)整,無(wú)需設(shè)置。直接連接的最大電纜長(zhǎng)度為5M,最多可以連接127個(gè)設(shè)備。
以太網(wǎng)是當(dāng)今現(xiàn)有LAN采用的最常見的通信協(xié)議標(biāo)準(zhǔn),可以實(shí)現(xiàn)互連設(shè)備之間的10Mbps-10Gbps數(shù)據(jù)通信。
我在實(shí)踐中使用的主要方法是LAN和USB,因此主要提到這兩種方法。
有關(guān)控制界面的詳細(xì)介紹,請(qǐng)?jiān)L問相關(guān)網(wǎng)站以供參考。
3.SCPI(可編程儀器的標(biāo)準(zhǔn)語(yǔ)言)
SCPI(可編程儀器標(biāo)準(zhǔn)命令)程序控制的儀器標(biāo)準(zhǔn)命令是1990年由九家儀器公司共同發(fā)布的。它基于IEEE488.2構(gòu)建,面向測(cè)試功能或測(cè)試信號(hào),并倡導(dǎo)儀器控制的一致性。
主要功能是:
程序控制命令是針對(duì)測(cè)試過(guò)程的,而不是描述儀器的操作;兼容的編程環(huán)境使用相同的命令和參數(shù)來(lái)控制具有相同功能的儀器。高層定義程序控制的消息,該消息與通信的物理連接層硬件無(wú)關(guān)。
SCPI基于IEEE488.2,但不僅限于GPIB接口,還可以用于RS232C,LAN,USB總線。
與編程方法和編程語(yǔ)言無(wú)關(guān),SCPI用戶測(cè)試程序模塊易于移植。
SCPI具有通用命令,適用于所有儀器。也有特定的命令,即不同的樂器具有不同的命令。但是所有命令都符合SCPI標(biāo)準(zhǔn)。
有關(guān)SCPI的更詳細(xì)介紹,請(qǐng)參閱相關(guān)材料,因此在此不再贅述。
4.VISA(虛擬儀器軟件體系結(jié)構(gòu))
VISA是驅(qū)動(dòng)程序軟件體系結(jié)構(gòu)。開發(fā)此架構(gòu)的目的是統(tǒng)一與GPIB,串行,以太網(wǎng)/ LAN,IEEE 1394和USB儀器的通信,并簡(jiǎn)化儀器控制應(yīng)用程序。通過(guò)VISA API,開發(fā)人員可以使用GPIB,串行,以太網(wǎng)/ LAN,IEEE 1394和USB儀器。
VISA具有以下優(yōu)點(diǎn):
有關(guān)VISA的更詳細(xì)介紹,請(qǐng)參閱相關(guān)材料。5.儀器控制程序
接下來(lái),讓我們談?wù)勅绾问褂肰ISA與儀器進(jìn)行通信。
方法1
平臺(tái):vs2013。
構(gòu)建項(xiàng)目后,現(xiàn)在引入兩個(gè).NET托管DLL,并添加NationalInstruments.Common和NationalInstruments.VisaNS對(duì)項(xiàng)目的引用??梢栽贑:\ Program Files(x86)\ National Instruments \ MeasurementStudioVS20XX \ DotNET \ Assemblies \目錄中找到這兩個(gè)dll文件。
打開VISA會(huì)話。
查詢數(shù)據(jù)。與儀器建立通信會(huì)話后,我們可以開始向儀器發(fā)送數(shù)據(jù)并回讀其響應(yīng)。
我們還可以使用Write函數(shù)發(fā)送但不讀取數(shù)據(jù)。
最后關(guān)閉會(huì)話
我需要指出一點(diǎn)。使用串行端口和USB端口進(jìn)行控制時(shí),此方法失敗,因此我使用了第二種方法。我尚未測(cè)試此方法是否不適用于所有串行端口和U端口。如果已經(jīng)測(cè)試過(guò),則可以相互通信。同樣,此方法不適用于使用Socket的樂器。
方法二
第二種方法使用簽證界面。
控制流程類似于第一種方法。首先,將Visa3 2. dll文件放在項(xiàng)目的調(diào)試目錄下。如果您不這樣做,程序?qū)⑹紫人阉髡{(diào)試目錄,然后搜索system32目錄自動(dòng)測(cè)量設(shè)備,并查找Visa3 2. dll文件。在這里自動(dòng)測(cè)量設(shè)備,與上述不同,由于dll文件是.NET非托管程序集,因此需要將其顯式導(dǎo)入,因此dll文件將導(dǎo)入到項(xiàng)目中。負(fù)責(zé)導(dǎo)入的類文件參考Visa3 2. cs。 (注意:您可以檢查文件是由dumpbin -depents ***。exe還是dll管理的。如果存在mscoree.dll,則是托管文件,否則為非托管文件)
在項(xiàng)目中創(chuàng)建Visa3 2. dll后,可以引用其中的功能。有關(guān)特定用法,請(qǐng)參閱NI-Visa幫助。
下面是代碼的一部分
該方法不適用于不支持VXI-11協(xié)議的儀器。您需要自己實(shí)現(xiàn)TCP通信。
關(guān)于儀器的控制,我還有很多事情要弄清楚。目前,我將記錄這段時(shí)間內(nèi)的收成。如果對(duì)此有任何想法,我可以隨時(shí)進(jìn)行交流。