馬修才,鄭樹芳,溫曉輝,牛永紅
(1.內蒙古自治區大氣探測技術保障中心,內蒙古 呼和浩特 010051; 2.內蒙古自治區氣象信息中心,內蒙古 呼和浩特 010051)
用于地面氣象觀測的氣壓傳感器主要有PTB210、PTB220、PTB330(DYC1)幾種型號,上述幾種型號的傳感器均為智能型傳感器,其內部集成了非易失存儲器用于存儲氣壓輸出信號的誤差調整參數[1-3],且幾種傳感器均提供了外部串行通訊接口,方便用戶進行數據采集和參數設置等操作。隨著傳感器的老化,即使傳感器利用出廠時集成的參數進行了誤差調整,仍有較大可能在檢定/校準時超出誤差允許范圍,此時需要用戶重新獲取新的誤差調整參數并更新到傳感器中,將傳感器誤差控制在允許的范圍內。
目前國內對上述幾種型號傳感器的誤差調整,基本都為人工手動收發交互命令與數據的方式,相關的研究[4-9]已較為成熟。但是手動收發命令的方式,對操作人員要求較高,操作人員不僅需要熟悉傳感器的誤差調整原理與方法,并且需要自行搭建傳感器的誤差調整環境,通用性差、不夠便捷。有相關學者針對PTB220,設計了“基于串口通信的PTB220氣壓傳感器誤差自動調整系統”[10],可實現PTB220型號氣壓傳感器的誤差自動調整,但該系統需要借助第三方系統來采集壓力標準器和傳感器氣壓值,以此來獲取新的誤差調整參數。本文在詳細研究了幾種型號的氣壓傳感器技術手冊和相關學者的研究基礎后,針對PTB210、PTB220、PTB330幾種型號傳感器,設計了一種多通道誤差自校準系統,可同時實現多達8路上述型號傳感器誤差自動調整。
如圖1所示,誤差自校準系統包括硬件和軟件兩部分,軟件部分為運行在終端電腦的誤差自校準軟件,硬件部分提供傳感器和氣壓標準器、壓力控制器等到終端電腦的通訊鏈路和氣路連接。系統的硬件部分,充分利用了現階段全國各省級氣象計量檢定機構配備的檢定系統硬件設備,包括16 Port串口服務器,壓力控制器、氣壓標準器和用于采集傳感器模擬輸出信號的6位半數字萬用表,上述設備通過232串口與串口服務器連接,再由串口服務器接入終端電腦。文章所研究的幾種型號的傳感器,雖然具備232串行通信功能,但其外部接口并非為標準的DB9 232,因此設計了“多通道轉換器”,將幾種型號的傳感器外部接口轉換成3線制的DB9 232接口,并為各通道的傳感器提供工作電源。

圖1 誤差自校準系統結構
PTB220和PTB330(DYC1)具有相同的外部接口[11-12],均為DB9母口。其引腳定義見表1,2、3、5引腳為232信號接收、發送和地線,其7、9引腳為傳感器供電引腳(9~30 V DC),6、8引腳為傳感器模擬信號輸出端口(0~5 V電壓輸出,僅配置了數模轉換模塊的傳感器具備此功能)。PTB210外部引線功能定義同樣見表1,PTB210并未對外引出232信號地線,為使收發數據穩定,可將采集端的232地線與PTB210電源地連接。

表1 傳感器外部接口引腳(線)定義
多通道轉換器作用有3個:1)將傳感器由Port口接入并將其232信號線引至COM口供后端連接;2)為接入的傳感器提供工作電源;3)若接入的傳感器為具備模擬輸出模塊的PTB220,將8通道傳感器的模擬信號輸出經過通道選擇后向后端輸出。其結構如圖2所示。

