朱佳奇,張佳仁
(上海市質(zhì)量監(jiān)督檢驗技術研究院,上海 201114)
在熱工溫度計量中,需要使用數(shù)字多用表進行傳感器的電信號采集,常用的數(shù)字多用表有HP34401A、HP34401、HP34420A、HP34420、KEITHLEY2000、KEITHLEY2001 等諸多型號。自動化計量的執(zhí)行過程中,需要進行多次初始化設置和讀取操作,可靠正確地實現(xiàn)遠程設置是實現(xiàn)自動化檢定校準的關鍵所在。目前數(shù)字儀表都支持SCPI 協(xié)議,如上位機給連接儀表發(fā)送"*IDN?",儀表會自動地返回設備型號等諸多字符串信息,用戶可以根據(jù)返回信息判斷設備類型[1]。
測試儀表類型可以定義函數(shù)TestDevice(),GPIB 設置相應的地址以后,舉例如下:
if (Profile.KE2000_TYPE == "HP34401A"
{ _
sp.WriteLine("*IDN?");//詢問設備信息
string ret=_sp.ReadTo(" ");//將字符串讀取至換行結尾處,需要注意的是串口發(fā)送和接收緩存區(qū)默認都為1024 個字節(jié),數(shù)字多用表所返回的字符串都是以回車換行符結尾的,以此方式判斷接收字符串的結束更加方便,針對上述提及的數(shù)字多用表的不同類型,可以根據(jù)型號針對性識別,如HP34401 只需要識別34401 字符串,就可判斷設備已經(jīng)正確連接。
if (true == ret.Contains("34401"))
{
return true;
}
return false;
} ....
SCPI 儀表協(xié)議的常見遠程控制流程都是先給連接儀表發(fā)送字符串"*IDN?",如果儀表連接正常會返回相關信息字符串,如果未返回字符串,則可能是由于儀表未上電、通訊地址設置錯誤、通訊線纜(GPIB488 和232)連接錯誤等原因造成的。因為溫度計量所使用的數(shù)字多用表一般分為3 個等級六位半如34401、七位半如KEITHLEY2001、八位半KEITHLEY2002,儀表默認的串口波特率一般為9600-8-n-1[2]。
數(shù)字多用表的初始化分為兩種情況:RS232 接口和GPIB 接口。具體選用何種硬件接口需要在軟件ini 配置文件中加以修改和存儲,這樣下次上電時可以自動采用正確設置參數(shù)。熱工計量主要對熱電阻傳感器的電阻值和熱電偶傳感器的毫伏值進行采集。定義此函數(shù)為InitDevice(),初始化函數(shù)主要完成數(shù)字多用表的遠程控制,硬件復位,設置電阻或電壓的測量模式等操作,正確的初始化操作是數(shù)字多用表準確測量的前提。
電阻檔初始化順序為:首先遠程復位數(shù)字多用表,清除寄存器緩存數(shù)據(jù),設置為遠程操作模式,電阻檔采集方式,并設置相應的濾波系數(shù)[3]。
_sp.WriteLine("*RST"); //遠程硬件復位
_sp.WriteLine("*CLS"); //清除緩沖數(shù)據(jù)
_sp.WriteLine(":SYST:REM");//設置遠程控制
_sp.WriteLine(":SENS:FUNC'FRES'"); //電阻測量
_sp.WriteLine("CONF:FRES 1000, MIN");
_sp.WriteLine("SAMP:COUN 3"); //濾波個數(shù)
_sp.WriteLine("FRES:NPLC 10");//濾波系數(shù)
_sp.WriteLine("TRIG:SOUR IMM");//觸發(fā)模式
_sp.WriteLine("INIT");
_sp.WriteLine("*OPC");
電壓檔初始化順序為:首先遠程復位數(shù)字多用表,清除寄存器緩存數(shù)據(jù),設置為遠程操作模式,直流電壓檔采集方式,并設置相應的濾波系數(shù),進行初始化。
_sp.WriteLine("*RST");//遠程硬件復位
_sp.WriteLine("*CLS");//遠程硬件復位
_sp.WriteLine(":SYST:REM");//遠程硬件復位
_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");
電阻檔初始化順序為:首先遠程初始化,清除寄存器緩存數(shù)據(jù),再做采集設置。_sp.WriteLine("*RST");//遠程硬件復位_sp.WriteLine("*CLS"); //清除緩沖數(shù)據(jù)_sp.WriteLine(":SYSTem:RWLock");//設置本地
電壓檔初始化順序為:首先設置采集模式為直流電壓檔,并設置好濾波系數(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 性能使其大量的應用在儀表自動化計量領域,GPIB 接口需要針對每一個連接設備設置對應的ID 地址值[4]。
電阻檔初始化順序為:設置儀表電阻檔,開啟平均濾波。
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");
電壓檔初始化順序為:設置儀表直流電壓檔,開啟平均濾波。
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ù)字多用表遠程控制界面圖,數(shù)字多用表在完
圖1 數(shù)字多用表遠程控制界面Fig.1 Digital multimeter remote control interface
成初始化以后,需要不斷地讀取所連接傳感器的測量值。如果是344XX 和KEITHLEY 儀表系列串口儀表,一般就循環(huán)發(fā)送":READ?"進行讀取,而如果是GPIB 接口儀表,則循環(huán)發(fā)送":fetch?"進行讀取[5,6]。
儀表收到讀取命令會返回相應的測量字符串內(nèi)容,上位機需要針對字符串中數(shù)據(jù)的格式進行解析轉換,具體的操作如下所示:
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); //設置遠程控制
float.TryParse(val, out f);
return f;
需要注意的是完成數(shù)字多用表的讀取操作以后,需要關閉遠程測量功能,以便用戶本地手動操作。RS232 串口儀表發(fā)送如下命令實現(xiàn)關閉:_sp.WriteLine("*RST");//遠程硬件復位_sp.WriteLine("*CLS");//清除緩沖數(shù)據(jù)_sp.WriteLine("SYST:LOC");//設置本地控制
而GPIB 儀表需要發(fā)送如下命令:GPIB.IBGTL(1);
熱電阻計量檢定過程中需要依據(jù)規(guī)程不斷地采集標準傳感器和被檢傳感器的模擬輸出值:工業(yè)熱電阻采集是將標準熱電阻與被檢熱電阻在同一恒溫環(huán)境中的電阻測量值進行比較;工業(yè)貴金屬和工業(yè)廉金屬熱電偶是將標準熱電偶和被檢熱電偶在檢定爐中的小毫伏信號值進行比較,需要注意的是熱電偶需要進行冷端補償處理,包括:零點補償和室溫補償兩種常用方式,零點補償是將熱電偶冷端放置在零度的冰水混合物中,以確保熱電偶的輸出特性以零點為起點,mV 與溫度的函數(shù)關系似90 溫標算法,而室溫補償多采用Pt100 溫度傳感器測量室溫值,根據(jù)被檢熱電偶的類型將上述室溫值換算成mV 值,在將此mV 值加上在室溫環(huán)境下數(shù)字多用表測量的mV以達到零點補償?shù)男Ч?/p>
數(shù)字多用表設置成四線制方式測量熱電阻的實時電阻值,標準熱電阻一般為四線制輸出,工業(yè)熱電阻一般為三線制或兩線制輸出。四線制的測量比較簡單,因為測量電路自身就消除了導線電阻對結果的影響,對于二線制熱電阻是無法消除導線的阻值影響。因此,兩線制電阻只能用于低精度要求的工況測溫環(huán)境。三線制熱電阻測量時需要結合輔助設備進行換向測量處理,需要注意的是就三線制熱電阻自身而言,只有A 端和B 端的導線阻值相等才能從測量原理上消除導線的測量影響。
在熱工傳感器計量的過程中,必須有低熱電勢轉換開關的配合,低熱電勢轉換開關的外接通道都具有4 個接線端子A、A、B、B,前面板上依次標注標準、被測1、被測2、被測3、被測4、被測5 ... 冷端補償,后面板上直連數(shù)字多用表的4 根測量線。開關內(nèi)部具有兩個直流電機配合切換開關的順時針旋轉。目前,低熱電勢轉換開關可以同時實現(xiàn)本地和遠端控制,根據(jù)本地觸發(fā)或者遠程命令控制的內(nèi)容,旋轉至要測量通道位置,以實現(xiàn)數(shù)字多用表的自動通道切換。依據(jù)檢定規(guī)程的要求,多通道的測量順序依次為標準、被測1、被測2、被測3、被測4、被測5、被測6、被測5、被測4、被測3、被測2、被測1、標準。數(shù)字多用表對電阻和電壓的測量值,后續(xù)通過SCPI 協(xié)議發(fā)送至后端上位機或者采集儀表進行后續(xù)計算處理。
依照論文所述的儀器類型判斷、設置初始化、循環(huán)讀取和設備關閉操作步驟,設計開發(fā)出的數(shù)字多用表遠程控制上位機軟件,可以實現(xiàn)遠程的自動化控制,替代人工低效的本地操作,大大提升了溫度計量過程中數(shù)據(jù)多用表采集數(shù)據(jù)的讀取效率。