查看: 1974|回复: 2

MC9S08DZ60 关于浮点数计算

[复制链接]

该用户从未签到

2

主题

4

帖子

0

新手上路

Rank: 1

积分
42
最后登录
2020-10-29
发表于 2020-6-24 16:01:44 | 显示全部楼层 |阅读模式
开发平台CW6.3.2
多项式计算:Y = 46.65X^4-262.08X^3+545.6X^2-513.84X+242.41
实现方法(见代码):1.使用double pow(double x, double y)
                              2.直接使用常用的公式
部分代码如下:

全局变量byte flag;

float IncrementPid_adjust(PID *pPID,float SetPoint,float Test_Value)
{
   float Increment;

   float NextPoint;//下一个UR

   float Duty;

   pPID->SetValue    = SetPoint;

   pPID->ActualValue = Test_Value;

   pPID->Error       = pPID->SetValue-pPID->ActualValue;

   Increment         = (pPID->Kp)*((pPID->Error)-(pPID->Last_Error))+

                       (pPID->Ki)*(pPID->Error)+

                       (pPID->Kd)*(pPID->Error-2*pPID->Last_Error+pPID->Prev_Error);//这个是增量式PID的灵魂

  // adjust_shuzhi-=Increment;//根据实际应用的时候adjust_shuzhi的值太大了,所以有点像下降型pid调节。

   NextPoint = pPID->ActualValue + Increment;

   if (NextPoint < 0.5)
   {
            NextPoint = 0.5;
   }

   else if (NextPoint > 2.0)
   {
            NextPoint = 2.0;
   }

   else
   {
           ;
   }
   //Duty = 46.65*pow(NextPoint,4) - 262.08*pow(NextPoint,3)+ 545.6*pow(NextPoint,2)-513*NextPoint +242.41;//方法1

   Duty = ((NextPoint*NextPoint*NextPoint*NextPoint*(float)46.65)-                                          //方法2

                ((float)262.08*NextPoint*NextPoint*NextPoint) +

                ((float)545.6*NextPoint*NextPoint)-

                ((float)513.84*NextPoint) +

                242.41);   

   pPID->Prev_Error=pPID->Last_Error;

   pPID->Last_Error=pPID->Error;

   return Duty;
}
调用该函数时,flag会被改变,这该如何解决?
非常感谢!

公式图片

公式图片
回复

使用道具 举报

  • TA的每日心情
    慵懒
    2021-12-23 09:57
  • 签到天数: 1587 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    5

    主题

    3048

    帖子

    23

    金牌会员

    Rank: 6Rank: 6

    积分
    8416
    最后登录
    2025-4-23
    发表于 2020-6-24 22:34:01 | 显示全部楼层
    DZ60片内带浮点运算模块么?

    如果不带,要转换成整数运算。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    42
    最后登录
    2020-10-29
     楼主| 发表于 2020-6-25 20:31:03 来自手机 | 显示全部楼层
    DZ60内部不具备浮点模块。十分您指明了方向!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-3 15:42 , Processed in 0.086914 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表