片机常用算法设计课件

上传人:s9****2 文档编号:592361382 上传时间:2024-09-20 格式:PPT 页数:54 大小:381KB
返回 下载 相关 举报
片机常用算法设计课件_第1页
第1页 / 共54页
片机常用算法设计课件_第2页
第2页 / 共54页
片机常用算法设计课件_第3页
第3页 / 共54页
片机常用算法设计课件_第4页
第4页 / 共54页
片机常用算法设计课件_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《片机常用算法设计课件》由会员分享,可在线阅读,更多相关《片机常用算法设计课件(54页珍藏版)》请在金锄头文库上搜索。

1、第第7章章单片机常用算法设计单片机常用算法设计7.1单片机滤波算法的设计单片机滤波算法的设计7.2信号处理的信号处理的FFT变换变换7.3SPWM正弦逆变算法的设计正弦逆变算法的设计7.4PID控制算法控制算法7.551单片机单片机PID算法程序算法程序7.6模糊控制算法模糊控制算法片机常用算法设计7.1单片机滤波算法的设计单片机滤波算法的设计电路的滤波分为电路的滤波分为模拟滤波模拟滤波与与数字滤波数字滤波。其中数字滤波器具有其中数字滤波器具有精度高、高可靠性和高精度高、高可靠性和高稳定性稳定性的特点的特点,因此被广泛应用。用数字滤波因此被广泛应用。用数字滤波算法克服随机误差主要有如下算法克服

2、随机误差主要有如下优点优点:u数字滤波由软件程序实现数字滤波由软件程序实现,不需要硬件不需要硬件,因因此此不存在阻抗匹配的问题不存在阻抗匹配的问题;u对于多路信号输入通道对于多路信号输入通道,可以共用一个软件可以共用一个软件“滤波器滤波器”,降低仪表的设计成本降低仪表的设计成本;u只要改变滤波器程序或元算参数只要改变滤波器程序或元算参数,就能方便就能方便的改变滤波特性。的改变滤波特性。片机常用算法设计下面我们介绍几种主要的数字滤波法:下面我们介绍几种主要的数字滤波法:A.限幅滤波法限幅滤波法l对于对于随机干扰随机干扰,限幅滤波是一种有效的方法;限幅滤波是一种有效的方法;l基本方法基本方法:比较

3、相邻:比较相邻n和和n-1时刻的两个采时刻的两个采样值样值y(n)和和y(n1),根据经验确定两次采样,根据经验确定两次采样允许的最大偏差。如果两次采样值的差值超过允许的最大偏差。如果两次采样值的差值超过最大偏差范围最大偏差范围,认为发生可随机干扰认为发生可随机干扰,并认为后并认为后一次采样值一次采样值y(n)为非法值为非法值,应予删除应予删除,删除删除y(n)后后,可用可用y(n1)代替代替y(n);若未超过所允许的;若未超过所允许的最大偏差范围最大偏差范围,则认为本次采样值有效。则认为本次采样值有效。片机常用算法设计下面是下面是限幅滤波程序限幅滤波程序:(A值可根据实际情况调值可根据实际情

4、况调整,整,value为有效值为有效值,new_value为当前采样值为当前采样值滤波程序返回有效的实际值滤波程序返回有效的实际值)#defineA10charvalue;charfilter()charnew_value;new_value=get_ad();if(new_value-valueA)|(value-new_valueA)returnvalue;returnnew_value;片机常用算法设计B.中位值滤波法中位值滤波法l中位值滤波法能有效克服中位值滤波法能有效克服偶然因素偶然因素引起的波引起的波动或动或采样不稳定采样不稳定引起的误码等脉冲干扰;引起的误码等脉冲干扰;l对温度对

