基于CAN總線的多用戶電能表設(shè)計
0 引言
在實際應(yīng)用中, 越來越多像學(xué)校、工廠宿舍等用戶密集場合,采用了一塊表計量多個用戶的多用戶電能表,這種新型電能表對于降低人力與管理成本是顯而易見的。然而,盡管采用通信方式種類繁多,多用戶電能表系統(tǒng)的通信不穩(wěn)定一直是難以解決的問題。在本設(shè)計中,采用CAN總線通信的方式設(shè)計新表,能滿足通信穩(wěn)定、實時準(zhǔn)確的要求;而且該表增加可透支用電的設(shè)計,解決了眾多多用戶電能表欠費即斷電,給不能及時繳費的用戶帶來不便的問題。
1 CAN 總線與電能表的特點
1.1 CAN 的優(yōu)點
CAN(controller area network)是一種應(yīng)用在生產(chǎn)現(xiàn)場、在微機化測控設(shè)備之間實現(xiàn)雙向串行多節(jié)點數(shù)字通信的現(xiàn)場總線。CAN與其他總線有明顯優(yōu)勢:1. CAN總線具有非破壞性仲裁,支持競爭,通信采用“多主對等”方式;2.CAN總線組網(wǎng)非常靈活,通信速度最大可到1Mb/s;3.CAN總線采用CRC檢驗并有錯誤處理功能,當(dāng)節(jié)點錯誤時,能自動關(guān)閉輸出,使總線上的其它節(jié)點及通信不受影響。這些特點為電能表穩(wěn)定通信提供了條件。
1.2 多用戶電能表的特點
1、電力部門上位機通過RS232 接口轉(zhuǎn)CAN 總線接入網(wǎng)絡(luò)采集各電能表。通過上位機軟件實時監(jiān)控電能表,具有分時計費、對表設(shè)置繳費管理模式和修改參數(shù)等功能。
2、該電能表有過載保護功能,當(dāng)用戶負(fù)載超過允用最大負(fù)載時,表自動對該用戶斷電。
3、該表還具有透支模式,用戶可現(xiàn)場操作,能提供定量的臨時供電,為不方便及時繳費的欠費斷電用戶提供了便利。
2 多用戶電能表硬件設(shè)計
電能表硬件系統(tǒng)結(jié)構(gòu)如圖1所示, 整個系統(tǒng)由7大部分組成: 選擇及放大電路、A/D轉(zhuǎn)換電路、斷電控制模塊、CAN通訊模塊、LED顯示、存儲器FM1608,X5045和單片機AT89C52。當(dāng)用戶用電時,對應(yīng)的CT(電流互感線器)和PT(電壓互感線器)產(chǎn)生感應(yīng)電壓小信號,小信號由選擇及放大電路選擇通道和放大后,至A/D轉(zhuǎn)換電路變?yōu)閿?shù)字信號,由單片機(AT89C52)進行處理,將數(shù)據(jù)保存至FM1608/X5045中,同時由LED顯示電量,當(dāng)有通信時,單片機將數(shù)據(jù)經(jīng)由CAN通信模塊,上傳至上位機。
圖1 系統(tǒng)總體框圖
2.1 選擇及放大電路設(shè)計
選擇及放大電路由多路選擇電路和兩級放大電路組成。單片機引腳P2.0片選一74HC377芯片控制5片CD4051芯片使能端,P0口放送一字節(jié)編碼字,字節(jié)前5位片選5個CD4051的INH,后3位控制A/B/C引腳,選擇其中一條電流或電壓感應(yīng)通路,而使其他通路處于斷開狀態(tài)。
放大電路由兩片LM358芯片級聯(lián),將所選的通路的小信號線性放大,放大到適應(yīng)A/D芯片處理的采樣信號,信號進入A/D芯片后,由模擬信號轉(zhuǎn)化為數(shù)字信號,這樣單片機才能進行數(shù)據(jù)處理。多路選擇及放大電路如圖2。
圖 2 多路選擇及放大電路
2.2 A/D轉(zhuǎn)換電路和存儲電路的設(shè)計
A/D轉(zhuǎn)換電路選用AD574A芯片,它是一種快速12位逐次比較式A/D轉(zhuǎn)換芯片,這里直接與8位AT89C52相連。不需要外接時鐘和參考電壓等電路就可以正常工作。
在用戶用電時,AD574A將感應(yīng)的模擬信號轉(zhuǎn)換為12位的數(shù)字信號,P2.2端口片選,控制AD574A的工作狀態(tài)的讀取數(shù)據(jù),P0端口通過兩次讀取A/D芯片輸出的12位數(shù)據(jù)。當(dāng)32路中某一電流和電壓感應(yīng)數(shù)據(jù)讀入MCU內(nèi)部寄存器后,和參數(shù)進行乘法運算,得出能量數(shù)據(jù),并累加在FM1608芯片相應(yīng)地址中。
FM1608芯片可萬億次以上的讀寫次數(shù),掉電數(shù)據(jù)大于10年。MCU由RD、WR對其片選,P0通過鎖存芯片,對FM1608尋址和讀寫數(shù)據(jù)操作,當(dāng)數(shù)據(jù)累加達到0.1度時重新歸零。
X5045芯片有看門狗定時器和保存數(shù)據(jù)功能,當(dāng)程序陷入死循環(huán)時,X5045 Rst引腳發(fā)出復(fù)位信號,使單片機復(fù)位重啟,保障了電能表正常工作;X5045內(nèi)部相應(yīng)地址中保存了該表的通信地址,32戶電量度數(shù)、用電模式、功率限制,還有感應(yīng)線圈的調(diào)整參數(shù)等。
開關(guān)K1-K3外接P1.2-P1.4,K1-K2設(shè)置表參數(shù);K3為用戶鍵,當(dāng)LED顯示某戶電量時,長按K3超過5秒,MCU發(fā)給該戶繼電器閉合指令,實現(xiàn)電源供電。這部分的電路圖如下圖3。
圖3 A/D轉(zhuǎn)換和存儲電路框圖
2.3 顯示電路設(shè)計
顯示電路由兩片MC1413P驅(qū)動數(shù)碼管、一片CD4051芯片、2片74HC377芯片、及4個兩位數(shù)碼管組成。單片機由X5045中依次讀取32戶的用電數(shù)據(jù),譯碼為數(shù)碼管顯示數(shù)字的字節(jié),復(fù)用P1端口輸出,經(jīng)由兩片74HC377鎖存器鎖存,再由CD4051芯片動態(tài)選擇其中一路,通過MC1413P驅(qū)動數(shù)碼管,送到a—g及DP上.對8位LED的動態(tài)掃描。前兩位數(shù)碼管顯示用戶編碼,后面六位為用戶用電總度數(shù)。
2.4 斷電控制模塊設(shè)計
該模塊控制繼電器的通斷電,斷電控制模塊主要由AT89C2051、1片74LS138、8片74HC377,32片BH3023芯片和32個繼電器組成。當(dāng)存儲電路X5045中管理通斷電控制地址的數(shù)據(jù)發(fā)生變化時,AT89C52通過TXD向斷電控制模塊發(fā)送字節(jié),斷電控制模塊根據(jù)字節(jié),通過AT89C2051引腳P3.2-P3.4編碼輸出,由74LS138片選相關(guān)74HC377芯片,同時P1口對該鎖存器輸出一個字節(jié),到達所在BH3023芯片,BH3023芯片對其管理的繼電器發(fā)送命令,繼電器做出通斷反應(yīng)。
2.5 CAN通信模塊設(shè)計
CAN通信模塊負(fù)責(zé)上位機與電能表的通信,當(dāng)上位機下達指令時,通信模塊譯碼并傳給AT89C52;AT89C52根據(jù)指令內(nèi)容,做出上傳數(shù)據(jù)、修改參數(shù)或給斷電控制模塊發(fā)指令等。
圖4 CAN模塊電路框圖
通信模塊主要由AT89C51、X5045、SJA1000、PCA82C250芯片組成。SJA1000是一個獨立的控制器,有BasicCAN和PeliCAN兩種不同的模式,SJA1000的內(nèi)部功能模塊主要有:接口
管理邏輯、接收FIFO 隊列、接收濾波器、發(fā)送緩沖器和CAN核心模塊。CAN核心模塊基于
CAN2. 0B的協(xié)議執(zhí)行對CAN幀的發(fā)送和接收。
CAN通信模塊中X5045芯片主要用途為看門狗定時器,當(dāng)AT89C51陷入死循環(huán)時,X5045發(fā)出重啟電平,使AT89C51復(fù)位重啟,保障了CAN通信正常工作。模塊框圖如圖4所示。
3 多用戶電能表軟件設(shè)計
該表軟件采用模塊化設(shè)計,*立分為計量存儲顯示、CAN 通信模塊、斷電控制模塊三大主程序。為了實現(xiàn)每個主程序的功能, 又把各主程序劃分為若干個相應(yīng)功能子程序或小模塊。主程序的作用是系統(tǒng)的初始化、中斷管理以及各功能模塊的調(diào)用等。
3.1 計量存儲顯示程序設(shè)計
計量存儲顯示模塊硬件設(shè)計比較復(fù)雜,時序要求嚴(yán)格, CPU內(nèi)程序存儲器容量有限,所以軟件采用匯編語言編制,以更好地控制時序和代碼空間。整個程序采用模塊化編程,主要包含初始化模塊、電量采集模塊、數(shù)據(jù)存儲模塊、信息顯示模塊、串行通信模塊、供電控制模塊等。
軟件設(shè)計過程中,考慮到采集數(shù)據(jù)不能出現(xiàn)錯采、漏采等現(xiàn)象以及高可靠性要求,必須采用必要的軟件抗干擾措施,如軟件陷阱、指令冗余、程序運行監(jiān)視、數(shù)據(jù)校驗、數(shù)據(jù)備份、數(shù)據(jù)寫入存儲器判斷等措施。其主程序流程設(shè)計思想如圖5所示。
圖5 計量存儲顯示主程序框圖
3.2 CAN通信模塊程序設(shè)計
CAN通信模塊主程序包括看門狗的初始化子程序(X5045_Rstdog()); 串行通信初始化子程序(Serial_init()); SJA1000 初始化程序子設(shè)計(CAN_Init()); 發(fā)送程序子設(shè)計(CAN_Send_Trans()); 以及接收程序設(shè)計子程序(CAN_Rece_Trans())。
CAN通信模塊上電或復(fù)位后,先串行通信初始化程序負(fù)責(zé)設(shè)置波特率,讀取電能表表號等;接著CAN初始化程序主要是對SJA1000寄存器的初始化,包括:定義BasicCAN、驗收屏蔽碼、總線的位速率、位周期內(nèi)的采樣點和采樣數(shù)量、管腳RX0、TX0的輸入輸出模式和配置。這些完成后,要清除SJA1000的復(fù)位請求標(biāo)志進入工作模式, SJA1000準(zhǔn)備進行報文的發(fā)送和接收;最后程序進入循環(huán)等待中。當(dāng)上位機有指令下達,引起中斷,調(diào)用中斷函數(shù)和相關(guān)的發(fā)送接收子程序。
該主程序設(shè)計采用基于Keil C的C語言進行編程,調(diào)用基本庫函數(shù)來實現(xiàn)各種功能。
3.3 斷電模塊程序設(shè)計
斷電模塊上電或復(fù)位后,程序先進行串行端口波特率初始化等,接著進入循環(huán)等待狀態(tài),串行中斷發(fā)生時,調(diào)用串行通信中斷函數(shù),由P3.0端口接收數(shù)據(jù)并解碼,對P3.2-P3.4端口賦值,接著等待74LS138反應(yīng)時間后,對P0端口賦值,再等待外部芯片反應(yīng)時間后,退出中斷函數(shù)。
結(jié)束語
隨著科學(xué)技術(shù)的發(fā)展,智能產(chǎn)品設(shè)計更注重于人性化的特點。本電能表設(shè)計形成產(chǎn)品后市場前景廣闊, 對于我國電力市場的規(guī)劃管理,小區(qū)生活品質(zhì)提升將起到積極的作用。
本文作者創(chuàng)新點:1.在多用戶電能表中采用成熟的CAN總線通信技術(shù);2.在硬件和軟件方面增加了可透支用電的人性化設(shè)計。
c語言相關(guān)文章:c語言教程
數(shù)字通信相關(guān)文章:數(shù)字通信原理
電能表相關(guān)文章:電能表原理
評論