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.

[参考译文] TMS320F28379D:动态计算 Vq 和 Vd 限制、以在双轴驱动项目中实现 MPTA 和 FWC

Guru**** 2553450 points
Other Parts Discussed in Thread: MOTORWARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1366623/tms320f28379d-dynamic-calculation-of-vq-and-vd-limits-to-implement-mpta-and-fwc-in-dual-axis-drive-project

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WAREMOTORWARE

工具与软件:

专家们、您好!

我以前查看过以下位置的实验项目:

C2000 4.12.7CK_SDK_4_00_00_00\solutions\common\sensorless_foc\docs\labs Ware_Motor

在扭矩环路(Project Name:is06_Torque_control_eabi)中、Iq 和 Id 的电流基准在 ISR 中给出

首先、您能否确认这些值位于 APM 中、而不是 PU 中?

我想所有 PI 计算都仅在安培中完成? 只有在 svgen 模块中、才会将伏和安培值转换为 pu? 请您确认一下!

在同一 ISR 中、我看到还会计算 Vq 和 Vd 限值。

在 user.h 文件中、 提到了选择正确的 USER_MAX_VS_MAG_PU 的推荐!

//! 简明定义允许的最大值与幅度(标幺值)
//! 该值设置 Id 和输出的最大幅值
//! Iq PI 电流控制器。 Id 和 Iq 电流控制器输出
//! 为 Vd 和 Vq。 Vs、Vd 与 Vq 之间的关系为:
//! Vs = sqrt (Vd^2 + Vq^2)。 在此 FOC 控制器中、设置了 Vd 值
//! 等于 USER_MAX_VS_MAG*USER_VD_MAG_FACTOR。
//! 因此、将 VQ 值设置为等于 sqrt (USER_MAX_VS_MAG^2 - Vd^2)。
//!
//! 对于峰值为的纯正弦波、设置 USER_MAX_VS_MAG = 0.5
//! SQRT (3)/2 = 86.6%占空比。 无电流重构
//! 栅极驱动器。
//!
//! 对于纯正弦波、设置 USER_MAX_VS_MAG = 1/SQRT (3)= 0.5774
//! 具有100%占空比时的峰值。 相移
//! 需要的上拉电阻器。
//!
//! 设置 USER_MAX_VS_MAG = 2/3 = 0.6666生成梯形
//! 电压波形。 将需要电流重构
//! (实验08)。
//!
//! 对于空间矢量过调制、详情请参见 lab08
//! SVM 生成器可满足的系统要求
//! 更改为梯形。

我想在中实现相同的功能 具有有传感器 foc 的双轴驱动器工程 . 我想修改 ID 引用、而不是将其保持为零。

这将构成在双轴项目中实现 MPTA 和 FWC 逻辑的基础。

TI\c2000\C2000 Ware_Motor SDK_ \solutions\boostxl_3phganinv\f2837x\ccs\sensored_foc "。

由于双轴项目中的最大调制指数固定为、因此不需要过调制功能作为占空比 0.96. .

在这个项目中,我看到限制在函数 initControlVars()内的 dual_axis_servo_drive_user.c 中硬编码。  

因此 Vq 的结果是0.8*0.96=0.768、Vd 的结果是0.48

