力控-给排水监控系统设计与实现
实验内容
—实验内容参考至建筑组态实验指导书—
工程描述:
统采用高位水箱给水方式,包括一个高位水箱,两个给水泵,水箱有两个阀门,分别对生活区和游泳池供水。
功能要求:
1、实现水箱水位变化、阀门开关示意、水泵启停示意的动画连接;
2、水箱要实现低水位、启泵水位、停泵水位、溢流水位的报警,低水位与溢流水位采用紧急报警,启泵水位和停泵水位采用低级报警,当出现报警时要求弹出报警窗口,待确认后可以关闭;
3、水泵要求可自动控制水箱水位,低于启泵水位时要开启水泵,高于停泵水位时要关闭水泵,水泵要求轮流交替使用,当水箱水位低于低水位时,两台水泵同时启动,每台水泵的供水量模拟为每秒3%水箱水量;
4、阀门采用手动控制,生活区的水量消耗模拟为每秒2%水箱水量,游泳池的水量消耗模拟为每秒1%水箱水量;
5、通过点击“演示”按钮启动动画演示,点击“停止”按钮关闭动画演示;
6、工程进入运行状态时要求直接进入给水监控画面。
实验步骤
1.绘制窗口
给排水监控系统
组件的放置位置参考 实验1的文章,要找对
管道要分开画,流动时才好看
//水管分三个画,这样在流动时就很漂亮了,可分段的流,演示如下图
//因为一个管道必须要有三节或三节以上才能体现出流动性,所以画的管道要画三节或三节以上。
//可以利用网格工具画直管道(网格在力控软件的工具栏-查看-网格
报警窗口
组件的放置位置参考 实验1的文章,要找对
2. 定义I/O设备
- 双击“IO设备组态”
- “IO设备”-“力控”-“仿真驱动”-“Simulator(仿真)”,右击,新建名为“PLC”、设备地址为1的I/O设备。
3.建立实时数据库组态
- 在数据库定义模拟量I/O点level,数字量I/O点pump1、pump2、valve1、valve2、run
双击“数据库组态”
右击“数据库”,添加点,模拟量I/O点level,数字量I/O点pump1、pump2、valve1、valve2、run
4.建立数据连接
(1)、将模拟量I/O点level的PV参数连接到I/O设备“PLC”的模拟量-常量寄存器输入区的0通道;
(2)、将数字量I/O点pump1的PV参数连接到I/O设备“PLC”的数字量-常量寄存器输入区的0通道;
(3)、将数字量I/O点pump2的PV参数连接到I/O设备“PLC”的数字量-常量寄存器-输入区的1通道;
(4)、将数字量I/O点valve1的PV参数连接到I/O设备“PLC”的数字量-常量寄存器-输入区的2通道;
(5)、将数字量I/O点valve3的PV参数连接到I/O设备“PLC”的数字量-常量寄存器-输入区的3通道;
(6)、将数字量I/O点run的PV参数连接到I/O设备“PLC”的数字量-状态控制-输出区的0通道。
5.设置实时数据库报警参数和历史参数的组态
- 对实时数据库点level组态报警参数,可以设置低水位限报警限值为10,报警优先级为高级;设置溢流位报警限值为100,报警优先级为高级。
6.建立动画连接
给排水监控系统窗口
- 对水泵1组态:组态“颜色变化”动画连接,表达式pump1.PV
- 对水泵2组态:组态“颜色变化”动画连接,表达式pump2.PV
双击水泵,选择表达式旁的按钮“…”-变量选择pump1.PV,后更改打开、关闭时的颜色
//如果数据库变量直接放在数据库,那变量的名称就pump1.PV;
//如果数据库变量放在数据库的区域0里,那变量的名称就区域0\pump1.PV;
-
对水泵1的管道1的流动属性”动画连接,pump1.PV
-
对水泵2的管道2的流动属性”动画连接,pump2.PV
-
对水泵1、水泵2的管道3的流动属性”动画连接,pump1.PV||pump2.PV
-
对阀门1阀门组态:组态“颜色变化”动画连接,表达式valve1.PV
-
对阀门2阀门组态:组态“颜色变化”动画连接,表达式valve2.PV
-
对阀门1的管道1的流动属性”动画连接,valve1.PV
-
对阀门2的管道2的流动属性”动画连接,valve2.PV
-
对阀门1、阀门2的管道3的流动属性”动画连接,valve1.PV||valve2.PV
-
对“演示”按钮组态:“触敏动作/左键动作/按下鼠标”动画连接,这时脚本为:run.pv=1;
-
对“停止”按钮组态:“触敏动作/左键动作/按下鼠标”动画连接,这时脚本为:run.pv=0;
-
对显示液位高度的文本(“####.##”)组态:“数值输出/模拟”动画连接,让其显示level.pv的值。
报警窗口
-
该窗口中除“确认所有报警”按钮而外的各按钮的动画连接可以参考前面的内容,而“确认所有报警”按钮的“触敏动作/左键动作/按下鼠标”动画连接中的脚本为:
AlmAckAll(0,0);
CloseWindowEx(“报警窗口”);
表示确认本地实时数据库中0区域中的当前所有报警,并关闭窗口。 -
双击“报警记录”–“记录格式”页中添加“说明”长度为12,其余参数可以采用默认值。
7.脚本编写
- 编写“应用程序动作脚本”的“程序运行周期执行”动作脚本
脚本内容如下
IF run.PV==1 THEN
SWITCH (level.PV)
CASE 0 TO 10:
pump1.PV=1;
pump2.PV=1;
level.PV=level.PV+3;
CASE 11 TO 20:
pump1.PV=1;
pump2.PV=0;
level.PV=level.PV+1;
CASE 21 TO 90:
pump1.PV=0;
pump2.PV=1;
level.PV=level.PV+1;
DEFAULT:
pump1.PV=0;
pump2.PV=0;
ENDSWITCH
IF valve1.PV==1 THEN
level.PV=level.PV-2;
ENDIF
IF valve2.PV==1 THEN
level.PV=level.PV-1;
ENDIF
ENDIF
IF level.ALMSTAT==1 THEN
display("报警窗口");
ENDIF
IF level.ALMSTAT==1 THEN
display(“报警窗口”);
ENDIF
这段逻辑语句表示,在发生警报时,自动弹出报警窗口
实验心得
1.通过实验二使我对数据库点的属性及组件的属性有了更深的了解,也能很好的运用在开发中。
2.对窗口的属性及应用也有很大的认识。
3.窗口不能同时显示两个窗口,请保证窗口属性如下 1.覆盖窗口; 2.窗口大小位置适中,防止遮挡住窗口; 3.把打开其他窗口时自动关闭的勾去掉。
4.管道没有显示出流动的效果,原因是:管道没有三节或三节以上。
因为很多内容在 实验1 这篇文章已经讲解过,有不明白的可以去这找找
以上为个人学习经验,欢迎大家来交流