内容目录
第一章.......................................................................................................................................................................数学模型
.................................................................................................................................................................................................2
1.1 时域与复域..............................................................................................................................................................2
1.2 基本数学工具..........................................................................................................................................................4
1.2.1 微分方程与差分方程........................................................................................................................................
...................................................................................................................................................................................4
1.2.2 拉普拉斯变换与传递函数................................................................................................................................
...................................................................................................................................................................................6
1.3 典型环节的微分方程、传递函数及 C 语言实现方法.........................................................................................7
1.3.1 比例环节..........................................................................................................................................................7
1.3.2 惯性环节..........................................................................................................................................................8
1.3.3 积分环节..........................................................................................................................................................9
1.3.4 震荡环节........................................................................................................................................................10
1.3.5 微分环节........................................................................................................................................................11
1.3.6 滞后环节........................................................................................................................................................12
1.4 系统辨识方法建立系统模型................................................................................................................................13
第二章............................................................................................................................................PID 控制及其 C 语言实现
...............................................................................................................................................................................................15
2.1 基本 PID 控制原理及实现....................................................................................................................................15
2.2 积分分离 PID 控制实现........................................................................................................................................18
2.3 抗积分饱和 PID 控制实现....................................................................................................................................20
2.4 变积分 PID 控制实现............................................................................................................................................25
2.5 不完全微分 PID 控制实现....................................................................................................................................28
图 2-8 不完全微分 PID 惯性环节仿真数据图..........................................................................................................31
2.6 其他 PID 控制实现................................................................................................................................................31
第三章...........................................................................................................................工业常用智能算法及其 C 语言实现
...............................................................................................................................................................................................32
3.1 专家系统及其 C 语言实现...................................................................................................................................33
1/53
自动控制系统的 C 语言设计
3.2 模糊逻辑及其 C 语言实现...................................................................................................................................34
3.3 神经网络及其 C 语言实现...................................................................................................................................48
3.4 遗传算法及其 C 语言实现...................................................................................................................................55
3.5 人工智能与 PID....................................................................................................................................................56
第四章...........................................................................................................................................实例设计之电源仿真软件
...............................................................................................................................................................................................56
4.1 电源控制系统模型................................................................................................................................................56
4.2 选择控制方法........................................................................................................................................................56
4.3 实现与仿真............................................................................................................................................................56
后记.......................................................................................................................................................................................56
第一章 数学模型
被控系统的数学模型是描述系统内在物理量之间关系的数学表达式。系统的数学模型体现了输入量、输出量之间的内在关
系,将输入量与输出量通过物理关系连接起来。认清被控系统的数学模型,是设计控制系统的基础。从另外一层意义上讲,对
于本领域被控对象数学模型认识的深入程度,直接决定了工程师在该领域所能取得的成就。认识系统的数学模型是进行控制系
统设计的基础。
1.1 时域与复域
时域,是以时间做基本变量的范围,描述数学函数或物理信号对时间的关系。时域是真实世界,是惟一实际
存在的域。我们的经历都是在时域中发展和验证的,我们习惯于事件按时间的先后顺序地发生。而评估数字产
品的性能时,通常在时域中进行分析,因为产品的性能最终就是在时域中测量的。正是因为时序是真实世界的
反映,在用编程语言描述系统模型或控制系统时,首先需要分析出系统的时域模型。
复域,是指时域的微分方程通过拉普拉斯变坏得到的变量在复数范围内的域。得到复域数学模型(传递函数)
的目的在于分析系统的稳定性,常用的分析方法包括根轨迹和频域分析法。分析系统的稳定性是设计稳定系统
2/53
的基础,读者务求深入了解。图 1-1 所示为系统分析设计的一般步骤。
实际系统是真实世界的客观存在,进行系统设计时,首先要根据实际系统,分析出系统的时域模型,然后通
过拉普拉斯变换得到系统的传递函数,利用控制系统分析方法,分析系统的稳定性,并根据设计要求设计系统
校正环节,然后将校正环节转换为时域系统,利用模拟量或者数字控制技术离散化各个环节,并实现基本的设
计,然后根据实际系统控制状态完善控制方式,最终完成整个系统的设计。以上便完成了整个控制系统的设计
流程。本书将分不同章节分别从模型、分析、设计、实现四个方面进行讲解,以期达到使读者融会贯通的目的。
本章是从模型的角度出发,分析并说明由实际系统向时域模型的抽象,并进一步生成传递函数的方法。以下
能容为本节需要的基本数学知识,如果读者对微分、积分、拉普拉斯变化、拉普拉斯反变换能够充分了解,本
节可略去不看。
时域
转换
校正
环节
实际
系统
系统
分析
时域
模型
传递
函数
图 1-1 控制系统设计环图
3/53
自动控制系统的 C 语言设计
1.2 基本数学工具
1.2.1 微分方程与差分方程
凡是表示未知函数、未知函数的导数与自变量之间关系的方程,都称之为微分方程。微分方程用来描述实际
系统被关注特性随时间演变的过程,它可以描述系统的动态过程。
微分方程进行离散化变形成了差分方程,而差分方程的时间上的连续发生便会形成微分方程。为什么要建立
微分方程与差分方程,因为人们对于变化非常关注,人们往往希望从目前已知的东西上加上合理的预测而得到
未来的变化。也就是说如果我们可以知道“变化值 = 现在值 – 过去值”,那么我们就希望能够得到“未来值 =
现在值 + 变化值”。而微分方程的形式 dm/dt 与差分方程的形式 (M N + 1− M N )/(T N + 1− T N) 恰恰反映了系统
的变化的特性。
下面示例 1-1 说明了系统微分方程的建立过程。如图 1-2 所示,电路由电阻 R、电感 L、电容 C 组成,写出
以 U (t) 为输入, U 0(t) 为输出的微分方程。
L
i(t)
R
U(t)
C
U0(t)
图 1-2 示例 1-1 电路图
4/53
道 u0(t)= 1
基尔霍夫定律指出回路的电压和为 0,那么我们可以知道 u(t)= L di
dt + ( 1
c∫ i(t )dt ,消去中间变量即可得到电压输入输出的微分方程。
+ u0(t)= u(t)
+ RC (du0(t ))
C )∫ i(t)dt+ Ri(t) ,其中我们又知
LC (d 2 u0(t))
dt 2
dt
由公式不难看出,微分方程体现了给定电压 u(t) 与 u0(t) 随时间 t 的变化关系,是系统的一种动态的体
现。对于控制系统而言,控制的过程是动态的过程,控制中所说的平衡也是一种动态的平衡,那么建立系统的
动态模型就是完成控制系统设计的重要前提。
下面我们把上述微分方程转换为差分方程的形式。首先需要明确,二次微分是对一次微分求微分,明白这点
后,差分方程也就容易写出了。
LC
((u0 t(n+ 1)− u0 t(n))/(t(n+ 1)− t(n))− (u0 t(n)− u0t (n− 1))/(t (n)− t(n− 1)))
(t(n+ 1)− t (n))
+ RC
(u0 t(n+ 1)− u0 t(n))
(t(n+ 1)− t(n)) + u0 t(n+ 1)= ut(n+ 1)
我们不难看出,差分方程能够将微分方程离散化,离散化的系统可以很容易用 C 语言表示出来,从而容易用
C 语言描述出相应的模型,进而为设计控制系统提供模型仿真依据。所以说,微分方程转化为差分方程,最终实
现系统的离散化,是理论设计向实际应用转化的必要步骤。
1.2.2 拉普拉斯变换与传递函数
通过上一小节,我们可以知道,系统可以使用多阶微分的形式表示出来,但是问题在于,如果对系统进行分
析,微分方程的求解相当麻烦,尤其对于复杂的系统而言,分析多阶微分方程是相当困难的,那么有没有一种
方法,能够将复杂的微积分运算转化到简单的四则运算呢,拉普拉斯变换就是提供了这样一种方案,将时间域
上的系统转化到复域上来,并在复域上进行分析设计,进行控制设计时,将复域控制系统通过拉普拉斯反变换
的方式转化到时间域,进而可以离散化实现控制过程。
5/53
自动控制系统的 C 语言设计
定义:时间函数 f (t)
,当 t⩾0 使有定义,且广义积分 ∫
+ ∞
0
f (t)e− st dt 在 s的某一区域内收敛,则由此积
分确定的参数为 s的函数 F ( s)= ∫
+ ∞
0
f (t)e− st dt 叫做函数 f (t) 的拉普拉斯变换。
零初始条件下,系统输出量的拉普拉斯变换与输入量的拉普拉斯变化之比就称为线性定常系统的传递函数。
如何由微分方程快速进行拉普拉斯变换?
设线性定常系统由下述 n 阶线性常微分方程描述:
小贴士
a0
d n
dtn c(t)+ a1
d(n− 1)
dt(n− 1) c(t)+ ⋯+ a(n− 1)
d
dt
c(t)+ an c(t)= b0
d m
dt m r(t)+ b1
d(m− 1)
dt(m− 1) r(t)+ ⋯+ b(m− 1)
d
dt
r(t )+ bn r(t)
公式中, c(t) 为系统输出量, r (t) 为系统输入量。且其各阶导数在 t = 0 均为零。则对上述公式进行拉普拉斯变换后,得到的代数方程为:
[a0 sn+ a1 s(n− 1)+ ⋯+ a(n− 1)s+ an]C (s)= [b0 sm+ b1 s(m− 1)+ ⋯+ b(m− 1) s+ bm] R(s)
则系统的传递函数可表示为:
G(s)= C (s)
R(s)= b0 sm+ b1 s(m− 1)+ ⋯+ b(m− 1) s+ bm
a0 sn+ a1 s(n− 1)+ ⋯+ a(n− 1)s+ an
6/53
1.3 典型环节的微分方程、传递函数及 C 语言实现方法
无论多么复杂的系统,总是可以由简单的子系统构成,分析典型环节的特点,其目的是为了通过典型环节的
特点分析更为复杂的系统,实际工程应用中,真正完全通过理论的方式建立模型是非常困难的,实际的模型建
立过程是一个复杂的过程,需要通过假设、验证、参数实验给定等多种手段分析完善模型内容,利用实验获取
模型的方法又称作系统辨识技术,在下一节中将重点讲解。假设的过程,其实就是根据系统特点,综合典型环
节的过程。将不同的环节通过四则运算给予不同的参数进行运算,从而接近真实的模型。从这个角度上讲,透
彻理解典型环节的特点,无论对于理论分析系统,还是对于实际建立系统模型都具有重要的意义。
这里的典型环节包括比例、积分、微分、惯性、震荡、滞后六个子环节。下面进行单独讲解。
1.3.1 比例环节
比例环节是自然界普遍存在的一个环节,几乎所有的系统必定存在比例环节。比例环节的特点在于输入输出
量成正比例关系,没有失真与延时。其微分方程可表示为: c(t)= Kr(t) 。其传递函数可表示为:
G(s)= C (s)
R(s)= K 。
对于比例环节而言,C 语言实现相对比较简单。下面进行 C 语言实现过程的说明。
float ProElement(float K, float GiveValue)
{
float result;
result = K*GiveValue;
return result;
7/53
}
自动控制系统的 C 语言设计
以上代码用 C 语言实现了比例环节的处理。使用时直接定义一全局变量,例如 float ResultValue; 然后直接
调用该函数即可,例如 ResultValue = ProElement(0.1, 10);返回的 ResultValue = 1.0。
1.3.2 惯性环节
惯性环节是自然界普遍存在的另一个环节,其存在的广泛性不亚于比例环节,任何系统,只有时间精度足够
高,都必然存在一定的惯性性能。惯性环节的特点是对变化的输入量,输出量不能立刻复现,或多或少的存在
一定的延时,在延时的时间内,输出量会逐渐接近输入的给定值。其微分方程可表示为: T dc(t )
(dt) + c(t)= r(t) 。
其中 T 为惯性时间常数,T 越大,惯性越大,当延时时间约为 3-4 倍的 T 时,输出接近输入给定值。其传递函数
可表示为: G(s)=
r(t)。首先将微分方程转化为差分方程的形式: T c(t )− c(t− 1)
c(t)= r(t)+ Tc(t− 1)
1
Ts+ 1 。下面讲解用 C 语言实现惯性环节的过程。这里注意系统的输出为 c(t),输入为
。上述公式表明,当前时刻输出量 c(t)与上一时刻输出量 c(t-1)相关。利用该原理,可使
t− (t− 1) + c(t)= r (t) ,化简该公式可表示为:
T+ 1
用 C 语言通过迭代函数实现。首先定于全局变量,存放上一时刻输出量的值 float ResultValueBack。初值设定
为 0,然后可通过下面函数实现迭代过程。
float InertialElement(float T, float GiveValue)
{
float result;
result = (T*ResultValueBack + GiveValue)/(1+T);
ResultValueBack = result;
8/53