<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > RS-485的多機通信方案探究

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/153643.htm

          e.JPG


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

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

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


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



          上一頁 1 2 3 下一頁

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

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();