求矢量和、我看到它小于1.0。 ((sqrt (Vd^2 + Vq^2)< 1)

根据实验源、Vs 幅度不允许超过0.5、但在双轴驱动器代码中、是否允许超过0.5? 您能解释一下吗!

我在这里看到的问题是 PI 控制器中的 IQ.out 控制信号(即 VQ)将始终限制在0.5pu、但 正如上面在  initControlVars ()中计算的那样、它可以高达0.76? 请计算!

在快速电流环路 ISR 中、我计划在快速电流环路中的 PI 控制器运行之前添加此函数、您能否确认是否在 sensorless foc 实验项目中完成了相同的操作?

typedef struct _MaxVoltageVectors_Vars_t_
{
    float32_t Max_Vs_Mag_pu;
    float32_t Max_Vd_v;
    float32_t Max_Vd_pu;
    float32_t Max_Vq_v;
    float32_t Max_Vq_pu;
} MaxVoltageVectors_Vars_t;
extern MaxVoltageVectors_Vars_t VoltageVectors[2];

void dynamicVoltageVectorLimitCalc(MaxVoltageVectors_Vars_t *vector,MOTOR_Vars_t *pMotor)
{
    volatile float32 v_to_pu_factor =  0.0037037f;
    if(pMotor->Vdcbus > 0)
    {
        //DC bus will varying from 260 to 310 in real time.
        v_to_pu_factor = 1/pMotor->Vdcbus;
    }
    else
    {
        //force to 1/270
        v_to_pu_factor = 0.0037037f;
    }
    vector->Max_Vs_Mag_pu = 0.5f;
    vector->Max_Vd_v = vector->Max_Vs_Mag_pu * pMotor->Vdcbus;
    vector->Max_Vd_pu = vector->Max_Vd_v * v_to_pu_factor;
    vector->Max_Vq_v = __sqrt((vector->Max_Vs_Mag_pu * vector->Max_Vs_Mag_pu) - (pMotor->pi_id.fbk * pMotor->pi_id.fbk));
    vector->Max_Vq_pu = vector->Max_Vq_v * v_to_pu_factor;
    
    //Assign the calculated limits to the PI controllers limits
    pMotor->pi_id.Umax = vector->Max_Vd_pu;
    pMotor->pi_id.Umin = -1 * vector->Max_Vd_pu;
    pMotor->ptrFCL->pi_iq.Umax = vector->Max_Vq_pu;
    pMotor->ptrFCL->pi_iq.Umin = -1 * vector->Max_Vq_pu;
}

我将在双轴项目中运行速度环路构建级别4

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

    您好!

    [报价 userid="521194" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1366623/tms320f28379d-dynamic-calculation-of-vq-and-vd-limits-to-implement-mpta-and-fwc-in-dual-axis-drive-project "]

    首先、您能否确认这些值位于 APM 中、而不是 PU 中?

    我想所有 PI 计算都仅在安培中完成? 只有在 svgen 模块中、才会将伏和安培值转换为 pu? 请您确认一下!

    [报价]

    是的、正确。 只有在您看到_pu 时、它才会采用标幺值形式。

    [报价 userid="521194" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1366623/tms320f28379d-dynamic-calculation-of-vq-and-vd-limits-to-implement-mpta-and-fwc-in-dual-axis-drive-project "]

    根据实验源、Vs 幅度不允许超过0.5、但在双轴驱动器代码中、是否允许超过0.5? 您能解释一下吗!

    我在这里看到的问题是 PI 控制器中的 IQ.out 控制信号(即 VQ)将始终限制在0.5pu、但 正如上面在  initControlVars ()中计算的那样、它可以高达0.76? 请计算!

    [报价]

    我需要回顾并回复您。

    此致!

    Kevin

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

    尊敬的 Ak:

    很抱歉我延迟了很长时间。 我今天更仔细地研究了您的问题、但没有 给出与幅度之间差异的良好解释。 我认为、 与与与  电压饱和相关的 sensorless_foc/InstaSPIN SW 相比、FCL SW 在 PI 控制器函数方面必须有一些差异。

    此致!

    Kevin

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

    尊敬的 Ak:

    我有一些资源和解释可以帮助您了解这一主题。

    此致!

    Kevin

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

    感谢 Kevin、FCL 链接很有用、我们在最大速度方面遇到了一个简单的问题。 有一个问题是要设计 Vd 和 Vq 限值:我们知道 Vd 和 Vq 的向量总和应该小于1,但这是假设最大调制指数被允许到1 ?(100 %)。 如果最大调制指数设置为0.96、则矢量和不应大于0.96?

    同时考虑到 PI 控制器在控制 Iq 和 Id 电流时会产生很小的纹波、矢量和应该 在允许的最大调制指数0.96之上有一个裕度。

    如果我们以原始双轴驱动示例为例:最大调制指数为0.96, Vd 限值为0.5 * 0.96=0.48,而 Vq 限值为0.8 * 0.96=0.76,所以总和为0.898 (约0.9 )。 因此、这里的裕度大约是最大调制指数的0.06 (6 %)。

    我的理解是否正确?