【關(guān)鍵詞】Visual Basic,串行通訊,電動裝置性能檢測系統(tǒng),遠(yuǎn)程控制
【摘要】給出了基于485 總線, 由控制中心PC 機(jī)和多個(gè)單片機(jī)控制系統(tǒng)組成的電動裝置性能檢測系統(tǒng)中的實(shí)時(shí)通信系統(tǒng), 重點(diǎn)介紹了利用VB 實(shí)現(xiàn)PC 機(jī)與多個(gè)單片機(jī)控制系統(tǒng)實(shí)時(shí)通訊程序設(shè)計(jì)方法, 實(shí)現(xiàn)了PC 機(jī)對多個(gè)遠(yuǎn)程單元的實(shí)時(shí)控制與管理。
1 引言
在許多實(shí)時(shí)監(jiān)測系統(tǒng)中, 經(jīng)常需要接收距離較遠(yuǎn)的測控點(diǎn)數(shù)據(jù), 如何快速可靠的實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程傳輸是這些監(jiān)測系統(tǒng)必須解決的問題。在監(jiān)測現(xiàn)場, 為了降低系統(tǒng)的成本, 往往采用單片機(jī)系統(tǒng)作為數(shù)據(jù)采集和記錄單元。在中央控制中心, 常常利用PC 機(jī)來完成人機(jī)會話及與監(jiān)測現(xiàn)場的通信。
本文介紹一套用于電動裝置出廠性能檢測系統(tǒng)的實(shí)用的主從式(Master/ Slave) 遠(yuǎn)程實(shí)時(shí)通訊系統(tǒng)。檢測系統(tǒng)的下位機(jī)是以32 位的ARM 單片機(jī)(L PC2214) 為CPU , 兩片CPLD ( XC95108) 擴(kuò)展I/ O 口對外圍器件如加載電機(jī)、卸載電機(jī)、光電編碼器和AD 轉(zhuǎn)換器進(jìn)行控制的單片機(jī)系統(tǒng), 并有鍵盤進(jìn)行數(shù)據(jù)輸入和液晶屏顯示各功能接口, 以及打印機(jī)打印測試合格產(chǎn)品的性能參數(shù)記錄。上位機(jī)的管理平臺則基于Visual Basic 610 。此系統(tǒng)通過對產(chǎn)品的性能參數(shù)進(jìn)行檢測, 嚴(yán)格避免不合格產(chǎn)品出廠, 提高產(chǎn)品質(zhì)量, 增強(qiáng)了產(chǎn)品的市場競爭力。
通訊系統(tǒng)以生產(chǎn)現(xiàn)場的雙絞線為通訊媒介, 上位機(jī)利用VB 610 的通訊控件MSComm 實(shí)現(xiàn)了與下位機(jī)的遠(yuǎn)程實(shí)時(shí)通訊, 下位機(jī)應(yīng)用于生產(chǎn)車間現(xiàn)場, 取得了滿意效果。
2 系統(tǒng)的結(jié)構(gòu)組成及工作原理
2.1 結(jié)構(gòu)組成
網(wǎng)絡(luò)系統(tǒng)由控制中心和多個(gè)遠(yuǎn)程單元RTU(Remote Terminal Unite) 組成(圖1) ??刂浦行挠缮衔粰C(jī)和RS232/ 485 轉(zhuǎn)換器組成, 各遠(yuǎn)程單元是以ARM單片機(jī)為核心的電動裝置性能檢測系統(tǒng)(圖2) 。
2.2 工作原理
控制中心作為系統(tǒng)的數(shù)據(jù)終端設(shè)備DTE (Da2ta Terminal Equipment) , 負(fù)責(zé)實(shí)現(xiàn)對遠(yuǎn)程電動裝置性能檢測系統(tǒng)的檢測數(shù)據(jù)進(jìn)行判別、存儲等。PC機(jī)通過485 通訊電纜與遠(yuǎn)程電動裝置性能檢測系統(tǒng)相連, 其傳輸速率為9 600 bps , 端口數(shù)據(jù)傳輸速率可根據(jù)系統(tǒng)需要設(shè)為1 200 bps~19 200 bps〔1〕。
各遠(yuǎn)程電動裝置性能檢測系統(tǒng)通過光電編碼器和AD 轉(zhuǎn)換器對現(xiàn)場設(shè)備的性能參數(shù)進(jìn)行數(shù)據(jù)采集, 采用MAX1480 芯片與PC 機(jī)進(jìn)行數(shù)據(jù)傳輸,并通過2 片CPLD 實(shí)現(xiàn)數(shù)據(jù)輸入和輸出開關(guān)量, 從而實(shí)現(xiàn)對現(xiàn)場設(shè)備的控制和參數(shù)測量。電動裝置性能檢測系統(tǒng)還有復(fù)位、故障報(bào)警及芯片正常工作檢測等系統(tǒng)。
通訊系統(tǒng)以控制中心PC 機(jī)和遠(yuǎn)程單片機(jī)控制系統(tǒng)通過485 通訊電纜以同頻異步半雙工方式進(jìn)行數(shù)據(jù)信息傳輸, PC 機(jī)通過串口發(fā)送令牌到遠(yuǎn)程單元, 遠(yuǎn)程單元收到自己的令牌后發(fā)送數(shù)據(jù)到PC機(jī), PC 機(jī)收到數(shù)據(jù)后回送正確信息。從而實(shí)現(xiàn)控制中心對遠(yuǎn)程設(shè)備的控制和數(shù)據(jù)采集。
3 實(shí)時(shí)串行通訊程序設(shè)計(jì)
3.1 通訊協(xié)議
(1) 一楨數(shù)據(jù)由1 位起始位, 8 位數(shù)據(jù)位、1位校驗(yàn)位、1 位停止位共11 位組成。
(2) 波特率為9 600 bps。電動裝置測試系統(tǒng)的單片機(jī)的串口選用UART0 進(jìn)行數(shù)據(jù)的發(fā)送和接收, 為了得到準(zhǔn)確的波特率, ARM 單片機(jī)采用振蕩頻率為111059 2 MHz 的晶振。PC 機(jī)串口波特率通過VB 通訊控件MSComm 的Setting 屬性設(shè)置, 為保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性, 兩者的波特率必須一致。
(3) 系統(tǒng)采用異步通訊方式, 上位機(jī)通過令牌傳遞總線(token - passing bus) 方式與遠(yuǎn)程單元進(jìn)行通訊〔2〕。PC 機(jī)發(fā)送的信息為固定4 個(gè)字節(jié)。第1 個(gè)字節(jié)和第2 個(gè)字節(jié)分別為起始標(biāo)志符和遠(yuǎn)程單元的具體地址號, 第3 個(gè)字節(jié)表示發(fā)送的是令牌還是命令, 第4 個(gè)字節(jié)為結(jié)束標(biāo)志符。
(4) 遠(yuǎn)程單元接收到令牌后, 對照令牌的地址號與本單元地址進(jìn)行判斷, 得知令牌是本單元的, 此時(shí)總線處于接收數(shù)據(jù)狀態(tài)。此單元開始發(fā)送信息, 發(fā)送的信息共158 個(gè)字節(jié)。第1 個(gè)字節(jié)和第2 個(gè)字節(jié)分別表示起始標(biāo)志符和命令符, 第3 個(gè)字節(jié)表示數(shù)據(jù)個(gè)數(shù), 第4 個(gè)到第157 個(gè)字節(jié)表示采集的測試數(shù)據(jù), 第158 個(gè)字節(jié)表示結(jié)束標(biāo)志符。如果地址不符, 則將令牌轉(zhuǎn)發(fā)到下一單元〔3〕。其通訊方式如圖3 所示。
3.2 遠(yuǎn)程單片機(jī)控制系統(tǒng)的串行通訊程序設(shè)計(jì)
遠(yuǎn)程ARM 單片機(jī)采用中斷方式進(jìn)行數(shù)據(jù)接收, 基于軟件ADS112 編程與上位機(jī)進(jìn)行通訊, 上位機(jī)通訊子程序流程圖以及下位機(jī)中斷子程序流程圖分別如圖4 和圖5 所示。
控制中心上位PC 機(jī)始終在循環(huán)發(fā)送令牌, 當(dāng)遠(yuǎn)程單元接收到與本機(jī)地址相同的令牌時(shí), 置接受數(shù)據(jù)標(biāo)志, 接收到自己的令牌后, 遠(yuǎn)程單元開始上傳數(shù)據(jù)到上位PC 機(jī), 與此同時(shí)PC 機(jī)停止發(fā)送令牌并處于接收數(shù)據(jù)狀態(tài), 等到接收數(shù)據(jù)完畢并檢驗(yàn)數(shù)據(jù)合格后發(fā)送確認(rèn)命令到此遠(yuǎn)程單元, 如果沒收到數(shù)據(jù)或數(shù)據(jù)不合格發(fā)送錯(cuò)誤標(biāo)志到此遠(yuǎn)程單元。如果收到的令牌與本機(jī)地址不同時(shí), 程序返回中斷入口處, 繼續(xù)執(zhí)行其它操作。這樣可保證遠(yuǎn)程單元把數(shù)據(jù)準(zhǔn)確地發(fā)送到上位機(jī)PC 機(jī)。
3.3 上位PC 機(jī)串行通訊程序設(shè)計(jì)方法
上位機(jī)利用VB 610 進(jìn)行編程, 用VB 610 開發(fā)串行通訊程序普遍采用兩種方法: 一種是利用Windows 的API 函數(shù); 另一種是采用VB 的通訊控件MSComm。利用API 函數(shù)編寫串行通訊程序較為復(fù)雜, 需要調(diào)用許多繁瑣的API 函數(shù), 而VB610 的MSComm 通訊控件提供了標(biāo)準(zhǔn)的事件處理函數(shù)、事件和方法, 用戶不必了解通信過程中的底層操作和API 函數(shù)〔4〕, 從而比較容易、高效的實(shí)現(xiàn)了串口通信。
控件提供了兩種功能完善的串口數(shù)據(jù)接收和發(fā)送功能: 一種是查詢法, 通過Com2mEvent 的值來輪詢(polling) 事件和通訊狀態(tài),可以使用定時(shí)器和DO .Loop 程序來實(shí)現(xiàn); 另一種是事件驅(qū)動法( Event - driven) , 利用MSComm 控件OnComm 事件來捕獲串口通訊錯(cuò)誤或事件, 并在OnComm 事件中編寫程序進(jìn)行相應(yīng)的處理〔5〕。本軟件系統(tǒng)采用了定時(shí)器來發(fā)送令牌以及接收遠(yuǎn)程單片機(jī)的回執(zhí)信息, 使PC 機(jī)作出更快的反應(yīng)。
軟件采用定時(shí)器Timer1 控件來實(shí)現(xiàn)令牌的循環(huán)發(fā)送。其中設(shè)置定時(shí)器響應(yīng)一次的時(shí)間為10ms( Timer11Internal = 10) 。
3.4 下位機(jī)ARM2210 系列單片機(jī)串行通訊程序設(shè)計(jì)方法
下位機(jī)利用軟件ADS112 進(jìn)行編程, 此軟件是專為ARM 單片機(jī)開發(fā)的一種軟件, 其語言類似于C 語言, 有很好的應(yīng)用性。
4 結(jié)語
該系統(tǒng)應(yīng)用在對遠(yuǎn)程設(shè)備的在線監(jiān)測, 其通訊網(wǎng)絡(luò)部分運(yùn)行平穩(wěn), 數(shù)據(jù)傳輸誤碼率低, 傳輸速度符合要求, 效率高, 操作簡單, 組網(wǎng)方便, 滿足生產(chǎn)現(xiàn)場的數(shù)據(jù)檢測和控制要求。該系統(tǒng)可廣泛應(yīng)用于高精度的工業(yè)測控和數(shù)據(jù)采集等領(lǐng)域中。
參考文獻(xiàn)
?。?)JanAxelson. 串行端口大全〔M〕. 北京: 中國電力出版社,2001
?。?)陽憲惠. 現(xiàn)場總線技術(shù)及其應(yīng)用〔M〕. 北京: 清華大學(xué)出版社,
(3)李朝青. PC 機(jī)及單片機(jī)數(shù)據(jù)通信技術(shù)〔M〕. 北京: 航空航天大學(xué)出版社, 2000.
?。?)項(xiàng)舉偉等. 利用Windows API 函數(shù)構(gòu)造C6 類實(shí)現(xiàn)串行通訊〔J〕. 測試技術(shù), 2000
(5)范逸之. Visual Basic 與RS232 串行通訊控制〔M〕. 北京:中國青年出版社, 2000.