以下是一个三菱ST语言基础指令学习的实例,涵盖逻辑运算、条件判断、循环控制等核心指令:
1. 逻辑运算指令
st
// 与运算 Y0 := (X0 AND X1); // 当X0和X1同时为ON时,Y0输出ON
// 或运算 Y1 := (X0 OR X1); // 当X0或X1任意一个为ON时,Y1输出ON
// 非运算 Y2 := (NOT X2); // 当X2为OFF时,Y2输出ON
// 异或运算 Y3 := (X3 XOR X4); // 当X3和X4状态不同时,Y3输出ON
2. 置位与复位指令
st
// 置位指令(SET) IF X5 THEN SET(Y4); // 当X5为ON时,Y4置位(保持ON状态) END_IF;
// 复位指令(RST) IF X6 THEN RST(Y4); // 当X6为ON时,Y4复位(保持OFF状态) END_IF;
3. 条件判断指令(IF-THEN-ELSE)
st
// 单条件判断 IF X7 THEN Y5 := TRUE; // 当X7为ON时,Y5输出ON ELSE Y5 := FALSE; // 当X7为OFF时,Y5输出OFF END_IF;
// 多条件嵌套判断 IF X8 THEN Y6 := TRUE; ELSIF X9 THEN Y6 := FALSE; ELSE Y7 := TRUE; // 当X8和X9均为OFF时,Y7输出ON END_IF;
4. 多条件分支指令(CASE)
st
// 根据变量值执行不同操作 CASE D0 OF 0: Y8 := TRUE; // 当D0=0时,Y8输出ON 1: Y9 := TRUE; // 当D0=1时,Y9输出ON 2..10: Y10 := TRUE; // 当D0在2到10之间时,Y10输出ON 15, 20: Y11 := TRUE; // 当D0=15或20时,Y11输出ON ELSE Y12 := FALSE; // 其他情况Y12输出OFF END_CASE;
5. 循环控制指令(FOR)
st
// 有限次循环 FOR i := 0 TO 9 BY 1 DO D10[i] := i * 2; // 将数组D10的0到9号元素依次赋值为0, 2, 4,...,18 END_FOR;
6. 定时器与计数器指令
st
// 通电延时定时器(TON) IF X11 THEN TON(T0, K50); // 当X11为ON时,启动定时器T0,延时50个时间单位 IF T0.Q THEN Y13 := TRUE; // 定时时间到,Y13输出ON END_IF; ELSE RST(T0); // 当X11为OFF时,复位定时器T0 END_IF;
// 加计数器(CTU) IF X12 THEN CTU(C0, K10); // 当X12上升沿触发时,计数器C0加1 IF C0.Q THEN Y14 := TRUE; // 当计数达到10时,Y14输出ON END_IF; ELSE RST(C0); // 当X12为OFF时,复位计数器C0 END_IF;
7. 数据传送指令(MOV)
st
// 将常数传送到数据寄存器 MOV(K100, D20); // 将常数100传送到D20
// 将一个数据寄存器的值传送到另一个 MOV(D20, D30); // 将D20的值传送到D30