圖2 多通道轉換器結構
選用直流開關電源為8通道傳感器和通道選擇電路供電,用SC4519芯片將開關電源12 V轉換為3.3 V為多通道轉換器的MCU供電。設計中控制器芯片采用STM32F103,模擬通道選擇采用兩片8選1模擬開關芯片AD7501,一片輸入端接入8通道傳感器的模擬信號輸出,另一片輸入端接入8通道傳感器的模擬信號地,由控制器芯片IO引腳控制模擬開關通道的選通。為使傳感器模擬信號測量更準確,需在Vout接口兩線之間并聯一個阻值在10~60 kΩ之間標準負載電阻[13]。
多通道轉換器通電后,MCU開始運行固化好的程序。該部分程序分為主程序和串行中斷程序,主程序完成初始化后進入主循環,等待串口接收標志;當MCU串口接收到數據時,串行中斷程序觸發,進行接收數據處理,并置位串口接收標志;主程序檢測到串口接收標志后進行數據判斷,當為預設的數據格式時,控制相應IO引腳輸出高低電平選通對應的模擬通道。
圖3為多通道轉換器外部接口圖,上方為前面板接口,下方為后面板接口:傳感器由前面板Port端口接入,PTB220/PTB330通過串口線連接至DB9接口,PTB210接入DB9上方的接線端子,每個Port端口同時只允許接入一類傳感器;后面板的傳感器數字信號輸出COM口通過串口線連接至串口服務器,再由串口服務器接入電腦,COM0為多通道轉換器通信端口,通過此串口控制通道轉換器選擇對應的模擬量通道,Vout為當前所選通道的PTB220模擬量輸出端口,連接數字萬用表采集模擬信號。

圖3 多通道轉換器外部接口
3.1.1 PTB210
PTB210更新傳感器誤差調整參數的步驟:1)讀取并備份原誤差調整信息;2)禁用傳感器原誤差調整參數,重啟傳感器;3)與氣壓標準器對比獲取傳感器新的誤差調整參數;4)將新的誤差調整參數寫入到傳感器中,使能傳感器誤差調整參數,重啟傳感器。PTB210誤差調整參數需要重啟傳感器后生效,多點誤差調整使能開關也是重啟后才生效。調整過程中需要用到的通信命令見表2。

表2 PTB210誤差調整相關命令
3.1.2 PTB220
誤差線性調整步驟:1)打開傳感器蓋板,撥碼開關第4位撥到ON位置;2)禁用誤差線性調整參數;3)獲取傳感器新誤差調整參數;4)寫入新的誤差調整參數,進行單點調整時,第二個校準點不應直接發送回車結束,應輸入與第一點不同的壓力點,修正值沿用第一個校準點的修正值;5)啟用誤差線性調整參數。
誤差多點調整步驟:1)打開傳感器蓋板,撥碼開關第4位撥到ON位置;2)禁用誤差多點調整參數;3)獲取傳感器新誤差調整參數;4)寫入新的誤差調整參數,若待調整的壓力點不足8個時,發送回車提前結束誤差調整過程;5)啟用誤差多點調整參數。
模擬量調整步驟:1)先進行數字量的調整,數字量調整后誤差仍不滿足要求時繼續進行模擬量的調整;2)禁用誤差線性調整參數;3)強制傳感器輸出低氣壓點電壓,獲取該電壓值;4)強制傳感器輸出高氣壓點電壓,獲取該電壓值;5)計算新的電壓偏移和增益參數;6)更新模擬量調整參數;7)啟用誤差線性調整參數。
需要注意的是,PTB220模擬量調整不會影響數字量輸出,數字量調整會影響模擬量輸出,多點調整會重置線性調整,誤差調整參數更新完成后不需重啟傳感器,只需使能調整即可使新的參數生效。表3為PTB220誤差調整過程涉及的通信命令。

表3 PTB220誤差調整相關命令
3.1.3 PTB330
PTB330誤差調整步驟與PTB220基本一致,不同之處在于PTB330誤差調整前需要打開蓋板,將ADJ按鍵按下,輸入的新誤差調整參數為傳感器讀數和氣壓參考值的列表,而非PTB220誤差調整時需輸入傳感器讀數和修正值列表。另外,PTB330進行誤差多點調整后不會自動重置誤差線性調整參數。表4為PTB330誤差調整涉及到的命令。

表4 PTB330誤差調整相關命令
根據3.1節的研究基礎,得出了實現各型號傳感器誤差調整的通用模型,其流程如圖4所示,詳情如下:若接入的傳感器為PTB220或PTB330,需要先將其參數寫入開關置于允許的狀態;傳感器接入系統完成初始化后,首先將其之前的誤差調整參數禁用,以確保獲得的新誤差調整參數的準確性,與其他兩種型號的傳感器不同,PTB210在禁用以前的誤差調整參數后需要重啟傳感器才能生效;根據需要調整的點數設置壓力控制點列表,控制壓力控制器到各個壓力控制點,當壓力達到穩定條件后,獲取經過修正的氣壓標準器的氣壓值作為氣壓參考值,獲取各通道的傳感器氣壓輸出值,直至壓力控制點列表循環完成,結束各通道氣壓傳感器誤差調整參數的獲取;根據壓力控制點的個數選擇單點誤差調整、兩點誤差調整或多點誤差調整,調整完成后使能誤差調整參數使之生效。

