西门子1500用梯形图或者scl写一个阀门动作程序
所有控制阀门,在远控方式(指在能源站集控室的DCS上进行控制)下,DCS发出开阀指令后的规定时间内(x1秒,最终根据调试确定),如未接到阀门已开启的反馈信号应产生报警信息,并进行记录;在DCS发出关阀指令后的规定时间内(x2秒,最终根据调试确定),如未接到阀门已关闭的反馈信号应产生报警信息,并进行记录;DCS发出的开阀指令和关阀指令应互相闭锁。梯形图程序如下:
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]