找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3074|回复: 0
打印 上一主题 下一主题
收起左侧

控制算法离散化的问题

[复制链接]
跳转到指定楼层
楼主
ID:71259 发表于 2014-12-29 23:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    把控制算法离散化成C语言时,有一个问题:几乎所有的系数都是浮点型。单片机一般都没有硬件浮点运算功能,因此单片机的浮点运算速度肯定是比单片机的整数运算慢的。在过程控制中,因为离散化周期较长,至少是秒级别的,单片机在这段时间内足以完成浮点运算,因此对单片机的要求不高。但是在运动控制中,离散化周期几乎都是毫秒级别的,对一些低端的单片机而言,在几毫秒内完成大量的浮点运算几乎是不可能的,因此有必要对离散化算式进行优化。

假设有个一阶滤波环节,其离散化话后的算式为:  
u(k)=0.333*u(k-1)+0.667*e(k);
因0.333=333/1000,故上式可化为
u(k)=333*u(k-1)/1000+667*e(k)/1000;
将上式再做简化,可以减少一个除法运算,
u(k)=(333*u(k-1)+667*e(k))/1000;
因移位运算比乘除法运算要快,且 333/1000=341/1024, 667/1000=683/1024,故上式又可表达为
u(k)=(341*u(k-1)+683*e(k))/1024;
u(k)=(341*u(k-1)+683*e(k))>>10;  //右移10位
另外,当e(k)很小时,因为整除的关系,u(k)可能会为0,在这种情况下可以先将e(k)放大,在后续环节再对其做处理。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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