欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    PID软件综合设计课程设计报告.doc

    • 资源ID:2884570       资源大小:495KB        全文页数:12页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    PID软件综合设计课程设计报告.doc

    目录一、设计目的2二、设计内容2三、设计原理2四、设计思想5五、程序结果6六、心得体会12一、设计目的通过本课程设计实习,使学生在下列方面有所了解和提高:1、 掌握Visual Basic进行程序设计的基本思路和方法2、 能利用Visual Basic编程实现简单的任务3、 结合控制系统理论用VB进行计算机控制仿真二、设计内容1、 对一阶系统实现PID算法控制并进行仿真,具体功能如下:1) 基本要求:实现PID算法和一阶系统差分方程仿真,PID算法中的四个参数和一阶系统的参数都可以通过菜单进行设定,系统对阶越函数的响应以图形方式实时显示在窗口中。2) 附加功能:将系统的时间响应数据保存到数据库中,具体应包括下列属性:时间,输出值。将系统的历史响应重现。使用Teechart控件作为显示输出。2、 实现各种函数发生器并显示1) 基本要求:实现下列函数发生器,正玄函数、方波函数、锯齿函数、三角函数,函数的生成参数都可以通过菜单设定,并且将生成的函数以图形方式实时显示在窗口中。2) 附加功能:将系统的时间响应数据保存到数据库中,具体应包括下列属性:时间,输出值。将系统的历史响应重现。使用Teechart控件作为显示输出。三、设计原理1、数字PID及其算法在模拟系统中,PID算法的表达式为 (1)式中 P(t):调节器的输出信号e(t):调节器的偏差信号,等于测量值与给定值之差:调节器的比例系数:调节器的积分时间:调节器的微分时间由于计算机控制是一种采样控制,只能根据采样时刻的偏差来计算控制量。因此,在计算机控制系统中,必须对式(1)进行离散化处理,用数字形式的差分方程代替连续系统的微分方程,此时积分项和微分项可用求和及增量式表示: (2) (3)将式(2)、(3)代入式(1),则可得到离散的PID表达式: (4)式中:采样周期,必须使T足够小,才能保证系统有一定的精度;:第k次采样时的偏差值;:第(k1)次采样时的偏差值;k:采样序号,:第k次采样时调节器的输出由于(4)的输出值与阀门开度的位置一一对应,因此,通常把(4)称为位置型PID的位置控制算式。由(4)可以看出,要想计算,不仅需要本次与上次的偏差信号和,而且还要在积分项中把历次的偏差信号进行相加,即,这样,不仅计算繁琐,而且为保存还要占用很多内存。为此,作如下改动。根据递推原理,可写出(k-1)次的PID输出表达式: (5)用式(5)减去(4),可得:(6)式中 :积分系数:微分系数式(6)称为增量式PID控制算式。增量型PID算法的算式为: (7)设所以: (8)2、 离散控制系统的数学描述设系统为一阶惯性环节,系统的传递函数为:其微分方程为: (9)差分方程和微分方程在形式上有一定的相似之处,设时间间隔T足够小,当时,可有:于是式(9)可写成:经整理后,得: (10)在T足够小的条件下,微分方程(9)可以近似成差分方程(10),T值越小,则近似得越好。 四设计思想为了实现用计算机模拟一阶系统,并实现理想PID算法控制功能进行对系统的仿真控制,可采用可开发图形界面程序软件VB,以及画图软件TEECHART,进行仿真,并建立数据库,将实时数据保存,并能够实现数据查询等附加功能。根据自动控制理论和工程数学知识和建模思想,已经得出一阶系统和理想PID算法差分方程表达式作为系统的模拟基础。接下来,应用VB编程,要求主要界面涉及用户的操作面板参数设定(即PID算法中的四个参数比例增益Kp、积分时间Ki、微分时间Kd,设定值sv,一阶系统参数静态增益K和时间常数T1)的对话框。可分成两个部分分别设定:由参数设定中进入,首先是一阶系统Kp,Ki,Kd,Sv的选择,初始值分别设定为100,0.5,0,30.由窗体文件输入输出,对该四个对象,属性事件过程进行定义。具体设计过程如下: 第一步:界面设计 一共设计四个窗口,其中一个主界面,三个设定对话框。主界面Form1中包含菜单,Teechart图,对比图,实时坐标显示以及打印选项和数据库连接模块。用于显示一阶系统模拟Teechart图和对比图,菜单栏可以进入相关数据设定对话框以及实现查询退出功能。三个设定对话框,分别为:Module, Dialog1, Dialog2.分别为PID参数,一阶系统参数和查询时间段参数。分别作为相应数字设定的对话框。第二步:编辑菜单 由前面的图象可见,一共四个菜单,设定参数菜单,时域模拟菜单,查询菜单以及退出菜单。 调出菜单编辑器,编辑如下:一. 设定参数菜单设定参数(第一层) parameter 一阶系统参数(第二层) parameter1 PID(第二层) parameter2二. 时域模拟菜单 时域模拟(第一层) timeseq三. 查询菜单 查询(第一层) history四. 退出菜单 退出(第一层) cancle 第三步:代码编辑 本设计一共使用了四个窗口和一个模块文件。 窗口文件分别为上面界面介绍的Form1.frm, Module.frm, Dialog1.frm, Dialog2.frm.模块文件则为Form.bas。模块文件的作用即是变量声明,由于均使用了PUBLIC,所以都是全局变量,可以在窗口中任意调用。就模块文件中的声明的参数基本上是文件间传递的参数。五程序结果Module'Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) SLEEP延时函数的声明,在查询和主参数中均有CALL SLEEPPublic Type OneLevelSys一阶系统自定义结构 T As Double T1 As DoubleEnd Type Public Type PIDPID自定义结构 SetPoint As Double '设定目标 Proportion As Double '比例常数 Integral As Double '积分常数 Derivative As Double '微分常数 LastError As Double 'Error-1, E(k-1) PrevError As Double 'Error-2, E(k-2) SumError As Double 'Sums of ErrorsEnd TypePublic sPID As PID变量声明,PID参数值的传递Public SysPar As OneLevelSys变量声明,一阶系统参数值的传递。Dialog1Option ExplicitPrivate Sub CancelButton_Click() Dialog.Hide Form1.ClsEnd SubPrivate Sub Frame2_DragDrop(Source As Control, X As Single, Y As Single)End SubPrivate Sub OKButton_Click() sPID.Proportion = Val(Dialog.Text1.Text) sPID.Integral = Val(Dialog.Text2.Text) sPID.Derivative = Val(Dialog.Text3.Text) sPID.SetPoint = 30 SysPar.T1 = Val(Dialog.Text4.Text)SysPar.T = Val(Dialog.Text5.Text) Dialog.Hide 'Form1.Cls End SubDialog2Private Sub Form_Load()End SubPrivate Sub OKButton_Click() Dim i As Integer Dim j As Integer Dim start As Integer Dim endpoi As Integer Dim sOUT(25000) As Double start = Val(Text1.Text) endpoi = Val(Text2.Text) Dialog1.Hide Form1.Cls '绘坐标系的x轴及箭头线 Form1.Line (-20, 0)-(350, 0), vbBlue Form1.Line (346, 1)-(350, 0), vbBlue Form1.Line -(346, -1), vbBlueForm1.ForeColor = vbBlue Form1.Print "X" '绘坐标轴的Y轴及箭头线 Form1.Line (0, -20)-(0, 60), vbBlue Form1.Line (1, 56)-(0, 60), vbBlue Form1.Line -(-1, 56), vbBlue Form1.Print "Y" '指定位置显示原点O Form1.CurrentX = 1 Form1.CurrentY = -1 Form1.Print "O" Form1.Data1.Recordset.MoveFirst For i = 1 To start Step 1 Form1.Data1.Recordset.MoveNext Next i'从数据库读出结果到sOUT数组 For i = 1 To (endpoi - start) Step 1 sOUT(i) = Form1.Data1.Recordset.Fields("value") '读出数据库 Form1.Data1.Recordset.MoveNext Next i 'Add Series at runtime Form1.TChart1.AddSeries (scLine) Form1.TChart1.Series(0).Clear '绘制系统的时间响应 'Form1.Circle (0, 0), 20, vbRed For i = 1 To endpoi - start Step 1 j = i + start Form1.Line -(j / 60, sOUT(i - 1), vbBlack If i Mod 20 = 0 Then 'Form1.TChart1.AutoRepaint = False Form1.TChart1.Series(0).Add sOUT(i - 1), j, vbRed 'Form1.TChart1.AutoRepaint = True Form1.TChart1.Repaint End If 'TChart1.Repaint 'TChart1.Visible = True 'Call Sleep(0.01)Next iEnd SubForm'Dim ifstop As BooleanPrivate Sub Command2_Click() Dim i As Integer Dim c As Double Dim u As Double Dim sOUT(22000) As Double '将数据库清空 Data1.Recordset.MoveFirst '数据库中的记录点移动到第一个 Do While Not Data1.Recordset.EOF '循环知道最后一条记录 Data1.Recordset.Delete Data1.Recordset.MoveNext '移动到下一条指令 Loop For i = 1 To 22000 Step 1 u = PIDCalc(sPID, c) '算出PID的值 sOUT(i - 1) = OneLevel(c, u, SysPar) Data1.Recordset.AddNew Data1.Recordset.Fields("time") = i Data1.Recordset.Fields("value") = sOUT(i - 1) Data1.Recordset.Update Next i Form1.ScaleMode = 0 Form1.ScaleLeft = -20 Form1.ScaleTop = 80 Form1.ScaleWidth = 400 Form1.ScaleHeight = -100 DrawWidth = 1 '绘坐标系的x轴及箭头线Form1.Line (-20, 0)-(350, 0), vbBlue Form1.Line (346, 1)-(350, 0), vbBlue Form1.Line -(346, -1), vbBlue ' Form1.ForeColor = vbBlue Form1.Print "X" '绘坐标轴的Y轴及箭头线 Form1.Line (0, -20)-(0, 60), vbBlue Form1.Line (1, 56)-(0, 60), vbBlue Form1.Line -(-1, 56), vbBlue Form1.Print "Y" '指定位置显示原点O Form1.CurrentX = 1 Form1.CurrentY = -1 Form1.Print "O" 'Add Series at runtime TChart1.AddSeries (scLine) '绘制系统的时间响应 'Form1.Circle (0, 0), 20, vbRed For i = 1 To 22000 Step 1 Form1.Line -(i / 60, sOUT(i - 1), vbBlack If i Mod 20 = 0 Then 'TChart1.AutoRepaint = False TChart1.Series(0).Add sOUT(i - 1), i, vbRed 'TChart1.AutoRepaint = True TChart1.Repaint End If 'TChart1.Visible = True 'Call Sleep(0.01) Next iEnd SubPrivate Sub Command3_Click()Dialog1.ShowEnd SubPrivate Sub Form_Load()TChart1.Header.Text.Add "PID控制阶跃函数响应" sPID.Proportion = 100 sPID.Integral = 0.5 sPID.Derivative = 0 sPID.SetPoint = 30 SysPar.T = 0.0003 SysPar.T1 = 60 TChart1.Aspect.View3D = FalseEnd SubPrivate Sub TChart1_Click()End SubPrivate Sub Text1_Change()End Sub六、心得体会本次课程设计从总体来说,悲喜交加,从课程设计的内容上来说,我个人觉得还是很有难度的,第一要对自动控制原理方面的PID控制模型非常熟悉,第二要能够熟练运用VB编程语言实现程序设计,第三要对界面设计软件很熟练地操作并且完成的较好的话数据库方面的知识也是必不可少的。由此多方面的知识掌握情况在这一次的课程设计上都有所体现。我在自动控制和数据库方面的知识掌握的比较好,但对于vb程序的设计上我我几乎是一无所知,刚看完课程设计的要求,PID方面的内容脑子里很清晰,但如何用VB程序进行仿真模拟,却是一头雾水,没有任何思路,找来了一些参考资料翻来翻去也找不到入手处,这次课设是我目前所做课设中最令我沮丧的一次。单从程序设计来说,我自己完成的并不理想,首先程序大部分都是请教的别人,自己独立编写出来的很少,操作调试运行也废了很大的周折,运行结果虽是在意料之中,但这并不能体现多少我个人的设计能力,因此在VB编程方面自己还有很多地方需要学习和进步,很大的上升空间也不是一件坏事,这次课设让我又发现了自己的一些不足,对单方面的知识掌握是远远不够的,对所学每门科目融会贯通的运用才有实际价值。很欣慰的是这次课设又使我认识到独立设计能力是非常的重要,其次更要注重锻炼自己的自学能力,在课程设计过程中会遇到很多意想不到的困扰,即使是很简单的知识漏洞,都会造成整个设计过程的终止,参考书与网络资源的选择与自我消化便显得至关重要。时间比较紧张,同时完成多份报告,倒也增强了自己的抗压能力。虽是最失败的一次的课设,但也是最有收获的一次,发现不足,总结经验虽是老生常谈,却也是我这次课设最形象的写照。

    注意事项

    本文(PID软件综合设计课程设计报告.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开