談?wù)勲妱?dòng)閥門性能檢測(cè)系統(tǒng)的實(shí)時(shí)通訊設(shè)計(jì)與實(shí)現(xiàn)(3)
3.1 通訊協(xié)議
(1) 一楨數(shù)據(jù)由1 位起始位, 8 位數(shù)據(jù)位、1位校驗(yàn)位、1 位停止位共11 位組成。
(2) 波特率為9 600 bps。電動(dòng)裝置測(cè)試系統(tǒng)的單片機(jī)的串口選用UART0 進(jìn)行數(shù)據(jù)的發(fā)送和接收, 為了得到準(zhǔn)確的波特率, ARM 單片機(jī)采用振蕩頻率為111059 2 MHz 的晶振。PC 機(jī)串口波特率通過(guò)VB 通訊控件MSComm 的Setting 屬性設(shè)置, 為保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性, 兩者的波特率必須一致。
(3) 系統(tǒng)采用異步通訊方式, 上位機(jī)通過(guò)令牌傳遞總線(token - passing bus) 方式與遠(yuǎn)程單元進(jìn)行通訊〔2〕。PC 機(jī)發(fā)送的信息為固定4 個(gè)字節(jié)。第1 個(gè)字節(jié)和第2 個(gè)字節(jié)分別為起始標(biāo)志符和遠(yuǎn)程單元的具體地址號(hào), 第3 個(gè)字節(jié)表示發(fā)送的是令牌還是命令, 第4 個(gè)字節(jié)為結(jié)束標(biāo)志符。
(4) 遠(yuǎn)程單元接收到令牌后, 對(duì)照令牌的地址號(hào)與本單元地址進(jìn)行判斷, 得知令牌是本單元的, 此時(shí)總線處于接收數(shù)據(jù)狀態(tài)。此單元開(kā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é)表示采集的測(cè)試數(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)程單元開(kāi)始上傳數(shù)據(jù)到上位PC 機(jī), 與此同時(shí)PC 機(jī)停止發(fā)送令牌并處于接收數(shù)據(jù)狀態(tài), 等到接收數(shù)據(jù)完畢并檢驗(yàn)數(shù)據(jù)合格后發(fā)送確認(rèn)命令到此遠(yuǎn)程單元, 如果沒(méi)收到數(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 開(kāi)發(fā)串行通訊程序普遍采用兩種方法: 一種是利用Windows 的API 函數(shù); 另一種是采用VB 的通訊控件MSComm。利用API 函數(shù)編寫串行通訊程序較為復(fù)雜, 需要調(diào)用許多繁瑣的API 函數(shù), 而VB610 的MSComm 通訊控件提供了標(biāo)準(zhǔn)的事件處理函數(shù)、事件和方法, 用戶不必了解通信過(guò)程中的底層操作和API 函數(shù)〔4〕, 從而比較容易、高效的實(shí)現(xiàn)了串口通信。
控件提供了兩種功能完善的串口數(shù)據(jù)接收和發(fā)送功能: 一種是查詢法, 通過(guò)Com2mEvent 的值來(lái)輪詢(polling) 事件和通訊狀態(tài),可以使用定時(shí)器和DO .Loop 程序來(lái)實(shí)現(xiàn); 另一種是事件驅(qū)動(dòng)法( Event - driven) , 利用MSComm 控件OnComm 事件來(lái)捕獲串口通訊錯(cuò)誤或事件, 并在OnComm 事件中編寫程序進(jìn)行相應(yīng)的處理〔5〕。本軟件系統(tǒng)采用了定時(shí)器來(lái)發(fā)送令牌以及接收遠(yuǎn)程單片機(jī)的回執(zhí)信息, 使PC 機(jī)作出更快的反應(yīng)。
軟件采用定時(shí)器Timer1 控件來(lái)實(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ī)開(kāi)發(fā)的一種軟件, 其語(yǔ)言類似于C 語(yǔ)言, 有很好的應(yīng)用性。
4 結(jié)語(yǔ)
該系統(tǒng)應(yīng)用在對(duì)遠(yuǎn)程設(shè)備的在線監(jiān)測(cè), 其通訊網(wǎng)絡(luò)部分運(yùn)行平穩(wěn), 數(shù)據(jù)傳輸誤碼率低, 傳輸速度符合要求, 效率高, 操作簡(jiǎn)單, 組網(wǎng)方便, 滿足生產(chǎn)現(xiàn)場(chǎng)的數(shù)據(jù)檢測(cè)和控制要求。該系統(tǒng)可廣泛應(yīng)用于高精度的工業(yè)測(cè)控和數(shù)據(jù)采集等領(lǐng)域中。
文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。