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