目前常用的機械結構的電表已經(jīng)存在了約一個(gè)世紀。在此期間,它如實(shí)可靠地記錄著(zhù)電能,因此電力公司能夠準確地向客戶(hù)收取費用。這種基于旋轉金屬圓盤(pán)的機械式千瓦-時(shí)電表不考慮輸入電壓或功率因數,只跟蹤記錄實(shí)際的用電量(圖1)。 圖1. 美國得克薩斯州某住宅使用的一款機械式電表。機械式電表通過(guò)旋轉的圓盤(pán)測量有功功率。機械式顯示器指示出電表出廠(chǎng)后的累計用電量。而能源工業(yè)正在發(fā)生著(zhù)變革,使得傳統的機械式電表不得不淡出市場(chǎng)。首先,用電量在不同的時(shí)段極不均衡,而目前客戶(hù)在用電高峰時(shí)沒(méi)有節能的動(dòng)機。因此,電力公司現在認識到必須對其發(fā)電設備和配電網(wǎng)絡(luò )進(jìn)行工程改進(jìn)以應對用電高峰,哪怕一天中的大部分時(shí)間內都未充分使用其裝備容量。其次,當電壓和電流同相傳送時(shí)配電效率是最高的。傳輸給負載的有功功率為: PREAL = V x I x cos 式中 為電壓和電流波形之間的相位差。遺憾的是,許多連接到電力線(xiàn)路的設備都表現為較大的感性負載,如感應電動(dòng)機和熒光燈,這使得電流相位滯后于電壓相位。直到現在,電力公司對大多數住宅用戶(hù)的這種低效情況仍然束手無(wú)策。這是因為監測時(shí)段、峰值用電量和功率因數并據此進(jìn)行收費的成本太高了。 多功能、多費率電表改變了這種狀況,從而對電能的利用更為有利。利用由微控制器控制的千瓦-時(shí)電表,電力公司可以跟蹤用戶(hù)在用電高峰時(shí)段的用電量或者超過(guò)合同規定的用電量,并據此收取更高的費用。如果用戶(hù)使用了大的感性負載,電力公司也可以收取更多費用,同時(shí)使用該數據有助于修正這些低效情況。 MAXQ3120微控制器基于Maxim/Dallas Semiconductor的MAXQ? RISC架構,不但可勝任這些任務(wù),還可提供更多功能。本文提出一種基于MAXQ3120的電表參考設計,并能滿(mǎn)足國際電表市場(chǎng)的要求。 MAXQ3120電表參考設計 MAXQ3120電表參考設計為全功能、具有用戶(hù)定制功能的標準電表(圖2)。定制范圍由設計者根據市場(chǎng)需求而定。 圖2. MAXQ3120電表參考設計可為滿(mǎn)足特定需要進(jìn)行定制。電表底部配有功率、負載、網(wǎng)絡(luò )和脈沖輸出連接點(diǎn);光通信和可見(jiàn)的電表脈沖LED位于LCD上方。IEC 61036是所有電表都必須遵循的主要國際標準。該標準對電氣、機械和環(huán)境要求做出了規定,并提出兩個(gè)精度等級:1級精度在幾乎整個(gè)可用電流范圍的標稱(chēng)精度為1%,2級精度的標稱(chēng)精度為2%。表1總結了符合標準的電表的其他關(guān)鍵要求。 IEC 61036 (或縮略版本)是公認的電表標準,但多功能電表的要求遠沒(méi)這樣普遍。本電表參考設計為1級電表,定制為符合中國多功能電表通信標準(DL/T 645),但可進(jìn)行調整以適應任何國家或工業(yè)標準。 MAXQ3120外設 MAXQ3120的核心是MAXQ20內核,其工作頻率為8MHz,含有32k字節閃存和512字節RAM-完成多功能電表的任務(wù)綽綽有余。因MAXQ3120內含兩個(gè)16位、-模數轉換器(ADC),可以精確測量瞬時(shí)電壓和電流。這兩個(gè)ADC通道每48μs完成1次新的轉換,即轉換速率為20667采樣/秒。這些數據轉換器的前端帶可編程增益放大器(增益可達16倍),非常適合監測電壓和電流波形。要將原始電壓和電流采樣值轉換成可用的用電量信息,需要強大的數學(xué)運算能力。為此,MAXQ3120集成了1個(gè)帶40位累加器的16 x 16位乘法器。該乘法器在單個(gè)時(shí)鐘周期內即可完成一次運算,因與CPU內核緊密地集成在一起,所以效率極高。 MAXQ3120還提供一個(gè)堅固的通信模塊。包括兩路UART,其中一路具有特殊邏輯電路,可輕松實(shí)現紅外數據傳輸。另外,MAXQ3120集成了一個(gè)LCD控制器,可驅動(dòng)的段數高達112段 - 與傳統的、常采用機電式計數器的電表相比,性能更好,更經(jīng)濟。如果你需要根據每天的不同時(shí)段差異計費,則需要一個(gè)精確時(shí)鐘。MAXQ3120包含一個(gè)電池備份的時(shí)鐘模塊,具有亞秒計數器和報警功能。該時(shí)鐘具有數字微調功能,時(shí)鐘精度優(yōu)于4ppm (每月約10秒)。 通信 - 物理層 中國多功能電表標準規定兩種通信類(lèi)型:一類(lèi)是住宅樓內或小型街道的多個(gè)電表通過(guò)有線(xiàn)網(wǎng)絡(luò )連接,通過(guò)該網(wǎng)絡(luò )向主計算機(一般為PC)發(fā)送用戶(hù)數據;另一類(lèi)是用于手持、非接觸抄表器的紅外連接。 有線(xiàn)網(wǎng)絡(luò )基于多點(diǎn)RS-485標準,工作速率為1200位/秒。RS-485標準將網(wǎng)絡(luò )規模限制為32個(gè)站點(diǎn);然而,現在的RS-485收發(fā)器能夠支持更多的站點(diǎn),遠遠超出了EIA網(wǎng)絡(luò )規范給出的最多32個(gè)站點(diǎn)。例如,本參考設計使用的MAX3072 RS-485收發(fā)器為1/8單位負載器件,允許總線(xiàn)上最多掛接256個(gè)收發(fā)器。 與RS-485通道不同,紅外(IR)通道不是基于眾所周知的物理層標準。DL/T 645沒(méi)有使用標準紅外鏈路(如IrDA)來(lái)傳輸數據,而是規定了一種開(kāi)/關(guān)調制技術(shù),即有調制IR光束時(shí)表示0,無(wú)IR光束表示1。在這種方式下,通道空閑時(shí)為狀態(tài)1。字符信元的第一個(gè)1-0跳變表示起始位,與第一次探測到載波光束相對應。這一技術(shù)的細節信息如圖3所示。 圖3. DL/T 645多功能電表標準規定的IR通信示意圖。通過(guò)調制IR光束發(fā)送數據,有信號表示0,無(wú)信號則表示1。通信 - 數據包格式 物理層一旦確定,則必須定義數據包格式。由于電表環(huán)境要求不同于通用數據網(wǎng)絡(luò )要求,通信規范給出了不同于其他網(wǎng)絡(luò )環(huán)境下的數據包格式(見(jiàn)圖4)。 圖4. DL/T 645規定的幀格式包括一系列固定域和可變域。該幀格式在IR和RS-485通信模式下是相同的。 該數據包格式有以下幾點(diǎn)非常獨特,包括: 沒(méi)有源地址?偸怯芍鳈C啟動(dòng)通信過(guò)程,而且每個(gè)網(wǎng)絡(luò )上只有一個(gè)主機。主機沒(méi)有地址。 網(wǎng)絡(luò )上的電表不能啟動(dòng)通信過(guò)程。只有主機才能要求電表發(fā)送數據。主機不能協(xié)助解決任何意外情況,這是因為在許多情況下實(shí)際上沒(méi)有網(wǎng)絡(luò )。主機為手持終端,電力公司員工每個(gè)月會(huì )攜帶該終端到現場(chǎng)抄表。所有意外情況都必須由電表本身來(lái)處理。 主機到電表的數據包總長(cháng)度規定不允許超過(guò)50個(gè)字符,從電表到主機的總長(cháng)度不超過(guò)200個(gè)字符。在參考設計中,雙向包長(cháng)度都保持為50個(gè)字符。 CMD域表示主機告訴電表如何操作。多數情況下,命令為讀或寫(xiě)寄存器。但CMD域也可以命令電表清除其最大需量寄存器,接收通信口令,或者設置時(shí)間或日期。 欲了解DL/T 645協(xié)議的完整說(shuō)明,請參考電表參考設計規范。圖5所示為參考設計的軟件架構。 圖5. 參考設計軟件包括多項任務(wù),并通過(guò)任務(wù)輪被依次調用。任務(wù)通過(guò)一系列全局變量來(lái)通信,其中最重要的部分是消息板。消息板是一組標志,各任務(wù)通過(guò)設置標志來(lái)將關(guān)鍵事件通知給其他任務(wù)。 參考設計中的寄存器 DL/T 645定義了大量的寄存器,來(lái)設置工作參數、讀取用電量或其他測量值。一個(gè)寄存器包含一個(gè)信息項,并具有一個(gè)16位地址。例如,地址為0xC030的寄存器指定了有功電表常數(每千瓦-時(shí)脈沖數)。在registermanager.c的源代碼注釋里有完整的寄存器列表及其功能說(shuō)明,參考設計中包含該程序。 寄存器管理程序(registermanager.c)對所有寄存器進(jìn)行分類(lèi)并管理其任務(wù),從許多方面來(lái)說(shuō)都是電表軟件系統的核心。重要的是,要認識到電表里的許多任務(wù)都需要訪(fǎng)問(wèn)寄存器數據,而不只是來(lái)自通信子系統的簡(jiǎn)單請求需要訪(fǎng)問(wèn)寄存器數據。寄存器管理程序根據系統其他任務(wù)發(fā)出的讀取和寫(xiě)入寄存器請求,完成相應操作。例如,如果顯示管理程序需要知道一個(gè)特定值要在LCD上顯示多長(cháng)時(shí)間,它必須從寄存器管理程序獲取該值,隨后寄存器管理程序再從外部EEPROM獲取該值。 對于大多數寄存器讀操作,寄存器管理程序只需簡(jiǎn)單地向ReadEEPROM子程序發(fā)送請求。這一過(guò)程比表面上看起來(lái)的情況更復雜。如果EEPROM仍忙于前一個(gè)寫(xiě)周期操作,可能需要幾毫秒時(shí)間才能完成讀周期,CPU絕不能被任一個(gè)任務(wù)占用如此長(cháng)的時(shí)間。在這些情況下,將掛起寄存器管理程序,所有其他任務(wù)繼續運行。隨后,一旦EEPROM重新準備就緒,寄存器管理程序將恢復運行,并且一般會(huì )持續運行到任務(wù)完成。對EEPROM的寫(xiě)請求也如此處理。 非EEPROM寄存器 一些寄存器讀操作所要讀取的數據并未存儲在EEPROM中。對這些讀操作,寄存器管理程序必須調用一些其他資源,大多數情況下會(huì )是一些數字信號處理(DSP)程序。 例如,如果請求讀取寄存器0xB611(RMS電壓,A相),寄存器管理程序請求DSP函數來(lái)計算下一電源周期的RMS電壓值。注意,在50Hz電源頻率下,這可能需要長(cháng)達40ms時(shí)間,因為DSP程序必須等待,直到電源電壓發(fā)生下一次正轉換,然后累計下一個(gè)周期的數據。同樣,寄存器管理程序必須發(fā)出DSP任務(wù)請求,并在DSP任務(wù)數據就緒之前處于掛起狀態(tài)。 另外,寫(xiě)某些EEPROM寄存器會(huì )使DSP的參數發(fā)生改變。例如,寫(xiě)寄存器0xC030 (有功電表常數)必須更新EEPROM來(lái)反應新數值,同時(shí)需要設置DSP程序的常數,這樣才能精確產(chǎn)生電表脈沖。在這些情況下,寄存器管理程序首先更新EEPROM,然后執行必要的計算,更新受寄存器寫(xiě)操作影響的RAM變量。 DSP子系統的功能 如果稱(chēng)寄存器管理程序為電表的心臟,那么DSP子系統就是電表的大腦。DSP子系統處理絕大多數電表實(shí)際測量功能,包括: 電流和電壓的實(shí)時(shí)測量 有功功率和無(wú)功功率計算 功率因數計算 供電頻率估算 按需計算RMS電壓和電流 產(chǎn)生電表脈沖 DSP函數是電表參考設計中惟一以中斷方式運行的代碼段。原因很清楚:要進(jìn)行太多其他操作,以至軟件無(wú)法及時(shí)輪詢(xún)DSP子系統。該中斷每48μs產(chǎn)生一次,或者說(shuō)8MHz時(shí)鐘頻率下每384個(gè)指令周期發(fā)生一次。中斷程序占到CPU處理能力的25%到30%。中斷程序提供多組數據輸出。 需要用到前四個(gè)累加和來(lái)計算有功功率。需要用到第五個(gè)累加和計算無(wú)功功率,只有在需要RMS電壓和電流時(shí)才計算最后兩個(gè)累加和。 中斷程序還檢測電壓通道的過(guò)零點(diǎn)。為避免過(guò)零檢測發(fā)生錯誤,將采樣值送給由軟件實(shí)現的單極點(diǎn)低通濾波器處理。注意,該濾波器只用于過(guò)零檢測;用于電能計算的采樣值不進(jìn)行任何濾波。 產(chǎn)生電表脈沖 許多電表都在每使用一定量電能時(shí)產(chǎn)生一個(gè)脈沖。電表脈沖可以采用LED閃爍的方式提供可見(jiàn)的用電指示信號,或采用觸點(diǎn)閉合方式驅動(dòng)機械式計數器來(lái)指示千瓦-時(shí)用電量。參考設計中既提供了可見(jiàn)的脈沖LED,又備有一個(gè)光耦實(shí)現觸點(diǎn)閉合功能。在給定負載下產(chǎn)生脈沖的速率稱(chēng)為電表常數,常以每千瓦-時(shí)的脈沖數給出。因此,脈沖之間的間隔與負載的凈有功功率成反比。一般來(lái)說(shuō),產(chǎn)生的脈沖速率與負載功率之間的關(guān)系可由以下公式表示: 脈沖周期(秒) = 3600 / 電表常數(每kWh的脈沖數) x 負載(kW) 根據該式,對于1kW有功負載,電表常數為1600脈沖/千瓦-時(shí)的電表每2.25秒將產(chǎn)生一個(gè)脈沖。 本參考設計的標稱(chēng)工作電壓為220V,支持的最大電流為40A。這就是說(shuō),在8.8kW的最大負載功率下,如果電表常數為1600脈沖/千瓦-時(shí),則每256ms產(chǎn)生一個(gè)脈沖。所以,要在所有負載情況下保持1%的精度,電表脈沖必須精確到約2.5ms。 其它所有模塊 盡管寄存器管理程序是系統中的最大功能模塊,DSP花費的處理能力最大,仍然需要關(guān)注其他軟件模塊。這些模塊為用戶(hù)提供需要的大多數元素,并在電表環(huán)境中執行重要的任務(wù)。 通信子系統 如上所述,通信在多功能電表中至關(guān)重要。在軟件系統中,這一重要工作由5個(gè)任務(wù)完成,這5個(gè)任務(wù)是:串口驅動(dòng)器、消息檢查器、消息譯碼器、消息格式器和消息構建器。 圖6. 總是由主機發(fā)起與電表參考設計的通信。然后,消息從消息檢查器流向消息譯碼器、寄存器管理程序、消息格式器和消息構建器,最后回到主機。最好將這些系統當作兩個(gè)對稱(chēng)路徑看待:包括消息檢查器和消息譯碼器的入站路徑,以及由消息格式器和消息構建器組成的出站路徑。串口驅動(dòng)器位于鏈路的頂端,寄存器管理程序則位于底部(圖6)。 串口驅動(dòng)器 乍一看,串口驅動(dòng)器好像沒(méi)有什么作用。畢竟,MAXQ外設中的UART系統基本上是自動(dòng)工作的。如果要發(fā)送一個(gè)字符,你只需將其置于輸出緩沖器中;要接收一個(gè)字符,你只需讀輸入緩沖器即可。 但要記。河袃蓚(gè)UART通道,而RAM中只有一個(gè)通信緩沖器。我們必須提供一套機制來(lái)激活某一通道,并確保另一非活動(dòng)通道不會(huì )對信息產(chǎn)生干擾。一般來(lái)說(shuō),當一個(gè)字符到達某一端口時(shí),如果另一端口還沒(méi)有激活,則到達字符將激活該端口。 消息檢查器 消息檢查器就像哨兵一樣檢查輸入數據流,確保嚴格滿(mǎn)足條件的數據才能送達系統其他部分。特別是消息格式必須正確,必須尋址該電表或者具有廣播地址,校驗和必須正確,并且必須具有合理的命令域。 消息譯碼器 消息譯碼器實(shí)際完成主機要求的操作。通常,要求的操作是讀寫(xiě)寄存器,但消息譯碼器還在完成主機要求的其他任務(wù)中起到重要作用。 例如,一個(gè)特定命令用于設置電表地址。另一特定命令用于清除電表的最大需量寄存器。有一個(gè)命令對時(shí)間和日期進(jìn)行同步,還有一個(gè)獨立命令進(jìn)行口令保存。其中一些操作會(huì )改變寄存器的內容,但并不是嚴格的寄存器寫(xiě)操作。 消息譯碼器還必須處理多段響應數據包。因為主機可以采用單個(gè)命令以“通配符”方式讀多個(gè)相關(guān)寄存器,響應數據常常會(huì )超出通信緩沖器的容量。如果確實(shí)超出容量,電表必須發(fā)送一個(gè)標志,指示響應數據只是一部分,后續還有更多數據到達。消息譯碼器和消息格式器協(xié)同工作,使多消息響應機制平穩運行。 消息格式器 發(fā)送寄存器數據時(shí),消息格式器處理所有要求的格式轉換和分節。消息格式器也在寫(xiě)請求之后發(fā)出應答消息。 消息構建器 作為響應信息發(fā)送前的最后一步,消息構建器對包進(jìn)行格式化,并每次一個(gè)字節發(fā)送結果到串口驅動(dòng)器。消息構建器是系統中較簡(jiǎn)單的任務(wù)之一。它首先發(fā)送包頭字段,然后是數據,最后計算校驗和。 處理異步事件 這時(shí),你也許會(huì )認為所有事件都是基于同一時(shí)鐘發(fā)生的,要么是驅動(dòng)ADC通道的采樣時(shí)鐘,要么是CPU時(shí)鐘。實(shí)際上,有許多事件無(wú)法和任何時(shí)鐘同步。這些事件由異步事件管理器處理。 例如,異步事件管理器監測DSP子系統,確定何時(shí)更新EEPROM。當DSP子系統累計到足夠的電能時(shí),就向異步事件管理器告警,接下來(lái)異步事件管理器開(kāi)始更新EEPROM寄存器。異步事件管理器同時(shí)還履行停電統計功能。根據DL/T 645電表標準,必須記錄每次停電情況。異步事件管理器剛好在斷電前,將時(shí)間保存到電池備份的CPU寄存器內,供電恢復后將信息恢復并存儲到EEPROM中。通過(guò)這種方法,每次停電的時(shí)刻和持續時(shí)間都可以記錄下來(lái)。 時(shí)段表管理器 時(shí)段表管理器根據鐘點(diǎn)、日期或其他基于時(shí)鐘或日歷的標準改變計費率。 圖7. 時(shí)段表管理器指示系統累計用電量使用情況,并存于多個(gè)資費寄存器之一中。它將當前時(shí)間和日期與時(shí)鐘、日歷設置進(jìn)行比較,主機可以通過(guò)軟件調整該設置。 雖然時(shí)段表管理器結構相當簡(jiǎn)單,但乍一看可能很難理解。如圖7最右邊的結構所示,將每天24小時(shí)劃分為不同的收費時(shí)段。在該圖解中,一天的時(shí)段表有3個(gè)條目:資費2從0530時(shí)開(kāi)始,資費3從1800時(shí)開(kāi)始,資費1從2200時(shí)開(kāi)始。最多可以提供14種日時(shí)段表,而每天又可以最多提供10個(gè)資費時(shí)段。 內部日歷選擇有效的日時(shí)段表。每天午夜,電表都檢查是否有新的日時(shí)段表生效。在以上圖表中,日時(shí)段表5從4月后期生效,一直持續到6月初,然后日時(shí)段表3生效。 你也可以設置一周中的某些天為"周末"日期(這樣全年都遵循某一特定日時(shí)段表),而全年中的某些天為“假日” (這樣每個(gè)假日都遵循特定的日時(shí)段表)。 |