欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 控制算法離散化的問題 [打印本頁]

作者: daming    時間: 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)放大,在后續環節再對其做處理。






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1