帳號:
密碼:
最新動態
 
產業快訊
CTIMES / 文章 /
ADSP-CM403 HAE在太陽能應用中的諧波分析
 

【作者: Martin Murnane】   2021年11月19日 星期五

瀏覽人次:【11173】

將新一代太陽能光伏逆變器接入智慧電網,逆變器必須有越來越高的智慧程度進行配合。本文敘述創新技術以諧波分析引擎(HAE)方式改善智慧電網的整合度,為其監控電源品質和增強穩定度。


太陽能光伏逆變器轉換來自太陽能面板的電能,並能高效的將其佈署到公用電網中。早期太陽能PV逆變器只是將電能轉儲到公用電網的模組。但是,新設計要求太陽能光伏逆變器對電網的穩定性作出貢獻。


本文敘述最新的ADI技術如何以諧波分析引擎(HAE)的方式改善智慧電網的整合度,並監控電網上的電源品質,進而大幅增強電網穩定。


智慧電網

什麼是智慧電網?IMS Research將智慧電網定義為「一種自身能夠高效匹配和管理發電和用電並可最大程度地利用各種可用資源的公用供電基礎設施」。若要將新一代太陽能光伏逆變器接入智慧電網,則逆變器需要越來越高的智慧程度才能實現。這本身就是一個難題,主要是因為當電力需求在別處時,此處卻連接了過多的電網,從而發生不平衡。


基於此原因,如前文所述,太陽能光伏逆變器需要具備更高的智慧程度,並且這種智慧應側重於電網整合,其中系統需協助穩定電網,而非作為電網的一個簡單電源使用。



圖一 : ADSP-CM403 HAE框圖(source:ADI)
圖一 : ADSP-CM403 HAE框圖(source:ADI)

這要求能更佳對注入電網的電能進行測量、控制和品質分析。當然,這會促成新指令的發表以及更高的技術要求,進而直接導致新技術的產生。


ADSP-CM403XY HAE周邊模組

HAE模組本質上是一個數位PLL,其簡化原理圖如圖二所示。HAE連續接收V和I資料,並且數個週期後將鎖定至輸入波形的基波。HAE模組的輸入範圍為45 Hz至66 Hz。最多可分析40個諧波,每次12個。對於每個諧波,PLL會試圖鎖定至所需的訊號頻率。



圖二 : HAE簡化數位PLL
圖二 : HAE簡化數位PLL

諧波引擎硬體模組與諧波分析儀共同處理結果。由於諧波引擎產生的結果為最終格式,這些結果資料保存在結果記憶體中。HAE引擎在無衰減的2.8 kHz通帶內計算諧波資訊(相當於3.3 kHz的-3 dB頻寬),用於45 Hz至66 Hz範圍內的線路頻率。



圖三 : HAE通帶頻率
圖三 : HAE通帶頻率

同時可使用相電流和來分析零線電流。在新採樣週期的最初時刻,諧波引擎在含有資料RAM內的預定義位置迴圈,該資料RAM含有分析儀處理結果。若有需要, 內容可進一步處理。


電壓和電流資料可來自Sinc模組或ADC(兩者均儲存在SRAM中),並輸入至HAE模組,速率為8 kHz。該速率下可產生一個中斷,提示太陽能光伏逆變器輸入可用數據。進行資料分析並執行下列計算時,HAE模組將產生另一次中斷,提示太陽能光伏系統準備顯示諧波分析數據。ADSP-CM403還可將HAE至DMA的全部結果資料直接傳輸至SRAM,之後系統代碼便可顯示結果。這會導致整個HAE系統的代碼開銷很小。


ADSP-CM403XY HAE結果

圖四中的HAE結果清楚顯示觀察電壓均方根資料時,系統中存在哪些諧波。圖中50 Hz基波清晰可見,但250 Hz 和350 Hz處的較低諧波(如諧波5和7)亦可在本示例結果中看到。



圖四 : HAE的V rms示例結果(諧波1-12)
圖四 : HAE的V rms示例結果(諧波1-12)

關於這些計算中採用的特定等式,同時適用於基波和諧波計算,例如諧波引擎輸出和儲存值的暫存器的對應。


程式設計示例

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++;


}


(本文作者Martin Murnane為ADI系統架構師)


相關文章
探討用於工業馬達控制的CANopen 協定
確保機器人的安全未來:資安的角色
智慧型無線工業感測器之設計指南
自動測試設備系統中的元件電源設計
運用返馳轉換器的高功率應用設計
comments powered by Disqus
相關討論
  相關新聞
» 艾邁斯歐司朗全新UV-C LED提升UV-C消毒效率
» 貿澤電子即日起供貨ADI ADAQ7767-1 μModule DAQ解決方案
» ASM攜手清大設計半導體製程模擬實驗 亮相國科會「科普環島列車」
» TIE未來科技館閉幕 揭曉兩項競賽獎得主
» 諾貝爾物理獎得主登場量子論壇 揭幕TIE未來科技館匯聚國內外前瞻科技


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.3.139.97.233
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw