信捷 XD/XL PLC 指令速查表

按分类列出 264 条指令:助记符、一句话说明、操作数布局,以及这条指令最容易踩的坑。 每条坑都标了出处(信捷官方手册常见问题章 / 讲义 / 实测)。看完想系统学,去 指令讲堂。

264 条指令 | 60 条避坑 | 11 个分类 | 数据与仿真器引擎同一份指令表,不是手抄

上电之前,先看这四条(现场问题大多出在这里,不是指令写错)

  1. 信捷 PLC 没有三菱那种 RUN/STOP 拨码开关。运行/停止是软件状态:程序下载后必须在编程软件里点「运行」,不点就一直不跑;有些改动要断电重新上电才进运行态。网上很多文章在教「把 PLC 侧面的拨码开关拨到 RUN」—— 信捷没有那个开关,那是三菱的做法。
  2. 信捷确实有拨码开关,但那是 RS485 终端电阻(SW2/SW3)。PLC 处在总线首或尾时要把它拨到 ON。别把它当运行模式开关用。
  3. 「指令执行完毕」不等于「机械到位置了」。PLC 只知道脉冲发完了,不知道电机堵没堵、丝杠打没打滑、气缸行程够不够。要真知道,得自己加到位超时报警(发了定位指令后等 N 毫秒,传感器没信号就报警停机)。
  4. 到位了但传感器没信号,按顺序排三件事:① 传感器接反了(常开/常闭);② 电机或气缸其实没到位;③ 用绝对定位但原点没回。先用在线监控看输入点状态,没有信号就别怀疑程序。
指令一句话说明操作数避坑对应课次
LD取(常开触点开始)位
⚠ 1 个坑

一个线圈被写了两次会「后侧优先」:★ 同一个线圈在程序里出现多处 = 二重线圈输出,后侧的线圈优先动作。表现为「条件明明成立却不按我写的那样输出」。[官] PD01 硬件篇 附录4 Q1 / PD05 Q7

L01 L02 L03 L04 L05 L06 L07 L08+35
LDI取反(常闭触点开始)位—L01 L11 L17
LDP上升沿取位
⚠ 1 个坑

比 PLS 晚一拍:★ LDP 在第二个扫描周期才导通,PLS 在第一个扫描周期。要在一个扫描周期内起作用就得用 PLS(比如 INC 配 PLS)。[讲] L14 自加自减 / 培训资料

L14 L15 L16 L17 L20 L26 L36 L40+3
LDF下降沿取位—L18 L34 L36
AND串联常开位—L08 L10
ANI串联常闭位—L01 L02 L03 L04 L05 L34
ANDP串联上升沿位——
ANDF串联下降沿位——
OR并联常开位—L01 L02 L03 L04 L05 L10
ORI并联常闭位——
ORP并联上升沿位——
ORF并联下降沿位——
LD=触点比较等于 A=B数 · 数—L06 L09 L13 L37
LD>触点比较大于 A>B数 · 数—L06 L09 L10 L11 L12 L13 L17
LD<触点比较小于 A<B数 · 数—L06 L09 L13
AND=串联比较等于数 · 数—L08
AND>串联比较大于数 · 数—L10
AND<串联比较小于数 · 数——
OR=并联比较等于数 · 数——
OR>并联比较大于数 · 数—L10
OR<并联比较小于数 · 数—L10
ANB电路块串联———
ORB电路块并联———
MPS入栈(存储运算结果)———
MRD读栈———
MPP出栈———
INV运算结果取反—
⚠ 1 个坑

按位取反,不是有符号取反:INV 对应 De Morgan 定理:把 AND/OR 互换、触点取反,就得到「用或实现的与」。[讲] L15 逻辑运算

—
MCS主控开始(MCS~MCR间输出受控)———
MCR主控结束———
OUT线圈输出位
⚠ 1 个坑

同一条线圈不能混用输出方式:同一个线圈(或输出端 Y)只能用一种输出方式。OUT 与 SET 混用时会出现「条件成立了却不输出」。[官] PD05 第13章 Q7(书页 542)

L01 L02 L03 L04 L05 L06 L07 L08+17
TMR定时器(OUT语法糖):设定值可 K 或 D、时基 K1/K10/K100位 · 数 · 常数
⚠ 1 个坑

时基别算错:设定值 × 时基 = 实际延时。K10 配 100ms 时基 = 1 秒,不是 10 秒。[讲] L03 定时器

L03 L04 L07 L08
CNT计数器(OUT语法糖):设定值可 K 或 D;目标为 HSC 时第三操作数=100段设定值首地址位 · 数 · 数—L04 L05 L07 L08 L24 L25
CNT_ABAB相高速计数(CNT_AB HSC0 S2 [S3]):S2比较值;第三操作数=100段设定值首地址位 · 数 · 数—L24 L25
CTR信捷计数器(CTR C0 K3000):设定值可 K 或 D位 · 数——
TMR_A信捷断电保持定时器(HT/HD设备):设定值可 K 或 D位 · 数 · 常数——
MC信捷主控(MC N0 M10):嵌套级N0+主控继电器M10数 · 位——
DCNTXD增计数器(DCNT C0 K5):设定值可 K 或 D位 · 数
⚠ 1 个坑

硬件版本与软件版本要匹配:★★ 官方口径:硬件版本 2.5 + 软件版本 3.0 时认不出高速计数。需换回 2.5 软件,或把硬件升级到 3.0。[官] XC 系列常见问题 Q3 / PD05 Q17

