自动化应用软件实训
目: 水塔供水系统
班 级:
姓 名:
学 号:
指导教师:
设计时间:
评语:
成绩
一、题目设计
本文所设计的水塔供水系统主要由七部分组成,分别是登录界面、控制主画面、实时曲线、历史曲线、实时报
、历史报表以及报警窗口。
系统实现了水塔液位的自动调节。当水塔储水箱液位低于25dm时,采用单位时间供水量为5dm的深井泵1和单位时间供水量为10dm的深井泵2同时向水塔储水箱供水。当水塔液位达到60dm时,关闭深井泵1,深井泵2单独供水;当水塔液位达到80dm时,用深井泵1单独供水,当水塔液位高于96dm时,向水塔停止供水。
当水塔储水箱中有水时,通过供水阀向两个站点水箱分别供水,一旦站点水箱液位达到85dm时,停止供水,而当其液位低于一定值时,继续供水,这样保证了用户用水的水压不会过高或者过低。
“组态王”是完全基于网络的概念,是一个完全意义上的工业级软件平台,现已广泛应用于化工、电力、国属粮库、邮电通讯、环保等行业。它也适合于污水处理行业的设计工作。组态王开发监控系统软件是新型的工业自动控制系统正以
的工业计算机软、硬件平台构成的集成系统取代传统的封闭式系统,它具有适应性强、开放性好、易于扩展、经济、开发周期短等优点。可以把这样的系统划分为控制层、监控层、管理层三个层次结构。监控层对下连接控制层,对上连接管理层,它不但实现对现场的实时监测与控制,且在自动控制系统中完成上传下达、组态开发的重要作用。
二、界面设计
根据软件监控的需要,要对水塔储水箱以及站点水箱的液位实行监控,但由于是模拟设计,没有真正的对象,于是构造一个虚拟对象,即设计一个基于组态王的水塔液位的模拟控制,通过对模拟水箱液位的控制来模拟现场真正的运行情况,一边进行监控。
1.内存变量的定义
首先打开组态王软件的工程浏览器,在数据词典中双击新建,会弹出如图1的对话框,键入变量名,设置变量类型。
图1 变量的定义
如此对设计过程中需要的变量进行逐一定义,直至完成所有变量的定义为止,图2显示了所有定义过的变量。
图2 已定义的所有变量
2.水塔液位控制主界面的设计
具体水塔液位控制包括画面间切换按和返回钮的设计、供水管道的设计等几方面内容,总体运行效果如图3示。
图3 系统控制主画面
3.实时曲线与历史曲线
“组态王”对趋势分析提供了强有力的支持和简单的控制方法。趋势曲线有实时趋势曲线和历史趋势曲线两种。曲线外形类似于坐标纸,X 轴代表时间,Y 轴代表变量值。对于实时趋势曲线最多可显示四条曲线;而历史趋势曲线最多可显示十六条曲线,而一个画面中可定义数量不限的趋势曲线(实时趋势曲线或历史趋势曲线)。画面程序运行时,实时趋势曲线可以自动卷动,以快速反应变量随时间的变化;历史趋势曲线不能自动卷动,它一般与功能按钮一起工作,共同完成历史数据的查看工作。
实时曲线的主要功能就是以曲线的形式将实时动态变化的数据很直观的反映出来,便于观测和监控。历史曲线则是将以前某一时间段内的数据变化情况静态的显示出来。
实时趋势曲线的创建过程:新建一画面,名称为实时趋势曲线,选择工具中的
工具,在画面中绘制一实时曲线窗口,在生成实时趋势曲线对象后,双击此对象,弹出“曲线定义”对话框,单击对话框上端两个按钮在“曲线定义”和“标识定义”之间切换。如图4所示。
图4 实时趋势曲线
历史趋势曲线的创建为:新建一画面,命名为:历史趋势曲线,选择工具中的
工具,在画面中插入通用控件窗口中的“历史趋势曲线”控件,如图5所示。
图5 历史趋势曲线
4.报表打印
实时数据报表的打印过程为:在“实时数据报表画面”中添加一按钮,按钮文本为:实时数据报表自动打印。在按钮中弹起事件中输入以下命令语言,如图6所示。
图6 报表打印命令语言
5.报警窗口设计
新建一画面,命名为:报警窗口,选择工具箱中的
工具,在画面中绘制一报警窗口,如图7所示。
图7 报警窗口
6.登录界面设计
新建一画面,命名为:登录界面,绘制两按钮,分别为进入系统和退出系统,如图8所示。
图8 登录界面
三、命令语言设计
1.按钮的设计
画面连接按钮的命令语言为:ShowPicture("PictureName"),画面退出按钮的命令语言为:Exit( 0 )。
2.管道流动条件的设计
主控画面中管道的流动条件部分命令语言为:
\\本站点\阀门1==1&&\\本站点\供水泵1==1;
\\本站点\阀门1==1;
\\本站点\深井泵2==1
3.历史报表命令语言
生成本系统历史报表需要如下命令语言:
long row;
row=\\本站点\$秒+4;
ReportSetCellString("Report6", 2, 2,\\本站点\$日期 );
ReportSetCellString("Report6", row, 1,\\本站点\$时间 );
ReportSetCellValue("Report6", row, 2,\\本站点\蓄水池液位 );
ReportSetCellValue("Report6", row, 3,\\本站点\水压);
ReportSetCellValue("Report6", row, 4,\\本站点\站点水箱1);
ReportSetCellValue("Report6", row, 5,\\本站点\站点水箱2);
if(row==3)
ReportSetCellString2("Report6", 4, 1,63,4,"" );
4.系统运行命令语言
系统运行的所有程序如下:
if(\\本站点\深井泵1号==1)
{\\本站点\蓄水池液位=\\本站点\蓄水池液位+9;
\\本站点\流动条件=-10;}
if(\\本站点\深井泵1号==0)
{\\本站点\流动条件=-255;}
if(\\本站点\深井泵2号==1)
{\\本站点\蓄水池液位=\\本站点\蓄水池液位+8;}
if(\\本站点\深井泵2号==0)
{\\本站点\流动条件=-255;}
if(\\本站点\供水阀门3==1)
{\\本站点\蓄水池液位=\\本站点\蓄水池液位-4;}
if(\\本站点\供水阀门4==1)
{\\本站点\蓄水池液位=\\本站点\蓄水池液位-4;}
if(\\本站点\自动运行==1)
{if(\\本站点\蓄水池液位>=90)
{\\本站点\深井泵1号=0;\\本站点\深井泵2号=0;}
if(\\本站点\蓄水池液位<=35 )
{\\本站点\深井泵1号=1;\\本站点\深井泵2号=1;}
if(\\本站点\蓄水池液位<=75 && \\本站点\蓄水池液位>35)
{\\本站点\深井泵1号=1;\\本站点\深井泵2号=0;}
if(\\本站点\站点水箱1<=35)
{\\本站点\供水阀门1=1;\\本站点\供水泵1号=1;\\本站点\供水阀门3=1;}
if(\\本站点\站点水箱2<=35)
{\\本站点\供水阀门2=1;\\本站点\供水泵2号=1;\\本站点\供水阀门4=1;}
if(\\本站点\站点水箱1>=75)
{\\本站点\供水阀门3=0;}
if(\\本站点\站点水箱2>=75)
{\\本站点\供水阀门4=0;}
if(\\本站点\站点水箱1>=75 &&\\本站点\站点水箱2>=75)
{\\本站点\供水阀门1=0;\\本站点\供水泵1号=0;\\本站点\供水阀门3=0;\\本站点\供水阀门2=0;\\本站点\供水泵2号=0;\\本站点\供水阀门4=0;}
if(\\本站点\供水阀门3==1)
{\\本站点\站点水箱1=\\本站点\站点水箱1+4;}
if(\\本站点\供水阀门4==1)
{\\本站点\站点水箱2=\\本站点\站点水箱1+4;}
if(\\本站点\用水阀1==1)
{\\本站点\站点水箱1=\\本站点\站点水箱1-3;}
if(\\本站点\用水阀2==1)
{\\本站点\站点水箱2=\\本站点\站点水箱2-3;}}
if(\\本站点\用水阀1==1)
{\\本站点\站点水箱1=\\本站点\站点水箱1-3;}
if(\\本站点\用水阀2==1)
{\\本站点\站点水箱2=\\本站点\站点水箱2-3;}
总结
在这次的组态王软件的实训中,通过自己不断的摸索,感觉到收获很多。此次课程设计,我们按照设计的要求首先对组态王的指导教材进行了仔细的阅读和研究,力争每个步骤都不出现不应有的错误,然后才进行画图的设计。因为我们懂得做任何程序都要认真细心,任何一个小小的失误都会造成整个设计的失败,更懂得了没有足够的耐力和信心就很难坚持对课程设计每一步的顺利进行。当遇到错误时,我们要仔细寻找错误的根源,从根本上明白自己犯错误的原因,从而真正的解决问题,真正明白自己的不足之处。对编程环节中出现的错误解决的同时,加深了我们对程序的深层理解,清楚程序中每一步的功能,在程序的运行中是十分重要的,一个好的结构在运行中能够充分的发挥程序的功能。结构设计的合理性决定了这个程序的价值。