搜索
您的当前位置:首页正文

水塔供水系统

2020-03-09 来源:易榕旅网


上海应用技术学院课程设计报告

课程名称 组态王课程设计 设计题目 水塔供水系统 姓 名 学 号 班 级

学 院 计算机科学与信息工程 专 业 计算机科学与技术 日 期 2014.03.14-2014.4 .23 指导教师 方华

前言

水塔供水系统

组态王Kingview是一种通用的工业监控软件,它融过程控制设计、现场操作及工厂资源管理于一体,将一个企业内部的各种生产系统和应用以及信息交流汇集在一起,实现了最优化管理。它适用于从单一设备的生产运营管理和故障诊断,到网络结构分布式大型集中监控管理系统的开发。在生活及生产供水中, 通常是通过建造水塔以维持水压。但是, 建造水塔费用高, 还会造成水的二次污染。因此, 通常采用的方法是: 当用水量增大时, 增加水泵数量或提高水泵的运转速度以保持供水管网中的水压不变; 用水量减小时, 做出相反的调节。这就是恒压供水的基本思路。本文介绍了基于组态王的水塔供水系统的设计,在设计过程中通过模块化编程,完成了水塔的自动供水和水塔的液位保持,基本达到实际工程要求。

1.设计目的

一目的及要求

1、目的

本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《组态王》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1) 巩固和加深学生对组态王的基本知识的理解和掌握; 2) 掌握组态王编程和程序调试的基本技能; 3) 利用组态王进行基本的软件设计; 4) 掌握书写程序设计说明文档的能力 5) 提高运用组态王解决实际问题的能力。

2、要求

1) 分析课程设计题目的要求; 2) 写出详细设计说明;

3) 编写程序代码,调试程序使其能正确运行;

4) 设计完成的软件要便于操作和使用,有整齐、美观的使用界面; 5) 设计完成后提交课程设计报告和源代码文件的电子文档。

二、课程设计内容

题目:水塔供水系统

设计要求具体说明

根据水塔的不同的需水量,分别启动三个功率大小不同的泵,来控制水塔的正常供水。水塔的进水由一个总的进水闸门来控制值,根据不同的阀门值来控制进水量。由于三个泵的功率不同,所以三个泵出水处的阀门开度范围不同,由泵的不同的功率而定。最后在出水口的地方显示总的经由水塔的供水量。

1.功能描述

当水塔内的水小于10T的时候,关闭所有的泵,停止供水,同时打开进水阀门,阀门的开度开到70,快速供水。

当水塔内的水小于30T并且大于10T时,泵1开启,开始小量供水。 当水塔内的水小于80T并且大于30T时,泵2开启,开始中量供水。 当水塔内的水小于100T并且大于80T时,泵3开启,开始大量供水。

当水塔内的水为100T时,进水水闸关闭,泵3开启,大量供水减少水塔水量。

2.总体设计 3.1功能模块设计

1. 主界面:

显示正在运行的仿真界面。

2. 实时曲线:

根据水塔的容量,各泵的流速和总出水量的实时数据画出曲线。 3. 历史曲线:

根据水塔的容量,各泵的流速和总出水量的历史数据画出曲线。

4. 实时数据:

记录水塔的容量,各泵的流速和总出水量的实时数据。

5. 历史数据 :

记录水塔的容量,各泵的流速和总出水量的历史数据。

6.报警:

当水塔的水位到达警戒水位(大于90T或小于10T时)时提出警报。

7.退出:

退出所有界面。

3.3函数功能描述

4.程序实现

源码分析

应用程序命令语言

if(\\\\本站点\\水塔_LYC!=100)

\\\\本站点\\水塔_LYC=\\\\本站点\\阀门_LYC*0.1+\\\\本站点\\水塔_LYC; else

\\\\本站点\\阀门_LYC=0;

if(\\\\本站点\\放水阀门_LYC==0)

{

\\\\本站点\\泵1_LYC=0; \\\\本站点\\泵2_LYC=0; \\\\本站点\\泵3_LYC=0; }

\\\\本站点\\水塔压强_LYC=\\\\本站点\\水塔_LYC/2;

if(\\\\本站点\\水塔_LYC<10) \\\\本站点\\阀门_LYC=70;

if(\\\\本站点\\水塔_LYC==100) \\\\本站点\\阀门_LYC=0;

if(\\\\本站点\\水塔_LYC>80) {

\\\\本站点\\放水阀门_LYC=1; \\\\本站点\\泵3_LYC=1; \\\\本站点\\泵1_LYC=0; \\\\本站点\\泵2_LYC=0; }

if(\\\\本站点\\水塔_LYC<80&&\\\\本站点\\水塔_LYC>30) {

\\\\本站点\\放水阀门_LYC=1; \\\\本站点\\泵2_LYC=1; \\\\本站点\\泵1_LYC=0; \\\\本站点\\泵3_LYC=0; }

if(\\\\本站点\\水塔_LYC<30&&\\\\本站点\\水塔_LYC>10) {

\\\\本站点\\放水阀门_LYC=1; \\\\本站点\\泵1_LYC=1; \\\\本站点\\泵2_LYC=0; \\\\本站点\\泵3_LYC=0; }

if(\\\\本站点\\水塔_LYC<10) {

\\\\本站点\\放水阀门_LYC=0; }

\\\\本站点\\总流量显示_LYC=\\\\本站点\\流量_LYC/1000;

数据改变命令语言 long row;

row=\\\\本站点\\$秒+4;

