工具/软件:Code Composer Studio
您好!
我正在参考实验10进行过调制(2/3)。 我绘制的 Iq 在 SVM 进入过调制时变为非常嘈杂、我不确定(SVGENCURRENT)模块的正确配置。 尽管我使用3个分流器。 在用户手册中、我找不到有关过调制配置的文档。 如果能提供有关该主题的文档资源或指导我进行正确配置、将不胜感激。
谢谢你。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
您好!
我正在参考实验10进行过调制(2/3)。 我绘制的 Iq 在 SVM 进入过调制时变为非常嘈杂、我不确定(SVGENCURRENT)模块的正确配置。 尽管我使用3个分流器。 在用户手册中、我找不到有关过调制配置的文档。 如果能提供有关该主题的文档资源或指导我进行正确配置、将不胜感激。
谢谢你。
您好!
您是否已查看下面显示的文档?
您可以在第228页找到有关过调制的详细信息。
如果您仍有疑问、请告诉我。
最棒的
John
谢谢、John
我已经浏览过文档、但我找不到有关当前重建配置参数的任何详细信息。 例如、在以下代码中、
//初始化并设置100% SVM 生成器
svgencurentHandle = SVGENCURRENT_INIT (&svgencCURRENT、sizeof (svgencCURRENT));
//设置 svgen 电流
{
float_t minWidth_microseconds = 1.0;
uint16_t minWidth_Counts =(uint16_t)(minWidth_microseconds
* USER_SYSTEM_FREQ_MHz);
float_t fdutyLimit= 0.5
-(2.0 * minWidth_microseconds * USER_PWM_FREQ_kHz * 0.001);
_iq dutyLimit =_IQ (dutyLimit);
SVGENCURRENT_setMinWidth (svgencurentHandle、minWidth_Counts);
SVGENCURRENT_setIgnoreShunt (svgencurentHandle、USE_ALL);
SVGENCURRENT_setMode (svgencurentHandle、all_PHASE_ANTURE);
SVGENCURRENT_setVlimit (svgencurentHandle、dutyLimit);
}
minWidth_microseconds 代表什么? 调整它会影响性能的哪一部分?
在 mainISR 中、以下代码行的重要性是什么、就好像它在尝试在下一个周期或其他方面调整采样点一样。 我发现如果我添加这些代码行、当 SVM 进入过调制区域时、电流控制器会严重不稳定、因为我正在使用100%过调制、除非我删除这些代码行。
SVGENCURRENT_IgnoreShunt_e 忽略 ShuntNextCycle =
SVGENCURRENT_getIgnoreShunt (svgencurentHandle);
SVGENCURRENT_VmidShunt_e midVolShunt = SVGENCURRENT_getVmid (
SvgencurentHandle);
//在低侧脉冲的中间设置触发点
HAL_SetTrigger (halHandle、ignoreShuntNextCycle、midVolShunt);
我的主 ISR 函数如下所示
中断空 mainISR (空)
{
uint32_t timer0Cnt;
uint32_t timer1cnt;
SVGENCURRENT_MeasureShunt_e measurableShuntThisCycle = SVGENCURRENT_getMode (
SvgencurentHandle);
//读取定时器1值并更新 CPU 使用模块
timer1Cnt = HAL_readTimerCnt (halHandle、1);
cpu_usage_updateCnts (cpu_usageHandle、timer1Cnt);
//读取定时器0值并更新 FEM
timer0Cnt = HAL_readTimerCnt (halHandle、0);
FEM_updateCnts (femHandle、timer0Cnt);
FEM_run (femHandle);
//确认 ADC 中断
HAL_acqAdcInt (halHandle、ADC_IntNumber_1);
//转换 ADC 数据
HAL_readAdcData (halHandle、&gAdcData);
//运行当前重建算法
SVGENCURRENT_RunRegenCurrent (svgencurentHandle、
(MATH_vec3*)(gAdcData.I.Value));
gIavg.value[0]+=(gAdcData.I.value[0]- gIavg.value[0])>> gIavg_shift;
gIavg.value[1]+=(gAdcData.I.value[1]- gIavg.value[1])>> gIavg_shift;
gIavg.value[2]+=(gAdcData.I.value[2]- gIavg.value[2])>> gIavg_shift;
IF (measableShuntThisCycle > two_phase _ measurable)
{
gAdcData.I.value[0]= gIavg.value[0];
gAdcData.I.value[1]= gIavg.value[1];
gAdcData.I.value[2]= gIavg.value[2];
}
//运行控制器
CTRL_run (ctrlHandle、halHandle、&gAdcData、&gPwmData);
//运行 PWM 补偿和电流忽略算法
SVGENCURRENT_COMPPwmData (svgencurentHandle、&(gPwmData.tABC)、
gPwmData_prev);
//写入 PWM 比较值
HAL_writePwmData (halHandle、&gPwmData);
{
/* SVGENCURRENT_IgnoreShunt_e ignoreShuntNextCycle =
SVGENCURRENT_getIgnoreShunt (svgencurentHandle);
SVGENCURRENT_VmidShunt_e midVolShunt = SVGENCURRENT_getVmid (
SvgencurentHandle);
//在低侧脉冲的中间设置触发点
HAL_SetTrigger (halHandle、ignoreShuntNextCycle、midVolShunt);*
}
//设置控制器
CTRL_setup (ctrlHandle);
//读取定时器1值并更新 CPU 使用模块
timer1Cnt = HAL_readTimerCnt (halHandle、1);
cpu_usage_updateCnts (cpu_usageHandle、timer1Cnt);
//运行 CPU 使用模块
cpu_usage_run (cpu_usageHandle);
返回;
}// mainISR()函数结束
期待您的回复、
谢谢你
Ibraheem
您可以查看 instaSPIN 实验室用户指南中的 lab10a 一章。 "minWidth_microseconds"的值取决于 ADC 采样时间以及 FET 和栅极驱动器的头带值、它应该大于两个值的总和。
对您发布的另一个线程进行了答复、将 USER_MAX_VS_MAG_PU 设置为低于0.5777的值、或直接限制 PWM 占空比。