基于CAN/RS485雙層網(wǎng)絡(luò)的遠(yuǎn)程抄表系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
目前我國(guó)普遍采用戶用計(jì)量?jī)x表即水表、電表、燃?xì)獗?、熱表(四表)安裝在用戶室內(nèi), 抄表人員走家串戶,手工抄表采集數(shù)據(jù),然后結(jié)算的計(jì)量收費(fèi)方式。為了有效解決入戶抄表收費(fèi)存在的諸多弊端, 我國(guó)從90年代初開始研制全電子式電能表,并且取得了一定的成果。目前已研制出多種遠(yuǎn)程抄表系統(tǒng),常用的有用基于電力線載波的抄表系統(tǒng),基于RS-485總線的抄表系統(tǒng)等。
基于電力線載波的抄表系統(tǒng),減少了系統(tǒng)由于布線帶來(lái)的成本,但是由于信號(hào)和強(qiáng)電在同一根線上傳輸,傳輸過(guò)程中不可避免地存在強(qiáng)電場(chǎng)的干擾,信號(hào)的可靠性受到影響,而且隨著傳輸距離的增大,信號(hào)的衰減較快,影響了抄表數(shù)據(jù)的可靠性;基于RS-485的抄表系統(tǒng)是較為理想的一種遠(yuǎn)程抄表系統(tǒng),它采用的是主從式的通信方式,任何時(shí)候只允許一個(gè)節(jié)點(diǎn)向網(wǎng)絡(luò)發(fā)送數(shù)據(jù),所以RS-485多采用主從結(jié)構(gòu)的命令型通信方式來(lái)防止數(shù)據(jù)通訊故障,數(shù)據(jù)通信時(shí)必須由主節(jié)點(diǎn)接收到管理主機(jī)的命令,然后由主節(jié)點(diǎn)向各個(gè)從節(jié)點(diǎn)傳達(dá)命令,從節(jié)點(diǎn)的數(shù)據(jù)依次送至主節(jié)點(diǎn),最后再由主節(jié)點(diǎn)將各從節(jié)點(diǎn)的數(shù)據(jù)發(fā)送至管理主機(jī)。從數(shù)據(jù)通信過(guò)程可以看出,如果主節(jié)點(diǎn)出現(xiàn)故障,則整個(gè)系統(tǒng)會(huì)陷入癱瘓狀態(tài)。另外,隨著居民區(qū)的用戶的不斷擴(kuò)大,要求抄表系統(tǒng)現(xiàn)場(chǎng)數(shù)據(jù)通信距離也隨之增加,由于采用485總線在9600bps下能達(dá)到的最遠(yuǎn)傳輸距離小于1200米,因而需要增加一個(gè)或多個(gè)中繼以實(shí)現(xiàn)數(shù)據(jù)的較遠(yuǎn)發(fā)送和接收。因?yàn)?85為半雙工通信,中繼器在工作中必須判斷網(wǎng)絡(luò)數(shù)據(jù)流向,所以中繼器的結(jié)構(gòu)復(fù)雜,導(dǎo)致增加了系統(tǒng)成本,降低了系統(tǒng)的可靠性。
CAN(Controller Area Network)是控制器局域網(wǎng)的簡(jiǎn)稱它是德國(guó)Bosch公司在1986年開發(fā)的一種串行數(shù)據(jù)通信總線。CAN網(wǎng)絡(luò)上的節(jié)點(diǎn)不分主從,任一節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò)上其他節(jié)點(diǎn)發(fā)送信息,通信方式靈活,利用這一特點(diǎn)可方便地構(gòu)成多機(jī)備份系統(tǒng),CAN采用非破壞性總線仲裁技術(shù),當(dāng)多個(gè)節(jié)點(diǎn)同時(shí)向總線發(fā)送信息時(shí),優(yōu)先級(jí)較低的節(jié)點(diǎn)會(huì)主動(dòng)地退出,而最高優(yōu)先級(jí)的節(jié)點(diǎn)可不受影響地繼續(xù)傳輸數(shù)據(jù),從而節(jié)省了總線沖突的仲裁時(shí)間。
針對(duì)它們各自的特點(diǎn),我們采用符合國(guó)際標(biāo)準(zhǔn)ISO 11898的CAN總線技術(shù)和目前儀表和自動(dòng)化裝置常用的RS-485總線構(gòu)成雙層網(wǎng)絡(luò)結(jié)構(gòu),這種網(wǎng)絡(luò)結(jié)構(gòu)有效地解決了系統(tǒng)的建設(shè)成本高、數(shù)據(jù)管理困難、可靠性不高以及可擴(kuò)展性能差等問(wèn)題。
2.系統(tǒng)的總體設(shè)計(jì)框架
本系統(tǒng)采用雙層網(wǎng)絡(luò)的構(gòu)架,見圖1。
500)this.style.width=500;" border="0" />
目前我國(guó)四表普遍安裝在戶內(nèi),工作環(huán)境不算惡劣,所以本系統(tǒng)低層網(wǎng)絡(luò)采用 RS-485總線。它具有結(jié)構(gòu)簡(jiǎn)單、成本低廉、對(duì)布線要求不高的特點(diǎn);而且RS-485總線在9600bps下最遠(yuǎn)傳輸距離可以達(dá)到1200米,完全能夠完成一棟樓家用控制器與集中控制器遠(yuǎn)程通訊的距離需求;再加上它們之間的通訊數(shù)據(jù)量小,數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單,所以RS-485總線能夠可靠地完成低層數(shù)據(jù)采集的需要。高層網(wǎng)絡(luò)采用兼容性能好、可靠性能高、數(shù)據(jù)傳輸速度快、傳輸距離遠(yuǎn)(在5000bps時(shí)傳輸距離10km)的CAN總線。CAN總線采用短幀結(jié)構(gòu),傳輸時(shí)間短,受干擾概率低;有CRC校驗(yàn)和出錯(cuò)標(biāo)定能力;而且具有故障節(jié)點(diǎn)自動(dòng)脫離CAN總線等功能,特別適合所處環(huán)境惡劣,數(shù)據(jù)交換較頻繁的集中控制器與管理中心計(jì)算機(jī)之間的通信。
系統(tǒng)由家用控制器、集中控制器、管理中心主機(jī)組成二級(jí)分布式監(jiān)控式系統(tǒng)。家用控制器以單片機(jī)為核心,能接收耗能表(四表)送出的脈沖信號(hào),并且進(jìn)行計(jì)數(shù)、數(shù)據(jù)處理、保存數(shù)據(jù)、發(fā)送用戶信息和顯示用戶狀態(tài)信息等功能,為了提高可靠性,配有獨(dú)立的備用電源供電。集中控制器可對(duì)一定數(shù)量的家用控制器進(jìn)行集中管理,將各家用控制器采集到的數(shù)據(jù)傳送至管理中心,同時(shí)為了保證用戶信息的安全,將采集到的數(shù)據(jù)進(jìn)行備份處理,同樣它也有備用電源可在停電時(shí)繼續(xù)給控制器供電。一般情況下,一棟樓配置一個(gè)集中控制器。小區(qū)管理中心主機(jī)通過(guò)運(yùn)行遠(yuǎn)程抄表管理軟件來(lái)處理下位機(jī)傳送來(lái)的數(shù)據(jù)信息,例如進(jìn)行統(tǒng)計(jì)、交費(fèi)管理、報(bào)表、網(wǎng)絡(luò)事故報(bào)警等操作。為了降低系統(tǒng)的設(shè)計(jì)成本,RS-485與CAN皆采用價(jià)格低廉的雙絞線連接。
3. CAN總線的通信協(xié)議
3.1 CAN總線上的電平
CAN總線具有兩種邏輯狀態(tài):隱性或顯性。在隱性狀態(tài)下VCANL和VCANH被固定于平均電壓電平,Vdiff近似為零。顯性狀態(tài)以大于最小閾值的差分電壓來(lái)表示。
顯位(0):VCANH 3.5V,VCANL 1.5V
隱位(1):VCANH 2.5V,VCANL 2.5V
3.2 總線仲裁
仲裁期間,每個(gè)進(jìn)行發(fā)送的節(jié)點(diǎn)都將其發(fā)送的位電平與監(jiān)控總線電平進(jìn)行比較,任何發(fā)送一個(gè)隱性位而監(jiān)視到一個(gè)顯性位電平的節(jié)點(diǎn)立即變成接收器,而不破壞總線上的任何信息,等到總線空閑時(shí),再重新發(fā)送報(bào)文。報(bào)文標(biāo)識(shí)符的二進(jìn)制數(shù)值越低,其優(yōu)先級(jí)越高。
3.3 CAN總線的報(bào)文格式
CAN技術(shù)規(guī)范定義了CAN報(bào)文格式。CAN定義了四種不同的幀,數(shù)據(jù)幀、遠(yuǎn)程幀、出錯(cuò)幀、超載幀。
數(shù)據(jù)幀的組成格式見圖2。
500)this.style.width=500;" border="0" />
幀起始:1個(gè)顯位,標(biāo)志幀的開始。
仲裁場(chǎng):由標(biāo)志符和遠(yuǎn)程發(fā)送請(qǐng)求位(RTR)組成。
控制場(chǎng):數(shù)據(jù)長(zhǎng)度碼和兩個(gè)保留位。
數(shù)據(jù)場(chǎng):包括0 ~8個(gè)字節(jié),每個(gè)字節(jié)8位。
CRC:CRC序列與CRC界定符。
應(yīng)答場(chǎng)(ACK):應(yīng)答間隙與應(yīng)答界定符。
遠(yuǎn)程幀的組成格式和數(shù)據(jù)幀類似包括幀起始、仲裁場(chǎng)、控制場(chǎng)、CRC和應(yīng)答場(chǎng),與數(shù)據(jù)幀相反,遠(yuǎn)程幀的RTR位是隱位,遠(yuǎn)程幀不存在數(shù)據(jù)場(chǎng)。
出錯(cuò)幀由兩個(gè)不同的場(chǎng)組成,第一個(gè)場(chǎng)由來(lái)自各站的錯(cuò)誤標(biāo)志疊加得到,第二個(gè)場(chǎng)是出錯(cuò)界定符。
超載幀包括兩個(gè)位場(chǎng),超載標(biāo)志和超載界定符。
幀間空間包括間歇場(chǎng)和總線空閑場(chǎng)。
4. 集中抄表器的硬件設(shè)計(jì)
4.1集中抄表器的硬件設(shè)計(jì)
由于底層采用的是RS-485,而網(wǎng)絡(luò)上層采用的是CAN總線協(xié)議,這就要求集中抄表器不但具有數(shù)據(jù)采集、數(shù)據(jù)備份,而且應(yīng)該具有協(xié)議轉(zhuǎn)換的網(wǎng)橋功能。CAN與RS-485總線轉(zhuǎn)換網(wǎng)橋的設(shè)計(jì)原理圖見圖3。
500)this.style.width=500;" border="0" />
網(wǎng)橋的微控制器采用TI的MSP430F449,它負(fù)責(zé)整個(gè)網(wǎng)橋的監(jiān)控任務(wù)。CAN控制器接口電路由CAN通信控制器SJA1000和CAN總線收發(fā)器82C250組成,為了提高系統(tǒng)的可靠性和抗干擾能力,可以在SJA1000和82C250之間增加光耦合電路。RS-485總線端所使用的是內(nèi)部具有光耦合的差動(dòng)收發(fā)器MAX1480。網(wǎng)橋中設(shè)計(jì)的LED,可用于網(wǎng)橋上的上電指示,總線收發(fā)狀態(tài)及故障情況指示,網(wǎng)橋的看門狗采用了一片X25045。X25045除了具有看門狗和上電復(fù)位功能外,內(nèi)部還集成了512個(gè)字節(jié)的串行EEPROM,用于保存網(wǎng)橋參數(shù)配置等信息。網(wǎng)橋的配置可通過(guò)CAN總線或RS-485總線實(shí)現(xiàn),通過(guò)網(wǎng)橋的適當(dāng)配置可以很方便的實(shí)現(xiàn)報(bào)文的過(guò)濾。
4.2集中抄表器的軟件設(shè)計(jì)
網(wǎng)橋總線數(shù)據(jù)的接受均采用中斷的方式,在主監(jiān)控中實(shí)現(xiàn)數(shù)據(jù)的發(fā)送,內(nèi)存采用FIFO機(jī)制管理。
由于RS-485總線與CAN總線是兩種不同的總線形式。相互進(jìn)行數(shù)據(jù)通訊時(shí),需要進(jìn)行協(xié)議轉(zhuǎn)換。CAN總線標(biāo)準(zhǔn)具有物理層和數(shù)據(jù)鏈路層協(xié)議,以幀為單位進(jìn)行數(shù)據(jù)通信,而且每幀均攜帶相應(yīng)的ID標(biāo)志符,而RS-485本質(zhì)上是一個(gè)物理標(biāo)準(zhǔn),以字節(jié)為單位進(jìn)行數(shù)據(jù)通信,不帶有任何其它附屬信息,其格式完全由用戶自己定義。所以在考慮設(shè)計(jì)RS-485幀格式時(shí),應(yīng)該參考CAN總線的幀格式。具體設(shè)計(jì)RS-485幀格式時(shí)可以參考以下格式:
500)this.style.width=500;" border="0" />
第一個(gè)字段為地址字段,占用一個(gè)字節(jié),作為RS-485子網(wǎng)的多機(jī)通信地址用。在RS-485網(wǎng)絡(luò)中,只能采用一主多從的方式進(jìn)行通信,網(wǎng)絡(luò)中必須有一個(gè)主控節(jié)點(diǎn),在此網(wǎng)橋?yàn)橹骺毓?jié)點(diǎn),通過(guò)查詢點(diǎn)名的方式進(jìn)行通信。第二到第四字段與CAN報(bào)文中的同名字段定義相同,實(shí)際上這三個(gè)字段是一個(gè)完整的CAN報(bào)文。網(wǎng)橋在進(jìn)行轉(zhuǎn)發(fā)時(shí)只需要將這三個(gè)字段構(gòu)成的CAN報(bào)文發(fā)送即可,使網(wǎng)橋中的協(xié)議轉(zhuǎn)換更為容易實(shí)現(xiàn)。最后的校驗(yàn)字段可用于網(wǎng)橋接受報(bào)文時(shí)的校驗(yàn),以保證數(shù)據(jù)的可靠。軟件設(shè)計(jì)流程見圖4。
500)this.style.width=500;" border="0" />
主監(jiān)控程序根據(jù)接受緩沖區(qū)中是否有報(bào)文,決定數(shù)據(jù)是否發(fā)送以及發(fā)送給誰(shuí)。如果接
受CAN子網(wǎng)數(shù)據(jù)緩沖區(qū)中有報(bào)文則向RS-485子網(wǎng)轉(zhuǎn)發(fā),如果接受RS-485子網(wǎng)數(shù)據(jù)緩沖區(qū)有數(shù)據(jù)則向CAN子網(wǎng)轉(zhuǎn)發(fā)。由于CAN報(bào)文和自定義的RS-485報(bào)文的幀格式長(zhǎng)度不同,在轉(zhuǎn)發(fā)報(bào)文時(shí),要進(jìn)行幀格式的轉(zhuǎn)換。在轉(zhuǎn)發(fā)報(bào)文后,要對(duì)相應(yīng)的FIFO緩沖區(qū)進(jìn)行參數(shù)調(diào)整。另外在主監(jiān)控程序中,如上位機(jī)對(duì)網(wǎng)橋有狀態(tài)請(qǐng)求或網(wǎng)橋本身有故障,網(wǎng)橋可以向上位機(jī)返回本機(jī)狀態(tài)。該功能便于系統(tǒng)的故障定位,管理中心計(jì)算機(jī)通過(guò)運(yùn)行遠(yuǎn)程抄表管理軟件可以提前發(fā)現(xiàn)系統(tǒng)故障,增強(qiáng)了系統(tǒng)的可維護(hù)性。
5.結(jié)束語(yǔ)
由CAN總線和RS-485總線組成的雙層網(wǎng)絡(luò)結(jié)構(gòu),有效地實(shí)現(xiàn)了戶用計(jì)量?jī)x表和遠(yuǎn)程管理計(jì)算機(jī)的有效數(shù)據(jù)通訊。它們無(wú)論在硬件連線,還是軟件編程都具有很好的兼容性。在實(shí)驗(yàn)室條件下,通過(guò)系統(tǒng)運(yùn)行檢驗(yàn)表明,系統(tǒng)運(yùn)行平穩(wěn),可靠性較高,實(shí)現(xiàn)了高效率的遠(yuǎn)程數(shù)據(jù)采集和集中管理。