新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于W77E58雙串口通信的監控系統

        基于W77E58雙串口通信的監控系統

        作者: 時間:2012-04-05 來源:網絡 收藏

        3 協議

        本系統中MR16與及上位機三方都既是發送方又是接收方,都工作在半雙工模式。MR16和上位機的發送和接收均采用查詢方式,0和1發送均采用查詢方式,接收均采用中斷方式。要想保證準確可靠,雙方除規定好字符格式和波特率外,還要定義好通信協議。通過分析和實驗,最后確定了MR16和之間通信以77E58為主。W77E58和上位機之間通信以上位機為主的“主從通信法”通信協議。下面以 W77E580和上位機為例,將這種通信協議介紹如下。

        ◆ W77E58串行口0通信協議(以W77E58為主機)
        發送(查詢方式):
        fe+fe+fe+代碼 ......請求回發相應代碼的數據包
        fe+fe+ef+代碼+高字節+低字節+校驗和 ......發送要修改的數據包
        接收(中斷方式):
        fe+fe+aa+故障代碼 ......接收故障代碼
        fe+fe+fe+代碼+高字節+低字節+校驗和
        ......接收要顯示的數據包

        ◆ 上位機通信協議(以上位機為主機)
        發送(查詢方式):
        fe+fe+站號 ......查詢相應站點
        fe+fe+fe ......請求回發要顯示的數據包
        接收(查詢方式):
        fe+fe+站號 ......接收回發校驗站號
        fe+fe+高字節+低字節+校驗和
        ......接收要顯示的數據包

        協議里的斜體為包頭碼,黑體加下劃線為命令碼,站號即為多機通信時用于選擇單相逆變器的令牌,每臺單相逆變器的站號均不相同。數據包的包頭均是 0xfe,0xfe。以W77E58串口0為例,當W77E58使用命令0xfe向MR16請求回發相應代碼的數據包后,若接收到命令0xaa,則表明有故障,然后根據收到的故障代碼進行相應的故障顯示;若收到命令0xfe,則把收到的參數值送給液晶顯示器進行顯示。

        從數據包格式可以看出,MR16和W77E58之間通信以W77E58為主,W77E58和上位機之間通信以上位機為主,MR16的發送和接收都是由W77E58串口0來控制的,而W77E58串口1的發送和接收又都是由上位機來控制的,這種主從方式是RS485標準中常采用的模式。這里通過發送包頭的辦法來實現數據同步,發送方每次都必須先發送包頭,然后再發送數據;接收方只有在正確接收包頭后才開始接收數據。當接收數據出錯或發送的數據丟失時就放棄本次接收,在下個主循環重新通信。這樣可以在一次通信出錯后自動恢復,同時避免“死機”現象的發生。

        4 軟件實現

        對該監控通信系統通用性的考慮,我們采用了模塊化設計方法,將通信程序作為主程序的一個模塊來處理。因為BCD碼是以數字“0”到“9”開頭的,而控制命令則以字母“A”到“F”開頭,在發送端將數據轉化成BCD碼發送。這樣可區分這兩類信號,在接收端分別將它們解碼處理。

        MR16通信模塊包括查詢接收程序和查詢發送程序,程序流程類似于圖3;W77E58串口1通信模塊包括中斷接收程序和查詢發送程序,程序流程與串口0相類似,這里都不再給出。

        參考文獻
        1 WINBOND electronics corp. 8-Bit Microcontroller——W77E58. 2001.7
        2 Fail-Safe, High-Speed (10Mbps), Slew-Rate-Limited RS-485/RS-422 Transceivers,MAXIM Document , 1997
        3 Advance Information. MC68HC908MR16/MC68HC908MR32?Rev. 4.0. MOTOROLA Document, 2000
        4 李朝青. PC機及單片機數據通信技術. 北京:北京航空航天大學出版社,2000


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 河西区| 正蓝旗| 凉城县| 吉隆县| 宣威市| 德令哈市| 茌平县| 荣昌县| 莆田市| 梨树县| 利津县| 京山县| 孝义市| 绵竹市| 札达县| 子洲县| 尖扎县| 宽城| 山阳县| 渑池县| 金溪县| 凌海市| 威海市| 葫芦岛市| 木里| 富民县| 县级市| 石阡县| 七台河市| 司法| 昭通市| 淮北市| 长丰县| 嘉义县| 尤溪县| 宣恩县| 永善县| 略阳县| 策勒县| 时尚| 阳高县|