第5章3电子系统设计pidand常用算法andcrc校验

上传人:今*** 文档编号:110172860 上传时间:2019-10-29 格式:PPT 页数:45 大小:296.50KB
返回 下载 相关 举报
第5章3电子系统设计pidand常用算法andcrc校验_第1页
第1页 / 共45页
第5章3电子系统设计pidand常用算法andcrc校验_第2页
第2页 / 共45页
第5章3电子系统设计pidand常用算法andcrc校验_第3页
第3页 / 共45页
第5章3电子系统设计pidand常用算法andcrc校验_第4页
第4页 / 共45页
第5章3电子系统设计pidand常用算法andcrc校验_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《第5章3电子系统设计pidand常用算法andcrc校验》由会员分享,可在线阅读,更多相关《第5章3电子系统设计pidand常用算法andcrc校验(45页珍藏版)》请在金锄头文库上搜索。

1、,第5章 信 号 处 理,5.1 运算放大器 5.2 无源滤波器 5.3 有源滤波器 5.4 ADC 5.5 PID 5.6 FIR 5.7 常用算法,PID应用案例 1、加热控制系统 设计一个水温自动控制系统,该系统通过加热棒使水温升高,通过电风扇使水温降低,水温可以在定范围内由人工通过按键设定,并能在受外界环境温度影响的情况下实现快速水温自动控制,以保持设定的温度基本不变。 2、直流电机转速控制系统 要求通过控制使直流电机的转速,保持在一个预置(预置可通过按键来设定)的转速上。 为了达到上面的快速、精确控制,就需要一个闭环控制,就需要用到PID算法。,5.5 PID,PID应用案例 2、直

2、流电机转速控制系统 要求通过控制使直流电机的转速,保持在一个预置(预置可通过按键来设定)的转速上。 为了达到上面的快速、精确控制,就需要一个闭环控制,就需要用到PID算法。,5.5 PID,MCU,电机驱动,电机,测速装置,A/D,PWM,自从计算机进入控制领域以来,用数字计算机代替模拟计算机调节器组成计算机控制系统,不仅可以用软件实现PID控制算法,而且可以利用计算机的逻辑功能,使PID控制更加灵活。数字PID控制在生产过程中是一种最普遍采用的控制方法,在机电、冶金、机械、化工等行业中获得了广泛的应用。它将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故

3、称PID控制器。 PID调节器,本质上是通过闭环控制使一个系统的输出达到理想的目标状态。,5.5 PID,5.5.1 PID算法原理,图5-54 模拟PID控制系统原理框图,error(t),u(t),PID控制器是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制偏差: (5.5.1) PID的控制规律为 (5.5.2),或写成传递函数的形式: (5.5.3),简单来说,PID控制器各校正环节的作用如下: 比例环节:成比例地反映控制系统的偏差信号,偏差一旦产生,控制器立即产生控制作用,以减小偏差。 积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分

4、时间常数,越大,积分作用越弱,反之则越强。 微分环节:反映偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。,5.5.2 PID算法及程序 数字式PID控制根据控制对象的特点,演变出不同的算法,常见的有位置式PID控制算法、增量式PID控制算法、积分分离PID控制算法、抗积分饱和PID控制算法、梯形积分PID控制算法、变速积分PID算法、不完全微分PID控制算法、微分先行PID控制算法、带死区的PID控制算法、基于前馈补偿的PID控制算法、步进式PID控制算法等。在此只讲解电机控制常用的一种算法增量式PID控制

5、算法。根据递推原理可得:,说明:当采样周期相当短时,用求和代替积分,用差商代替微商,将描述连续时间PID算法的微分方程变为描述离散时间PID算法的微分方程。,位置式PID程序流程图,方法二:,方法二:,位置式PID程序,/* 积分分离PID控制算法(即:上一次输出值+增量,特点:减少了超调量,即输出不会超出目标值) 应先定义: #define Kp ? /比例系数 #define Ki ? /积分系数 #define Kd ? /微分系数 int PID_MAX; /PID_MAX即是输入控制量u(t)的最大值 int Uk1=0,ek1=0,ek2=0; 则:输入控制量u(t)PID(目标值

6、,测量值)*/,位置式PID程序,int PID(int Set_value,int Real_value) /积分分离PID控制算法 int ek,Uk; float Up,Ui,Ud; ek=Set_value - Real_value;/误差量 Up=Kp*(ek-ek1); /比例量 if(UpPID_MAX) Up=PID_MAX; /限定积分量上限 else if(UpPID_MAX) Ui=PID_MAX; /限定积分量上限 /else if(Ui0) Ui=0; /限定积分量下限,位置式PID程序,Ud =Kd*(ek-2*ek1+ek2); /微分量 Uk=(signed i

7、nt)(Uk1+Up+Ui+Ud); /PID控制量计算 if(UkPID_MAX) Uk=PID_MAX; /控制量上限=PID_MAX else if(Uk0) Uk=0; /控制量下限=0 ek2=ek1; ek1=ek; Uk1=Uk; return(Uk); ,有限长单位脉冲响应(FIR)数字滤波器可以做成具有严格的线性相位,同时又具有任意的幅度特性。此外FIR滤波器的单位抽样响应是有限长的,因而滤波器一定是稳定的。只要经过一定延时,任何非因果有限长序列都可以变成因果有限长序列,因而总能用因果系统来实现。FIR滤波器由于单位冲激响应是有限长的,因而可以用快速傅里叶变换(FFT)算法来

