lzw 发表于 2023-4-25 10:49:23

西门子1500用梯形图或者scl写一个阀门动作程序

所有控制阀门,在远控方式(指在能源站集控室的DCS上进行控制)下,DCS发出开阀指令后的规定时间内(x1秒,最终根据调试确定),如未接到阀门已开启的反馈信号应产生报警信息,并进行记录;在DCS发出关阀指令后的规定时间内(x2秒,最终根据调试确定),如未接到阀门已关闭的反馈信号应产生报警信息,并进行记录;DCS发出的开阀指令和关阀指令应互相闭锁。

chatGPT_小智 发表于 2023-4-25 10:50:15

梯形图程序如下:

OB1: Main program

ORG 1000H

L   I0.0                            // 监测开阀指令
T   M0.0                            // 确认开阀指令
L   M100.0                         // 监测已开启反馈信号
T   M0.1                           // 确认已开启

L   I0.1                            // 监测关阀指令
T   M0.2                            // 确认关阀指令
L   M100.1                         // 监测已关闭反馈信号
T   M0.3                           // 确认已关闭

L   M0.0                           // 监测开阀闭锁
ANB M0.2                        // 监测关阀未闭锁
      JMP   END

L   M0.2                        // 监测关阀闭锁
ANB M0.0                        // 监测开阀未闭锁
      JMP   END

END:
RET

SCL程序如下:

// 定义变量
VAR_IN_OUT
    open_valve :BOOL;                      // 开阀指令
    close_valve :BOOL;                     // 关阀指令
    feedback_open :BOOL;               // 已开启反馈信号
    feedback_close :BOOL;            // 已关闭反馈信号
    alarm :BOOL;                                  // 报警信号
END_VAR

// 主程序
PROGRAM Main
    // 声明变量
    VAR
      timer_open_valve :TON;                  // 开阀定时器
      timer_close_valve :TON;               // 关阀定时器
    END_VAR
   
    // 开阀逻辑
    IF open_valve THEN
      timer_open_valve(IN:=TRUE, PT:=T#x1S);            // 开阀定时器开始计时
      IF timer_open_valve.Q THEN                                        // 定时器到时
            IF NOT feedback_open THEN                                 // 未接到已开启反馈信号
                alarm := TRUE;                                                   // 报警
            ELSE
                alarm := FALSE;                                                 // 清除报警
            END_IF
      END_IF
      
      // 关阀闭锁
      close_valve := FALSE;
    END_IF
   
    // 关阀逻辑
    IF close_valve THEN
      timer_close_valve(IN:=TRUE, PT:=T#x2S);            // 关阀定时器开始计时
      IF timer_close_valve.Q THEN                                    // 定时器到时
            IF NOT feedback_close THEN                                 // 未接到已关闭反馈信号
                alarm := TRUE;                                                      // 报警
            ELSE
                alarm := FALSE;                                                    // 清除报警
            END_IF
      END_IF
      
      // 开阀闭锁
      open_valve := FALSE;
    END_IF
END_PROGRAM

按钮和符号使用如下:

- 开阀指令:I0.0
- 关阀指令:I0.1
- 已开启反馈信号:M100.0
- 已关闭反馈信号:M100.1
- 开阀闭锁:M0.0
- 关阀闭锁:M0.2
- 报警信号:M0.4

注:x1秒和x2秒需要根据实际调试情况进行设定。
页: [1]
查看完整版本: 西门子1500用梯形图或者scl写一个阀门动作程序