一种基于紫金桥软件中报警的特殊使用方法—对报警进行持续提示

安全设备/系统

160人已加入

描述

紫金桥组态软件系统自带的报警功能的处理逻辑是一次达到报警条件后,如果现场测量值一直满足当前的报警条件,那么只会提示最开始的第一条报警记录。但是如果需要在发生报警后,当前现场测量值继续满足报警条件还要给出报警提示时,这样就需要进行二次开发,下面的示例就给出了一个针对这种需求的解决方法。

用户具体需求是:当现场测量值满足条件(这里假定是大于3.9或者小于3.5)触发报警之后,立刻报警。下一条数据也满足条件时也要触发报警(不能不报)。具体是,如果收到的数据一直不在3.5~3.9的范围内且值不变化则60秒报一次警,如果收到的数据一直不在3.5~3.9的范围内,且值是变化的同步产生报警。下面以偏差报警为例进行说明。

下图是功能实现的流程图:

软件系统

具体实现:

一、画面图元组态

1、在工程目录下新建了一个Access数据库并新建了一个数据表ALM1如下图:

软件系统

2、在点组态里新建模拟点TEST、TEST1、TEST2和报表关系数据源点RP如下图:

软件系统

3、新建了中间变量RECY。(下文会交代它的作用)

4、组态报表关系源点连接字符串,具体就是点击图中连接字符串文本框后面的按钮进行配置如下图:

软件系统

最终生成的字符串为:

“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=”+GetAppPath()+“\Sql\AlmDB.mdb;User Id=admin;Password=;”

5、在紫金桥开发环境里新建一个窗口Draw1、一个自由报表ALM、一个文本对象、一个按钮如下图:

软件系统

6、关联文本对象的动画连接——TEST.PV的模拟输入输出,用于手动改变TEST.PV的值,模拟现场情况。

7、关联按钮的动画连接鼠标脚本:#ALM.SaveExcel(“”,1,1);后边要通过查看保存的Excel文件来验证系统是否可以实现预期功能。

二、系统控制逻辑组态

1、窗口脚本周期脚本组态,这部分脚本主要是要实现系统流程图中的从关系数据表读入数据并显示在报表控件上。如下图:

软件系统

2、在自由报表ALM/自由报表设置/关系库连接设置里,组态了报表关系库源点,如下图:

软件系统

3、在应答后触发的脚本/SQL正确返回脚本中,实现判断当前TEST.PV是否满足偏差报警条件,如果满足就把变量RECY置1否则置0,这里RECY是一个中间变量起到触发向关系库插入报警记录的开关作用。脚本如下图:

软件系统

4、画面/脚本/条件脚本组态,这里我们新建了一个条件脚本InsertRecord如下图,并进行脚本控制逻辑组态如下图:

软件系统

通过这个条件脚本实现了向关系库插入报警记录的逻辑。

三、运行工程,测试系统实际效果

1、手动改变TEST.PV=9.7满足偏差报警条件大于3.9或者小于3.5保持一段时间如下图:

软件系统

2、手动改变TEST.PV=3.6不满足偏差报警条件(大于3.9或者小于3.5)

3、手动改变TEST.PV=1满足偏差报警条件(大于3.9或者小于3.5)保持一段时间

4、点击“导出”按钮保存自由报表的内容为excel格式文件。

5、打开Excel表格如下图:

软件系统

6、分析表格记录

通过对表格的分析我们可以得出清晰的结论:

(1)如果当前现场测量值满足报警条件且和前一个报警值不一致则也会产生报警,即插入关系数据表并在自由报表上显示。如表格中的第一条记录TEST.PV=0和第二条记录TEST.PV=9.7。

(2)如果当前现场测量值满足报警条件并且不变则系统会向关系数据表中60秒插一条记录并显示在自由报表控件上例如当TEST.PV=9.7时。即符合用户关于“如果收到的数据一直不在3.5~3.9的范围内则60秒报一次警”的需求。

(3)如果当前报警值不符合报警条件就不会产生报警例如:令TEST.PV=3.6在导出的表格里没有记录。即系统只会记录报警记录。

软件系统

(4)当现场测量值由正常值变成符合报警条件的值时,立刻就会产生一条报警例如:TEST.PV=3.6变成TEST.PV=1就会产生报警。Excel表格中第14条记录就当

TEST.PV=3.6变成TEST.PV=1时产生的报警。

综上,经测试系统达到了用户的需求并能正确稳定运行。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分