三菱 PLC(以 FX3U/FX5U/FX5UC 为主,FX2N 等老型号需扩展模块)的字符串传送是工业中解析扫码枪、通讯数据、显示文本的核心需求,核心依赖专用字符串指令(如MOVS/STRCAT/STRCPY)和字节传送指令(MOVB),以下按「字符串存储格式」「核心指令」「实战案例」「故障排查」全维度讲解,覆盖主流应用场景。
一、核心前提:三菱 PLC 字符串存储规则
三菱 PLC 中,字符串以「长度字节 + 字符 ASCII 码」的格式存储在D 寄存器连续地址中,例:
二、字符串传送核心指令(按场景分类)
1. 基础指令:MOVS(字符串传送)
适用于「完整字符串整体传送」,是最常用的字符串指令,支持 D 寄存器和 S 软元件两种格式。
指令格式
plaintext
MOVS S D
示例 1:D 寄存器字符串传送(通用)
需求:将 D100 开始的 “ABC” 传送到 D200 开始的地址:
ladder
// 第一步:初始化源字符串“ABC”到D100-D103 LD M8000 MOV K3 D100 // 字符串长度=3 MOV H41 D101 // “A”→D101 MOV H42 D102 // “B”→D102 MOV H43 D103 // “C”→D103 // 第二步:字符串传送(D100→D200) LD X0 // X0触发传送 MOVS D100 D200 // 执行后:D200=3,D201=41H,D202=42H,D203=43H
示例 2:S 软元件字符串传送(FX3U/FX5U 便捷版)
需求:将 S0 中的 “HELLO” 传送到 S1:
ladder
LD M8000 SETS "HELLO" S0 // 直接给S0赋值字符串“HELLO”(自动存长度) LD X0 MOVS S0 S1 // S0→S1,无需手动处理长度
2. 进阶指令:STRCPY(字符串复制)/STRCAT(字符串拼接)
示例:字符串拼接 + 传送
需求:将 “ABC” 和 “123” 拼接为 “ABC123”,再传送到 D300:
ladder
// 初始化源字符串 LD M8000 SETS "ABC" S0 SETS "123" S1 // 拼接字符串:S0+S1→S2 LD X0 STRCAT S0 S1 S2 // S2=“ABC123” // 传送拼接后的字符串到D300 MOVS S2 D300 // D300=6,D301=41H,D302=42H…D306=33H
3. 兼容指令:MOVB(字节传送,适配老型号)
FX2N/FX1N 无专用字符串指令,需通过MOVB(字节传送)逐字节传送字符串:
示例:FX2N 传送 “ABC”(D100→D200)
ladder
LD M8000 // 源字符串初始化(D100=3,D101=41H,D102=42H,D103=43H) MOV K3 D100 MOV H41 D101 MOV H42 D102 MOV H43 D103 // 逐字节传送(长度+3个字符,共4字节) LD X0 MOVB D100 K0 D200 K0 // D100低8位(长度3)→D200低8位 MOVB D101 K0 D201 K0 // D101(A)→D201 MOVB D102 K0 D202 K0 // D102(B)→D202 MOVB D103 K0 D203 K0 // D103(C)→D203
4. 通讯场景:字符串与上位机 / 触摸屏传送
PLC 与触摸屏 / 上位机(如 MCGS、组态王)传送字符串,核心是「地址对齐 + ASCII 码匹配」:
示例:PLC→触摸屏显示 “生产批号:20251210”
三、实战案例:串口接收扫码枪字符串并传送
需求:FX3U 通过 RS232/485 接收扫码枪的条码字符串(如 “SN123456”),传送到 D1000 并转发到触摸屏。
步骤 1:串口配置(WPLSoft/GX Works2)
步骤 2:程序编写
ladder
// 步骤1:接收扫码枪字符串到S0 LD M8000 RCV D0 K0 K100 S0 // 串口接收100字节内的字符串→S0(RCV为串口接收指令) // 步骤2:字符串传送(S0→D1000,供触摸屏读取) LD M8161 // 接收完成标志 MOVS S0 D1000 // 传送条码字符串到D1000 // 步骤3:字符串长度校验(避免空数据) STR_LEN S0 D200 // 读取S0字符串长度→D200 LD D200 K0 // 长度=0时报警 OUT Y0 // Y0=ON,扫码失败报警
四、常见故障排查(字符串传送异常)
| 故障现象 | 排查方向 |
|---|---|
| 传送后字符串乱码 | 1. ASCII 码转换错误(如用十六进制直接存字符);2. 长度字节未正确设置;3. 通讯波特率不匹配 |
| 传送后字符串缺失 / 截断 | 1. 目标地址空间不足(如传送 8 字符但只分配 4 个 D 寄存器);2. MOVS指令未覆盖全部字符 |
老型号 PLC 无MOVS指令 | 1. FX2N/FX1N 需用MOVB逐字节传送;2. 扩展 FX-232ADP 模块后使用ASCI/HEX指令转换 |
| 触摸屏读取字符串为空 | 1. PLC 与触摸屏的字符串起始地址不一致;2. 长度字节未传送(触摸屏未识别长度);3. 通讯中断 |


