船用柴油机中央冷却系统水温的智能控制
分运算,进行如下近似变换:
t?kT(k?0,1,2,...)?e(t)dt?T??e(JT)?T??e(j)0j?0i?0tkkde(t)e(kT)?e[k?1]Te(k)?e(k?1)??dtTT (4-4) 式中:T—系统采样周期。
显然,在上述的离散化处理过程中,只有采样周期足够短才能保证近似转化有足够的计算精确度将式子(4-4)代入到式子(4-2)中,就可以推导出数字PID的控制算法表达式为:
u(k)?Kp?e(k)?Kj?e(j)j?0k?KD[e(k)?e(k?1)] (4-5)
式中: k—采样时刻序号,k=0,l,2,?:
u(k)—第k次采样时刻的计算机输出数值; e(k)—第k次采样时刻的输入偏差数值; e(k一1)—第(k-l)次采样时刻的输入偏差数值;
kj—积分系数,由
kj?kpTTj表示;
kD—微分系数,由
kD?kpTDT表示:
同时,又由于上文介绍的,本系统的执行机构需要的是控制量的增量,即驱动的是步进电动机,因此,所使用的控制算法是增量式PID控制算法。由式子(4-5)提供的增量PID控制算式,根据递推原理可以得到以下两个相近的算式:
u(k)?Kp??e(k)?KD[e(k)?e(k?1)]J?0Ku(k?1)?Kp?e(k?1)?KJ??e(j)?KD[e(k?1)?e(k?2)]j?0k?1 (4-6)
两式相减可得以下关系式:
25
船用柴油机中央冷却系统水温的智能控制
?u(k)?Kp[e(k)?e(k?1)]?Kje(k)?KD[e(k)?2e(k?1)?e(k?2)]?Kp??e(k)?Kje(k)?KD[e(k)?2e(k?1)?e(k?2)](4-7)
式中: ?e(k)?e(k)?e(k?1) (4-8) 式子(4-8)称为增量式PID控制算法。我们可以将式子(4-8)进一步改写为以下关系式:
?u(k)?A?e(k)?B?e(k?1)?C(k?2) (4-9)
A?Kp(1?
TTD
?)T1TTD
)T
B?Kp(1?2
式中: C?
KDTDT
可以看出,A、B、C都是与采样周期T、比例系数
Kp、积分时间常数T1微分
时间常数TD等有关的系数。由于在计算机控制系统中是采用的恒定的采样周期T,这样,当我们进行计算时,只要确定了比例系数
Kp,积分时间常数T1、微分
时间常数T,这三个数值,只要使用前后三次测量数值的偏差,就可以使用计算机执行软件计算出控制增量来,准确性高。至于将在后文中介绍。
(2)纯滞后补偿算法一一smith预估器: 由上文介绍,本系统的简化传递函数为:
Kp、T1、TD这三个数值的确定,
K?e?nG(S)?1?T1S
但是由于被控对象具有明显的纯滞后特性,会导致系统的控制作用不及时,引起系统产生超调或者振荡的现象,所以我们采用了smith纯滞后补偿算法,利用计算机的计算性能好的特点来实现被控对象滞后补偿。smith预估器是得到广泛应用的时滞系统的控制方法。该方法的基本思路是:预先估计出系统在基本扰动下的动态特性,然后由预估器对时滞进行补偿,力图使破延迟了的被调量超前反映到调节器,使调节器提前动作,从而抵消掉时滞特性所造成的影响,减小系统超调量,提高系统的稳定性,加速调节过程,从而提高了系统的快速性。smith补偿的原理是:与PID控制器并联一个补偿环节,用于补偿纯滞后的产生,这个
26
船用柴油机中央冷却系统水温的智能控制
补偿环节就是Smith:预估器,其传递函数如下所示:
K?(1?e?n)G2(S)?1?T1S
带有纯滞后补偿的系统框图如下图4-12。
r e v u PID控制 K?e?n1?T1S被控对象 C (t) 纯滞后补偿 d K?(1?e?n) 1?T1S图4-12 smith纯滞后补偿控制系统
如图4.2所示,增加的补偿环节与被控对象组成了一个广义对象,其传递函 数是:
G(S)?K1?T1S
这样,可以将控制系统框图简化为图4-13所示:
u r e PID控制 K1?T1SK?e?n 图4-13 用Smith补偿后控制系统简化框图
由上图我们可以看出,用smith预估器进行纯滞后补偿之后,被控对象的纯滞后坏节被移到反馈回路之外,而系统的传递函数是简单的一阶惯性环节,在进行肛三调节时,不再存在因滞后带来的一系列问题,能够得到良好的调节效果,因而系统是稳定的。
27
船用柴油机中央冷却系统水温的智能控制
?ne同时,纯滞后环节中,存在函数。在以往冷却水温度调节器是模拟仪表
时,是很难实现的环节,但是现在用单片机控制时,可以很容易用执行软件计算的形式来实现。
4.2计算机软件及功能
1.串行通讯:
PC与单片机通信是采用MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
Microsoft Communications Control(简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
串行通信控件MSComm32. OCX提供了使用RS - 232 进行数据通信的所有协议,我们可以使用不同的工作方式来处理和解决各类通信软件的开发设计问题。Visual C++ 为该控件提供了标准的事件处理函数和过程,并通过属性和方法提供了串行通信的设置,我们可以通过设置不同的属性来完成所要求的通信功能。
MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。 ? 事件驱动方式
事件驱动是处理连接端口通信的一种有效方法,可以利用OnComm 事件捕获并处理通信中发生的事件和错误,通过分别对每个CommEvent 属性值编程即可完成对各个事件或错误的处理,实时性较强。
? 查询方式
可以在每个重要的程序之后查询MSComm控件某些属性(如Comnfl~vent属性和InBufferCount属性)的值来检测事件和通信错误。这对小的自含程序可能比较常用。
本系统主要使用查询方式来工作。
MSComm控件有许多重要的属性.其中几个重要的属性如下:
(1)CommPor: 设置并返回通信端口号,此属性反映了系统所使用的端口,如果使用上位匹机的COMI口,则设置:Commpor=1;
(2)PortOpen:[TRUE/FALSE],设置并返回通信端口的状态,或者打开和关闭端口。若系统进行串行通信时,此属性为TRUE;
(3)Input:从接收缓冲区中返回并删除数据;
28