简介
太阳能光伏逆变器转换来自太阳能面板的电能并高效地将其部署到公用电网中。早期太阳能pv逆变器只是将电能转储到公用电网的模块。但是,新设计要求太阳能光伏逆变器对电网的稳定性作出贡献。
本文将回顾最新的adi技术如何以hae(谐波分析引擎)的方式改善智能电网的集成度,并监控电网上的电源质量,从而极大地增强电网稳定
智能电网
什么是智能电网?ims research将智能电网定义为“一种自身能够高效匹配和管理发电和用电并可最大程度地利用各种可用资源的公用供电基础设施”。若要将新一代太阳能光伏逆变器接入智能电网,则逆变器需要越来越高的智能程度才能实现。这本身就是一个难题,主要是因为当电力需求在别处时,此处却连接了过多的电网,从而发生不平衡。基于这个原因,如前文所述,太阳能光伏逆变器需要具备更高的智能程度,并且这种智能应侧重于电网集成,其中系统需协助稳定电网,而非作为电网的一个简单电源使用。
这要求更好地对注入电网的电能进行测量、控制和质量分析。当然,这会促成新指令的发布以及更高的技术要求,进而直接导致新技术的产生。
adsp-cm403xy hae外设模块
hae模块本质上是一个数字pll,其简化原理图如下图所示。hae连续接收v和i数据,并且数个周期后将锁定至输入波形的基波。hae模块的输入范围为45 hz至66 hz。最多可分析40个谐波,每次12个。对于每个谐波,pll会试图锁定至所需的信号频率
谐波引擎硬件模块与谐波分析仪共同处理结果。由于谐波引擎产生的结果为最终格式,这些结果数据保存在结果存储器中。hae引擎在无衰减的2.8 khz通带内计算谐波信息(相当于3.3 khz的-3 db带宽),用于45 hz至66 hz范围内的线路频率。
同时可使用相电流和来分析零线电流。在新采样周期的最初时刻,谐波引擎在含有数据ram内的预定义位置循环,该数据ram含有分析仪处理结果。若有需要,内容可进一步处理。
电压和电流数据可来自sinc模块或adc(两者均存储在sram中),并输入至hae模块,速率为8 khz。该速率下可产生一个中断,提示太阳能光伏逆变器输入可用数据。进行数据分析并执行下列计算时,hae模块将产生另一次中断,提示太阳能光伏系统准备显示谐波分析数据。adsp-cm403还可将hae至dma的全部结果数据直接传输至sram,之后系统代码便可显示结果。这会导致整个hae系统的少许代码开销。
adsp-cm403xy hae结果
图4中的hae结果清楚表明观察电压均方根数据时,系统中存在哪些谐波。图中50 hz基波清晰可见,但250 hz和350 hz处的较低谐波(如谐波5和7)亦可在本示例结果中看到。
这些计算中采用的特定等式如下所示;下列等式同时适用于基波和谐波计算。
harmonic engine outputs and registers where values are stored
表1. hae数学计算
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++;
}
如何使用固态继电器(SSR)给恒温器供电?
国自机器人被认定为浙江省第25批省级企业技术中心
新型SimpleLink™蓝牙低功耗CC2640R2F无线MCU
清软微视周继乐:化合物半导体衬底和外延缺陷无损检测技术
智慧路灯目前现状如何?市场机会在哪里?未来前景会怎么样?
ADSP-CM403 HAE在太阳能应用中的谐波分析
ai取代不了的几个行业
AX6066+A433实现LED驱动电源
影响TD-LTE终端发展的两大因素
具可编程补偿功能的高效率、高密度PSM μModule稳压器
荣耀V9、荣耀9怎么样?华为荣耀V9被自家兄弟华为荣耀9截胡,荣耀V9、荣耀9你选谁?
卢伟冰强调,红米7在千元内无敌
如何使用NiMotionUSBCAN转换器?
基于ARM微控制器PC2104实现曼彻斯特码转换电路的应用设计
OpenHarmony传炸弹应用如何进行开发
安费诺用于现代医疗设备和数据中心的连接器产品
内部总线包括
人工智能专业是什么
FT232AM的设计电路及中文资料
无线通信技术在智能电网主要有哪些应用