工控玩家
澧县电气自动化
级别: 家园常客
精华主题: 0
发帖数量: 528 个
工控威望: 778 点
下载积分: 787 分
在线时间: 607(小时)
注册时间: 2008-09-06
最后登录: 2026-01-20
查看工控玩家的 主题 / 回贴
楼主  发表于: 3天前
现有7个电磁阀向7条管道给水,先给1 2号供水---再给2 3号供水----3  4号供水---4 5号供水----5 6号供水--6  7号供水--7 1供水---1 2供水,这样循环。
问题是某些管路关闭了怎么跳过?任何时间都有两路给水。
卓发智能
相互学习,共同进步。
级别: 工控侠客
精华主题: 0
发帖数量: 2503 个
工控威望: 3165 点
下载积分: 13384 分
在线时间: 686(小时)
注册时间: 2008-08-03
最后登录: 2026-01-22
查看卓发智能的 主题 / 回贴
1楼  发表于: 前天
// 系统启停逻辑
V_CycleFlag := I_Start AND NOT I_Stop;

// 定时器触发:当前状态供水时长到,触发状态跳转
V_Timer(IN:=V_CycleFlag, PT:=T#10S); // 设定每组供水10秒,可修改

// 状态跳转逻辑:定时器到或当前状态无效,切换下一个状态
IF V_Timer.Q OR NOT (I_PipeEn[V_CurrentState+1] AND I_PipeEn[IF V_CurrentState=6 THEN 1 ELSE V_CurrentState+2]) THEN
    V_CurrentState := V_CurrentState + 1;
    IF V_CurrentState >=7 THEN
        V_CurrentState := 0; // 状态循环:6→0
    END_IF;
    V_Timer(IN:=FALSE); // 定时器复位
END_IF;

// 电磁阀输出逻辑:根据当前状态,输出对应两路电磁阀
// 先复位所有电磁阀
FOR i:=1 TO 7 DO
    Q_Solenoid := FALSE;
END_FOR;

// 按状态输出两路电磁阀(需两路均使能)
IF V_CycleFlag THEN
    CASE V_CurrentState OF
        0: // 状态0:1-2路供水
            IF I_PipeEn[1] AND I_PipeEn[2] THEN
                Q_Solenoid[1]:=TRUE; Q_Solenoid[2]:=TRUE;
            END_IF;
        1: // 状态1:2-3路供水
            IF I_PipeEn[2] AND I_PipeEn[3] THEN
                Q_Solenoid[2]:=TRUE; Q_Solenoid[3]:=TRUE;
            END_IF;
        2: // 状态2:3-4路供水
            IF I_PipeEn[3] AND I_PipeEn[4] THEN
                Q_Solenoid[3]:=TRUE; Q_Solenoid[4]:=TRUE;
            END_IF;
        3: // 状态3:4-5路供水
            IF I_PipeEn[4] AND I_PipeEn[5] THEN
                Q_Solenoid[4]:=TRUE; Q_Solenoid[5]:=TRUE;
            END_IF;
        4: // 状态4:5-6路供水
            IF I_PipeEn[5] AND I_PipeEn[6] THEN
                Q_Solenoid[5]:=TRUE; Q_Solenoid[6]:=TRUE;
            END_IF;
        5: // 状态5:6-7路供水
            IF I_PipeEn[6] AND I_PipeEn[7] THEN
                Q_Solenoid[6]:=TRUE; Q_Solenoid[7]:=TRUE;
            END_IF;
        6: // 状态6:7-1路供水
            IF I_PipeEn[7] AND I_PipeEn[1] THEN
                Q_Solenoid[7]:=TRUE; Q_Solenoid[1]:=TRUE;
            END_IF;
    END_CASE;
END_IF;
相信自我!