—
DCNT_DXD掉电保持减计数器(DCNT_D HC0 K5):设定值可 K 或 D位 · 数——
DCTR信捷32位高速计数(DCTR HC0):无设定值,硬件脉冲上升沿加1;到目标用 CMP HC0 K目标 M0 检测(M2=大于)位——
SET置位位
⚠ 1 个坑

SET 之后必须 RST:SET 置位后不会自己回来,条件消失也保持着。OUT 与 SET 不能用在同一个线圈上(见 OUT 条)。[官] PD05 第13章 Q7

L05 L06 L18 L20 L34 L36 L37 L42
ST步进转移:打开目标步 Sx,当前步保持运行(实现流程嵌套)位
⚠ 1 个坑

SET Sxxx 会关掉原流程的脉冲指令:★ 在流程里执行 SET Sxxx 跳到下一个流程时,原流程中正在跑的脉冲指令也会被关掉 —— 包括单段、多段、相对绝对、原点回归。[讲] 培训资料口径

—
RST复位位
⚠ 1 个坑

别拿 RST 当「复位线圈」用:RST 清的是位/字本身,与 OUT 驱动线圈是两回事。线圈由 OUT 驱动时,条件断了自然断开,不需要 RST。[讲] L02 启保停

L04 L05 L06 L11 L24 L25 L33 L36+2
ALT信捷交替输出(ALT M1):驱动条件为 ON 时翻转目标位(配 LDP/PLS 才是「按一次翻一次」)位
⚠ 2 个坑

条件是常开触点就会每拍翻转:★★ 官方原话:「ALT 以及许多运算指令,只要条件满足(如以常开常闭线圈作为触发条件),每个扫描周期都会执行一次」。必须用 LDP/PLS 配上升沿,才是「按一次翻一次」。[官] PD05 第13章 Q6(书页 542)

配常开触点时输出点会一直闪:这正是官方 Q6 描述的现象:输出点一直在闪。看到输出高频闪,第一反应就查 ALT 的触发条件是不是没用沿。[官] PD05 第13章 Q6

L36
PLS上升沿输出(单周期)位
⚠ 1 个坑

一个扫描周期:条件满足时,M 在第一个扫描周期接通。要让上升沿影响当拍逻辑,用 PLS 而不是 LDP。[引] 指令手册

—
PLF下降沿输出(单周期)位——
MEP信捷上升沿脉冲(等效PLS,无操作数)———
MEF信捷下降沿脉冲(等效PLF,无操作数)———
ANDMEP运算结果上升沿脉冲(等价 MEP,无操作数)———
ANDMEF运算结果下降沿脉冲(等价 MEF,无操作数)———
ANDINV运算结果取反(等价 INV,无操作数)———
NOP空操作———
END程序结束(返回0步)——L01 L02 L03 L04 L05 L06 L07 L08+36
FEND主程序结束(其后为子程序区)。★ 中断指针 I**** 必须写在 FEND 之后(手册 10-4)——L17 L25 L36 L37
LBL标号 LBL P0(CJ/CALL 跳转目标)指针—L17
CJ条件跳转 CJ P0(母线条件为ON时跳到标号)指针
⚠ 1 个坑

跳过的那段如果用了脉冲指令要小心:CJ 跳过的区间里若有 PLSY/DRVA 等,条件成立又跳回来时沿已经过去了,指令不会补发。[实] 本项目位置类课程反复出现

L17
CALL子程序调用 CALL P0指针
⚠ 3 个坑

必须与指针 P 配对:★ CALL 指令和子程序指针 P 必须配合使用,否则报「不存在的标号类型」。[讲] L17 程序流程

子程序里不要写脉冲/计数/定时:★ 子程序中不要写脉冲、计数、定时等一个扫描周期内无法完成的指令。子程序整体是在主程序一个扫描周期内被调用的。[讲] L17 / 培训资料

嵌套层数有限:子程序内允许 9 次 CALL,整体可做 10 层嵌套。超了会报错。[讲] L17

L17
SRET子程序返回(从 CALL 处继续)—
⚠ 1 个坑

返回后状态保持规则:★ 调用子程序时,主程序所属的 OUT/PLS/PLF/定时器均保持;返回时,子程序所属的这些也都保持(不会自动复位)。[讲] 培训资料口径

L17
STL步进梯形图步首:读取 S 状态位(等价于 LD Sx,标记进入某步)位
⚠ 1 个坑

必须与 STLE 配对,且不能嵌套:STL/STLE 成对使用;每个流程独立书写,不能嵌套。流程执行顺序可以任意指定(可以先 S10 再 S5)。[引] 指令手册流程指令节

L05 L06 L41
STLE步进结束:闭合当前 STL 步块,退出步门控(信捷用 STLE 替代三菱 RET)——L05 L06
RET步进返回:结束 STL 块(仅兼容旧写法,信捷官方用 STLE)———
IRET中断返回:结束中断服务程序、返回主程序(走 callStack,并恢复中断前的梯级状态)——L25 L36 L37
FOR循环开始 FOR K5 / FOR D0(手册 4-3-4 是单操作数=循环次数;FOR D10 K5 两操作数为旧兼容)目标 · 数—L17
NEXT循环结束(回到对应 FOR)——L17
MOV传送 D0=K5数 · 目标
⚠ 1 个坑

