咨詢電話
ENGLISH0755-88840386發(fā)布時間:2019-12-20 09:08:51 |來源:網(wǎng)絡(luò)轉(zhuǎn)載
隨著微處理器在工業(yè)測控中的廣泛應(yīng)用和性價比的降低,出現(xiàn)了以微處理器為核心的高精度的智能壓力變送器,這就對壓力變送器的生產(chǎn)、檢驗提出了更高的要求。為了提高精度,通過軟件和硬件結(jié)合的方法,這就需要對壓力變送器和傳感器的參數(shù)進行大量的檢測,形成軟件補償用的表格和判斷變送器、傳感器精度是否滿足要求。本文就是為了滿足這一需要,建立以工業(yè)控制計算機為主的變送器測試系統(tǒng)。
1 系統(tǒng)結(jié)構(gòu)
主要包括某公司的DP1520系列標(biāo)準(zhǔn)壓力發(fā)生器3臺,某公司的數(shù)字萬用表2700系列1個,某公司的可編程控制器(PLC)C200H1臺,智能溫箱1個,繼電器組和變送器、傳感器陣列等幾部分。由于這些智能儀表上均帶有RS232通訊口,而通常的工業(yè)控制計算機只帶有2個232通訊口,為了增加串口,我們采用某公司的C168H系列的一拖八的多串口卡
2 系統(tǒng)工作原理與功能
整個測試系統(tǒng)的工作原理為:利用工控機的人機交互界面 進行設(shè)置要檢測的變送器或傳感器組、壓力大小的設(shè)置和溫度, 通過PLC對所選擇的變送器或傳感器順序檢測;把采集來的放 在數(shù)據(jù)庫里,然后進行相應(yīng)的計算。
一般情況下,對于壓力傳感器在使用前,要對其進行溫漂補償和非線性校正,傳統(tǒng)的方法就是測試幾個溫度點下對應(yīng)壓力下輸出值根據(jù)經(jīng)驗值選用補償用的電阻,這使得整個補償后的精度不高。要在全溫度范圍內(nèi)得到高精度的補償效果,需要對傳感器在各個溫度下的參數(shù)進行大量測量,通過公式計算出補償電阻的大小,提高傳感器的精度和可靠性。本測試系統(tǒng)功能之一就是一次最多可以對64個傳感器進行測試,并計算出相應(yīng)的補償電阻阻值,同時也可以計算出傳感器的非線性、重復(fù)性和遲滯性,在此基礎(chǔ)上得到其精度,并判斷其是否滿足要求。
隨著智能變送器的出現(xiàn),對變送器的溫漂補償和非線性校正的方法也有原來以單純的模擬電路調(diào)節(jié)變?yōu)橐攒浖{(diào)節(jié)為主。軟件調(diào)節(jié)的主要原理就是生產(chǎn)變送器時,對變送器在不同溫度、標(biāo)準(zhǔn)壓力下的輸出進行計算,形成補償參數(shù)預(yù)先存儲到變送器的程序存儲器里,在生產(chǎn)現(xiàn)場,實際應(yīng)用時,程序根據(jù)現(xiàn)場溫度和壓力自動調(diào)用補償參數(shù),從而完成了補償過程。本系統(tǒng)的功能之二就是可以對最多64臺變送器進行測試,進行相關(guān)處理后就可以得到補償用的參數(shù)。
通過使用本系統(tǒng),一方面可以提高生產(chǎn)和檢驗傳感器的生產(chǎn)效率,另一方面通過對傳感器和變送器進行補償,使得它們的精度大大提高。
3系統(tǒng)軟件設(shè)計
由于系統(tǒng)要求多個人機交互界面對大量參數(shù)進行設(shè)置和監(jiān)視,我們選用選用了Microsoft Visual C++6.0開發(fā)軟件系統(tǒng),操作系統(tǒng)為Windows 2000,充分利用其強大的網(wǎng)絡(luò)功能和穩(wěn)定性。系統(tǒng)的軟件設(shè)計主要人機界面的設(shè)置、多串口通訊和數(shù)據(jù)庫處理等。人機界面的設(shè)置主要是利用VC++中的控件進行編程,數(shù)據(jù)庫部分主要是存儲數(shù)據(jù)和計算相應(yīng)的參數(shù),比較簡單,這里就不做介紹,下面重點介紹一下多串口通訊的程序設(shè)計。
3.1封裝串口類
Visual C++的微軟基礎(chǔ)類(MFC)里沒能提供通用的串口通信代碼,并且采用32位Windows API函數(shù)對串口進行操作又十分繁瑣。由于系統(tǒng)中的大量數(shù)據(jù)傳送都采用串行口,所以對串口的操作就尤其頻繁。我們主要采取面向?qū)ο蟮脑O(shè)計方法,在VC6.0下對常用的串口操作實現(xiàn)一個串口類CSeriaIPort封裝了相關(guān)的屬性和方法,增加對串口操作的透明度,提高串口傳輸數(shù)據(jù)的可靠性,屏蔽了底層的細節(jié),方便了對串口操作的編程實現(xiàn),它可以對一個串口進行讀、寫和監(jiān)視其運行狀況,并把在串口發(fā)生事件傳遞給主機。
為了對串口進行操作,我們在SeriaIPort.cpp源文件中定義了一系列函數(shù):如用于初始化串口和設(shè)置串口屬性的InitPort()函數(shù);用于對線程進行啟動和停止的StartMonitoring()、RestartMonitoring()、StopMonitoring()函數(shù);用于對串口進行讀寫操作的ReceiveChar()和WriteToPort()函數(shù)。
3.2通訊協(xié)議的實現(xiàn)
系統(tǒng)采用的智能儀表,由于是不同的廠家生產(chǎn)的,所使用的協(xié)議也是不同的,這就給軟件設(shè)計帶來了一定的困難。采用面向?qū)ο蟮姆椒◤乃械闹悄軆x表中抽象出一些共同的性質(zhì)(如:端口號、儀表序號、下位機地址,功能描述等等),將歸納起來的共同性質(zhì)組合起來形成一個智能儀表基類CCommen類,還定義了一組標(biāo)準(zhǔn)的儀表訪問和數(shù)據(jù)存取接口,以虛函數(shù)的形式給出,再對每一個實際的儀表派生出與自身相匹配的儀表類。對于各個智能儀表我們采用相應(yīng)廠家提供的通訊協(xié)議。
3.3多線程串口通訊的實現(xiàn)
由于工控機要與4個以上的智能儀表進行通訊,而且要長期動態(tài)穩(wěn)定的運行,是整個變送器檢測系統(tǒng)的樞紐,其可靠性、魯棒性要求較高,因此整個整個數(shù)據(jù)采集的驅(qū)動程序?qū)Ω鱾€串口讀寫協(xié)調(diào)顯得尤為重要,我們使用了多線程技術(shù)。再啟動串口數(shù)據(jù)采集驅(qū)動程序之前先根據(jù)實際儀表連接情況對儀表進行配置,設(shè)置每個串口連接的儀表類型和個數(shù),以及基本的串口通訊參數(shù),并進行存儲。驅(qū)動程序的主線程的任務(wù)是負責(zé)人機交互的界面操作和各個串口操作線程的啟動與協(xié)調(diào),線程間的通信采用Windows的消息機制
4結(jié)束語
系統(tǒng)采用了多串口擴展控制器,組建稱重壓力變送器檢測系統(tǒng),通過對變送器、傳感器參數(shù)進行測試,計算出對傳感器補償用的電阻阻值和對變送器補償用的參數(shù),把補償用的參數(shù)下載到變送器的程序存儲器中,提高了變送器的精度和可靠性。串口數(shù)據(jù)采集軟件設(shè)計采用了面向?qū)ο蟮脑O(shè)計(OOP)方法抽象出了通用的串口類和儀表基類;利用Windows多線程和消息機制實現(xiàn)了多串口的通信與同步。該系統(tǒng)在淄博某公司已穩(wěn)定運行,提高了生產(chǎn)效率,為生產(chǎn)高性能的智能變送器提供了可靠的保證。
參考文獻
1 Michael J.Young.Visual C++6從入門到精通[M].邱仲潘等譯北 京:電子工業(yè)出版社,1999.
2 Peter W.Gofton.精通串行通信[M],王仲文等譯.北京:電子工業(yè)出版 社,1995
本文源于網(wǎng)絡(luò)轉(zhuǎn)載,如有侵權(quán),請聯(lián)系刪除