<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 如何基于RS485研究總線(xiàn)集散式測控系統?

如何基于RS485研究總線(xiàn)集散式測控系統?

作者: 時(shí)間:2018-08-07 來(lái)源:網(wǎng)絡(luò ) 收藏

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

2.3通信時(shí)序

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

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

3報文通信時(shí)的簡(jiǎn)單協(xié)議

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

(1)發(fā)送數據時(shí)的報文組裝

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

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

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

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

●其余數據原樣發(fā)送。

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

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

接受方將接收所有的數據并存入數組,主程序從數組中逐個(gè)取出數據并進(jìn)行解讀,其過(guò)程如下:

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

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

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

●當讀到xAA時(shí),一個(gè)報文結束,關(guān)串口接收中斷,串口中斷流程圖如圖4所示。

圖4接收數據幀時(shí)的串口中斷流程圖

4結論

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


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>