源和目标不能重叠成双字:32 位或浮点传送时,源与目标不能共用同一个字。MOV 本身是单字,但配合后续的 DMOV/DFMOV 时要看清占用范围。[引] 数据类型节

L06 L07 L08 L13 L16 L17 L18 L21+6
DMOV双字传送 DMOV S D(32位)数 · 目标—L06 L18 L19 L24 L25 L28 L33 L34+4
CML取反传送数 · 目标—L15
BMOV块传送(点数n)数 · 目标 · 常数
⚠ 1 个坑

批量传送会整段覆盖:BMOV 从起始地址连续搬 N+1 个字。中间的寄存器如果还有用,会被一起冲掉。[讲] L16 传送家族

L08 L16
BCDBIN→BCD 转换:BCD S D(源 S 的二进制转为 BCD 码存入 D)数 · 目标—L21
BINBCD→BIN 转换:BIN S D(源 S 的 BCD 码转二进制存入 D)数 · 目标
⚠ 1 个坑

时钟寄存器读出来不是十进制:★ TRD 读进 SD13~SD19 的值不是十进制,要用 BIN 或 TRD 指令转成十进制再用。[官] PD05 第13章 Q27(书页 548)

L21
CMP比较: M0</==/> 标志数 · 数 · 目标—L06 L10 L11 L12
ZCP区间比较数 · 数 · 数 · 目标—L11 L12 L22
ADD加法 D=D+K数 · 数 · 目标
⚠ 1 个坑

运算寄存器尽量用偶数:加减乘除的结果最好落在偶数号寄存器,尤其除法 —— 32 位结果会占两个连续的号,奇数号会跟下一个数撞上。[讲] 培训资料口径

L13 L15 L26
SUB减法数 · 数 · 目标—L13
MUL乘法数 · 数 · 目标
⚠ 1 个坑

16 位乘法结果是 32 位:MUL 做 16 位乘法,结果占 2 个字。只给 1 个字的结果位会算错。[讲] 培训资料口径

L13
DIV除法数 · 数 · 目标
⚠ 1 个坑

★ 余数会占掉下一个寄存器:D0 ÷ D2,商不是整数时,余数会放进 D11。如果 D11 是你还要用的数,就会被冲掉。[讲] 培训资料口径

L13 L22
INC加1目标—L14 L17 L25 L37 L40 L41 L42 L43
DEC减1目标—L14
DADD32位加法 (D+1,D)=S1+S2数 · 数 · 目标——
DSUB32位减法 (D+1,D)=S1-S2数 · 数 · 目标——
DMUL32位乘法 64位结果→(D+3..D)数 · 数 · 目标
⚠ 1 个坑

★★ 32×32=64 位,结果占 4 个字:DMUL D0 D2 D10 两个乘数都是 32 位(D1,D0 与 D3,D2),乘积 64 位占 D10~D13 四个寄存器。官方原话:「用户往往会忽略这一点在程序中使用了 D12~D13,进而导致运算时数据出错」。[官] PD05 第13章 Q14(书页 545)

—
DDIV32位除法 商→(D+1,D) 余数→(D+3,D+2)数 · 数 · 目标——
DINC32位加1 (D+1,D)+1目标—L14
DDEC32位减1 (D+1,D)-1目标——
DCMP32位比较 M0> M1= M2<数 · 数 · 目标—L11
DWAND32位与 (D+1,D)=S1&S2数 · 数 · 目标——
DWOR32位或 (D+1,D)=S1|S2数 · 数 · 目标——
DWXOR32位异或 (D+1,D)=S1^S2数 · 数 · 目标——
WAND字与数 · 数 · 目标—L15
WOR字或数 · 数 · 目标—L15
WXOR字异或数 · 数 · 目标—L15
NEG取补目标—L15
ROR循环右移n位目标 · 常数—L20
ROL循环左移n位目标 · 常数—L20
SHL算术左移n位(补0)目标 · 常数—L20
SHR算术右移n位(补0)目标 · 常数—L20
SFTR位右移数 · 目标 · 常数 · 常数—L20
SFTL位左移数 · 目标 · 常数 · 常数—L20
ZRST区间复位(支持D/C等区间)位—L16
DECO解码数 · 目标 · 常数—L21
ENCO编码数 · 目标 · 常数—L21
MEAN求平均值数 · 目标 · 常数—L14
SWAP高低字节交换:SWAP D0(D0 高8位与低8位互换)目标—L16
DRVI相对定位:DRVI S0脉冲数 S1频率 S2加减速ms D0脉冲口 D1方向口数 · 数 · 数 · 位 · 位
⚠ 1 个坑

相对定位会累加位置:DRVI 是相对定位:每次执行都在当前基础上累加。要去绝对坐标用 DRVA。[讲] L18 脉冲定位

L18 L19 L34 L40 L41 L42
DRVA绝对定位:DRVA S0目标位置 S1频率 S2加减速ms D0脉冲口 D1方向口数 · 数 · 数 · 位 · 位
⚠ 1 个坑

用绝对定位前必须先回零:★ 设备一上电轴停在哪谁也不知道,必须先 ZRN 回零才能用绝对定位。[讲] L19 机械归零

L18 L19 L34
PLSR多段脉冲:PLSR S0数据起始地址 S1用户参数块 S2系统参数块K0~K4 D脉冲口数 · 数 · 数 · 位
⚠ 1 个坑

段表每段固定 10 个字:PLSR 的段表每段占 10 个字,段数写错了会读越界或只走第一段。[讲] L32 多段脉冲