5、温度液位等液位等缓慢变化缓慢变化的被测参数用此法的被测参数用此法能收到良好的滤波效果能收到良好的滤波效果,但是对于流量压力等但是对于流量压力等快速变化的参数一般不宜采用中位值滤波法;快速变化的参数一般不宜采用中位值滤波法;l基本方法基本方法:对某一被测参数连续采样:对某一被测参数连续采样n次次(一般一般n取奇数取奇数),然后再把采样值按大小排列然后再把采样值按大小排列,取中间值为本次采样值。取中间值为本次采样值。片机常用算法设计#defineN11charfilter()charvalue_bufN,count,i,j,temp;for(count=0;countN;count+)value_

6、bufcount=get_ad();delay();for(j=0;jN-1;j+)for(i=0;ivalue_bufi+1)temp=value_bufi;value_bufi=value_bufi+1;value_bufi+1=temp;returnvalue_buf(N-1)/2;下面是下面是中位值滤波程序中位值滤波程序:片机常用算法设计C.算术平均滤波法算术平均滤波法l算术平均滤波法适用于对算术平均滤波法适用于对一般的具有随机干一般的具有随机干扰的信号扰的信号进行滤波。这种信号的特点是信号进行滤波。这种信号的特点是信号本身在某一数值范围附近上下波动本身在某一数值范围附近上下波动,如如

7、测量流测量流量、量、液位液位;l基本方法基本方法:按输入的:按输入的N个采样数据个采样数据,寻找这寻找这样一个样一个Y,使得使得Y与各个采样值之间的偏差的与各个采样值之间的偏差的平方和最小。平方和最小。片机常用算法设计编写算术平均滤波法程序时严格注意编写算术平均滤波法程序时严格注意:一一.为了加快数据测量的速度为了加快数据测量的速度,可采用先测可采用先测量数据量数据存放在存储器中存放在存储器中,测完测完N点后点后,再对再对N个数据进行平均值计算个数据进行平均值计算;二二.选取适当的数据格式选取适当的数据格式,也就是说采用定也就是说采用定点数还是采用浮点数。其程序如下所示:点数还是采用浮点数。其

8、程序如下所示:#defineN12charfilter()intsum=0,count;for(count=0;countN;count+)sum+=get_ad();delay();return(char)(sum/N);片机常用算法设计D.递推平均滤波法递推平均滤波法l基本方法基本方法:采用队列作为测量数据存储器:采用队列作为测量数据存储器,设队列的长度为设队列的长度为N,每进行一次测量每进行一次测量,把测量把测量结果放于队尾结果放于队尾,而扔掉原来队首的一个数据而扔掉原来队首的一个数据,这样在队列中始终就有这样在队列中始终就有N个个“最新最新”的数的数据。当计算平均值时据。当计算平均值时

9、,只要把队列中的只要把队列中的N个个数据进行算数平均数据进行算数平均,就可得到新的算数平均值。就可得到新的算数平均值。这样每进行一次测量这样每进行一次测量,就可得到一个新的算术就可得到一个新的算术平均值。平均值。片机常用算法设计#defineN12charvalue_bufN,i=0;charfilter()charcount;intsum=0;value_bufi+=get_ad();if(i=N)i=0;for(count=0;countN;count+)sum=value_bufcount;return(char)(sum/N);程序如下:程序如下:片机常用算法设计E.一阶滞后滤波法一阶

10、滞后滤波法l优点优点:对周期性干扰具有良好的抑制作用:对周期性干扰具有良好的抑制作用,适用于波动频率较高的场合;适用于波动频率较高的场合;l缺点缺点:相位滞后,灵敏度低:相位滞后,灵敏度低.滞后程度取决滞后程度取决于于a值大小值大小.不能消除滤波频率高于采样频率不能消除滤波频率高于采样频率的的1/2的干扰信号。程序如下:的干扰信号。程序如下:#definea50charvalue;charfilter()charnew_value;new_value=get_ad();return(100-a)*value+a*new_value;片机常用算法设计7.2信号处理的信号处理的FFT变换变换快速傅

