Modbus POE ETH Relay (C)

来自Waveshare Wiki
跳转至: 导航搜索

说明

Modbus RTU Relay
{{{name2}}}
{{{name3}}}
功能简介
特性 RS485 继电器模块
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 RS485
  • 本产品是一款工业级以太网接口控制的 8 路继电器模块,带 8 路开关量输入, 采用 Modbus RTU/Modbus TCP 协议,支持 PoE 网口供电,ABS 外壳设计。本产品操作简单,具有通信速度快、稳定、可靠、安全等特点,可适用于各种通信要求较高的工控设备或应用。

用电安全注意事项

  • 本产品须由专业的电工或技术人员作业使用,使用过程中请做好用电安全,防漏电和绝缘等保护措施。
  • 在安装、维护或更换继电器设备之前,请务必关闭电源并拔下插头。
  • 请勿试图拆卸继电器设备,以免损坏设备或导致电击危险。
  • 请妥善安装放置继电器设备产品,请勿在潮湿、过热、易燃坏境中使用,避免因安装或使用不慎,引发安全事故。

产品参数

供电方式 PoE 网口,DC 5.5*2.1 电源接口 或 接线端子 (7~36V)
通信接口 PoE 网口,支持 IEEE 802.3af 标准
继电器路数 8 路
触点类型 一常开、一常闭
触点负载 ≤10A 250V AC 或 ≤10A 30V DC
数字输入 8DI,5~36V,无源输入/有源输入 (NPN 型或 PNP 型),
内置双向光耦
Modbus 协议 Modbus RTU 协议或 Modbus TCP 协议

指示灯说明

指示灯 状态说明
RUN灯 网口运行指示灯,网口工作正常后,会输出周期为2秒的方波。
STA灯 MCU指示灯,MCU正常工作时闪烁。
TXD灯 发送指示灯,发送数据时灯亮。
RXD灯 接收指示灯,接收数据时灯亮。
网口绿色灯 TCP 连接建立后绿灯亮,可用于模块是否和上位机软件建立通讯链路。
网口黄色等 数据活动灯,当网口有数据传输时,黄色灯转态会改变,可以用于判断是否有数据传输。

基本功能

支持通过以太网发送 Modbus RTU 协议指令读取开关量输入,从而根据输入控制继电器输出。
Modbus-POE-ETH-Relay-B-details-3.jpg

接线说明

Modbus-POE-ETH-Relay-B-3.jpg
将Modbus POE ETH Relay (B)通过网线连接到局域网,通过7~36V电源端口供电或者通过POE供电。
DI1-DI8为8通道信号输入端,DGND为信号端地。COM为输入信号公共端,可接悬空也可电源正极或电源负极,可直接从供电电源取电,也可接独立电源供电。

  • 不接悬空:干接点无源输入
  • 接电源正极:低电平触发,NPN型湿接有源输入,电压5V-30V DC
  • 接电源负极:高电平触发,PNP型湿接有源输入

数字量输入接线

Modbus-POE-ETH-Relay-B-details-11.jpg

无源干接点接线

  • 无源干接点输入

Modbus-RTU-Relay-D-DI-connection-01.jpg

有源湿接点接线

  • 有源湿接点NPN型输入

Modbus-RTU-Relay-D-3.png

  • 有源湿接点PNP型输入

Modbus-RTU-Relay-D-4.png

工作模式介绍

继电器支持多种模式控制,每个通道支持独立设置控制模式:

Modbus-POE-ETH-Relay-B-details-15.jpg
Modbus-POE-ETH-Relay-B-details-17.jpg

软件安装

Vircom 可用于设备 IP 等参数的配置,以及创建虚拟串口。 如果无需虚拟串口功能,则可以只下载免安装版本配置软件 。

驱动安装需要解压,双击软件安装,若Vircom里的虚拟串口不显示,则重启再次查看。

实例演示

TCP通讯测试

软件准备

上位机设置说明