L32 L33
PLSF变频脉冲:PLSF S0频率(负=反向) S1系统参数块K0~K4 D脉冲口数 · 数 · 位—L33 L34 L37
ZRN机械归零:ZRN S系统参数块K0~K4 D脉冲口(VH/VC 取参数面板回零速度)数 · 位
⚠ 1 个坑

★ 回零分三段速度:找原点开关(慢)→ 离开原点(快)→ 找原点(中),三个速度填在 K0~K2。只填一个速度是最常见的错误。[讲] L19 机械归零

L19
STOP脉冲停止:STOP S脉冲口 D方式(K0缓停/K1急停)。★同名重载:STOP ETn = 停止精确定时(手册 10-3 p388 例原文 STOP ET0),按 D1 设备区分位 · 数
⚠ 1 个坑

缓停保留余量,急停清零:★ 缓停(K0)保留剩余脉冲,之后能用 GOON 接着发完;急停(K1)清零,接不上,只能重新发。[讲] L34 脉冲停止与继续

L34 L36 L37
GOON脉冲继续:GOON S脉冲口位—L34
A_PWR轴使能[电平触发]:A_PWR S0输出状态字 S1输出状态位(PwrStat) S2轴号字 · 位 · 数
⚠ 2 个坑

★★ 电平型,忘了合就报 1001:A_PWR 是 12 条里唯一的电平型(常开/闭线圈触发),其余全部上升沿触发。X0 不通 ⇒ 轴未使能 ⇒ A_MOVEA 直接报 1001、轴一动不动,而且画面看起来完全正常。[实] a211 开发时踩到;[官] PD05 Q11「not click RUN for program」同源

适用机型只有 XDH/XLH/XG2:★ 总线轴只在 XDH / XLH / XG2 上支持(且须 SFD811=1)。XD/XL 跑这些指令报 1040 轴索引超限。[引] 高级运动控制篇 PD11

L44
A_RST轴错误清除[沿触发]:A_RST S0输出状态字 S1输出状态位(Done/Busy/Error) S2轴号字 · 位 · 数
⚠ 1 个坑

状态位不会自动复位:★ 手册 PLCopen 口径:A_RST 执行成功后,状态位不会自动复位,须手动 RST。[引] PD11

—
A_STOP停止运动:A_STOP S0输入参数起始(减速/Jerk/StopMode) S1输出状态字 S2输出状态位 S3轴号字 · 字 · 位 · 数
⚠ 2 个坑

★★ 减速停止是停在半路,不是到目标:StopMode:K0 减速停 / K1 急停 / K2 急停并关使能。减速距离 = v²/(2d),减速度取「当前运动指令减速度」与「A_STOP 减速度」的较大值。所以喊停后轴会停在当前位置前方一点,不会走到目标。[引] PD11 1.4.3;[实] a211 修复后实测:4000 的行程中途喊停,停在 571

错误停止中要先 A_RST:轴处于「错误停止」状态时执行 A_STOP 会报 1000,必须先 A_RST 清错。[引] PD11

L44
A_MOVEA绝对位置运动:A_MOVEA S0输入参数起始(位置/速度/加减速/Jerk/缓存模式) S1输出状态字 S2输出状态位 S3轴号字 · 字 · 位 · 数
⚠ 3 个坑

★★ 参数区是 FP64,一个数占 4 格:参数区从 S0 起共 23 格(+0 位置 / +4 速度 / +8 加速度 / +12 减速度 / +16 Jerk / +20 持续更新 / +22 缓存模式)。每个数是双精度浮点,占 4 个连续字、小端低字在前:1000.0 写成 0 / 0 / 16384 / 16527。读数条上首地址那一格是 0,这是正常的。[引] 高级运动控制篇 PD11 1.4.3

★ 别把别的指令参数区塞进 D10~D32:A_STOP 参数区放 D20 会压住 A_MOVEA 的 D22~D25 减速度区,减速度读成非 0 极小值 ⇒ 轴永远停不下来且不报错。[实] a211 开发时实测

零位移不产生完成沿:目标位置与当前位置相同(差 < 1e-6)时不启动运动、不产生虚假完成沿。别靠「发一次让它动一下」来测试。[实] 引擎实现口径

L44
A_MOVER相对位置运动:A_MOVER S0输入参数起始(位移/速度/加减速/Jerk/缓存模式) S1输出状态字 S2输出状态位 S3轴号字 · 字 · 位 · 数
⚠ 1 个坑

第一个数是位移不是坐标:参数结构与 A_MOVEA 完全一样,但第一个数是走多远。走两趟各 500 = 一次走到 1000。[讲] L44 第3段

L44
A_VELMOVE速度控制运动:A_VELMOVE S0输入参数起始(速度/加减速/Jerk/方向) S1输出状态字 S2输出状态位 S3轴号字 · 字 · 位 · 数——
A_ZRN回原点:A_ZRN S0输出状态字 S1输出状态位(Done/Busy/Active/Abort/Error) S2轴号字 · 位 · 数
⚠ 2 个坑

★ 运动中/同步中不能回零:官方口径:轴正在运动或同步中不可回零,发了会报错(引擎报 1035)。要等位置停稳再发。[引] PD11 1.4.3;[实] a211 探针实测报 1035

速度不用你给:A_ZRN 只有三个操作数(状态字/状态位/轴号),速度取的是回零速度设置。[讲] L44 第6段