11、里叶变换快速傅里叶变换(FastFourierTransfonn,FFT)是为了减少离散傅里叶变换是为了减少离散傅里叶变换(DiscreteFourierTransform,DFT)计算次数的一种快速计算次数的一种快速有效的算法。它是根据离散傅氏变换的奇、偶、有效的算法。它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行虚、实等特性,对离散傅立叶变换的算法进行改进获得的。改进获得的。片机常用算法设计FFT变换算法的基本思想变换算法的基本思想:利用:利用WN的周期性的周期性和对称性,把一个和对称性,把一个N项序列(设项序列(设N=2k,k为正整为正整数),分为两个数),分为两

12、个N/2项的子序列,每个项的子序列,每个N/2点点DFT变换需要(变换需要(N/2)2次运算,再用次运算,再用N次运次运算把两个算把两个N/2点的点的DFT变换组合成一个变换组合成一个N点的点的DFT变换。这样变换以后,总的运算次数就变变换。这样变换以后,总的运算次数就变成成N+2(N/2)2=N+N2/2。其程序片段如下。其程序片段如下所示:所示:片机常用算法设计#include#include#includetypedefstructdoubler;doublei;my_complex;/检查a是否为2的整数次方数#defineNOT2POW(a)(a)-1)&(a)|(a)=1)ex+;

13、/len应该等于2的ex次方y=(my_complex*)malloc(len*sizeof(my_complex);if(!y)returnNULL;/变址计算,库里-图基算法for(i=0;i0)j=1;if(j=i)yi=xj;yj=xi;/用变址后的y向量进行计算for(i=0;iex;i+)t=1i;for(j=0;jlen;j+=t1)for(k=0;kt;k+)ti=-MYPI*k/t;rr=cos(ti);ri=sin(ti);tr=yj+k+t.r;ti=yj+k+t.i;yr=rr*tr-ri*ti;yi=rr*ti+ri*tr;tr=yj+k.r;ti=yj+k.i;片机

14、常用算法设计yj+k.r=tr+yr;yj+k.i=ti+yi;yj+k+t.r=tr-yr;yj+k+t.i=ti-yi;returny;/以下为测试intmain()inti,DATA_LEN;my_complex*x,*y;printf(基二FFT测试n输入生成序列长度:);scanf(%d,&DATA_LEN);x=(my_complex*)malloc(DATA_LEN*sizeof(my_complex);for(i=0;iDATA_LEN;i+)xi.r=i;xi.i=i-1;printf(处理前.n实部tt虚部n);for(i=0;iDATA_LEN;i+)printf(%lf

15、t%lfn,xi.r,xi.i);y=fft(x,DATA_LEN);if(!y)printf(序列长度不为2的整数次方!n);return0;片机常用算法设计printf(处理后.n实部tt虚部n);for(i=0;iDATA_LEN;i+)printf(%lft%lfn,yi.r,yi.i);free(y);free(x);return0;片机常用算法设计7.3SPWM正弦逆变算法的设计正弦逆变算法的设计lPWM的全称是的全称是PulseWidthModulation(脉冲(脉冲宽度调制),它是通过改变输出方波的占空比宽度调制),它是通过改变输出方波的占空比来改变等效的输出电压,广泛地用于

16、电动机调来改变等效的输出电压,广泛地用于电动机调速和阀门控制;速和阀门控制;lSPWM是在是在PWM的基础上改变了调制脉冲方的基础上改变了调制脉冲方式,脉冲宽度时间占空比按正弦规率排列,这式,脉冲宽度时间占空比按正弦规率排列,这样输出波形经过适当的滤波可以做到正弦波输样输出波形经过适当的滤波可以做到正弦波输出,它广泛地用于直流交流逆变器等;出,它广泛地用于直流交流逆变器等;lSPWM理论基础理论基础:冲量相等而形状不同的窄:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时脉冲加在具有惯性的环节上时,其效果基本相同。其效果基本相同。片机常用算法设计实现实现SPWM法的几种方案:法的几种方案:A.

17、等面积法等面积法l该方案是用同样数量该方案是用同样数量等幅而不等宽等幅而不等宽的矩形的矩形脉冲序列代替正弦波脉冲序列代替正弦波,然后计算各脉冲的宽度然后计算各脉冲的宽度和间隔和间隔,并把这些数据存于微机中并把这些数据存于微机中,通过查表的通过查表的方式生成方式生成PWM信号控制开关器件的通断信号控制开关器件的通断,以以达到预期的目的;达到预期的目的;l优点:优点:可准确计算出各开关器件的通断时可准确计算出各开关器件的通断时刻刻,所得的波形很接近正弦波;所得的波形很接近正弦波;l缺点:缺点:计算繁琐计算繁琐,数据占用内存大数据占用内存大,不能实时不能实时控制。控制。片机常用算法设计用面积法实现用

18、面积法实现SPWM正弦波逆变换的程序片段:正弦波逆变换的程序片段:voidCalcSpwmWithArea(float32a/*调制比*/,Uint16w_Hz/*调制频率*/,Uint32z_Hz/*载波频率*/)/Uint16tmp_PR;/T1周期值volatileUint16i,n,*p;float32m,n1,n2;m=z_Hz/w_Hz;/求出载波比g_SPWM_Table.SpwmSize=(Uint16)m;/tmp_PR=g_T1_Clk/(2*z_Hz);/计算出其周期值p=g_SPWM_Table.p_HeadTable;/得到数据表头指针n=m;m/=2;/除去一半计算

19、半波n1=(float32)g_T1_Clk/(8.0*m*w_Hz);/计算首相n2=(float32)g_T2_Clk/(8.0*PI*w_Hz)*a;for(i=0;in;i+)*p=n1-n2*(cos(i*PI/m)-cos(i+1)*PI/m);p+;片机常用算法设计B.硬件调制法硬件调制法l方案原理:方案原理:把所希望的波形作为调制信号把所希望的波形作为调制信号,把接受调制的信号作为载波把接受调制的信号作为载波,通过对载波的调通过对载波的调制得到所期望的制得到所期望的PWM波形波形.用等腰三角波作用等腰三角波作为载波为载波,当调制信号波为正弦波时当调制信号波为正弦波时,所得到的就

20、所得到的就是是SPWM波形;波形;l优点:优点:实现方法简单,可以解决等面积法实现方法简单,可以解决等面积法计算繁琐的缺点;计算繁琐的缺点;l缺点:缺点:模拟电路结构复杂模拟电路结构复杂,难以实现精确的难以实现精确的控制。控制。片机常用算法设计C.自然采样法自然采样法l方案原理:方案原理:以正弦波为调制波以正弦波为调制波,等腰三角波等腰三角波为载波进行比较为载波进行比较,在两个波形的自然交点时刻在两个波形的自然交点时刻控制开关器件的通断;控制开关器件的通断;l优点:优点:所得所得SPWM波形最接近正弦波;波形最接近正弦波;l缺点:缺点:脉宽表达式是一个超越方程脉宽表达式是一个超越方程,计算繁计

21、算繁琐琐,难以实时控制。难以实时控制。片机常用算法设计D.规则采样法规则采样法l方案原理:方案原理:用三角波对正弦波进行采样得用三角波对正弦波进行采样得到阶梯波到阶梯波,再以阶梯波与三角波的交点时刻控再以阶梯波与三角波的交点时刻控制开关器件的通断制开关器件的通断,从而实现从而实现SPWM法;按照法;按照三角波在其顶点或底点的位置不同又分为三角波在其顶点或底点的位置不同又分为对对称规则采样称规则采样和和非对称规则采样非对称规则采样;l优点:优点:计算简单计算简单,便于在线实时运算便于在线实时运算,其中非其中非对称规则采样法因阶数多而更接近正弦;对称规则采样法因阶数多而更接近正弦;l缺点:缺点:直

22、流电压利用率较低直流电压利用率较低,线性控制范围线性控制范围较小。较小。片机常用算法设计用对称规则采样实现用对称规则采样实现SPWM正弦波逆变换的程序正弦波逆变换的程序片段:片段:voidCalcSpwmWithSym(float32a/*调制比*/,float32w_Hz/*调制频率*/,float32z_Hz/*载波频率*/)Uint16tmp_PR;/T1周期值volatileUint16i,n,*p;float32m;m=z_Hz/w_Hz;/求出载波比g_SPWM_Table.SpwmSize=(Uint16)m;tmp_PR=g_T1_Clk/(2*z_Hz);/计算出其周期值p=

23、g_SPWM_Table.p_HeadTable;/得到数据表头指针for(i=0;i(Uint16)m;i+)n=tmp_PR*(0.5-0.5*a*sin(i+0.75)*2*PI/m);*p=n;p+;片机常用算法设计用非对称规则采样实现用非对称规则采样实现SPWM正弦波逆变换的程正弦波逆变换的程序片段:序片段:voidCalcSpwmWithImSym(float32a/*调制比*/,Uint16w_Hz/*调制频率*/,Uint32z_Hz/*载波频率*/)Uint16tmp_PR;/T1周期值volatileUint16i,n,*p;float32m;m=z_Hz/w_Hz;/求出

24、载波比g_SPWM_Table.SpwmSize=(Uint16)m;tmp_PR=g_T1_Clk/(2*z_Hz);/计算出其周期值p=g_SPWM_Table.p_HeadTable;/得到数据表头指针for(i=0;i(Uint16)m;i+)n=tmp_PR*(0.5-0.25*a*(sin(i+0.25)*2*PI/m)+sin(i+0.75)*2*PI/m);*p=n;p+;片机常用算法设计E.梯形波与三角波比较法梯形波与三角波比较法l方案原理:方案原理:采用梯形波作为调制信号采用梯形波作为调制信号,三角三角波为载波波为载波,且使两波幅值相等且使两波幅值相等,以两波的交点时以两波

25、的交点时刻控制开关器件的通断实现刻控制开关器件的通断实现PWM控制;控制;l优点:优点:可以有效地提高直流电压利用率;可以有效地提高直流电压利用率;l缺点:缺点:输出波形中含有输出波形中含有5次次,7次等低次谐波。次等低次谐波。片机常用算法设计7.4PID控制算法控制算法l在过程控制中,按偏差的比例(在过程控制中,按偏差的比例(P)、积分)、积分(I)和微分()和微分(D)进行控制的)进行控制的PID控制器控制器(亦(亦称称PID调节器)是应用最为广泛的一种自动控调节器)是应用最为广泛的一种自动控制器制器;l对于过程控制的典型对象对于过程控制的典型对象“一阶滞后纯一阶滞后纯滞后滞后”与与“二阶

26、滞后纯滞后二阶滞后纯滞后”的控制对象,的控制对象,PID控制器是一种最优控制控制器是一种最优控制;lPID调节规律调节规律是连续系统动态品质校正的一是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构种有效方法,它的参数整定方式简便,结构改变灵活(改变灵活(PI、PD、)。)。片机常用算法设计一一模拟模拟PID调节器调节器模拟模拟PID控制系统原理框图控制系统原理框图片机常用算法设计l比例环节比例环节:即时成比例地反应控制系统的偏:即时成比例地反应控制系统的偏差信号差信号e(t),偏差一旦产生,调节器立即产生,偏差一旦产生,调节器立即产生控制作用以减小偏差;控制作用以减小偏差;l积

27、分环节积分环节:主要用于消除静差,提高系统的:主要用于消除静差,提高系统的无差度。积分时间常数无差度。积分时间常数TI越大,积分作用越弱,越大,积分作用越弱,反之则越强;反之则越强;l微分环节微分环节:能反应偏差信号的变化趋势:能反应偏差信号的变化趋势(变化变化速率速率),并能在偏差信号的值变得太大之前,并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。加快系统的动作速度,减小调节时间。PID调节器各校正环节的作用:调节器各校正环节的作用:片机常用算法设计PID调节器是一种调节器是一种线性调节器线性

28、调节器,它将,它将给给定值定值r(t)与与实际输出值实际输出值c(t)的偏差的比例的偏差的比例(P)、积分积分(I)、微分微分(D)通过线性组合构成控制量,通过线性组合构成控制量,对控制对象进行控制。对控制对象进行控制。lPID调节器的微分方程调节器的微分方程【其中其中】lPID调节器的传递函数调节器的传递函数片机常用算法设计二二数字数字PID控制器控制器模模拟拟形式形式离散化形式离散化形式l模拟模拟PID控制规律的离散化形式控制规律的离散化形式片机常用算法设计l数字数字PID控制器的差分方程:控制器的差分方程:式中:式中:,为比例项;,为比例项;,为积分项;,为积分项;,为微分项。,为微分项

29、。片机常用算法设计l常用的控制方式:常用的控制方式:P控制控制PI控制控制PD控制控制PID控制控制片机常用算法设计lPID算法的两种类型算法的两种类型位置型控制位置型控制增量型控制增量型控制片机常用算法设计片机常用算法设计三三PID算法的程序流程算法的程序流程l增量型增量型PID算法的程序流程算法的程序流程算式:算式:式中:式中:片机常用算法设计l位置型位置型PID算法的程序流程算法的程序流程递推形式:递推形式:片机常用算法设计片机常用算法设计l对控制量的限制对控制量的限制控制算法总是受到一定运算字长的限制;控制算法总是受到一定运算字长的限制;执行机构的实际位置不允许超过上执行机构的实际位置

30、不允许超过上/下极限。下极限。片机常用算法设计7.551单片机单片机PID算法程序算法程序一一位置式位置式PID控制算法控制算法位置式位置式PID控制算法的简化示意图控制算法的简化示意图片机常用算法设计上图中上图中传递函数传递函数为:为:在时域的传递函数表达式:在时域的传递函数表达式:对上式中的微分和积分进行近似:对上式中的微分和积分进行近似:片机常用算法设计于是传递函数可以简化为于是传递函数可以简化为:其中其中:u(n)第第k个采样时刻的控制;个采样时刻的控制;KP比例放大系数;比例放大系数;Ki积分放大系数;积分放大系数;Kd微分放大系数;微分放大系数;片机常用算法设计由于全量输出,所以每

31、次输出均与过去状由于全量输出,所以每次输出均与过去状态有关,计算时要对态有关,计算时要对e(k)(k=0,1,n)进行累进行累加,工作量大;加,工作量大;因为计算机输出的因为计算机输出的u(n)对应的是执行机构对应的是执行机构的实际位置,如果计算机出现故障,输出的实际位置,如果计算机出现故障,输出u(n)将大幅度变化,会引起执行机构的大幅将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故,度变化,有可能因此造成严重的生产事故,这在实际生产中是不允许的。这在实际生产中是不允许的。l这种算法有以下这种算法有以下缺点缺点:片机常用算法设计l程序片段如下程序片段如下:#includ

32、e#includetypedefstructPIDdoubleSetPoint;/设定目标DesiredvaluedoubleProportion;/比例常数ProportionalConstdoubleIntegral;/积分常数IntegralConstdoubleDerivative;/微分常数DerivativeConstdoubleLastError;/Error-1doublePrevError;/Error-2doubleSumError;/SumsofErrorsPID;片机常用算法设计PID计算部分:计算部分:doublePIDCalc(PID*pp,doubleNextPo

33、int)doubledError,Error;Error=pp-SetPoint-NextPoint;/偏差pp-SumError+=Error;/积分dError=Error-pp-LastError;/当前微分pp-PrevError=pp-LastError;pp-LastError=Error;return(pp-Proportion*Error/比例项+pp-Integral*pp-SumError/积分项+pp-Derivative*dError);/微分项voidPIDInit(PID*pp)memset(pp,0,sizeof(PID);片机常用算法设计doublesensor

34、(void)return100.0;voidactuator(doublerDelta)voidmain(void)PIDsPID;doublerOut;doublerIn;PIDInit(&sPID);sPID.Proportion=0.5;sPID.Derivative=0.0;sPID.SetPoint=100.0;for(;)rIn=sensor();rOut=PIDCalc(&sPID,rIn);actuator(rOut);主程序:主程序:片机常用算法设计二二增量式增量式PID控制算法控制算法片机常用算法设计增量式增量式PID控制控制算法公式算法公式为:为:其中:其中:片机常用算法

35、设计l程序如下程序如下:typedefstructPIDintSetPoint;/设定目标longSumError;/误差累计doubleProportion;/比例常数doubleIntegral;/积分常数doubleDerivative;/微分常数intLastError;/Error-1intPrevError;/Error-2PID;staticPIDsPID;staticPID*sptr=&sPID;片机常用算法设计/*PID参数初始化*/voidIncPIDInit(void)sptr-SumError=0;sptr-LastError=0;/Error-1sptr-PrevEr

36、ror=0;/Error-2sptr-Proportion=0;/比例常数sptr-Integral=0;/积分常数sptr-Derivative=0;/微分常数sptr-SetPoint=0;片机常用算法设计/*增量式PID计算部分*/intIncPIDCalc(intNextPoint)registerintiError,iIncpid;/当前误差iError=sptr-SetPoint-NextPoint;/增量计算iIncpid=sptr-Proportion*iError/Ek项-sptr-Integral*sptr-LastError/Ek1项+sptr-Derivative*sp

37、tr-PrevError;/Ek2项sptr-PrevError=sptr-LastError;sptr-LastError=iError;/返回增量值return(iIncpid);片机常用算法设计7.6模糊控制算法模糊控制算法l模糊控制模糊控制是采用由模糊数学语言描述的控制是采用由模糊数学语言描述的控制律(控制规则)来操纵系统工作的控制方式。律(控制规则)来操纵系统工作的控制方式。l模糊控制系统的模糊控制系统的结构组成和工作原理结构组成和工作原理如下图,如下图,控制器的任务控制器的任务是根据系统输出的误差和误差变是根据系统输出的误差和误差变化情况来决定控制对象的输入量。化情况来决定控制对象

38、的输入量。片机常用算法设计模糊控制系统具有以下特点:模糊控制系统具有以下特点:l简化系统设计的复杂性,简化系统设计的复杂性,适用于非线性、时适用于非线性、时变、模型不完全的系统变、模型不完全的系统;l利用控制法则来描述系统变量间的关系;利用控制法则来描述系统变量间的关系;l用语言式的模糊变量来描述系统,模糊控制用语言式的模糊变量来描述系统,模糊控制器不必对被控制对象建立完整的数学模式;器不必对被控制对象建立完整的数学模式;l模糊控制器是一语言控制器,操作人员易于模糊控制器是一语言控制器,操作人员易于使用自然语言进行人机对话使用自然语言进行人机对话;l模糊控制器是一种容易控制、掌握的较理想模糊控

39、制器是一种容易控制、掌握的较理想的非线性控制器,具有较佳的的非线性控制器,具有较佳的适应性适应性及及强健性强健性、较佳的较佳的容错性容错性。片机常用算法设计模糊控制算法主程序:模糊控制算法主程序:voidmain()inta=0,e,ec;/*intnowpoint,p1,p2=1;FILE*in,*out;in=fopen(in.txt,r);out=fopen(out.txt,w);*/while(!feof(in)while(1)/fscanf(in,%d,&nowpoint);/p1=nowpoint;/e=0-nowpoint;/ec=p1-p2;printf(请输入e:);scanf(%d,&e);printf(请输入ec:);scanf(%d,&ec);a=Fuzzy(e,ec);/fprintf(out,%d,a);/printf(%d:,p1);printf(e:%dec:%d,e,ec);printf(a:%dn,a);/p2=p1;/fclose(in);/fclose(out);片机常用算法设计

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号