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