unsigned int XPWM=0;
signed int adjust=0; /* 调节器输出调整量 */
float V_REF=3.3;
float Kp=100; /* PI调节的比例常数 */
float Ti=0.005; /* PI调节的积分常数 */
float T=0.001; /* 周期,Ki=KpT/Ti=40*0.001/0.005=8 */
float Ki=8;
float ek=0; /* 偏差e[k] */
float ek1=0; /* 偏差e[k-1] */
float uk=0; /* u[k] */
float uk1=0; /* 对u[k]四舍五入取整 */
unsigned int k;
整流 13:57:33
这些参数的初始化
1.这个部分是写在程序的开头,,只初始化一次
2.写在PI子函数的开头,,每次都初始化。。
选哪个
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
{
float V_REF=3.3;
Kp=100; /* PI调节的比例常数 */
Ti=0.005; /* PI调节的积分常数 */
T=0.001; /* 周期,Ki=KpT/Ti=40*0.001/0.005=8 */
Ki=8;
ek=0; /* 偏差e[k] */
ek1=0; /* 偏差e[k-1] */
uk=0; /* u[k] */
uk1=0; /* 对u[k]四舍五入取整 */
adjust=0; /* 调节器输出调整量 */
XPWM=0; /* 占空比调节 */
{
ek=V_REF-AD_SIG0;
if(ek<0.1) /* 偏差小于0.1则调整值为0 */
{
adjust=0;
}
else
{
uk=Kp*(ek-ek1)+Ki*ek;/* 否则计算控制增量 */
ek1=ek;
uk1=(signed int)uk;
if(uk>0)
{
if(uk-uk1>=0.5)
{
uk1=uk1+1;
}
}
if(uk<0)
{
if(uk1-uk>=0.5)
{
uk1=uk1-1;
}
}
adjust=uk1;
XPWM=XPWM+adjust;
}
return;
}
asm(" NOP "); /* 请将光标移到此处设置断点,并用debug->Animate监测数据 */
}
PI函数这样写
主程序这样写,,每次进PI都初始化了这些参数是对的还是错的
一周热门 更多>