水位控制系统演示工程.docx
- 文档编号:30536489
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:24
- 大小:2.58MB
水位控制系统演示工程.docx
《水位控制系统演示工程.docx》由会员分享,可在线阅读,更多相关《水位控制系统演示工程.docx(24页珍藏版)》请在冰豆网上搜索。
水位控制系统演示工程
《组态软件与网络通信》课程
综合评测报告
题目:
水位控制系统演示工程
姓名:
许鑫
学号:
07220610
院系:
电气工程与信息工程学院
班级:
控制工程07级
(2)班
日期:
2011年1月8日
目录
1.任务要求1
1.1动画制作1
1.2脚本制作1
1.3报警1
1.4曲线制作1
1.5画面制作1
2.脚本制作2
2.1建立变量2
2.2脚本制作3
3.动画制作13
3.1填充属性13
3.2流动属性14
3.3开关状态显示15
4.报警制作17
5.曲线制作18
5.1实时曲线的制作18
5.2历史曲线的制作18
6.画面制作22
6.1登陆界面22
6.2主界面22
6.3报警界面23
6.4趋势界面24
6.5退出界面24
7.心得体会25
附录26
1.任务要求
1.1动画制作
水罐1水罐2具有填充属性,水泵、调节阀、出水阀要有开关状态显示,管道要具有流动属性。
1.2脚本制作
自己建立数据变量,使水罐1、水罐2的液位在一定范围内合理变化;水泵在水罐1的液位到一定高度后,应关闭,出水阀在水罐2的液位低于一定高度后,应关闭,调节阀在水罐1大于一定高度以及水罐2小于一定高度时才允许打开。
1.3报警
水罐1、水罐2高于一定高度或低于一定高度时,应当报警
1.4曲线制作
要求绘制水罐1、水罐2的历史及实时曲线
1.5画面制作
要求制作开机界面、主界面、报警界面、趋势界面,并且不同画面之间可以相互跳转
2.脚本制作
2.1建立变量
由于要求有两个罐体,因此需建立两个液位变量,即level和level2;为反映罐中液面的上升与下降,还应引入一标志位,设为updown;将三个阀门分别命名为in_valve、out_valve和out_valve2;需要一变量来确定系统处于运行状态,设立run;由于有两个罐体,每个罐体分别有上限,上上限,下限,下下限报警,故另需八个报警变量,分别为HI、HH、LO、LL、HI2、HH2、LO2、LL2;同时,由于有自动/手动功能,故还需变量auto进行限定。
至此共16个变量,设置完毕。
其中,除level与level2为模拟I/O点之外,其余均为数字I/O点。
模拟点设置如图2.1,数字点设置如图2.2。
I/O表如图2.3图2.1
图2.1模拟I/O点设置
图2.2数字I/O点设置
图2.3变量表
2.2脚本制作
第一个罐内液位变化脚本为:
IF(run.PV==1)&&(level.PV<101)&&(updown.PV==0)&&(auto.pv==0)THENlevel.PV=level.PV+5;in_valve.PV=1;out_valve.PV=0ENDIFiflevel.PV>=101thenupdown.pv=1EndifIF(run.PV==1)&&(level.PV>=1)&&(updown.PV==1)&&(auto.pv==0)THENlevel.PV=level.PV-5;in_valve.PV=0;out_valve.PV=1ENDIFiflevel.PV<=0thenupdown.pv=0EndifIFrun.PV==0THENin_valve.PV=0;out_valve.PV=0ENDIF
第二个罐内液位变化脚本为:
IF(run.PV==1)&&(level2.PV<100)&&(out_valve.PV==1)&&(auto.pv==0)THENlevel2.PV=level2.PV+5;out_valve2.PV=0ENDIFIF(run.PV==1)&&(level2.PV>=1)&&(out_valve.PV==0)&&(auto.pv==0)THENlevel2.PV=level2.PV-5;out_valve2.PV=1ENDIFIFrun.PV==0THENout_valve2.PV=0ENDIF
两罐内报警脚本为:
IF(level.pv<=20)&&(level.pv>=5)THENLO.pv=1;LL.pv=0;HI.pv=0;HH.pv=0ENDIF
IF(level.pv<=5)THENLO.pv=0;LL.pv=1;HI.pv=0;HH.pv=0ENDIF
IF(level.pv>=20)&&(level.pv<=80)THENLO.pv=0;LL.pv=0;HI.pv=0;HH.pv=0ENDIF
IF(level.pv>=80)&&(level.pv<=95)THENLO.pv=0;LL.pv=0;HI.pv=1;HH.pv=0ENDIF
IF(level.pv>=95)THENLO.pv=0;LL.pv=0;HI.pv=0;HH.pv=1
ENDIF
IF(level2.pv<=20)&&(level2.pv>=5)THENLO2.pv=1;LL2.pv=0;HI2.pv=0;HH2.pv=0ENDIF
IF(level2.pv<=5)THENLO2.pv=0;LL2.pv=1;HI2.pv=0;HH2.pv=0ENDIF
IF(level2.pv>=20)&&(level2.pv<=80)THENLO2.pv=0;LL2.pv=0;HI2.pv=0;HH2.pv=0ENDIF
IF(level2.pv>=80)&&(level2.pv<=95)THENLO2.pv=0;LL2.pv=0;HI2.pv=1;HH2.pv=0ENDIF
IF(level2.pv>=95)THENLO2.pv=0;LL2.pv=0;HI2.pv=0;HH2.pv=1ENDIF
手动程序脚本如下:
//罐1//前关后开IF(auto.pv==1)&&(in_valve.pv==0)&&(out_valve.pv==1)&&(level.pv>1)&&(level2.pv<99)THENlevel.pv=level.pv-5;ENDIFIF(auto.pv==1)&&(in_valve.pv==0)&&(out_valve.pv==1)&&(level.pv>1)&&(level2.pv>99)THENlevel.pv=level.pvENDIF//前开后关IF(level.PV<99)&&(auto.pv==1)&&(in_valve.pv==1)&&(out_valve.pv==0)THENlevel.PV=level.PV+5;ENDIF//全开后水小于100IF(out_valve.pv==1)&&(in_valve.pv==1)&&(level2.pv<99)&&(auto.pv==1)THENlevel.pv=level.pv;ENDIF
//全开,后水满
IF(out_valve.pv==1)&&(in_valve.pv==1)&&(level2.pv>99)&&(level.pv<99)&&(auto.pv==1)THENlevel.pv=level.pv+5;ENDIF//液位变化2//前开后关
if(level2.PV<99)&&(out_valve.PV==1)&&(auto.pv==1)&&(level.pv>=1)&&(out_valve2.pv==0)THENlevel2.pv=level2.pv+5;ENDIF//前关后开
IF(level2.PV>=1)&&(out_valve2.PV==1)&&(auto.pv==1)&&(out_valve.pv==0)THENlevel2.PV=level2.PV-5;ENDIF
//全开前有水
IF(out_valve2.pv==1)&&(out_valve.pv==1)&&(level.PV>1)THENlevel2.pv=level2.pv;ENDIF
//全开前无水
IF(out_valve2.pv==1)&&(out_valve.pv==1)&&(level.PV<1)&&(level2.pv>1)THENlevel2.pv=level2.pv-5;ENDIF//全关
IF(out_valve.PV==0)&&(out_valve2.PV==0)THENlevel2.pv=level2.pvENDIF
所有程序脚本如下:
if($userlevel>0)thenCloseWindowEx("draw2");endifIF(run.PV==1)&&(level.PV<101)&&(updown.PV==0)&&(auto.pv==0)THENlevel.PV=level.PV+5;in_valve.PV=1;out_valve.PV=0ENDIFiflevel.PV>=101thenupdown.pv=1EndifIF(run.PV==1)&&(level.PV>=1)&&(updown.PV==1)&&(auto.pv==0)THENlevel.PV=level.PV-5;in_valve.PV=0;out_valve.PV=1ENDIFiflevel.PV<=0thenupdown.pv=0EndifIFrun.PV==0THENin_valve.PV=0;out_valve.PV=0ENDIFIF(level.pv<=20)&&(level.pv>=5)THENLO.pv=1;LL.pv=0;HI.pv=0;HH.pv=0ENDIF
IF(level.pv<=5)THENLO.pv=0;LL.pv=1;HI.pv=0;HH.pv=0ENDIF
IF(level.pv>=20)&&(level.pv<=80)THENLO.pv=0;LL.pv=0;HI.pv=0;HH.pv=0ENDIFIF(level.pv>=80)&&(level.pv<=95)THENLO.pv=0;LL.pv=0;HI.pv=1;HH.pv=0ENDIF
IF(level.pv>=95)THENLO.pv=0;LL.pv=0;HI.pv=0;HH.pv=1ENDIFIF(run.PV==1)&&(level2.PV<100)&&(out_valve.PV==1)&&(auto.pv==0)THENlevel2.PV=level2.PV+5;out_valve2.PV=0ENDIF
IF(run.PV==1)&&(level2.PV>=1)&&(out_valve.PV==0)&&(auto.pv==0)THENlevel2.PV=level2.PV-5;out_valve2.PV=1ENDIFIFrun.PV==0THENout_valve2.PV=0ENDIFIF(level2.pv<=20)&&(level2.pv>=5)THENLO2.pv=1;LL2.pv=0;HI2.pv=0;HH2.pv=0ENDIF
IF(level2.pv<=5)THENLO2.pv=0;LL2.pv=1;HI2.pv=0;HH2.pv=0ENDIF
IF(level2.pv>=20)&&(level2.pv<=80)THENLO2.pv=0;LL2.pv=0;HI2.pv=0;HH2.pv=0ENDIF
IF(level2.pv>=80)&&(level2.pv<=95)THENLO2.pv=0;LL2.pv=0;HI2.pv=1;HH2.pv=0ENDIF
IF(level2.pv>=95)THENLO2.pv=0;LL2.pv=0;HI2.pv=0;HH2.pv=1ENDIFIF(auto.pv==1)&&(in_valve.pv==0)&&(out_valve.pv==1)&&(level.pv>1)&&(level2.pv<99)THENlevel.pv=level.pv-5;ENDIFIF(auto.pv==1)&&(in_valve.pv==0)&&(out_valve.pv==1)&&(level.pv>1)&&(level2.pv>99)THENlevel.pv=level.pvENDIFIF(level.PV<99)&&(auto.pv==1)&&(in_valve.pv==1)&&(out_valve.pv==0)THENlevel.PV=level.PV+5;ENDIFIF(out_valve.pv==1)&&(in_valve.pv==1)&&(level2.pv<99)&&(auto.pv==1)THENlevel.pv=level.pv;ENDIFIF(out_valve.pv==1)&&(in_valve.pv==1)&&(level2.pv>99)&&(level.pv<99)&&(auto.pv==1)THENlevel.pv=level.pv+5;ENDIFif(level2.PV<99)&&(out_valve.PV==1)&&(auto.pv==1)&&(level.pv>=1)&&(out_valve2.pv==0)THENlevel2.pv=level2.pv+5;ENDIFIF(level2.PV>=1)&&(out_valve2.PV==1)&&(auto.pv==1)&&(out_valve.pv==0)THENlevel2.PV=level2.PV-5;ENDIFIF(out_valve2.pv==1)&&(out_valve.pv==1)&&(level.PV>1)THENlevel2.pv=level2.pv;ENDIFIF(out_valve2.pv==1)&&(out_valve.pv==1)&&(level.PV<1)&&(level2.pv>1)THENlevel2.pv=level2.pv-5;ENDIFIF(out_valve.PV==0)&&(out_valve2.PV==0)THENlevel2.pv=level2.pv
ENDIF
如下图所示。
3.动画制作
3.1填充属性
在工具栏中选择插入图库,选择罐体,如图3.1所示。
图3.1插入罐体
双击罐体后,得到罐向导对话框,如图3.2,图3.3进行设置。
将变量与罐相连。
图3.21罐向导
图3.32罐向导
此时,罐体即具有填充属性。
3.2流动属性
在工具箱中选择“线”工具,画出一条线,如图3.4,右击该线,在对象属性对话框中选择合适的宽度及颜色,为显美观,可将立体复选框勾选。
如图3.5所示。
图3.4画线工具
图3.5线属性
双击画好的管道,在弹出的动画连接窗口中选择下部的流动属性,弹出流动属性对话框,如图3.6。
将其与想要连接的变量连接即可。
图3.6流动属性对话框
3.3开关状态显示
按加入罐体方式加入阀门。
双击加入的阀门,在阀门向导中加入所要连接的变量即可,如图3.7。
图3.7阀门向导
至此,动画制作结束。
4.报警制作
由于在变量中已经加入报警所需变量,因此,只需将这些变量与系统报警连接即可。
在数据库组态中双击要连接的变量,单击报警参数选项卡,将报警开关复选框勾选,并选择合适的参数即可,如图4.1所示。
图4.1报警参数
5.曲线制作
5.1实时曲线的制作
在工具箱中,选择常用组件选项卡,单击趋势曲线则可以在界面中加入一实时曲线,双击该曲线,弹出属性对话框,如图5.1。
在对话框中输入曲线名称,并将其与变量相连后,单击增加按钮即可。
图5.1曲线属性
5.2历史曲线的制作
制作历史曲线,需先设置变量历史参数。
在数据库组态中双击想要显示历史趋势的变量,在历史参数选项卡中,勾选PV,历史保存选数据变化保存,单击增加,即可。
如图5.2所示
图5.2历史参数设置
设置成功后,变量后会有如图5.3显示
在界面中加入趋势曲线后,双击,弹出属性对话框,在曲线类型中选择历史趋势,输入名称及所要连接变量,单击增加按钮。
在通用选项卡中,将“双击时显示设置框”复选框勾选,如图5.4及5.5所示。
图5.4曲线属性
图5.5双击时显示设置框
至此,趋势曲线制作完毕。
6.画面制作
6.1登陆界面
登陆界面如图6.1所示。
图6.1登陆界面
登陆按钮脚本为:
Login();
单击后,弹出登陆对话框,可以进行权限设置。
退出按钮脚本为:
Display("tuichu1")
6.2主界面
主界面如图6.2所示
图6.2主界面
6.3报警界面
报警界面如图6.3所示
图6.3报警界面
6.4趋势界面
趋势界面如图6.4所示。
图6.4趋势界面
6.5退出界面
退出界面如图6.5所示
图6.5退出界面
至此,工程设计完毕。
7.心得体会
通过本次试验过程,加深了对组态软件的应用,加深了对课程的理解与应用,将理论知识付诸于实践。
此次综合评测,要求只是液位的自动变化,但我在将液位自动变化调试完毕后,又加入了自动和手动的控制,在手动中,可以按意愿控制阀门的开关,借此控制两个液罐中的液位变化。
在将该程序付诸实践中发现了很多问题,比如三个阀门的逻辑关系与液位的关系,如何使液位的变化趋于合理。
在经过反复的调试与更改后,终于达到了目的。
同时,在调试的过程中,向老师学会了一些调试的方法,为我以后的工程实践过程积累了宝贵的经验。
同时,这些调试方法也不仅局限于在组态软件中使用,还可以再其他的各种编程过程中进行使用。
这种思维和方式是可以在各个领域中融会贯通的。
附录
工作状态截图
自动运行状态
报警界面
手动运行状态
趋势曲线界面
登陆界面
退出界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 水位 控制系统 演示 工程