L44
A_GEARIN齿轮绑定:A_GEARIN S0输入参数起始(主轴号/数据源/同步比分子分母/加减速) S1输出状态字 S2输出状态位(InGear) S3从轴号字 · 字 · 位 · 数
⚠ 1 个坑

S3 是从轴号,主轴号在 S0 里:★ 齿轮绑定:S3 是从轴号,主轴号写在 S0+0 寄存器里 —— 这两个别弄反,填反了从轴不动作。[引] 引擎实现注释(依手册)

—
A_GEAROUT齿轮解绑:A_GEAROUT S0输入参数起始(减速/Jerk) S1输出状态字 S2输出状态位 S3从轴号字 · 字 · 位 · 数——
CAMTBLSEL凸轮表加载:CAMTBLSEL S0输入参数起始(表号/循环/主从绝对) S1输出(CamtblID/ErrCode) S2输出状态位字 · 字 · 位——
CAMIN凸轮启动:CAMIN S0输入参数起始(主/从轴号/表实例/启动模式/倍率偏移) S1输出(Index/ErrCode) S2输出状态位(InSync)字 · 字 · 位——
CAMOUT凸轮解除:CAMOUT S0输入参数起始(从轴号) S1输出(ErrCode) S2输出状态位字 · 字 · 位——
X_FLYSAW追剪[沿触发]:X_FLYSAW S0输入参数起始(28字) S1输出(ErrCode/段号/返回距离) S2输出状态位(InSync在同步区)字 · 字 · 位——
PLSY[非信捷·三菱FX兼容]脉冲输出:频率,脉冲数,输出Y常数 · 常数 · 位
⚠ 1 个坑

不接受 K 作为脉冲个数:PLSY 第一个操作数不能是常数 K(数量必须是寄存器),否则脉冲发不出去。[讲] L33 可变频率脉冲

—
DPLSR[非信捷·三菱FX兼容]双速脉冲:S1最高频 S2脉冲数 D输出Y数 · 数 · 位——
SPD脉冲密度/测速:SPD X0 K100 D0(统计窗口内脉冲数→频率Hz)位 · 常数 · 目标——
TRD读实时时钟:TRD D0(D0~D6=年/月/日/时/分/秒/星期)目标
⚠ 3 个坑

★ 读出来不是十进制:官方原话:「如果您使用的 PLC 带有时钟功能,请检查寄存器 SD13~SD19 里的值是否为十进制,如果不是,您需要通过 BIN 指令或者 TRD 指令将其转化为十进制。」[官] PD05 第13章 Q27

★ 时钟会不准:每月约 ±5 分钟:官方原文:「XD/XL 系列 PLC 的时钟存在一定的误差,误差大约为每月 ±5 分钟。」做长时间计时的场合要考虑这个。[官] PD05 第13章 Q27

有些机型不带时钟:XC3 系列 14 点 PLC 及一体机 XP1 系列不带时钟。买之前确认型号。[官] XC 系列常见问题 Q6

L23
TWR写实时时钟:TWR D0(教学版仅记录,不改系统时间)目标—L23
PIDPID调节:PID 设定值 当前值 输出 参数块(参数块起址D: Kp/Ki/Kd)数 · 数 · 目标 · 目标——
DACMP日期比较:DACMP Y M D 当前日期基址 结果位基址(M0>M1=M2<,锁机常用)目标 · 目标 · 目标 · 目标 · 目标—L23
MODRDModbus读:MODRD 从站 首址 点数 目标D(读保持寄存器到D)常数 · 常数 · 常数 · 目标
⚠ 1 个坑

站号 0 是广播,不能用:Modbus 站号 0 是广播地址(只发不答)。设备通信时不能把从站设成 0。[引] 通讯章

—
MODWRModbus写:MODWR 从站 首址 源值(K/D)(写保持寄存器)常数 · 常数 · 数——
RS自由串口:RS 发送D 发送字数 接收D 接收字数(无协议回显)目标 · 常数 · 目标 · 常数——
DI禁止中断(手册 10-4):DI~EI 区间内所有外部中断与定时中断都不响应(计数/计时本身照走,只是中断不进来、也不补发)。★ 独立指令,不受触点门控——L37
EI允许中断(手册 10-4):解除 DI。★ PLC 平时就呈允许中断状态 —— 不需要禁止区间时,只写 EI 甚至不写都可以——L37
LDD直接取(常开触点)位
⚠ 1 个坑

我们 44 门课还没讲这条:LDD/OUTD 等立即执行指令:不等本扫描周期算完,立刻在扫描中点执行。用于「改了条件必须当拍生效」的地方。[官] PD05 第13章 Q5 —— ★ 我们 44 门课尚未覆盖

—
LDDI直接取反(常闭触点)位——
ANDD直接串联常开位——
ANDDI直接串联常闭位——
ORD直接并联常开位——
ORDI直接并联常闭位——
OUTD直接输出线圈位——
LSL逻辑左移 LSL D0 K4目标 · 常数——
LSR逻辑右移 LSR D0 K4目标 · 常数—L20
SQRT平方根 SQRT S D数 · 目标——
TMR_A_FB带电保持反馈定时器位 · 常数 · 常数——
TMR_FB反馈定时器位 · 常数 · 常数——
ASCIASCII 转换 ASCI S D n数 · 目标 · 常数—L21
BDWTDBCD字→D转换数 · 目标——
BECONBCD编码 BECON S D n数 · 目标 · 常数——
DFLT32位整数→单精度浮点 DFLT S D数 · 目标
⚠ 1 个坑

