打印
[ModusToolbox™]

PSOC C3例程PMSM FOC SL with 3-shunt中的中性点调制代码

[复制链接]
65|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Burnon_FAE_4|  楼主 | 2025-6-27 15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
static void NPMRunISR0()
{
    //先反clark变换
    ClarkeTransformInv(&vars.v_ab_cmd_tot, &vars.v_uvw_n_cmd);

    ctrl.volt_mod.uvw_idx_prev = ctrl.volt_mod.uvw_idx;
    SortUVW(&vars.v_uvw_n_cmd, &ctrl.volt_mod.xyz_idx, &ctrl.volt_mod.uvw_idx);

    float* v_uvw_cmd = STRUCT_TO_ARRAY(vars.v_uvw_n_cmd);

    //这里求出中性点电压
    ctrl.volt_mod.npm.v_neutral = -0.5f * (v_uvw_cmd[WORD_TO_BYTE(ctrl.volt_mod.xyz_idx, 0U)] + v_uvw_cmd[WORD_TO_BYTE(ctrl.volt_mod.xyz_idx, 2U)]);

    //反变换结果和中性点相加得出需要的UVW电压
    vars.v_uvw_z_cmd.u = vars.v_uvw_n_cmd.u + ctrl.volt_mod.npm.v_neutral;
    vars.v_uvw_z_cmd.v = vars.v_uvw_n_cmd.v + ctrl.volt_mod.npm.v_neutral;
    vars.v_uvw_z_cmd.w = vars.v_uvw_n_cmd.w + ctrl.volt_mod.npm.v_neutral;
    //做限制
    vars.d_uvw_cmd.u = SAT(0.0f, 1.0f, vars.v_uvw_z_cmd.u * ctrl.volt_mod.v_dc_inv + 0.5f);
    vars.d_uvw_cmd.v = SAT(0.0f, 1.0f, vars.v_uvw_z_cmd.v * ctrl.volt_mod.v_dc_inv + 0.5f);
    vars.d_uvw_cmd.w = SAT(0.0f, 1.0f, vars.v_uvw_z_cmd.w * ctrl.volt_mod.v_dc_inv + 0.5f);
    //暂时不知道这里为什么要求调制比
    ctrl.volt_mod.mi = vars.v_s_cmd.rad * ctrl.volt_mod.v_dc_inv * 1.5f; // 2/3Vdc = 100% modulation
}



使用特权

评论回复
沙发
huahuagg| | 2025-6-27 20:20 | 只看该作者
这 段代码可以正常运行 吗

使用特权

评论回复
板凳
中国龙芯CDX| | 2025-6-27 22:12 | 只看该作者
这种变换是不是细节没有体现?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

99

帖子

4

粉丝