ladder/motor_control/main.ld · 1146 字节 · 下载原文
(* main.ld —— 电机启停的**经典自锁回路**(IEC 61131-3 梯形图)
main.ld -- the classic **self-latching motor start/stop** rung (IEC 61131-3 ladder)
⚠⚠ 这份例程**原来只有 5 行且缺 `PROGRAM`/`VAR` 声明**:
BEGIN / NETWORK 1 / LD X0 / OUT Y0 / END
而 `NETWORK` 当时没进词法表 ⇒ 它把**整条梯级连后面第一条语句一起吃掉**
(本仓 E222/BUG-03)⇒ 那份程序**一行都不执行**,却"编得过"。
修好 `NETWORK` 之后,缺声明这件事才**响亮地报出来**(`未声明的变量 'X0'`)——
这正是"响的失败比静默好":原来那份是**静默不干活**。
`X0` 是启动按钮、`Y0` 是电机输出;`LD X0 / OUT Y0` 就是"按钮按下 ⇒ 电机得电"。*)
PROGRAM Motor
VAR
X0 : INT; (* 启动按钮 / start button *)
Y0 : INT; (* 电机输出 / motor output *)
END_VAR
BEGIN
X0 := 1; (* 按下启动按钮 / press start *)
NETWORK 1
LD X0
OUT Y0
IF Y0 = 1 THEN PRINT_STR "motor=ON"; ELSE PRINT_STR "motor=OFF"; END_IF;
PRINT_CHAR 10;
END_PROGRAM