跳转至

7.延时控制

例1

Lua
delay_sleep=3--延时秒数

local function sleep(n)
    os.execute("sleep "..n)
end

for index= 1,21,1 do
    tag_fh = GetTagValue("DEV" .. index .. "_YK2")--分合闸,计算点
    tag_fh_pre = GetTagValue("DEV" .. index .. "_YK3")--分合闸上一个值,计算点
    if (((tag_fh - tag_fh_pre) < 0.0001) and ((tag_fh - tag_fh_pre) > -0.0001)) then
        tag_fh_real = GetTagValue("DEV" .. index .. "_YX0")--分合闸实际点
        if (((tag_fh - tag_fh_real) < 0.0001) and ((tag_fh - tag_fh_real) > -0.0001)) then
        else
            SetTagValue("DEV" .. index .. "_YK2",tag_fh_real)
            SetTagValue("DEV" .. index .. "_YK3",tag_fh_real)
        end
    else--发生变化
        SetTagValue("DEV" .. index .. "_YK3",tag_fh)
        if (tag_fh > 0) then
        --控合
            SetTagValue("DEV" .. index .. "_YK0",1)--合闸实际遥控点
            sleep(delay_sleep)
            SetTagValue("DEV" .. index .. "_YK0",0)--合闸实际遥控点
        else
        --控分
            SetTagValue("DEV" .. index .. "_YK1",1)--分闸实际遥控点
            sleep(delay_sleep)
            SetTagValue("DEV" .. index .. "_YK1",0)--分闸实际遥控点
        end
    end
end              
  • 说明

    在进行分合闸控制时,要求先对继电器写1,延迟3秒后,写0,如此完成一次控制;

    YK0为合闸实际点,YK1为分闸实际点,YK2为分合闸计算点(手动创建),YK3为分合闸上一次的值计算点(手动创建),上述脚本,接收到主站的分合闸控制命令以后,先对继电器写入1,然后进行3秒延迟,再对继电器写入0,完成一次控制。