朱佳奇,張佳仁
(上海市質(zhì)量監(jiān)督檢驗(yàn)技術(shù)研究院,上海 201114)
在熱工溫度計(jì)量中,需要使用數(shù)字多用表進(jìn)行傳感器的電信號(hào)采集,常用的數(shù)字多用表有HP34401A、HP34401、HP34420A、HP34420、KEITHLEY2000、KEITHLEY2001 等諸多型號(hào)。自動(dòng)化計(jì)量的執(zhí)行過程中,需要進(jìn)行多次初始化設(shè)置和讀取操作,可靠正確地實(shí)現(xiàn)遠(yuǎn)程設(shè)置是實(shí)現(xiàn)自動(dòng)化檢定校準(zhǔn)的關(guān)鍵所在。目前數(shù)字儀表都支持SCPI 協(xié)議,如上位機(jī)給連接儀表發(fā)送"*IDN?",儀表會(huì)自動(dòng)地返回設(shè)備型號(hào)等諸多字符串信息,用戶可以根據(jù)返回信息判斷設(shè)備類型[1]。
測(cè)試儀表類型可以定義函數(shù)TestDevice(),GPIB 設(shè)置相應(yīng)的地址以后,舉例如下:
if (Profile.KE2000_TYPE == "HP34401A"
{ _
sp.WriteLine("*IDN?");//詢問設(shè)備信息
string ret=_sp.ReadTo(" ");//將字符串讀取至換行結(jié)尾處,需要注意的是串口發(fā)送和接收緩存區(qū)默認(rèn)都為1024 個(gè)字節(jié),數(shù)字多用表所返回的字符串都是以回車換行符結(jié)尾的,以此方式判斷接收字符串的結(jié)束更加方便,針對(duì)上述提及的數(shù)字多用表的不同類型,可以根據(jù)型號(hào)針對(duì)性識(shí)別,如HP34401 只需要識(shí)別34401 字符串,就可判斷設(shè)備已經(jīng)正確連接。
if (true == ret.Contains("34401"))
{
return true;
}
return false;
} ....
SCPI 儀表協(xié)議的常見遠(yuǎn)程控制流程都是先給連接儀表發(fā)送字符串"*IDN?",如果儀表連接正常會(huì)返回相關(guān)信息字符串,如果未返回字符串,則可能是由于儀表未上電、通訊地址設(shè)置錯(cuò)誤、通訊線纜(GPIB488 和232)連接錯(cuò)誤等原因造成的。因?yàn)闇囟扔?jì)量所使用的數(shù)字多用表一般分為3 個(gè)等級(jí)六位半如34401、七位半如KEITHLEY2001、八位半KEITHLEY2002,儀表默認(rèn)的串口波特率一般為9600-8-n-1[2]。
數(shù)字多用表的初始化分為兩種情況:RS232 接口和GPIB 接口。具體選用何種硬件接口需要在軟件ini 配置文件中加以修改和存儲(chǔ),這樣下次上電時(shí)可以自動(dòng)采用正確設(shè)置參數(shù)。熱工計(jì)量主要對(duì)熱電阻傳感器的電阻值和熱電偶傳感器的毫伏值進(jìn)行采集。定義此函數(shù)為InitDevice(),初始化函數(shù)主要完成數(shù)字多用表的遠(yuǎn)程控制,硬件復(fù)位,設(shè)置電阻或電壓的測(cè)量模式等操作,正確的初始化操作是數(shù)字多用表準(zhǔn)確測(cè)量的前提。
電阻檔初始化順序?yàn)椋菏紫冗h(yuǎn)程復(fù)位數(shù)字多用表,清除寄存器緩存數(shù)據(jù),設(shè)置為遠(yuǎn)程操作模式,電阻檔采集方式,并設(shè)置相應(yīng)的濾波系數(shù)[3]。
_sp.WriteLine("*RST"); //遠(yuǎn)程硬件復(fù)位
_sp.WriteLine("*CLS"); //清除緩沖數(shù)據(jù)
_sp.WriteLine(":SYST:REM");//設(shè)置遠(yuǎn)程控制
_sp.WriteLine(":SENS:FUNC'FRES'"); //電阻測(cè)量
_sp.WriteLine("CONF:FRES 1000, MIN");
_sp.WriteLine("SAMP:COUN 3"); //濾波個(gè)數(shù)
_sp.WriteLine("FRES:NPLC 10");//濾波系數(shù)
_sp.WriteLine("TRIG:SOUR IMM");//觸發(fā)模式
_sp.WriteLine("INIT");
_sp.WriteLine("*OPC");
電壓檔初始化順序?yàn)椋菏紫冗h(yuǎn)程復(fù)位數(shù)字多用表,清除寄存器緩存數(shù)據(jù),設(shè)置為遠(yuǎn)程操作模式,直流電壓檔采集方式,并設(shè)置相應(yīng)的濾波系數(shù),進(jìn)行初始化。
_sp.WriteLine("*RST");//遠(yuǎn)程硬件復(fù)位
_sp.WriteLine("*CLS");//遠(yuǎn)程硬件復(fù)位
_sp.WriteLine(":SYST:REM");//遠(yuǎn)程硬件復(fù)位
_sp.WriteLine(":SENS:FUNC 'VOLT:DC'");//電壓
_sp.WriteLine("CONF:VOLT:DC 0.1, MIN");
_sp.WriteLine("SAMP:COUN 3");
_sp.WriteLine("VOLT:DC:NPLC 10");//濾波系數(shù)
_sp.WriteLine("TRIG:SOUR IMM");
_sp.WriteLine("INIT");
_sp.WriteLine("*OPC");
電阻檔初始化順序?yàn)椋菏紫冗h(yuǎn)程初始化,清除寄存器緩存數(shù)據(jù),再做采集設(shè)置。_sp.WriteLine("*RST");//遠(yuǎn)程硬件復(fù)位_sp.WriteLine("*CLS"); //清除緩沖數(shù)據(jù)_sp.WriteLine(":SYSTem:RWLock");//設(shè)置本地
電壓檔初始化順序?yàn)椋菏紫仍O(shè)置采集模式為直流電壓檔,并設(shè)置好濾波系數(shù)值。
_sp.WriteLine(":SENSe:FUNCtion'VOLTage:DC'";
_sp.WriteLine(":SENSe:VOLTage:DC:NPLCycles1");//濾波系數(shù)
_sp.WriteLine(":SENSe:VOLTage:DC:DIGits MAXimum");// 電壓位數(shù)精度
_sp.WriteLine(":SENSe:VOLTage:DC:AVERage:STATe ON");
GPIB 接口也稱作488 接口,其優(yōu)越的EMC 性能使其大量的應(yīng)用在儀表自動(dòng)化計(jì)量領(lǐng)域,GPIB 接口需要針對(duì)每一個(gè)連接設(shè)備設(shè)置對(duì)應(yīng)的ID 地址值[4]。
電阻檔初始化順序?yàn)椋涸O(shè)置儀表電阻檔,開啟平均濾波。
GPIB.IBWRT(1,":SENSe:FUNCtion'FRESistance'");
GPIB.IBWRT(1,":SENSe:FRESistance:NPLCycles1");//濾波系數(shù)
GPIB.IBWRT(1, ":SENSe:FRESistance:DIGitsMAXimum");
GPIB.IBWRT(1,":SENSe:FRESistance:AVERage:STATe ON");
電壓檔初始化順序?yàn)椋涸O(shè)置儀表直流電壓檔,開啟平均濾波。
GPIB.IBWRT(1,":SENSe:FUNCtion'VOLTage:DC'");
GPIB.IBWRT(1,":SENSe:VOLTage:DC:NPLCycles 1");
GPIB.IBWRT(1,":SENSe:VOLTage:DC:DIGitsMAXimum");
GPIB.IBWRT(1,":SENSe:VOLTage:DC:AVERage:STATe ON");
圖1 為數(shù)字多用表遠(yuǎn)程控制界面圖,數(shù)字多用表在完

