0. 引言
隨著電力電子技術(shù)的快速發(fā)展,越來越多具有諧波源作用的非線性設(shè)備投入使用,電網(wǎng)電能質(zhì)量日益惡化,現(xiàn)行的電能計(jì)量和考核方式不利于對(duì)諧波污染源的考核和治理。合理的解決辦法是分別計(jì)量基波電能和各次諧波電能,并分諧波電能的傳遞方向分別執(zhí)行懲罰性和補(bǔ)償性計(jì)費(fèi)制度以提高電網(wǎng)的電能質(zhì)量。實(shí)現(xiàn)這個(gè)準(zhǔn)確、合理的電能計(jì)量和質(zhì)量評(píng)估方案的關(guān)鍵,是研制能夠進(jìn)行諧波分析的多功能電能計(jì)量監(jiān)測裝置,這樣的裝置必須能夠在高速、實(shí)時(shí)采集數(shù)據(jù)的同時(shí)對(duì)數(shù)據(jù)進(jìn)行快速傅立葉變換分析和對(duì)各項(xiàng)電能指標(biāo)進(jìn)行計(jì)算、顯示,這要求用多MCU系統(tǒng)設(shè)計(jì)多功能電能表。
應(yīng)用多MCU系統(tǒng)的電能計(jì)量、質(zhì)量監(jiān)測裝置總體框圖如圖1所示。多MCU系統(tǒng)由兩個(gè)微處理器MCU1、MCU2及數(shù)據(jù)共享接口構(gòu)成,微處理器MCU1負(fù)責(zé)外圍數(shù)據(jù)采集、濾波、A/D轉(zhuǎn)換單元模塊的控制、電能指標(biāo)顯示和遠(yuǎn)程抄表數(shù)據(jù)通信等功能,MCU2負(fù)責(zé)對(duì)采集到的數(shù)據(jù)進(jìn)行FFT運(yùn)算和對(duì)基波及各次諧波電能數(shù)據(jù)的分時(shí)計(jì)費(fèi)計(jì)算,數(shù)據(jù)共享接口則承擔(dān)著微處理器MCU1和MCU2之間數(shù)據(jù)交換共享的作用,相當(dāng)于多MCU系統(tǒng)數(shù)據(jù)中心。因此,數(shù)據(jù)共享接口性能的優(yōu)劣,將直接決定著多MCU系統(tǒng)工作效率的高低和和系統(tǒng)數(shù)據(jù)保護(hù)的可靠程度。
目前,多MCU系統(tǒng)多采用雙口RAM(如IDT7134芯片)或微控制器的串行接口作為多個(gè)微處理器MCU之間數(shù)據(jù)共享接口,如圖2a、b所示。雙口RAM是一個(gè)配備兩套獨(dú)立的地址、數(shù)據(jù)、控制線的存儲(chǔ)器,允許兩個(gè)獨(dú)立的MCU對(duì)數(shù)據(jù)進(jìn)行存取共享。當(dāng)發(fā)生兩個(gè)MCU同時(shí)訪問同一地址的存儲(chǔ)單元時(shí),通過內(nèi)部仲裁邏輯控制電路提供訪問允許和延緩保持的訪問控制機(jī)制。以速度等級(jí)是55ns級(jí)的雙口RAM為例,由于雙MCU之間的數(shù)據(jù)共享讀寫控制突,這樣的多MCU系統(tǒng)必定存在110ns的數(shù)據(jù)交換延時(shí)周期,而且數(shù)據(jù)存儲(chǔ)具有易失性,系統(tǒng)一旦掉電重要數(shù)據(jù)就會(huì)丟失。另外,每個(gè)MCU需要至少16條I/O口線作為地址、數(shù)據(jù)、控制線,MCU之間的接線比較復(fù)雜。這對(duì)于運(yùn)算速度高、數(shù)據(jù)量大、MCU外圍模塊多的多功能電能表來講效果并不理想。與之相比,串行通信數(shù)據(jù)共享方案效率更低,難以滿足系統(tǒng)對(duì)實(shí)時(shí)性的要求。隨著符合I2C總線標(biāo)準(zhǔn)的鐵電存儲(chǔ)器(FRAM)的出現(xiàn),為用戶所熟悉的I2C總線技術(shù)將為我們解決多MCU系統(tǒng)數(shù)據(jù)共享的問題,提供了一種接線簡單、數(shù)據(jù)訪問高速、無讀寫時(shí)延和數(shù)據(jù)保護(hù)可靠性高的解決方案。
1. 符合I2C總線標(biāo)準(zhǔn)的鐵電存儲(chǔ)器(FRAM)工作原理和特性
1.1、 I2C總線標(biāo)準(zhǔn)
I2C 總線的信號(hào)線為數(shù)據(jù)線SDA ( Serial Data) 和時(shí)鐘線SCL (Serial Clock) ,都是雙向傳輸?shù)摹?shù)據(jù)線SDA用于在器件之間串行的傳輸數(shù)據(jù)位、地址碼、應(yīng)答、非應(yīng)答信號(hào),時(shí)鐘線SCL上傳輸由主控器件發(fā)出時(shí)鐘同步信號(hào)。根據(jù)向總線發(fā)送數(shù)據(jù)還是從總線接收數(shù)據(jù)將總線上器件的工作模式分為發(fā)送和接收。通常,在I2C總線上有一個(gè)控制總線的器件,稱為主器件(Master),負(fù)責(zé)為所有的通信操作產(chǎn)生時(shí)鐘信號(hào),而受控制的器件稱為從器件( Slave),可以是任何符合I2C總線標(biāo)準(zhǔn)的器件,但是主器件只能由帶CPU的器件擔(dān)任。每一個(gè)主器件都可以工作于主發(fā)送模式或者主接收模式,每一個(gè)從器件都可以工作于從接收模式或者從發(fā)送模式,并且可以有多個(gè)主器件共存于一條I2C總線上,比如本文所設(shè)計(jì)的多MCU系統(tǒng)中MCU1和MCU2在I2C 總線上都作為主器件。
通常,掛在總線上的從器件都有唯一的地址標(biāo)號(hào),稱為從地址(Slave ID),主器件通過向總線發(fā)送從地址來呼叫某個(gè)要與之交換數(shù)據(jù)的器件,這種呼叫和數(shù)據(jù)交換以I2C 總線通信協(xié)議為規(guī)范進(jìn)行,這種協(xié)議由SDA、SCL信號(hào)線上的啟動(dòng)(Start)、數(shù)據(jù)位傳輸(Data Bit)、應(yīng)答(Acknowledge)和停止(Stop)四種狀態(tài)的變換控制,圖3a說明了這四種狀態(tài)的信號(hào)組成。其中啟動(dòng)和停止由主器件發(fā)送,數(shù)據(jù)位和應(yīng)答位可以由主器件發(fā)送,也可以由從器件發(fā)送。當(dāng)主器件發(fā)送數(shù)據(jù)位時(shí),它工作于主發(fā)送模式,此時(shí)從器件工作于從接收模式并對(duì)每個(gè)收到的字節(jié)數(shù)據(jù)以一個(gè)應(yīng)答位作為收到確認(rèn)信號(hào)。與此相反,從器件向總線發(fā)送數(shù)據(jù)位,主器件負(fù)責(zé)對(duì)每一個(gè)收到的字節(jié)數(shù)據(jù)進(jìn)行應(yīng)答或者非應(yīng)答(根據(jù)需要用于結(jié)束通信)。通常,通信由主器件發(fā)送一個(gè)啟動(dòng)狀態(tài)開始,然后發(fā)送一個(gè)帶有讀、寫識(shí)別的從地址,這個(gè)從地址的高7位標(biāo)識(shí)器件的ID號(hào),最低位標(biāo)識(shí)讀寫或數(shù)據(jù)傳輸方向,0為寫1為讀。寫數(shù)據(jù)時(shí)由主器件向從器件傳送數(shù)據(jù),讀數(shù)時(shí)由從器件向主器件傳送數(shù)據(jù)。總線上所有器件都有內(nèi)部邏輯,當(dāng)檢測到啟動(dòng)狀態(tài)后則進(jìn)入電平比較狀態(tài),如果從地址與其ID標(biāo)號(hào)相符則被選中并自動(dòng)產(chǎn)生一個(gè)應(yīng)答位,從而建立通信連接,否則不予應(yīng)答。一旦建立通信連接,可根據(jù)需要由通信軟件控制主、從器件之間傳輸數(shù)據(jù)字節(jié)的長短。最后,通信結(jié)束時(shí)由主器件產(chǎn)生一個(gè)停止?fàn)顟B(tài)(Stop)以結(jié)束這次通信。圖3b說明了I2C 總線的通信時(shí)序。
當(dāng)I2C 總線是多主器件總線時(shí),由于SDA和SCL信號(hào)線接上拉電阻,并且各個(gè)器件的輸出都為開漏或開集的形式,因而構(gòu)成“線與”的功能,就是說只要有一個(gè)器件擔(dān)當(dāng)了主器件的角色,總線就處于忙的狀態(tài),這形成了良好有序的競爭檢測機(jī)制,因而不會(huì)產(chǎn)生數(shù)據(jù)共享傳輸沖突。
1.2、鐵電存儲(chǔ)器結(jié)構(gòu)原理、特性及應(yīng)用
FM31256芯片集成了256Kb容量的鐵電存儲(chǔ)器(FRAM)、實(shí)時(shí)時(shí)鐘(RTC)、外部事件計(jì)數(shù)器、看門狗及掉電監(jiān)測復(fù)位等功能,其結(jié)構(gòu)原理如圖4示。
其中,鐵電存儲(chǔ)器(FRAM)同時(shí)具備隨機(jī)存取記憶體(RAM)和非易失性存儲(chǔ)器(ROM)的特點(diǎn),既可無限次讀寫存取數(shù)據(jù),又能在斷電情況下保存數(shù)據(jù),并且沒有讀寫延時(shí)可以總線速度存取數(shù)據(jù),具有即時(shí)讀寫的優(yōu)點(diǎn)。與此相比,E2PROM在寫入數(shù)據(jù)后一般要5~10ms的等待數(shù)據(jù)寫入時(shí)間,而且寫入壽命有限,通常讀寫一百萬次以后數(shù)據(jù)寫入失效,因而并不適合做數(shù)據(jù)共享存儲(chǔ)器。
在這個(gè)集成了多個(gè)邏輯器件的芯片中,鐵電存儲(chǔ)器單元(FRAM)和實(shí)時(shí)時(shí)鐘單元(RTC)均符合I2C 總線標(biāo)準(zhǔn),最大可達(dá)到1MHz的總線頻率。由于集成在同一個(gè)芯片上,F(xiàn)RAM和RTC共用同一個(gè)I2C 總線接口,但是地址標(biāo)號(hào)(Slave ID)各自獨(dú)立,分別為1010XA1A0D和1101X A1A0D,其中D 是數(shù)據(jù)傳輸方向位用于標(biāo)志讀、寫操作,A1A0用來選擇I2C 總線上的多個(gè)同類器件,最多可以從4個(gè)FRAM或RTC器件中進(jìn)行選擇,各個(gè)器件的A1A0值由芯片的外部引腳電平?jīng)Q定。編寫通信軟件時(shí),在I2C 總線上首先給一個(gè)啟動(dòng)(Start)信號(hào),然后發(fā)送Slave ID(1010XA1A0D),再判斷Acknowledge信號(hào),如果有,則主控器件發(fā)送兩個(gè)字節(jié)的存儲(chǔ)器地址(MSB和LSB)對(duì)FRAM的32KByte存儲(chǔ)空間進(jìn)行尋址,之后進(jìn)行數(shù)據(jù)傳輸,每個(gè)數(shù)據(jù)字節(jié)跟隨一個(gè)Acknowledge(或者Non-Acknowledge)信號(hào),通信完畢以Stop信號(hào)結(jié)束操作。其中,MSB和LSB尋址字節(jié)可以用于單字節(jié)、多字節(jié)兩種形式的存取操作,當(dāng)多字節(jié)操作時(shí)MSB指示存儲(chǔ)頁面不變,LSB保存在內(nèi)部緩存器中,每存取一個(gè)字節(jié)單元的數(shù)據(jù)LSB自動(dòng)增加1以指向下一個(gè)存儲(chǔ)單元,當(dāng)達(dá)到存儲(chǔ)范圍末端時(shí)存儲(chǔ)器地址自動(dòng)回歸0000H。這在多MCU系統(tǒng)中對(duì)特定參數(shù)的數(shù)據(jù)共享操作十分方便。
由于FRAM的上述優(yōu)點(diǎn),特別適合于那些對(duì)數(shù)據(jù)采集、讀寫時(shí)間要求很高的場合,而且由于不會(huì)出現(xiàn)數(shù)據(jù)丟失,其可靠的存儲(chǔ)能力足以讓我們放心的把一些重要數(shù)據(jù)存儲(chǔ)其中。其近乎無限次寫入的使用壽命,使它很適合擔(dān)當(dāng)數(shù)據(jù)共享存儲(chǔ)體,用來在多功能電能表的MCU之間共享數(shù)據(jù),供各個(gè)子系統(tǒng)頻繁讀寫。
2. 基于I2C總線的多MCU系統(tǒng)結(jié)構(gòu)及工作原理
I2C 總線接口電路簡單,使用靈活,加上鐵電存儲(chǔ)器的讀寫速度高、數(shù)據(jù)保護(hù)可靠、讀寫壽命無限等優(yōu)點(diǎn),自然為我們提供了一種十分理想的基于I2C 總線的新型多MCU系統(tǒng)構(gòu)建方案,以FM31256芯片為例設(shè)計(jì)的系統(tǒng)結(jié)構(gòu)框圖如圖5所示。
每個(gè)MCU只需兩條I/O口線如P2.2、P2.3分別與SDA、SCL總線相連即可,MCU1和MCU2分別用做控制和計(jì)算的微控制器,通常用數(shù)字信號(hào)處理器(DSP)執(zhí)行復(fù)雜算法的計(jì)算,圖5中MCU2的P2.2、P2.3線僅代表普通I/O口。另外,為了更好的協(xié)調(diào)對(duì)I2C總線資源的使用,我們?cè)O(shè)計(jì)了兩條I/O口線P2.0、P2.1用來在兩個(gè)MCU之間傳遞I2C 總線的使用信息,以達(dá)到提高多個(gè)MCU之間數(shù)據(jù)共享效率的目的。MCU1作為I2C 總線的主器件時(shí),P2.0輸出高電平以通知MCU2此時(shí)I2C 總線正被占用,使用完畢將P2.0電平置低,此時(shí)MCU2的P2.1檢測到電平跳變則判斷出I2C 總線處于空閑可用狀態(tài)。同樣,MCU2作為I2C總線的主器件時(shí),也從P2.0輸出高電平來通知MCU1此時(shí)I2C 總線正被占用,使用完畢將其置低,由MCU1的P2.1引腳根據(jù)電平跳變決定何時(shí)可以使用I2C 總線。這樣,無論何時(shí)鐵電存儲(chǔ)器都可以處于被訪問狀態(tài),充分發(fā)揮了無讀寫延時(shí)的優(yōu)點(diǎn),很大程度上提高了數(shù)據(jù)采集單元和FFT運(yùn)算單元之間數(shù)據(jù)交換的實(shí)時(shí)性。
這種新型多MCU系統(tǒng)構(gòu)建方案與雙口RAM的多MCU系統(tǒng)相比,既沒有數(shù)據(jù)共享沖突,也沒有讀寫延時(shí)的缺點(diǎn),而且接線簡單,數(shù)據(jù)保護(hù)可靠,讀寫效率高,器件數(shù)量少,從多方面提高了可靠性,尤其適用于對(duì)數(shù)據(jù)處理實(shí)時(shí)性和可靠性要求高的電能計(jì)量和質(zhì)量監(jiān)測裝置。
3. 基于新型多MCU系統(tǒng)的多功能電能表的硬件結(jié)構(gòu)設(shè)計(jì)
為了合理的對(duì)諧波污染源進(jìn)行考核和治理,有必要對(duì)基波電能和各次諧波電能及其傳遞方向進(jìn)行計(jì)量,那么具備電能計(jì)量和質(zhì)量監(jiān)測的多功能電能表必須能夠在進(jìn)行高速、實(shí)時(shí)數(shù)據(jù)采集同時(shí)執(zhí)行快速傅立葉變換,從而達(dá)到諧波分析的目的。要實(shí)現(xiàn)這些功能,通常采用多MCU系統(tǒng),把控制和數(shù)據(jù)處理的功能進(jìn)行分離,以充分發(fā)揮各個(gè)微處理器MCU的功能。在此,考慮到數(shù)據(jù)采集的實(shí)時(shí)性要求和運(yùn)算量大的需要,由MCU1負(fù)責(zé)對(duì)數(shù)據(jù)采集、濾波、A/D轉(zhuǎn)換、LCD顯示等單元進(jìn)行控制,以及遠(yuǎn)程抄表通信,采用MCS51系列單片機(jī)就可以完成上述功能;由MCU2負(fù)責(zé)對(duì)采集到的數(shù)據(jù)進(jìn)行FFT變換并計(jì)算各類電能指標(biāo)數(shù)據(jù),算法復(fù)雜運(yùn)算速度問題尤其突出,需要采用數(shù)字信號(hào)處理器(DSP)。硬件連接原理圖如圖6所示。
其中,MCU1的P0口作為數(shù)據(jù)采集通道接收經(jīng)過A/D轉(zhuǎn)換的數(shù)字信號(hào),W、R作為讀寫控制,P2.7和P3.3分別作為數(shù)據(jù)轉(zhuǎn)換啟動(dòng)和數(shù)據(jù)接收中斷啟動(dòng)信號(hào)控制引腳,串行口作為遠(yuǎn)程自動(dòng)抄表的通信接口(可擴(kuò)展紅外無線通道),P1口作為液晶顯示器(LCD)的數(shù)據(jù)口,P2.3、P2.4、P2.5用于LCD的顯示控制引腳,P2.2、P2.3分別接I2C 總線的SDA和SCL,P2.0、P2.1作為雙MCU之間數(shù)據(jù)共享協(xié)調(diào)通道。MCU2主要用做運(yùn)算,掉電時(shí)數(shù)據(jù)保護(hù)顯得十分重要,因此以外部中斷作為FM31256芯片的掉電監(jiān)測輸出信號(hào)的輸入端,隨時(shí)進(jìn)行中斷數(shù)據(jù)保護(hù)處理。
這個(gè)系統(tǒng)與采用雙口RAM的多MCU系統(tǒng)相比,接線簡單,數(shù)據(jù)交換速度高、實(shí)時(shí)性好,數(shù)據(jù)保護(hù)可靠。另外,由于FM31256芯片集成了實(shí)時(shí)時(shí)鐘、看門狗、掉電保護(hù)中斷等單元,因而系統(tǒng)以較少的器件數(shù)量增加了電能峰、平、谷期分時(shí)計(jì)費(fèi),防止程序跑飛和系統(tǒng)掉電欠壓數(shù)據(jù)保護(hù)等功能,很大程度上提高了可靠性。
4. 結(jié)束語
為了對(duì)諧波污染源進(jìn)行合理的考核和治理,有必要計(jì)量基波和各次諧波電能,實(shí)現(xiàn)這個(gè)電能計(jì)量和質(zhì)量評(píng)估方案的關(guān)鍵,是研制能夠進(jìn)行諧波分析的多功能電能計(jì)量監(jiān)測裝置,該裝置能夠在高速、實(shí)時(shí)采集數(shù)據(jù)的同時(shí)進(jìn)行快速傅立葉變換分析和對(duì)各項(xiàng)電能指標(biāo)進(jìn)行計(jì)算、顯示。顯然,設(shè)計(jì)基于多MCU系統(tǒng)的多功能電能表十分必要。
本文提出了一種基于I2C總線的新型多MCU系統(tǒng)的構(gòu)建方法,應(yīng)用讀寫快速、數(shù)據(jù)保護(hù)可靠、符合I2C總線標(biāo)準(zhǔn)的鐵電芯片(FM31256)作為多MCU系統(tǒng)的實(shí)時(shí)數(shù)據(jù)共享模塊,以I2C總線作為數(shù)據(jù)交換通道傳遞采集到的電量數(shù)據(jù)、加工過的電能數(shù)據(jù)以及實(shí)時(shí)時(shí)鐘數(shù)據(jù)。這種方法接線簡單,數(shù)據(jù)共享訪問高速、無讀寫延時(shí)、數(shù)據(jù)保護(hù)可靠并且元器件集成度高,是一種高效可靠的多MCU系統(tǒng)解決方案,能夠很好的發(fā)揮多MCU系統(tǒng)中各個(gè)MCU的功能,在實(shí)時(shí)測控領(lǐng)域中具有很高的應(yīng)用價(jià)值。同時(shí),用這種多MCU系統(tǒng)設(shè)計(jì)的多功能電能表裝置體積小,芯片集成度高,工作穩(wěn)定可靠,很好的滿足了電量數(shù)據(jù)采集、處理的高速實(shí)時(shí)性和可靠性的要求,為實(shí)現(xiàn)具有諧波分析功能的電能計(jì)量和質(zhì)量監(jiān)測提供了先進(jìn)的技術(shù)手段。
評(píng)論