将模块连接好硬件,并接入网络。运行Vircom软件(安装Vircom的计算机须与模块在同个局域网内)。
操作如下:

  • 点击 设备管理
  • 点击 自动搜索
  • 软件搜索识别到接入到局域网的设备
  • 选择设备,然后点击 编辑设备 或者 直接双击搜索到的设备
  • 设置设备工作参数:
    • 点击“本地IP”按钮识别电脑IP地址,将“IP地址”修改为静态分配地址,注意输入的静态IP地址没有被其他设备使用,而且需要和电脑在同一局域网。
    • 工作模式为TCP服务器。串口设置默认为115200,不能修改。
    • 高级选项中的“转换协议”,默认为无,即使用modbus rtu协议;如果选择Modbus_TCP 协议,则选择,modbus tcp协议。
  • 设置完成后,点击 Modify Setting修改设置
  • 点击 重启设备 ,等待模块重启,新的设置生效。

具体见下图:
Modbus-POE-ETH-Relay-Vircom-setting-cn.jpg

  • 最后点击“修改设置”保存设置并生效。

TCP通讯测试

  • 打开串口调试助手窗口,端口号选择TCPClient,根据上面Vircom设置修改远程IP和端口号,加校验选择ModbusCRC16,点击“连接”按钮连接TCP服务端,连接成功后网口绿色灯将亮起

Modbus poe eth relay b 2.png

  • 点击多字符串打开多条字符串发送窗口,点击对应的功能即可发送对应的命令。
  • 详细的控制指令请查看请查看开发协议。

Modbus Poll软件

  • 串口软件不方便观察数据,可以选择Modbus Poll软件读取数据。下载并安装Modbus Poll软件。
  • 打开软件,选择setup->Read/Write Definition,Slave ID选择实际设备地址,Function选择01 Read Coils功能码,Quantity改为8通道。点击OK确认。

Modbus-RTU-Relay-C-1.png

  • 选择Connection->Connect...,Connection选择Modbus RTU/ASCII Over TCP/IP,Mode选择RTU,输入正确的IP地址和端口号。点击OK连接。

Modbus-POE-ETH-Relay-6.jpg

  • 连接正常后则可以查看当前继电器状态,选择对应通道后,双击状态值即可跳出发送页面,选择ON或OFF,然后发送即可控制对应的继电器开合。

Modbus-RTU-Relay-C-2.png

  • 选择File-New新建一个窗口,选择setup->Read/Write Definition,Slave ID选择实际设备地址,Function选择02功能码,Address设置为0,Quantity设置为8通道,Scan Rate改为100ms。点击OK确认。

Modbus-RTU-Relay-D-5.jpg

  • 新建窗口2可以显示当前输入状态,改变输入接口电平,对应的数值也会改变。

Modbus-RTU-Relay-D-6.jpg

虚拟串口测试

图中的 SSCOM2 是通过 TCP 和串口服务器直接通信的,为了能够让用户已有开发好的串口软件也能和串口服务器通讯,需要在用户程序和串口服务器之间增加一个虚拟串口。如图 所示,Vircom 和用户程序在一台计算机上运行,Vircom 虚拟一个 COM 口,让这个 COM 口对应这个串口服务器。当用户程序打开 COM 通讯时可以通过 Vircom 串口服务器发到用户串口设备。下面演示这个操作步骤:

  • 点击 Vircom 主界面的“串口管理”,然后点击“添加”,选择添加 COM2(其中 COM2 须是计算机原来不存在的 COM 口)。

Modbus poe eth relay 3.png

  • 然后进入设备管理,并双击需要和 COM2 绑定的设备。如图 所示,在左上角的“虚拟串口”列表中选择 COM2。然后点击“修改设置”,再点击“重启设备”。

添加虚拟串口.jpg

  • 返回 Vircom 的主界面。可以看到 COM2 已经和 IP 为 192.168.1.200 的设备联通了。此时可以使用 COM2 代替 SSCOM2 进行通信。

虚拟串口已经联通.jpg

  • 在电脑上打开,打开对应的端口号,设置波特率为115200,点击多字符串打开多条字符串发送窗口,点击对应的功能即可发送对应的命令。

Modbus poe eth relay 7.png

MODBUS TCP 测试

