RS-485總線標(biāo)準(zhǔn)在海氣邊界層監(jiān)測系統(tǒng)中的應(yīng)用
掃描二維碼
隨時隨地手機(jī)看文章
引言
海氣邊界層監(jiān)測系統(tǒng)的主要功能是連續(xù)、自動獲取所在區(qū)域大氣邊界層近海面30米左右的溫濕廓線數(shù)據(jù),以及風(fēng)速、風(fēng)向、氣壓和海表水溫等水文氣象要素數(shù)據(jù),并進(jìn)行實時數(shù)據(jù)存儲和顯示。
海氣邊界層監(jiān)測系統(tǒng)結(jié)構(gòu)如圖1所示。系統(tǒng)由多層風(fēng)速風(fēng)向傳感器、多層溫濕傳感器、氣壓傳感器、水溫傳感器、水位傳感器等測量結(jié)點組成傳感器測量節(jié)點。數(shù)據(jù)采集器是系統(tǒng)的核心部分,負(fù)責(zé)接收、處理、存儲各傳感器測量節(jié)點的測量數(shù)據(jù),并將測量結(jié)果傳輸至上位計算機(jī),對計算機(jī)發(fā)出的各種命令予以響應(yīng)。
由圖1可以看出,系統(tǒng)各傳感器節(jié)點和數(shù)據(jù)采集器的通訊方式均是RS-485。RS-485采用平衡差分信號傳輸,比起RS-232的非平衡傳送方式在電氣指標(biāo)、抑制共模干擾能力、傳輸距離上都有了大幅度提高。RS-485串行接口的電氣標(biāo)準(zhǔn)屬于七層OSI(開放系統(tǒng)互連)模型物理層的協(xié)議標(biāo)準(zhǔn)。依賴其性能優(yōu)異、結(jié)構(gòu)簡單、容易組網(wǎng)的優(yōu)點,RS-485總線標(biāo)準(zhǔn)得到了廣泛的應(yīng)用。
海氣邊界層監(jiān)測系統(tǒng)采用RS-485總線的優(yōu)點是所有的梯度觀測數(shù)據(jù)通過一根RS-485 通信電纜即可進(jìn)行采集,而不需要將所有的傳感器信號與數(shù)據(jù)采集器連接,具有硬件設(shè)計簡單、控制方便、成本低廉的優(yōu)點,而且便于系統(tǒng)維護(hù)和安裝。
RS-485總線節(jié)點硬件設(shè)計
RS-485總線節(jié)點的硬件圖如圖2所示。
[!--empirenews.page--]
光電隔離
由于系統(tǒng)安裝在通信設(shè)備密集的地區(qū),現(xiàn)場情況復(fù)雜,各個節(jié)點之間存在很高的共模電壓。RS-485標(biāo)準(zhǔn)采用的是差分傳輸方式,具有一定的抗共模干擾的能力,當(dāng)共模電壓為-7V~+12V之間時可以保證通訊的正確性,但是當(dāng)共模電壓超過RS-485接收器的極限范圍時,接收器將無法正常工作,嚴(yán)重時甚至?xí)p壞芯片。
通過DC/DC轉(zhuǎn)換模塊將系統(tǒng)電源和RS-485收發(fā)器的電源隔離;通過光耦將差分信號線隔離,可徹底消除共模電壓的影響。實際應(yīng)用中有以下兩種實現(xiàn)途徑:一是使用光耦、帶隔離的DC/DC電源模塊和RS-485芯片;另一種方法是使用全集成芯片,如PS1480、MAX1480等。本設(shè)計采用第一種方案,具有成本低廉,使用廣泛、芯片易于選購等優(yōu)點。
該電路使用兩片6N136實現(xiàn)系統(tǒng)與RS-485接口芯片之間的數(shù)據(jù)隔離,使得他們之間完全沒有電氣聯(lián)接,提高了電路的穩(wěn)定性和可靠性。6N136是特性優(yōu)良的光電耦合器件,具有體積小、壽命長、抗干擾性強(qiáng)、隔離電壓高(可達(dá)3500V)、高速度、與TTL邏輯電平兼容等優(yōu)點。6N136最顯著的特點是高速度,所以廣泛應(yīng)用在高速數(shù)字通信接口中。它的數(shù)據(jù)波特率可達(dá)500kbps以上,而一般的光電耦合器件如4N25等只有幾k的波特率。如果在實際應(yīng)用中要求的數(shù)據(jù)傳送速率不是很高也可以使用4N25、TLP521等普通光耦,以降低成本。
隔離電源
節(jié)點的隔離電源使用了一片IB0505LS來實現(xiàn)。它是金升陽公司生產(chǎn)的小型隔離穩(wěn)壓型高效DC/DC轉(zhuǎn)換器,它的輸入電壓為5V,輸出為穩(wěn)定的5V隔離電壓,最大輸出電流為200mA,轉(zhuǎn)換效率可達(dá)80%以上。特別適用于小電流隔離和DC電壓變換、及線路空間較小的電源系統(tǒng),用它可以實現(xiàn)RS-485節(jié)點與總線的電源隔離。
RS-485轉(zhuǎn)換
根據(jù)RS-485標(biāo)準(zhǔn)規(guī)定,接收器的接收靈敏度為±200mV,即接收端的差分電壓≥200 mV時,接收器輸出為高電平;≤-200mV時,接收器輸出為低電平;而A、B端電位差的絕對值小于200mV時,輸出為不確定狀態(tài)。一般在總線空閑、傳輸線開路或短路故障時,可能會出現(xiàn)這種狀態(tài),此時CPU的串行口接收端可能出現(xiàn)高電平也可能出現(xiàn)低電平,會導(dǎo)致串口找不到起始位,導(dǎo)致通信異常。
本設(shè)計使用MAXIM公司的用于RS-485和RS-422通信的低功耗收發(fā)器件MAX3082,它具有在總線開路、短路和空閑情況下使接收器的輸出為高電平的功能,這樣CPU的RXD電平在RS-485總線空閑時是唯一的高電平,從而達(dá)到故障保護(hù)的目的。此外,MAX3082最多允許掛接256個節(jié)點,對于節(jié)點數(shù)目要求較多的場合比較適用。
MAX3082的收發(fā)控制端是使用CPU的一個I/O來控制的。在系統(tǒng)復(fù)位時,I/O默認(rèn)都輸出高電平。如果把I/O口直接與MAX3082的收發(fā)控制端相連,會在CPU復(fù)位期間為高,從而使本節(jié)點處于發(fā)送狀態(tài)。如果此時總線上有其它節(jié)點正在發(fā)送數(shù)據(jù),則此次數(shù)據(jù)傳輸將被阻斷,嚴(yán)重者可能導(dǎo)致整個總線的癱瘓。為了保證上電時RS-485芯片始終處于接收狀態(tài),并考慮到系統(tǒng)工作的穩(wěn)定性和可靠性,每個RS-485節(jié)點的收發(fā)控制端的設(shè)計都應(yīng)當(dāng)使用反邏輯。實際實現(xiàn)方法是CPU的I/O引腳使用一片單反向器芯片74AHC1G14進(jìn)行反向后與MAX3082的收發(fā)控制端進(jìn)行相連。當(dāng)CPU的I/O引腳輸出1時,MAX3082進(jìn)入接收狀態(tài),當(dāng)CPU的I/O引腳輸出0時,MAX3082進(jìn)入發(fā)送狀態(tài)。通過增加反相器進(jìn)行控制,而不采用控制芯片引腳直接進(jìn)行控制,可以防止節(jié)點上電時對總線的干擾,從而有效地避免因節(jié)點異常情況而對整個總線系統(tǒng)造成影響。
與總線接口部分[!--empirenews.page--]
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ā))。所以這種方式一般適用于主機(jī)對分機(jī)的查詢方式通信,軟件編程對系統(tǒng)的可靠性有很大影響。尤其要注意對485芯片收發(fā)控制端DE和RE的軟件設(shè)計。為了可靠的工作,在RS-485總線狀態(tài)切換時需要做適當(dāng)延時,再進(jìn)行數(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ù)采集器處于主機(jī)地位,每隔3s輪詢各節(jié)點一次,輪詢到哪個節(jié)點則哪個節(jié)點上傳數(shù)據(jù),總線的使用權(quán)完全由主機(jī)分配,各子節(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ù)變量,進(jìn)行減計數(shù)。數(shù)據(jù)采集器發(fā)出索要數(shù)據(jù)命令后,對這個變量重新賦超時限定值,主程序判斷這個值為0時還未收到節(jié)點響應(yīng)數(shù)據(jù),才認(rèn)為該節(jié)點通訊失敗。采用這種調(diào)度機(jī)制,可以大幅提高數(shù)據(jù)采集器CPU的運(yùn)行效率。
結(jié)語
RS-485總線具有線路設(shè)計簡單、價格低廉、控制方便的特點,通過上述的軟硬件設(shè)計方法,在海氣邊界層監(jiān)測系統(tǒng)中得到了良好的應(yīng)用。目前系統(tǒng)24小時連續(xù)開機(jī),系統(tǒng)的通信始終處于正常狀態(tài),整個系統(tǒng)的性能滿足了項目的需求。