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