Appearance
Y301-220/222 技术手册
| Y301-220 | Y301-222 |
|---|---|
![]() | ![]() |
目录
1. 概述
本手册介绍 Y301-220、Y301-222 I/O 模块的 Modbus-RTU 通信指令与寄存器。
| 型号 | DI | DO | AI | 说明 |
|---|---|---|---|---|
| Y301-220 | 2 | 2 | 0 | 双输入 + 双继电器 |
| Y301-222 | 2 | 2 | 2 | 双输入 + 双继电器 + 双模拟输入 |
帧格式: [从站地址][功能码][数据][CRC低][CRC高]
以下示例均使用从站地址 0x01。
2. 默认设置
| 参数 | 默认值 |
|---|---|
| 设备地址 | 1 |
| 波特率 | 9600 bps |
| 数据位 | 8 |
| 停止位 | 1 |
| 校验位 | 无 |
| 输出状态保持 | 软重启保持(0x0040 = 1) |
| 脉冲计数模式 | 上升沿(0x0041 = 1) |
| 脉冲计数消抖 | 50 ms(0x0042 = 50) |
3. Modbus 地址映射(仅 Modbus 地址)
本章节只使用 Modbus 地址(0xXXXX),不使用 PLC 地址。
3.1 DI(离散输入,功能码 0x02)
| 通道 | Modbus 地址 | 读写 |
|---|---|---|
| DI1 | 0x0000 | RO |
| DI2 | 0x0001 | RO |
返回值:0=无输入,1=有输入。
3.2 DO(线圈,功能码 0x01/0x05/0x0F)
| 通道 | Modbus 地址 | 读写 |
|---|---|---|
| DO1 | 0x0000 | RW |
| DO2 | 0x0001 | RW |
写线圈值:0x0000=断开,0xFF00=闭合。
3.3 AI(输入寄存器,功能码 0x04,仅 Y301-222)
| 通道 | Modbus 地址 | 含义 | 单位 | 读写 |
|---|---|---|---|---|
| AI1 电压 | 0x0000 | AI1 电压采样值 | mV | RO |
| AI1 电流 | 0x0001 | AI1 电流采样值 | uA | RO |
| AI2 电压 | 0x0002 | AI2 电压采样值 | mV | RO |
| AI2 电流 | 0x0003 | AI2 电流采样值 | uA | RO |
说明:同一路 AI 同一时刻只能接电压或电流,另一寄存器值无效。
3.4 常用保持寄存器(参数,功能码 0x03/0x06/0x10)
| Modbus 地址 | 参数 | 字节数 | 读写 | 范围/枚举 | 默认值 |
|---|---|---|---|---|---|
0x002A | 运行从机地址(设备地址+拨码偏移) | 2 | RO | 0-255 | - |
0x002B | 拨码偏移地址 | 2 | RO | 0-31 | 0 |
0x003E | 设备地址 | 2 | RW | 1-255 | 1 |
0x003F | 广播模式 | 2 | RW | 0=关,1=接收并响应,2=接收不响应 | 0 |
0x0040 | 输出状态保持 | 2 | RW | 0=不保持,1=软重启保持,2=软重启+上电保持 | 1 |
0x0041 | 脉冲计数模式 | 2 | RW | 0=下降沿,1=上升沿 | 1 |
0x0042 | 脉冲计数消抖时间(ms) | 2 | RW | 5-255 | 50 |
0x004C | 串口心跳周期(s) | 2 | RW | 0=关闭,1-65535 | 0 |
0x004D | 串口心跳内容 | 16 | RW | 字符串 | - |
0x0055 | RTC 时间(Unix) | 4 | RW | uint32 | - |
0x0057 | 波特率 | 4 | RW | 600-230400 | 9600 |
0x0059 | 数据位 | 2 | RW | 8、9 | 8 |
0x005A | 停止位 | 2 | RW | 1、2 | 1 |
0x005B | 校验位 | 2 | RW | 0=None, 1=Odd, 2=Even | 0 |
0x005C | 打包时间(ms) | 2 | RW | 0-255(0=自适应) | 0 |
说明:
0x0057、0x0055等 32 位参数需按 大端字节序写入(高字在前)。- 厂家说明:串口参数和设备地址修改后需重启生效。
3.5 DI 脉冲计数寄存器(保持寄存器)
| 通道 | Modbus 地址 | 字节数 | 读写 | 说明 |
|---|---|---|---|---|
| DI1 计数 | 0x0500(占 0x0500~0x0501) | 4 | RW | 仅允许写 0 清零 |
| DI2 计数 | 0x0502(占 0x0502~0x0503) | 4 | RW | 仅允许写 0 清零 |
3.6 联动规则寄存器(保持寄存器)
Y301-220/222 的 DO 数量为 2,联动规则组数 = DO * 2 = 4 组。
| 规则组 | 起始 Modbus 地址 | 长度 |
|---|---|---|
| 规则1 | 0x0080 | 8 寄存器(16 字节) |
| 规则2 | 0x0088 | 8 寄存器(16 字节) |
| 规则3 | 0x0090 | 8 寄存器(16 字节) |
| 规则4 | 0x0098 | 8 寄存器(16 字节) |
单组字段结构:
| 偏移 | 字段 | 字节数 |
|---|---|---|
+0 | 模式 | 2 |
+1 | 动作 | 2 |
+2 | DO 编号 | 2 |
+3 | DI/AI 编号 | 2 |
+4~+5 | 参数1 | 4 |
+6~+7 | 参数2 | 4 |
3.7 特殊寄存器
| Modbus 地址 | 名称 | 写入值 | 说明 |
|---|---|---|---|
0x0800 | 重启 / 恢复出厂 | 0x5500=重启,0x0055 或 0x5555=恢复出厂并重启 | WO |
4. 指令示例(含 CRC)
提示:命令使用独立代码块展示时,VitePress 会在代码块右上角显示复制图标,可一键复制 Modbus 命令。
4.1 DI 查询(0x02)
| 操作 | 请求 |
|---|---|
| 读 DI1 | 01 02 00 00 00 01 B9 CA |
| 读 DI2 | 01 02 00 01 00 01 E8 0A |
| 批量读 DI1~DI2 | 01 02 00 00 00 02 F9 CB |
4.2 DO 查询与控制
查询(0x01):
| 操作 | 请求 |
|---|---|
| 读 DO1 | 01 01 00 00 00 01 FD CA |
| 读 DO2 | 01 01 00 01 00 01 AC 0A |
| 批量读 DO1~DO2 | 01 01 00 00 00 02 BD CB |
单点控制(0x05):
| 操作 | 请求 |
|---|---|
| DO1 断开 | 01 05 00 00 00 00 CD CA |
| DO1 闭合 | 01 05 00 00 FF 00 8C 3A |
| DO2 断开 | 01 05 00 01 00 00 9C 0A |
| DO2 闭合 | 01 05 00 01 FF 00 DD FA |
批量控制(0x0F):
| 操作 | 请求 |
|---|---|
| DO1、DO2 同时闭合 | 01 0F 00 00 00 02 01 03 9E 96 |
| DO1、DO2 同时断开 | 01 0F 00 00 00 02 01 00 DE 97 |
4.3 AI 查询(0x04,仅 Y301-222)
| 操作 | 请求 |
|---|---|
| 读 AI1 电压 | 01 04 00 00 00 01 31 CA |
| 读 AI1 电流 | 01 04 00 01 00 01 60 0A |
| 读 AI2 电压 | 01 04 00 02 00 01 90 0A |
| 读 AI2 电流 | 01 04 00 03 00 01 C1 CA |
| 批量读 AI1/AI2(电压+电流,共4寄存器) | 01 04 00 00 00 04 F1 C9 |
4.4 参数读写(0x03/0x06/0x10)
设备地址:
| 操作 | 请求 |
|---|---|
读取设备地址(0x003E) | 01 03 00 3E 00 01 E5 C6 |
| 写设备地址为 5 | 01 06 00 3E 00 05 28 05 |
串口参数:
| 操作 | 请求 |
|---|---|
读取波特率(0x0057,2寄存器) | 01 03 00 57 00 02 75 DB |
写波特率为 115200(0x0001C200) | 01 10 00 57 00 02 04 00 01 C2 00 B7 D5 |
写波特率为 9600(0x00002580) | 01 10 00 57 00 02 04 00 00 25 80 AC 45 |
读取数据位/停止位/校验位(0x0059~0x005B) | 01 03 00 59 00 03 D5 D8 |
写为 8N1(数据位8,停止位1,校验None) | 01 10 00 59 00 03 06 00 08 00 01 00 00 85 EF |
状态保持与计数参数:
| 操作 | 请求 |
|---|---|
读取输出状态保持(0x0040) | 01 03 00 40 00 01 85 DE |
| 写输出状态保持=2(上电保持) | 01 06 00 40 00 02 09 DF |
读取脉冲计数模式(0x0041) | 01 03 00 41 00 01 D4 1E |
| 写脉冲计数模式=1(上升沿) | 01 06 00 41 00 01 18 1E |
读取消抖时间(0x0042) | 01 03 00 42 00 01 24 1E |
| 写消抖时间=50ms | 01 06 00 42 00 32 A8 0B |
4.5 DI 脉冲计数读写
| 操作 | 请求 |
|---|---|
读 DI1 计数(0x0500,2寄存器) | 01 03 05 00 00 02 C4 C7 |
读 DI2 计数(0x0502,2寄存器) | 01 03 05 02 00 02 65 07 |
| 清零 DI1 计数(写 0) | 01 10 05 00 00 02 04 00 00 00 00 CC FF |
4.6 特殊操作
| 操作 | 请求 |
|---|---|
重启设备(0x0800=0x5500) | 01 06 08 00 55 00 B4 FA |
恢复出厂并重启(0x0800=0x0055) | 01 06 08 00 00 55 4B 95 |
4.7 常用命令快捷复制
text
01 02 00 00 00 02 F9 CBtext
01 0F 00 00 00 02 01 03 9E 96text
01 04 00 00 00 04 F1 C9text
01 10 00 57 00 02 04 00 01 C2 00 B7 D55. 参数配置说明
5.1 运行从机地址
运行从机地址 = 设备地址(0x003E) + 拨码偏移地址(0x002B)。
对于不支持拨码偏移的硬件版本,0x002B 通常为 0,此时运行地址即设备地址。
5.2 波特率与串口参数
- 波特率在
0x0057,为 32 位参数,需用0x10写入 2 个寄存器。 - 数据位/停止位/校验位在
0x0059~0x005B。 - 厂家说明:设备地址与串口参数修改后,需重启后生效。
5.3 广播模式(0x003F)
| 值 | 含义 |
|---|---|
0 | 关闭广播处理 |
1 | 接收并响应广播 |
2 | 接收广播但不响应 |
5.4 输出状态保持(0x0040)
| 值 | 含义 |
|---|---|
0 | 不保持 |
1 | 软重启保持 |
2 | 软重启+上电重启均保持 |
6. 联动规则
6.1 支持模式(模式码)
| 模式 | 名称 | 说明 |
|---|---|---|
| 0 | 关闭 | 该规则禁用 |
| 1 | DI 跟随 | DO 跟随 DI 正/反向变化 |
| 2 | 脉冲输出 | 收到 DO 控制后,延时后恢复原状态 |
| 3 | 延时控制 | DO 断开/闭合/全部动作延时执行 |
| 4 | 定时变化 | 设备重启后延时执行一次动作 |
| 5 | 循环变化 | 按参数1/参数2周期切换 |
| 6 | 按键(点动) | DI 作为按键触发 DO 动作 |
| 7 | 定点-单次 | 到指定 Unix 时间戳执行一次 |
| 8 | 定点-循环 | 从指定时间起按间隔循环执行 |
| 9 | 周期-每天 | 每天在指定秒数执行 |
| 10 | AI 电压大于阈值 | 仅 Y301-222 有效 |
| 11 | AI 电压小于阈值 | 仅 Y301-222 有效 |
| 12 | AI 电流大于阈值 | 仅 Y301-222 有效 |
| 13 | AI 电流小于阈值 | 仅 Y301-222 有效 |
| 14 | 延时跟随 | DI 变化后延时跟随 |
| 15 | 逻辑与 | 多路 DI/DO 逻辑与 |
| 16 | 逻辑或 | 多路 DI/DO 逻辑或 |
| 17 | 逻辑异或 | 多路 DI/DO 逻辑异或 |
6.2 指令示例
以下示例均将联动规则写入规则1(起始地址 0x0080),从站地址 0x01。向其他规则组写入时,将起始地址替换为 0x0088/0x0090/0x0098 并重新计算 CRC 即可。
关于动作码:0=断开,1=闭合,2=翻转(视模式而定)。
- 案例1:DI 跟随(模式 1)—— DO1 正向跟随 DI1
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x0001 | DI 跟随 |
| 动作 | 0x0001 | 正向跟随(DI=1 时闭合) |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0001 | DI1 |
| 参数1 | 0x00000000 | 不使用 |
| 参数2 | 0x00000000 | 不使用 |
写入命令:
text
01 10 00 80 00 08 10 00 01 00 01 00 01 00 01 00 00 00 00 00 00 00 00 CC FE- 案例2:AI 电压大于阈值(模式 10)—— AI1 电压 > 5V 时 DO1 断开
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x000A | AI 电压大于阈值 |
| 动作 | 0x0000 | 断开 |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0001 | AI1 |
| 参数1 | 0x00001388 | 阈值 5000 mV(= 5 V) |
| 参数2 | 0x000003E8 | 执行间隔 1000 ms(防抖) |
写入命令:
text
01 10 00 80 00 08 10 00 0A 00 00 00 01 00 01 00 00 13 88 00 00 03 E8 67 7A- 案例3:AI 电压小于阈值(模式 11)—— AI1 电压 < 2V 时 DO1 闭合
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x000B | AI 电压小于阈值 |
| 动作 | 0x0001 | 闭合 |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0001 | AI1 |
| 参数1 | 0x000007D0 | 阈值 2000 mV(= 2 V) |
| 参数2 | 0x000003E8 | 执行间隔 1000 ms |
写入命令:
text
01 10 00 80 00 08 10 00 0B 00 01 00 01 00 01 00 00 07 D0 00 00 03 E8 86 22本案例详细拆解(后续案例可按同样方式理解):
| 字节序列 | 含义 |
|---|---|
01 | 从站地址 = 0x01 |
10 | 功能码 = 0x10(写多个保持寄存器) |
00 80 | 起始寄存器地址 = 0x0080(规则1起始地址) |
00 08 | 写入寄存器数量 = 8(共16字节规则体) |
10 | 后续数据字节数 = 16 |
00 0B | 模式 = 0x000B(AI 电压小于阈值) |
00 01 | 动作 = 0x0001(闭合) |
00 01 | DO 编号 = 1(DO1) |
00 01 | DI/AI 编号 = 1(AI1) |
00 00 07 D0 | 参数1 = 2000(mV),即阈值 2.0V |
00 00 03 E8 | 参数2 = 1000(ms),执行间隔/防抖 |
86 22 | CRC16(低字节在前) |
语义总结:把“AI1 电压低于 2V 时,闭合 DO1”的规则写入规则1;并设置触发执行最小间隔为 1000ms。
- 案例4:AI 电流大于阈值(模式 12)—— AI1 电流 > 10mA 时 DO1 闭合
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x000C | AI 电流大于阈值 |
| 动作 | 0x0001 | 闭合(开启) |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0001 | AI1 |
| 参数1 | 0x00002710 | 阈值 10000 uA(= 10 mA) |
| 参数2 | 0x000003E8 | 执行间隔 1000 ms(防抖) |
写入命令:
text
01 10 00 80 00 08 10 00 0C 00 01 00 01 00 01 00 00 27 10 00 00 03 E8 C6 51- 案例5:AI 电流小于阈值(模式 13)—— AI1 电流 < 4mA 时 DO1 断开
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x000D | AI 电流小于阈值 |
| 动作 | 0x0000 | 断开 |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0001 | AI1 |
| 参数1 | 0x00000FA0 | 阈值 4000 uA(= 4 mA) |
| 参数2 | 0x000003E8 | 执行间隔 1000 ms |
写入命令:
text
01 10 00 80 00 08 10 00 0D 00 00 00 01 00 01 00 00 0F A0 00 00 03 E8 42 22- 案例6:脉冲输出(模式 2)—— DO1 常断,闭合后 2s 自动恢复断开
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x0002 | 脉冲输出 |
| 动作 | 0x0000 | 常断 |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0000 | 不使用 |
| 参数1 | 0x000007D0 | 脉冲持续时间 2000 ms |
| 参数2 | 0x00000000 | 不使用 |
写入命令:
text
01 10 00 80 00 08 10 00 02 00 00 00 01 00 00 00 00 07 D0 00 00 00 00 40 8B- 案例7:延时控制(模式 3)—— DO1 断开指令延时 3s 执行
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x0003 | 延时控制 |
| 动作 | 0x0000 | 仅断开延时 |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0000 | 不使用 |
| 参数1 | 0x00000BB8 | 延时 3000 ms |
| 参数2 | 0x00000000 | 不使用 |
写入命令:
text
01 10 00 80 00 08 10 00 03 00 00 00 01 00 00 00 00 0B B8 00 00 00 00 E0 8E- 案例8:循环变化(模式 5)—— DO1 断开 1s、闭合 2s 循环
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x0005 | 循环变化 |
| 动作 | 0x0000 | 先断开 |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0000 | 不使用 |
| 参数1 | 0x000003E8 | 断开保持 1000 ms |
| 参数2 | 0x000007D0 | 闭合保持 2000 ms |
写入命令:
text
01 10 00 80 00 08 10 00 05 00 00 00 01 00 00 00 00 03 E8 00 00 07 D0 A4 64- 案例9:按键/点动(模式 6)—— DI1 按键触发 DO1 翻转
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x0006 | 按键(点动) |
| 动作 | 0x0002 | 翻转 |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0001 | DI1 作为按键输入 |
| 参数1 | 0x000003E8 | 按键持续时间 1000 ms |
| 参数2 | 0x00000000 | 不使用 |
写入命令:
text
01 10 00 80 00 08 10 00 06 00 02 00 01 00 01 00 00 03 E8 00 00 00 00 EE 1B- 案例10:逻辑与(模式 15)—— DO2 闭合 且 DI1、DI2 均有信号时 DO1 保持闭合
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x000F | 逻辑与 |
| 动作 | 0x0004 | 闭合(保持) |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0000 | 不使用 |
| 参数1 | 0x00000002 | DO2 参与逻辑(bit1=1) |
| 参数2 | 0x00000003 | DI1+DI2 参与逻辑(bit0+bit1=1) |
写入命令:
text
01 10 00 80 00 08 10 00 0F 00 04 00 01 00 00 00 00 00 02 00 00 00 03 7A AE- 案例11:定时变化(模式 4)—— 设备重启 5s 后 DO1 闭合
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x0004 | 定时变化 |
| 动作 | 0x0001 | 闭合 |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0000 | 不使用 |
| 参数1 | 0x00001388 | 定时 5000 ms |
| 参数2 | 0x00000000 | 不使用 |
写入命令:
text
01 10 00 80 00 08 10 00 04 00 01 00 01 00 00 00 00 13 88 00 00 00 00 E6 D1- 案例12:定点-每天(模式 9)—— 每天 18:00:00 DO1 断开
| 字段 | 值 | 说明 |
|---|---|---|
| 模式 | 0x0009 | 周期-每天 |
| 动作 | 0x0000 | 断开 |
| DO 编号 | 0x0001 | DO1 |
| DI/AI 编号 | 0x0000 | 不使用 |
| 参数1 | 0x0000FD20 | 当天秒数 64800(18×3600) |
| 参数2 | 0x00000000 | 不使用 |
写入命令:
text
01 10 00 80 00 08 10 00 09 00 00 00 01 00 00 00 00 FD 20 00 00 00 00 5F C3注意:模式 7~9 依赖 RTC 时间。设备重启后需先向 RTC 寄存器(
0x0055)写入当前 Unix 时间戳。
7. 故障排除
| 现象 | 可能原因 | 处理建议 |
|---|---|---|
| 无响应 | 从站地址或串口参数不匹配 | 先读 0x002A 确认运行地址,核对波特率/校验位 |
| 地址改后通信失败 | 使用了旧地址通信 | 修改 0x003E 后改用新地址,并重启设备 |
| DO 写入失败 | 功能码/地址不对,或超出通道范围 | DO 仅用 0x0000~0x0001;批量写用 0x0F |
| AI 值异常 | 电压/电流接线混用 | 每路 AI 只能二选一,按接线读取对应寄存器 |
| DI 计数异常 | 计数边沿或消抖设置不合适 | 检查 0x0041 和 0x0042 |
| 联动不生效 | 规则参数冲突或模式不支持 | 从 0x0080 开始读回规则,确认模式码与参数 |
LED 指示灯
| LED | 状态 | 含义 |
|---|---|---|
| POWER | 常亮 | 供电正常 |
| TX | 闪烁 | 正在发送数据 |
| RX | 闪烁 | 正在接收数据 |
| DI1/DI2 | 亮 | 输入有效 |
| DO1/DO2 | 亮 | 继电器闭合 |
- 制造商:湖南研几科技有限公司
- 邮箱:hi@yengear.com
- 网站:www.yengear.cn