ReportSetCellString(\"Report1\本站点\\$日期); ReportSetCellString(\"Report1\本站点\\$时间); ReportSetCellValue(\"Report1\本站点\\水塔_LYC); ReportSetCellValue(\"Report1\本站点\\流速1_LYC); ReportSetCellValue(\"Report1\本站点\\流速2_LYC); ReportSetCellValue(\"Report1\本站点\\流速3_LYC); ReportSetCellValue(\"Report1\本站点\\流量_LYC);

事件命令语言

当\\\\本站点\\泵1_LYC==1

if(\\\\本站点\\水塔_LYC>=\\\\本站点\\流速1_LYC&&\\\\本站点\\水塔_LYC!=0) {

\\\\本站点\\流速1_LYC=\\\\本站点\\阀门1_LYC*0.1;

\\\\本站点\\流量_LYC=\\\\本站点\\流量_LYC+\\\\本站点\\流速1_LYC; \\\\本站点\\水塔_LYC=\\\\本站点\\水塔_LYC-\\\\本站点\\流速1_LYC; }

else if(\\\\本站点\\水塔_LYC<\\\\本站点\\流速1_LYC&&\\\\本站点\\水塔_LYC!=0) {

\\\\本站点\\流速1_LYC=\\\\本站点\\水塔_LYC;

\\\\本站点\\流量_LYC=\\\\本站点\\流量_LYC+\\\\本站点\\流速1_LYC; \\\\本站点\\水塔_LYC=\\\\本站点\\水塔_LYC-\\\\本站点\\流速1_LYC; } else

\\\\本站点\\泵1_LYC=0;

当\\\\本站点\\泵2_LYC==1

if(\\\\本站点\\水塔_LYC>=\\\\本站点\\流速2_LYC&&\\\\本站点\\水塔_LYC!=0) {

\\\\本站点\\流速2_LYC=\\\\本站点\\阀门2_LYC*0.1;

\\\\本站点\\流量_LYC=\\\\本站点\\流量_LYC+\\\\本站点\\流速2_LYC; \\\\本站点\\水塔_LYC=\\\\本站点\\水塔_LYC-\\\\本站点\\流速2_LYC; }

else if(\\\\本站点\\水塔_LYC<\\\\本站点\\流速2_LYC&&\\\\本站点\\水塔_LYC!=0) {

\\\\本站点\\流速2_LYC=\\\\本站点\\水塔_LYC;

\\\\本站点\\流量_LYC=\\\\本站点\\流量_LYC+\\\\本站点\\流速2_LYC; \\\\本站点\\水塔_LYC=\\\\本站点\\水塔_LYC-\\\\本站点\\流速2_LYC; } else

\\\\本站点\\泵2_LYC=0;

当\\\\本站点\\泵3_LYC==1

if(\\\\本站点\\水塔_LYC>=\\\\本站点\\流速3_LYC&&\\\\本站点\\水塔_LYC!=0) {

\\\\本站点\\流速3_LYC=\\\\本站点\\阀门3_LYC*0.1;

\\\\本站点\\流量_LYC=\\\\本站点\\流量_LYC+\\\\本站点\\流速3_LYC; \\\\本站点\\水塔_LYC=\\\\本站点\\水塔_LYC-\\\\本站点\\流速3_LYC; }

else if(\\\\本站点\\水塔_LYC<\\\\本站点\\流速3_LYC&&\\\\本站点\\水塔_LYC!=0) {

\\\\本站点\\流速3_LYC=\\\\本站点\\水塔_LYC;

\\\\本站点\\流量_LYC=\\\\本站点\\流量_LYC+\\\\本站点\\流速3_LYC; \\\\本站点\\水塔_LYC=\\\\本站点\\水塔_LYC-\\\\本站点\\流速3_LYC; } else

\\\\本站点\\泵3_LYC=0;

当\\\\本站点\\灌_LYC==100 \\\\本站点\\阀门_LYC=0;

运行结果

1. 下面是程序运行控制按钮:

2. 下面是显示运行的主界面:

3. 下面是实时曲线界面

4. 下面是历史曲线界面

5. 下面是实时数据界面

6. 下面是历史数据界面

7. 下面是报警界面

5.课程设计总结

我们在老师的耐心授课下,初步接触到了这个工控软件——组态王。在老师日常的授课中,我们学会了组态王的基本方法,同时,老师也为我们指明了学好编程的路:深理解,勤动手。

这是我第一次做课程设计,我在众多个可选任务中选择了水塔供水系统,这是对我个人能力的一次测验和挑战。在老师的指导下,我突破了重重困难,积累了宝贵经验。

我以任务要求为基本指南,对程序细化功能模块后,开始逐个进行功能函数编写。在编写的过程中,有很多次不同的尝试,也有很多次返工,但挫败感总是被调试成功后的喜悦和成就感所淹没,在理解了更加深刻的编程原理同时,也是对自信心的增强。

我很感谢老师和同学对我的帮助,在我钻进问题的死胡同时他们能及时地提醒我并耐心无私地把他们的想法告诉我,不断地帮助我纠正错误和完善程序,同时培养了团队协作精神。

在编程过程中总会遇到这样那样的一些小问题,小错误而自己却发现不了,就如:我的程序运行写入文件时,系统中的一些变量没有随预期的想法变动,结果找错着了很久,最后在老师的帮助下最终发现在控制语言命令时重复编写了。哎,太马虎了,竟犯这样的低级错误!!!以后要细心了!!!

对于完成的程序,我个人觉得仍有几个部分可以完善。一是记录界面尚不够美观和人性话,另一是该软件关闭后再开没有统计文件个数的功能。软件缺少这两样是不完美的,同时也说明了我们在编程的道路上还有很长的路要走,还有很多的东西要学。

6.参考文献

工控组态及软件应用 熊伟 中国电力出版社 32.00

元出师表

两汉:诸葛亮

先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。

宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。

侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。

将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。

亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也

臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。

先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。

愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。

今当远离,临表涕零,不知所言。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top