大家好
在我看来、包含在"SolarLib"应用库中的函数"SINEAANALYZER_DIFF_F"的建议初始化中存在一个错误。
由于初始化函数"SINEAALYZER_DIFF_F_INIT"只会清除为零个内部字段、并且库的说明建议仅初始化"SampleFreq"和"Threshold"字段、
"nsamplesMin"和"nsamplesMax"字段保持= 0、而它们在处理函数中用于验证检测到的过零点。
我认为在调用"SINEAANALYZER_DIFF_F_INIT"之后、在使用计算函数之前、应该将它们初始化为如下所示的内容:
nsamplesMin =采样频率/最大电网频率
nsamplesMax =采样频率/最小电网频率
实际上、文件 SolarLib.pdf 建议对例程的"SINEAALYZER_DIFF_wPWR_F"版本(也计算功率的版本)进行此初始化、但这些值也在"较轻"版本中使用:
if (v->nsamplesMin < v->nsamples < v->nsamplesMax)
{
//计算@过零点
}
因此、需要对它们进行初始化。