// 控制逻辑
IF StartCmd AND NOT MotorStatus THEN
// 如果启动命令并且电机未运行,则设置电机状态为运行
MotorStatus := TRUE;
ELSIF StopCmd AND MotorStatus THEN
// 如果停止命令并且电机正在运行,则设置电机状态为停止
MotorStatus := FALSE;
ENDIF;
// 反馈监视
IF Feedback AND MotorStatus THEN
MotorOn := TRUE;
Fault := FALSE;
ELSIF NOT Feedback AND MotorStatus THEN
MotorOn := FALSE;
Fault := TRUE;
ELSE
MotorOn := MotorStatus;
Fault := FALSE;
ENDIF;
END_FUNCTION_BLOCK
5.3 主程序 `MAIN`
最后,我们编写主程序 `MAIN` 来调用 `FB_MotorControl` 并处理输入输出。
PROGRAM MAIN
VAR
StartCmd : BOOL; // 启动命令
StopCmd : BOOL; // 停止命令
Feedback : BOOL; // 电机运行反馈
MotorOn : BOOL; // 电机运行状态
Fault : BOOL; // 故障标志
END_VAR