跳转至

5.复杂条件判断

例1

Lua
q_good=0
q_bad=100
q_invalid=50
limit=50--报警低限
for index= 1,1,1 do
    ua_q=q_invalid--初始为无效
    txzd=GetTagValue("通道1_设备" .. index .. "_TXZD")
    ua_v,ua_q=GetTagValueAndQos("通道1_设备" .. index .. "_Ua")
    --如果通讯正常
    if(txzd == 0) then 
        if(ua_v <= limit) then 
            if(ua_q ~= q_good) then
                SetTagValue("通道1_设备" .. index .. "_DDBJ",0)--通讯正常,质量戳不是good,说明刚上电,不报警
            else
                SetTagValue("通道1_设备" .. index .. "_DDBJ",1)--通讯正常,质量是good,说明电压确实为0,报警
            end
        else
            SetTagValue("通道1_设备" .. index .. "_DDBJ",0)--电压正常,不报警
        end
    else
    --如果通讯异常
        if(ua_v <= limit) then 
            if(ua_q ~= q_good) then
                SetTagValue("通道1_设备" .. index .. "_DDBJ",1)--通讯正常,质量戳不是good,报警
            end
        else
            SetTagValue("通道1_设备" .. index .. "_DDBJ",0)--电压正常,不报警
        end
    end
end                
  • 说明

    当使用“电压≤50认为设备断电”这个条件来判断设备是否断电时,存在一个情况:

    就是当设备通讯中断时或网关刚上电尚未采集到数据时会产生误判,误将通讯中断的0或初始值0当做采集到的数值,从而产生错误的报警,使用上述脚本即可解决这个问题;

    通道1_设备1_TXZD”是一个通讯中断点,“通道1_设备1_DDBJ”是一个计算点,“通道1_设备1_Ua”是一个采集点,

    脚本结合该设备的通讯状态测点质量两个数据综合判断,解决误报问题。