孤島檢測(cè)主動(dòng)移頻正反饋方法的仿真測(cè)試
前言:主動(dòng)移頻正反饋方法實(shí)現(xiàn)簡(jiǎn)單,計(jì)算量小,檢測(cè)盲區(qū)小,在逆變器的孤島檢測(cè)中有很多應(yīng)用。
? 通過(guò)在并網(wǎng)逆變器的電流給定上的角度上做頻率擾動(dòng),正常工作時(shí)PCC點(diǎn)頻率被電網(wǎng)鉗位,而當(dāng)電網(wǎng)失壓時(shí),PCC點(diǎn)的頻率會(huì)因?yàn)樾轮芷诘逆i相環(huán)檢測(cè)的頻率和孤島分析方法疊加的頻率擾動(dòng)影響,產(chǎn)生頻率的變化,當(dāng)頻率變化足夠大時(shí),孤島就能被檢測(cè)到。
? 惡劣情況下本地負(fù)載RLC的Q值很小,其諧振頻率又恰好是50Hz,在這種極端情況下,電網(wǎng)失壓后可能逆變器的輸出電流和PCC點(diǎn)的電壓頻率基本上無(wú)變化,就會(huì)導(dǎo)致孤島檢測(cè)失敗。目前使用主動(dòng)移動(dòng)正反饋算法的孤島分析方法,能較好的識(shí)別出孤島情況。其算法思想是,正常工作下使用接近電網(wǎng)頻率的擾動(dòng)頻率來(lái)輸出逆變器電流,在電網(wǎng)失壓后,PCC點(diǎn)頻率變化時(shí),把新PCC的頻率與默認(rèn)情況下正常電網(wǎng)頻率的誤差疊加到新的頻率擾動(dòng)上去,擴(kuò)大孤島頻率擾動(dòng)的幅度,更快的檢測(cè)到孤島情況。
代碼實(shí)現(xiàn),以狀態(tài)機(jī)的方法簡(jiǎn)單的實(shí)現(xiàn)主動(dòng)移頻,其方法是對(duì)輸入鎖相環(huán)的PCC相位角度theta來(lái)實(shí)現(xiàn),在函數(shù)輸出的theta變量上以更高的頻率運(yùn)行,其必然會(huì)更快與PCC鎖相環(huán)的輸出theta達(dá)到PI和2PI這兩個(gè)區(qū)域。使用了狀態(tài)機(jī)來(lái)分別管理等于PI和2PI區(qū)域時(shí)候的情況,就是在這里停止函數(shù)輸出的THETA的繼續(xù)積分。在波形上可以看到此時(shí)區(qū)域?yàn)槠脚_(tái)區(qū)域,就是文獻(xiàn)中提出的Tz區(qū)域。

??正反饋部分主要是判斷PCC的電網(wǎng)與正常電網(wǎng)頻率的差,如果超出到一定范圍則在提升或降低主動(dòng)移頻率方法的擾動(dòng)頻率,該功能僅在電網(wǎng)負(fù)向過(guò)零區(qū)域穿越時(shí)動(dòng)作一次。
測(cè)試,單相并網(wǎng)逆變器

運(yùn)行,CH4 AFD 輸出的電流給定基準(zhǔn)正弦波,可見(jiàn)Tz區(qū)域?qū)Σ⒕W(wǎng)電流還是有一定的影響。

在1秒時(shí)斷開(kāi)電網(wǎng)連接,本地負(fù)載諧振頻率50Hz(25歐,1mH,10.3mF)開(kāi)關(guān)頻率變化明顯,孤島能被檢測(cè)到。

