摘要:本文介紹了高精度液位變送器測試系統的系統結構和軟件設計,重點介紹了基于多線程的多串口通訊協議的開發和程序流程,實現了對液位變送器、傳感器參數的大量采集,提高了生產效率,為液位變送器的軟件補償和標定提供了可靠的保證,進而提高了液位變送器的精度和可靠性。
隨著微處理器在工業測控中的廣泛應用和性價比的降低,出現了以微處理器為核心的高精度的智能液位變送器,這就對液位變送器的生產、檢驗提出了更高的要求。為了提高精度,通過軟件和硬件結合的方法,這就需要對液位變送器和傳感器的參數進行大量的檢測,形成軟件補償用的表格和判斷變送器、傳感器精度是否滿足要求。本文就是為了滿足這一需要,建立以工業控制計算機為主的變送器測試系統。
1、系統結構
變送器測試系統整體結構如圖,所示,主要包括德魯克公司的DPI520系列標準液位發生器3臺,吉時利公司的數字萬用表2700系列1個,歐姆龍公司的可編程控制器(PLC)C2OO日1臺,智能溫箱1個,繼電器組和變送器、傳感器陣列等幾部分。由于這些智能儀表上均帶有RS232通訊口,而通常的工業控制計算機只帶有2個232通訊口,為了增加串口,我們采用MOXA公司的C168日系列的一拖八的多串口卡。
2、系統工作原理與功能
整個測試系統的工作原理為:利用工控機的人機交互界面進行設置要檢測的變送器或傳感器組、液位大小的設置和溫度,通過PLC對所選擇的變送器或傳感器順序檢測;把采集來的放在數據庫里,然后進行相應的計算。
一般情況下,對于液位傳感器在使用前,要對其進行溫漂補償和非線性校正,傳統的方法就是測試幾個溫度點下對應液位下輸出值根據經驗值選用補償用的電阻,這使得整個補償后的精度不高。要在全溫度范圍內得到高精度的補償效果,需要對傳感器在各個溫度下的參數進行大量測量,通過公式計算出補償電阻的大小,提高傳感器的精度和可靠性。本測試系統功能之一就是一次最多可以對64個傳感器進行測試,并計算出相應的補
償電阻阻值,同時也可以計算出傳感器的非線性、重復性和遲滯性,在此基礎上得到其精度,并判斷其是否滿足要求。
隨著智能變送器的出現,對變送器的溫漂補償和非線性校正的方法也有原來以單純的模擬電路調節變為以軟件調節為主。軟件調節的主要原理就是生產變送器時,對變送器在不同溫度、標準液位下的輸出進行計算,形成補償參數預先存儲到變送器的程序存儲器里,在生產現場,實際應用時,程序根據現場溫度和液位自動調用補償參數,從而完成了補償過程。本系統的功能之二就是可以對最多64臺變送器進行測試,進行相關處理后
就可以得到補償用的參數。
通過使用本系統,一方面可以提高生產和檢驗傳感器的生產效率,另一方面通過對傳感器和變送器進行補償,使得它們的精度大大提高。
3、系統軟件設計
由于系統要求多個人機交互界面對大量參數進行設置和監視,我們選用選用了MicrosoftVisuaIC++6.0開發軟件系統,操作系統為Windows2000,充分利用其強大的網絡功能和穩定性。系統的軟件設計主要人機界面的設置、多串口通訊和數據庫處理等。人機界面的設置主要是利用VC十+中的控件進行編程,數據庫部分主要是存儲數據和計算相應的參數,比較簡單,這里就不做介紹,下面重點介紹一下多串口通訊的程序設計。
3.1封裝串口類
VisuaIC++的微軟基礎類(MFC)里沒能提供通用的串口通信代碼,并且采用32位WindowsAPI函數對串口進行操作又十分繁瑣。由于系統中的大量數據傳送都采用串行口,所以對串口的操作就尤其頻繁。我們主要采取面向對象的設計方法,在VC6.O下對常用的串口操作實現一個串口類CSerialP0rt封裝了相關的屬性和方法,增加對串口操作的透明度,提高串口傳輸數據的可靠性,屏蔽了底層的細節,方便了對串口操作的編程實現,它可以對一個串口進行讀、寫和監視其運行狀況,并把在串口發生事件傳遞給主機。
為了對串口進行操作,我們在SerialPOrt.cpp源文件中定義了一系列函數:如用于初始化串口和設置串口屬性的InitP0r()函數;用于對線程進行啟動和停止的StartMonitoring()、RestartMonitoring()、StoPMonitoring()函數;用于對串口進行讀寫操作的ReeeiveChar()和WriteToPort()函數。
3.2通訊協議的實現
系統采用的智能流量計,由于是不同的廠家生產的,所使用的協議也是不同的,這就給軟件設計帶來了一定的困難。采用面向對象的方法從所有的智能儀表中抽象出一些共同的性質(如:端口號、儀表序號、下位機地址,功能描述等等),將歸納起來的共同性質組合起來形成一個智能儀表基類CC0mmen類,還定義了一組標準的儀表訪問和數據存取接口,以虛函數的形式給出,再對每一個實際的儀表派生出與自身相匹配的儀表類。對于各個智能儀表我們采用相應廠家提供的通訊協議。
3.3多線程串口通訊的實現
由于工控機要與4個以上的智能儀表進行通訊,而且要長期動態穩定的運行,是整個液位變送器檢測系統的樞紐,其可靠性、魯棒性要求較高,因此整個整個數據采集的驅動程序對各個串口讀寫協調顯得尤為重要,我們使用了多線程技術。再啟動串口數據采集驅動程序之前先根據實際儀表連接情況對儀表進行配置,設置每個串口連接的儀表類型和個數,以及基本的串口通訊參數,并進行存儲。驅動程序的主線程的任務是負責人機交互的
界面操作和各個串口操作線程的啟動與協調,線程間的通信采用Windows的消息機制。
4、結束語
系統采用了多串口擴展控制器,組建液位變送器檢測系統,通過對液位變送器、傳感器參數進行測試,計算出對傳感器補償用的電阻阻值和對變送器補償用的參數,把補償用的參數下載到變送器的程序存儲器中,提高了變送器的精度和可靠性。串口數據采集軟件設計采用了面向對象的設計(OO)方法抽象出了通用的串口類和儀表基類;利用Wind0Ws多線程和消息機制實現了多串口的通信與同步。該系統在淄博先行測控公司已穩定運行,提高了生產效率,為生產高性能的智能變送器提供了可靠的保證。