当前位置:文档之家› 软件课程设计报告

软件课程设计报告

软件课程设计报告自动化0904 张諝0909012281.目的通过本课程设计实习,使学生在下列方面有所了解和提高:1、掌握Visual Basic进行程序设计的基本思路和方法2、能利用Visual Basic编程实现简单的任务3、结合控制系统理论用VB进行计算机控制仿真2.设计内容1、对一阶系统实现PID算法控制并进行仿真,具体功能如下:1)基本要求:实现PID算法和一阶系统差分方程仿真,PID算法中的四个参数和一阶系统的参数都可以通过菜单进行设定,系统对阶越函数的响应以图形方式实时显示在窗口中。

2)附加功能:将系统的时间响应数据保存到数据库中,具体应包括下列属性:时间,输出值。

将系统的历史响应重现。

使用Teechart控件作为显示输出。

3.要求1、上机实习期间严格教学次序,不迟到,不早退,不无故缺席。

2、严格遵守机房规章制度。

3、上机前做好预习,提高上机效率。

4、完成实习报告。

实习报告书写整洁,条理清楚。

4. 计划进度整个课程设计总共一周,时间分配如下:1、熟悉了解Visual Basic,主要包括VB语言、界面设计、绘图功能、数据库访问技术、ActiveX控件的注册和使用。

2、回顾控制系统原理中的PID算法及PID算法的数字化。

3、实现PID算法对一阶系统的控制并显示系统的时间响应。

4、将系统的时间响应数据存储到数据库中,然后重现整个响应。

