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