圖1 數(shù)字多用表遠(yuǎn)程控制界面Fig.1 Digital multimeter remote control interface
成初始化以后,需要不斷地讀取所連接傳感器的測(cè)量值。如果是344XX 和KEITHLEY 儀表系列串口儀表,一般就循環(huán)發(fā)送":READ?"進(jìn)行讀取,而如果是GPIB 接口儀表,則循環(huán)發(fā)送":fetch?"進(jìn)行讀取[5,6]。
儀表收到讀取命令會(huì)返回相應(yīng)的測(cè)量字符串內(nèi)容,上位機(jī)需要針對(duì)字符串中數(shù)據(jù)的格式進(jìn)行解析轉(zhuǎn)換,具體的操作如下所示:
string ret = _sp.ReadTo(" ");
int x = ret.IndexOf("VDC");//VDC 字符串判斷
string val = ret.Substring(0, 15);//字符串截取操作
float f = 0;
string val = ret.Substring(0, 15); //設(shè)置遠(yuǎn)程控制
float.TryParse(val, out f);
return f;
需要注意的是完成數(shù)字多用表的讀取操作以后,需要關(guān)閉遠(yuǎn)程測(cè)量功能,以便用戶本地手動(dòng)操作。RS232 串口儀表發(fā)送如下命令實(shí)現(xiàn)關(guān)閉:_sp.WriteLine("*RST");//遠(yuǎn)程硬件復(fù)位_sp.WriteLine("*CLS");//清除緩沖數(shù)據(jù)_sp.WriteLine("SYST:LOC");//設(shè)置本地控制
而GPIB 儀表需要發(fā)送如下命令:GPIB.IBGTL(1);
熱電阻計(jì)量檢定過程中需要依據(jù)規(guī)程不斷地采集標(biāo)準(zhǔn)傳感器和被檢傳感器的模擬輸出值:工業(yè)熱電阻采集是將標(biāo)準(zhǔn)熱電阻與被檢熱電阻在同一恒溫環(huán)境中的電阻測(cè)量值進(jìn)行比較;工業(yè)貴金屬和工業(yè)廉金屬熱電偶是將標(biāo)準(zhǔn)熱電偶和被檢熱電偶在檢定爐中的小毫伏信號(hào)值進(jìn)行比較,需要注意的是熱電偶需要進(jìn)行冷端補(bǔ)償處理,包括:零點(diǎn)補(bǔ)償和室溫補(bǔ)償兩種常用方式,零點(diǎn)補(bǔ)償是將熱電偶冷端放置在零度的冰水混合物中,以確保熱電偶的輸出特性以零點(diǎn)為起點(diǎn),mV 與溫度的函數(shù)關(guān)系似90 溫標(biāo)算法,而室溫補(bǔ)償多采用Pt100 溫度傳感器測(cè)量室溫值,根據(jù)被檢熱電偶的類型將上述室溫值換算成mV 值,在將此mV 值加上在室溫環(huán)境下數(shù)字多用表測(cè)量的mV以達(dá)到零點(diǎn)補(bǔ)償?shù)男Ч?/p>
數(shù)字多用表設(shè)置成四線制方式測(cè)量熱電阻的實(shí)時(shí)電阻值,標(biāo)準(zhǔn)熱電阻一般為四線制輸出,工業(yè)熱電阻一般為三線制或兩線制輸出。四線制的測(cè)量比較簡(jiǎn)單,因?yàn)闇y(cè)量電路自身就消除了導(dǎo)線電阻對(duì)結(jié)果的影響,對(duì)于二線制熱電阻是無法消除導(dǎo)線的阻值影響。因此,兩線制電阻只能用于低精度要求的工況測(cè)溫環(huán)境。三線制熱電阻測(cè)量時(shí)需要結(jié)合輔助設(shè)備進(jìn)行換向測(cè)量處理,需要注意的是就三線制熱電阻自身而言,只有A 端和B 端的導(dǎo)線阻值相等才能從測(cè)量原理上消除導(dǎo)線的測(cè)量影響。
在熱工傳感器計(jì)量的過程中,必須有低熱電勢(shì)轉(zhuǎn)換開關(guān)的配合,低熱電勢(shì)轉(zhuǎn)換開關(guān)的外接通道都具有4 個(gè)接線端子A、A、B、B,前面板上依次標(biāo)注標(biāo)準(zhǔn)、被測(cè)1、被測(cè)2、被測(cè)3、被測(cè)4、被測(cè)5 ... 冷端補(bǔ)償,后面板上直連數(shù)字多用表的4 根測(cè)量線。開關(guān)內(nèi)部具有兩個(gè)直流電機(jī)配合切換開關(guān)的順時(shí)針旋轉(zhuǎn)。目前,低熱電勢(shì)轉(zhuǎn)換開關(guān)可以同時(shí)實(shí)現(xiàn)本地和遠(yuǎn)端控制,根據(jù)本地觸發(fā)或者遠(yuǎn)程命令控制的內(nèi)容,旋轉(zhuǎn)至要測(cè)量通道位置,以實(shí)現(xiàn)數(shù)字多用表的自動(dòng)通道切換。依據(jù)檢定規(guī)程的要求,多通道的測(cè)量順序依次為標(biāo)準(zhǔn)、被測(cè)1、被測(cè)2、被測(cè)3、被測(cè)4、被測(cè)5、被測(cè)6、被測(cè)5、被測(cè)4、被測(cè)3、被測(cè)2、被測(cè)1、標(biāo)準(zhǔn)。數(shù)字多用表對(duì)電阻和電壓的測(cè)量值,后續(xù)通過SCPI 協(xié)議發(fā)送至后端上位機(jī)或者采集儀表進(jìn)行后續(xù)計(jì)算處理。
依照論文所述的儀器類型判斷、設(shè)置初始化、循環(huán)讀取和設(shè)備關(guān)閉操作步驟,設(shè)計(jì)開發(fā)出的數(shù)字多用表遠(yuǎn)程控制上位機(jī)軟件,可以實(shí)現(xiàn)遠(yuǎn)程的自動(dòng)化控制,替代人工低效的本地操作,大大提升了溫度計(jì)量過程中數(shù)據(jù)多用表采集數(shù)據(jù)的讀取效率。