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