双精度占 4 个字:D 开头的双精度指令(DADD/DFLT/DDIV…)结果占 4 个字,与 DMUL 同理。[引] 数据类型节

—
DFLTD32位整数→双精度浮点 DFLTD S D数 · 目标——
DINT单精度浮点→32位整数 DINT S D(四舍五入)数 · 目标——
DINTD双精度浮点→32位整数 DINTD S D(四舍五入)数 · 目标——
DWTD双字→D转换 DWTD S D数 · 目标——
ENCOL编码(长度) ENCOL S D n数 · 目标 · 常数——
FLT16位整数→单精度浮点 FLT S D数 · 目标
⚠ 1 个坑

整数转浮点,寄存器要留够 2 个字:FLT D4 D6 是单精度浮点,占 D6、D7 两个寄存器。后面接着用 D7 会出错。[引] 数据类型节

L21 L22
FLTD64位整数→单精度浮点 FLTD S D数 · 目标——
INT单精度浮点→16位整数 INT S D(四舍五入)数 · 目标
⚠ 1 个坑

和小数用 E 系列才对:单精度浮点用 INT,双精度用 DINT。混用会得到看着合理的错数。[引] 数据类型节

L21 L22
GBIN格雷码→二进制 GBIN S D数 · 目标——
GRY二进制→格雷码 GRY S D数 · 目标——
HEXASCII 转十六进制 HEX S D n数 · 目标 · 常数—L21
HTOSH→S 转换 HTOS S D数 · 目标—L23
QFLTDQ浮点→双字整数 QFLTD S D数 · 目标——
QINTDQ整数转换 QINTD S D数 · 目标——
STOHS→H 转换 STOH S D数 · 目标—L23
WTD字→D转换 WTD S D数 · 目标——
XCH数据交换 XCH D0 D1目标 · 目标—L16 L17
TADD时钟加法 TADD S1 S2 D数 · 数 · 目标—L23
TCMP时间比较:TCMP 基准时 基准分 基准秒 时钟基址 结果位基址(M0基准>时钟/M1=/M2<,与DACMP同形)目标 · 目标 · 目标 · 目标 · 目标—L23
TSUB时钟减法 TSUB S1 S2 D数 · 数 · 目标—L23
WAITBLOCK等待 WAIT SEM0(等信号量)/ WAIT K1 K50(单位1ms×50)位 · 数
⚠ 1 个坑

WAIT 会卡住块内后续所有行:WAIT 等的是位元件,条件没满足时块内后面的指令全都不执行。所以等待点要放在真正需要等的那一步之后。[讲] L42 块里怎么等信号

L42
ACOS反余弦 ACOS S D数 · 目标——
ASIN反正弦 ASIN S D数 · 目标——
ATAN反正切 ATAN S D数 · 目标——
COS余弦 COS S D数 · 目标——
SIN正弦 SIN S D数 · 目标—L22
TAN正切 TAN S D数 · 目标——
EADD浮点加 EADD S1 S2 D数 · 数 · 目标—L22
ESUB浮点减 ESUB S1 S2 D数 · 数 · 目标—L22
EMUL浮点乘 EMUL S1 S2 D数 · 数 · 目标—L22
EDIV浮点除 EDIV S1 S2 D数 · 数 · 目标
⚠ 1 个坑

浮点除法注意除数为 0:浮点运算前先确认除数不为 0;E 前缀指令的结果是单精度(占 2 个字),不是双精度。[引] 数据类型节

L22
EMOV32位浮点传送 EMOV S D(2字,REAL)数 · 目标—L22
EDMOV64位浮点传送 EDMOV S D(4字,LREAL)数 · 目标——
ECMP浮点比较 ECMP S1 S2 D数 · 数 · 目标—L22
ECON浮点编码 ECON S D n数 · 目标 · 常数——
ESQR浮点平方根 ESQR S D数 · 目标—L22
EDADD64位浮点加 EDADD S1 S2 D(LREAL 4字)数 · 数 · 目标——
EDSUB64位浮点减 EDSUB S1 S2 D(LREAL 4字)数 · 数 · 目标——
EDMUL64位浮点乘 EDMUL S1 S2 D(LREAL 4字)数 · 数 · 目标——
EDDIV64位浮点除 EDDIV S1 S2 D(LREAL 4字)数 · 数 · 目标——
EDCMP64位浮点比较 EDCMP S1 S2 D数 · 数 · 目标——
EXP指数 EXP S D数 · 目标——
LN自然对数 LN S D数 · 目标——
LOG常用对数 LOG S D数 · 目标——
EZCP浮点区间比较 EZCP S1 S2 S3 D数 · 数 · 数 · 目标—L22
WSFL字左移 WSFL S D n1 n2(S 每次移入 D 低 n2 字)数 · 目标 · 常数 · 常数—L20
WSFR字右移 WSFR S D n1 n2(S 每次移入 D 高 n2 字)数 · 目标 · 常数 · 常数—L20
DSHL32位算术左移 DSHL D0 Kn(补0)目标 · 常数——
DSHR32位算术右移 DSHR D0 Kn(补0)目标 · 常数——
DLSL32位逻辑左移 DLSL D0 Kn目标 · 常数——
DLSR32位逻辑右移 DLSR D0 Kn目标 · 常数——
DROL32位循环左移 DROL D0 Kn目标 · 常数——
DROR32位循环右移 DROR D0 Kn目标 · 常数——
DCML32位取反传送 (D+1,D)=~(S+1,S)数 · 目标——
DNEG32位取补 DNEG D0目标——
DXCH32位数据交换 DXCH D0 D2目标 · 目标——
DZCP32位区间比较 DZCP S1 S2 S3 D数 · 数 · 数 · 目标—L12
DMEAN32位求平均值 DMEAN S D n数 · 目标 · 常数——
DFMOV32位多点传送 DFMOV S D n数 · 目标 · 常数——
DGRY32位二进制→格雷码 DGRY S D数 · 目标——
DGBIN32位格雷码→二进制 DGBIN S D数 · 目标——
COLR线圈读 COLR 局号 远端线圈首址 个数 本地线圈M 串口(Modbus 01H,最多2000)数 · 数 · 数 · 位 · 常数—L26 L28
INPR输入线圈读 INPR 局号 远端线圈首址 个数 本地线圈M 串口(02H,最多2000)数 · 数 · 数 · 位 · 常数
⚠ 1 个坑