圖4 傳感器誤差調整通用流程
至此,實現自校準軟件的任務已經非常明確,在用戶界面中設計相應的壓力控制點選擇列表、氣壓標準器和壓力控制器參數設置、誤差調整閾值設置、各通道傳感器信息展示等必備要素,并將圖4流程中的操作全部于軟件后臺程序自動完成。
自校準系統軟件采用WPF技術實現,前端界面采用xaml語言設計,后臺程序采用C#語言實現,利用.net Framework中的SerialPort類實現232串行設備的數據交互。軟件內置了文章所研究的幾類氣壓傳感器的誤差調整、氣壓采集等操作的相關命令,可自動收發命令控制氣壓傳感器進行通信參數自動匹配、自動獲取傳感器序列號、誤差調整參數禁止/使能、獲取氣壓值、更新誤差調整參數、重啟等操作,可自動收發命令完成壓力控制器壓力點控制、模式設置、控制速率等操作,自動完成氣壓標準器的氣壓獲取、參考氣壓值計算,進行模擬量誤差調整時可自動控制多通道連接器切換至目標通道并控制數字萬用表采集氣壓模擬量。用戶僅需將傳感器接入多通道連接器并打開誤差調整允許開關(僅PTB220、PTB330需要),便可一鍵完成圖4所示的傳感器誤差調整的整個流程。為增加軟件的自動化程度及運行結果的可靠性,自校準軟件實現了業務電腦與傳感器間通信參數的自動匹配、各通道接入傳感器型號的自動識別,設計了兼顧軟件運行效率和接收數據完整性的串口數據判包機制,并充分利用了C#強大的異常處理機制增加軟件運行穩定性。
3.3.1 自動匹配通信參數
根據232串行通信的特點,通信雙方波特率、校驗位、數據位、停止位必須都一致時,才可能正確收發數據[14-15]。根據這一特點,先在電腦端設置某種通信參數,然后向傳感器發送特定命令,若能從返回信息中正確解析出預期的信息,說明通信的另一端即傳感器端的通信參數也為該通信參數。3種型號的傳感器均預設了獲取傳感器版本信息的命令,具體命令及返回信息如表5所示。

