搜索
bottom↓
回复: 17

同一型号的单片机为什么有几个在浮点数计算上会出错呢?

[复制链接]

出0入0汤圆

发表于 2016-12-5 10:40:04 | 显示全部楼层 |阅读模式
做了50块温控板有5块在PID计算部分出错,单片机型是STC12C5A60S2。为什么同样的程序有的计算会出错呢?
计算部分如下:
  1. /*--------------------------------PID------------------------------------*/
  2. float PIDCalc( PID *pp, float NextPoint )
  3. {
  4.         float xdata dError,Error;
  5.         Error = pp->SetPoint - NextPoint; // 偏差
  6.         pp->SumError += Error; // 积分
  7.         dError = pp->LastError - pp->PrevError; // 当前微分
  8.         pp->PrevError = pp->LastError;
  9.         pp->LastError = Error;
  10.         return (pp->Proportion * Error//比例
  11.         + pp->Integral * pp->SumError*0.01  //积分项
  12.         + pp->Derivative * dError); //   微分项
  13. }
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2016-12-5 10:51:27 | 显示全部楼层
大神们指点一下啊

出0入442汤圆

发表于 2016-12-5 12:54:58 来自手机 | 显示全部楼层
先用固定数据跑跑,还错测测电源纹波,再错降下主频

出0入0汤圆

发表于 2016-12-5 18:09:55 | 显示全部楼层
都是程序问题吧!符合某个条件就出错。 你能保证运算的数据完全一样吗?

出0入0汤圆

 楼主| 发表于 2016-12-6 09:28:53 | 显示全部楼层
wye11083 发表于 2016-12-5 12:54
先用固定数据跑跑,还错测测电源纹波,再错降下主频

好的,谢谢你

出0入0汤圆

 楼主| 发表于 2016-12-6 09:29:37 | 显示全部楼层
not_at_all 发表于 2016-12-5 18:09
都是程序问题吧!符合某个条件就出错。 你能保证运算的数据完全一样吗?

数据没有问题

出0入0汤圆

发表于 2016-12-6 12:04:39 | 显示全部楼层
程序bug

出10入23汤圆

发表于 2016-12-6 14:53:37 来自手机 | 显示全部楼层
程序开了中断吗?

出0入0汤圆

 楼主| 发表于 2016-12-6 15:03:20 来自手机 | 显示全部楼层
zouzhichao 发表于 2016-12-6 14:53
程序开了中断吗?

按键中断

出0入0汤圆

 楼主| 发表于 2016-12-6 15:04:57 来自手机 | 显示全部楼层
lzyr 发表于 2016-12-6 12:04
程序bug

我也感觉不是单片机的问题就是程序的事,但是改了好久还是一样

出10入23汤圆

发表于 2016-12-6 15:07:04 来自手机 | 显示全部楼层
试一试在浮点计算前关中断,计算完再打开

出10入23汤圆

发表于 2016-12-6 15:08:15 来自手机 | 显示全部楼层
而且8位的51就计算pid的话,还是用整形运算更合适吧

出0入0汤圆

 楼主| 发表于 2016-12-6 15:47:34 来自手机 | 显示全部楼层
zouzhichao 发表于 2016-12-6 15:07
试一试在浮点计算前关中断,计算完再打开

中断会有影响吗,想不通。。

出0入8汤圆

发表于 2016-12-6 16:18:09 | 显示全部楼层
51  做浮点,你这是要累死51吗?

出0入0汤圆

发表于 2016-12-6 17:18:04 | 显示全部楼层
acong 发表于 2016-12-6 15:47
中断会有影响吗,想不通。。

要不要试一下1秒钟能跑多少次计算?
建议定点

PS:这个贴应该搬到         STC 1T 8051   板块

出0入50汤圆

发表于 2016-12-6 18:27:07 来自手机 | 显示全部楼层
小心个别极端情况下的除零错误,我碰到过,开始以为芯片问题,查了很久才找到,太隐蔽了。另外51跑单精度浮点没问题的,解一个四元一次浮点数方程组唰………就好了

出0入0汤圆

 楼主| 发表于 2016-12-6 19:36:32 来自手机 | 显示全部楼层
感谢各位,问题已解决我把计算量稍微减点立马正常了。。不过还是感觉很奇怪

出0入0汤圆

 楼主| 发表于 2016-12-6 19:37:57 来自手机 | 显示全部楼层
kebaojun305 发表于 2016-12-6 16:18
51  做浮点,你这是要累死51吗?

嗯嗯确实挺累的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 15:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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