参数不一致是首选排查项:沟通不通时,先把两边的波特率/校验/数据位/停止位/站号逐项对齐,再怀疑线。[官] PD05 第13章 Q10

L28
COLW单个线圈写 COLW 局号 远端线圈首址 本地线圈M 串口(05H)数 · 数 · 位 · 常数—L28
MCLW多个线圈写 MCLW 局号 远端线圈首址 个数 本地线圈M 串口(0FH,最多1976)数 · 数 · 数 · 位 · 常数—L26 L28
REGR寄存器读 REGR 局号 远端寄存器首址 个数 本地寄存器D 串口(03H,最多125)数 · 数 · 数 · 目标 · 常数
⚠ 1 个坑

★ 排查三步:参数 → 线 → 口:官方给的通讯失败归因:① 通讯参数不一致(XC 出厂 19200/偶校验/8/1/站号 1;FC 出厂 9600/奇校验/8/1/站号 1);② 通讯线接触不良或接错;③ 串口损坏。[官] XC 系列常见问题 Q7 / PD05 Q10

L26 L28 L29 L31
INRR输入寄存器读 INRR 局号 远端寄存器首址 个数 本地寄存器D 串口(04H,最多125)数 · 数 · 数 · 目标 · 常数—L28
REGW单个寄存器写 REGW 局号 远端寄存器首址 本地寄存器D 串口(06H)数 · 数 · 目标 · 常数
⚠ 1 个坑

写进去读出来不一致 ⇒ 先怀疑地址换算:★ 同一个「写地址零」,读回来对不上是最常见的 Modbus 故障:四区(线圈/输入线圈/保持寄存器/输入寄存器)在手册里各有两套编号(如 40001 与 0、30001 与 1、10001 与 3),差一个偏移就全错。[讲] L28 地址与数据格式

