数字PID控制系统设计参考最新版本
本科毕业论文PID温控系统的设计及仿真
CENTRAL SOUTH UNIVERSITY 本科生毕业论文题目PID温控系统的设计及仿真学生指导教师学院信息科学与工程学院专业班级完成时间年月摘要温度是工业控制的主要被控参数之一。
可是由于温度自身的一些特点,如惯性大,滞后现象严重,难以建立精确的数学模型等,给控制过程带来了难题。
要对温度进行控制,有很多方案可选。
PID 控制简单且容易实现,在大多数情况下能满足性能要求。
模糊控制的鲁棒性好,无需知道被控对象的数学模型,且在快速性方面有着自己的优势。
研究分析了PID 控制和模糊控制的优缺点,把两者相互结合,采用了用模糊规则整定P K 、I K 两个参数的模糊自整定PID 控制方法。
本研究以电烤箱为控制对象,用MATLAB 软件对PID 控制、模糊控制和参数模糊自整定PID 控制的控制性能分别进行了仿真研究。
仿真结果表明PID 对于对象模型复杂和模型难以确定的控制系统具有很大的局限性,不能满足调节时间短、超调小的技术要求。
由于模糊控制的理论(如量化因子和比例因子的确定问题)并不完善,其可能获得的控制性能无法把握,而且模糊控制易受模糊规则有限等级的限制而引起稳态误差。
参数模糊自整定PID 控制吸收前两种方法的长处,满足了调节时间短、超调量为零且稳态误差较小的控制要求。
因此本论文最终确定采用参数模糊自整定PID 控制方案。
本系统硬件采用了以 AT89C52 单片机为核心的温度控制器,选用 k 型热电偶为温度传感器结合MAX6675芯片构成前向通道,同时双向晶闸管和SSR 构成后向通道,由按键、LED 数码显示器及报警单元等组成人机联系电路。
关键词:单片机,PID ,模糊控制,仿真ABSTRACTTemperature is one of the main parameters in the industrial process control.Yetthere are difficultiesto have a good control oftemperature becauseof the characteristics of the temperature itself:the temperature inertia is great, its time-lag is serious and it is hardto establish an accurate mathematical model.There are many methods to be selected in order to control a system. The PID controlis simple,easily realized andin most casesit meetsthe control demand. Fuzzy control has the advantage of quickness,itsrobustness is good and there is no needto know theobject ’smathematical model.This paper analyses the advantages and disadvantages of both PID control and fuzzycontrol and es to the method of bining them together,fuzzy self-tuningPID control. In this method,P K and I K of the PID controller are adjusted by fuzzy control rules .In the paper simulations of PID control, fuzzy control and fuzzyself-tuning PID control are done by MATLAB to control a electric oven.Conclusions are that for those control objects of which models are plicated or hard to establish,the PID method has limitation and doesn ’t meet the control demand. As the fuzzy control method theory is not perfect, a good control performance cannot be expected. And it could easily cause the steady-state error for it is restricted by limited grades of the fuzzy rules.Finally the fuzzy self-tuning PID control method is selected, since it meets the control demands.In this paper AT89C52 is used as controller, toward access is posed of K which is used as the temperature sensor and MAX6675.Backward access is posed of bidirectional thyristor and SSR. Man-machine circuit is posed of keyboard, LED and warning unit, etc.Key words :Micro Controller, PID Control, Fuzzy Control, Simulation目 录摘要IABSTRACTII第一章绪论11.1 课题的提出及意义11.2 控制系统背景介绍11.3 当代温控系统及智能算法2第二章温控系统的设计52.1 温控系统的总体设计52.1.1 温控系统设计的基本原则52.1.2 温控系统的结构及设计62.2 温控系统的硬件设计72.2.1 前向通道设计72.2.2 后向通道设计102.2.3 人机通道设计11小结15第三章系统控制方案163.1 PID 控制163.1.1 PID的概述163.1.2 PID 控制的基本理论及特点163.2 模糊控制183.2.1 模糊控制的概述183.2.2 模糊控制的基本原理及特点183.3 模糊PID 控制19小结21第四章仿真研究224.1 MATLAB及其模糊逻辑工具箱和仿真环境simulink224.2 仿真和优选234.2.1 控制对象模型234.2.2 仿真和方案选择25小结32第五章总结与展望335.1 主要工作容335.2 工作小结335.3 存在的问题及未来的方向34结束语35参考文献36第一章绪论1.1 课题的提出及意义温度是生产过程和科学实验中非常普遍而又十分重要的物理参数。
063数字PID控制器设计
=
K p + 2K d Kd ( K p + K i + K d )( z − z+ ) K p + Ki + K d K p + Ki + K d
2
15
若积分项用双线性变换,微分项用后向差分, 若积分项用双线性变换,微分项用后向差分,有
Kp 1 D( s) = K p + + K pTd s Ti s
jsjkz14
5
PID的增量式算法 2.PID的增量式算法
u (k ) = K p e(k ) + K I ∑ e(i ) + K D [e(k ) − e(k − 1)]
i =0 k
u (k − 1) = K p e(k − 1) + K I ∑ e(i ) + K D [e(k − 1) − e(k − 2)]
jsjkz14
13
0.0453( z + 0.904) G(z) = ( z − 0.905)( z − 0.819)
D( z ) = ( K p + K i )( z − 0.905) z −1
选
Kp
(K p + Ki )
= 0.905
K v = lim( z − 1) D ( z )G ( z )
−1
D(z)增益的计算 增益的计算: 增益的计算
D(s )s = ∞= D(z ) z= -1
(4)双线性变换法 )
2 1 − z −1 s= T 1 + z −1
(5)后向差分法 )
1 − z −1 s= T
jsjkz14
1
一.模拟PID控制器的数学模型 模拟 控制器的数学模型 1 t de(t ) 1.方程 方程 u (t ) = K p [e(t ) + ∫0 e(t )dt + Td ] Ti dt 比例系数; 比例系数 K p :比例系数 积分时间常数; Ti : 积分时间常数; Td : 微分时间常数 传递函数: 传递函数:
DCS(新版与旧版DCS设计规范对比)
名称基础工程设计(初步设计)详细工程设计(施工图设计)系统技术规格及一般要求通信接口及通信网络要求系统维护与故障诊断DCS硬件配置(操作站)DCS硬件配置(控制站)工程师站DCS软件配置DCS报价要求技术评估DCS应用软件组态工厂验收现场验收DCS中央控制室供电,现场接线及接地设计要求《石油化工分散控制系统设计规范》 SH/T3092-1999主编单位:中国石化集团北京设计院发布时间:1999-09-22 实施时间:2000-01-011.拟定DCS监控方案:根据基础工程设计(初设)的工艺管道,及仪表流程图(PID),统计DCS的点数检测回路及复杂控制的要求,初步做出DCS的配置2.完成初步询价3.向有关专业提交初步设计资料:根据DCS的配置提出DCS中央控制室的面积,房间划分,以及向结构,暖通,电气,消防,电信,及概算专业提交初步设计资料,初步制定控制室设备平面图本阶段有关DCS的工作分为:1.技术谈判 2.工程设计 3.应用软件组态1.技术谈判阶段应完成: a.编制DCS系统配置条件,I/O点一览表; b.编制DCS询价书的技术部分c.进行DCS技术谈判,技术评估d.确认合同技术附件e.参与DCS工程设计条件会议2.工程设计阶段应该完成: a.复杂控制系统框图 b.顺序控制,逻辑控制,时序控制原理图c.系统配置图d.机柜硬件配置图e.控制室设备平面布置图f.各类机柜的布置及接线图g.辅助仪表,操作台布置及接线图h.室内仪表电缆,电线平面布置图 i.I/O卡件接线表或回路接线图j.供电系统图 k.接地系统图l.向有关专业提出详细设计技术条件(暖气,消防等)3.应用软件组态阶段应完成:a.系统配置组态 b.DCS监控数据库(包括数据输入调试及修改)c.工艺流程图画面d.顺序控制,逻辑控制时序控制,批量控制等的组态e.当前和历史数据记录分组f.报警分组,分级g.报表h.外围设备接口组态 i.历史数据库的组态 j.其他组态1.所选用DCS应是集成的,标准化的过程控制和生产管理系统,且必须是具有运行经验,成熟可靠的系统2.DCS系统的硬件,软件配置及其功能要求应与装置的规模和控制要求相适应3.控制器应满足过程控制要求,具备PID参数的自整定4.系统应具有存储功能,可将各种工艺参数,检测信号,操作过程,报警事件等按需要存入硬盘5.过程I/O接口应包含AI AO DI DO 串行和并行通信接口,常用可编程控制器接口6.控制器的中央处理器,通信,电源等主要部件必须要1:1配置冗余7.控制器中用于控制的多通道I/O卡应有冗余配置,控制回路的I/O点应有独立的A/D或D/A转换器8.操作站是监视控制生产过程的主要人机接口,应具备高可靠性9.操作站的所有外设接口应该是通用的(硬盘驱动器,软盘驱动器,显示器,通用键盘,鼠标,打印机10.操作站的操作系统应是通用的标准的11.操作站的硬件配置(略)12.操作站的软件操作环境应该:能对网络上的任一控制器数据进行存取,还应具备不同级别的操作权限13.操作站可运行组态软件或作为工程师站的终端14.操作站的数据处理应满足所有数据的记录需要,可由用户选定记录的参数采样时间15.操作站应具有完善的报警功能,对过程变量报警和系统故障报警应有明显区别1.DCS通信网络应符合IOS/IEEE的通信标准,具有开放系统的特点,通信速率应不低于1Mb/S,有长距离 通信能力(1KM)2.通信总线的负荷不应超过60%3.通信速度至少为1Mb/s4.通信距离应满足装置(或工厂)的实际要求5.DCS通信网络必须能与工厂管理网(如:TCP/IP)相连,系统应能与工厂管理网上的设备进行数据通6.通信总线(包括接口设备和电缆)必须1:1冗余配置7.通讯总线应符合国标标准 《工业通信网络现场总线国家标准》发布时间2010.11.16 标准号GB/Z2 ~.3-2010该规范是新一代基于工业以太网技术的自动化总线标准,囊括了 网,分布式自动化网络安全等当前自动化领域的热点,是实现装备制造业 进的重要技术之一。
pid控制系统课程设计
pid控制系统课程设计一、教学目标本节课的教学目标是让学生掌握PID控制系统的原理、结构和应用,具备分析和设计PID控制系统的能力。
具体目标如下:1.知识目标:–了解PID控制系统的概念、原理和组成部分;–掌握PID控制器的参数调整方法;–了解PID控制系统在实际应用中的优缺点。
2.技能目标:–能够运用PID控制原理分析和解决实际问题;–能够使用仿真软件进行PID控制系统的模拟和优化;–能够设计简单的PID控制系统并进行实际操作。
3.情感态度价值观目标:–培养学生对自动化技术的兴趣和认识,认识到PID控制系统在现代工业中的重要作用;–培养学生勇于探索、善于合作的科学精神;–培养学生关注社会、关心他人的责任感。
二、教学内容本节课的教学内容主要包括以下几个部分:1.PID控制系统的概念和原理:介绍PID控制系统的定义、作用和基本原理,让学生了解PID控制系统在工业控制中的应用。
2.PID控制器的参数调整:讲解PID控制器的参数(比例系数、积分系数、微分系数)的作用和调整方法,引导学生掌握参数调整的技巧。
3.PID控制系统的应用:分析PID控制系统在实际应用中的优缺点,让学生了解PID控制系统在不同领域的应用实例。
4.PID控制系统的仿真与实际操作:利用仿真软件,让学生亲自模拟和优化PID控制系统,提高学生运用所学知识解决实际问题的能力。
三、教学方法本节课采用多种教学方法相结合,以提高学生的学习兴趣和主动性:1.讲授法:讲解PID控制系统的原理、结构和参数调整方法,为学生提供系统的知识结构。
2.案例分析法:分析实际应用中的PID控制系统案例,让学生了解PID控制系统的应用场景和优缺点。
3.实验法:让学生利用仿真软件进行PID控制系统的模拟和优化,培养学生的实际操作能力。
4.讨论法:学生进行小组讨论,分享学习心得和体会,提高学生的沟通能力和团队协作精神。
四、教学资源本节课的教学资源包括以下几个方面:1.教材:选用国内权威的PID控制系统教材,为学生提供系统的理论知识。
《计算机控制技术》课程设计--数字pid控制器
《计算机控制技术》课程设计--数字pid控制器华北水利水电大学路亚斌,201009532《计算机控制技术》课程设计姓名: 路亚斌学号: 201009532指导老师: 徐俊红王亭岭时间:2013年12月23日——2014年1 月3日《计算机控制技术》课程设计华北水利水电大学路亚斌,201009532目录第一章《计算机课程设计》任务书................................................................ 错误~未定义书签。
1.1 题目二:数字PID控制器设计 ............................................................... 错误~未定义书签。
1.1.1设计位置式PID控制器和增量式PID控制器 ............................. 错误~未定义书签。
1.1.2模拟PID控制器设计 ...................................................................... 错误~未定义书签。
1.2 题目三:控制系统的状态空间设计...................................................................... . (1)1.2.1 确定状态反馈阵K ...................................................................... . (1)1.2.2 确定一个全维状态观测器L........................................................... 错误~未定义书签。
第二章位置式PID控制器设计 ..................................................................... .. 错误~未定义书签。
数字PID控制器设计
5.3 控制系统z平面设计性能指标要求
由于多数计算机控制系统的被控对象是连续的,设计时所给定的性能 指标要求,基本上与连续系统设计时相同。因此,若在z平面上直接进行离 散系统设计,需要考虑如何将连续系统的性能指标转换为z平面的描述。
5.3.1 时域性能指标要求
(1) 稳定性要求
(2) 系统稳态特性的要求:
uD
(k)
uD (k
1)
KPTD T
(1 )[e(k )
e(k
1)]
k
u(k) KPe(k ) KI e( j) uD (k )
j0
不完全微分PID 与基本PID控制作用比较
●在e(k)发生阶跃突变时,
● 完全微分作用仅在控制作用发生的一个周期内起作用; ● 不完全微分作用则是按指数规律逐渐衰减到零,可以
● 当控制量进入饱和区后,只执行削弱积分项的累加,不进行增大积分项 的累加。即系统在计算u(k)时,先判断u(k-1)是否超过门限值。若超过 某个方向门限值时,积分只累加反方向的e(k)值。
具体算式为:
若 u(k 1) umax 且 e(k) 0 不进行积分累加; 若 e(k) 0 进行积分累加。
3.6
—
1.9
0.55
1.50
PI PID
0.5 0.34
0.68 0.85
3.9
—
1.62 0.65
2.0
PI
0.80
PID
0.60
0.57 0.60
4.2
—
1.50 0.82
3.试凑法确定PID参数
●整定步骤:
(1)首先只整定比例部分。比例系数KP由小变大,观察相 应的系统响应,直到得到反应快,超调小的响应曲线。 系统若无静差或静差已小到允许范围内,并且响应效果 良好,那么只须用比例调节器即可。
数字PID控制器的设计
T
(1 j
T
)2
所以
T 2 T arctan arctan 2 arctan T 2 2 2 1( ) 1( ) 2 2
由此得出
T T
2(
T
)
与 T 的对应关系:
: 0 ~ : 0 ~
T : 0 ~ T : 0 ~
7.2 数字控制器的PID设计方法
• 7.2.1 PID设计方法
计算机控制系统的核心 数字控制器
实现各种不同要求的控制功能。
如何设计数字控制器? (1)给定控制对象 (2)给定性能指标
设计出满足控制性能的控制规律以 及与此对应的计算机编程算法。
数字控制器的两类设计方法
输入r(r) 计算机 D/A 被控对象 输出c(t)
设微分的控制规律为: u (t )
S域的传递函数为:
对微分控制规律前向差分变换,可得: u ( k ) e( k 1) e( k )
de (t ) dt U ( s) D( s ) s E ( s)
T
e(k 1) z e(k )
e(k 1) e(k ) z 1 u (k ) e( k ) T T
ek2其中其中如果控制系统的执行机构采用步进电机如果控制系统的执行机构采用步进电机在每个采样周在每个采样周期期控制器输出的控制量是相对于上次控制量的增加控制器输出的控制量是相对于上次控制量的增加此时控制器应采用增量型数字此时控制器应采用增量型数字pidpid控制算法控制算法其控制原理其控制原理如下图所示如下图所示
2 2
数字控制器为:
U ( z ) T 1 z 1 1 D( z ) D( s) 2 1 z 1 1 1 s 2 1 z E( z) 2 1 z T 1 z 1 T 1 z 1
数字PID控制器
PI 增量式一般表达式为 u ( k ) k p [ e ( k ) e ( k 1 )] 将本问题 k pT TI e(k )
PI 差分方程写成一般表达
u ( k ) 3[ e ( k ) e ( k 1 )] 20 e ( k ) kP 3 k pT TI 20 , T I 3 20
所以前馈完全补偿的条
G( s ) D( s ) G ( s ) 0 n n U( s ) G( s ) n n 即 D( s ) n n( s) G ( s)
例、已知广义被控对象
G (s) k2 1 T2 s e
2 s
, 干扰通道
G( s ) n
k1 1 T1 s
还可写成递推型PID控制算式
2. S域下PID表达式的离散化
将模拟控制器的传递函数
G c ( s ) K P (1 1 TI s TD s)
用后向差分方法等效离散化(s=(1-z-1)/T),可得PID控 制规律的脉冲传递函数形式
D (z) Gc (s )
s 1 z T
1
K P [1
15 T 15 Z
100 . 8 138 . 3 Z
82 . 2 Z
1
1 0 .5 Z
前馈控制器输出
u 2 ( k ) 0 . 5 u 2 ( k 1) 100 . 8 p ( k ) 138 . 3 p ( k 1) 82 . 2 p ( k 2 )
1、微分先行PID控制器
标准PID在阶跃偏差输入时各控制时 刻PID响应。
e(t) 突加给定值扰动, 会给控制系统带来 冲击,使超调量过 大,执行机构动作 剧烈。
PID温度控制的PLC程序设计(梯形图语言)
PID温度控制的PLC程序设计(梯形图语言)PID温度控制的PLC程序设计温度控制是许多机器的重要的构成部分。
它的功能是将温度控制在所需要的温度范围内,然后进行工件的加工与处理。
PID控制系统是得到广泛应用的控制方法之一。
在本文中,将详细讲叙本套系统。
l 系统组成本套系统采用Omron的PLC与其温控单元以及Pro-face的触摸屏所组成。
系统包括CQM1H-51、扩展单元TC-101、GP577R以及探温器、加热/制冷单元。
l 触摸屏画面部分(见图1-a)1-a如图所见,数据监控栏内所显示的002代表现在的温度,而102表示输出的温度。
如按下开始设置就可设置参数。
需要设置的参数有六个,分别是比例带、积分时间、微分时间、滞后值、控制周期、偏移量。
它们在PLC的地址与一些开关的地址如下所列。
比例带: DM51积分时间: DM52微分时间: DM53滞后值: DM54控制周期: DM55偏移量: DM56数据刷新: 22905l PLC程序部分002:PID的输入字102:PID的输出字[NETWORK]Name="Action Check" //常规检查[STATEMENTLIST]LD 253.13 //常ONOUT TR0CMP 002 #FFFF //确定温控单元是否完成初始化字串1AND NOT 255.06 //等于OUT 041.15 //初始化完成LD TR0AND 041.15OUT TR1AND NOT 040.10 //不在参数设置状态MOV DM0050 102 //将设置温度DM50传送给PID输出字LD TR1MOV 002 DM0057 //将002传送到DM57[NETWORK]Name="Setting Start"//设置开始[STATEMENTLIST]LD 253.13OUT TR0AND 229.05 //触摸屏上的开始设置开关DIFU 080.05 //设置微分LD TR0AND 041.15AND 080.05SET 040.01 //开始设置标志位1SET 040.10 //开始设置标志位2[NETWORK]Name="Poportion"//比例带设置[STATEMENTLIST]LD 040.01OUT TR0AND NOT 042.01MOV #C110 102 //读输出边与输入边的比例带CMP 002 #C110 //比较输入字是否变成C110AND 255.06 //等于SET 042.01 //设置比例带标志LD TR0AND 042.01MOV DM0051 102 //将比例带的设定值写入输出字CMP 002 DM0051 //是否写入AND 255.06 字串4RSET 040.01 //复位标志1RSET 042.01 //复位比例带标志SET 040.02 //向下继续设置标志[NETWORK]Name="Integral"//积分时间设置[STATEMENTLIST]LD 040.02OUT TR0AND NOT 042.02MOV #C220 102 //读输出边与输入边的积分CMP 002 #C220 //比较输入字是否变成C220AND 255.06SET 042.02 //设置积分标志LD TR0AND 042.02MOV DM0052 102 //将积分的设定值写入输出字CMP 002 DM0052 //是否写入AND 255.06RSET 040.02RSET 042.02SET 040.03 //向下继续设置标志[NETWORK]Name="differential"//微分时间设置[STATEMENTLIST]LD 040.03OUT TR0AND NOT 042.03MOV #C330 102 //读输出边与输入边的微分CMP 002 #C330 //比较输入字是否变成C330 AND 255.06SET 042.03 //设置微分标志LD TR0AND 042.03MOV DM0053 102 /将微分的设定值写入输出字CMP 002 DM0053 //是否写入字串3AND 255.06RSET 040.03RSET 042.03SET 040.04 //向下继续设置标志[NETWORK]Name="Hysteresis"//滞后值设置[STATEMENTLIST]LD 040.04OUT TR0AND NOT 042.04MOV #C440 102 //读输出边与输入边的滞后值CMP 002 #C440 //比较输入字是否变成C440 AND 255.06SET 042.04 设置滞后值标志LD TR0AND 042.04MOV DM0054 102 /将滞后值的设定值写入输出字CMP 002 DM0054 //是否写入AND 255.06RSET 040.04RSET 042.04SET 040.05 //向下继续设置标志[NETWORK]Name="Period"//控制周期设置[STATEMENTLIST]LD 040.05OUT TR0AND NOT 042.05MOV #C550 102 //读输出边与输入边的控制周期CMP 002 #C550 //比较输入字是否变成C550AND 255.06SET 042.05 //设置控制周期标志LD TR0AND 042.05MOV DM0055 102 将控制周期的设定值写入输出字CMP 002 DM0055 是否写入AND 255.06RSET 040.05RSET 042.05SET 040.06 //向下继续设置标志[NETWORK]Name="Shift"//偏移量设置[STATEMENTLIST]LD 040.06OUT TR0AND NOT 042.06MOV #C660 102 //读输出边与输入边的偏移量CMP 002 #C660 //比较输入字是否变成C660AND 255.06SET 042.06 //设置偏移量标志LD TR0AND 042.06MOV DM0056 102 //将偏移量的设定值写入输出字CMP 002 DM0056 //是否写入AND 255.06RSET 040.06RSET 042.06SET 040.00[NETWORK]Name="Return"//返回[STATEMENTLIST]LD 040.00OUT TR0AND NOT 042.00MOV #C070 102 //读输入边的处理值CMP 002 #C070 比较输入字变成C070AND 255.06SET 042.00 //返回标志LD TR0AND 042.00MOV DM0050 102 将设定温度值写入输出字RSET 040.00RSET 042.00RSET 040.10以上是本套系统的全部内容,经过反复试验,此系统可以维持温度在1°C之间变化。
数字PID控制器设计
《计算机控制》课程设计报告题目: 数字PID控制器设计姓名: 王云学号: ********* 姓名: 孙传梁学号: ********* 姓名: 钟晓光学号: ********* 姓名: 袁海涛学号: *********2011年6月25日目录《计算机控制》课程设计任务书-----------------------------------------------------------------------3 数字控制器设计-------------------------------------------------------------------------------------------41、前言-------------------------------------------------------------------------------------------------------42、设计目的-------------------------------------------------------------------------------------------------43、设计原理-------------------------------------------------------------------------------------------------44、数字PID参数整定------------------------------------------------------------------------------------55、建立simulink模型------------------------------------------------------------------------------------86、MCS-51单片机实现控制器的设计----------------------------------------------------------------96.1、器件选择------------------------------------------------------------------------------------------106.2、电路设计------------------------------------------------------------------------------------------106.3、程序设计------------------------------------------------------------------------------------------117、设计工作总结及心得体会---------------------------------------------------------------------------158、参考资料及文献---------------------------------------------------------------------------------------15《计算机控制》课程设计任务书指导教师签字:系(教研室)主任签字:2011年6 月25 日数字控制器设计一、前言PID控制是最早发展起来的经典控制策略,是用于过程控制最有效的策略之一。
数字式高性能PID比例控制器
數顯智能PID比例控制器操作說明手冊感谢您使用我们生产的数显式智能PID比例控制器!我们提供全方位的技术支持!为过程控制配有完善的控制系统,可多机组态控制多点多区同步设定控制;性能卓越阀位过程值阀位设定值输出阀位值一目了然!MODBUS通讯;RS485主从机通讯;阀位过程值阀位设定值传送输出;阀位设定值外部设定等!本操作说明如有改动,怒不另行通知!隨著科技的進步及市場對控制系統提出了更高的要求,對控制系統要注更加智能方便快捷響應快速控制准確動作平穩減少動載荷等等。
傳統的比例閥控制系統大都采用硬件電路控制,其系統設計需要專家設計、專家維護,並且成本很高,控制精度不是很理想,因此傳統的比例閥系統的應用受到限制。
我們根據比例閥的特點引入多個領域的智能PID,採用新型器件和控制方法,研發了數顯式智能控制器系統,並編寫了系統控制程序。
在系統電路設計中,以單片機控制系統、PID算法和PWM技術為研究對象,實現了基於以中小型過程控制為目的智能制器系統,有效解決傳統比例閥控制的技術問題。
數顯式智能PID比例控制器系統功能強大、集成度高、調整方便、精度高、維護簡單,適合廣泛應用,值得推廣。
●請不要在下列環境中使用本產品充滿易燃易爆氣體的地方振動或沖擊很強烈的地方溫度變化很激烈的環境濕度過高且會產生水的地方有水油化學藥品飛淺的地方有腐蝕性氣體或粉塵存在的地方●控制器在接上電源前,請確認接線端子是否正確,電壓是否在額定範圍內,否者造成嚴重損壞●接線端子最大扭力不能超過8KG三、控制示器外觀及功能說明符號名稱功能說明PV閥位測量值(PV)/參數模式顯示器顯示input的閥位感測值/參數名稱(紅紅色7段顯示器) SV閥位設定值(SV)顯示器顯示設定閥位值/參數目前的設定值(綠紅色7段顯示器)控制輸出閥位顯示器控制器現場控制輸出閥位百分比SET循環/確認鍵參數設定完成確認鍵/參數顯示切換鍵A/M自動/手動鍵自動/手動切換控制鍵MAN手動指示燈手動輸出狀態下,此燈亮◄位移鍵移動設定值的位數(千,百,十,個位)▼減少鍵減少設定值▲增加鍵增加設定值OUT1輸出1指示燈輸出1動作,此燈亮OUT2輸出2指示燈輸出2動作,此燈亮AT自動演算指示燈PID自動演算時,此燈亮AL1Alarm1動作指示第一組警報功作時,此燈亮AL2Alarm2動作指示第二組警報功作時,此燈亮LA3/SIP Alarm3動作指示第三組警報動作時,此燈亮PRO程控或斜率運行指示燈程控或斜率啟動後,此燈亮五、外觀尺寸開孔尺寸及安裝說明1、外觀尺寸安裝開孔尺寸2、安裝說明只需要將所附之固定片輕推到底,聽到“哢”的聲音,即可完成控制器盤面固定六、接線圖A:電源B警報C負載輸入輸出(端子功能以控制器標簽為准)●帶主副控型控制器應用舉例使用主從(副)控制功能時主從(副)表之間通過TTL通訊,實現同步控制一臺主表可帶10臺以上從(副)表注:ADD=0,無主機:ADD=1,發送閥位過程值(PV)閥位設定值(SV)輸出閥位值(MV)副機:ADD=2,接收閥位設定值(SV)ADD=3,接收閥位過程值(PV)ADD=4,接收輸出閥位值(MV)●帶RS485通訊功能的控制器應用舉例RS485通訊功能可以使控制器通過RS485-RS232轉換器與電腦串口連接,可以通過電腦來監控和設定控制器注:1.免費提供監控軟件2.一個串口可並聯30臺控制器,在連線時,請注意控制器的地址ADD是否重複,每臺控制器的地址不能相同。
通用数字PID调节器设计
通用数字PID调节器设计主要技术数据和设计要求主要技术数据:8路模拟量输入:适配1~5V输入,量程自由设定;8路输出控制信号:1~5V标准电压输出;输入模拟量转换精度:0.1%;RS232串行通讯通口;控制模型:数字PID控制算法PID参数范围:比例带Kp:1-999.9%积分时间Ti:1-9999秒(Ti=9999时积分切除)微分时间Td::0-9999秒(Td=0时微分切除)调节控制器使用51内核的单片机内核的单片机,完成对8路模拟信号的切换、信号变换、A/D转换;单片机对数据处理后(含数字滤波、数值变换),送到显示和通讯部分,并经PID运算处理后通过D/A转换器输出。
经信号变换和信号分配后输出8路控制信号。
设计中应充分考虑干扰问题。
设计步骤一、总体方案设计二、控制系统的建模和数字控制器设计三、硬件的设计和实现1. 选择计算机机型(采用51内核的单片机);2. 设计支持计算机工作的外围电路(EPROM、RAM、I/O端口等);3. 设计键盘、显示接口电路;4. 设计8路模拟量输入输出通道;5. 设计RS232串行通讯通口;*6. 其它相关电路的设计或方案(电源、通信等)。
四、软件设计1. 分配系统资源,编写系统初始化和主程序模块;2. 编写数字PID调节器软件模块;3. 编写数字滤波程序;*4. 编写A/D、D/A转换器处理程序模块;*5. 其它程序模块(显示与键盘等处理程序)。
五、编写课程设计说明书,绘制完整的系统电路图。
PID调节器主控部分包括以下几个部分:单片机部分、A/D转换部分、D/A转换部分、稳压部分、数字输入输出部分以及串口通信部分。
D1:内部设定点信号灯S1:内部设定点和外部设定点转换开关D2:手动信号灯S2:手动自动转换开关D3:实际值X显示信号灯D4:设定值W显示信号灯S3:参数修改以及实际值和设定值显示转换开关D5:超过限定值信号灯D6:低于限定值信号灯S4:设定值增加按钮S5:设定值减少按钮S6:修改手动变量按钮S7:修改手动变量按钮附录[1] 主程序—MAIN.C#include"adconver.h"#include"delay.h"#include"dis7281.h"#include"STC12C5410AD.H"#include"main.H"#include"subkey0.h"#include"subkey1.h"#include"subkey2.h"#include"subkey3.h"#include"subkey4.h"#include"subkey5.h"#include"subkey6.h"bit insertsetframe=1;//内部设定标志位bit handframe=1;//手动设定标志位bit improvedisframe=0;//实际值标志位bit shineframe=0;//判断是不是第一次开机停止4LED的闪烁bit canshuframe=0x00;//参数标志位unsigned char circleframe=0x00;//参数循环变量unsigned char channelframe=0x00;//通道标志位unsigned char ledframe=0xfc;//LED灯管状态unsigned char times=0x00;//记数位unsigned char readkey;unsigned int setvalue=0x00;//设定值unsigned char outputvalue=0x00;//输出值unsigned int limup=0x270f;//实际值上限unsigned int limdown=0x00;//实际值下限unsigned int a1=0x270f;//上限报警值unsigned int a2=0x00;//下限报警值unsigned int cp=0x00;//P参数unsigned int ci=0x00;//I参数unsigned int cd=0x00;//D参数unsigned char led[6];//LED值公共main(){unsigned int tmr;unsigned char keynumber;for (tmr=0;tmr<0xffff;tmr++);write7281(0x12,0x80);write7281(0x10,0xf0);write7281(0x00,0xc8);write7281(0x14,0x1b);write7281(0x14,0x2e);write7281(0x15,0x30);write7281(0x15,0x40);write7281(0x15,0x50);write7281(0x06,0xfc);while(1){while(!key){keynumber=read7281(0x13);switch(keynumber){case 0x00:subkey0();break;case 0x01:subkey1();break;case 0x02:subkey2();break;case 0x03:subkey3();break;case 0x04:subkey4();break;case 0x05:subkey5();break;case 0x06:subkey6();break;default:break;}}}}附录[2] S1模块的程序—SUBKEY0.C#include"delay.h"#include"dis7281.h"#include"STC12C5410AD.H"#include"main.H"#include"subkey0.h"void subkey0(){if(insertsetframe==1){insertsetframe=0;ledframe|=0x01;write7281(0x06,ledframe);}else{insertsetframe=1;ledframe&=0xfe;write7281(0x06,ledframe);}}//更改内部设定和外部设定的状态,并将相应的状态位进行更改,并更改状态灯附录[3] S2模块的程序—SUBKEY1.C#include"delay.h"#include"dis7281.h"#include"STC12C5410AD.H"#include"main.H"#include"subkey1.h"void subkey1(){if(handframe==1){handframe=0;ledframe|=0x02;write7281(0x06,ledframe);}else{handframe=1;ledframe&=0xfd;write7281(0x06,ledframe);}} //更改手动自动状态,改变相应的状态位,更改相应的状态灯附录[4] S3模块的程序—SUBKEY2.C#include"delay.h"#include"dis7281.h"#include"STC12C5410AD.H"#include"main.H"#include"subkey2.h"#include"adconver.h"#include"subkey0.h"#include"subkey1.h"#include"hdconver.h"#include"subkey3.h"#include"subkey4.h"#include"pid.h"#include"daconver.h"void subkey2(){if(shineframe==0){write7281(0x10,0xff);shineframe=1;}else{skey2();}}void skey2(void){ // canshuframe=1;write7281(0x18,0x17);switch(circleframe){case 0x00: ledframe|=0x0c;write7281(0x06,ledframe);circleframe+=1;hdconver(limup);//4LED显示上限值dis4led();write7281(0x14,0x41);write7281(0x14,0x5C); //写入2LEDHIbreak;case 0x01: circleframe+=1;hdconver(limdown);//4LED显示下限值dis4led();write7281(0x14,0x40);write7281(0x14,0x5d); //写入2LEDLObreak;case 0x02: circleframe+=1;hdconver(a1);//4LED显示上限报警dis4led();write7281(0x14,0x41);write7281(0x15,0x5a); //写入2LEDA1break;case 0x03: circleframe+=1;hdconver(a2);//4LED显示下限报警dis4led();write7281(0x14,0x42);write7281(0x15,0x5a); //写入2LEDA2break;case 0x04: circleframe+=1;hdconver(cp);//4LED显示P参数dis4led();write7281(0x14,0x4e);write7281(0x14,0x5f); //写入2LEDPbreak;case 0x05: circleframe+=1;hdconver(ci);//4LED显示I参数dis4led();write7281(0x14,0x41);write7281(0x14,0x5f); //写入2LEDIbreak;case 0x06: circleframe+=1;hdconver(cd);//4LED显示D参数dis4led();write7281(0x15,0x4d);write7281(0x14,0x5f); //写入2LEDIbreak;case 0x07: improvedisframe=0;ledframe=(ledframe|0x08)&0xfb;circleframe+=1;adconver();write7281(0x14,0x40);write7281(0x14,channelframe);write7281(0x06,ledframe);break;case 0x08: improvedisframe=1;ledframe=(ledframe|0x04)&0xf7;circleframe=0;pidcf();daconver();hdconver(setvalue);dis4led();write7281(0x06,ledframe);break;default:break;}}//按相应的S3改变不同的参数附录[5] S4模块的程序—SUBKEY3.C#include"delay.h"#include"dis7281.h"#include"STC12C5410AD.H"#include"main.H"#include"subkey3.h"#include"subkey2.h"#include"hdconver.h"void subkey3(){switch(circleframe){case 0x01:limup=add1(limup);break;case 0x02:limdown=add1(limdown);break;case 0x03:a1=add1(a1);break;case 0x04:a2=add1(a2);break;case 0x05:cp=add1(cp);break;case 0x06:ci=add1(ci);break;break;case 0x00:setvalue=add1(setvalue);break;default:break;}}unsigned int add1(unsigned int value){ledframe|=0x20;//关掉下限报警write7281(0x06,ledframe);if(value==9999){ledframe&=0xef;//打开上限报警灯write7281(0x06,ledframe);write7281(0x06,ledframe);}else{value+=1;}hdconver(value);dis4led();return(value);}附录[6] S5模块的程序—SUBKEY4.C#include"delay.h"#include"dis7281.h"#include"STC12C5410AD.H"#include"main.H"#include"subkey4.h"#include"subkey2.h"#include"hdconver.h"void subkey4(){switch(circleframe){case 0x01:limup=sub1(limup);break;case 0x02:limdown=sub1(limdown);break;break;case 0x04:a2=sub1(a2);break;case 0x05:cp=sub1(cp);break;case 0x06:ci=sub1(ci);break;case 0x07:cd=sub1(cd);break;case 0x00:setvalue=sub1(setvalue);break;default:break;}}unsigned int sub1(unsigned int value){ledframe|=0x10;//关掉上限报?write7281(0x06,ledframe);if(value==0){ledframe&=0xdf;//打开上限报警灯write7281(0x06,ledframe);}else{value-=1;}hdconver(value);dis4led();return(value);}附录[7] S6模块的程序—SUBKEY5.C#include"delay.h"#include"dis7281.h"#include"STC12C5410AD.H"#include"main.H"#include"subkey5.h"#include"hdconver.h"void subkey5(){if(improvedisframe==0){channelframe=0x00;write7281(0x15,0x40);write7281(0x15,0x50);//若现在状态为实际值,则改变通道状态并显示现在状态为00 }else{if(handframe==1){ledframe|=0x10;//关掉上限报警灯write7281(0x06,ledframe);if(outputvalue==0x00){ledframe&=0xdf;//打开下限报警灯write7281(0x06,ledframe);}else{outputvalue-=1;hdconver2(outputvalue);}dis2led();}}}附录[7] S7模块的程序—SUBKEY6.C#include"delay.h"#include"dis7281.h"#include"STC12C5410AD.H"#include"main.H"#include"subkey6.h"#include"hdconver.h"void subkey6(){if(improvedisframe==0){channelframe=0x01;write7281(0x15,0x41);write7281(0x15,0x50);//若现状态为实际值,则2LED显示为01}else{if(handframe==1){ledframe|=0x20;//关掉下限报警灯write7281(0x06,ledframe);if(outputvalue==99){ledframe&=0xef;//打开上限报警档?write7281(0x06,ledframe);}else{outputvalue+=1;hdconver2(outputvalue);}}dis2led();}}附录[8] A/D转换模块的程序—ADCONVER.C#include"STC12C5410AD.H"#include"adconver.H"#include"delay.h"#include"main.h"#include"dis7281.h"#include"hdconver.h"void adconver(){ unsigned char adchanne=0xe0;//设置P1的0.1位为AD输入通道ADC_CONTR=(0x80|ADC_CONTR)+channelframe;//开启AD模拟电源delay(1000);P1M0=0x03;P1M1=0x03;//设置通道为开漏模式ADC_CONTR=adchanne+channelframe;//设置AD转换通道delay(22);ADC_DATA=0x00;ADC_LOW2=0x00;//清除数据口ADC_CONTR|=0x08;//开启AD端口while(!(ADC_CONTR&0x10)){};//等待AD转换完成ADC_CONTR&=0xe7;//停止AD转换P1M0&=0xfd;P1M1&=0xfd;//设置P1口为普通IO模式addis();}void addis(){unsigned int addata;double liangch;liangch=(limup-limdown)/100;addata=ADC_DATA+(ADC_LOW2&0x03)*1024;liangch=liangch/1023*addata;addata=(unsigned int)liangch;if(addata>a1){ledframe&=0xef;//打开上限报警灯write7281(0x06,ledframe);}if(addata<a2){ledframe&=0xdf;//打开上限报警灯write7281(0x06,ledframe);}hdconver(addata);dis4led();}附录[8] D/A转换模块的程序—DACONVER.C#include"delay.h"#include"STC12C5410AD.H"#include"main.H"#include"daconver.h"sbit TLV5618_SCLK=P1^7;sbit TLV5618_DIN=P1^5;sbit TLV5618_CS=P1^4;void mDelay(unsigned int a){unsigned int f;for(f=0;f<a;f++);}void TLV5618 (unsigned int da){unsigned int i;unsigned int dat;dat= da|0xc000;TLV5618_CS=0;TLV5618_SCLK=0;for(i=0;i<16;i++){TLV5618_DIN=(bit)(dat&0x8000);dat=dat<<1;TLV5618_SCLK=1;mDelay(50);TLV5618_SCLK=0;mDelay(50);}TLV5618_CS=1;}void daconver(void){ float i=100;unsigned int da;i=outputvalue/100*4096;da=(unsigned int)i;TLV5618 (da);}附录[9]显示及键盘模块的程序—DIS7281.C#include"delay.H"#include"STC12C5410AD.H"#include"dis7281.H"#include"main.h"void write7281(unsigned char regadd,unsigned char writedata) {sendbyte(regadd);sendbyte(writedata);}void sendbyte(unsigned char sendbyte){unsigned char bitcounter;clk=0;clk=1;do{clk=0;clk=1;}while(dat);clk=0;clk=1;while(!dat);for(bitcounter=0;bitcounter<8;bitcounter++){if ((sendbyte&0x80)==0){ dat=0;}else{dat=1;}sendbyte=sendbyte*2;clk=0;clk=1;delay(1);}dat=1;delay(2);}unsigned char receivebyte(void){unsigned char bit_counter;unsigned char in_byte;clk=0;clk=1; //只发送一个单元的脉冲while(dat);//等待BC7281响应DAT底电平clk=0;clk=1; //受到响应,再发一脉冲等待接受数据for (bit_counter=0;bit_counter<8;bit_counter++ ) //接受8个BIT{delay(1);in_byte=in_byte*2 ;//in_byte左移一位if(dat) //如果DAT为1{in_byte=in_byte|0x01; //bit^0=1}clk=0;clk=1;}delay(2);clk=0;clk=1;return(in_byte);}unsigned char read7281(unsigned char reg_add){sendbyte (0x80+reg_add); //发送读指令(BIT 7=1)return (receivebyte()); //接受数据字节并返回}void dis4led(){unsigned char i;unsigned char id=0x00;for(i=0;i<4;i++){write7281(0x14,id+led[i]);id+=0x10;}}void dis2led(){unsigned char i;unsigned char id=0x40;for(i=4;i<6;i++){write7281(0x14,id+led[i]);id+=0x10;}}附录[10]PID算法模块的程序—PID.C#include"adconver.h"#include"STC12C5410AD.H"#include"math.h"#include"pid.h"#include"hdconver.h"#include"dis7281.h"xdata struct _pid{int pv;int sp;float integral;float pgain;float igain;float dgain;int deadband;int last_error;};xdata struct _pid warm,*pid;xdata int process_point,set_point,dead_band;xdata float p_gain,i_gain,d_gain,integral_val,new_integ;void pid_init(struct _pid *warm,int process_point,int set_point){struct _pid *pid;pid=warm;pid->pv=process_point;pid->sp=set_point;}void pid_tune(struct _pid *pid,float p_gain,float i_gain,float d_gain,int dead_band) {pid->pgain=p_gain;pid->igain=i_gain;pid->dgain=d_gain;pid->deadband=dead_band;pid->integral=integral_val;pid->last_error=0;}void pid_setinteg(struct _pid *pid,float new_integ){pid->integral=new_integ;pid->last_error=0;}void pid_bumpless(struct _pid *pid){pid->last_error=(pid->sp)-(pid->pv);}float pid_calc(struct _pid *pid){int err;float pterm,dterm,result,ferror;err=(pid->sp)-(pid->pv);if(abs(err)>pid->deadband){ferror=(float)err;pterm=pid->pgain*ferror;if(pterm>100||pterm<-100){pid->integral=0.0;}else{pid->integral+=pid->igain*ferror;if(pid->integral>100.0){pid->integral=100.0;}else{if(pid->integral<0.0){pid->integral=0.0;}}}dterm=((float)(err-pid->last_error))*pid->dgain; result=pterm+pid->integral+dterm;}else{result=pid->integral;}pid->last_error=err;return(result);}void pidcf(void){int count=0;float val=100;float p_gain=cp/val;float i_gain=ci/val;float d_gain=cd/val;// unsigned int dadata;pid=&warm;dead_band=2;integral_val=(float)(0.01);while(count<=20){process_point=(unsigned int)addata/val;set_point=(unsigned int)setvalue/val;pid_init(&warm,process_point,set_point);pid_tune(&warm,p_gain,i_gain,d_gain,dead_band); pid_setinteg(&warm,0.0);pid_bumpless(&warm);count++;}outputvalue=(unsigned char)pid_calc(&warm); hdconver2(outputvalue);dis4led();}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
扬州大学能源与动力工程学院课程设计报告题目:数字PID控制系统设计(I)课程:计算机控制技术课程设计专业:电气工程及其自动化班级:姓名:学号:第一部分任务书《计算机控制技术》课程设计任务书一、课题名称数字PID 控制系统设计(I )二、课程设计目的课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。
《计算机控制技术》是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。
计算机控制技术的课程设计是一个综合运用知识的过程,它需要控制理论、程序设计、硬件电路设计等方面的知识融合。
通过课程设计,加深对学生控制算法设计的认识,学会控制算法的实际应用,使学生从整体上了解计算机控制系统的实际组成,掌握计算机控制系统的整体设计方法和设计步骤,编程调试,为从事计算机控制系统的理论设计和系统的调试工作打下基础。
三、课程设计内容设计以89C51单片机和ADC 、DAC 等电路、由运放电路实现的被控对象构成的计算机单闭环反馈控制系统。
1. 硬件电路设计:89C51最小系统加上模入电路(用ADC0809等)和模出电路(用TLC7528和运放等);由运放实现的被控对象。
2. 控制算法:增量型的PID 控制。
3. 控制算法仿真:在simulink 中建立系统仿真图,编写S-function, 对算法进行仿真。
四、课程设计要求1. 模入电路能接受双极性电压输入(-5V~+5V ),模出电路能输出双极性电压(-5V~+5V )。
2. 模入电路用两个通道分别采集被控对象的输出和给定信号。
3. 每个同学选择不同的被控对象:44(),()(0.21)(0.81)G s G s s s s s ==++ 55(),()(0.81)(0.31)(0.81)(0.21)G s G s s s s s ==++++ 510(),()(1)(0.81)(1)(0.41)G s G s s s s s ==++++88(),()(0.81)(0.41)(0.41)(0.51)G s G s s s s s s s ==++++ 4. PID 参数整定,根据情况可用扩充临界比例度法,扩充响应曲线法等。
5. 对象输出端加上扰动:扰动可选择小幅度正弦信号、小幅度阶跃信号、小幅度的脉冲信号。
扰动的出现时刻选择在系统进入稳态后的适当时刻。
6. 对采样信号加上滤波算法。
算法可选择滑动平均值法,复合滤波,惯性滤波等。
7. simulink仿真采用ode4定步长,仿真步长可取0.1-1ms。
采样周期可取20-100ms,由实验结果确定。
8. S-function的函数名由各人姓名拼音缩写+学号后3位数组成。
五、课程设计实验结果1. 控制系统能正确运行。
2. 正确整定PID参数后,系统阶跃响应超调<10%,调节时间尽量短。
六、进度安排七、课程设计报告内容:总结设计过程,写出设计报告,设计报告具体内容要求如下:1.课程设计的目的和设计的任务。
2.课程设计的要求。
3.控制系统总框图及系统工作原理。
4.控制系统的硬件电路连接图(含被控对象),电路的原理。
5.控制算法及其原理。
6. Simulink仿真图及S-function的算法实现说明。
7.实验结果及其分析。
8.电路设计、仿真调试中遇到的问题及解决方法。
9.体会。
第二部分课程设计报告目录1 课题简介 (6)1.1 课程设计的目的 (6)1.2 课题任务和要求 (6)2 数字PID控制系统方案设计 (6)2.1 控制系统总体介绍 (6)2.2 系统闭环工作原理 (7)3 数字PID控制硬件电路设计 (7)3.1 A/D转换单元 (7)3.2 D/A转换单元 (8)3.3 被控对象的实现 (8)4 数字PID控制算法设计 (9)4.1 数字PID增量型控制算法 (9)4.2 采样周期的选择 (9)5 数字PID控制Simulink仿真设计 (10)5.1 主程序设计 (10)5.2 定时中断程序设计 (10)5.3 外部中断程序设计 (11)5.4 滤波程序设计 (12)6实验与结果分析 (12)6.1 凑试法确定PID参数 (12)6.2 实验结果分析 (14)7 小结与体会 (14)参考文献 (15)1 课题简介1.1 课程设计的目的课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。
计算机控制技术的课程设计是一个综合运用知识的过程,它需要控制理论、程序设计、硬件电路设计等方面的知识融合。
通过课程设计,加深对学生控制算法设计的认识,学会控制算法的实际应用,使学生从整体上了解计算机控制系统的实际组成,掌握计算机控制系统的整体设计方法和设计步骤,编程调试,为从事计算机控制系统的理论设计和系统的调试工作打下基础。
1.2 课题任务和要求本课题的任务:设计以89C51单片机和ADC、DAC等电路、由运放电路实现的被控对象构成的计算机单闭环反馈控制系统。
1. 硬件电路设计:89C51最小系统加上模入电路(用ADC0809等)和模出电路(用TLC7528和运放等);由运放实现的被控对象。
2. 控制算法:增量型的PID控制。
3. 控制算法仿真:在simulink中建立系统仿真图,编写S-function, 对算法进行仿真。
本课题的要求:1. 模入电路能接受双极性电压输入(-5V~+5V),模出电路能输出双极性电压(-5V~+5V)。
2. 模入电路用两个通道分别采集被控对象的输出和给定信号。
3.被控对象为:88(),()(0.81)(0.41)(0.41)(0.51)G s G ss s s s s s==++++4. PID参数整定,要求用扩充临界比例度法。
5. 定时中断时间可在10-50ms中选取,采样周期取定时中断周期的整数倍,可取20-100ms,由实验结果确定。
6. 滤波方法可选择平均值法,中值法等。
2.1 控制系统总体介绍该闭环控制系统的被控对象为88(),()(0.81)(0.41)(0.41)(0.51)G s G ss s s s s s==++++数字PID控制系统框图如下图所示:图2.1 数字PID控制系统方框图其中被控对象由一个积分环节和一个惯性环节串联而成。
首先利用模数转换单元对两路信号(给定和输出)进行采样,经过A/D转换器进行转换后,由单片机进行计算偏差,控制器采用的是增量型数字PID控制,由比例(P)、积分(D)和微分(I)叠加而成。
经过A/D 转换的数字信号再通过PID程序进行增量型计算,输出的信号值经过D/A转换得到控制信号,在D/A转换器中利用双运放实现双极性输出,经过被控对象得出被控量Y。
2.2 系统闭环工作原理由图2.1可知,被控对象的响应Y(t)经采样电路离散为Y(k)。
偏差E(k)=R(k)-Y(k),作为PID调节的输入,经过PID运算输出,得到控制输出U(k)。
控制输出U(k)经采样保持器产生连续的控制输出信号U(t),作用于控制对象,使控制输出值U(t)达到给定值R,消除偏差E(k)。
3.1 A/D转换单元模数单元采用ADC0809芯片,主要包括多路模拟开关和A/D转换器两部分。
其主要特点为:单电源供电、工作时钟CLOCK最高可达到1200KHz、8位分辨率、8个单端模拟输入端(IN0~IN7)、TTL电平兼容等,可以很方便地和微处理器接口。
图3.1 A/D转换单元如图3.1,通过三端地址译码A、B、C多路开关可选通8路模拟输入的任何一路进行A/D转换。
其中IN0对地接500欧电阻,构成温度控制实验中的温度传感器专用输入通道;IN1~IN5的模拟量输入允许范围;0V~4.98v,对应数字量00H~FFH,2.5V对应80H; IN6、IN7两路由于接上了上拉电阻,所以模拟输入允许范围-5V~+4.96V,对应的数字量为00H~FFH,0V对应80H。
这样就实现了双极性电压的输入。
本课程设计中采用的ADC0809,其输出8位数据线已连接到计算机控制系统的数据线。
由于89C51外部时钟为12 MHz,其ALE端输出6分频时钟(2 MHz),再经过D触发器分频得到所需的应用时钟1MCLK(1 MHz),输入CLOCK端。
在本课程设计中要求模入电路用两个通道分别采集被控对象的输出和给定信号,并且要双极性电压输入,所以选择ADC0809的IN6、IN7两个通道采集输入模拟信号。
3.2 D/A转换单元数模转换单元采用TLC7528芯片,它是8位、并行、两路、电压型输出数模转换器。
其主要参数如下:转换时间100ns,满量程误差1/2LSB,参考电压-10V~+10V,供电电压+5V~+15V,输入逻辑电平与TTL兼容。
输入数字范围为00H~0FFH,80H对应0V,输出电压为-5V~+4.96V。
本课程设计中采用的TLC7528,其输入数字量的八位数据线、写线和通道选择控制线已接至控制计算机的总线上。
片选线预留出待实验中连接到相应的I/O片选上,具体接线图如下:图3.2 D/A转换单元3.3被控对象的实现本课程设计中选取的被控对象为:88(),()(0.81)(0.41)(0.41)(0.51)G s G ss s s s s s==++++电路如图3.3。
图3.3 控制对象4 数字PID 控制算法设计4.1 数字PID 增量型控制算法对于连续系统,PID 控制规律为: ])()(1)([)(0⎰++=tDIP dtt de T dt t e T t e K t u (4.1.1)其中,K P 为比例增益,K P 与比例带δ成倒数关系即K P =1/δ,T I 为积分时间常数,T D 为微分时间常数,u(t)为控制量,e(t)为偏差。
在计算机控制系统中,PID 控制规律的实现必须用数值逼近的方法。
当采样周期相当短时,用求和代替积分、后向差分代替微分,使模拟PID 离散化为差分方程,得数字PID 位置型控制算式:])1()()()([)(0∑=--++=ki DIP Tk e k e T i e T Tk e K k u(4.1.2)为了便于编写程序,避免积分累加占用过多的存储单元,我们需对式(4.1.2)进行改进。
由式(4.1.2)易写出u(k-1)的表达式,即])2()1()()1([)1(1∑-=---++-=-k i DIP Tk e k e T i e T Tk e K k u(4.1.3)将式(4.1.2)和式(4.1.3)相减,即得数字PID 增量型控制算式为)]2()1(2)([)()]1()([)1()()(-+--++--=--=∆k e k e k e K k e K k e k e K k u k u k u D I P (4.1.4)其中:K P 称为比例增益;K I =K P T/T I 称为积分系数;K D =K P T D /T 称为微分系数。