<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è) > 手機與無(wú)線(xiàn)通信 > 設計應用 > RS-485的多機通信方案探究

RS-485的多機通信方案探究

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

3.4.1 數據混亂
上述方法存在數據混亂的隱患。如果網(wǎng)關(guān)節點(diǎn)與終端節點(diǎn)過(guò)程都是用N個(gè)字節進(jìn)行,那么不會(huì )出現數據紊亂問(wèn)題。但若假設網(wǎng)關(guān)節點(diǎn)發(fā)送命令用N個(gè)字節,而終端節點(diǎn)向網(wǎng)關(guān)節點(diǎn)回復數據時(shí),用M(M>N)個(gè)字節,此時(shí)總線(xiàn)上的其他終端節點(diǎn)都會(huì )收到這M個(gè)字節。此時(shí),會(huì )認為是網(wǎng)關(guān)節點(diǎn)發(fā)出的,所以只解析前N個(gè)字節的數據,那么在FIFO中就剩下了(M—N)個(gè)字節,即此時(shí)FIFO中并不為空。若網(wǎng)關(guān)節點(diǎn)此時(shí)再與其他任意一個(gè)終端節點(diǎn)時(shí),程序會(huì )默認先讀出殘留的(M—N)個(gè)字節數據,就會(huì )造成數據紊亂,網(wǎng)關(guān)節點(diǎn)再難與其他節點(diǎn)正常。
解決方法是在每次有數據進(jìn)入FIFO中后,觸發(fā)中斷,將所有的數據都讀出,而只解析前N個(gè)字節。因為在整個(gè)系統中,只有網(wǎng)關(guān)節點(diǎn)才能與終端節點(diǎn)通信,各個(gè)終端節點(diǎn)之間不可以通信,而網(wǎng)關(guān)節點(diǎn)與終端節點(diǎn)通信是N個(gè)字節。一次讀空FIFO的目的就是清空FIFO中的無(wú)效數據。
3.4.2 改進(jìn)型協(xié)議
通信的最大缺點(diǎn)就是主從式的通信方式,從機只有在收到主機的命令后才可以與之通信。而CAN總線(xiàn)的每個(gè)節點(diǎn)可以在任意時(shí)刻接收和發(fā)送數據,通過(guò)其仲裁體制,避免數據沖突,但是CAN總線(xiàn)的成本相對較高,對于實(shí)時(shí)性和安全性要求不高的場(chǎng)合,不適宜用CAN總線(xiàn)通信。
借鑒CSMA/CD協(xié)議,本文提出改進(jìn)型的通信方式。設置全局變量nesting,如果進(jìn)入一次RS-485中斷,則nesting加1。在終端需要向網(wǎng)關(guān)節點(diǎn)發(fā)送數據時(shí),置nesting為0,延遲(address×10)ms;如果總線(xiàn)上沒(méi)有數據通信,nesting為0,此時(shí)節點(diǎn)可以主動(dòng)向網(wǎng)關(guān)節點(diǎn)發(fā)送數據;否則,表示總線(xiàn)上繁忙,則繼續延遲(address)ms。
嘗試K次,K的大小根據用戶(hù)需求設定。若此終端節點(diǎn)已經(jīng)在網(wǎng)關(guān)節點(diǎn)的輪詢(xún)范圍之內,終端向網(wǎng)關(guān)發(fā)送的數據為緊急事件包,則K的值應該盡量??;若主動(dòng)發(fā)送失敗,可以等待節點(diǎn)被輪詢(xún)之時(shí),再將此數據發(fā)送出去。若此終端節點(diǎn)不在網(wǎng)關(guān)節點(diǎn)的輪詢(xún)范圍之內,是新加入的節點(diǎn),則主動(dòng)發(fā)送信息的目的是告訴網(wǎng)關(guān),自己是新節點(diǎn),需要加入總線(xiàn)系統中,此時(shí)K值應該盡量大,以保證新節點(diǎn)能夠不在上位機的協(xié)助下,自動(dòng)地加入總線(xiàn)系統中,提高系統的靈活性。終端發(fā)送流程圖如5所示。

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

e.JPG


網(wǎng)關(guān)節點(diǎn)不能輪循完一遍之后,又立即進(jìn)行下一次輪詢(xún)。這樣,總線(xiàn)上一直都會(huì )是忙碌狀態(tài)。網(wǎng)關(guān)節點(diǎn)必須在輪詢(xún)完一次之后,暫停L秒,這個(gè)空隙時(shí)間就是留給終端主動(dòng)向網(wǎng)關(guān)發(fā)送數據。L不宜過(guò)大,否則會(huì )大大降低系統整體效率,L的選取與系統共有多少終端節點(diǎn)且每個(gè)終端節點(diǎn)與網(wǎng)關(guān)節點(diǎn)通信時(shí)間有關(guān)。
使用普通模式進(jìn)行通信,優(yōu)點(diǎn)是RS-485通信應用靈活,可以支持更多的節點(diǎn)掛載在總線(xiàn)上;可以改進(jìn)RS-485通信方式,自動(dòng)地址識別模式無(wú)法監聽(tīng)總線(xiàn)是否繁忙。缺點(diǎn)是各個(gè)節點(diǎn)的工作量增大,將頻繁解析指令,系統整體效率降低。

結語(yǔ)
在使用RS-485方式通信時(shí),選取哪種方式進(jìn)行通信,需要根據不同場(chǎng)合而定。傳統的自動(dòng)地址識別模式,適用于嚴格的主從通信系統,可靠性高,系統整體效率高;而普通模式靈活性較好,但是系統整體效率會(huì )降低。所以,要因地制宜,選擇當前場(chǎng)合最適合的方式。

數字通信相關(guān)文章:數字通信原理


通信相關(guān)文章:通信原理



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

關(guān)鍵詞: 探究 方案 通信 RS-485

評論


相關(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>