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