五.实验基本思想与数学实现1、数字PID 及其算法在模拟系统中,PID 算法的表达式为])()(1)([)(⎰++=dtt de T dt t e T t e K t P D I P (1) 式中 P(t):调节器的输出信号e(t):调节器的偏差信号,等于测量值与给定值之差P K :调节器的比例系数I T :调节器的积分时间D T :调节器的微分时间由于计算机控制是一种采样控制,只能根据采样时刻的偏差来计算控制量。

因此,在计算机控制系统中,必须对式(1)进行离散化处理,用数字形式的差分方程代替连续系统的微分方程,此时积分项和微分项可用求和及增量式表示:∑⎰∑===∆=nj nn j j E T t j E dt t e 000)()()( (2) Tk E k E t k E k E dt t de )1()()1()()(--=∆--≈ (3) 将式(2)、(3)代入式(1),则可得到离散的PID 表达式:})]1()([)()({)(0∑=--++=k j D I P k E k E TT j E T T k E K k P (4) 式中T t =∆:采样周期,必须使T 足够小,才能保证系统有一定的精度;)(k E :第k 次采样时的偏差值;)1(-k E :第(k -1)次采样时的偏差值;k :采样序号,,...2,1,0=k )(k P :第k 次采样时调节器的输出由于(4)的输出值与阀门开度的位置一一对应,因此,通常把(4)称为位置型PID 的位置控制算式。

由(4)可以看出,要想计算)(k P ,不仅需要本次与上次的偏差信号)(k E 和)1(-k E ,而且还要在积分项中把历次的偏差信号)(j E 进行相加,即∑=kj j E 0)(,这样,不仅计算繁琐,而且为保存)(j E 还要占用很多内存。

为此,作如下改动。

根据递推原理,可写出(k-1)次的PID 输出表达式:)]}2()1([)()1({)(10---++-=∑-=k E k E TT j E T T k E K k P D k j IP (5) 用式(5)减去(4),可得: )]2()1(2)([)()]1()([)1()(-+--++--+-=k E k E k E K k E K k E k E K k P k P D I P (6) 式中 IP I T T K K =:积分系数 T T K K D PD =:微分系数 式(6)称为增量式PID 控制算式。

增量型PID 算法的算式为:)]2()1(2)([)()]1()([)(-+--++--=∆k E k E k E K k E K k E k E K k P D I P (7)设)]1()([)(--=∆k E k E K k P P P)()(k E K k P I I =∆)]2()1(2)([)(-+--=∆k E k E k E K k P D D所以:)()()()(k P k P k P k P D I P ∆+∆+∆=∆ (8)2、 离散控制系统的数学描述设系统为一阶惯性环节,系统的传递函数为:11)()()(1+==s T s X s Y s G 其微分方程为: )()()(1t x t y t y dtd T =+ (9) 差分方程和微分方程在形式上有一定的相似之处,设时间间隔T 足够小,当nT t =时,可有:TnT y T n y dt t dy )(])1[()(-+≈ 于是式(9)可写成:)()()(])1[(1nT x nT y TnT y T n y T =+-+经整理后,得:)()()1(])1[(11nT x T T nT y T T T n y =-++ (10) 在T 足够小的条件下,微分方程(9)可以近似成差分方程(10),T 值越小,则近似得越好。

六.实验具体实现(本实验基于VB6.0平台)1.对象窗口2.代码窗口Private Declare Function timeGetTime Lib "winmm.dll" () As Long1).Command1按钮所对应事件代码:Private Sub Command1_Click()On Error Resume NextDim x As IntegerDim p1, p2, y, t, t2, e1, e2, e3 As Double Dim kp, ti, td, ki, kd, y1 As DoubleDim f1, f2 As Booleanf1 = Truef2 = Truex = Text1.Texty = 0kp = Text2.Textti = Text3.Texttd = Text4.Textt = Text5.Textp1 = p2 = 0e3 = e2 = e1 = 0Form1.Data1.Visible = FalseForm1.Data1.RecordsetType = 1Form1.Data1.RecordSource = "zx"With TChart1.Series(0).ClearForm1.Data1.Recordset.MoveFirstFor i = 1 To 60 / tForm1.Data1.Recordset.DeleteForm1.Data1.Recordset.MoveNext Next iForm1.Data1.RefreshFor i = 1 To 60 / tki = kp * t / tikd = kp * td / te3 = e2e2 = e1e1 = 1 - yy1 = yp1 = p2 + kp * (e1 - e2) + ki * e1 + kd * (e1 - 2 * e2 + e3) / /PID环节输出y = t / x * p1 + (1 - t / x) * y / /系统输出yp2 = p1t2 = t * i.Series(0).Add y, t2, clTeeColor / /PID具体实现代码段If f1 ThenIf y >= 1 ThenText6.Text = t2f1 = FalseEnd IfEnd IfIf y > 1 ThenIf f2 ThenIf y < y1 ThenText7.Text = t2Text8.Text = Format(y - 1, "0.0%")f2 = FalseEnd IfEnd IfEnd IfForm1.Data1.Recordset.AddNewForm1.Data1.Recordset.Fields("time") = t2Form1.Data1.Recordset.Fields("output") = yForm1.Data1.Recordset.Update / /数据录入数据库代码delay (10)Next iEnd WithEnd SubPrivate Sub Command2_Click()With TChart1.Series(0).ClearEnd WithEnd SubPublic Function delay(hm As Double)Dim t1t1 = timeGetTimeWhile (timeGetTime - t1) < hmDoEventsWendEnd Function2).Command2按钮所对应代码Private Sub Command2_Click()With TChart1.Series(0).ClearEnd WithEnd Sub3).Data1控件所对应代码Private Sub Data1_Validate(Action As Integer, Save As Integer) End Sub3.程序运行时窗口说明:在T1上打入一阶系统的参数,在时间间隔内打入所需要的时间间隔,之后分别输入PID控制的3个参数,按下Command1键,系统将经过PID控制之后的系统响应输出,并且在tr,tp,p.o%三个窗口内分别计算出上升时间,峰值时间和超调量。

按下Command2按钮后,可以清楚响应图像以便重新作图。

4.Access数据库新建表名称为myj具体表:在表中记录了time和output两项数据,都是由程序进行计算后传送到数据库中的。

相关主题