软件分散课程设计 沈中皓 120900715
软 件 课 程 设 计
一阶系统 PID 算法控制及仿真
自动化 1203 沈中皓
120900715
0
软件分散课程设计 沈中皓 120900715
内容目录
1.设计任务及要求...........................................................................................................................2
2.总体方案.......................................................................................................................................2
2.1 设计思路...........................................................................................................................2
2.2 数字 PID 及其算法...........................................................................................................2
2.3 离散控制系统的数学描述...............................................................................................3
2.4 各控件的使用...................................................................................................................3
2.5 方案选定...........................................................................................................................5
3.运行与调试...................................................................................................................................5
3.1 出现的问题.......................................................................................................................5
3.2 改进措施...........................................................................................................................5
4.软件的功能及使用.......................................................................................................................5
4.1 主界面...............................................................................................................................5
4.2 功能键...............................................................................................................................6
4.3 效果图.......................................................................................................................................6
5.心得体会.......................................................................................................................................7
6.参考文献.......................................................................................................................................7
1
软件分散课程设计 沈中皓 120900715
1 设计任务及指标要求
对一阶系统实现 PID 算法控制并进行仿真,具体功能如下:
1) 基本要求:实现 PID 算法和一阶系统差分方程仿真,PID 算法中的四
个参数和一阶系统的参数都可以通过菜单进行设定,系统对阶越函数
的响应以图形方式实时显示在窗口中。
2) 附加功能:将系统的时间响应数据保存到数据库中,具体应包括下
列属性:时间,输出值。将系统的历史响应重现。使用 Teechart 控件
作为显示输出。
2 总体方案
2.1 设计思路
设计本软件需要克服两点问题。第一是对于自动控制原理中的概念从连续到离散,从书
面到电子、程序的转化过程,但是这个过程在老师给的资料里面已经有了很好的提示,正如
下文中的两项内容,稍做整理规划即可以成为代码使用。
其次,便是编写一个可以作为我们可观可控的载体,老师推荐使用 VB,同时还可以使
用的有 MFC,MATLAB,C++,Java,C#,HTML4 等等,这些与以往编程相关的课程不同的是,
涉及到了图形界面,又是一次全新的挑战,需要我们在短时间内学习并且掌握一些基础的概
念和应用方法,涉及到了一下诸如窗体,控件,事件的编程概念供以使用。
2.2 数字 PID 及其算法
模拟的 PID 表达式
)(
tP
)([
teK
P
1
T
I
)(
te
dt
T
D
])(
tde
dt
离散的 PID 表达式
)(
kP
)({
kEK
P
T
T
I
k
j
0
)(
jE
T
D
T
[
)(
kE
(
kE
})]1
根据递推原理,可写出(k-1)次的 PID 输出表达式:
增量型 PID 算法的算式为:
2
软件分散课程设计 沈中皓 120900715
)(
kP
)(
kEK
[
P
(
kE
)]1
)(
kEK
I
kEK
(2)(
kE
[
D
)1
(
kE
)]2
对应程序中如下代码
Error1 = SetPoint - Now;
u = Error1 - Error2;
u = u + Error1 * T / PID_I;
u = u - PID_D * (Error1 - 2 * Error2 + Error3) / T;
u = u * PID_P;
Error3 = Error2;
Error2 = Error1;
2.3 离散控制系统的数学描述
设系统为一阶惯性环节,系统的传递函数为:
)(
sY
)(
sX
)(
sG
1
sT
1
1
[(
nyT
1
])1
T
T
(
nTy
)
(
nTy
)
(
nTx
)
[(
ny
])1
T
(
T
T
1
()1
nTy
)
T
T
1
(
nTx
)
上式可写成:
整理得
对应程序中如下代码
u += PID(Gs_Y);
Gs_X = u;
Gs_Y = (T / Gs_T1) * Gs_X - (T / Gs_T1 - 1) * Gs_Y;
2.4 C#中各控件的使用
2.2.1 button
当按钮被单击将触发事件,相应的代码如下:
private void button_XXXX_Click(object sender, EventArgs e)
{
/*
your code
*/
3
软件分散课程设计 沈中皓 120900715
}
2.2.2 lable
主要作为显示,提示
2.2.3 textBox
作为不同变量的输入输出,发挥着重要的作用,同时在其数据的转化上面,也是费了一些事
情
将textBox里面的数字转化为DEC的函数自己写
PID_P = ChangeToU16(tBox_P.Text);
将内容输出到 textBox 里面,即为赋值一个字符串
tBox_Value.Text = "0";
2.2.4 AxTeeChart
TeeChart 控件是经久不衰的图形控件,多年以来深受大家喜爱。
使用此控件需要先从下载一个 ocx 文件开始,进行注册,导入,才可以使用,其过程颇有一
番波折 ,但是最终还是受益良多。Teechart 可以画折线曲线,柱形图,饼形图,2D 和 3D
之间的切换也是非常的方便。但是在本次设计中,仅仅使用最简单的几个功能。
2.2.5 Form
主窗体,相当于画板
2.2.6 Timer
用于在计算相应数值的时候,精准定时
myTime.Elapsed += new ElapsedEventHandler(OnTimer);
myTime.Interval = 5;
myTime.Enabled = false;
当按下开始按钮时候,使能值 Enable 被赋值为 true。
4
软件分散课程设计 沈中皓 120900715
2.4 Access 数据库
使用
using System.Data.OleDb;
链接 Access 数据库,并利用 SQL 语句进行写入和读取
OleDbConnection thisConnection = new
OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data
Source=PID.mdb;Persist Security Info=False");
string sql = "";
OleDbCommand cmd = new OleDbCommand();
。。。。。。
cmd.CommandText = sql;
cmd.Connection = thisConnection;
cmd.Parameters.AddWithValue("@mytime", (5 * time).ToString());
cmd.Parameters.AddWithValue("@mydata", u.ToString());
sql = "insert into myTB(myTime,myData) values(@mytime,@mydata)";
cmd.ExecuteNonQuery();
。。。。。。
2.5 方案选定
基于 C#背后强大的.net 类库和最近走向开源的良好发端,我选择了 C#作为本次设计的开发
语言,VisualStdio2010 作为开发环境,AxTeeChart 作为附加使用的控件。
PID 的实现方式多种多样,有位置式的 PID 算法和增量式的 PID 算法,其中又包括微分先行,
带死区的 PID 控制等等,由于增量式的算法一直的离散的控制系统发挥中重要的作用,各方
面性能均衡优良,故选择此种控制器。
3.运行与调试
3.1 设计题目出现的问题
具体调试的过程中出现了两个问题。
第一个问题是,在反复确定原理的计算值之后,仍然看不到完美的整定 PID 波形,不适过冲
太多,恢复过慢,就是阻尼环节太过严重,良久无法到达稳定状态;
第二个问题,在设计 TeeChart 界面的时候,定死了横纵坐标的个数和比例,使得波形就算
式计算的准确无误了,也不像是能够说明问题自控波形,没有太大参考价值和研究价值。
3.2 改进措施
对于第一个问题,发现实际上是忽略对于采样时间 T 已经一阶系统特性 T1 二者一个协调的
比例,只有二者匹配,甚至更多,才能使系统的灵敏性更高,才能对于不同的 PID 参数,可
以看出明显的控制现象。
针对第二个问题,横轴使用了动态增添点的办法,使得整体凸显出一种动起来的感觉。而纵
5
软件分散课程设计 沈中皓 120900715
轴则是使能了自动调整变量,在上下幅值有变动的时候,控件自己做出调整。
4.软件的功能及使用说明
4.1 主界面
主界面十分简单,没有再打开的菜单,几个按钮几个文本框。主体是图形控件。
4.2 功能键
功能说明:
1.在左侧有两排按钮,是用来整定 PID 三个参数用的。相对靠左边分别是使 P、I、D 参数增
加,步长为 0.01-0.1,而相应的靠右边的是减少。
2.文本框的设计,使得参数的整定不仅仅可以靠单击来改变数值,同时也可以人工输入,最
终确定只需要停止掉当前状态并且重新开始,即可载入参数。
3.T 与 T1 分别是采样时间和系统特性阻尼参数。在 PID 算式和一阶系统算式中,这两个时间
值起到了至关重要的最有,二参数的好坏直接关系系统是否稳定,PID 三个变量的整定方向
等等。
4.SetPoint 目标值可以改动,这样出来的波形,更加可以看到相应曲线跟踪阶跃曲线的效果。
6
软件分散课程设计 沈中皓 120900715
4.3 效果图
读取数据库,并使用DATAGRIDVIEW控件进行显示
4.4 所用控件列表
序号
1
2
3
4
名称
button
lable
textBox
TeeChar
7
数量(个)
10
6
6
1