基于pid算法多电机协同运动控制系统的研究与设计内容摘要:

了智能车的速度检测模块,该模块的作用就是实时的给单片机提供智能车行驶速度,智能车通过传感器感应到的路面信息经过单片机处理后就能判断出此时智能车所处的状态,通过对赛道的分析我们知道所处的状态不同,智能车所要求达到的车速也是不同的,这就要求智能车在判断完状态后检测当前车速,看车速是否符合当前状态,如速度值小于给定车速,则将驱动电机 PWM 输入的占空比置为 100%,若速度大于给定车速则将电机的 PWM 占空比置为 0,以达到控制车速的目的。 智能车在行驶中的状态是实 时变化的,这就要求速度控制系统也要不断变化,变化完毕后还要进行检查。 我们把这个检测系统称为速度闭环,如图 所示。 图 控制系统中的软件需要完成系统初始化以及控制过程的实现等功能,是一个控制系统的核心部分,软件设计的好坏直接影响到系统的性能。 单片机系统需要接收路径识别电路的信号及车速传感器的信号,并采用某种路径搜索算法进行寻线判断,进而控制转向伺服电机和直流驱动电机的工作。 这些功能的实现都是通过软件实现的算法设计主要包括数学建模、方向控制算法和速度控制算法。 智能车的软件设计基于 Resenas Hiperformance Embedded Workshop 编程环境开发和调试,使用 C 语言实现。 系统程序流程图 所示: ・ 使用 C 语言编程。 ・ 传感器状态的读取,伺服的操控,左右马达的控制。 ・ 检测出直角前方的横线,将信息传送给专门程序,在到达直角弯道时大幅度转弯。 智能车的数学模型及其控制算法的实现目标 智能车传感器采用一字形布置,这种布置形式使输入信号简单明确,抗干扰信号能力强,但是由于硬件条件的限制,智能车只能看到脚下的道路。 我们对智能车进行数学建模时并不需要过多的计算,将智能车与现实世界结合起来,通过传感器的信息采集我们就可以知道,智能车告诉我们的不是其处于弯道还是直道,是左转还是右转,将要走直线还是转弯,而是说明的智能车当前的位置与白线的关系 ,所以我们可以建立一个以原点对称的坐标轴来描述智能车的数学模型 ,如图 4 所示。 关于 PID 在过程控制中,按偏差的比例( P)、积分( I)和微分( D)进行控制的 PID控制器(亦称 PID 调节器)是应用最为广泛的一种自动控制器。 它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象──“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象, PID 控制器是一种最优控制。 PID 调节规律是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构改变灵活( PI、PD、„)。 参数的选择: ①比例系数 P 对系统性能的影响:比例系数加大,使系统的动作灵敏,速度加快,稳态误差减小; P 偏大 ,振荡次数加多,调节时间加长; P 太大时,系统会趋于不稳定; P 太小,又会使系统的动作缓慢。 P 可以选负数,这主要是由执行机构、传感器以及控制对象的特性决定的。 如果 P的符号选择不当对象测量值就会离控制目标的设定值越来越远,如果出现这样的情况 P 的符号就一定要取反。 同时要注意的是,力控的策略控制器的 PID 控制块的 P参数是 PID 控制中的增益。 ②积分控制 I 对系统性能的影响:积分作用使系统的稳定性下降, I小(积分作用强)会使系统不稳定,但能消除稳态误差,提高系统的控制精度。 ③微分控制 D 对系统性能的影响:微分作用可以改善动态特性, D偏大时,超调量较大,调节时间较短; D偏小时,超调量也较大,调节时间也较长;只有D合适,才能使超调量较小,减短调节时间。 经常有人问有关 PID 的用法,看一些有关单片机应用的书上都有关于 PID的应用原理,但是面对具体的问题就不知道如何应用了,主要的问题是里面所用到的参数以及计算结果需要进行什么处理,通过什么样的换算才能具体地应用于实际,另外在计算方法上也存在着数值计算的算法问题,下面举例温度控制中的PID 部分,希望能够把 PID 的具体应用说明白。 名词解释 : 直接计算法和增量算法,这里的所谓增量算法就是相对于标准算法的相邻两次运算之差,得到的结果是增量,也就是说,在上一次的控制量的基础上需要增加(负值意味着减少)控制量,;例如对于可控硅电机调速系统,就是可控硅的触发相位还需要提前(或迟后)的量,对于温度控制就是需要增加(或减少)加热比例,根据具体的应用适当选择采用哪一种算法,但基本的控制方法、原理是完全一样的,直接计算法得到的是当前需要的控制量,相邻两次控制量的差就是增量; 基本偏差 e(t)。 表示当前测量值与设定目标之间的差,设定目标是被减数,结果可 以是正或负,正数表示还没有达到,负数表示已经超过了设定值。 这是面向比例项用的变动数据。 累计偏差 ∑ e(t)=e(t)+e(t1)+e(t2)+„ +e(1) 式 这是我们每一次测量到的偏差值的总和,这是代数和,考虑到它的正负符号的运算,这是面向积分项用的一个变动数据。 基本偏差的相对偏差 e(t)e(t1),用本次的基本偏差减去上一次的基本偏差,用于考察当前控制的对象的趋势,作为快速反应的重要依据,这是面向微分项的一个变动数据。 三个基本参数: Kp,Ki,Kd。 这是做好一个控制器的关键常熟,分别称为比例常数、积分常数和微分常数,不同的控制对象它们需要选择不同的数值,还需要经过现场调试才能获得较好的效果。 标准的直接计算法公式: Pout(t)=Kp*e(t)+Ki*∑ e(t)+Kd*(e(t)+e(t1))。 式 上一次的计算值: Pout(t1)=Kp*e(t1)+Ki*∑ e(t1)+Kd*(e(t1)+e(t2))。 式 两式相减得到增量法计算公式: Pout=Kp*(e(t)e(t1)+Ki*e(t)+Kd*(e(t)2*e(t1)+e(t2))。 式 这里我们对 ∑ 项的表示应该是对 e(i)从 1到 t的全部总和。 参数的作用 三个基本参数 Kp,Ki,Kd 在实际控制中的作用: 比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。 比例作用越大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。 积分调节作用:是使系统消除稳态误差,提高无差度。 因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。 积分作用的强弱取决于积分时间常数 Ti, Ti越小,积分作用就越强。 反之 Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。 积分作用常与另两种调节规律结合,组成 PI 调节器或 PID 调节器。 微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。 因此,可以改善系统的动态性能。 在微分时间选 择合适情况下,可以减少超调,减少调节时间。 微分作用对噪声干扰有放大作用,因此过强地加微分调节,对系统抗干扰不利。 此外,微分反映的是变化率,而当输入没有变化时,微分作用输出为零。 微分作用不能单独使用,需要与另外两种调节规律相结合,组成 PD或 PID 控制器。 具体应用中的数值量化处理 上面只是控制算法的数学方法,似乎有点抽象,在具体的控制项目中怎么对应呢。 也就是具体的量化问题。 下面举一个在温度控制中的处理方法。 对于加温的温度控制可以采用调节供电电压或在一定的时间循环周期内的供电时间比例来调节加温控制温度,一般以调节加温时间比例比较简单,也是控制上比较常用的方法。 调压法控制的原理是通过调节可控硅的触发相位角达到对电压的调节,这个电压是指有效电压,直观上就是对一个正弦波形的前边切掉一块,用不同的切割位置以保留剩余的面积。 为了叙述方便,我们还是采用控制时间比例的办法:我们设定一个标准的加温周期,例如 2分钟,我们就在这个两分钟周期内对输出进行控制,也就是说在这个 2 分钟内加温多少时间,全速加温就是连续整个周期( 2分钟)都加 温,当然停止加温就是完全不输出,根据我们的计算可以让加温时间在 02 分钟内变化,比如计算所得我们在这一个周期内应该加温 1 分 30 秒,经过两分钟以后再测量被加温物体的温度,通过计算我们应该加温 1 分 28 秒,等等,这里除了加温以外的时间就是不加温,等待下一个周期到来,再进行实际测量计算下一周期我们的输出量,周而复始,不断地修正我们的输出量,以达到对温度的有效控制。 为了对应我们的程序处理上的方便,我们在程序内部一般并不是用时分秒来计算的,通常我们会使用系统的一个定时器用于系统全部时钟,例如显示刷新、键盘扫描等,相对 于计算来说,我们的控制周期比较长,所以我们对 2 分钟进行细分,例如我们用每分钟进行 100 等分,则两分钟就是 200等分,用于我们的温度控制,这样的输出比例的变化已经足够细了,我们可以有 200 个输出等级了。 取 200 的另一个好处是,对应于我们的 8位单片机刚好可以在一个字节内进行运算,程序简单运算速度快。 当需要改变我们的定时周期时,有些不同的加热对象,例如对较大热惯性的加热对象时,可能 2 分钟周期太短了,我们可以通过修改基本定时常数的办法来实现,而保持我们的 200 等分不变。 我们对 2分钟进行 200等分,算一下它的每一个基 本单位的具体时间。 To=60*2/200==600ms 式 这对于单片机来说太长了,因为如果我让我的定时器做到这么慢的定时周期就干不了别的事了,为了其他处理一般我们定时在 510ms,所以就需要另外设定一个变量 Ttemp 在每一个定时中断发生时对 Ttemp 计数。 例如我的系统定时器的定时常数对应于 10ms,则设定 Ttemp 在达到 60的时候才确认是达到 600ms 了,才作为一个基本的输出时间单位。 对应于总周期的修改,我们的 200等分可以不用修改,而只要修改我们的变量 Ttemp 的判 断边界就可以了,例如对应于 2分钟时是 60,则在 3分钟为周期时边界改为 90 就行了,定下了我们的基本控制时间分辨率以后,我们的就算就可以不用改变了。 当然,根据具体对象也可以修改这个等分数。 温控仪离不开测温器件,无论用什么测温器件(传感器),对于控制上来说,首先需要将测到的值换算为温度数据,一般我们国内都采用摄氏度℃,工业上使用的测温器件一般都是非线性的器件,经过放大、 A/D转换所得到的电压数据与温度呈非线性关系,存在着微小的差异,一般采用电压值查表的办法获得实际温度,这个表格是以每一个温度点上的电压值来表达的 ,由于我们的单片机 rom的大小限制,这个表格就不可能做得很细,基本上以度作为间隔,也就是说直接查表只能获得度为单位的温度值,而实际测量的温度可能是介于 T与 T+1度之间,在 PID 控制计算上,这样的分辨率是不够的,所以我们需要进一步获得具体的温度精确数据,一般采用将 T 与 T+1 之间的电压差和 AD实际值 (mv)进行定比分点的办法(更精确的是采用二次插值计算法)获得温度的精确数值,也就是获得小数部分。 如果能够做到 1/10 度的温度分辨率精度就可以基本满足控制运算要求了,所以我们可以用定点数的办法处理。 不采用浮点数是因为 单片机的运算速度不适合用浮点数,定点数处理,就是将温度的内部运算单位放大 10 倍。 如果想让我们的控制做得更好,还可以再提高温度的内部精度,例如精确到 1/100 度,这也是现在高级温控仪常用的精度。 PID 的三个基本参数 Kp、 Ki、 Kd,一般由试验确定,根据我。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。