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.

[参考译文] TMS320F28069M:EST_getOneOverDcBus_pu ()和#39;被捕获和#39;结果_IQ (100.0)

Guru**** 2604675 points
Other Parts Discussed in Thread: LAUNCHXL-F28069M, MOTORWARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/681630/tms320f28069m-est_getoneoverdcbus_pu-trapped-at-result-_iq-100-0

器件型号:TMS320F28069M
主题中讨论的其他器件:LAUNCHXL-F28069MMOTORWARE

情况:在高电压 BLDC 原型样本中将 LAUNCHXL-F28069M 与 InstaSpin motorware 17 'proj_lab11a'搭配使用

您好!

我面临以下问题:

对于我们的目标应用,我们创建了一个具有双电源的高电压电子硬件:  

- 用于控制系统的12V 电源,即 launchpad F26069M、gatedriver 和电流放大器

-功率级400V 电源

允许在常规运行会话期间打开/关闭400V 电源、同时12V 电源持续供电。

问题是、在关闭和再次打开400V 电源后(即400V 电压已降至"0V")、电机启动尝试失败(电机相电流直接偏高、不是预期的正弦波)。

我发现、通过将400V 电压信号 (gAdcData.DCBus)限制在大约20V 的最小值、即在关闭400V 电源的情况 下、内部信号(gAdcData.DCBus)不会下降到"0"、而是下降到大约_IQ (0.04)的值、我可以避免这种影响。

进一步调查显示、该影响与函数调用 'EST_getOneOverDcBus_pu()'的结果相关联。

通常结果是合理的,并根据 gAdcData.DCBus 信号进行更改,该信号会传输到估算器:

//运行估算器

EST_run (estHandle、&IAB_PU、&VAB_PU、gAdcData.DCBus、TRAJ_getIntValue (trajHandle_SPD));

 

如果 gAdcData.DCBus -信号下降到低于特定值、这会导致_IQ (100.0)的'EST_getOneOverDcBus_pu'输出、则该输出值被冻结。

即使   gAdcData.DCBus -信号被提升回较高(常规)值,也无法释放这种“被捕获”的情况。   

 

目前、我可以使用"高电压低限值贴片"。

但是、我 有兴趣了解这个问题、即

- 是 所希望的服从行为

- 我是否应该使用 InstaSpin 软件的诊断功能来检测这种情况  

-是否 因违反  任何边界而引起的故障情况

 

此致

Martin

 


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Martin、

    在关闭总线电压时处理 EST 的方式很少见、系统无法按预期处理。 OneOverDcBus 遵循总线电压的倒数、限制为100、因此任何低于满量程电压1/100的值都会导致 OneOverDcBus 限制为100。 通常、MCU 由直流总线供电、MCU 会在出现此问题之前断电。

    我假设您了解总线电压补偿和 PID 控制器、如果不了解、请阅读这些主题。

    OneOverDcBus 用于 D 和 Q 电流 PID 控制器的总线电压补偿、当总线电压(稍低)时、应提供(略高)的占空比。 您可以在 CTRL_runOnLine_User()和 CTRL_runOnLine()中看到这一点。 通过将 PID 控制器 Kp 值与 OneOverDcBus 相乘来调整这些值。

    如果 OneOverDcBus 为_IQ (100.0)、则调整后的 KP 可能会超过_IQ (127.99)、从而导致溢出问题。 为了防止这个潜在的溢出问题、我使用了以下更改:

    //计算 Kp 增益
    //调整 Kp 而不是输出以防止饱和问题
    if (CTRL_getFlag_enableDcBusComp (handle)
    ){
    KP_ID =_IQrsmpy (KP_ID、EST_getOneOverDcBus_pu (obj->estHandle));
    // IQrsmpy 而不是 IQmpy
    } 

    在 CTRL_runOnLine 和 CTRL_runOnLine_User 中为 ID 和 IQ 电流控制器执行此操作。

    调用 EST_run 时会更新 OneOverDcBus。 直流总线滤波器极 USER_DCBus_POLE_rps 是相关的。 根据满量程电压值和 EST_FREQ_Hz 等参数、滤波器可能会尝试使用小值调整 OneOverDcBus、从而导致其在舍入时丢失。 这可能会导致 OneOverDcBus 卡住。 我没有尝试过、我需要对其运行一些测试。

    权变措施是将报告给 EST_run 的值保持在可用范围内。 从同一总线为 MCU 供电时通常会自动出现这种情况、因此大多数人不会遇到此问题。

    当在直流总线补偿激活的情况下实际运行电流控制器时、应将正确的总线电压报告给 EST_RUN、但在电流控制器未激活的情况下报告最小值100伏是没有危险的。 报告100V 可将 OneOverDcBus 保持在_IQ (5.0)左右、而不是在_IQ (100.0)处削波。

    在测试过程中、在打开 PWM 之前进行检查以确保 OneOverDcBus 处于可用范围内似乎是明智的。

    此致、

    Rob。