默认情况下数据是透明传输的,使用Modbus RTU协议。如果需要实现 Modbus TCP 转 RTU,则需要在设备设置对话框中,将转化协议选择为“Modbus TCP 协议”,如下图所示。此时设备端口自动变为 502,此时用户的 Modbus TCP 工具连接上串口服务器的 IP 的 502 端口,发送的Modbus TCP 指令将会转化为 RTU 指令从串口输出。
比如服务器网口收到 00 00 00 00 00 06 01 05 00 00 FF 00 的 Modbus TCP 指令(打开第一个继电器),则主控收到 01 05 00 00 FF 00 8C 3A 的Modbus RTU指令。
启用modbus TCP功能.jpg

  • 点击“更多高级选项...”选择Modbus网关类型为非存储型Modbus网关。

注意:默认的modbus网关类型为存储型方式,会自动多次发送查询指令,可能会导致主控芯片响应不过来,导致查询指令不影响。故需要设置为非存储型Modbus网关 Modbus poe eth relay 4.png

  • 打开Sscom软件,在多条字符串发送栏中点击导入ini按钮,选择modbus tcp.ini文件导入。

如果提示“A component named HEX0 already exists”错误。则关闭软件重新打开,再重新导入文件即可。 Modbus poe eth relay 6.png

  • 成功导入后显示如下,点击对应的功能即可发送对应的命令。注意:modbus tcp不需要CRC校验,加校验选择None。

Modbus poe eth relay 5.png

  • 关于Modbus TCP转换详细请参考后面Modbus TCP协议部分。

WEB方式配置

使用 Vircom 可以在不同的网段内搜索和配置设备参数,Web 方式配置需要首先保证计算机和串口服务器处于同一个 IP 段,且需要预先知道串口服务器的 IP 地址。但是 Web 配置可以在任何一台没有 Vircom 的计算机上进行。(不同产品网页界面不同,可切换中英文显示)
1.在浏览器中输入串口服务器的 IP 地址,例如 http://192.168.1.200 打开如下网页
Modbus-POE-ETH-Relay-B-web.png

2.在 Password 中输入密码:出厂默认无设置登录密码,可随便输入一个密码,点击 Login 按钮登录。设置密码可登录后,在”修改网页登录密码”处设置生效:
WEB配置页面.jpg
3.在出现的网页中可以修改串口服务器参数,相关参数可以参考表 4 参数含义。
4.修改参数后点击“提交修改”按钮。
5.如果配置和下载MQTT和Jetson Modbus固件,覆盖了配置界面网页文件,导致配置网页无法打开,请按照以下步骤重新下载网页文件:

关于内置的以太网模块更多详细的使用说明,可参考:RS485 TO ETH (B)用户手册

示例程序

树莓派

将树莓派和ModBus POE ETH Relay模块接入到同一个局域网。
打开树莓派终端,输入以下命令运行程序。
程序正常运行后各个通道依次打开然后依次关闭,最后显示当前输入状态。

sudo apt-get install unzip
wget https://www.waveshare.net/w/upload/d/d5/Modbus_POE_ETH_Relay_B_Code.zip
unzip Modbus_POE_ETH_Relay_B_Code.zip
cd Modbus_POE_ETH_Relay_B_Code

#modbus rtu 协议
vi modbus_rtu.py  #根据实际情况修改IP地址和端口号
sudo python3 modbus_rtu.py

#modbus tcp协议
vi modbus_tcp.py  #根据实际情况修改IP地址和端口号
sudo python3 modbus_tcp.py

注意:运行实例程序需要先修改程序文件,将IP地址和端口号修改为ModBus POE ETH Relay实际IP地址和端口号

Modbus RTU 开发协议 V2

功能码介绍

功能码 备注
01 读线圈状态 读继电器状态
02 度离散输入状态 读输入状态
03 读保持寄存器 读取地址、版本
05 写单线圈 写单个继电器
06 写单寄存器 设置波特率,地址
0F 写多个线圈 写继电器状态
10 写多个寄存器 设置多个寄存器

寄存器地址介绍

地址(HEX) 地址存储内容 寄存器取值 权限 Modbus 功能码
0x0000
……
0x0007
道通1~通道8继电器地址 0xFF00:继电器开启;
0x0000:继电器关闭;
0x5500:继电器翻转;
读/写 0x01,0x05,0x0F
0x00FF 操作全部继电器 0xFF00:继电器全部开启;
0x0000:继电器全部关闭;
0x5500:继电器全部翻转;
0x05
0x0100
……
0x0107
道通1~通道8继电器翻转地址 0xFF00:继电器翻转;
0x0000:继电器不变;
0x05,0x0F
0x01FF 操作全部继电器翻转 0xFF00:继电器全部翻转;
0x0000:继电器全部不变;
0x05
0x0200
……
0x0207
道通1~通道8继电器闪开 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
0x05
0x0400
……
0x0407
道通1~通道8继电器闪闭 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
0x05
1x0000
……
1x0007
道通1~通道8输入地址 表示1~8输入通道状态 0x02
4x1000
……
4x1007
道通1~通道8继电器控制模式 0x0000~0x0003四种控制模式 读/写 0x03,0x06,0x10
4x4000 设备地址 直接存储 Modbus 地址
设备地址:0x0001
0x03
4x8000 软件版本 转为十进制然后小数点左移两位即表示软件版本
0x0064 = 100 = V1.00
0x03

操作指令介绍

控制单个继电器

发送码:01 05 00 00 FF 00 8C 3A

字段 含义 备注
01 设备地址 固定0x01
05 05指令 控制继电器指令
00 00 地址 要控制继电器的寄存器地址,0x0000 - 0x0008
FF 00 指令 0xFF00:继电器开启;
0x0000:继电器关闭;
0x5500:继电器翻转;
8C 3A CRC16 前6字节数据的CRC16校验和

返回码: 01 05 00 00 FF 00 8C 3A

字段 含义 备注
01 设备地址 固定0x01
05 05指令 控制继电器指令
00 00 地址 要控制继电器寄存器地址,0x0000-0x0008
FF 00 指令 0xFF00:继电器开启;
0x0000:继电器关闭;
0x5500:继电器翻转;
8C 3A CRC16 前6字节数据的CRC16校验和

示例[1号地址设备]:

0号继电器开启 : 01 05 00 00 FF 00 8C 3A
0号继电器关闭 : 01 05 00 00 00 00 CD CA
1号继电器开启 : 01 05 00 01 FF 00 DD FA
1号继电器关闭 : 01 05 00 01 00 00 9C 0A
2号继电器开启 : 01 05 00 02 FF 00 2D FA
2号继电器关闭 : 01 05 00 02 00 00 6C 0A
3号继电器开启 : 01 05 00 03 FF 00 7C 3A
3号继电器关闭 : 01 05 00 03 00 00 3D CA
0号继电器翻转 : 01 05 00 00 55 00 F2 9A
1号继电器翻转 : 01 05 00 01 55 00 A3 5A
2号继电器翻转 : 01 05 00 02 55 00 53 5A
3号继电器翻转 : 01 05 00 03 55 00 02 9A

控制全部继电器

发送码:01 05 00 FF FF 00 BC 0A

字段 含义 备注
01 设备地址 固定0x01
05 05指令 控制继电器指令
00 FF 地址 固定0x00FF
FF 00 指令 0xFF00:继电器开启;
0x0000:继电器关闭;
0x5500:继电器翻转;
BC 0A CRC16 前6字节数据的CRC16校验和

返回码: 01 05 00 FF FF 00 BC 0A

字段 含义 备注
01 设备地址 固定0x01
05 05指令 控制继电器指令
00 FF 地址 固定0x00FF
FF 00 指令 0xFF00:继电器开启;
0x0000:继电器关闭;
0x5500:继电器翻转;
BC 0A CRC16 前6字节数据的CRC16校验和

示例[1号地址设备]:

全部继电器开启 : 01 05 00 FF FF 00 BC 0A
全部继电器关闭 : 01 05 00 FF 00 00 FD FA
全部继电器翻转 : 01 05 00 FF 55 00 C2 AA

