1. 开关量状态变化触发条件

  • 需配置开关量为bool型变量
  • bool类型变量的值从0变为1触发
  • bool类型变量的值从1变为0触发
  • 当变量的数据质量不好时,不会触发开关量状态变化事件

2. 事件配置

需先配置t_db_connection表

  • 数据库表t_event_runstatus_change中进行配置
  • 该表具有列:
    • status_tagname,保存要进行状态变化事件记录的开关量名称
      •  该列只允许1个变量名称
      • 如:射流风机71北线.运转状态
      • 如:A匝道雨水泵房1号泵.1号泵全压运行
    • control_tagname和control_feedback_timeout,保存开关量状态对应的控制变量列表,目的:更新操作记录表t_log_control中的result字段为:成功/失败。
      • 不需要该功能时,可以不配置这两个变量
      • 控制变量进行控制时,无法获得保存结果,所以转储出去的操作记录表t_log_control中的result字段通常为空
      • control_tagname:状态变化点对应的控制点。可以是多个控制变量,以逗号隔开
        • 如:A匝道雨水泵房1号泵.1号泵控制请求
        • 射流风机71北线.S正向开,射流风机71北线.S反向开,射流风机71北线.S停止
      • control_feedback_timeout:控制反馈超时。状态点状态变化时,系统查找对应的控制点的最近时间段,单位:秒。不配置缺省为5
      • 当status_tagname配置的开关量变化时,如果control_tagname配置了变量(可以是多个控制变量,以逗号隔开),系统会去查找t_log_control表中控制反馈超时时间段内的控制变量,将该条操作记录result字段设置为:成功
      • 如果t_log_control中的操作记录,超过控制反馈超时时间后,result字段仍然是空,那么将其设置为:失败
    • data_tagname:状态变化事件发生时(由开到关,或者由关到开),需要保存的其他变量的值
      • 可以是多个变量名,以逗号隔开
      • 在状态由1-->0和0-->1,分别保存变量的值
      • 示例:
        • 如:射流风机71北线.本次运行时间,射流风机71北线.累计运行时间,射流风机71北线.联动
        • 如:A匝道雨水泵房1号泵.本次运行时间,A匝道雨水泵房1号泵.累计运行时间,A匝道雨水泵房1号泵.1号泵自动位置,A匝道雨水泵房.当前液位
  • 3. 结果保存

    • 转储数据库表:t_log_onoff_statustag。保存开关量状态变化的时刻
      • status_tagname变量的状态,0→1和1-->0两次变化,保存在同一条记录中,该数据库会保存1条记录。当由0--->1时,会新增1条记录,closetime为空。当再由1--->0时,会查找最近的该变量名下closetime为空的1条记录,并更新closetime
      • tagname:配置的状态变量名,即t_event_runstatus_change的status_tagname列
      • objectname:对象模式下对象名称
      • propname:对象模式下,属性名称
      • opentime:值由0-->1变化时刻的时间,格式:2020-07-11 22:49:08.000
      • closetime:值由1-->01变化时刻的时间,格式:2020-07-11 23:10:53.000
      • 该表必须建立索引,对下述列进行索引:
        • tagname,objectname,propname,opentime,closetime
    • 转储数据库表:t_log_onoff_datatag。保存开关量状态变化时,对应的关联变量的值
      • 0→1和1→0两次变化,分别保存在2条一条记录中
      • statustagname:开关量状态变化的点名,即t_event_runstatus_change的status_tagname列
      • changetime:statustagname变量的值由1到0或0到1的变化时刻的时间
      • datatagname:关联变量名称。配置在t_event_runstatus_change表的data_tagname中的一个名称。如果配置了多个名称,则每个名字对应本表一条记录
      • objectname:对象模式下对象名称
      • propname:对象模式下,属性名称
      • value:关联变量datatagname的值
      • ison:变化后是开还是关。1表示开,0表示关
      • 该表必须建立索引,对下述列进行索引:
        • statustagname,datatagname,objectname,propname,changtime
  • 4. 使用

    • 在使用时,有可能是需要将状态变量、关联变量放在一起进行查询
    • 需要用SQL语句,将上面的值关联起来
    • SQL语句:SELECT
      A.tagname,
      A.objectname,
      A.OPENTIME,
      A.CLOSETIME,
      max(
      CASE
      WHEN B.PROPNAME LIKE '%本次运行时间%'
      AND B.changetime = A.closetime
      AND B.VALUE > 24 * 3600 THEN
      to_char( to_date( mod( B.VALUE, 3600 * 24 ), 'sssss' ), 'fmhh24"小时"mi"分"ss"秒"' )
      WHEN B.PROPNAME LIKE '%本次运行时间%'
      AND B.changetime = A.closetime
      AND B.VALUE < 24 * 3600 THEN
      trunc( B.VALUE / 3600 / 24 ) || '天' || to_char( to_date( mod( B.VALUE, 3600 * 24 ), 'sssss' ), 'fmhh24"小时"mi"分"ss"秒"' ) ELSE NULL
      END
      ) AS THISTIME,
      max(
      CASE
      WHEN B.PROPNAME LIKE '%累计运行时间%'
      AND B.changetime = A.closetime
      AND B.VALUE > 24 * 3600 THEN
      to_char( to_date( mod( B.VALUE, 3600 * 24 ), 'sssss' ), 'fmhh24"小时"mi"分"ss"秒"' )
      WHEN B.PROPNAME LIKE '%累计运行时间%'
      AND B.changetime = A.closetime
      AND B.VALUE < 24 * 3600 THEN
      trunc( B.VALUE / 3600 / 24 ) || '天' || to_char( to_date( mod( B.VALUE, 3600 * 24 ), 'sssss' ), 'fmhh24"小时"mi"分"ss"秒"' ) ELSE NULL
      END
      ) AS CUMULATIVETIME,
      max( CASE WHEN B.PROPNAME LIKE '%自动位置%' AND B.changetime = A.closetime THEN B.VALUE ELSE NULL END ) AS STATUS,
      max( CASE WHEN B.PROPNAME LIKE '%当前液位%' AND B.changetime = A.closetime THEN B.VALUE ELSE NULL END ) AS WATERLEVEL
      FROM
      T_LOG_ONOFF_STATUSTAG A,T_LOG_ONOFF_DATATAG B
      WHERE
      A.tagname = B.statustagname
      AND (A.opentime = B.CHANGETIME OR A.closetime = B.CHANGETIME)
      AND A.OPENTIME >=:startTime
      AND A.OPENTIME <=:endTime
      AND A.objectname LIKE '%水泵%'
      GROUP BY
      A.objectname,
      A.tagname,
      A.OPENTIME,
      A.CLOSETIME
      ORDER BY
      OPENTIME DESC
    • 示例报表截图:

                    



select A.objectname,A.propname,A.opentime,A.closetime,A.duration_sec,B.value from t_log_onoff_statustag A
left join t_log_onoff_datatag B on A.tagname=B.statustagname and A.opentime=B.changetime


  • 无标签