三菱 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. 知识点与“深坑”梳理

知识点总结

  1. 上升沿触发 (P):很多指令后面可以加 P(如 MOVP),表示只在按钮按下的那一瞬间执行一次
  2. 块操作 (BMOV/FMOV):用于批量处理数据。FMOV 是“分身术”,把一个数填充进一堆地址;BMOV 是“搬家”,把一整排数据挪到另一排。
  3. 中断指令 (EI/DI):用于处理“突发急事”。不管程序跑到哪,只要中断信号来,立刻去执行预定的急件任务。

常见的坑 (Pitfalls)

  • 【双线圈坑】:在程序的不同地方对同一个 Y0 使用 OUT 指令。
    • 后果:PLC 只听最后一个 OUT 的话,前面的指令看起来生效了其实没用,导致逻辑混乱。
  • 【16位/32位混淆】:普通指令处理 32767 以内的数。如果数据超过这个数(如读编码器值),必须加 D 前缀(如 DADDDMOV),否则数据会溢出或截断。
  • 【循环死机坑】:在 FOR/NEXT 循环里写了太重的任务或嵌套太多层。
    • 后果:导致扫描周期暴增,触发 PLC 看门狗报警(WDT 报错)。

3. 算法逻辑与指标

指令执行算法

三菱 PLC 采用“循环扫描”机制:

  1. 输入处理:读取物理 X 点。
  2. 程序执行:从第 0 步执行到 END 指令。
  3. 输出刷新:把逻辑结果一次性发给物理 Y 点。
  • 关键指标扫描周期 (Scan Time)。一个复杂的 MOVDIV 指令耗时远高于 LD

比较指令的内部逻辑 (CMP)

  • CMP D0 D10 M0
    • D0 > D10,则 M0 为 ON;
    • D0 = D10,则 M1 为 ON;
    • D0 < D10,则 M2 为 ON。
  • 注意:它占用的是连续的三个辅助继电器。

4. 如何指导生产与最佳工程实践

反例 (Bad Practice)

  • 使用大量的 CJ(跳转)指令,导致程序像“面条”一样绕来绕去,后期维护根本看不懂逻辑流向。
  • 在主程序里写几千步代码,没有任何子程序结构。

正确做法 (Best Practice)

  1. 结构化编程:使用 CALL 调用子程序。将“手动、自动、报警、通讯”分开写。
  2. 善用 RST:在程序开始时,使用 ZRST(区间复位)将所有中间状态和数据初始化,防止设备带病启动。
  3. 沿触发保护:对于加减法运算(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 指令是“死”的,但逻辑是“活”的。初级电工记指令,中级工程师调逻辑,高级架构师控流程。 永远记住:最简单的指令组合出最稳定的控制,才是最高级的工程实践。

posted @ 2026-08-25 20:42  accomplish-it  阅读(1)  评论(0)    收藏  举报