基于CAN總線數(shù)據(jù)采集的遠(yuǎn)程抄表系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
本文主要提出一種小區(qū)電能表自動抄表的系統(tǒng)設(shè)計(jì)方案。
隨著智能化建筑在許多國家應(yīng)運(yùn)而生。自動抄表系統(tǒng)是大力發(fā)展中的智能建筑、樓宇自動化的重要組成部分,是家庭自動化的必然,因而日益受到關(guān)注。與傳統(tǒng)抄表方式相比,智能抄表系統(tǒng)具有方便快捷、節(jié)省人力物力、提高工作效率、精確度高等優(yōu)點(diǎn)。
系統(tǒng)構(gòu)成
如圖1所示,自動抄表系統(tǒng)主要由電能表、數(shù)據(jù)采集器、集中器、數(shù)據(jù)傳輸通道和后臺管理服務(wù)器等組成;其中電能表主要是在傳統(tǒng)機(jī)械式電表基礎(chǔ)上將轉(zhuǎn)盤適當(dāng)改造,以便能將其轉(zhuǎn)動圈數(shù)被數(shù)據(jù)采集器采集轉(zhuǎn)化為電脈沖數(shù),以達(dá)到數(shù)據(jù)采樣的目的;采集器主要完成將電表用電量轉(zhuǎn)換成電脈沖信號以完成數(shù)據(jù)的采集,同時(shí)還具備將采集的數(shù)據(jù)保存、通過CAN總線傳輸給集中器轉(zhuǎn)發(fā)給后臺管理系統(tǒng)、顯示用戶剩余電度數(shù)以及根據(jù)情況切斷用戶電路等功能。數(shù)據(jù)集中器則是通過CAN總線收集各用戶電表上傳數(shù)據(jù),并通過無線GSM網(wǎng)絡(luò)傳送給后臺管理服務(wù)器系統(tǒng),同時(shí)數(shù)據(jù)集中器亦可將后臺管理服務(wù)器各項(xiàng)命令轉(zhuǎn)發(fā)給對應(yīng)電表數(shù)據(jù)收集器,并完成相應(yīng)控制。通過以上功能基本可以實(shí)現(xiàn)抄表管理收費(fèi)一體化等工作。
圖1 系統(tǒng)集成示意圖
數(shù)據(jù)采集器硬件組成
數(shù)據(jù)采集器硬件原理如圖2所示,數(shù)據(jù)采集器主要包括數(shù)據(jù)采集電路、數(shù)據(jù)保存電路以及數(shù)據(jù)傳輸CAN總線節(jié)點(diǎn)電路,同時(shí)根據(jù)其他功能擴(kuò)展(如預(yù)付費(fèi)功能)增加了剩余電度數(shù)顯示以及通過繼電器對用戶電路切斷和接通電路。
圖2 遠(yuǎn)程抄表數(shù)據(jù)采集器硬件原理圖
采集器采用單片機(jī)89C51,其內(nèi)部有4KB的ROM,128字節(jié)的RAM以及32個(gè)I/O口。P1口與串行器件24C02和顯示、繼電器電路連接。其中的顯示模塊采用串行方式進(jìn)行通信,分別采用P1.0、P1.1、P1.2模擬時(shí)鐘信號線和數(shù)據(jù)信號線。24C02用來存儲用戶電度表不同時(shí)段消費(fèi)電度數(shù)和用戶電度表采集器編號(CAN節(jié)點(diǎn)標(biāo)號)。P0口主要用來與CAN總線控制器SJA1000相連,用作數(shù)據(jù)線。監(jiān)控電路采用DS1232芯片,它是看門狗定時(shí)器,功能是上電和掉電時(shí)給89C51、CAN控制器SJA1000產(chǎn)生復(fù)位信號;看門狗對系統(tǒng)進(jìn)行監(jiān)控,防止死機(jī)不能恢復(fù)。日歷時(shí)鐘電路采用時(shí)鐘芯片PCF8583完成,由于系統(tǒng)中需要對用電實(shí)行分時(shí)按峰、谷、平不同時(shí)段進(jìn)行節(jié)計(jì)費(fèi),因此系統(tǒng)中必須建立不間斷供電(電池供電),以便提供實(shí)時(shí)鐘。
數(shù)據(jù)采集電路采用開關(guān)型霍爾傳感器A44L對加裝過小磁鐵的電表轉(zhuǎn)盤進(jìn)行將所轉(zhuǎn)的圈數(shù)轉(zhuǎn)化為數(shù)字信號,傳感器A44L工作原理如圖3a所示,集成霍爾開關(guān)是由穩(wěn)壓器A、霍爾電勢發(fā)生器(即硅霍爾片)B、差分放大器C、施密特觸發(fā)器D和OC門輸出E五個(gè)基本部分組成。(1),(2),(3)代表集成霍爾開關(guān)的三個(gè)引出端點(diǎn)。在輸入端(1)輸入電壓Vcc,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍爾發(fā)生器的兩端。根據(jù)霍爾效應(yīng)原理,當(dāng)霍爾片處于磁場中時(shí),在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會有一個(gè)霍爾電勢差VH輸出,該VH信號經(jīng)放大器放大以后送至施密特觸發(fā)器,使觸發(fā)器整形,成為方波輸送到OC門輸出。當(dāng)施加的磁場達(dá)到“工作點(diǎn)(即Bop)”時(shí),觸發(fā)器輸出高電壓(相對于地電位),使三極管導(dǎo)通,此時(shí),OC門輸出端輸出低電壓,通常稱這種狀態(tài)為“開”。當(dāng)施加的磁場達(dá)到“釋放點(diǎn)(即Brp)”時(shí),觸發(fā)器輸出低電壓,三極管截止,使OC門輸出高電壓,這時(shí)稱其為“關(guān)”態(tài),這樣兩次高電壓變換,使霍爾開關(guān)完成了一次開關(guān)動作。Bop與Brp的差值一定,此差值Bh=Bop-Brp稱為磁滯,在此差值內(nèi),Vo保持不變,因而使開關(guān)輸出穩(wěn)定可靠。其輸出特性如圖3b和圖3c所示。
圖3 霍爾傳感器工作原理及輸出特性圖
CAN總線采用一種串行數(shù)據(jù)通信協(xié)議,它是一種多主總線,數(shù)據(jù)長度為8個(gè)字節(jié),不會占用總線時(shí)間過長,從而保證了通信的實(shí)時(shí)性。CAN協(xié)議采用CRC檢驗(yàn)并可提供相應(yīng)的錯(cuò)誤處理功能,保證了數(shù)據(jù)通信的可靠性。CAN協(xié)議的一個(gè)最大特點(diǎn)是廢除了傳統(tǒng)的站地址編碼,而代之以對通信數(shù)據(jù)塊進(jìn)行編碼。采用這種方法可使網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)個(gè)數(shù)在理論上不受限制,因此非常適合遠(yuǎn)程抄表控制系統(tǒng)。CAN總線控制電路如圖2所示,主要由控制器89C51、CAN通信控制器SJA1000、CAN總線驅(qū)動收發(fā)器82C250組成,單片機(jī)89C51對CA控制器接收到的數(shù)據(jù)進(jìn)行讀取和數(shù)據(jù)發(fā)送等程序處理,為了增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力,SJA1000的TX0和RX0并不直接與82C250的TXD和RXD相連,而是通過高速光耦6N137后與82C250相連,很好地實(shí)現(xiàn)了總線上各節(jié)點(diǎn)間的電器隔離。82C250的CANH和CANL引腳各自通過一個(gè)5歐姆的電阻與CAN總線相連,起到一定的限流作用,保護(hù)82C250免受過流沖擊。CANH、CANL與地之間并聯(lián)了兩個(gè)30pF的電容,可以濾除總線上的高頻干擾并起到一定的防電磁輻射的能力。另外,兩根CAN總線輸入端與地之間分別接防雷擊管,起到一定的保護(hù)作用。
數(shù)據(jù)采集器軟件設(shè)計(jì)
主程序流程
數(shù)據(jù)采集器在整個(gè)系統(tǒng)中有喂狗、計(jì)表、時(shí)鐘校時(shí)、用戶通斷電、CAN總線數(shù)據(jù)發(fā)送和接收、數(shù)據(jù)存儲與讀取以及顯示等功能,其中喂狗、計(jì)表和數(shù)據(jù)存儲及CAN總線數(shù)據(jù)接收分別采用定時(shí)終端、計(jì)數(shù)中斷和外部中斷實(shí)現(xiàn),顯示功能則為預(yù)付費(fèi)功能而備(本文不作要求),CAN總線數(shù)據(jù)發(fā)送采用查詢方式和其他程序功能在主程序中實(shí)現(xiàn)。主程序流程如圖4所示。
圖4 主流程序圖
[!--empirenews.page--]
數(shù)據(jù)采集程序說明
數(shù)據(jù)采集是將電表轉(zhuǎn)盤每轉(zhuǎn)一圈轉(zhuǎn)化為一個(gè)周期電脈沖,單片機(jī)將此脈沖累加,從而測得電表消費(fèi)度數(shù)。為了避免停電時(shí)造成計(jì)數(shù)丟失,造成電力公司損失,每計(jì)0.1度電時(shí)便將累計(jì)數(shù)據(jù)保存于24C02中;根據(jù)電度表量程,保存電表計(jì)數(shù)數(shù)據(jù)占用3個(gè)字節(jié),前2個(gè)字節(jié)保存整數(shù)部分,后1個(gè)保存小數(shù)部分。同時(shí)考慮到24C02擦寫壽命,在24C02中開辟240字節(jié)專門用于存儲電表技術(shù)以輪回寫入,防止將數(shù)據(jù)頻繁寫入固定地址而造成損壞。單片機(jī)采用定時(shí)計(jì)數(shù)器中斷進(jìn)行數(shù)據(jù)采集,以3000r/KWH為例,每轉(zhuǎn)300圈(0.1度)采樣一次并保存,程序如下:
void count0() interrupt 1 using 2
{
//工作在16位計(jì)數(shù)定模式,每計(jì)數(shù)300個(gè)脈沖中斷一次,晶振使用12Mhz
tl0=0xD4;
th0=0xFE;
DOTCOUNT++;// 記錄小數(shù)點(diǎn)后的數(shù)據(jù),無符號字符型
if(DOTCOUNT>=10){
COUNT++; //記錄整數(shù)部分,無符號整型
DOTCOUNT=0;
}
Write24C02(COUNT, DOTCOUNT,2);//2-表示保存數(shù)據(jù)為電表度數(shù)(1-用電高峰時(shí)間段設(shè)置)
//在此自程序中完成不同時(shí)間段(不同計(jì)價(jià))分類存儲。
}
CAN總線數(shù)據(jù)收發(fā)程序說明
數(shù)據(jù)采集器數(shù)據(jù)傳輸內(nèi)容較為簡單,發(fā)送出去的數(shù)據(jù)主要包括電表度數(shù)(占5個(gè)字節(jié)),接收到的數(shù)據(jù)多為命令(1-4個(gè)字節(jié)),而CAN總線每次數(shù)據(jù)可傳輸8個(gè)字節(jié),因此每數(shù)據(jù)傳輸采用1幀即可完成。本設(shè)計(jì)采用PeliCAN工作模式(29位表示碼),利用查詢方式發(fā)送數(shù)據(jù),利用外部中斷0接收數(shù)據(jù)。
數(shù)據(jù)的發(fā)送由CAN控制器根據(jù)CAN協(xié)議規(guī)范自動完成。首先CPU必須將要發(fā)送的數(shù)據(jù)報(bào)文傳送到CAN控制器發(fā)送緩沖器中,并置位命令寄存器中的發(fā)送請求標(biāo)志,程序流程如圖5所示。
圖5 數(shù)據(jù)發(fā)送流程圖
數(shù)據(jù)接收采用外部中斷0接收,CAN控制器接收到一幀數(shù)據(jù)后,產(chǎn)生中斷觸發(fā)信號,CPU立即響應(yīng),將收到的報(bào)文接收到字節(jié)的接收緩沖器,并置位命令寄存器的釋放緩沖區(qū)標(biāo)志RRB。單片機(jī)根據(jù)接收數(shù)據(jù)進(jìn)行命令解析,并做出相應(yīng)執(zhí)行。部分程序代碼如下:
void INT0( ) interrupt 0 using 1
{
BYTE Length; // CAN 數(shù)據(jù)長度代碼
BYTE i; //下標(biāo)
bit FF //0 :標(biāo)準(zhǔn) CAN幀 1:擴(kuò)展幀
CANDR=RBF; //地址指向SJA1000接收緩沖區(qū)
ReceiveMessage[0]=CANDAT; // 讀取并保存你幀報(bào)文字節(jié)
FF=ReceiveMessage[0]&0x80;
//取出幀格式
Length=ReceiveMessage[0]&0x0F;
//取出報(bào)文長度
if(Length>0x08) Length=0x08;
ReceiveMessage[1]= CANDAT; //保存報(bào)文標(biāo)識碼1
ReceiveMessage[2]= CANDAT; //保存報(bào)文標(biāo)識碼2
if(FF){
ReceiveMessage[1]= CANDAT; //保存報(bào)文標(biāo)識碼3
ReceiveMessage[2]= CANDAT; //保存報(bào)文標(biāo)識碼4
}
For(i=0;i< Length;i++) ReceiveMessage[i+3]= CANDAT; //保存幀數(shù)據(jù)
CANCON=0x04 // 釋放接收緩沖區(qū)
}
數(shù)據(jù)集中器設(shè)計(jì)方案
數(shù)據(jù)收集器主要起到轉(zhuǎn)發(fā)后臺管理服務(wù)器和各節(jié)點(diǎn)間的數(shù)據(jù)傳輸功能,如圖6所示。CAN總線控制器模塊主要用來向各節(jié)點(diǎn)發(fā)送或接收相關(guān)數(shù)據(jù),各節(jié)點(diǎn)地址通過程序設(shè)置均已被包括在對應(yīng)報(bào)文29位表示碼中,數(shù)據(jù)集中器可以通過廣播或點(diǎn)對點(diǎn)向各用戶節(jié)點(diǎn)發(fā)送命令數(shù)據(jù)。由于用戶節(jié)點(diǎn)比較多,數(shù)據(jù)集中上傳比較多,因此需要較多的數(shù)據(jù)接收緩沖區(qū)保存,然后通過GSM轉(zhuǎn)發(fā)給后臺管理服務(wù)器完成遠(yuǎn)程數(shù)據(jù)交流,因此采用有512字節(jié)內(nèi)存的單片機(jī)STC89C51對CAN控制器和GSM模塊進(jìn)行控制。單片機(jī)控制GSM模塊在Text模式下接收手機(jī)短信,短信的收發(fā)是通過向串口以文本模式發(fā)送AT指令來實(shí)現(xiàn)的,其編碼轉(zhuǎn)換格式簡單,并有較高的轉(zhuǎn)換速率。
圖6 數(shù)據(jù)集中器示意圖
結(jié)束語
本文主要以電能表為例介紹了遠(yuǎn)程抄表系統(tǒng)數(shù)據(jù)采集和轉(zhuǎn)發(fā)的設(shè)計(jì)方案,在此基礎(chǔ)上只要稍加修改就可開發(fā)出不同抄表系統(tǒng),如預(yù)付費(fèi)電表系統(tǒng)、遠(yuǎn)程燃?xì)獬硐到y(tǒng)、遠(yuǎn)程水表抄表系統(tǒng)等。