一種線(xiàn)型組網(wǎng)的三線(xiàn)制數(shù)據(jù)測(cè)量方法
0 引言
現(xiàn)場(chǎng)測(cè)量中,常遇到測(cè)點(diǎn)呈線(xiàn)狀分布的情形,例如,輸電線(xiàn)路,輸油管道,河流沿線(xiàn),城市管網(wǎng)等,這類(lèi)監(jiān)測(cè)數(shù)據(jù)有如下特點(diǎn):
(1)間隔距離各不相同。例如:石油輸送管道的流量壓力,監(jiān)測(cè)點(diǎn)可1 km 一個(gè);城市路燈損壞監(jiān)測(cè)25 m一個(gè)。
(2)對(duì)傳輸速率要求不高。例如:路燈是否損壞的監(jiān)測(cè),煤礦坑道傾斜度監(jiān)測(cè),可以幾分鐘一次,河流沿線(xiàn)水質(zhì),溫度信息甚至可以每小時(shí)一次。
(3)測(cè)點(diǎn)物理順序可以作為監(jiān)測(cè)點(diǎn)的邏輯次序,只要順序檢測(cè)各點(diǎn)的數(shù)據(jù)即可,不要求某個(gè)編號(hào)的數(shù)據(jù)單獨(dú)傳送。
(4)測(cè)點(diǎn)數(shù)量眾多,例如10 km 長(zhǎng)的路燈監(jiān)測(cè)點(diǎn)就有400個(gè)。
對(duì)于這些現(xiàn)場(chǎng)常遇到的線(xiàn)狀分布測(cè)點(diǎn),如果采用總線(xiàn)式的組網(wǎng)結(jié)構(gòu),可以很好的簡(jiǎn)化布線(xiàn)形式,所有測(cè)點(diǎn)連接到總線(xiàn)上即可。實(shí)際上,已經(jīng)有很多這類(lèi)總線(xiàn)可供選擇,例如,CAN 總線(xiàn),485 總線(xiàn),IEEE1394 總線(xiàn),Profi-bus總線(xiàn),HART 總線(xiàn),甚至有自成總線(xiàn)的器件,如數(shù)字溫度傳感器DS18B20.但是這些方案都不是針對(duì)上述數(shù)據(jù)特點(diǎn)量身定做的,有的追求高可靠性,有的追求網(wǎng)絡(luò)速度,還存在成本高、協(xié)議復(fù)雜、需要逐個(gè)測(cè)點(diǎn)編址等問(wèn)題[3].所以,本文提出了一種基于單片機(jī)構(gòu)成的針對(duì)線(xiàn)狀測(cè)點(diǎn)的三線(xiàn)制組網(wǎng)方案,它具有自帶電源、協(xié)議簡(jiǎn)單、靈活多變等特點(diǎn),可以極大簡(jiǎn)化電路設(shè)計(jì)和系統(tǒng)設(shè)計(jì)。
1 系統(tǒng)構(gòu)成及原理
1.1 硬件構(gòu)成
1.1.1 系統(tǒng)總體構(gòu)成
三線(xiàn)制測(cè)量系統(tǒng)的構(gòu)成圖如圖1所示,由一個(gè)主機(jī)和若干單元構(gòu)成,三線(xiàn)分別定義為電源、信號(hào)、地線(xiàn)。主機(jī)能控制單元的供電,由開(kāi)關(guān)J1 完成,它可以是繼電器的硬觸點(diǎn),也可以是VDMOS管軟觸點(diǎn)。當(dāng)主機(jī)需要采集數(shù)據(jù)時(shí),首先閉合J1,使所有單元上電,然后通過(guò)信號(hào)線(xiàn)R/T來(lái)控制各個(gè)單元依次上傳數(shù)據(jù)。其中1,2,…,N代表N 個(gè)測(cè)量單元。
如果需要傳送模擬信號(hào),則要另外增加模擬信號(hào)總線(xiàn),單元結(jié)構(gòu)如圖2所示。
1.1.2 單元結(jié)構(gòu)
單元的內(nèi)部組成,根據(jù)測(cè)量參數(shù)不同各有所異,這里給出一個(gè)傾角測(cè)量的例子,使用傾角傳感器,原理圖如圖2所示。上電測(cè)量是自動(dòng)進(jìn)行的,完成后等待輸入端R接受啟動(dòng)脈沖,然后進(jìn)入本單元數(shù)據(jù)發(fā)送,這期間本單元與主機(jī)是直通的,當(dāng)本單元數(shù)據(jù)傳送完成后,則等待輸入端的結(jié)束脈沖,然后本單元向下單元發(fā)送啟動(dòng)脈沖,隨后本單元進(jìn)入透?jìng)?或稱(chēng)傳話(huà)筒)模式,相當(dāng)于直通,主機(jī)可以跟下個(gè)單元進(jìn)行通信,依次類(lèi)推。
在單元示結(jié)構(gòu)意圖中,還增加了2 條模擬信號(hào)線(xiàn),因?yàn)閮A角傳感器既有數(shù)字量輸出(通過(guò)SPI接口)也有模擬量輸出(通過(guò)Vf端)。如果想直接采集到單元的模擬量,則增加模擬開(kāi)關(guān)和模擬信號(hào)總線(xiàn),當(dāng)單元處于工作狀態(tài)時(shí),閉合模擬開(kāi)關(guān),把模擬量送到總線(xiàn)上。
1.2 工作原理
主機(jī)啟動(dòng)一次數(shù)據(jù)采集時(shí),首先閉合開(kāi)關(guān)J1,總線(xiàn)VCC 得電,所有單元同時(shí)上電,單元內(nèi)的單片機(jī)開(kāi)始工作。單元的工作分為待機(jī)、工作、透?jìng)?種模式。上電后,所有單元進(jìn)入待機(jī)模式,主機(jī)先向距離最近的1#單元發(fā)出啟動(dòng)脈沖,1#單元由“待機(jī)”轉(zhuǎn)為“工作”模式,它會(huì)啟動(dòng)傳感器,點(diǎn)亮指示燈L1,表示本單元是活動(dòng)的,這時(shí),主機(jī)可以與1#單元進(jìn)行直接的通信,命令1#單元的進(jìn)行測(cè)量并讀取數(shù)據(jù),完畢后,主機(jī)發(fā)送結(jié)束脈沖,命令1#單元結(jié)束活動(dòng)態(tài)。1#單元在向2#單元發(fā)送啟動(dòng)脈沖后進(jìn)入透?jìng)髂J健S谑?,收?#發(fā)出的啟動(dòng)脈沖,2#單元成為活動(dòng)單元,點(diǎn)亮指示燈L1,進(jìn)入工作模式。由于1#單元的透?jìng)髯饔?,主機(jī)可以直接跟2#單元通信,直到2#單元收到結(jié)束指令后,它啟動(dòng)下個(gè)單元,然后自己變成透?jìng)鳎@樣依次類(lèi)推,各個(gè)單元逐個(gè)變成活動(dòng)單元,主機(jī)總是透過(guò)已經(jīng)變成透?jìng)髂J降膯卧?,直接與活動(dòng)單元進(jìn)行通信,獲取數(shù)據(jù),直到全部單元都完成數(shù)據(jù)采集。
因此,在整個(gè)三線(xiàn)制網(wǎng)絡(luò)中,只有一個(gè)是活動(dòng)單元,活動(dòng)單元前面,是完成了數(shù)據(jù)采集變成透?jìng)髂J降膯卧?在活動(dòng)單元后面,是等待啟動(dòng)的待機(jī)單元。主機(jī)能夠直接與活動(dòng)單元聯(lián)系,使用靈活約定的協(xié)議和速率,是本文提出三線(xiàn)制線(xiàn)狀組網(wǎng)的一大優(yōu)勢(shì)。
主機(jī)與活動(dòng)單元通信時(shí),可以直接使用單片機(jī)的串口通信模式,在數(shù)據(jù)量小的時(shí)候,約定使用較低的波特率可以獲得較遠(yuǎn)的傳送距離。用來(lái)啟動(dòng)和停止單元工作的脈沖命令,可以有2種形式:
(1)直接使用串行通信來(lái)改變單元的工作模式,只要約定主機(jī)下發(fā)給單元的串行數(shù)據(jù)命令字即可,例如約定0X55為啟動(dòng)命令,0XAA為停止命令;(2)使用脈沖寬度控制,只要命令脈沖與通信波特率通信脈沖有明顯區(qū)別不產(chǎn)生混淆就可以,例如波特率使用1 200,啟動(dòng)和停止脈沖使用寬度為30 ms的低電平。
1.3 特點(diǎn)分析
總結(jié)上述闡述,本文提出的三線(xiàn)制線(xiàn)狀組網(wǎng)具有如下特點(diǎn):
(1)自帶電源:三線(xiàn)中有一根電源線(xiàn),所有單元可以直接授電;(2)功耗低:工作過(guò)程中,只有一個(gè)單元是活動(dòng)的,處于待機(jī)和透?jìng)髂J降膯卧?,可以關(guān)閉所轄傳感器的供電,只讓單片機(jī)帶電,如果使用MSP433 超低功耗單片機(jī),100個(gè)單元的功耗也不會(huì)超過(guò)1 mA.
(3)協(xié)議靈活:主機(jī)是通過(guò)透?jìng)鲉卧苯优c活動(dòng)單元通信,允許系統(tǒng)搭建者使用自己約定的通信協(xié)議;(4)傳送距離遠(yuǎn):主機(jī)是通過(guò)接力與每個(gè)單元通信的,只要每個(gè)單元之間能有效傳送,多個(gè)單元構(gòu)成的整個(gè)系統(tǒng)就能正常工作。
(5)擴(kuò)展方便:當(dāng)需要模式量傳送時(shí),只要再增加一條總線(xiàn),每個(gè)單元增加模擬開(kāi)關(guān),活動(dòng)單元把模擬開(kāi)關(guān)閉合,該單元的模擬量就可以上傳到總線(xiàn)上,送給主機(jī)。
(6)無(wú)需單元編號(hào):主機(jī)是順序與各個(gè)單元建立聯(lián)系的,所有單元完全一樣,沒(méi)有地址編號(hào)環(huán)節(jié),適合批量生產(chǎn)制作。[!--empirenews.page--]
2 程序編制
下面是主機(jī)和單元的程序編制流程與說(shuō)明。
主機(jī)程序流程如下:
①上電→②等待采集時(shí)間到→③啟動(dòng)供電開(kāi)關(guān)J1→④發(fā)出啟動(dòng)命令→⑤等待單元發(fā)回應(yīng)答→⑥與單元通信完成采集→⑦發(fā)出結(jié)束命令→⑧判斷單元是否全部完成采集→⑨關(guān)閉J1供電→回到②等待下次采集。
其中,在⑤如果等不到單元發(fā)回的確認(rèn),要回到斷開(kāi)J1 回到③重新開(kāi)始,如果多次重復(fù)均不成功,要做出錯(cuò)處理;在第⑧步,如果單元采集沒(méi)有完成,則回到第⑤等待下個(gè)單元的回復(fù)確認(rèn)。
對(duì)于每天只有幾次采集的低頻度情形,可使用低功耗定時(shí)振蕩器,用硬件電路控制主機(jī)的CPU供電,達(dá)到采集時(shí)刻主機(jī)才上電工作1次,大大降低功耗,適合在野外現(xiàn)場(chǎng)做數(shù)據(jù)采集。
單元程序流程如下:
①上電→②等待啟動(dòng)命令→③啟動(dòng)傳感器采集數(shù)據(jù)/點(diǎn)亮L1/與主機(jī)通信/完成數(shù)據(jù)采集→④等待結(jié)束命令→⑤向下個(gè)單元發(fā)送啟動(dòng)命令→⑥進(jìn)入透?jìng)髂J健?/p>
其中透?jìng)髂J降木幊炭驁D見(jiàn)圖3,思路如下:
(1)透?jìng)鞯暮x是既可以從接收主機(jī)方向數(shù)據(jù)傳給后面的單元,也可以從后面單元接收數(shù)據(jù)傳給主機(jī)(2)認(rèn)為常態(tài)是高電平,不停檢測(cè)左右兩邊的電平,為高時(shí)表示沒(méi)有數(shù)據(jù)傳遞。
(3)無(wú)論在哪個(gè)方向檢測(cè)到低電平,都立即把低電平傳輸?shù)搅硪粋€(gè)方向,直到這個(gè)低電平消失,便取消另一個(gè)方向的低電平。
3 傳送距離
傳送距離受透?jìng)鲉卧氲拿}沖寬度失真和單元電壓跌落兩個(gè)因素影響,下面分別討論。
3.1 透?jìng)鲉卧獙?duì)脈沖的寬度的失真
單元之間傳輸延遲如圖4 所示,命令由第N - 1 單元傳向第N 單元,在t1 時(shí)刻發(fā)出,t2 時(shí)刻結(jié)束,寬度為T(mén)1.線(xiàn)路電容等帶來(lái)脈沖的下降和上升時(shí)間,第N 單元認(rèn)定的翻轉(zhuǎn)時(shí)刻,由該單元的輸入端閾值決定,它認(rèn)定的寬度為T(mén)2.同樣道理,這個(gè)寬度傳送到N + 1 單元時(shí)被認(rèn)定為T(mén)3.T1,T2 ,T3 會(huì)有差異,造成脈寬逐級(jí)失真,超過(guò)一定限度就無(wú)法正確通信(串口專(zhuān)用11.059M 晶體用12M代替就無(wú)法工作,這時(shí)誤差僅為8%)。解決逐級(jí)失真的辦法有兩個(gè):
(1)加快脈沖上升下降時(shí)間,可在單元的信號(hào)線(xiàn)加上拉電阻。上拉電阻的最小值,要保證它灌入的電流小于單片機(jī)能吸入電流的最大值;上拉電阻的最大值,要考慮它與信號(hào)線(xiàn)電容的時(shí)間常數(shù)小于通信脈寬的10%.例如,100 m的單元距離,按照普通絞線(xiàn)100 pF/m的分布電容,C = 100 pF×100=0.01 μF,如果使用1 200波特率,信號(hào)脈寬800 μs,則時(shí)間常數(shù)應(yīng)小于80 μs,用τ = RC 計(jì)算,上拉電阻R = τ C = 80 μs /0.01μF =8 kΩ。按照經(jīng)驗(yàn)這個(gè)數(shù)值是可以用于單片機(jī)上拉的。
(2)智能判別法,透?jìng)鲉卧恢苯愚D(zhuǎn)發(fā)電平值,而是把整個(gè)字節(jié)或脈沖接收完畢后,判明是什么數(shù)據(jù)或脈沖,用約定的波特率或脈寬向下個(gè)單元轉(zhuǎn)發(fā),這樣可以保證沒(méi)有累計(jì)的脈沖失真。
實(shí)際上,由于單元的一致性,累計(jì)誤差并不大,在波特率1 200 時(shí),使用1 kΩ上拉電阻可以輕松實(shí)現(xiàn)10 m單元間距上百個(gè)單元級(jí)聯(lián)。
3.2 各個(gè)單元用電造成的供電降低和地線(xiàn)壓降
供電電壓的降低和地線(xiàn)壓降的影響分為3 個(gè)方面討論。
3.2.1 遠(yuǎn)端單元供電電壓的降低
離開(kāi)主機(jī)越遠(yuǎn),單元供電越低。設(shè)第1個(gè)單元與主機(jī)距離L1 m,每個(gè)單元距離L2 m,總單元個(gè)數(shù)為M,待機(jī)單元電流I1,工作單元電流I2,主機(jī)供電電壓為VCC,總線(xiàn)的每米電阻為r,則第N 個(gè)單元的電壓VN = VCC - L1*r*[(N - 1)*I1 + I2] - L2*r*[(N - 1)*I2 + (N - 2)(N - 1) 2].
當(dāng)L1 = 100 m,L2 = 10 m,M = 100個(gè)單元,I1 =10 μA,I2 = 10 mA,VCC = 5 V,每米電阻r = 0.01 Ω(截面1.5 mm2導(dǎo)線(xiàn)),則最尾端單元N =100得到的電壓為4.8 V,沒(méi)有超出5%波動(dòng),可以認(rèn)定這個(gè)電壓在正常范圍。
以上是100個(gè)單元1 000 m 距離的情形,具有一定的代表意義。
3.2.2 單元之間產(chǎn)生的邏輯電平差
一般認(rèn)為,在TTL 系統(tǒng)中,低電平高于0.5 V,高電平低于3.5 V會(huì)出現(xiàn)不定態(tài)。在有上拉時(shí),主要考慮低電平問(wèn)題,后級(jí)的低電平要疊加地線(xiàn)壓降作為前級(jí)的低電平。顯然,最大疊加電壓出現(xiàn)在第1個(gè)單元與主機(jī)之間,在上述參數(shù)下,這個(gè)疊加電壓約100 m 的線(xiàn)路加上活動(dòng)電流再加上100 個(gè)單元的待機(jī)電流,約為10 μA×100+10 mA=11 mA,在100 m線(xiàn)路產(chǎn)生的壓降為11 mA×0.01 m=11 mV,數(shù)值很低,可忽略不計(jì)。
3.2.3 附加模擬信號(hào)總線(xiàn)時(shí)產(chǎn)生的誤差
到達(dá)主機(jī)的模擬電壓會(huì)附加上各單元間地線(xiàn)的電壓差。有2個(gè)辦法可以解決這個(gè)問(wèn)題,一是修正法,根據(jù)采樣的單元個(gè)數(shù),減去所經(jīng)過(guò)的單元的地線(xiàn)電壓差。
例如,采樣第10個(gè)單元,疊加的電壓為100 m×0.01 Ω×11 mA+10 m×10×0.01 Ω×11 mA=22 mV,主機(jī)采樣電壓時(shí)減去這個(gè)數(shù)值可近似認(rèn)為是準(zhǔn)確電壓。二是采用雙線(xiàn)差分信號(hào)傳輸,經(jīng)過(guò)2個(gè)模擬開(kāi)關(guān)選通,不但傳送N 單元的模擬信號(hào),還傳送N 單元的地線(xiàn)到主機(jī),經(jīng)過(guò)主機(jī)的差分放大器,取出N 單元的實(shí)際模擬信號(hào),如圖2所示。
3.3 供電方式
上述示意圖中,主機(jī)供電VCC 是直接連接到各個(gè)單元的,在遠(yuǎn)距離時(shí)會(huì)產(chǎn)生電壓降??梢允褂脙煞N方案避免:一是每個(gè)單元增加一個(gè)可關(guān)斷DC/DC穩(wěn)壓模塊,被選中的單元接通模塊,只給本單元供電,這樣做的優(yōu)點(diǎn)是待機(jī)單元不啟動(dòng)DC/DC模塊,不增加任何功耗,缺點(diǎn)是成本稍高;二是采用較高電壓供電,例如12 V,每個(gè)單元設(shè)立線(xiàn)性降壓至5 V后給單片機(jī)和傳感器使用,這樣做的優(yōu)點(diǎn)是簡(jiǎn)單、低成本,缺點(diǎn)是各個(gè)單元的降壓電路在持續(xù)工作,會(huì)增加靜態(tài)電流。
4 結(jié)語(yǔ)
本文提出的組網(wǎng)方法,非常適合于線(xiàn)狀分布的測(cè)點(diǎn),方便實(shí)用,簡(jiǎn)明易用,在低速場(chǎng)合可以獲得很遠(yuǎn)的傳送距離,還能擴(kuò)展傳送模擬信號(hào),經(jīng)過(guò)多個(gè)項(xiàng)目的運(yùn)用,證明其穩(wěn)定、簡(jiǎn)單、價(jià)廉,具有一定的實(shí)用價(jià)值。