1、第第7章章 单片机常用算法设计单片机常用算法设计7.1 单片机滤波算法的设计单片机滤波算法的设计7.2 信号处理的信号处理的FFT变换变换7.3 SPWM正弦逆变算法的设计正弦逆变算法的设计7.4 PID控制算法控制算法7.5 51单片机单片机PID算法程序算法程序7.6 模糊控制算法模糊控制算法7.1 单片机滤波算法的设计单片机滤波算法的设计 电路的滤波分为电路的滤波分为模拟滤波模拟滤波与与数字滤波数字滤波。其中数字滤波器具有其中数字滤波器具有精度高、高可靠性和高精度高、高可靠性和高稳定性稳定性的特点的特点,因此被广泛应用。用数字滤波因此被广泛应用。用数字滤波算法克服随机误差主要有如下算法克
2、服随机误差主要有如下优点优点:u数字滤波由软件程序实现数字滤波由软件程序实现,不需要硬件不需要硬件,因因此此 不存在阻抗匹配的问题不存在阻抗匹配的问题;u对于多路信号输入通道对于多路信号输入通道,可以共用一个软件可以共用一个软件“滤波器滤波器”,降低仪表的设计成本降低仪表的设计成本;u只要改变滤波器程序或元算参数只要改变滤波器程序或元算参数,就能方便就能方便的改变滤波特性。的改变滤波特性。下面我们介绍几种主要的数字滤波法:下面我们介绍几种主要的数字滤波法:A.限幅滤波法限幅滤波法l对于对于随机干扰随机干扰,限幅滤波是一种有效的方法;限幅滤波是一种有效的方法;l基本方法基本方法:比较相邻:比较相
3、邻n 和和 n-1时刻的两个采时刻的两个采样值样值y(n)和和 y(n 1),根据经验确定两次采样,根据经验确定两次采样允许的最大偏差。如果两次采样值的差值超过允许的最大偏差。如果两次采样值的差值超过最大偏差范围最大偏差范围,认为发生可随机干扰认为发生可随机干扰,并认为后并认为后一次采样值一次采样值y(n)为非法值为非法值,应予删除应予删除,删除删除y(n)后后,可用可用y(n 1)代替代替y(n);若未超过所允许的;若未超过所允许的最大偏差范围最大偏差范围,则认为本次采样值有效。则认为本次采样值有效。下面是下面是限幅滤波程序限幅滤波程序:(A 值可根据实际情况调值可根据实际情况调整,整,va
4、lue 为有效值为有效值,new_value 为当前采样值为当前采样值滤波程序返回有效的实际值滤波程序返回有效的实际值)#define A 10char value;char filter()char new_value;new_value=get_ad();if(new_value-value A)|(value-new_value A)return value;return new_value;B.中位值滤波法中位值滤波法l中位值滤波法能有效克服中位值滤波法能有效克服偶然因素偶然因素引起的引起的波动或波动或采样不稳定采样不稳定引起的误码等脉冲干扰;引起的误码等脉冲干扰;l对温度对温度 液位
5、等液位等缓慢变化缓慢变化的被测参数用此法的被测参数用此法能收到良好的滤波效果能收到良好的滤波效果,但是对于流量压力等但是对于流量压力等快速变化的参数一般不宜采用中位值滤波法;快速变化的参数一般不宜采用中位值滤波法;l基本方法基本方法:对某一被测参数连续采样:对某一被测参数连续采样 n次次(一般一般 n 取奇数取奇数),然后再把采样值按大小排列然后再把采样值按大小排列,取中间值为本次采样值。取中间值为本次采样值。#define N 11char filter()char value_bufN,count,i,j,temp;for(count=0;countN;count+)value_bufco
6、unt=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;return value_buf(N-1)/2;下面是下面是中位值滤波程序中位值滤波程序:C.算术平均滤波法算术平均滤波法l算术平均滤波法适用于对算术平均滤波法适用于对一般的具有随机一般的具有随机干扰的信号干扰的信号进行滤波。这种信号的特点是信进行滤波。这种信号的特点是信号本身在某一数值范围附近上下波动号本身在某一数值范围附近上下波动,如如测量测量流量、流量、液位
7、液位;l基本方法基本方法:按输入的:按输入的N 个采样数据个采样数据,寻找这寻找这样一个样一个 Y,使得使得 Y 与各个采样值之间的偏差与各个采样值之间的偏差的平方和最小。的平方和最小。编写算术平均滤波法程序时严格注意编写算术平均滤波法程序时严格注意:一一.为了加快数据测量的速度为了加快数据测量的速度,可采用先测可采用先测量数据量数据 存放在存储器中存放在存储器中,测完测完 N 点后点后,再对再对 N 个数据进行平均值计算个数据进行平均值计算;二二.选取适当的数据格式选取适当的数据格式,也就是说采用定也就是说采用定点数还是采用浮点数。其程序如下所示:点数还是采用浮点数。其程序如下所示:#def
8、ine N 12char filter()int sum=0,count;for(count=0;countN;count+)sum+=get_ad();delay();return(char)(sum/N);D.递推平均滤波法递推平均滤波法l基本方法基本方法:采用队列作为测量数据存储器:采用队列作为测量数据存储器,设队列的长度为设队列的长度为 N,每进行一次测量每进行一次测量,把测量把测量结果放于队尾结果放于队尾,而扔掉原来队首的一个数据而扔掉原来队首的一个数据,这样在队列中始终就有这样在队列中始终就有 N 个个“最新最新”的数的数据。当计算平均值时据。当计算平均值时,只要把队列中的只要把队
9、列中的 N 个个数据进行算数平均数据进行算数平均,就可得到新的算数平均值。就可得到新的算数平均值。这样每进行一次测量这样每进行一次测量,就可得到一个新的算术就可得到一个新的算术平均值。平均值。#define N 12char value_bufN,i=0;char filter()char count;int sum=0;value_bufi+=get_ad();if(i=N)i=0;for(count=0;countN;count+)sum=value_bufcount;return(char)(sum/N);程序如下:程序如下:E.一阶滞后滤波法一阶滞后滤波法l优点优点:对周期性干扰具有良
10、好的抑制作用:对周期性干扰具有良好的抑制作用,适用于波动频率较高的场合;适用于波动频率较高的场合;l缺点缺点:相位滞后,灵敏度低:相位滞后,灵敏度低.滞后程度取决滞后程度取决于于a值大小值大小.不能消除滤波频率高于采样频率不能消除滤波频率高于采样频率的的1/2的干扰信号。程序如下:的干扰信号。程序如下:#define a 50char value;char filter()char new_value;new_value=get_ad();return(100-a)*value+a*new_value;7.2 信号处理的信号处理的FFT变换变换快速傅里叶变换快速傅里叶变换(Fast Fouri
11、er Transfonn,FFT)是为了减少离散傅里叶变换是为了减少离散傅里叶变换(Discrete Fourier Transform,DFT)计算次数的一种快速计算次数的一种快速有效的算法。它是根据离散傅氏变换的奇、偶、有效的算法。它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行虚、实等特性,对离散傅立叶变换的算法进行改进获得的。改进获得的。FFT变换算法的基本思想变换算法的基本思想:利用:利用WN的周期性的周期性和对称性,把一个和对称性,把一个N项序列(设项序列(设N=2k,k为正整为正整数),分为两个数),分为两个N/2项的子序列,每个项的子序列,每个N/2点点D
12、FT变换需要(变换需要(N/2)2次运算,再用次运算,再用N次运次运算把两个算把两个N/2点的点的DFT变换组合成一个变换组合成一个N点的点的DFT变换。这样变换以后,总的运算次数就变换。这样变换以后,总的运算次数就变成变成N+2(N/2)2=N+N2/2。其程序片段如。其程序片段如下所示:下所示:#include#include#include typedef struct double r;double i;my_complex;/检查a是否为2的整数次方数#define NOT2POW(a)(a)-1)&(a)|(a)=1)ex+;/len应该等于2的ex次方 y=(my_complex
13、*)malloc(len*sizeof(my_complex);if(!y)return NULL;/变址计算,库里-图基算法 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;yj+k.r=tr+yr;yj+k.i=ti+yi;
14、yj+k+t.r=tr-yr;yj+k+t.i=ti-yi;return y;/以下为测试int main()int i,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(%lft%lfn,xi.r,xi.i);y=fft(x,DATA
15、_LEN);if(!y)printf(序列长度不为2的整数次方!n);return 0;printf(处理后.n实部tt虚部n);for(i=0;iDATA_LEN;i+)printf(%lft%lfn,yi.r,yi.i);free(y);free(x);return 0;7.3 SPWM正弦逆变算法的设计正弦逆变算法的设计lPWM的全称是的全称是Pulse Width Modulation(脉(脉冲宽度调制),它是通过改变输出方波的占空冲宽度调制),它是通过改变输出方波的占空比来改变等效的输出电压,广泛地用于电动机比来改变等效的输出电压,广泛地用于电动机调速和阀门控制;调速和阀门控制;lS
16、PWM是在是在PWM的基础上改变了调制脉冲方的基础上改变了调制脉冲方式,脉冲宽度时间占空比按正弦规率排列,这式,脉冲宽度时间占空比按正弦规率排列,这样输出波形经过适当的滤波可以做到正弦波输样输出波形经过适当的滤波可以做到正弦波输出,它广泛地用于直流交流逆变器等;出,它广泛地用于直流交流逆变器等;lSPWM理论基础理论基础:冲量相等而形状不同的窄:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时脉冲加在具有惯性的环节上时,其效果基本相其效果基本相同。同。实现实现SPWM法的几种方案:法的几种方案:A.等面积法等面积法l该方案是用同样数量该方案是用同样数量等幅而不等宽等幅而不等宽的矩形的矩形脉冲序
17、列代替正弦波脉冲序列代替正弦波,然后计算各脉冲的宽度然后计算各脉冲的宽度和间隔和间隔,并把这些数据存于微机中并把这些数据存于微机中,通过查表通过查表的方式生成的方式生成PWM信号控制开关器件的通断信号控制开关器件的通断,以达到预期的目的;以达到预期的目的;l优点:优点:可准确计算出各开关器件的通断时可准确计算出各开关器件的通断时刻刻,所得的波形很接近正弦波;所得的波形很接近正弦波;l缺点:缺点:计算繁琐计算繁琐,数据占用内存大数据占用内存大,不能实时不能实时控制。控制。用面积法实现用面积法实现SPWM正弦波逆变换的程序片段:正弦波逆变换的程序片段:void CalcSpwmWithArea(f
18、loat32 a/*调制比*/,Uint16 w_Hz/*调制频率*/,Uint32 z_Hz/*载波频率*/)/Uint16 tmp_PR;/T1周期值 volatile Uint16 i,n,*p;float32 m,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;/除去一半 计算半波 n1=(float32)g_T1_Clk/(8.0*m*w_Hz);/计算首相
19、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波形波形.用等腰三角波作用等腰三角波作为载波为载波,当调制信号波为正弦波时当调制信号波为正弦波时,所得到的所得到的就是就是SPWM波形;波形;l优点:优点:实现方法简单,可以解决等面积法实现方法简单,可以解
20、决等面积法计算繁琐的缺点;计算繁琐的缺点;l缺点:缺点:模拟电路结构复杂模拟电路结构复杂,难以实现精确的难以实现精确的控制。控制。C.自然采样法自然采样法l方案原理:方案原理:以正弦波为调制波以正弦波为调制波,等腰三角波等腰三角波为载波进行比较为载波进行比较,在两个波形的自然交点时刻在两个波形的自然交点时刻控制开关器件的通断;控制开关器件的通断;l优点:优点:所得所得SPWM波形最接近正弦波;波形最接近正弦波;l缺点:缺点:脉宽表达式是一个超越方程脉宽表达式是一个超越方程,计算繁计算繁琐琐,难以实时控制。难以实时控制。D.规则采样法规则采样法l方案原理:方案原理:用三角波对正弦波进行采样得用三
21、角波对正弦波进行采样得到阶梯波到阶梯波,再以阶梯波与三角波的交点时刻控再以阶梯波与三角波的交点时刻控制开关器件的通断制开关器件的通断,从而实现从而实现SPWM法;按照法;按照三角波在其顶点或底点的位置不同又分为三角波在其顶点或底点的位置不同又分为对对称规则采样称规则采样和和非对称规则采样非对称规则采样;l优点:优点:计算简单计算简单,便于在线实时运算便于在线实时运算,其中非其中非对称规则采样法因阶数多而更接近正弦;对称规则采样法因阶数多而更接近正弦;l缺点:缺点:直流电压利用率较低直流电压利用率较低,线性控制范围线性控制范围较小。较小。用对称规则采样实现用对称规则采样实现SPWM正弦波逆变换的
22、程序正弦波逆变换的程序片段:片段:void CalcSpwmWithSym(float32 a/*调制比*/,float32 w_Hz/*调制频率*/,float32 z_Hz/*载波频率*/)Uint16 tmp_PR;/T1周期值 volatile Uint16 i,n,*p;float32 m;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;/得到数据表头指针 for(i=0;i(Uint16)m;i+)n=tmp
23、_PR*(0.5-0.5*a*sin(i+0.75)*2*PI/m);*p=n;p+;用非对称规则采样实现用非对称规则采样实现SPWM正弦波逆变换的程正弦波逆变换的程序片段:序片段:void CalcSpwmWithImSym(float32 a/*调制比*/,Uint16 w_Hz/*调制频率*/,Uint32 z_Hz/*载波频率*/)Uint16 tmp_PR;/T1周期值 volatile Uint16 i,n,*p;float32 m;m=z_Hz/w_Hz;/求出载波比 g_SPWM_Table.SpwmSize=(Uint16)m;tmp_PR=g_T1_Clk/(2*z_Hz)
24、;/计算出其周期值 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方案原理:方案原理:采用梯形波作为调制信号采用梯形波作为调制信号,三角三角波为载波波为载波,且使两波幅值相等且使两波幅值相等,以两波的交点以两波的交点时刻控制开关器件的通断实现时刻控制开关器件的通断实现PWM控制;控制;l优点:优点:可以有效地提高直流电压利用率;可以有效地提
25、高直流电压利用率;l缺点:缺点:输出波形中含有输出波形中含有5次次,7次等低次谐波。次等低次谐波。7.4 PID控制算法控制算法l在过程控制中,按偏差的比例(在过程控制中,按偏差的比例(P)、积分)、积分(I)和微分()和微分(D)进行控制的)进行控制的PID控制器控制器(亦(亦称称PID调节器)是应用最为广泛的一种自动控调节器)是应用最为广泛的一种自动控制器制器;l对于过程控制的典型对象对于过程控制的典型对象“一阶滞后一阶滞后纯滞后纯滞后”与与“二阶滞后纯滞后二阶滞后纯滞后”的控制对的控制对象,象,PID控制器是一种最优控制控制器是一种最优控制;lPID调节规律调节规律是连续系统动态品质校正
26、的一是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构种有效方法,它的参数整定方式简便,结构改变灵活(改变灵活(PI、PD、)。)。一一 模拟模拟PID调节器调节器模拟模拟PID控制系统原理框图控制系统原理框图l比例环节比例环节:即时成比例地反应控制系统的偏:即时成比例地反应控制系统的偏差信号差信号e(t),偏差一旦产生,调节器立即产生,偏差一旦产生,调节器立即产生控制作用以减小偏差;控制作用以减小偏差;l积分环节积分环节:主要用于消除静差,提高系统的:主要用于消除静差,提高系统的无差度。积分时间常数无差度。积分时间常数TI越大,积分作用越弱,越大,积分作用越弱,反之则越强;反之
27、则越强;l微分环节微分环节:能反应偏差信号的变化趋势:能反应偏差信号的变化趋势(变化变化速率速率),并能在偏差信号的值变得太大之前,并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。加快系统的动作速度,减小调节时间。PID调节器各校正环节的作用:调节器各校正环节的作用:PID调节器是一种调节器是一种线性调节器线性调节器,它将,它将给给定值定值r(t)与与实际输出值实际输出值c(t)的偏差的比例的偏差的比例(P)、积分积分(I)、微分微分(D)通过线性组合构成控制量,通过线性组合构成控制量,对控制对象
28、进行控制。对控制对象进行控制。lPID调节器的微分方程调节器的微分方程【其中其中 】tDIPdttdeTdtteTteKtu0)()(1)()()()()(tctrtelPID调节器的传递函数调节器的传递函数STSTKSESUSDDIP11)()()(二二 数字数字PID控制器控制器模拟形式模拟形式离散化形式离散化形式)()()(tctrte)()()(ncnrnedTtde)(Tnene)1()(tdtte0)(niniieTTie00)()(l模拟模拟PID控制规律的离散化形式控制规律的离散化形式l数字数字PID控制器的差分方程:控制器的差分方程:000)()()()1()()()()(u
29、nununuuneneTTieTTneKnuDIPniDIP式中:式中:,为比例项;,为比例项;,为积分项;,为积分项;,为微分项。,为微分项。)()(neKnuPPniIPIieTTKnu0)()()1()()(neneTTKnuDPDl常用的控制方式:常用的控制方式:P控制控制 PI控制控制 PD控制控制 PID控制控制 0)()(ununuP0)()()(unununuIP0)()()(unununuDP0)()()()(ununununuDIPlPID算法的两种类型算法的两种类型 位置型控制位置型控制 增量型控制增量型控制00)1()()()()(uneneTTieTTneKnuniD
30、IP)2()1(2)()()1()()1()()(neneneTTKneTTKneneKnununuDPIPP三三 PID算法的程序流程算法的程序流程l增量型增量型PID算法的程序流程算法的程序流程)2()1()()(210neaneaneanu)1(0TTTTKaDIP)21(1TTKaDPTTKaDP2算式:算式:式中:式中:l位置型位置型PID算法的程序流程算法的程序流程递推形式:递推形式:)2()1()()1()()1()(210neaneaneanunununul对控制量的限制对控制量的限制 控制算法总是受到一定运算字长的限制;控制算法总是受到一定运算字长的限制;执行机构的实际位置不
31、允许超过上执行机构的实际位置不允许超过上/下极限。下极限。maxmin)()(unuunumaxmaxminmin)()()(unuunuuunu7.5 51单片机单片机PID算法程序算法程序一一 位置式位置式PID控制算法控制算法位置式位置式PID控制算法的简化示意图控制算法的简化示意图上图中上图中传递函数传递函数为:为:在时域的传递函数表达式:在时域的传递函数表达式:对上式中的微分和积分进行近似:对上式中的微分和积分进行近似:于是传递函数可以简化为于是传递函数可以简化为:其中其中:u(n)第第k个采样时刻的控制;个采样时刻的控制;KP 比例放大系数;比例放大系数;Ki 积分放大系数;积分放
32、大系数;Kd 微分放大系数;微分放大系数;由于全量输出,所以每次输出均与过去状由于全量输出,所以每次输出均与过去状态有关,计算时要对态有关,计算时要对e(k)(k=0,1,n)进行累进行累加,工作量大;加,工作量大;因为计算机输出的因为计算机输出的u(n)对应的是执行机构对应的是执行机构的实际位置,如果计算机出现故障,输出的实际位置,如果计算机出现故障,输出u(n)将大幅度变化,会引起执行机构的大幅将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故,度变化,有可能因此造成严重的生产事故,这在实际生产中是不允许的。这在实际生产中是不允许的。l这种算法有以下这种算法有以下缺点缺
33、点:l程序片段如下程序片段如下:#include#include typedef struct PID double SetPoint;/设定目标Desired value double Proportion;/比例常数Proportional Const double Integral;/积分常数Integral Const double Derivative;/微分常数Derivative Const double LastError;/Error-1 double PrevError;/Error-2 double SumError;/Sums of Errors PID;PID计算部分
34、:计算部分:double PIDCalc(PID*pp,double NextPoint)double dError,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);/微分项 void PIDInit(PI
35、D*pp)memset(pp,0,sizeof(PID);double sensor(void)return 100.0;void actuator(double rDelta)void main(void)PID sPID;double rOut;double rIn;PIDInit(&sPID);sPID.Proportion=0.5;sPID.Derivative=0.0;sPID.SetPoint=100.0;for(;)rIn=sensor();rOut=PIDCalc(&sPID,rIn);actuator(rOut);主程序:主程序:二二 增量式增量式PID控制算法控制算法增量式
36、增量式PID控制控制算法公式算法公式为:为:其中:其中:l程序如下程序如下:typedef struct PID int SetPoint;/设定目标long SumError;/误差累计 double Proportion;/比例常数double Integral;/积分常数double Derivative;/微分常数int LastError;/Error-1 int PrevError;/Error-2 PID;static PID sPID;static PID*sptr=&sPID;/*PID参数初始化*/void IncPIDInit(void)sptr-SumError=0;s
37、ptr-LastError=0;/Error-1 sptr-PrevError=0;/Error-2 sptr-Proportion=0;/比例常数sptr-Integral=0;/积分常数sptr-Derivative=0;/微分常数sptr-SetPoint=0;/*增量式PID计算部分*/int IncPIDCalc(int NextPoint)register int iError,iIncpid;/当前误差 iError=sptr-SetPoint-NextPoint;/增量计算 iIncpid=sptr-Proportion*iError /Ek项-sptr-Integral*sp
38、tr-LastError /Ek1项+sptr-Derivative*sptr-PrevError;/Ek2项 sptr-PrevError=sptr-LastError;sptr-LastError=iError;/返回增量值 return(iIncpid);7.6 模糊控制算法模糊控制算法l模糊控制模糊控制是采用由模糊数学语言描述的控制是采用由模糊数学语言描述的控制律(控制规则)来操纵系统工作的控制方式。律(控制规则)来操纵系统工作的控制方式。l模糊控制系统的模糊控制系统的结构组成和工作原理结构组成和工作原理如下图,如下图,控制器的任务控制器的任务是根据系统输出的误差和误差变是根据系统输出
39、的误差和误差变化情况来决定控制对象的输入量。化情况来决定控制对象的输入量。模糊控制系统具有以下特点:模糊控制系统具有以下特点:l简化系统设计的复杂性,简化系统设计的复杂性,适用于非线性、时适用于非线性、时变、模型不完全的系统变、模型不完全的系统;l利用控制法则来描述系统变量间的关系;利用控制法则来描述系统变量间的关系;l用语言式的模糊变量来描述系统,模糊控制用语言式的模糊变量来描述系统,模糊控制器不必对被控制对象建立完整的数学模式;器不必对被控制对象建立完整的数学模式;l模糊控制器是一语言控制器,操作人员易于模糊控制器是一语言控制器,操作人员易于使用自然语言进行人机对话使用自然语言进行人机对话
40、;l模糊控制器是一种容易控制、掌握的较理想模糊控制器是一种容易控制、掌握的较理想的非线性控制器,具有较佳的的非线性控制器,具有较佳的适应性适应性及及强健性强健性、较佳的较佳的容错性容错性。模糊控制算法主程序:模糊控制算法主程序:void main()int a=0,e,ec;/*int nowpoint,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:%d ec:%d,e,ec);printf(a:%d n,a);/p2=p1;/fclose(in);/fclose(out);
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。