Modbus POE ETH Relay 30CH

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

说明

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

硬件说明

硬件连接

  • 将Modbus POE ETH Relay通过网线连接到局域网,通过电源端口供电或者通过POE供电。

Modbus-POE-ETH-Relay-30CH-details-3.jpg

注意:上图是使用PoE网口供电。如果是使用的普通网线,须外接电源适配器供电,可外接7~36V范围的电源供电。

用电安全注意事项

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

产品参数

供电方式 PoE 网口,DC 5.5*2.1 电源接口 或 接线端子 (7~36V)
通信接口 PoE 网口,支持 IEEE 802.3af 标准
继电器路数 8 路
触点类型 一常开、一常闭
触点负载 ≤10A 250V AC 或 ≤10A 30V DC
Modbus 协议 Modbus RTU 协议或 Modbus TCP 协议

指示灯说明

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

软件安装

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

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

实例演示

TCP通讯测试

软件准备

上位机设置说明

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

  • 点击 设备管理
  • 点击 自动搜索
  • 软件搜索识别到接入到局域网的Modbus POE ETH Relay设备
  • 选择设备,然后点击 编辑设备 或者 直接双击搜索到的设备
  • 设置设备工作参数:
    • 点击“本地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

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

虚拟串口测试

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

  • 点击 Vircom 主界面的“串口管理”,然后点击“添加”,选择添加 COM2,其中 COM5 是计算机原来不存在的 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 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-30CH-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/3/3e/Modbus_POE_ETH_Relay_30CH_Code.zip
unzip Modbus_POE_ETH_Relay_30CH_Code.zip
cd Modbus_POE_ETH_Relay_30CH_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 开发协议

功能码介绍

功能码 备注
01 读继电器状态
03 读取地址、版本
05 写单个继电器
06 设置波特率,地址
0F 写全部继电器

寄存器地址介绍

地址(HEX) 地址存储内容 寄存器取值 权限 Modbus 功能码
0x0000
……
0x001D
道通1~通道30继电器地址 0xFF00:继电器开启;
0x0000:继电器关闭;
0x5500:继电器翻转;
读/写 0x01,0x05,0x0F
0x00FF 操作全部继电器 0xFF00:继电器全部开启;
0x0000:继电器全部关闭;
0x5500:继电器全部翻转;
0x05
0x0100
……
0x011D
道通1~通道30继电器翻转地址 0xFF00:继电器翻转;
0x0000:继电器不变;
0x05,0x0F
0x01FF 操作全部继电器翻转 0xFF00:继电器全部翻转;
0x0000:继电器全部不变;
0x05
0x0200
……
0x021D
道通1~通道30继电器闪开 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
0x05
0x0400
……
0x041D
道通1~通道30继电器闪闭 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
0x05
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 - 0x001D
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-0x001D
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 1E BC 02

字段 含义 备注
01 设备地址 固定0x01
01 01指令 查询继电器状态指令
00 00 继电器起始地址 继电器起始地址,0x0000-0x001D
00 1E 继电器数量 读取继电器数量
BC 02 CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 01 04 00 00 00 00 FB D1

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

示例:[1号地址设备]

发送 : 01 01 00 00 00 1E BC 02        //查询全部继电器
返回 : 01 01 04 00 00 00 00 FB D1     //全部继电器关闭
发送 : 01 01 00 01 00 03 2D CB        //查询1,2,3号继电器状态
返回 : 01 01 01 05 91 8B              //1、3号继电器开启,2号继电器关闭
发送 : 01 01 00 04 00 0C 7D CE        //查询4-15号继电器
返回 : 01 01 02 0F 00 BC 0C           //4-7号继电器开启,8-15号继电器关闭

写继电器状态

发送码:01 0F 00 00 00 1E 04 FF FF FF 3F C1 92

字段 含义 备注
01 设备地址 固定0x01
0F 0F指令 写继电器状态指令
00 00 继电器起始地址 继电器起始地址,0x0000-0x001D
00 1E 继电器数量 写入继电器数量
04 字节数量 状态字节数
FF FF FF 3F 继电器状态 继电器状态为小端格式,低字节在前,高字节在后
Bit0:起始继电器状态;
Bit1:下个继电器转态,
依次类推,高端空闲位则为零
C1 92 CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 0F 00 00 00 1E D5 C3

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

示例:[1号地址设备]

继电器全部开启  : 01 0F 00 00 00 1E 04 FF FF FF 3F C1 92
0-1开;3-29关   : 01 0F 00 00 00 1E 04 03 00 00 00 C0 12
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~0x1D
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~0x1D
00 07 间隔时间 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
8D B0 CRC16 前 6 字节数据的 CRC16 校验和

示例:[1号地址设备]

0号继电器闪开 : 01 05 02 00 00 07 8D B0  //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 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

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

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