簡介
太陽能光伏逆變器轉(zhuǎn)換來自太陽能面板的電能并高效地將其部署到公用電網(wǎng)中。早期太陽能PV逆變器只是將電能轉(zhuǎn)儲到公用電網(wǎng)的模塊。但是,新設(shè)計(jì)要求太陽能光伏逆變器對電網(wǎng)的穩(wěn)定性作出貢獻(xiàn)。
本文將回顧最新的ADI技術(shù)如何以HAE(諧波分析引擎)的方式改善智能電網(wǎng)的集成度,并監(jiān)控電網(wǎng)上的電源質(zhì)量,從而極大地增強(qiáng)電網(wǎng)穩(wěn)定
智能電網(wǎng)
什么是智能電網(wǎng)?IMS Research將智能電網(wǎng)定義為“一種自身能夠高效匹配和管理發(fā)電和用電并可最大程度地利用各種可用資源的公用供電基礎(chǔ)設(shè)施”。若要將新一代太陽能光伏逆變器接入智能電網(wǎng),則逆變器需要越來越高的智能程度才能實(shí)現(xiàn)。這本身就是一個(gè)難題,主要是因?yàn)楫?dāng)電力需求在別處時(shí),此處卻連接了過多的電網(wǎng),從而發(fā)生不平衡?;谶@個(gè)原因,如前文所述,太陽能光伏逆變器需要具備更高的智能程度,并且這種智能應(yīng)側(cè)重于電網(wǎng)集成,其中系統(tǒng)需協(xié)助穩(wěn)定電網(wǎng),而非作為電網(wǎng)的一個(gè)簡單電源使用。
這要求更好地對注入電網(wǎng)的電能進(jìn)行測量、控制和質(zhì)量分析。當(dāng)然,這會促成新指令的發(fā)布以及更高的技術(shù)要求,進(jìn)而直接導(dǎo)致新技術(shù)的產(chǎn)生。
ADSP-CM403XY HAE外設(shè)模塊
HAE模塊本質(zhì)上是一個(gè)數(shù)字PLL,其簡化原理圖如下圖所示。HAE連續(xù)接收V和I數(shù)據(jù),并且數(shù)個(gè)周期后將鎖定至輸入波形的基波。HAE模塊的輸入范圍為45 Hz至66 Hz。最多可分析40個(gè)諧波,每次12個(gè)。對于每個(gè)諧波,PLL會試圖鎖定至所需的信號頻率
諧波引擎硬件模塊與諧波分析儀共同處理結(jié)果。由于諧波引擎產(chǎn)生的結(jié)果為最終格式,這些結(jié)果數(shù)據(jù)保存在結(jié)果存儲器中。HAE引擎在無衰減的2.8 kHz通帶內(nèi)計(jì)算諧波信息(相當(dāng)于3.3 kHz的-3 dB帶寬),用于45 Hz至66 Hz范圍內(nèi)的線路頻率。
同時(shí)可使用相電流和來分析零線電流。在新采樣周期的最初時(shí)刻,諧波引擎在含有數(shù)據(jù)RAM內(nèi)的預(yù)定義位置循環(huán),該數(shù)據(jù)RAM含有分析儀處理結(jié)果。若有需要,內(nèi)容可進(jìn)一步處理。
電壓和電流數(shù)據(jù)可來自Sinc模塊或ADC(兩者均存儲在SRAM中),并輸入至HAE模塊,速率為8 kHz。該速率下可產(chǎn)生一個(gè)中斷,提示太陽能光伏逆變器輸入可用數(shù)據(jù)。進(jìn)行數(shù)據(jù)分析并執(zhí)行下列計(jì)算時(shí),HAE模塊將產(chǎn)生另一次中斷,提示太陽能光伏系統(tǒng)準(zhǔn)備顯示諧波分析數(shù)據(jù)。ADSP-CM403還可將HAE至DMA的全部結(jié)果數(shù)據(jù)直接傳輸至SRAM,之后系統(tǒng)代碼便可顯示結(jié)果。這會導(dǎo)致整個(gè)HAE系統(tǒng)的少許代碼開銷。
ADSP-CM403XY HAE結(jié)果
圖4中的HAE結(jié)果清楚表明觀察電壓均方根數(shù)據(jù)時(shí),系統(tǒng)中存在哪些諧波。圖中50 Hz基波清晰可見,但250 Hz和350 Hz處的較低諧波(如諧波5和7)亦可在本示例結(jié)果中看到。
這些計(jì)算中采用的特定等式如下所示;下列等式同時(shí)適用于基波和諧波計(jì)算。
Harmonic Engine Outputs and Registers where Values are Stored
表1. HAE數(shù)學(xué)計(jì)算
Quantity | Definition | HAE Registers |
RMS of the Fundamental Component | V1,I1 | F_VRMS, F_IRMS |
RMS of the Harmonic Component | Vn,In,n = 2,3,...,12 | Hnn_VRMS, Hnn_XIRMS |
Active Power of the Fundamental Component | P1 = V1I1cos( φ1 - γ1) | F_ACT |
Active Power of the Harmonic Component | Pn = VnIncos(φn - γn), n = 2,3,...,12 | Fnn_ACT |
Reactive Power of the Fundamental Component | Q1 = V1I1sin(φ1 - γ1) | F_REACT |
Reactive Power of the Harmonic Component | Qn = VnInsin(φ1 - γ1), n = 2,3,...,12 | Hnn_REACT |
Apparent Power of the Fundamental Component | S1 = V1I1 | F_APP |
Apparent Power of the Harmonic Component | Sn = VnIn, n = 2,3,...,12 | Hnn_APP |
Power Factor of the Fundamental Component | F_PF | |
Power Factor of the Harmonic Component | Hnn_PF | |
Harmonic Distortion of a Harmonic Component | Hnn_VHDN, Hnn_IHDN |
編程示例
INT HAE_CONFIG(VOID)
{ INT I;
HAE_INPUT_DATA(VOUTPUT, SINC_VEXT_DATA);
HAE_INPUT_DATA(IOUTPUT, SINC_IMEAS_DATA);
RESULT = ADI_HAE_OPEN(DEVNUM, DEVMEMORY, MEMORY_SIZE, &DEV);
RESULT = ADI_HAE_REGISTERCALLBACK(DEV, HAECALLBACK, 0);
RESULT = ADI_HAE_SELECTLINEFREQ(DEV, ADI_HAE_LINE_FREQ_50);
RESULT = ADI_HAE_CONFIGRESULTS(DEV, ADI_HAE_RESULT_MODE_IMMEDIATE, ADI_HAE_SETTLE_TIME_512,ADI_HAE_UPDATE_RATE_128000);
RESULT = ADI_HAE_SETVOLTAGELEVEL (DEV, 1.0);
RESULT = ADI_HAE_ENABLEINPUTPROCESSING(DEV, FALSE, FALSE); /* FILTER ENABLED */
/* ENABLE ALL HARMONICS (IN ORDER) */
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_1, 1);
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_2, 2);
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_3, 3);
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_4, 4);
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_5, 5);
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_6, 6);
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_7, 7);
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_8, 8);
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_9, 9);
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_10, 10);
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_11, 11);
RESULT = ADI_HAE_HARMONICINDEX (DEV, ADI_HAE_HARMONIC_INDEX_12, 12);
RESULT = ADI_HAE_SUBMITTXBUFFER(DEV, &TXBUFFER1[0], SIZEOF(TXBUFFER1));
RESULT = ADI_HAE_SUBMITTXBUFFER(DEV, &TXBUFFER2[0], SIZEOF(TXBUFFER2));
RESULT = ADI_HAE_ENABLEINTERRUPT(DEV, ADI_HAE_INT_RX, TRUE);
RESULT = ADI_HAE_ENABLEINTERRUPT(DEV, ADI_HAE_INT_TX, TRUE);
RESULT = ADI_HAE_CONFIGSAMPLEDIVIDER(DEV, 100000000);
RESULT = ADI_HAE_RUN(DEV, TRUE);
// RESULT = ADI_HAE_CLOSE(DEV);
}
/* EVENTS */
VOID HAECALLBACK(VOID* PHANDLE, UINT32_T EVENT, VOID* PARG)/* ISR ROUTINE TO LOAD / UNLOAD DATA FROM HAE
{
UINT32_T N;
ADI_HAE_EVENT EEVENT = (ADI_HAE_EVENT)EVENT;/* RESULTS RECEIVED FROM HAE 128MS */
IF (EEVENT == ADI_HAE_EVENT_RESULTS_READY)
{/* GET RESULTS */
PRESULTS = (ADI_HAE_RESULT_STRUCT*)PARG;/* POINTER TO TXBUFFER1 OR TXBUFFER2 */
/* DO SOMETHING WITH THE RESULTS */
FOR (N=0; N
{
IRMS[N] = PRESULTS[N].IRMS;
VRMS[N] = PRESULTS[N].VRMS;
ACTIVEPWR[N] = PRESULTS[N].ACTIVEPWR;
}
}/* TRANSMIT INPUT SAMPLES TO HAE – 8KHZ */
IF (EEVENT == ADI_HAE_EVENT_INPUT_SAMPLE)
{/* FIND LATETS SAMPLES FROM SINC BUFFER . */
ADI_HAE_INPUTSAMPLE(DEV, (SINC_IMEAS_DATA[PWM_SINC_LOOP]),(SINC_VEXT_DATA[PWM_SINC_LOOP]));
INDEX++;
IF (INDEX >= NUM_SAMPLES) INDEX = 0;
}
COUNT++;
}
-
ADSP
+關(guān)注
關(guān)注
2文章
47瀏覽量
29265
發(fā)布評論請先 登錄
相關(guān)推薦
評論