1.1 DDSF系列電能表設計方案概述
DDSF系列電能表的硬件電路設計由電源電路設計、計量電路設計、通訊電路設計、MCU及其它部分電路設計四大部分組成。其中核心部分是計量電路的設計,它是電能表計量準確性的關鍵部分,是電能表計量功能的體現,但是其他部分也是缺一不可的,特別是單片機控制器,它是電能表系統的靈魂,實現系統中各個部件協調控制,人機交互,多費率控制等等重要的功能。
由上圖所示,電源電路為了提高系統的抗干擾性、可靠性,分為三個獨立的電源,使計量電路,RS485通訊和MCU的電源相互隔離,達到互不影響的目的,但是它們使用同一個變壓器,所以應注意變壓器的選擇。在計量電路部分,ADE7755芯片是一個數?;旌系碾娐罚虼嗽O計較為困難,要到達良好的計量效果,要采取一定的抗干擾措施(比如數字地和模擬地應在PCB板上單點連接),特別是在對電流、電壓采樣的電路直接接在外部線路上,干擾比較嚴重。I2C總線在整個系統中占有重要的地位,它關系到LCD顯示、電量數據存儲、時間和日期的讀取等等,它是MCU與外部設備的接口,是MCU獲取信息的窗口,并且根據外部信息作出相應的判斷和動作(比如凍結時間到,MCU作出凍結電量事件發(fā)生)。在通訊電路中,電能表有兩個通訊信道(紅外信道、RS485通訊信道),在通訊發(fā)生時MCU要判斷是那個信道進行通訊,并且接收通訊幀,判斷是否正確,并執(zhí)行通訊命令。從上面可以看出MCU的作用,它是系統的控制器,起著決定性的作用。
DDSF系列電能表的軟件系統是整個電能表系統的靈魂,它是系統的神經中樞,它是整個系統的控制、指揮中心。電能表軟件系統的算法設計在整個電能表系統設計中占有重要的一個環(huán)節(jié),控制算法的優(yōu)劣對整個系統正確、可靠的運行有決定性的影響,因此在進行電能表軟件系統的算法設計時,要仔細、反復地進行設計、論證,考慮各個方面地因素,使控制算法正確、可靠。
DDSF系列電能表的軟件系統包括程序數據結構模塊、程序初始化模塊、時鐘及顯示處理模塊、通訊處理模塊和電量處理模塊五大部分組成,各個部分都其特殊的任務,在電表系統中完成它們相應的功能。
程序數據結構模塊是對程序中的數據進行分析,合理的分配數據內存,定義程序涉及的變量。它是根據整個程序的算法來制定的,同時一個好的數據結構對整個程序的寫作有非常重要的作用,因此根據電能表軟件系列實現的功能及其算法制定合理的數據結構。DDSF系列電能表的數據結構包括兩個部分:MCU內存數據結構和EEPROM數據結構。
程序初始化模塊是對整個程序進行初始化,它包括兩個部分:MCU初始化和電表各部件初始化。MCU初始化是對MCU各部件進行初始化,為各部件在程序工作時提供合適的初始狀態(tài),它包括配置I/O口工作模式、看門狗初始化、定時器初始化、鍵盤中斷初始化、串口中斷初始化、比較器中斷初始化等等。電表各部件初始化是對電能表系統各部件進行配置工作狀態(tài),初始化它們的工作方式,為程序工作提供電表部件初始狀態(tài),它包括指示燈初始化、LCD顯示初始化、實時時鐘初始化、電量恢復、通訊信道、歷史電量處理等等部件的初始化。
時鐘、顯示處理模塊是程序系統中進行時鐘和顯示處理的模塊,是通過對當前時鐘的比較,對有關時鐘事件是否發(fā)生進行判斷,程序對時鐘事件作出處理,可以說時鐘就是這個程序模塊的節(jié)奏,告訴程序哪個事件在什么時候發(fā)生。比如說顯示數據刷新事件,它是1S的時間對顯示數據進行刷新,當時間間隔1S時,顯示數據刷新事件發(fā)生,程序進行顯示數據刷新處理。它包括時鐘及其相關處理、顯示事件處理、電能反向時間事件處理、費率和電量結算事件處理等等部分組成的。
通訊處理模塊是電能表系統進行外界通訊的模塊,它是依照國標的通訊規(guī)程編寫的一個軟件模塊,它包括通訊接收處理、通訊命令處理及通訊發(fā)送處理,當通訊接收到一幀正確的數據時,通知程序通訊命令處理事件發(fā)生,執(zhí)行通訊命令解釋及執(zhí)行命令操作,當命令要求發(fā)生通訊數據時,通訊發(fā)送事件發(fā)送,進行通訊數據發(fā)送。同時由于通訊信道有紅外信道和RS485信道兩個信道,在通訊時應判斷是哪一個信道進行通訊的。
電量處理模塊是電能表系統中實現電能計量的程序,是實現其基本功能的程序,這部分程序也是電能表軟件系統中最為關鍵的程序,其計量的正確性,可靠性及電量數據儲存的正確性是關乎到整個系統的成敗,關系到全局,因此這部分計量的算法要設計正確、合理。它包括MCU上電對各電量值的恢復、對各電量脈沖的累計、對各電量小數整數累計、及對電量掉電保護等程序,在電量脈沖累計一定值是,電量小數加1事件發(fā)生,當電量小數累計一定值時,電量整數加1事件發(fā)生,執(zhí)行電量整數累計程序。
由上可知,DDSF系列電能表的軟件系統是由五大部分組成的,每一個部分完成其特定的任務,而且是缺一不可的,同時各個模塊之間存在著一定的聯系,存在著數據交換的可能,它們不是相互獨立的,而是相互聯系、統一,形成整個電能表軟件系統。
1.2 DDSF系列電能表硬件系統
1.2.1 電源電路部分
DDSF系列電能表的電源電路分為三個部分:電量計量電源電路、RS485通訊電源電路、MCU及其相關部分電源電路。電源電路提供系統運行的能量,所以在進行電源電路設計時保證原理正確的前提下考慮電源容量并保證一定的工程余量,同時計算各個元件的電流、電壓值,選擇合適的元件參數。
以上兩個電源電路是一種標準設計的電源電路,通過降壓、整流、穩(wěn)壓和濾波四個環(huán)節(jié),得到5V的直流電壓。整個電源電路是以78L05這種穩(wěn)壓芯片進行設計的,是一種串聯的穩(wěn)壓電路。
1.a部分電路原理說明
通過電網輸入220V的交流電源,通過變壓器TR1降壓,在5、6端產生12V的交流電源,通過AB1全波整流集成塊及C1、TR2、C2、E1濾波(C1、TR2、C2構成差分濾波網絡),產生一個帶有一定脈動分量的直流電。在通過并聯穩(wěn)壓集成電路LM317,同時調整R1、R2的比值,得到所需電壓值(3.9V)。
2.b部分電路原理說明 LPC900系列單片機存在著一個問題:在電源上電的時候,如果上電緩慢時,單片機出現復位錯誤,程序不能正確運行。為了解決這個問題,采用快速上電的方法,利用MAX809電源監(jiān)控芯片,當上電電源達到電壓門檻時,T1三極管導通,開通電源通道,達到MCU快速上電的目的,VCC的電壓為V3.9減0.7V得到3.3V電壓值。
3.c部分電路原理說明
由于有后備電池的原因,要解決實時時鐘芯片電源的問題,采取的原則是:電網正常供電時,從電網吸收電能,但是不能進行對電池充電,電網停電時,電池只對時時鐘芯片供電。
采用二極管或邏輯的方式,對V3.9和電池電壓進行選擇。
當電網正常供電時,V3.9的電壓為3.9V,大于電池電壓,由于VD1器件的作用,VDD選擇V3.9電源供電。當電網停電時,由于VD1器件的作用,VDD選擇電池電源供電,同時電池通過R7限流對時鐘芯片供電。
電路中有電池電壓檢測網絡,檢測網絡有R5、R6和C10組成的,由于R5、R6遠遠大于R7,所以可以忽略R7的影響,檢測網絡的電流幾乎等于零,也不消耗電池的能量。
1.2.2 計量電路部分
DDSF系列電能表的計量電路部分主要是針對ADE7755計量芯片的電路設計,主要包括:抗混濾波器的設計、電壓通道電路設計、電流通道電路設計、其它電路部分設計。
從電路理論分析,電壓通道電路實際上是一個分壓電路,通過電阻分壓,確保ADE7755電壓通道中信號電壓在其工作的范圍內。由于電能表工作的實際環(huán)境和元件參數的誤差,在電壓衰減網絡中,設計一個電阻調整網絡,可在一定范圍內調整信號電壓的大小,校驗ADE7755電能輸出脈沖的頻率,調整電能表的精度,因此電壓衰減網絡又稱校驗網絡。
電流通道電路中,是一個PGA可編程的差動運算放大電路,外圍電路設計主要是抗混濾波器的設計,R27C19和R28C21組成兩個一階低通濾波器,濾除電流通道的高頻分量。C20是通過JL1跳線來選擇是否作用于系統,它是補償電流信號本身不平衡造成ADE7755計量電能出現比較大的誤差,人為造成不平衡,使得系統達到平衡的目的。
DVDD和AVDD通過C22、R23、R29組成的濾波電路連接在一起,同時AGND和DGND通過電感連接在一起,濾除干擾。選擇內部基準電源,在基準電源輸出端加上一個濾波電容C24,加強內部基準不受外界干擾。ADE7755芯片的接口電路主要是CF腳的輸出脈沖和REVP腳的電能方向指示,它們是通過光藕器件和MCU電路進行隔離輸出的。
1.2.3 通訊電路部分
DDSF系列電能表有兩個通訊通道,一個是RS485通訊信道,另一個是。RS485通訊信道是用來和其他電能表組成RS485通訊網絡,實現遠程網絡抄表;紅外通訊信道是利用紅外線為媒介,利用掌上抄表器進行抄表的,兩個信道都是通過MCU的UART進行通訊的,判斷通訊信道是一個問題。DDSF系列電能表通訊電路由紅外通訊電路、RS485通訊電路、通訊信道切換電路組成,紅外通訊電路完成紅外通訊信道通訊的功能,RS485通訊電路完成RS485通訊的功能,通訊切換電路判斷當前通訊信道的功能。
紅外通訊電路的接收電路是由U2紅外接收集成電路完成的,當外界有38k頻率的紅外信號時,U8通過內部接收電路的作用,在1腳輸出低電平,否則為高電平。紅外通訊電路的發(fā)射電路中,進行紅外通訊時,HW38K端輸入38K頻率的脈沖信號,當TXD=1時,T3截止,HD1停止發(fā)射紅外信號;當TXD=0時,T3導通,HD1加上38K頻率的脈沖信號,發(fā)射紅外信號,其實相當于對TXD信號進行38k脈沖調制。
RS485通訊電路通過3個光藕器件對單片機電路和RS485總線電路進行隔離,提高系統的干干擾能力,電路中的TVS1管并聯在RS485總線A、B線兩端,對電路進行瞬態(tài)保護作用,R46和R47為偏置電阻,進行網絡失效保護。但是這個電路沒有匹配電阻,在通訊總線設計中應根據實際情況進行匹配電路的設計。RS485通訊電路中JP2接口是要進行瞬變脈沖和靜電干擾的,在設計和選擇485轉換芯片要特別注意這個問題。
通訊信道的切換電路是判斷當前的通訊信道,發(fā)射通訊信道由MCU主控器保證,通訊信道切換電路主要進行接收通訊信道的判斷。
發(fā)射通訊時,當RS485通訊電路中CTRL485=1不允許發(fā)送,保證選擇紅外通道發(fā)送;當紅外通訊電路中HW38K=1時,T2截止,不允許紅外發(fā)送,保證選擇RS485通道發(fā)送。
接收通訊時,通過CD4066電子開關切換通道。當COMMSEL=0時,U4A、U4B開關斷開,HWCTRL由于R48上拉到V3.9電源為高電平,U4C開關接通,紅外通道RXDHW和RXD連通,選擇紅外通道;當COMMSEL=1時,U4A、U4B開關接通,HWCTRL為低電平,U4C開關斷開,RS485通道的RXD485和RXD連通,選擇RS485通道。通道切換采用搶占式,默認通道為紅外通道,當RS485接收通訊開始時,起始位為0,利用MCU鍵盤中斷功能切換為RS485通訊信道。
1.2.4 MCU及其它相關電路部分
MCU是選用89LPC931或922兩種單片機,這部分電路由LCD顯示電路、實時時鐘電路、存儲器和溫度檢測電路、ICP電路、掉電和電池檢測電路等等組成。
實時時鐘選用8025時鐘芯片,它是一個I2C總線接口的芯片,MCU通過I2C總線讀寫8025芯片的寄存器,設置芯片的工作狀態(tài),校正當前時間和日期,同時可以設置報警時間、日期,它的I2C地址是64H。8025時鐘芯片是一種低功耗、寬電壓范圍工作的芯片,在工作電源3V時,工作電流為0.48uA,在1.7V~5.5V正常工作,同時能夠檢測晶振的情況和微調晶振的頻率。8025芯片應設置輸出1S中的時鐘脈沖信號,為了保證時間和日期工作的連續(xù)性,應保證電源不斷電。
檢測溫度芯片選用LM75溫度檢測芯片,它是一個I2C總線接口的芯片,它內部是一個11位的AD溫度轉換器,內部包含四個數據寄存器:配置寄存器、溫度寄存器、上限溫度寄存器、下限溫度寄存器,MCU通過指定地址指針的方式來操作指定寄存器。LM75工作電壓范圍是3.0~5.5V,工作電流典型值為250uA,溫度寄存器的內容是補碼的形式存儲的,每個數字量代表0.5℃,芯片的I2C地址是90H。
存儲器選用支持I2C總線可擦寫E2PROM,型號是24WC08,存儲容量為8K位,1K字節(jié),10位地址線,其中最高2位地址是I2C地址A1A0位,因此在A2=0時,它的I2C地址為A0H、A2H、A4H,A6H。工作電壓范圍是1.8V~6.0V,采用低功耗CMOS技術,同時具有寫保護功能,執(zhí)行寫操作時,在主器件產生停止信號后開始內部數據的擦寫,在內部擦寫過程中,器件不應答主器件的請求,因此在執(zhí)行存儲器寫操作之后,應延時一定的時間再對存儲器進行操作。
In Circuit Programing是在電路編程,簡稱ICP,是一種串行編程方式,其通過一根時鐘線與一根數據線串行傳輸編程指令及數據,P89LPC9××芯片在ICP的過程種需要用到5個腳:PCL,PDA,Reset,VDD和VSS。ICP功能完全由MCU硬件完成,不需要外部引導。在ICP接口電路設計當中,應注意是否有外界電路對ICP有影響,否則應斷開其連接。
掉電檢測電路是一個R8、R9組成的分壓電路,C12用來濾波作用,提高抗干擾性能。通過MCU內部比較器,比較器內部參考電壓和PWRCHK腳的電壓比較,當電源電壓下降到一定時,MCU比較器發(fā)生翻轉,發(fā)生掉電事件。當發(fā)生掉電,由于電容的存在,MCU的電源不會馬上消失,這時MCU應執(zhí)行保護數據程序。
指示燈電路包括峰指示、谷指示、通訊指示,當MCU對應腳輸出低電平時,電流經限流電阻,LED,流入MCU腳,指示燈亮。
1.3 DDSF系列電能表軟件系統
1.3.1 DDSF系列電能表主程序算法分析
DDSF系列電能表軟件系統主程序在電能表整個程序當中是最重要的部分,它是電能表的執(zhí)行部分。它包括整個程序初始化部分、顯示刷新處理部分、日期時間及與其相關操作處理部分、通訊幀命令處理部分、電量運算及儲存部分、電量結算處理部分以及其他事件處理部分。整個程序是通過查詢方式執(zhí)行的,通過查詢電表事件發(fā)生的條件情況,判斷電能表事件是否發(fā)生,來執(zhí)行相應的操作,這種執(zhí)行方式只要保證CPU的執(zhí)行速度足夠快,是能夠保證事件響應的時效性的。
在電量處理模塊算法中,它包含電量小數事件和電量整數事件,當對應類型(總峰平谷反)電量脈沖累計到0.01kWh,電量小數事件發(fā)生,電量小數加1及保存電量小數數據,當電量小數發(fā)生進位時,電量整數事件發(fā)生同時應進行電量整數部分及相關事件處理。
在時鐘和顯示處理模塊算法中,它包含秒事件、分鐘事件、半小時事件及小時事件,秒事件是通過MCU中RTC定時器定時1S來激發(fā)的。
在通訊處理模塊算法中,它包含通訊接收幀事件和通訊發(fā)送幀事件,當程序查詢到通訊接收幀完標志置位時,通訊接收幀事件發(fā)生,程序進行通訊格式的判斷,如果通訊格式正確,再進行通訊地址的比較,如果通訊幀中的地址域是本機地址或廣播地址,表示是對本機通訊,則程序進行通訊命令的解釋及執(zhí)行,同時如果要返回數據幀,置通訊發(fā)送標志,準備好發(fā)送數據幀,則通訊發(fā)送數據幀事件發(fā)生,啟動發(fā)送數據。
MCU部件初始化是是整個程序初始化的一個部分,它是整個系統所用到的MCU資源的初始化,使程序在運行時能夠正確的運行MCU部件,達到預定的目標。MCU部件初始化包括以下幾個部分:
I/O控制模式配置及時鐘分頻器初始化
看門狗、外部中斷1、比較器中斷初始化
RTC及定時器0、1初始化
串口中斷、鍵盤中斷初始化
電表各部件初始化是對電表的相關部件、相關的變量進行初始化,特別是電量數據恢復非常重要,使電表正常工作。它包括以下幾個部分:
端口初始化
顯示初始化
外部時鐘芯片初始化
剩余脈沖數據及各電量數據恢復
時鐘數據及顯示控制數據恢復
時段費率初始化處理
歷史電量初始化處理
校時允許初始化處理
1.3.3 DDSF系列電能表軟件的時鐘、顯示處理模塊算法分析
時鐘、顯示處理模塊程序是根據時間進行程序處理的,當時間間隔1S時,秒事件發(fā)生,進行秒事件處理,當時間間隔為分鐘時,分鐘時間發(fā)生,進行分鐘事件處理,同樣在時間間隔半小時及小時時,半小時及小時事件發(fā)生,進行事件處理。它包含以下幾個部分:
數據檢測部分:對系統數據進行更新,錯誤進行恢復而進行的操作。
事件執(zhí)行部分:當事件發(fā)生時,對相應的事件進行程序響應。
其他執(zhí)行部分:包括通訊信道默認恢復、時段費率檢測、電量結算檢測等等。
1.3.4 DDSF系列電能表軟件的通訊處理模塊算法分析
通訊事件處理程序是通過判斷通訊事件標志是否置位決定通訊事件是否發(fā)生,當通訊事件發(fā)生時,根據通訊規(guī)則,檢測通訊幀格式是否正確,同時比較電表通訊地址是否進行本機通訊,當入口通訊幀格式正確和進行本機通訊和廣播通訊時,則對通訊命令進行解釋同時執(zhí)行通訊命令操作。在通訊命令執(zhí)行完畢后,程序檢測是否要進行通訊發(fā)送數據幀,如果要進行通訊發(fā)送,則準備通訊數據,啟動發(fā)送功能。
1.3.5 DDSF系列電能表軟件的電量計量處理模塊算法
電量計量程序是進行電量計量程序處理,電量處理的順序依次為電量整數處理及儲存、電量小數處理及存儲、電量脈沖處理、電量整數低字節(jié)處理及儲存、電量小數儲存區(qū)域指針更新判斷。電量整數低字節(jié)處理及儲存是為了在電源掉電中,防止程序在對電量整數加1并保存時,電量小數沒有保存發(fā)生掉電,導致系統多計量1kWh的電能的可能,因此在系統電量恢復時檢測到兩個電量整數低字節(jié)不相等時,對電量小數清零處理,解決問題的發(fā)生。電量小,數儲存區(qū)域指針更新判斷是因為電量小數的存儲區(qū)域頻繁發(fā)生擦寫現象,導致EEPROM的壽命減低,因此采樣多區(qū)域的辦法,當檢測到當前存儲區(qū)域損壞時,更換下到一個存儲區(qū)域,延長電能表的壽命。
比較器中斷是用來進行電量脈沖數據保護,當電源電壓下降引起比較器中斷發(fā)生稱為掉電,這時應當保護電量脈沖數據。當電源上電、電源掉電、比較器2的比較狀態(tài)發(fā)生翻轉、紅外通訊導致電源電壓下降都可以引起比較器中斷發(fā)生,因此在設計程序時應分辨出電源掉電發(fā)生,從而真正進行保護數據,避免程序錯誤執(zhí)行。