表5 獲取傳感器版本信息命令
將幾種傳感器可能設置的波特率300、600、1 200、2 400、4 800、9 600、19 200與奇校驗、偶檢驗、無校驗3種檢驗方式以及數據位7位、8位進行組合成列表(其中數據位為8時校驗位只能為無校驗),并將常用的設置[16-17]“9600,N,8,1”(PTB210業務應用設置)、“4800,N,8,1”(PTB220舊站設置)、“2400,N,8,1”(PTB330業務應用設置)及“9600,E,7,1”(傳感器出廠配置)提前至列表最前,循環列表并將電腦端對應串行端口更新成對應列表項的串口設置,發送獲取傳感器版本信息命令,直至循環至列表中的設置能使傳感器正確返回包含預期傳感器型號的信息時,說明當前的列表項設置正確,即傳感器的預置通信參數,并同時識別了該通道所連接傳感器的型號。利用自動匹配通信參數功能,用戶無需提前設置與各通道傳感器通信的參數,提高了系統的自動化程度。
3.3.2 傳感器返回數據判包機制
由于文章所研究幾種傳感器返回數據格式、結束標志、長度等在不同命令及配置下有所區別,利用簡單的延時函數來等待傳感器返回的方法,延時過短時無法保證各個命令的返回數據信息完整,延時過長則會影響軟件的運行時效,因此本文根據串行通信持續數據流的特點,設計了一種通用于文章所研究幾種傳感器的判包機制。
電腦端軟件向傳感器發送命令后,進入數據接收處理模塊:1)在數據接收處理模塊,首先進行收到返回數據前的循環,循環體內執行1 ms的短延時操作,并判斷串口接收緩沖區是否有可讀數據,達到循環上限跳出循環,接收緩沖區有可讀數據提前跳出循環;2)進入接收數據處理循環,判斷有無可讀數據,無數據且循環次數達到上限,結束循環,數據接收處理模塊返回空值,若有可讀數據,讀取串口接收緩沖區內的數據后跳出循環,重新開始新一輪循環直至串口數據流完全接收完成。利用這種判包機制,電腦端軟件可根據傳感器返回數據的長度自適應合適的等待時間,提高了電腦端軟件接收傳感器數據的時效性。
3.3.3 分段內插法處理氣壓參考值
系統中所采用的氣壓標準器為經過了有效溯源,各壓力校準點的參考氣壓值應為氣壓標準器氣壓值與其修正值之和。氣壓標準器溯源證書上僅給出了測量范圍內的整百點的修正值信息,即500 hPa到1 100 hPa間7個整百百帕點的修正值,若設置了非整百點的壓力校準點,則需要按內插法[18]計算該校準點對應的氣壓標準器修正值,如此得到的氣壓參考值更為合理。先將氣壓標準器溯源數據分成如下6段:[500,600],[600,700],[700,800],[800,900],[900,1 000],[1 000,1 100],當設置的壓力校準點落在其中某一段時,可按照公式(1)計算得到氣壓標準器在該校準點的修正值。
(1)
式中,b為待求氣壓標準器修正值,hPa;a為設置的壓力校準點氣壓值,hPa;a1、a2為a所在氣壓校準點分段的兩端點,hPa;b1、b2為該段兩端點對應的修正值,hPa。
3.3.4 關鍵操作失誤重試及異常處理
整個誤差自動調整過程涉及到的操作步驟多,為確保傳感器誤差自動調整一次性成功,在設計軟件時采取了關鍵操作失誤重試的措施。軟件對傳感器和氣壓標準器、壓力控制器等設備返回的數據進行解析,根據解析的結果采取不同的后續操作。若解析得到正確信息,繼續執行后續操作,若解析出現錯誤,則在未達到重復次數上限前重新執行當前操作,直至得到預期的返回信息。
設計軟件時充分利用了C#為用戶提供的強大的異常處理機制[19-20],所有功能函數均進行了異常捕獲和處理,并設計了異常日志輔助功能,記錄下軟件運行時發生的非預期的異常情況。
關鍵操作失誤重試及異常處理使自校準軟件代碼更加健壯,保證在非設備故障時,誤差自動調整一次性成功。
在實際應用測試中,利用文章所研究、設計的誤差自校準軟件,對4臺PTB210,3臺PTB220,1臺DYC1(即PTB330)進行了誤差調整實驗。實驗中8臺傳感器同時接入系統,選擇并設置了8個誤差校準點,為對比8臺傳感器誤差調整前后的輸出值,將誤差調整閾值設置為了0.01,對8通道的傳感器全部進行誤差多點調整。圖5為測試過程中的誤差自校準軟件界面,表6為誤差調整前各個通道傳感器的輸出誤差情況,即獲取到的新的誤差調整參數。表7為軟件自動將新的誤差調整參數寫入傳感器生效后,再次獲取的各通道傳感器誤差情況。

圖5 實際應用中的傳感器誤差自校準軟件
通過表6和表7可以明顯看出,利用文章設計的誤差自校準軟件調整過后的傳感器誤差均明顯減小,參與實驗的各傳感器在各校準點的誤差絕對值最大值為0.05 hPa,遠小于規范要求的±0.30 hPa的誤差范圍。另外,從接入傳感器,到誤差調整完成,整個誤差調整過程持續時間未超過1小時。以往從搭建調試環境到獲取新的誤差調整參數到完成誤差調整,調整1臺傳感器就需耗費近半天時間,使用本系統后大大提高了氣壓傳感器誤差調整工作效率。

表6 誤差調整前傳感器誤差

表7 誤差調整后傳感器誤差
除文章中所述實驗外,還利用自校準系統進行了大量其他實驗,包括誤差線性調整和誤差多點調整的對比實驗,發現誤差多點調整效果明顯好于只進行單點調整或者兩點調整的誤差線性調整,僅對于在整個測量范圍內輸出按同一近似偏差偏移,或者誤差呈直線規律分布的情況,誤差線性調整和誤差多點調整效果近似。因此在調整前傳感器誤差分布規律不明的情況下,建議選用誤差多點調整的方式更新傳感器的誤差調整參數,且選擇的校準點數越多,誤差調整的效果越好。另外,在文中實驗后時隔2月再次對經過誤差調整后的樣品傳感器進行檢定,其結果與初次實驗時誤差調整后的傳感器誤差結果非常接近,表明傳感器使用本文的誤差調整系統調整過后并不影響其穩定性。
1)通過測試驗證,利用文章研究的傳感器誤差自校準系統,可將傳感器誤差調整至遠小于規范要求的誤差范圍內,并且所用的時間也遠小于以往手動誤差調整的方式,可同時對8個通道的氣壓傳感器進行誤差自校準,大大提高了傳感器誤差調整工作效率和自動化程度;
2)建議在進行傳感器誤差調整時,使用誤差多點調整,以使傳感器在整個測量范圍內均獲得較好的誤差調整效果。