8、实现过滤信号,从而大大提高运算效率。,5.6 FIR,虽然滤波程序有很多优点,但是由于单片机运行速度较慢,复杂的运算程序无法在单片机运算时保证其实时性,所以很少使用。FIR、FFT、IIR等算法程序一般用于DSP、FPGA的工程设计中,而在单片机中一般用较简单的处理算法程序,这些程序设计简单,所需运行时间短,且在一定应用场合使用时也可达到很好的处理效果。,5.7 常 用 算 法,5.7.1 均值滤波 均值滤波是最简单、有效的滤波方法,它能在一定范围内消除干扰信号对测量数据的影响,且该算法所耗指令周期最短,有利于低速单片机的程序处理。示例程序如下: 均值滤波函数:将reg寄存器数组中的数据进行平

9、均计算,建议数组中的数据应为2n个,有利于平均时利用移位来实现,这样所需时钟周期要比除法程序所需时钟周期少得多。,输入参数:reg,待计算的数组。 输出参数:均值计算结果。 int calculate_average(int reg16) long data = 0; int i; for(i=0; i 4; return(data); /数组更新 reg0=a; reg1=reg0; , reg15 reg14; ,5.7.2 中值滤波 中值滤波是在均值滤波的基础上适当改进而成的。均值滤波只是简单地对所有数值进行平均化处理,如果数值中有错值,也将其计算在内,而中值滤波的思想是将数组中的数据n

10、个最大值和n个最小值同时剔除,将剩余的数据进行均值滤波,这样做的优点是提高了均值数据的可靠性且增加的消耗时钟周期又不多,缺点是有很大可能性将正确的数据剔除,较小可能性将错误的数据未剔除。其示例程序如下: 中值滤波函数:将reg寄存器数组中的数据进行排序处理,提取排序后数组中间的2n个数据。,输入参数:reg,待计算的数组。 输出参数:均值计算结果。 int calculate_average(int reg32) #define ReadLoop 32 int bufReadLoop; int val; long data = 0;,int i, j; / 转移reg的值,目的是不改变reg中

11、值的状态 for(i=0; iReadLoop; i+) bufi = regi; / 排序 for(i=0; iReadLoop-1; i+) ,for(j=i+1; j bufj) val = bufi; bufi = bufj; bufj = val; ,/ 将中间数值进行均值滤波 for(i=8; i 4; return(data); ,5.7.3 3置信区间处理,5.7.3 3置信区间处理 对于采集的信号,通常在一段短时间内可看做是不变的,因此,在一定时间内采集的数据成正态分布,而正态分布的随机误差落在 -,+ 区间的概率为 (5.7.1),该结果的含义可理解为,在进行大量等精度测量

12、时,随机误差落在 -,+ 区间的测得值的数目占测量总数目的68.3%,或者说,测得值落在范围(该范围在概率论中称为置信区间)内的概率(在概率论中称为置信概率)为0.683。 同样可以求得随机误差落在 2和 3范围内的概率为 (5.7.2),(5.7.3) 即当测得值xi的置信区间为和时的置信概率分别为0.954和0.997。由式(5.7.3)可见,随机误差的绝对值大于3的概率仅为0.003,即0.3%,实际上出现的可能性极小,因此定义 (5.7.4),为极限误差,或称为随机不确定度。如果在测量次数较多的等精度测量中,出现了 的情况,则必须予以仔细考虑,通常将 的测得值判为坏值,应予以剔除。为了

13、便于读者学习和使用,下面给出判定剔除程序。 3置信区间判断函数:判断reg寄存器中16个值是否为可靠测量值,即16个值的误差是否都在3区间内,如不在则剔除该值,剔除后重新对剩余值进行再一次3置信区间判断,如再次有值不在3置信区间内,则再次剔除,剔除后再重新对剩余值进行再一次3置信区间判断,如此循环,直至所有值都在3置信区间内,将剩余值进行均值计算后返回。,输入参数:reg,待计算的数组。 输出参数:剔除错值后均值计算结果。 double calculate_average (double reg16) double Vi16 ; / 寄存器值与平均值的偏差值 double Viexp2 ; /

14、 Vi的平方 double average ; / 平均值 double delta3 ; / 3delta double sigma_Vi ; / Vi的和值应为0 char i = 0 ; / 有大于3delta的坏值标志位 char j = 0 ; / char k = 16 ; / 寄存器中还有多少有效值,char l = 0 ; / 剔除错值排序 do i = 0 ; average = 0 ; for (j=0; jk; j+) average = average + regj ; average = average/k ; / 计算出均值,for (j=0; jk; j+) Vij = average - regj ; / 计算出残差 sigma_Vi = 0 ; for (j=0; jk; j+) sigma_Vi = sigma_Vi + Vij ; / 计算出Vi的和值 Viexp2 = 0 ; for (j=0; jk; j+) Viexp2 = Viexp2 + Vij*Vij ; / 计算出方差,if ( k regj) / 排除坏值 ,i = 1; -k; for(l=j

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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