三菱 PLC 编程指令:从“开关逻辑”到“数据算力”
抖,【拓海日志的图文作品】三菱 PLC 常用编程指令。
三菱 PLC 常用编程指令的内容:
一、基本逻辑指令
- LD/LDI:取 / 取反指令,分别用于连接常开 / 常闭触点与左母线,操作元件包括 X、Y、M、T、C、S 等。
- OUT:驱动线圈指令,用于输出信号到线圈,操作元件有 Y、M、T、C、S。
- AND/ANI:与 / 与反指令,串联单个常开 / 常闭触点。
- OR/ORI:或 / 或反指令,并联单个常开 / 常闭触点。
- ANB/ORB:与块 / 或块指令,用于串联 / 并联电路块,无操作元件。
- SET/RST:置位 / 复位指令,SET 用于保持线圈导通,RST 用于清零线圈或寄存器。
- END:程序结束指令,标志程序执行的终点。
二、程序流程控制指令
- CJ:条件转移指令,满足条件时跳转到指定程序段。
- CALL/SRET:子程序调用 / 返回指令,用于调用和返回子程序。
- EI/DI:开 / 关中断指令,控制中断的使能与禁止。
- FOR/NEXT:循环指令,用于实现程序段的循环执行。
三、传送与比较指令
- CMP:比较指令,比较两个数据并设置标志位。
- ZCP:区间比较指令,判断数据是否在指定区间内。
- MOV:传送指令,将数据从源地址传送到目标地址。
- BMOV/FMOV:块传送 / 多点传送指令,实现批量数据的传送。
四、运算指令
- ADD/SUB:二进制加法 / 减法指令。
- MUL/DIV:二进制乘法 / 除法指令。
- INC/DEC:加 1 / 减 1 指令。
五、移位指令
- SFTL/SFTR:位左移 / 位右移指令,用于移位寄存器操作。
- ROL/ROR:循环左移 / 循环右移指令,实现数据的循环移位。
三菱 FX 系列及 Q 系列 PLC 的指令系统是工业自动化的基石。理解这些指令不仅是记住助记符,更是要理解电信号如何转化为逻辑判断,数据如何驱动机械运动。
0. 心智模型:PLC 指令的“社会分工”
我们将 PLC 指令比作一个高效运转的现代化工厂管理团队:
[ 基础逻辑层 ] (普通员工) -> LD/OUT/AND: 听指令办事,搬开关。
[ 置位复位层 ] (值班保安) -> SET/RST: 只要说一声,就一直站岗,直到被替换。
[ 数据处理层 ] (财务办公) -> MOV/CMP: 搬运报表(数据),比对数额。
[ 流程控制层 ] (行政高管) -> CJ/CALL/FOR: 决定谁先干,谁绕道干,谁重复干。
1. 核心概念分组:场景串联理解
场景 A:简单的传送带启动(基本逻辑:LD/OUT/SET)
- 模拟:操作员按一下“启动”按钮,电机转动。
- 拟物化:
- LD/AND/OR:就像是一连串的开关。只有当所有的开关都闭合(逻辑成立),电能(电流)才能流向终点。
- SET/RST:就像是带锁的按钮。按一下 SET,电机就“锁定”在运行状态;必须按一下旁边的 RST 按钮,电机才会停。
场景 B:次品筛选踢出(传送比较:CMP/MOV/ZRST)
- 模拟:传感器测得重量 D0。如果 D0 小于 100g(CMP),则认为是次品,触发气缸踢出(OUT),并记录次数(INC)。
- 拟物化:
- CMP(比较):就像是质检员拿标准衡器对比,结果有“大于、等于、小于”三种情况。
- MOV(传送):就像是复印资料。把 A 处的数据复制一份到 B 处,原件不动。
场景 C:多工位循环加工(程序流程:FOR/NEXT/CJ)
- 模拟:一个转盘有 4 个工位,需要重复执行同样的点胶动作 4 次。
- 拟物化:
- FOR/NEXT:就像是复读机。在这一段程序里来回跑 N 次,跑完再往下走。
- CJ(跳转):就像是跳过广告。如果满足某个条件,中间的一大段程序就不看了,直接跳到终点执行。
2. 知识点与“深坑”梳理
知识点总结
- 上升沿触发 (P):很多指令后面可以加
P(如MOVP),表示只在按钮按下的那一瞬间执行一次。 - 块操作 (BMOV/FMOV):用于批量处理数据。
FMOV是“分身术”,把一个数填充进一堆地址;BMOV是“搬家”,把一整排数据挪到另一排。 - 中断指令 (EI/DI):用于处理“突发急事”。不管程序跑到哪,只要中断信号来,立刻去执行预定的急件任务。
常见的坑 (Pitfalls)
- 【双线圈坑】:在程序的不同地方对同一个
Y0使用OUT指令。- 后果:PLC 只听最后一个
OUT的话,前面的指令看起来生效了其实没用,导致逻辑混乱。
- 后果:PLC 只听最后一个
- 【16位/32位混淆】:普通指令处理 32767 以内的数。如果数据超过这个数(如读编码器值),必须加
D前缀(如DADD、DMOV),否则数据会溢出或截断。 - 【循环死机坑】:在
FOR/NEXT循环里写了太重的任务或嵌套太多层。- 后果:导致扫描周期暴增,触发 PLC 看门狗报警(WDT 报错)。
3. 算法逻辑与指标
指令执行算法
三菱 PLC 采用“循环扫描”机制:
- 输入处理:读取物理 X 点。
- 程序执行:从第 0 步执行到 END 指令。
- 输出刷新:把逻辑结果一次性发给物理 Y 点。
- 关键指标:扫描周期 (Scan Time)。一个复杂的
MOV或DIV指令耗时远高于LD。
比较指令的内部逻辑 (CMP)
CMP D0 D10 M0:- 若
D0 > D10,则M0为 ON; - 若
D0 = D10,则M1为 ON; - 若
D0 < D10,则M2为 ON。
- 若
- 注意:它占用的是连续的三个辅助继电器。
4. 如何指导生产与最佳工程实践
反例 (Bad Practice)
- 使用大量的
CJ(跳转)指令,导致程序像“面条”一样绕来绕去,后期维护根本看不懂逻辑流向。 - 在主程序里写几千步代码,没有任何子程序结构。
正确做法 (Best Practice)
- 结构化编程:使用
CALL调用子程序。将“手动、自动、报警、通讯”分开写。 - 善用 RST:在程序开始时,使用
ZRST(区间复位)将所有中间状态和数据初始化,防止设备带病启动。 - 沿触发保护:对于加减法运算(INC/ADD),务必加
P(上升沿执行),否则 PLC 每秒扫描几百次,你的数据会瞬间加到爆表。
5. 经典问答 (Q&A)
Q:SET 和 OUT 有什么区别?
A: OUT 像手电筒开关,手松开灯就灭;SET 像电灯按钮,按一下灯一直亮,必须按另一个按钮(RST)才能灭。
Q:为什么 MOV 指令传不了小数?
A: 三菱基础 MOV 指令处理的是整数。如果需要处理小数(浮点数),必须使用 EMOV 指令,且寄存器必须成对使用(占用两个 D)。
6. 重要概念集成模型 (ASCII)
逻辑流向模型
[ 左母线 ] [ 右母线 ]
| X0 M10 Y0 |
|-------| |-------|/|-------( )---------|
| (启动按钮) (保护联锁) (输出线圈) |
| |
| [ CMP D0 D10 M0 ] <-- 比较指令 |
|-----------------------------------------|
| (如果 D0 > D10, M0 自动亮起) |
数据传送模型 (BMOV vs FMOV)
[ FMOV ] (单对多) [ BMOV ] (多对多)
Source: [ 10 ] Source: [ 10 ][ 20 ][ 30 ]
| | | |
Target: [ 10 ][ 10 ][ 10 ] Target: [ 10 ][ 20 ][ 30 ]
总结:三菱 PLC 指令是“死”的,但逻辑是“活”的。初级电工记指令,中级工程师调逻辑,高级架构师控流程。 永远记住:最简单的指令组合出最稳定的控制,才是最高级的工程实践。

浙公网安备 33010602011771号