// 自锁逻辑
IF Start_Button AND NOT Motor_Run THEN // 如果按下启动按钮且电机未运行
Motor_Run := TRUE; // 启动电机
ELSIF Stop_Button THEN // 如果按下停止按钮
Motor_Run := FALSE; // 停止电机
END_IF;
自锁梯形图程序:
互锁ST程序:
假设我们有两个输出 Output1 和 Output2,它们不能同时被激活。
PROGRAM Main
VAR
Request_Output1 : BOOL; // 请求Output1的输入
Request_Output2 : BOOL; // 请求Output2的输入
Output1 : BOOL; // Output1的状态输出
Output2 : BOOL; // Output2的状态输出
END_VAR
// 初始化(虽然在这个简单的示例中不是必需的)
Output1 := FALSE;
Output2 := FALSE;
// 互锁逻辑
IF Request_Output1 AND NOT Output2 THEN // 如果请求Output1且Output2未激活
Output1 := TRUE;
ELSIF NOT Request_Output1 THEN // 如果不再请求Output1
Output1 := FALSE;
END_IF;
IF Request_Output2 AND NOT Output1 THEN // 如果请求Output2且Output1未激活
Output2 := TRUE;
ELSIF NOT Request_Output2 THEN // 如果不再请求Output2
Output2 := FALSE;
END_IF;
互锁梯形图程序:
连锁ST程序:
PROGRAM Main
VAR
Safety_Door_Closed : BOOL; // 安全门关闭状态输入
Start_Button : BOOL; // 启动按钮输入
Motor_Run : BOOL; // 电机运行状态输出
END_VAR
// 初始化(虽然在这个简单的示例中不是必需的)
Motor_Run := FALSE;
// 连锁逻辑
IF Safety_Door_Closed AND Start_Button THEN // 如果安全门关闭且按下启动按钮
Motor_Run := TRUE; // 启动电机
ELSIF NOT Safety_Door_Closed OR NOT Start_Button THEN // 如果安全门未关闭或未按下启动按钮
Motor_Run := FALSE; // 停止电机
END_IF;