• 技术与支持
  • 技术资料
    您现在的位置:首页 >> 技术与支持 >> 技术资料

    紫金桥组态软件增强型报警组件与趋势分析组件的综合应用

    2016-7-5 11:24:13 来源:原创 点击:
    摘要:为了解决项目中,增强报警组件显示报警信息时,可以同时更加方便的关注一下报警点的在报警时一段时间内的数据变化走势的问题,本文提供了较为简单的方法来达到该目的。
    一、引言
    在项目中,经常会用到增强报警组件来显示报警信息,但是往往发生报警后或者在查看历时报警时,还想关注一下报警点的在报警时一段时间内的数据变化走势,通常的做法为人为的记录该报警点的位号,并到趋势画面中进行查询,这样操作起来比较麻烦,现在可以通过较为简单的方法来达到该目的。
    二、功能实现
    首先,创建两个窗口,一个命名为“报警显示”,在窗口属性中将“打开其他窗口时自动关闭”的勾去掉,在窗口中添加“增强型报警组件”,命名为_Alarm;另一个串口命名为“趋势分析”,在窗口属性中将窗口类型设置为“弹出式窗口”,在窗口中添加“趋势分析”组件,命名为_Curview,定义一个整形的窗口变量nFlag。其次,创建一个间接变量“SendMessage”做数组用,用来在两个窗口之间传递报警点的信息。
    1.报警显示窗口设置
    在“报警显示”窗口中,双击“增强型报警组件”,在弹出的“报警属性”对话框中的“报警设置”标题页点击“设置报表”按钮,弹出“自由报表设置”对话框。



    在“单元格触发动作设置”中选择“左键双击”动作,输入如下脚本:
    SendMessage.Clear();
    SendMessage.Add(#_Alarm.GetAlrmTxt(2,$R));
    SendMessage.Add(#_Alarm.GetAlrmTxt(7,$R)+" "+StrLeft(#_Alarm.GetAlrmTxt(7,$R),8));
    Display("趋势分析");
    该段脚本的含义为将报警点的点名与报警时间加入到数组SendMessage中。
    2.趋势分析窗口设置
    在“趋势分析”窗口中,在窗口动作“进入窗口”中编写如下脚本:
    string _PenName;
    string _PenEUHi;
    string _PenEULo;
    string _PenHi;
    string _PenLo;
    _PenName = SendMessage[0]+".PV";
    _PenHi = SendMessage[0]+".HI";
    _PenHi = SendMessage[0]+".LO";
    #本地.RegTag(_PenName);
    #本地.RegTag(_PenHi);
    #本地.RegTag(_PenLo);
    #_Curview.SetPen(0,_PenName);
    #_Curview.SetPen(1,_PenHi);
    #_Curview.SetPen(2,_PenLo);
    nFlag = 1;
    该短脚本中要注意数据库函数RegTag()的使用,由于数组SendMessage传递来的是不带参数的点位号,所以要通过_PenName、_PenHi、_PenHi拼接成点名,但拼接成的点名数据库并不承认,所以要用该函数注册之后才可以使用。之后要向“趋势分析”组件中添加三支画笔,分别为实时值、报警上限、报警下线。其中,nFlag为标志位,用于判断曲线显示的起始时间,在周期脚本中调用。
    在“窗口运行时中期执行”中编写如下脚本:
    if #_Curview.GetTimeBegin(0) <> LongTime(SendMessage[1]) && #_Curview.GetPenDesc(0) <> "" && nFlag == 1 then
    #_Curview.SetTimeBegin(0,LongTime(SendMessage[1]));
    nFlag = 0;
    endif
    该短脚本的含义为将曲线的起始时间设置成报警点的报警时间。
    这样,在系统运行时,在“报警显示”窗口双击某一条报警信息,则会弹出该报警点在触发报警之后的一段时间内的趋势图,方便用户对该报警点的走势进行分析。


    三、结束语
    通过该方式可以实现报警信息与趋势分析的快速切换,提供了工作效率同时,也给广大用户带来了方便。
    关键字: