Modbus RTU

来自丢石头百科
Modbus RTU
Modbus RTU Relay 1.png
基本信息

分类: 继电器

品牌: 丢石头

功能简介
特性
  • Modbus RTU 继电器

接口

I/O口 RS485接口 UART接口

相关产品

产品概述

继电器是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。 一路/两路/四路Modbus继电器模块搭载成熟稳定的8位MCU和RS485电平通讯芯片。采用标准MODBUS RTU格式的RS485通讯协议,可以实现1/2/4路输入信号检测、1/2/4路继电器输出,可用于数字量检测或者功率控制场合。

产品特点

  • 板载成熟稳定的8bit MCU和MAX485电平转换芯片
  • 通讯协议:支持标准Modbus RTU协议
  • 通讯接口:支持RS485/TTL UART接口
  • 通讯波特率:4800/9600/19200,默认9600bps,支持掉电保存
  • 光耦输入信号范围:DC3.3-24V(此输入不可用于继电器控制)
  • 输出信号:继电器开关信号,支持手动、闪闭、闪断模式。闪闭/闪断的延时基数为0.1S,最大可设闪闭/闪断时间为0xFFFF*0.1S=6553.5S
  • 设备地址:范围1-255, 默认255,支持掉电保存
  • 波特率、输入信号、继电器状态、设备地址可使用软件/指令进行读取
  • 板载1路/2路/4路5V,10A/250VAC 10A/30VDC继电器,可连续吸合10万次,具有二极管泻流保护,响应时间短
  • 板载继电器开关指示灯;
  • 供电电压:DC7-24V,支持DC座/5.08mm端子供电,带输入防反接保护;

引脚说明

以Modbus RTU Relay (2)为例

Modbus RTU Relay 引脚说明.png

  • 1、A+,B-:RS485通讯接口,A+,B-分别接外部控制端的A+,B-
  • 2、DC3.3-24V光耦信号输入(不可用于控制继电器吸合):
    • IN1: 通道1正极
    • IN2: 通道2正极
    • GND_IN:公共端负极
  • 3、VCC,GND: DC7-24V 5.08mm电源输入端子
  • 4、继电器2开关信号输出:
    • NC2:常闭端,继电器吸合前与COM短接,吸合后悬空;
    • COM2:公共端;
    • NO2:常开端,继电器吸合前悬空,吸合后与COM短接。
  • 5、继电器1开关信号输出:
    • NC1:常闭端,继电器吸合前与COM短接,吸合后悬空;
    • COM1:公共端;
    • NO1:常开端,继电器吸合前悬空,吸合后与COM短接。
  • 6、继电器指示灯:继电器吸合时点亮
  • 7、GND,RXD,TXD:TTL电平UART通讯接口,GND,RXD,TXD分别接外部控制端的GND,TXD,RXD,支持连接3.3V/5V 外部TTL串口
  • 8、RS485和TTL串口选择端
    • 当使用RS485通信时,DI接TXD、RO接RXD
    • 当使用TTL通信时DI和RO都接NC端

Modbus RTU指令简介

Modbus设备通过接收来自外部控制端(如:上位机/MCU)的Modbus RTU指令来执行相关操作,一帧指令一般由设备地址、功能码、寄存器地址、寄存器数据、校验码组成,帧长度和功能码有关。一般每帧数据的首字节为设备地址,可设置范围为1-255,默认255(即0xFF),最后2字节为CRC校验码。

