摘要:為了提高現(xiàn)代測(cè)試效率和儀器的測(cè)試精度,實(shí)現(xiàn)硬件不具有的一些功能,可通過(guò)計(jì)算機(jī)對(duì)IEEE488接口儀器的操作和控制來(lái)實(shí)現(xiàn)。該方法采用Windows的DLL(動(dòng)態(tài)鏈接庫(kù))技術(shù),方便地把多臺(tái)儀器組合起來(lái),形成由計(jì)算機(jī)控制的自動(dòng)測(cè)量系統(tǒng)。作者介紹了IEEE488接口的Windows程序設(shè)計(jì)的基本思想,并結(jié)合導(dǎo)彈熱電池測(cè)控系統(tǒng)的設(shè)計(jì),給出了用DLL技術(shù)實(shí)現(xiàn)對(duì)程控電子負(fù)載、程控電源和熱電式陣列記錄儀進(jìn)行編程的方法。
關(guān)鍵詞:IEEE488接口;DLL技術(shù);程控儀器編程
1 前言
目前,許多測(cè)試系統(tǒng)采用IEEE488接口實(shí)現(xiàn)儀器的互連和儀器與計(jì)算機(jī)相連,經(jīng)過(guò)IEEE488接口實(shí)現(xiàn)計(jì)算機(jī)對(duì)儀器的測(cè)控,這樣做不僅提高了測(cè)試系統(tǒng)的測(cè)試精度,而且可用軟件取代硬件,實(shí)現(xiàn)硬件不具有的一些功能。
利用IEEE488接口功能和與IEEE488接口相匹配的可編程儀器,用標(biāo)準(zhǔn)命令SCPI (Standard commands for programmable instruments),通過(guò)高級(jí)語(yǔ)言編程可實(shí)現(xiàn)自動(dòng)測(cè)試。典型的自動(dòng)測(cè)試系統(tǒng)由一臺(tái)作為主控機(jī)的計(jì)算機(jī)和若干臺(tái)程控測(cè)試儀器通過(guò)IEEE488接口及總線連接而成。主控機(jī)內(nèi)安裝了一塊IEEE488標(biāo)準(zhǔn)接口卡,通過(guò)它系統(tǒng)可對(duì)各程控測(cè)試儀器進(jìn)行遠(yuǎn)程遙控和自動(dòng)(半自動(dòng))操作。
在對(duì)導(dǎo)彈熱電池測(cè)控系統(tǒng)的研發(fā)過(guò)程中,我們選擇了Windows作為軟件開發(fā)平臺(tái),以面向?qū)ο蟮腣isual Basic作為程序設(shè)計(jì)語(yǔ)言, 利用Windows的DLL(動(dòng)態(tài)鏈接庫(kù))技術(shù),通過(guò)不同的IEEE488接口功能調(diào)用,實(shí)現(xiàn)了對(duì)測(cè)控系統(tǒng)中程控電子負(fù)載、程控電源和WR1000熱電式陣列記錄儀的自動(dòng)控制。
2 測(cè)控系統(tǒng)對(duì)IEEE488的編程要求
導(dǎo)彈武器裝備的能源主要由熱電池等組成,熱電池是一次性使用的固態(tài)電解質(zhì)貯備電池,它無(wú)法像常規(guī)電池那樣在生產(chǎn)結(jié)束后對(duì)所有電池進(jìn)行電性能檢測(cè)篩選,熱電池的驗(yàn)收只能通過(guò)抽樣檢驗(yàn)的方法進(jìn)行,因此加強(qiáng)熱電池生產(chǎn)過(guò)程中的檢測(cè),是保障熱電池產(chǎn)品質(zhì)量,提高熱電池產(chǎn)品性能的重要手段。根據(jù)導(dǎo)彈熱電池的技術(shù)要求和性能特點(diǎn),測(cè)控系統(tǒng)設(shè)計(jì)采用了模塊化結(jié)構(gòu),以便通過(guò)不同的組合,測(cè)試各類熱電池。
按照測(cè)試要求,系統(tǒng)采用電子負(fù)載拉載,實(shí)現(xiàn)恒流或恒阻脈沖放電;使用WR1000 熱敏陣列記錄儀采集熱電池電壓和電流數(shù)據(jù);通過(guò)PT100溫度傳感器經(jīng)RS232采集熱電池的表面溫度數(shù)據(jù)。整個(gè)系統(tǒng)由計(jì)算機(jī)、電子負(fù)載、程控電源、WR1000 熱敏陣列記錄儀、通用測(cè)試接口裝置、現(xiàn)場(chǎng)信號(hào)監(jiān)測(cè)裝置等組成,系統(tǒng)測(cè)試原理如圖1所示。由圖可見(jiàn),電子負(fù)載、計(jì)算機(jī)、程控電源和WR1000 熱敏陣列記錄儀之間均采用標(biāo)準(zhǔn)IEEE488接口連接,通過(guò)計(jì)算機(jī)控制,可使整個(gè)測(cè)試過(guò)程實(shí)現(xiàn)電控、激活、放電、采樣、處理、顯示、打印、儲(chǔ)存自動(dòng)化。
測(cè)試時(shí),通過(guò)計(jì)算機(jī)控制程控電源點(diǎn)火,激活被測(cè)對(duì)象,熱電池的電壓和電流信號(hào)直接由WR1000數(shù)據(jù)記錄儀采入,熱電池表面的溫度信號(hào)則經(jīng)PT1000溫度傳感器通過(guò)計(jì)算機(jī)RS232口采入并實(shí)時(shí)顯示,與此同時(shí)計(jì)算機(jī)通過(guò)IEEE488控制電子負(fù)載拉載電流。試驗(yàn)結(jié)束,計(jì)算機(jī)會(huì)將WR1000數(shù)據(jù)記錄儀中數(shù)據(jù)傳輸?shù)接?jì)算機(jī)內(nèi)存中加以存盤保存。根據(jù)需要,試驗(yàn)數(shù)據(jù)可隨時(shí)通過(guò)屏幕或打印機(jī)輸出。
測(cè)試過(guò)程中,系統(tǒng)采用程控電子負(fù)載拉載,實(shí)現(xiàn)恒流或恒阻脈沖放電。圖2為熱電池的一個(gè)拉載波形實(shí)例。
3 IEEE488命令的實(shí)現(xiàn)方法
在導(dǎo)彈熱電池測(cè)控系統(tǒng)中,我們通過(guò)IEEE488 總線將計(jì)算機(jī)、程控電源、電子負(fù)載和WR1000 熱敏陣列記錄儀相連,編寫了相應(yīng)的DLL動(dòng)態(tài)鏈接庫(kù),由計(jì)算機(jī)對(duì)程控電源、程控電子負(fù)載和WR1000 熱敏陣列記錄儀進(jìn)行控制,從而實(shí)現(xiàn)了熱電池點(diǎn)火激活、電子負(fù)載拉載和WR1000 熱敏陣列記錄儀數(shù)據(jù)傳輸?shù)淖詣?dòng)化。
為了實(shí)現(xiàn)對(duì)IEEE488接口的測(cè)控,我們采用VB6.0編寫了如圖3所示的測(cè)控程序。
作為面向?qū)ο蟮目梢暬幊陶Z(yǔ)言, VB的功能非常強(qiáng)大,但也有自身的不足。在工業(yè)控制中對(duì)計(jì)算機(jī)的底層硬件進(jìn)行訪問(wèn)以及利用各種控制接口板進(jìn)行數(shù)據(jù)采集和控制時(shí),僅靠VB是無(wú)法解決的。為此我們使用Windows的DLL動(dòng)態(tài)鏈接庫(kù)技術(shù),采用標(biāo)準(zhǔn)的 IEEE488工業(yè)指令,利用Visual C++編寫DLL來(lái)實(shí)現(xiàn)熱電池點(diǎn)火激活、電子負(fù)載拉載和WR1000 熱敏陣列記錄儀數(shù)據(jù)傳輸?shù)雀黜?xiàng)功能。
下面以實(shí)例說(shuō)明IEEE488命令的實(shí)現(xiàn)方法。用VB 編寫的部分測(cè)控程序段如下:
Public Declare Sub CURRENT_LOAD_INIT Lib “Apiguide.dll” ()
Public Declare Sub CURRENT_LOAD Lib “Apiguide.dll” (ByVal v20 As String, ByVal v5 As String)
Public Declare Sub IEEE488_POWER_ON Lib “Apiguide.dll” (ByVal vol_curr As String)
Public Declare Sub IEEE488_POWER_OFF Lib “Apiguide.dll” ()
……
CURRENT_LOAD_INIT ‘程控電子負(fù)載初始化
IEEE488_POWER_ON “APPL P25V,24.0,1.0”
‘程控電源24V 啟動(dòng)電機(jī)
LIGHT_ELEC_SAMPLING ‘采光電信號(hào)
IEEE488_POWER_OFF ‘關(guān)閉電機(jī)
CURRENT_LOAD “curr:stat:l1 3.0”, “curr:stat:l1 1.0”
‘程控電子負(fù)載加載
TEST_SAMPLING ‘采樣
……
以程控電子負(fù)載加載為例,用VC++ 編寫DLL的具體步驟如下:
(1) 新建工程名為Apiguide的動(dòng)態(tài)鏈接庫(kù)DLL
(2) 打開Apiguide.h文件,在#include后添加說(shuō)明:
extern "C" void PASCAL EXPORT CURRENT_LOAD(char current_value_20[],char current_value_5[]);
(3)打開Apiguide.cpp文件,
在文件開頭加入:
#include “ieee.h”
在文件最后加入:
extern "C" void PASCAL EXPORT CURRENT_LOAD(char current_value_20[],char current_value_5[])
{
int status;
send(9,"chan 1",&status);
send(9,current_value_20,&status);
send(9,"chan 2",&status);
send(9,current_value_20,&status);
send(9,"chan 3",&status);
send(9,current_value_5,&status);
send(9,"run",&status);
}
(4) 打開Apiguide.def 文件,在文件最后寫入:
CURRENT_LOAD
通過(guò)上述實(shí)例說(shuō)明,不難看出,動(dòng)態(tài)鏈接庫(kù)DLL的建立和調(diào)用非常方便。
4 結(jié)語(yǔ)
基于IEEE488接口的儀器可用計(jì)算機(jī)來(lái)實(shí)現(xiàn)對(duì)其的操作和控制,從而替代傳統(tǒng)的人工操作方式。IEEE488測(cè)量系統(tǒng)的結(jié)構(gòu)和命令比較簡(jiǎn)單。結(jié)合Windows的DLL動(dòng)態(tài)鏈接庫(kù)技術(shù),我們可以很方便地把多臺(tái)儀器組合起來(lái),形成Windows圖形界面的計(jì)算機(jī)自動(dòng)測(cè)量系統(tǒng)。這樣做不僅提高了測(cè)試精度,也符合測(cè)試技術(shù)與計(jì)算機(jī)技術(shù)的同步協(xié)調(diào)向前發(fā)展的趨勢(shì)。





