温度控制实验指导书一、实验原理温度源把温度信号转成电信号,模块将采集到的模拟量转化成数字量与上位机(计算机)通过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)对被控对象进行控制。它的控制规律为:式中:KP为比例系数;KI为积分时间常数;KD为微分时间常数。将上式进行离散化处理,可得PID离散表达式:式中:k为采样序号,代表的是第k次采样。u(k)为第k次采样时刻的计算机输出值;e(k)为第k次采样时刻的输入的偏差值;e(k-1)为第k-1次采样时刻的输入的偏差值。同理可得u(k-1)的表达式:用u(k)减去u(k-1),可得△u的值:△u=KP[e(k)-e(k-1)]+KIe(k)+KD[e(k)-2e(k-1)+e(k-2)]KP[e(k)-e(k-1)]是比例的贡献,KIe(k)是积分的贡献,KD[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是一个继电器开关模块,收到指令后,控制固态继电器的闭合时间,从而控制温度源加温度源K型热电偶计算机控制方法●PID控制●……继电器输出采集模块热的时间,起到调节温度的效果。2、温度实验一:定时,理解定时器应用语句。程序代码以及界面3、温度实验二:用通讯采集信号,结合硬件系统熟悉用计算机和模块之间的通讯来采集温度信号。程序代码以及界面注释:关于控件的添加右键单击窗口左边的工具栏→点击“部件”→勾选“MicrosoftCommControl6.0”→点击“确定”即添加控件4、温度实验三:用通讯控制继电器,断开温度源电源,运行程序,观察固态继电器的开关变化。5、认识实验:PID程序,理解其中的算法部分。程序代码以及界面DimyAsSingleDimrAsSingleDimkp,ki,kdAsSingleDimUap,Uac,OutTAsSingleDime(0To10)AsSinglePrivateSubCommand1_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'计算温度差IfAbs(e(2))10ThenUac=kp*(e(2)-e(1))+ki*e(2)+kd*(e(2)-2*e(1)+e(0))‘PID算法ElseUac=kp*(e(2)-e(1))'只用比例控制,为的是在当前温度与目标温度相差较大时加速升温EndIfe(0)=e(1)e(1)=e(2)OutT=(Uap+Uac)Uap=OutTEndSub6、温度控制,理解其中PID有关算法的语句,并填补空缺的语句。使得程序在默认目标温度50摄氏度,默认的比例、积分、微分系数下能进行温度控制。程序代码以及界面OptionExplicitDimC(1To1000)AsStringDimiAsIntegerDimy(1To1000)AsSingleDime(10)AsSingleDimUac,UapAsSingleDimu(0To1000)AsSingleDimKp,Ki,KdAsSingleDimOutTAsSingle'继电器通电时间DimrAsSingle'当前采集温度PrivateSubCommand1_Click()'开始Timer1.Enabled=TrueTimer2.Enabled=TrueDimtAsSingler=Val(Text1.Text)'温度坐标图't轴Fort=0To420Step60Ift0ThenPicture1.Line(t,2)-(t,0)EndIfNexttFort=0To420Step12Ift0ThenPicture1.Line(t,0.6)-(t,0)EndIfNextt'y轴Fort=0To160Step20Ift0ThenPicture1.Line(3,t)-(0,t)EndIfNexttFort=10To110Step20Picture1.Line(1.5,t)-(0,t)NexttFort=0To160Step1Ift0ThenPicture1.Line(1,t)-(0,t)EndIfNextt'5条温度曲线辅助观察线Picture1.Line(0,r)-(420,r),vbBluePicture1.Line(0,r-1)-(420,r-1),vbGreen'超调1℃基准线Picture1.Line(0,r+1)-(420,r+1),vbGreenPicture1.Line(0,r-3)-(420,r-3),vbBlue'超调3℃基准线Picture1.Line(0,r+3)-(420,r+3),vbBlueEndSubPrivateSubCommand2_Click()'暂停Timer1.Enabled=FalseTimer2.Enabled=FalseEndSubPrivateSubCommand3_Click()'温度曲线刷新按钮DimtAsSingleFort=1Toi-1Step1Ift=1ThenPicture1.PSet(t,y(t)),vbRedElseIft1ThenPicture1.Line((t-1),y(t-1))-(t,y(t)),vbRedEndIfNexttEndSubPrivateSubCommand4_Click()'退出EndEndSubPrivateSubForm_Load()IfMSComm1.PortOpen=TrueThenMSComm1.PortOpen=FalseEndIfMSComm1.CommPort=1'设置通讯MSComm1.Settings=9600,N,8,1MSComm1.PortOpen=TrueTimer1.Interval=5000i=1Picture1.Scale(0,160)-(420,0)'建立图标坐标系Uap=0e(1)=e(2)=0EndSubPrivateSubForm_Unload(CancelAsInteger)EndEndSubPrivateSubTimer1_Timer()DimbufAsString'温度数据缓存变量DimtAsSingleDimmAsSingleMSComm1.Output=#011&vbCr'读温度m=Timerbuf=DoUntilTimer-m0.2'确保采集到数据buf=buf+MSComm1.Input'温度的字符的数据缓冲IfRight(buf,1)=vbCrThenGoToRun1EndIfDoEventsLoopText4.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)IfAbs(e(0))10Then'温差小于10℃时Uac=Kp*(e(0)-e(1))+Ki*e(0)+Kd*(e(0)-2*e(1)+e(2))ElseUac=Kp*(e(0)-e(1))EndIfText5.Text=Kp*(e(0)-e(1))'比例的贡献Text6.Text=Ki*e(0)'积分的贡献e(2)=e(1)e(1)=e(0)OutT=(Uap+Uac)Uap=OutTIfOutT4800Then'开的时间过长或过短时的处理OutT=4800EndIfIfOutT0ThenOutT=0EndIfIfy(i)140Then'防止温度超过140度,对温度源保护OutT=0EndIfIfOutT10ThenMSComm1.Output=@021&vbCr'开继电器m=Timerbuf=DoUntilTimer-m0.2'确保采集到数据buf=buf+MSComm1.Input'温度的字符的数据缓冲IfRight(buf,1)=vbCrThenGoTorun2EndIfDoEventsLoopText4.Text=通讯失败!EndIfrun2:Timeropen.Interval=OutTTimeropen.Enabled=TrueText2.Text=OutTIfi=1Then'绘制温度曲线Picture1.PSet(i,y(i)),vbRedElseIfi1ThenPicture1.Line((i-1),y(i-1))-(i,y(i)),vbRedEndIfi=i+1EndSubPrivateSubTimerOpen_Timer()DimmAsSingleDimbufAsStringm=TimerMSComm1.Output=@020&vbCr'关继电器DoUntilTimer-m0.2buf=buf+MSComm1.Input'温度的字符的数据缓冲IfRight(buf,1)=vbCrThenGoTorun3EndIfDoEventsLoopText4.Text=通讯失败!run3:Timeropen.Enabled=FalseEndSubPrivateSubTimer2_Timer()Label1.Caption=TimeEndSub7、当程序运行无误后,在其窗口上输入目标温度50摄氏度,改变比例、积分、微分系数使得温度曲线在上升过程结束后,进入恒温过程时温度偏差在正负1摄氏度以内(如图2所示),然后在表格中记下上述三个系数。图2.PID温度控制的实际效果图8、将目标温度改为80摄氏度,重复设定PID数值,填入下表。系数温度(摄氏度)比例积分微分5080六、注意事项与思考题1)注意事项1.在通电之前,必须检查各器件间连线并保证温度源的电源是断开的。2.实