L26 L28
SEND发送数据 SEND 本地发送首址 字节数 串口(自由格式,上升沿发一次)目标 · 数 · 常数—L29 L30
RCV接收数据 RCV 本地接收首址 字节数 串口(自由格式,收完 SM143+10n 置 ON)目标 · 数 · 常数—L29 L30
RCVST释放串口 RCVST 串口编号(上升沿一次,把 SM143+10n 清 0)常数—L29
CFGCR串口参数读 CFGCR 本地寄存器D 参数个数 串口(HD0网络种类…HD7发送前延时)目标 · 数 · 常数—L27
CFGCW串口参数写 CFGCW 本地寄存器D 参数个数 串口目标 · 数 · 常数—L27
S_OPEN创建TCP连接/UDP端口监听 S_OPEN 套接字ID 通讯类型K0UDP/K1TCP/K2组播 工作模式K0服务器/K1客户端 参数块首址 标志首址(边沿一次;参数块占10字、标志占10位)数 · 数 · 数 · 目标 · 位—L31
S_CLOSE通讯终止 S_CLOSE 套接字ID(边沿一次;关闭后该套接字的 M_TCP/S_SEND/S_RCV 都不能再执行)数—L31
S_SEND以太网自由格式发送 S_SEND 套接字ID 本地发送首址 字节数(边沿一次;8位缓冲只发低字节、16位缓冲高低字节都发且低字节在前)数 · 目标 · 数—L31
S_RCV以太网自由格式接收 S_RCV 套接字ID 本地接收首址 字节数(收完 M(n+5) 已接收标志置ON)数 · 目标 · 数—L31
M_TCPMODBUS TCP 通讯 M_TCP 远端站号K0~K247 功能码K1~K6/K15/K16 目标首地址 数量 本地首址 套接字ID(PLC作客户端时有效,目标端口必须502)数 · 数 · 数 · 数 · 位 · 数—L31
IPSETIP地址设置 IPSET 本地寄存器首址 个数K4/K12 串口号K9(K4只写IP;K12再写子网掩码+默认网关)目标 · 数 · 数—L31
BPC_TEMP_PID温度PID BPC_TEMP_PID 设定 当前 输出 参数数 · 数 · 目标 · 目标——
FWRTFlashROM写入 FWRT 源 目标(FD/SFD) [个数]数 · 字 · 数—L08
DFWRTFlashROM写入(双字) DFWRT 源 目标(FD/SFD) [组数]数 · 字 · 数——
QFWRTFlashROM写入(四字) QFWRT 源 目标(FD/SFD,地址须偶) [组数]数 · 字 · 数——
MRGW多个寄存器写 MRGW 局号 远端首址 个数 本地首址 串口(Modbus 10H)数 · 数 · 常数 · 数 · 常数—L26 L28
MSET批次置位 MSET M10 M120(起止同类型位元件)位 · 位—L16
STR精确定时 STR ET0 K100(D1=精确定时器 ET,只取偶数 ET0~ET24;D2=定时值 ms,32 位 BIN,可 K 或寄存器)位 · 数—L36
LIN直线插补 LIN S0轴1目标 S1轴2目标 D0轴1脉冲口 D1轴2脉冲口(须在SBLOCK块内)数 · 数 · 位 · 位—L43
CW顺圆插补 CW S0轴1终点 S1轴2终点 S2轴1圆心 S3轴2圆心 D0轴1脉冲口 D1轴2脉冲口数 · 数 · 数 · 数 · 位 · 位—L43
CCW逆圆插补 CCW S0轴1终点 S1轴2终点 S2轴1圆心 S3轴2圆心 D0轴1脉冲口 D1轴2脉冲口数 · 数 · 数 · 数 · 位 · 位—L43
DRV[未实现]相对驱动 DRV 脉冲数 频率 脉冲Y 方向Y数 · 数 · 位 · 位——
FOLLOW[未实现]跟随 FOLLOW 目标 脉冲Y数 · 位——
FOLLOW_AB[未实现]AB相跟随 FOLLOW_AB 目标 脉冲Y数 · 位——
FROM模块读 FROM 模块号 缓冲首址 字数 本地寄存器首址(例 FROM K10000 K0 K2 D0)数 · 数 · 数 · 数——
TO模块写 TO 模块号 缓冲首址 字数 本地寄存器首址(例 TO K10000 K0 K2 D0)数 · 数 · 数 · 数——
MSC多工位控制 MSC 触发点 高速计数号 工位/工件/滤波首址 基准/偏差首址 索引/比较首址 输出首址位 · 数 · 目标 · 目标 · 目标 · 位—L39
POST信号量置位 POST SEM0(边沿触发,可保持;SEM0~SEM31)位—L42
SKIPBLOCK忽略条件 SKIP M3(ON 则跳过紧随其后的那一条;只允许 X/M)位—L41
PWM脉宽调制 PWM 占空比(1~65535) 频率(0.1Hz) 输出端口数 · 数 · 位—L35
READSD读 SD 卡 READSD 索引列行首址 字数 存放首址目标 · 数 · 目标—L38
WRITESD写 SD 卡 WRITESD 索引列行首址 字数 数据首址目标 · 数 · 目标—L38
GROUP顺序块组开始 GROUP n数——
GROUPE顺序块组结束 GROUPE n数——
SBGOON继续执行已暂停的BLOCK SBGOON 块号 方式(K0 续发剩余脉冲/K1 舍弃未发完)数 · 数—L42
SBLOCK顺序功能块开始 SBLOCK 块号(1~100)数
⚠ 3 个坑

★ 上升沿 vs 常闭导通,行为完全不同:官方原话:上升沿触发 = 条件触发时,块从上到下顺序执行;常闭导通 = 条件触发后,块会继续往下执行。选错了会出现「只走一步」或「一口气跑完」。[官] PD05 第13章 Q20(书页 546)

块里的脉冲指令要留够时间:块内是排队执行的,脉冲类指令没发完,后面的行不会执行。所以用 SBLOCK 跑定位时,行程时间必须大于动作时间。[讲] L41 块里怎么排队

块里用 LD(常开)会循环执行:★★ 想让块只走一遍,触发条件必须用上升沿;用 LD(常开)时条件一通就反复执行,计数器会一直加。[实] L41 课程制作时发现并写入讲义

L40 L41 L42 L43
SBLOCKE顺序功能块结束 SBLOCKE 块号(1~100)数—L40 L41 L42 L43
SBSTOP暂停BLOCK的执行 SBSTOP 块号 方式(K0 缓停/K1 立即停/K2 毁灭缓停/K3 毁灭立即停)数 · 数
⚠ 1 个坑

暂停后要用 SBGOON 继续:SBSTOP 暂停、SBGOON 继续,成对使用。暂停期间块内状态保持。[讲] L42 块里怎么等信号

L42
CNT_D32位高速计数 CNT_D C0 K5位 · 常数——
CNT_D_FB32位高速计数(反馈) CNT_D_FB C0 K5 K位 · 常数 · 常数——
CNT_FB高速计数(反馈) CNT_FB C0 K5 K位 · 常数 · 常数——
DCNT_D_FB32位掉电保持高速计数(反馈) DCNT_D_FB HC0 K5 K位 · 常数 · 常数——
DCNT_FB掉电保持高速计数(反馈) DCNT_FB HC0 K5 K位 · 常数 · 常数——
FRQM频率测量 FRQM 采样个数 结果寄存器 输入端口 精度档数 · 目标 · 位 · 数—L35
FMOV多点重复传送 FMOV S D n(同一值复制 n 点)数 · 目标 · 常数—L16
PMOV数据块传送 PMOV S D n(同 BMOV,速度更快)数 · 目标 · 常数——

光查指令不够?把 44 门课从「怎么写」讲到「会怎么错」

指令讲堂 44 门课全部免费,含音频、梯形图与讲稿,电脑端还能看 3D 数字人讲师。

进指令讲堂 打开在线仿真器