单容水箱液位定值控制系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八单容水箱液位定值控制系统
一、实验目的
1. 理解单容水箱液位定值控制的基本方法及原理;
2. 了解压力传感器的使用方法;
3. 学习PID控制参数的配置;。
二、实验设备
1. THBDC-1型控制理论·计算机控制技术实验台平台
2. THBXD数据采集卡一块(含37芯通信线、16芯排线和USB电缆线各1根)
3. PC机1台(含上位机软件“THBDC-1”)
4. THBDY-1单容水箱液位控制系统
三、实验原理
单容水箱液位定值控制系统的控制对象为一阶单容水箱,主要的实验项目为单容水箱液位定值控制。其执行机构为微型直流水泵,正常工作电压为24V。
直流微型水泵控制方式主要有调压控制以及PWM控制,在本实验中采用PWM控制直流微型水泵的转速来实现对单容水箱液位的定值控制。PWM调制与晶体管功率放大器的工作原理参考实验十三的相关部分。控制器采用了工业过程控制中所采用的最广泛的控制器——PID 控制器。通过计算机模拟PID控制规律直接变换得到的数字PID控制器,它是按偏差的比例(P)、积分(I)、微分(D)组合而成的控制规律。
水箱液位定值控制系统一般有由电流传感器构成大电流反馈环。在高精度液位控制系统中,电流反馈是必不可少的重要环节。这里为了方便测量与观察反馈信号,通常把电流反馈信号转化为电压信号:反馈端输出端串接一个250Ω的高精度电阻。
本实验电压与液位的关系为:
H液位=(V反馈-1)×12.5 单位:mm
四、实验步骤
1. 调节好单容水箱的出水口阀门的大小,连接实验电路:
1.1 将水箱面板上的“LT –”与实验台的“GND”相连接;水箱面板上的“LT +”与实验台的“AD1”相连接。
1.2将水箱面板上的“输入–”与实验台的“GND”相连接;水箱面板上的“输入+”与实验台的“DA1”相连接。
1.3将水箱面板上的“输出–”与“水泵电源–”连接;水箱面板上的“输出+”与“水泵电源+”连接。
2. 启动计算机,在桌面双击图标THTJ-1,运行实验软件。
3. 点击工具栏上的“通道设置”,在弹出的对话框中选择单通道采集、通道“1”,并点击“开始采集”按钮。
4. 打开工具栏上“脚本编辑器”,在“脚本编辑器”窗口上点击“打开”按钮,在“计算机控制算法”文件夹下选中“水箱控制”脚本程序并打开,阅读、理解该程序,设置好SV、P、I、D值;然后在“脚本编辑器”窗口上点击“运行”按钮,观察直流电机的运行情况。
5. 在“脚本编辑器”窗口上点击“停止”按钮,适量改变控制器SV、P、I、D值的大小,再点击“运行”按钮。再观察直流电机的运行情况。
6. 实验结束后,关闭“脚本编辑器”窗口,并顺序点击对话框中的“停止采集”与工具栏的“退出”按钮。
注意:直流水泵电源的正反接,可以控制水泵正反转,最好保证水泵处于正转状态。
7. 按照实验要求完成实验报告
六、实验报告要求
1. 画出水箱控制系统的方框图;
2. 分析P、I、D控制参数对水箱控制系统的影响;
3. 分析水箱控制系统的出水口开度大小对水箱控制系统的影响。
六、参考程序
dim pv,sv,ei,ex,ey,k,ti,td,q0,q1,q2,x,Ts,op,h ‘变量定义
sub inputdata () ‘输入接口程序
pv=myobject.inputdata1
end sub
sub main() ‘主程序
sv=10 ‘水箱液位的控制高度,单位cm k=8 ‘P参数
ti=1 ‘I参数
td=0 ‘D参数
Ts=0.2 '采样时间200ms
ei=(sv/12.5)+1-pv
h=(pv-1)*12.5
myobject.var1=h
if k=0 and ti=0 and td=0 then
q0=0
q1=0
q2=0
end if
if k<>0 and ti<>0 then
q0=k*(ei-ex)
q1=k*Ts*ei/ti
q2=k*td*(ei-2*ex+ey)/Ts
end if
if ti=0 then
q0=K*(ei-ex)
q1=0
q2=k*td*(ei-2*ex+ey)/Ts
end if
ey=ex
ex=ei
if q1>3.5 then
q1=3.5
end if
if q1<-3.5 then
q1=-3.5
end if
op=op+q0+q1+q2
if op>=3.5 then
op=3.5
end if
if op<=0 then
op=0
end if
end sub
sub outputdata() ‘输出接口程序myobject.outputdata1=op
end sub