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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > RS-485總線標準在海氣邊界層監(jiān)測系統(tǒng)中的應用

          RS-485總線標準在海氣邊界層監(jiān)測系統(tǒng)中的應用

          作者: 時間:2009-07-15 來源:網絡 收藏

            為并接式三線制(包含一個地)接口,上只要有一個節(jié)點發(fā)生故障就有可能將“拉死”。因此,數據端口A、B與總線之間應加以隔離。在這里我們的做法是,A、B與總線之間各串接一只100mA的PTC自恢復保險,同時與地之間各跨接5V的TVS二極管,以消除線路浪涌干擾。

            需要注意的是,許多人錯誤地認為是兩線制。實際上總線的構成是一個信號差分對和一個地返回線,也許沒有這個地返回線也可以工作,但是會處于極不可靠的狀態(tài)之中。這是因為 RS-485總線在差模電壓為-7V至+12V之間才可保證通訊的正確性。如果超過此范圍,數據將丟失,端口也可能損壞。信號地線的功能是將每個節(jié)點的信號地連接到一個共同的地上,這個地的作用是用來保持共模電壓。如果沒有設計和連接地線,將影響總線的可靠性并帶來噪聲。

            系統(tǒng)中,RS-485總線通訊的波特率是9600bit/s,最長距離是100m。總線并沒有設計終端電阻。這是因為添加終端電阻的目的是減少信號的反射、吸收噪聲,但是這樣卻顯著增加了系統(tǒng)的功耗,并使系統(tǒng)設計復雜化。如果系統(tǒng)傳輸速率較高(通訊速率大于115.2K)并且是長距離的傳輸,才需要考慮終端電阻。

            系統(tǒng)軟件設計

            RS-485總線是異步半雙工的通信總線,即在某一個時刻,總線只可能呈現一種狀態(tài)(收或發(fā))。所以這種方式一般適用于主機對分機的查詢方式通信,軟件編程對系統(tǒng)的可靠性有很大影響。尤其要注意對485芯片收發(fā)控制端DE和RE的軟件設計。為了可靠的工作,在RS-485總線狀態(tài)切換時需要做適當延時,再進行數據的收發(fā)。具體的做法是在數據發(fā)送狀態(tài)下,先將控制端置“1”,在9600bit/s的波特率下,延時1ms左右的時間,再發(fā)送有效的數據,一包數據發(fā)送結束后再延時1ms后,將控制端置“0”。

            系統(tǒng)總線上的數據采集器處于主機地位,每隔3s輪詢各節(jié)點一次,輪詢到哪個節(jié)點則哪個節(jié)點上傳數據,總線的使用權完全由主機分配,各子節(jié)點不能擅自占領總路線,也不允許主動發(fā)起通信。具體實現方法是,每隔3s,數據采集器發(fā)出索要第一個節(jié)點數據命令,并等待節(jié)點回傳測量數據,超過規(guī)定的等待時間仍然沒有收到節(jié)點返回的數據,認為該路結點通訊失敗,延遲100ms后接著索要下路節(jié)點數據。值得一提的是,系統(tǒng)等待節(jié)點回傳測量數據并不是采取軟件死等的方法,而時采用分時多任務的方法來實現。具體實現方法是:在10ms定時器中斷服務程序中設一個節(jié)點通信時間計數變量,進行減計數。數據采集器發(fā)出索要數據命令后,對這個變量重新賦超時限定值,主程序判斷這個值為0時還未收到節(jié)點響應數據,才認為該節(jié)點通訊失敗。采用這種調度機制,可以大幅提高數據采集器CPU的運行效率。

            結語

            RS-485總線具有線路設計簡單、價格低廉、控制方便的特點,通過上述的軟硬件設計方法,在系統(tǒng)中得到了良好的。目前系統(tǒng)24小時連續(xù)開機,系統(tǒng)的通信始終處于正常狀態(tài),整個系統(tǒng)的性能滿足了項目的需求。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();