• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 如何基于RS485研究總線集散式測控系統?

    如何基于RS485研究總線集散式測控系統?

    作者: 時間:2018-08-07 來源:網絡 收藏

    本文引用地址:http://www.czjhyjcfj.com/article/201808/385590.htm

    2.3通信時序

    由于RS-485通信是一種半雙工通信,發送和接受共用同一物理通道,在任意時刻只允許一臺單片機處于發送狀態,因此要求應答的單片機必須在偵聽到總線上呼叫信號己經發送完畢,并且在沒有其他單片機應答信號的情況下才能應答。如果在時序上配合不好,就會發生總線沖突,使整個系統的通信癱瘓,無法正常工作。上位機與下位機之間如何進行數據傳輸,怎么提高通信的效率和可靠性,以及對通信過程中的故障處理,幀格式的約定,都需要一套詳盡的通信協議。

    由于RS-485標準只制定了物理層電氣標準,對上層通信協議沒有規定,這給設計者提供了很大的靈活性。一套完整的通信協議既要求結構簡單,功能完備,又要求具有可擴充性與兼容性,并且盡量標準化。

    3報文通信時的簡單協議

    SLIP(Serial?Line?Intemet?Protocol)協議是串行線路網際協議,它是最早的、也是僅有的兩個串行IP協議之一。它實現了在串行通信線路上運行TCP/IP協議及其應用服務的功能,為用戶上網提供了撥號IP模式。這里由它派生出改進協議:

    (1)發送數據時的報文組裝

    ●取一個關鍵字0x55,一個報文的傳輸以0x55為引導,中間可以有任意多的字節數,最后以0xAA結束一個報文。關鍵字0x55和0xAA不參與檢驗和運算。

    ●如果傳輸的原始數據中含有0x55,則將其替換成0xFF+0x05,求校驗和時仍按一個0x55計算。

    ●如果傳輸的原始數據中含有0xAA,則將其替換成0xFF+0x0A,求校驗和時仍按一個0xAA計算。

    ●如果傳輸的原始數據中含有0xFF,則將其替換成0xFF+0x00,求校驗和時仍按一個0xFF計算。

    ●其余數據原樣發送。

    例如:當有0x55、,0x5A,0xAA,0xAS,0xFF這5個字節數據需要發送時,加上它們的算術校驗和0xFD,原始數據總共6個字節。按上述方法整合成的一個報文為:0x55,0xFF,0x05,0x5A,0xFF,0x0A,0xAS,0xFF,0x00,0xFD,0xFF,總共11 個字節。

    (2)接收數據時的報文解讀

    接受方將接收所有的數據并存入數組,主程序從數組中逐個取出數據并進行解讀,其過程如下:

    ●等待出現第一個0x55,以判斷一個數據包的開始。一旦讀到0x55,立即進行一個報文接收的初始化工作,包括數組單元清0,字節計數器清0等工作。

    ●從隊列中讀取一個數據,如果不是0x55、0xAA或0xFF,則直接將數據存入數組。

    ●如果讀到0xFF,則繼續讀其下一個數據,若是0x05,則替換回原始數據0x55;若是0x0A,則替換回原始數據xAA,若是0x00,則替換回原始數據0xFF。若都不是,則數據傳輸出錯。

    ●當讀到xAA時,一個報文結束,關串口接收中斷,串口中斷流程圖如圖4所示。

    圖4接收數據幀時的串口中斷流程圖

    4結論

    本文作者創新點:在多MCU之間中長距離通信的諸多方案中,RS-485因硬件設計簡單、控制方便、成本低廉等優點。本文完成了基于RS-485的單主機一多從機的集散式控制系統的設計,包括上位機主控端與下位機從動端,并詳細分析了其通信時序。


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 碌曲县| 班戈县| 临沂市| 平遥县| 蚌埠市| 陕西省| 无为县| 定南县| 电白县| 灵武市| 龙南县| 海宁市| 林芝县| 平江县| 乌什县| 神农架林区| 东乡县| 邢台县| 葵青区| 桂阳县| 鄂尔多斯市| 康保县| 平果县| 疏附县| 兴城市| 寿光市| 格尔木市| 沙河市| 花莲县| 明星| 西畴县| 凤山市| 崇阳县| 开封县| 鄢陵县| 肇东市| 昭通市| 镇远县| 崇礼县| 绥宁县| 武义县|