A 为主 PLC(主机,发起读写指令),B 为从 PLC(从站,响应指令),主机直接读写从站 DO 数字输出点,完整步骤 + 寄存器对应规则 + 梯形图实例(三菱 FX、西门子 S7-1200、欧姆龙 CP1H 分开说明)。
一、Modbus 从站 PLC 输出点映射规则
Modbus 标准寄存器分类(RTU)
线圈寄存器:地址 00001~09999 → 单个 bit,对应数字量输出 DO、数字量输入 DI
0x 地址域(线圈):可读、可写;适合单独控制某一个输出点 ON/OFF
保持寄存器:地址 40001~49999 → 16bit 字,批量一次性操作一组 8/16 个 DO
从站 PLC DO 点标准映射规则
以从站第一个数字输出点为例:
从站 Y0(Q0.0) → Modbus 线圈地址 00001(0x0000)
Y1(Q0.1) → 00002(0x0001)
Y2(Q0.2) → 00003(0x0002)偏移规律:线圈实际偏移号 = 输出点序号,线圈绝对地址 = 偏移 + 1
两种控制方式
单点控制:主机发「写单个线圈」指令(05H),单独置位 / 复位某个 DO;
批量多点控制:主机发「写多个线圈」指令(0FH),一次性批量控制连续多个输出。
二、硬件接线(统一 485)
两台 PLC 各自 RS485-A、485-B 手拉手接线:
主机 SDA ↔ 从站 SDA(A 线)
主机 SDB ↔ 从站 SDB(B 线)两端 485 终端电阻只一头拨入,屏蔽层单端接地。
关键参数统一(主从必须完全一致)
波特率:9600/19200数据位:8,校验:无,停止位:1从站站号唯一:从站设站号 = 1,主机访问地址 1。
三、分品牌实操教程
场景 1:三菱 FX3U/FX5U 做主站,另一台 FX 做从站(Modbus RTU)
1)从站 PLC 设置(FX)
加装 FX3U-485-BD 板;
寄存器 D8120 设置通信格式:H0009(9600,8,N,1,Modbus 从站);
M8142=ON,启用 Modbus 从站模式,设定从站站号 D8121=1;
PLC 自带 Modbus 从站自动映射:Y0~Y17 自动对应线圈 00001~00016,无需手动映射。
2)主机 PLC 编程(FX 做主站,MODWR 指令写 DO)
方式 1:单点控制(05 指令,单独 Y0 置 ON)
MODWR S1 S2 D1 D2S1:从站站号 = K1S2:Modbus 线圈地址 K0(对应 00001,Y0)D1:写入值 K1(1=ON,0=OFF)D2:通讯状态存储寄存器
梯形图:
plaintext
LD X0 MODWR K1 K0 K1 D0 // X0接通,从站1号Y0=ON LD X1 MODWR K1 K0 K0 D0 // X1接通,从站1号Y0=OFF
方式 2:批量控制连续多个输出(0FH 指令)
一次性同时改写 Y0~Y7 八个输出点,主机用 MODWR 批量写多线圈。
场景 2:西门子 S7-1200 互相 Modbus RTU 通信
从站设置(S7-1200 MB_SLAVE)
CM1241 RS485 模块;调用 FB
MB_SLAVE设置端口参数、从站站号 = 1;
建立 DB 块映射 Q 输出区,将 Q0.0~Q1.7 映射到 Modbus 线圈区;Modbus 线圈 0 对应 Q0.0,线圈 1 对应 Q0.1……
主机设置(S7-1200 MB_MASTER)
调用MB_MASTER主站功能块:
功能码 05:写单线圈
Slave=1,Addr=0(Q0.0),Data=1 → 从站 Q0.0 置 1
功能码 15(0FH):批量写连续多个 DO 点。
场景 3:欧姆龙 CP1H 互作 Modbus-RTU
从站 CP1H:Modbus-RTU 从站
串口 2 设置为 Modbus 从站,站号 1;
CIO100 通道(内置输出 Y)自动映射线圈:CIO100.00 → 线圈 00001
主机 CP1H:用 TXD/RXD 或者 MODWR 主站指令
发送 05H 单线圈写入帧,直接远程置位 / 复位从站 CIO100.00 输出。
四、通用 Modbus 指令报文举例(调试用)
从站站号 = 1,控制 Y0(线圈 00001,偏移 0)
1)05H 单点置 ON
发送帧:01 05 00 00 FF 00 8C 3A含义:01:从站地址05:写单线圈0000:线圈偏移地址 0(Y0)FF00:强制 onCRC 校验:8C3A从站正常应答完全相同报文。
2)05H 单点置 OFF
发送帧:01 05 00 00 00 00 CD CA
3)0FH 批量写多个线圈示例
一次性改写 Y0~Y3 四个输出,按需批量远程控制多台阀门。
五、关键注意要点
区分线圈 / 保持寄存器DO 是 bit 点位,必须用0x 线圈地址、05/0FH 指令;不能用 4x 保持寄存器(字)直接写,点位不会动作。
从站 PLC 务必切换到 RUN 模式,STOP 模式远程无法修改输出端子。
接线 A/B 不能交叉接,交叉后完全无应答;
通讯轮询间隔不能太短,主站不要每秒无限次发写指令,容易总线拥堵;
远程修改从站 DO 时,从站本地程序也可以同时操作该输出,存在逻辑竞争:例:从站本地程序 Y0 自锁 ON,主机远程发 OFF 指令,会瞬间被本地程序重新置 ON,表现为 “远程控制无效”。✅ 解决办法:增加一个远程允许开关 M;只有 M=ON 时,从站本地程序不驱动 Y,全权交由主机 Modbus 远程控制。
六、应用架构总结
硬件:485A/B 对接,主从参数一致;
从站:开启 Modbus 从站,站号固定,DO 自动映射线圈;
主机:调用 Modbus 主站写线圈指令(05 单点 / 0FH 批量);
上位逻辑:主机内部按钮、联锁条件触发写指令,即可远程操控分机任意数字输出点。

