温度控制实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
温度控制实验指导书
一、实验原理
温度源把温度信号转成电信号,模块将采集到的模拟量转化成数字量与上位机(计算机)通过232接口通讯,上位机发出相应的指令控制反馈模块对输出量进行实时控制。
这样就构成了一个计算机温度控制系统。
在定时(5秒)过程中通过控制加热开关的导通和闭合的时间比达到温度控制的目的。
PID控制简介
PID控制器是连续控制系统中技术成熟、应用最为广泛的控制器,在模拟控制系统中,最常用的控制规律足 PID控制。
常规 PID控制系统原理框图如图2所示。
系统由模拟控制器和被控对象组成。
图2.模拟PID控制系统的原理框图
PID是一种线性控制器,它根据给定值r(t)与实际输出 y(t)构成控制偏差。
e(t)=r(t)一y(t)
将偏差比例(P)、积分(I)和微分(D)通过一定的线性组合构成控制量 U(t)对被控对象进行控制。
它的控制规律为:
式中:K P 为比例系数;K I为积分时间常数;K D为微分时间常数。
将上式进行离散化处理,可得PID离散表达式:
式中:k为采样序号,代表的是第k次采样。
u(k)为第 k次采样时刻的计算机输出值;e(k)为第k次采样时刻的输入的偏差值;e(k-1)为第 k-1次采样时刻的输入的偏差值。
同理可得u(k-1)的表达式:
用u(k)减去u(k-1),可得△u的值:
△u=K P[e(k)-e(k-1)]+K I e(k)+K D[e(k)-2e(k-1)+e(k-2)]
K P[e(k)-e(k-1)]是比例的贡献,K I e(k)是积分的贡献,K D[e(k)-2e(k-1)+e(k-2)]是微分的贡献。
二、实验目的及内容
1、目的
建立计算机温度控制的实践基础。
综合应用所学过的传感器知识,计算机数据采集知识和控制算法,自行设计一个计算机温度控制系统,理解计算机控制系统的基本构成。
2、内容
可通过图1中的路径来组建计算机温度控制方案。
图1.计算机温度控制方案
在本实验中,采用K型热电偶作为传感器,通过采集模块将信号输给计算机。
通过在VB环境下对其进行编程,选用PID控制。
三、实验仪器设备
1、CSY-2000型温度源,220V交流电提供加热电源,24V直流电提供风扇电源。
2、工业控制计算机。
3、K型热电偶。
4、台湾铭纬开关电源,220V交流电输入,输出直流电压24V,电流1.5A。
5、SASR-25DA施耐德固态继电器,输入直流电压3~32V,输出交流电压24~380V。
6、台湾泓格公司模块7018、7060、7520,24V直流供电。
7、计算机及232串口线。
8、导线若干。
四、实验方法与步骤
1、按照图中所示接线。
其中,220V交流电为系统提供加热电源,开关电源将其转化为24V直流电,为模块和温度源的冷却风扇供电。
K热电偶作为传感器将温度信号转化为有用的电压信号传入7018模块。
7018是一个AD转换模块, 它能将电压模拟量转化为机器能识别的数字量,通过DATA口与另外两个模块进行数据传输。
各模块之间采用的是485方式通讯,而计算机只有232接口,7520能将这两种方式互相转化,从而使模块和计算机之间能够进行通讯。
当信号传到计算机上时,计算机通过PID算法对7060模块发出相应的指令。
7060是一个继电器开关模块,收到指令后,控制固态继电器的闭合时间,从而控制温度源加
热的时间,起到调节温度的效果。
2、温度实验一:定时,理解定时器应用语句。
程序代码以及界面
3、温度实验二:用通讯采集信号,结合硬件系统熟悉用计算机和模块之间的通讯来采集温
度信号。
程序代码以及界面
注释:关于控件的添加
右键单击窗口左边的工具栏→点击“部件”→勾选“Microsoft Comm Control 6.0”→点击“确定”即添加控件
4、温度实验三:用通讯控制继电器,断开温度源电源,运行程序,观察固态继电器的开关
变化。
5、认识实验:PID程序,理解其中的算法部分。
程序代码以及界面
Dim y As Single
Dim r As Single
Dim kp, ki, kd As Single
Dim Uap, Uac, OutT As Single
Dim e(0 To 10) As Single
Private Sub Command1_Click()
kp = Val(Textk(0).Text) '输入PID各控制量值
ki = Val(Textk(1).Text)
kd = Val(Textk(2).Text)
r = Val(Text1.Text) '输入目标温度值
e(2) = r - y '计算温度差
If Abs(e(2)) < 10 Then
Uac = kp * (e(2) - e(1)) + ki * e(2) + kd * (e(2) - 2 * e(1) + e(0)) ‘PID算法Else
Uac = kp * (e(2) - e(1)) '只用比例控制,为的是在当前温度与目标温度
相差较大时加速升温
End If
e(0) = e(1)
e(1) = e(2)
OutT = (Uap + Uac)
Uap = OutT
End Sub
6、温度控制,理解其中PID有关算法的语句,并填补空缺的语句。
使得程序在默认目标温
度50摄氏度,默认的比例、积分、微分系数下能进行温度控制。
程序代码以及界面
Option Explicit
Dim C(1 To 1000) As String
Dim i As Integer
Dim y(1 To 1000) As Single
Dim e(10) As Single
Dim Uac, Uap As Single
Dim u(0 To 1000) As Single
Dim Kp, Ki, Kd As Single
Dim OutT As Single '继电器通电时间
Dim r As Single '当前采集温度
Private Sub Command1_Click() '开始
Timer1.Enabled = True
Timer2.Enabled = True
Dim t As Single
r = Val(Text1.Text)
'温度坐标图
't轴
For t = 0 To 420 Step 60
If t <> 0 Then
Picture1.Line (t, 2)-(t, 0)
End If
Next t
For t = 0 To 420 Step 12
If t <> 0 Then
Picture1.Line (t, 0.6)-(t, 0)
End If
Next t
'y轴
For t = 0 To 160 Step 20
If t <> 0 Then
Picture1.Line (3, t)-(0, t)
End If
Next t
For t = 10 To 110 Step 20
Picture1.Line (1.5, t)-(0, t)
Next t
For t = 0 To 160 Step 1
If t <> 0 Then
Picture1.Line (1, t)-(0, t)
End If
Next t
'5条温度曲线辅助观察线
Picture1.Line (0, r)-(420, r), vbBlue
Picture1.Line (0, r - 1)-(420, r - 1), vbGreen '超调1℃基准线Picture1.Line (0, r + 1)-(420, r + 1), vbGreen
Picture1.Line (0, r - 3)-(420, r - 3), vbBlue '超调3℃基准线Picture1.Line (0, r + 3)-(420, r + 3), vbBlue
End Sub
Private Sub Command2_Click() '暂停
Timer1.Enabled = False
Timer2.Enabled = False
End Sub
Private Sub Command3_Click() '温度曲线刷新按钮
Dim t As Single
For t = 1 To i - 1 Step 1
If t = 1 Then
Picture1.PSet (t, y(t)), vbRed
ElseIf t > 1 Then
Picture1.Line ((t - 1), y(t - 1))-(t, y(t)), vbRed
End If
Next t
End Sub
Private Sub Command4_Click() '退出
End
End Sub
Private Sub Form_Load()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
mPort = 1 '设置通讯
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
Timer1.Interval = 5000
i = 1
Picture1.Scale (0, 160)-(420, 0) '建立图标坐标系
Uap = 0
e(1) = e(2) = 0
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub Timer1_Timer()
Dim buf As String '温度数据缓存变量
Dim t As Single
Dim m As Single
MSComm1.Output = "#011" & vbCr '读温度
m = Timer
buf = ""
Do Until Timer - m > 0.2 '确保采集到数据
buf = buf + MSComm1.Input '温度的字符的数据缓冲
If Right(buf, 1) = vbCr Then
GoTo Run1
End If
DoEvents
Loop
Text4.Text = "通讯失败!!!"
Run1:
Text4.Text = "恭喜,通讯正常"
y(i) = Val(Mid(buf, 4)) '取温度数据
Text3.Text = y(i)
Kp = Val(Text7.Text)
Ki = Val(Text8.Text)
Kd = Val(Text9.Text)
r = Val(Text1.Text)
e(0) = r - y(i)
If Abs(e(0)) < 10 Then '温差小于10℃时
Uac = Kp * (e(0) - e(1)) + Ki * e(0) + Kd * (e(0) - 2 * e(1) + e(2)) Else
Uac = Kp * (e(0) - e(1))
End If
Text5.Text = Kp * (e(0) - e(1)) '比例的贡献
Text6.Text = Ki * e(0) '积分的贡献
e(2) = e(1)
e(1) = e(0)
OutT = (Uap + Uac)
Uap = OutT
If OutT > 4800 Then '开的时间过长或过短时的处理OutT = 4800
End If
If OutT < 0 Then
OutT = 0
End If
If y(i) > 140 Then '防止温度超过140度,对温度源保护OutT = 0
End If
If OutT > 10 Then
MSComm1.Output = "@021" & vbCr '开继电器
m = Timer
buf = ""
Do Until Timer - m > 0.2 '确保采集到数据
buf = buf + MSComm1.Input '温度的字符的数据缓冲
If Right(buf, 1) = vbCr Then
GoTo run2
End If
DoEvents
Loop
Text4.Text = "通讯失败!"
End If
run2:
Timeropen.Interval = OutT
Timeropen.Enabled = True
Text2.Text = OutT
If i = 1 Then '绘制温度曲线
Picture1.PSet (i, y(i)), vbRed
ElseIf i > 1 Then
Picture1.Line ((i - 1), y(i - 1))-(i, y(i)), vbRed
End If
i = i + 1
End Sub
Private Sub TimerOpen_Timer()
Dim m As Single
Dim buf As String
m = Timer
MSComm1.Output = "@020" & vbCr '关继电器
Do Until Timer - m > 0.2
buf = buf + MSComm1.Input '温度的字符的数据缓冲
If Right(buf, 1) = vbCr Then
GoTo run3
End If
DoEvents
Loop
Text4.Text = "通讯失败!"
run3:
Timeropen.Enabled = False
End Sub
Private Sub Timer2_Timer()
Label1.Caption = Time
End Sub
7、当程序运行无误后,在其窗口上输入目标温度50摄氏度,改变比例、积分、微分系数
使得温度曲线在上升过程结束后,进入恒温过程时温度偏差在正负1摄氏度以内(如图2所示),然后在表格中记下上述三个系数。
图2.PID温度控制的实际效果图
8、将目标温度改为80摄氏度,重复设定PID数值,填入下表。
六、注意事项与思考题
1) 注意事项
1.在通电之前,必须检查各器件间连线并保证温度源的电源是断开的。
2.实验结束后,确保温度源断电,以免温度源长时间工作导致温度过高。
3.加热温度源时不得超过140℃。
4.连接导线时应关闭电源,以防触电。
2)思考题
1. 比例、积分、微分在温度控制过程中分别有什么作用?
2. 7520、7018、7060在实验过程中各自的功能是什么?
3. 温度源中风扇的作用是什么?。