// 依据输入和内部状态,控制电机启停、故障反馈等行为
ACTION
IF IN_MODE_AUTO THEN
// 自动模式下,根据不同条件自动控制电机启动、停止、故障反馈等行为
IF IN_START_CMD AND NOT STARTED THEN
// 启动命令输入且未启动,开始启动
STARTED := TRUE;
OUT_RUNNING := TRUE;
END_IF;
IF IN_STOP_CMD AND NOT STOPPED THEN
// 停止命令输入且未停止,开始停止
STOPPED := TRUE;
OUT_RUNNING := FALSE;
END_IF;
IF IN_FULL_OPEN OR IN_FULL_CLOSE THEN
// 全开或全关信号输入,立即停止
STOPPED := TRUE;
OUT_RUNNING := FALSE;
END_IF;
IF IN_PRESSURE_RELIEF_FAULT AND NOT PRESSURE_RELIEFED THEN
// 泄压故障信号输入,立即停止并输出故障
STOPPED := TRUE;
OUT_RUNNING := FALSE;
OUT_FAULT := TRUE;
PRESSURE_RELIEFED := TRUE;
END_IF;
IF IN_OVERHEATING_FAULT AND NOT OVERHEATED THEN
// 超温故障信号输入,立即停止并输出故障
STOPPED := TRUE;
OUT_RUNNING := FALSE;
OUT_FAULT := TRUE;
OVERHEATED := TRUE;
END_IF;
ELSE
// 手动模式下,根据启动、停止命令控制电机启停
IF IN_START_CMD THEN
// 启动命令输入,开始启动
OUT_RUNNING := TRUE;
ELSEIF IN_STOP_CMD THEN
// 停止命令输入,开始停止
OUT_RUNNING := FALSE;
END_IF;