读取继电器状态

发送码:01 01 00 00 00 08 3D CC

字段 含义 备注
01 设备地址 固定0x01
01 01指令 查询继电器状态指令
00 00 起始地址 继电器起始地址,0x0000-0x0007
00 08 继电器数量 不能超过最大继电器数量
3D CC CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 01 01 00 51 88

字段 含义 备注
01 设备地址 固定0x01
01 01指令 查询继电器状态指令
01 字节数 返回状态信息的所有字节数。
00 查询的状态 返回的继电器状态
Bit0:起始继电器状态;
Bit1:下个继电器状态,
依次类推,高端空闲位则为零
8C 35 CRC16 前 6 字节数据的 CRC16 校验和

示例[1号地址设备]:

发送 : 01 01 00 00 00 08 3D CC   //查询全部继电器
返回 : 01 01 01 00 51 88         //全部继电器关闭
发送 : 01 01 00 02 00 01 5C 0A   //查询2号继电器
返回 : 01 01 01 01 90 48         //1号继电器开启
发送 : 01 01 00 01 00 03 2D CB   //查询1,2,3号继电器状态
返回 : 01 01 01 05 91 8B         //1、3号继电器开启,2号继电器关闭

写继电器状态

发送码:01 0F 00 00 00 08 01 FF BE D5

字段 含义 备注
01 设备地址 固定0x01
0F 0F指令 写继电器状态指令
00 00 继电器起始地址 要控制继电器的寄存器地址,0x0000 - 0x0007
00 08 继电器数量 操作继电器数量,不能超过最大继电器数量
01 字节数量 状态字节数
FF 继电器状态 Bit0:起始继电器状态;
Bit1:下个继电器状态,
依次类推,高端空闲位则为零
BE D5 CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 0F 00 00 00 01 94 0B

字段 含义 备注
01 设备地址 固定0x01
0F 0F指令 全部寄存器控制指令
00 00 地址 继电器起始地址
00 08 继电器数量 写入继电器数量
54 0D CRC16 前 6 字节数据的 CRC16 校验和

示例[1号地址设备]:

继电器全部开启 : 01 0F 00 00 00 08 01 FF BE D5
继电器全部关闭 : 01 0F 00 00 00 08 01 00 FE 95
0-1开; 3-7关   : 01 0F 00 00 00 08 01 03 BE 94
1,2,3继电器开启  : 01 0F 00 01 00 03 01 07 F3 55

继电器闪开闪闭指令

发送码:01 05 02 00 00 07 8D B0

字段 含义 备注
01 设备地址 固定0x01
05 05指令 单个控制指令
02 指令 02 为是闪开指令,04为闪闭指令
00 继电器地址 要控制的继电器地址,0x00~0x07
00 07 间隔时间 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
闪开闪闭的时间最大设置为0x7FFF
8D B0 CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 05 02 00 00 07 8D B0

字段 含义 备注
01 设备地址 固定0x01
05 05指令 单个控制指令
02 指令 02 为是闪开指令,04为闪闭指令
00 继电器地址 要控制继电器地址,0x00~0x07
00 07 间隔时间 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
闪开闪闭的时间最大设置为0x7FFF
8D B0 CRC16 前 6 字节数据的 CRC16 校验和

示例[1号地址设备]:

0号继电器闪开 : 01 05 02 00 00 07 8D B0  //700MS = 7*100MS = 700MS
1号继电器闪开 : 01 05 02 01 00 08 9C 74  //800MS
0号继电器闪闭 : 01 05 04 00 00 05 0C F9  //500MS
1号继电器闪闭 : 01 05 04 01 00 06 1D 38  //600MS

读取输入状态

发送码:01 02 00 00 00 08 79 CC

字段 含义 备注
01 设备地址 固定0x01
02 02指令 读取输入状态指令
00 00 输入起始地址 输入起始地址,0x0000-0x0007
00 08 寄存器数量 读取输入通道数量,不能超过最大输入通道
79 CC CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 02 01 00 A1 88

