打印

无刷直流电机正弦波驱动电流截止环

[复制链接]
2593|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
libinxtdj|  楼主 | 2011-3-6 17:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家帮我看看这个逻辑判断是否存在问题?特别是在速度环的输出为负值的时候。程序思路是电流环为截止环,当过流出现时电流环才起作用,正常情况下只有速度环起作用,调试的时候发现,当速度环输出为负的时候,正弦波的幅值很快就为0了,导致电机停止。也就是PI_Current_adj = 0;在速度环输出为负的时候是不是判断上出了问题呢?谢谢!!程序如下:

if(PI_Current_Tim==0)


{


PI_Current_Tim=16;


PIParm_Current.qInMeas = 100;//20
对应绕组电流平均值/峰值1A,给定的电流值



PIParm_Current.qInRef
= Motor_Current;


regul_PI_Current();//
进行PI闭环调节。。。


PI_Current_out=
PIParm_Current.qOut;


if(PI_Current_out>20)//PI_Current_out
无符号数 电流环输出


{


Flags.OverCurrent=1;




if(Pi_Spwm>0)//Pi_Spwm
有符号数


{


if(Pi_Spwm>PI_Current_out)


{


PI_Current_adj =Pi_Spwm-PI_Current_out;


}


else


{


PI_Current_adj = 0;




}


}


Else//
速度环的输出为小于0的时候,这个逻辑判断是否存在问题呢?


{


if (abs(Pi_Spwm)>PI_Current_out)


PI_Current_adj =abs(Pi_Spwm)-PI_Current_out;


else


{


PI_Current_adj=0;


}


}


}


else


{




PI_Current_adj = Pi_Spwm;


Flags.OverCurrent=0;


}


}

相关帖子

沙发
airwill| | 2011-3-7 20:01 | 只看该作者
楼主是否处理有问题呢?

    应该是: 速度环和电流环分别各自进行处理. 电流环是快速环, 直接监控和调整驱动扭矩. 速度环是慢速环, 调节的是电流环的控制参数.
再好好看看资料吧

使用特权

评论回复
板凳
libinxtdj|  楼主 | 2011-5-20 10:41 | 只看该作者
恩。谢谢!问题已经解决了

使用特权

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

本版积分规则

48

主题

181

帖子

0

粉丝