RS-485總線(xiàn)標準在海氣邊界層監測系統中的應用
RS-485總線(xiàn)為并接式三線(xiàn)制(包含一個(gè)地)接口,總線(xiàn)上只要有一個(gè)節點(diǎn)發(fā)生故障就有可能將總線(xiàn)“拉死”。因此,數據端口A(yíng)、B與總線(xiàn)之間應加以隔離。在這里我們的做法是,A、B與總線(xiàn)之間各串接一只100mA的PTC自恢復保險,同時(shí)與地之間各跨接5V的TVS二極管,以消除線(xiàn)路浪涌干擾。
需要注意的是,許多人錯誤地認為RS-485是兩線(xiàn)制。實(shí)際上RS-485總線(xiàn)的構成是一個(gè)信號差分對和一個(gè)地返回線(xiàn),系統也許沒(méi)有這個(gè)地返回線(xiàn)也可以工作,但是會(huì )處于極不可靠的狀態(tài)之中。這是因為 RS-485總線(xiàn)在差模電壓為-7V至+12V之間才可保證通訊的正確性。如果超過(guò)此范圍,數據將丟失,端口也可能損壞。信號地線(xiàn)的功能是將每個(gè)節點(diǎn)的信號地連接到一個(gè)共同的地上,這個(gè)地的作用是用來(lái)保持共模電壓。如果系統沒(méi)有設計和連接地線(xiàn),將影響系統總線(xiàn)的可靠性并帶來(lái)噪聲。
海氣邊界層監測系統中,RS-485總線(xiàn)通訊的波特率是9600bit/s,最長(cháng)距離是100m??偩€(xiàn)并沒(méi)有設計終端電阻。這是因為添加終端電阻的目的是減少信號的反射、吸收噪聲,但是這樣卻顯著(zhù)增加了系統的功耗,并使系統設計復雜化。如果系統傳輸速率較高(通訊速率大于115.2K)并且是長(cháng)距離的傳輸,才需要考慮終端電阻。
系統軟件設計
RS-485總線(xiàn)是異步半雙工的通信總線(xiàn),即在某一個(gè)時(shí)刻,總線(xiàn)只可能呈現一種狀態(tài)(收或發(fā))。所以這種方式一般適用于主機對分機的查詢(xún)方式通信,軟件編程對系統的可靠性有很大影響。尤其要注意對485芯片收發(fā)控制端DE和RE的軟件設計。為了可靠的工作,在RS-485總線(xiàn)狀態(tài)切換時(shí)需要做適當延時(shí),再進(jìn)行數據的收發(fā)。具體的做法是在數據發(fā)送狀態(tài)下,先將控制端置“1”,在9600bit/s的波特率下,延時(shí)1ms左右的時(shí)間,再發(fā)送有效的數據,一包數據發(fā)送結束后再延時(shí)1ms后,將控制端置“0”。
海氣邊界層監測系統總線(xiàn)上的數據采集器處于主機地位,每隔3s輪詢(xún)各節點(diǎn)一次,輪詢(xún)到哪個(gè)節點(diǎn)則哪個(gè)節點(diǎn)上傳數據,總線(xiàn)的使用權完全由主機分配,各子節點(diǎn)不能擅自占領(lǐng)總路線(xiàn),也不允許主動(dòng)發(fā)起通信。具體實(shí)現方法是,每隔3s,數據采集器發(fā)出索要第一個(gè)節點(diǎn)數據命令,并等待節點(diǎn)回傳測量數據,超過(guò)規定的等待時(shí)間仍然沒(méi)有收到節點(diǎn)返回的數據,認為該路結點(diǎn)通訊失敗,延遲100ms后接著(zhù)索要下路節點(diǎn)數據。值得一提的是,系統等待節點(diǎn)回傳測量數據并不是采取軟件死等的方法,而時(shí)采用分時(shí)多任務(wù)的方法來(lái)實(shí)現。具體實(shí)現方法是:在10ms定時(shí)器中斷服務(wù)程序中設一個(gè)節點(diǎn)通信時(shí)間計數變量,進(jìn)行減計數。數據采集器發(fā)出索要數據命令后,對這個(gè)變量重新賦超時(shí)限定值,主程序判斷這個(gè)值為0時(shí)還未收到節點(diǎn)響應數據,才認為該節點(diǎn)通訊失敗。采用這種調度機制,可以大幅提高數據采集器CPU的運行效率。
結語(yǔ)
RS-485總線(xiàn)具有線(xiàn)路設計簡(jiǎn)單、價(jià)格低廉、控制方便的特點(diǎn),通過(guò)上述的軟硬件設計方法,在海氣邊界層監測系統中得到了良好的應用。目前系統24小時(shí)連續開(kāi)機,系統的通信始終處于正常狀態(tài),整個(gè)系統的性能滿(mǎn)足了項目的需求。
評論