字段 含义 备注
01 设备地址 固定0x01
02 02指令 读取输入状态指令
01 字节数 返回状态信息的所有字节数。
00 查询的状态 返回的输入状态
Bit0:起始输入通道状态;
Bit1:下个输入通道状态,
依次类推,高端空闲位则为零
A1 88 CRC16 前 6 字节数据的 CRC16 校验和

示例[1号地址设备]:

发送 : 01 02 00 00 00 08 79 CC    //查询全部输入通道
返回 : 01 01 01 00 51 88          //输入全部没有触发
发送 : 01 02 00 00 00 08 79 CC    //查询全部输入通道
返回 : 01 02 01 41 61 B8          //1、7通道输入触发,其余通道没有触发
发送 : 01 02 00 01 00 02 A8 0B    //查询1,2,3输入通道
返回 : 01 02 01 05 61 8B          //1,2通道输入触发,2通道没有触发

读取继电器控制模式

发送码:01 03 10 00 00 08 40 CC

字段 含义 备注
01 设备地址 固定0x01
03 03指令 读取保持寄存器
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8输入通道
00 08 寄存器数量 读取寄存器数量,最多8个通道
40 CC CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 03 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E4 59

字段 含义 备注
01 设备地址 固定0x01
03 03指令 读保持寄存器
10 字节数 返回状态信息的所有字节数。
00 00
……
00 00
控制模式 表示1 - 8 继电器控制模式,0x0000~0x0003表示四种控制模式
0x0000:正常模式,继电器受指令直接控制;
0x0001:联动模式,继电器状态和对应输入通道状态一致;
0x0002:翻转模式,输入通道输入一个脉冲对应的继电器状态翻转一次
0x0003:跳变模式,输入通道电平跳变一次对应的继电器状态翻转一次
注意:除了联动模式外,其他模式都同时支持通过指令控制继电器。
E4 59 CRC16 前 6 字节数据的 CRC16 校验和

示例[1号地址设备]:

读取1-8号继电器控制模式 : 01 03 10 00 00 08 40 CC 
读取 1号继电器控制模式 : 01 03 10 00 00 01 80 CA
读取 2号继电器控制模式 : 01 03 10 01 00 01 D1 0A
读取3-5号继电器控制模式 : 01 03 10 02 00 03 A0 CB

设置单继电器控制模式

发送码:01 06 10 00 00 01 4C CA

字段 含义 备注
01 设备地址 固定0x01
06 06指令 写单个寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8通道继电器控制模式
00 01 控制模式 表示1 - 8 继电器控制模式,0x0000~0x0003表示四种控制模式
0x0000:正常模式,继电器受指令直接控制;
0x0001:联动模式,继电器状态和对应输入通道状态一致;
0x0002:翻转模式,输入通道输入一个脉冲对应的继电器状态翻转一次
0x0003:跳变模式,输入通道电平跳变一次对应的继电器状态翻转一次
注意:除了联动模式外,其他模式都同时支持通过指令控制继电器。
4C CA CRC16 前6字节数据的CRC16校验和

返回码: 01 06 10 00 00 01 4C CA

字段 含义 备注
01 设备地址 固定0x01
06 06指令 写单个寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8通道继电器控制模式
00 01 控制模式 继电器控制模式,0x0000~0x0003表示四种控制模式
4C CA CRC16 前6字节数据的CRC16校验和

示例[1号地址设备]:

设置1继电器为联动模式 : 01 06 10 00 00 01 4C CA
设置2继电器为翻转模式 : 01 06 10 01 00 02 5D 0B

设置多继电器控制模式

发送码:01 10 10 00 00 08 10 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 7C B1

字段 含义 备注
01 设备地址 固定0x01
10 写多寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8通道继电器控制模式
00 08 寄存器数量 设置寄存器数量,最多8个通道
10 字节数量 设置输出字节数
00 01
……
00 01
控制模式 表示1 - 8 继电器控制模式,0x0000~0x0003表示四种控制模式
0x0000:正常模式,继电器受指令直接控制;
0x0001:联动模式,继电器状态和对应输入通道状态一致;
0x0002:翻转模式,输入通道输入一个脉冲对应的继电器状态翻转一次
0x0003:跳变模式,输入通道输入状态改变一次对应的继电器状态翻转一次
注意:除了联动模式外,其他模式都同时支持通过指令控制继电器。
7C B1 CRC16 前6字节数据的CRC16校验和

