第3章智能汽车设计基础—软件武汉科技大学信息科学与工程学院第3章智能汽车设计基础—软件在智能车系统的设计中,硬件是基础,没有一个好的硬件平台,软件就无法运行。对于智能车系统来说,软件的核心是控制算法。而完成这些任务的编程语言有汇编语言和C语言。软件部分是整个智能车系统的灵魂,在硬件方面各参赛队之间大同小异,真正体现各参赛队智能车的优势和最后决定比赛成绩好坏的往往是软件部分,尤其是核心控制算法的设计。本章首先简要介绍软件编程中使用的汇编语言和C语言各自的特点,然后重点介绍核心控制算法的原理。武汉科技大学信息科学与工程学院3.1编程语言简介13.2控制算法2思考题3第3章智能汽车设计基础—软件武汉科技大学信息科学与工程学院3.1编程语言简介汇编语言是用符号指令书写程序的语言,是依赖于硬件平台的语言,对于不同架构的CPU都会有相应的汇编指令。汇编语言可以直接操作CPU内部的寄存器以及各种外围设备,对于单片机启动开始运行或者对于时序要求严格的I/O操作必须采用汇编语言编写,在启动开始运行时汇编语言创建系统的运行环境。C语言的特点就是可以使程序员尽量少地对硬件进行操作,具有很强的功能性、结构性和可移植性。由于C语言具有语言简洁、紧凑,使用灵活、方便,运算符和数据类型丰富,可以直接访问物理地址,进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作,因此C语言既具有高级语言的功能,又具有汇编语言的功能,对于编写与硬件相关的应用程序而言具有明显的优势。武汉科技大学信息科学与工程学院3.1编程语言简介在绝大多数场合,采用C语言编程即可完成预期的目的,但是对实时时钟系统、要求执行效率高的系统就不适合采用C语言编程,对这些特殊情况进行编程时要结合汇编语言。汇编语言具有直接和硬件打道、执行代码的效率高等特点,可以做到C语言所不能做到的一些事情,例如对时钟要求很严格时,使用汇编语言便成了唯一的选择。这种混合编程的方法将C语言和汇编语言的优点结合起来,已经成为目前单片机开发最流行的编程方法。关于编程语言的详细介绍可参阅相关书籍。武汉科技大学信息科学与工程学院3.2控制算法13.2.1PID控制算法23.2.2模糊控制算法33.2.3其它智能控制算法武汉科技大学信息科学与工程学院3.2.1PID控制算法PID(ProportionalIntegralDifferential)控制是比例、积分、微分控制的简称。在自动控制领域中,PID控制是历史最久、生命力最强的基本控制方式。PID控制器的原理是根据系统的被调量实测值与设定值之间的偏差,利用偏差的比例、积分、微分三个环节的不同组合计算出对广义被控对象的控制量。图3.1是常规PID控制系统的原理框图。武汉科技大学信息科学与工程学院3.2.1PID控制算法图3.1常规PID控制系统原理框图武汉科技大学信息科学与工程学院3.2.1PID控制算法其中虚线框内的部分是PID控制器,其输入为设定值与被调量实测值构成的控制偏差信号:(3.1)其输出为该偏差信号的比例、积分、微分的线性组合,也即PID控制律:(3.2)式中,为比例系数;为积分时间常数;为微分时间常数。()rt()yt()et()()()etrtytPD0I1d()()()()ddtetutKetettTTtPKITDT武汉科技大学信息科学与工程学院3.2.1PID控制算法根据被控对象动态特性和控制要求的不同,式(3.2)中还可以只包含比例和积分的PI调节或者只包含比例微分的PD调节。下面主要讨论PID控制的特点及其对控制过程的影响、数字PID控制策略的实现和改进,以及数字PID控制系统的设计和控制参数的整定等问题。武汉科技大学信息科学与工程学院3.2.1PID控制算法1.PID控制规律的特点(1)比例控制器比例控制器是最简单的控制器,其控制规律为(3.3)式中,Kp为比例系数;为控制量的初值,也就是在启动控制系统时的控制量。图3.2所示是比例控制器对单位阶跃输入的阶跃响应。由图3.2可以看到,比例控制器对于偏差是及时反应的,偏差一旦产生,控制器立即产生控制作用使被控量朝着减小偏差的方向变化,控制作用的强弱取决于比例系数Kp。p0()()utKetu0u武汉科技大学信息科学与工程学院3.2.1PID控制算法图3.2比例控制器的阶跃响应武汉科技大学信息科学与工程学院3.2.1PID控制算法比例控制器虽然简单快速,但对于具有自平衡性(即系统阶跃响应终值为一有限值)的被控对象存在静差。加大比例系数Kp虽然可以减小静差,但当Kp过大时,动态性能会变差,会引起被控量振荡,甚至导致闭环系统不稳定。武汉科技大学信息科学与工程学院3.2.1PID控制算法(2)比例积分控制器为了消除在比例控制中存在的静差,可在比例控制的基础上加上积分控制作用,构成比例积分PI控制器,其控制规律为(3.4)式中,称为积分时间。图3.3所示为PI控制器对单位阶跃输入的阶跃响应。p00i1()()()dtutKetettuTiT武汉科技大学信息科学与工程学院3.2.1PID控制算法PI控制器对偏差的作用有两个部分:一个是按比例部分的成分,另一个是带有累积的成分(即呈一定斜率变化的部分),这就是积分控制部分的作用。只要偏差存在,积分将起作用,将偏差累计,并对控制量产生影响,即偏差减小,直至偏差为零,积分作用才会停止。因此,加入积分环节将有助于消除系统的静差,改善系统的稳态性能。武汉科技大学信息科学与工程学院3.2.1PID控制算法图3.3PI控制器的阶跃响应武汉科技大学信息科学与工程学院3.2.1PID控制算法显然,如果积分时间太大,则积分作用减弱,反之则积分作用较强。增大,将使消除静差的过程变得缓慢,但可以减小系统的超调量,提高稳定性。必须根据被控对象的特性来选定,如对于管道压力、流量等滞后不大的对象,可以选得小些,对温度、成分等滞后比较大的对象,可以选得大些。武汉科技大学信息科学与工程学院3.2.1PID控制算法(3)比例积分微分控制器积分调节作用的加入,虽然可以消除静差,但其代价是降低系统的响应速度。为了加快控制过程,有必要在偏差出现或变化的瞬间,不但要对偏差量做出反应(即比例控制作用),而且要对偏差量的变化做出反应,或者说按偏差变化的趋势进行控制,使偏差在萌芽状态被抑制。为了达到这一控制目的,可以在PI控制器的基础上加入微分控制作用,即构造比例积分微分控制器(PID控制器)。PID控制器的控制规律为(3.5)pd0i1d()()()()ddtetutKetettTTt武汉科技大学信息科学与工程学院3.2.1PID控制算法式中,称为微分时间。理想的PID控制器对偏差阶跃变化的响应如图3.4所示,它在偏差变化的瞬间处有一个冲激式的瞬态响应,这就是由微分环节引起的。图3.4理想PID控制器的阶跃响应武汉科技大学信息科学与工程学院3.2.1PID控制算法由微分部分的控制作用(3.6)可见,它对偏差的任何变化都会产生控制作用,以调整系统的输出,阻止偏差的变化。偏差变化越快,控制量就越大,反馈校正量就越大。故微分作用的加入将有助于减少超调量,克服振荡,使系统趋于稳定。微分作用可以加快系统的动作速度,减小调整时间,改善系统的动态性能。dpdd()detuKTt武汉科技大学信息科学与工程学院3.2.1PID控制算法2.数字PID控制算法在连续生产过程控制系统中,通常采用如图3.1所示的PID控制,其对应的传递函数表达式为(3.7)对应的控制算法表达式为(3.8)式中,为比例增益;为积分时间常数;为微分时间常数;为控制量;为被控量与设定值的偏差。pdi()11()UsKTsEsTspd0i1d()()()()ddtetutKetettTTtpKiTdT()ut()et()yt武汉科技大学信息科学与工程学院3.2.1PID控制算法为了便于计算机实现PID算法,必须将式(3.3)改写为离散(采样)式,这可以将积分运算用部分和近似代替,微分运算用差分方程表示,即(3.9)(3.10)式中,T为采样周期;k为采样周期的序号();和分别为第和第k个采样周期的偏差。00()d()ktjettTejd()()(1)detekektT0,1,2,k…武汉科技大学信息科学与工程学院3.2.1PID控制算法将式(3.9)和式(3.10)代入式(3.8)可得相应的差分方程,即(3.11)式中,为第k个采样时刻的控制量。如果采样周期T与被控对象时间常数比较相对较小,那么这种近似是合理的,并与连续控制的效果接近。模拟调节器很难实现理想的微分,而利用计算机可以实现式(3.10)所表示的差分运算,故将式(3.11)称为理想微分数字PID控制器。基本的数字PID控制器一般具有以下两种形式的算法。dpi0()()()[()(1)]kjTTukKekejekekTT()ukd()/dett武汉科技大学信息科学与工程学院3.2.1PID控制算法图3.5位置型算法流程图武汉科技大学信息科学与工程学院3.2.1PID控制算法(1)位置型算法模拟调节器的调节动作是连续的,任何瞬间的输出控制量u都对应于执行机构(如调节阀)的位置。由式(3.11)可知,数字控制器的输出控制量也和阀门位置相对应,故称为位置型算式(简称位置式)。相应的算法流程图如图3.5所示。由图3.5可以看出,因为积分作用是对一段时间内偏差信号的累加,因此,利用计算机实现位置型算法不是很方便,不仅需要占用较多的存储单元,而且编程也不方便,因此可以采用其改进式——增量型算法来实现。()uk武汉科技大学信息科学与工程学院(2)增量型算法根据式(3.6)不难得到第个采样周期的控制量,即(3.12)将式(3.11)与式(3.12)相减,可以得到第k个采样时刻控制量的增量,即(3.13)式中,为比例增益;为积分系数,;为微分系数,。1dpi0(1)(1)()[(1)(2)]kjTTukKekejekekTTdpipid()()(1)()[()2(1)(2)][()(1)]()[()2(1)(2)]TTukKekekekekekekTTKekekKekKekekekpKiKipi/KKTTdKdpd/KKTT3.2.1PID控制算法武汉科技大学信息科学与工程学院3.2.1PID控制算法由于式(3.13)中对应于第k个采样时刻阀门位置的增量,故称式(3.13)为增量型算式。由此,第k个采样时刻实际控制量为(3.14)为了编写程序方便,将式(3.13)改写为(3.15)式中,;;。()(1)()ukukuk012()()(1)(2)ukqekqekqekd0pi1TTqKTTd1p21TqKTd2pTqKT武汉科技大学信息科学与工程学院3.2.1PID控制算法由此可见,要利用和得到,只需要用到,和三个历史数据。在编程过程中,这三个历史数据可以采用平移法保存,从而可以递推使用,占用的存储单元少,编程简单,运算速度快。增量型算法的程序流程图如图3.6所示。增量型算法仅仅是在算法设计上的改进,其输出是相对于上次控制输出量的增量形式,并没有改变位置型算法的本质,即它仍然反映执行机构的位置开度。如果希望输出控制量的增量,则必须采用具有保持位置功能的执行机构。数字PID控制器的输出控制量通常都是通过D/A转换器输出的,在D/A转换器中将数字信号转换成模拟信号(4~20mA的电流信号或0~5V的电压信号),然后通过放大驱动装置作用于执行机构,信号作用的时间连续到下一个控制量到来之前。因此,D/A转换器具有零阶保持器的功能。()uk(1)uk()uk(1)ek(2)ek(1)uk武汉科技大学信息科学与工程学院3.2.1PID控制算法图3.6增量型算法流程图武汉科技大学信息科学与工