本人能力有限,如有錯(cuò)誤懇請(qǐng)幫忙指正,感謝觀看感謝支持,謝謝。
關(guān)鍵字:AFD_0819
static?inline?float32_t?ads_island_func(AFD_SS?*p,?float32_t?grid_theta,?float32_t?cf,?float32_t?grid_freq_norm,?float32_t?ts,?float32_t?pcc_freq)
{
? ?const float32_t _2PI = 6.2831852f;
?? const float32_t ?_PI = 3.1415926f;
? ?const?float32_t??SPLL_THETA_STEP?=?0.05f;
? ?float32_t?islanding_AFD_Tz?=?cf?*?_2PI;
? ?float32_t?k_ff?=?0.125f;
? ?float32_t?island_APF_setp?=?0.5f;
? ?static?float32_t?AFD_FREQ, theta_inv, step;
? ?static?uint16_t?run_afd_theta_flag;
? ?const?float32_t?islanding_delat_freq?=?grid_freq_norm?-?pcc_freq;
? ?const?float32_t?over_aff_freq?=?0.2f;
? ??switch(p->enum_ac)
? ? {
? ??case?ac_neg_hold:
? ? ? ? theta_inv?=?0;
? ? ? ? run_afd_theta_flag?=?0;
? ? ? ?
? ? ? ??if(pcc_freq?>=?grid_freq_norm)
? ? ? ? {
? ? ? ? ? ??if((pcc_freq?-?grid_freq_norm)?>?over_aff_freq)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? step?+=?k_ff?*?islanding_delat_freq;
? ? ? ? ? ? }
? ? ? ? ? ??else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? step?=?island_APF_setp;
? ? ? ? ? ? }
? ? ? ? ? ? AFD_FREQ?=?pcc_freq?+?step;
? ? ? ? }
? ? ? ??else
? ? ? ? {
? ? ? ? ? ??if((grid_freq_norm?-?pcc_freq)?>?over_aff_freq)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? step?+=?k_ff?*?island_APF_setp;
? ? ? ? ? ? }
? ? ? ? ? ??else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? step?=?island_APF_setp;
? ? ? ? ? ? }
? ? ? ? ? ? AFD_FREQ?=?pcc_freq?-?step;
? ? ? ? }
? ? ? ??if(grid_theta?>?SPLL_THETA_STEP)
? ? ? ? {
? ? ? ? ? ??p->enum_ac?=?ac_pos;
? ? ? ? ? ? theta_inv?=?0;
? ? ? ? ? ? run_afd_theta_flag?=?1u;
? ? ? ? }
? ? ? ??break;
? ??case?ac_pos:
? ? ? ??if(theta_inv?>?(_PI?-?islanding_AFD_Tz))
? ? ? ? {
? ? ? ? ? ? theta_inv?=?_PI;
? ? ? ? ? ? run_afd_theta_flag?=?0;
? ? ? ? }
? ? ? ??if(grid_theta?>?(_PI?-?SPLL_THETA_STEP))
? ? ? ? {
? ? ? ? ? ??p->enum_ac?=?ac_neg;
? ? ? ? ? ? theta_inv?=?_PI;
? ? ? ? ? ? run_afd_theta_flag?=?1u;
? ? ? ? }
? ? ? ??break;
? ??case?ac_neg:
? ? ? ??if(theta_inv?>?(_2PI?-?islanding_AFD_Tz))
? ? ? ? {
? ? ? ? ? ? theta_inv?=?_2PI;
? ? ? ? ? ? run_afd_theta_flag?=?0;
? ? ? ? }
? ? ? ??if(grid_theta?>?(_2PI?-?SPLL_THETA_STEP))
? ? ? ? {
? ? ? ? ? ??p->enum_ac?=?ac_neg_hold;
? ? ? ? ? ? theta_inv?=?_2PI;
? ? ? ? ? ? run_afd_theta_flag?=?1u;
? ? ? ? }
? ? ? ??break;
? ??default:
? ? ? ??p->enum_ac?=?ac_neg_hold;
? ? ? ? theta_inv?=?0;
? ? ? ? run_afd_theta_flag?=?0;
? ? ? ??break;
? ? }
? ??if(run_afd_theta_flag) ?{theta_inv?+=?_2PI?*?ts?*?AFD_FREQ;}
? ??return(theta_inv);
}