我在新浪博客发表过这一篇学习笔记,不过新浪博客审查机制一直把其作为私密状态,可能出发了某些敏感机制吧。我在这里再记录一遍,以免丢失。
我们现场有一个变频器室,周末发生了变频器空调坏掉,温度高,变频器停机造成生产中断的情况。由于变频器室无人值守,领导希望把变频器室的温度接入控制系统,后台计算机显示温度,有报警功能,还要弹窗提醒。我经过在办公室计算机上模拟测试,实现了上面的要求。我把过程简单记录下来。
上面的需求还需要进一步明确: 1. 温度高就弹窗,无论当前画面是哪一个。 2. 发生弹窗后,中控工通知设备维护人员,在处理完之前,弹窗不能影响中控工其它操作。 3. 如果中控工关掉弹窗,温度还是异常,继续弹窗。 4. 弹窗只有一个,不能满屏不停的弹窗。 根据上面的需求,在citect项目程序中新建变量T100,内部变量,实数,模拟现场温度。新建一个数字量内部变量WENDU_ALARM_DISPLAYED,表示是否已经弹窗。 在主画面上放一个数字显示控件,关联T100。放两个按钮,分别用于T100+20.0和T100-20.0。 新建一个小画面,名字交WENDU,作为弹窗,长宽数字都小一点,”退出画面时“事件写下面的脚本 WENDU_ALARM_DISPLAYED=0 写cicode脚本 FUNCTION WENDU_ALARM() IF T100>50.0 THEN IF WENDU_ALARM_DISPLAYED=0 THEN WENDU_ALARM_DISPLAYED=1 pagepopup("WENDU") END END END 定义一个事件WENDU_ALARM,周期00:00:10,动作为WENDU_ALARM() 当前画面切换到其他画面的按钮鼠标点击事件写下面的脚本 pagedisplay("page2") WENDU_ALARM_DISPLAYED=0 WENDU_ALARM() 其它画面切换时,都是类似的操作 保存、编译,做一下计算机向导,启用事件。 运行项目,使用按钮让T100超过50.0,每隔10秒会执行事件,如果没有弹窗就弹窗一次,弹窗期间不影响操作。如果关掉弹窗,每隔10秒还是会执行事件进行判断。 画面切换不影响弹窗。 到了这里,95%工作已经完成。考虑到容错性,如果运行着的这个HMI程序意外终止,下一次启动时,很可能WENDU_ALARM_DISPLAYED还是1,如果报警条件具备,就不再弹窗了,这是我们不希望看到的情况。 我是这样解决的。 新建一个画面INI,外形尺寸尽可能小,画面的打开事件中,先使用pagedisplay()跳转到其他工艺画面,紧接着写语句 WENDU_ALARM_DISPLAYED=0 保存编译,计算机向导,起始画面设定为INI,这样运行HMI项目程序的时候,打开INI画面,一闪而过到正式的工艺画面,由于INI外形尺寸很小,也不会察觉出来。 标签:R2,T100,Citect,DISPLAYED,画面,2018,WENDU,ALARM,弹窗 From: https://www.cnblogs.com/fishingsriver/p/17462296.html