假设设备地址为255,则常用的Modbus RTU指令如下:(更多详细指令请参考指令详解

  • 打开1号继电器(手动模式)
发送:    FF 05 00 00 FF 00 99 E4
原样返回:FF 05 00 00 FF 00 99 E4

备注1:发送帧的第3--4个字节代表继电器地址,继电器1--继电器8的地址分别为0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007

备注2:发送帧的第5--6个字节代表数据,0xFF00代表打开继电器,0x0000代表关闭继电器

  • 关闭1号继电器(手动模式)
发送:    FF 05 00 00 00 00 D8 14 
原样返回:FF 05 00 00 00 00 D8 14 
  • 打开2号继电器(手动模式)
发送:    FF 05 00 01 FF 00 C8 24  
原样返回:FF 05 00 01 FF 00 C8 24 
  • 关闭2号继电器(手动模式)
发送:    FF 05 00 01 00 00 89 D4 
原样返回:FF 05 00 01 00 00 89 D4
  • 打开所有继电器
发送:FF 0F 00 00 00 08 01 FF 30 1D  
返回:FF 0F 00 00 00 08 41 D3
  • 关闭所有继电器
发送:FF 0F 00 00 00 08 01 00 70 5D  
返回:FF 0F 00 00 00 08 41 D3
  • 设置设备地址为1
发送:    00 10 00 00 00 01 02 00 01 6A 00 
原样返回:00 10 00 00 00 01 02 00 01 6A 00

备注:发送帧的第9个字节0x01为写入的设备地址

  • 设置设备地址为255
发送:    00 10 00 00 00 01 02 00 FF EB 80  
原样返回:00 10 00 00 00 01 02 00 FF EB 80

备注:发送帧的第9个字节0xFF为写入的设备地址

  • 读取设备地址
发送:    00 03 00 00 00 01 85 DB  
返回:    00 03 02 00 FF C5 C4 

备注:返回帧的第5个字节0xFF为读取到的设备地址

  • 读取继电器状态
发送:    FF 01 00 00 00 08 28 12 
返回:    FF 01 01 01 A1 A0

备注:返回帧的第4个字节0x01的Bit0--Bit7分别代表继电器1--继电器8,0为关闭,1为打开

  • 读取光耦输入状态
发送:    FF 02 00 00 00 08 6C 12 
返回:    FF 02 01 01 51 A0 

备注:返回帧的第4个字节0x01的IN1--IN8分别代表光耦1--光耦8输入信号,0代表低电平,1代表高电平

  • 设置波特率为4800
发送:    FF 10 03 E9 00 01 02 00 02 4A 0C 
返回:    FF 10 03 E9 00 01 C5 A7 

备注:发送帧的第9个字节为波特率设置值,0x02, 0x03, x04分别代表4800, 9600, 19200

  • 设置波特率为9600
发送:    FF 10 03 E9 00 01 02 00 03 8B CC 
返回:    FF 10 03 E9 00 01 C5 A7
  • 设置波特率为19200
发送:    FF 10 03 E9 00 01 02 00 04 CA 0E 
返回:    FF 10 03 E9 00 01 C5 A7
  • 读取波特率
发送:    FF 03 03 E8 00 01 11 A4 
返回:    FF 03 02 00 04 90 53

备注:返回帧的第5个字节代表读取到的波特率,0x02, 0x03, x04分别代表4800, 9600, 19200

  • 打开1号继电器(闪闭模式2S)
发送:    FF 10 00 03 00 02 04 00 04 00 14 C5 9F 
返回:    FF 10 00 03 00 02 A4 16

备注1:发送帧的第3--4个字节代表继电器地址,继电器1--继电器8的地址分别为0x0003,0x0008,0x000D,0x0012,0x0017,0x001C,0x0021,0x0026

备注2:发送帧的第10--11个字节代表延时设置值,延时基数为0.1S,故延时时间为0x0014*0.1=20*0.1S=2S,继电器打开2S后自动关闭

  • 关闭1号继电器(闪断模式3S)
发送:    FF 10 00 03 00 02 04 00 02 00 1E A5 99 
返回:    FF 10 00 03 00 02 A4 16

备注1:发送帧的第3--4个字节代表继电器地址,继电器1--继电器8的地址分别为0x0003,0x0008,0x000D,0x0012,0x0017,0x001C,0x0021,0x0026

备注2:发送帧的第10--11个字节代表延时设置值,延时基数为0.1S,故延时时间为0x001E*0.1=30*0.1S=3S,继电器关闭3S后自动打开

使用说明

Modbus 继电器模块可经由RS485/TTL UART接口接收来自上位机/MCU的Modbus RTU指令来执行相关操作。下面以使用上位机软件通过RS485接口来打开继电器1和2(手动模式)为例,假设设备地址为255,波特率为9600,则使用步骤如下:

  1. VCC、GND接电源正负极。
  2. A+,B-分别USB转RS485模块输出端的A+和B-;
  3. 打开上位机软件“ModbusRTU 配置工具”,选择正确的端口号,波特率选择9600,地址设为255,点击“打开串口”;
  4. 再点击“JD1打开”即可打开继电器1,同时继电器1指示灯点亮。如下图:

Modbus RTU Relay 使用说明.png Modbus RTU Relay 使用说明1.png

生成校验码

Modbus RTU指令通过现成的上位机软件(如:ModbusRTU 配置工具)来发送时,CRC校验码是自动生成的,如果想使用串口调试软件(如SSCOM)来测试Modbus继电器模块时就需要手动生成CRC校验码放在发送帧的末尾,比如打开第1路继电器(手动模式):

  • 打开/关闭继电器(手动模式)的发送帧组成为:设备地址(1Byte)+功能码(1Byte)+寄存器地址(2Byte)+寄存器数据(2Byte)+CRC校验码(2Byte)
  • 假设设备地址为0xFF, 则发送帧的前6个字节为:FF 05 00 00 FF 00
  • 使用CRC校验工具对这6个字节求校验码:http://www.ip33.com/crc.html

Modbus RTU Relay 校验码.png

  • 交换校验计算结果E499的高低字节位置后得到CRC校验码99E4,以及完整的发送帧:FF 05 00 00 FF 00 99 E4
  • 将该发送帧通过串口调试软件SSCOM V5.13.1发送到Modbus继电器模块即可打开第一路继电器(手动模式),如下:

Modbus RTU Relay 校验码1.png

参考资料

注意事项

  • 电源与负载请在参数范围内使用,请勿超范围使用。
  • 额定负载和寿命是一个参考值,会根据不同的环境因素负载性质与种类而有较大不同,因此最好在实际或模拟实际的使用中进行确认。
  • 模块的负载能力受环境温度和自身温升的影响较大,需依据实际工作环境条件利用空气对流散热即可,要求安装在有良好对流环境。
  • 高温下的电耐久性:模块在高温下使用时,电耐久性会比常温下使用要低,所以请在实际使用中进行确认。

FAQ

Icon-mail.png 联系 丢石头

我们的工作时间是: 09:00-18:00 (UTC+8 周一到周六)