返回码: 01 10 10 00 00 08 C5 0F

字段 含义 备注
01 设备地址 固定0x01
10 写多寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8通道继电器控制模式
00 08 寄存器数量 设置寄存器数量,最多8个通道
C5 0F CRC16 前6字节数据的CRC16校验和

示例[1号地址设备]:

设置1-8通道继电器为正常模式: 01 10 10 00 00 08 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 5C
设置1-8通道继电器为联动模式: 01 10 10 00 00 08 10 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 7C B1
设置3-5通道继电器为翻转模式: 01 10 10 02 00 03 06 00 02 00 02 00 02 4A 4B

读取软件版本指令

发送码:01 03 80 00 00 01 AD CA

字段 含义 备注
01 设备地址 固定0x01
03 03指令 读保持寄存器
80 00 指令寄存器 0x8000为读取软件版本
00 01 字节数 固定0x0001
AD CA CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 03 02 00 64 B9 AF

字段 含义 备注
01 设备地址 固定0x01
03 03指令 读保持寄存器
02 字节数 返回字节数
00 64 软件版本 转为十进制然后小数点左移两位即表示软件版本
0x0064 = 100 = V1.00
F0 B8 CRC16 前 6 字节数据的 CRC16 校验和

示例:

发送:01 03 80 00 00 01 AD CA
返回:01 03 02 00 C8 B9 D2       //0x00C8 = 200 =V2.00

异常功能码

当接收到的指令出错或者异常设备将会返回异常响应,异常响应格式如下。

返回码:01 85 03 02 91

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
85 异常功能吗 异常功能码 = 请求功能码 + 0x80
03 字节数 异常码
02 91 CRC16 前 6 字节数据的 CRC16 校验和

异常码是一个单字节值,用于指示错误的类型。Modbus协议定义的几个常用异常码:

异常码 名称 描述
0x01 非法功能 请求的功能码不支持
0x02 非法数据地址 请求的数据地址错误
0x03 非法数据值 请求的数据值或操作无法执行
0x04 服务器故障 服务器设备故障
0x05 应答 已接收到请求并正在处理
0x06 设备繁忙 设备当前正忙无法执行请求的操作

Modbus TCP 开发协议

在这里以上面打开第一个继电器的指令为例简单介绍一下modbus tcp与modbus rtu协议转换。

  • Modbus RTU 指令:01 05 00 00 FF 00 8C 3A
字段 含义 备注
01 设备地址 固定0x01
05 05指令 控制继电器指令
00 00 地址 要控制继电器的寄存器地址,0x00,即第一个继电器
FF 00 指令 0xFF00:继电器开启
8C 3A CRC16 前6字节数据的CRC16校验和
  • Modbus TCP 指令:00 00 00 00 00 06 01 05 00 00 FF 00
字段 含义 备注
00 00 消息标号 都是0x00即可
00 00 modbus标志号 必须都为0,代表这是modbus 通信
00 06 字节长度 表示后面的所有字节数,后面还有6个字节
01 设备地址 固定0x01
05 05指令 控制继电器指令
00 00 地址 要控制继电器的寄存器地址,0x00,即第一个继电器
FF 00 指令 0xFF00:继电器开启

通过上面指令的对比可以发现,modbus rtu 指令去掉CRC校验,前面加上五个0x00和一个字节长度即可转为modbus tcp协议。

高级应用 - MQTT连云平台

FAQ

  • 恢复网口的设置参数,需要拆开外壳,用镊子短接DEF丝印下的焊盘短接5s以上,模块将会复位为 192.168.1.254 的IP。
    Modbus-POE-ETH-Relay-Reload.jpg


工作温度范围是-15℃~70℃

{{{5}}}


技术支持


联系人:林工
EMAIL:services@waveshare.net
电话:0755-83040712
QQ:3004506335
微信:扫下方二维码添加
Lxw.jpg

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证