卓岚等设备 modbus 指令解释

寄存器地址

DO1:0x0010DI1:0x0000
DO2:0x0011DI2:0x0001
DO3:0x0012DI3:0x0002
DO4:0x0013DI4:0x0003
DO5:0x0014DI5:0x0004
DO6:0x0015DI6:0x0005
DO7:0x0016DI7:0x0006
DO8:0x0017DI8:0x0007

ModBus RTU

写寄存器指令

栈地址 1byte控制码1byte寄存器地址高位1byte寄存器地址地位1byte写入数据高位1byte写入收地位1byteCRC16高1byteCRC16低1byte
01(modbus栈地址,6842默认都为01)05(写功能码)0010ff008dff
  • 栈地址(1byte):是modbus协议内的栈地址字段,由于6842通过网络通讯,那么可以通过IP地址区分设备,所以这个字段默认都为1。

  • 控制码(1byte):DO控制固定位0x05

  • 寄存器地址(2bytes):8路DO在单片机中的地址。
    DO1:0x0010
    DO2:0x0011
    DO3:0x0012
    DO4:0x0013
    DO5:0x0014
    DO6:0x0015
    DO7:0x0016
    DO8:0x0017

  • 写入数据(2bytes):
    闭合:0xff00
    断开:0x0000

  • CRC16(2bytes):标准的CRC16校验

1闭合(DO1) 		01 05 00 10 ff 00 8d ff
返回:			01 05 00 10 ff 00 8d ff

1断开			01 05 00 10 00 00 cc 0f
返回:			01 05 00 10 00 00 cc 0f	

2闭合(DO2) 		01 05 00 11 ff 00 DC 3f
返回:			01 05 00 11 ff 00 DC 3f

2断开 			01 05 00 11 00 00 9d cf
返回:			01 05 00 11 00 00 9d cf

3闭合(DO3) 		01 05 00 12 ff 00 2c 3f
返回:			01 05 00 12 ff 00 2c 3f

3断开 			01 05 00 12 00 00 6d cf
返回:			01 05 00 12 00 00 6d cf

4闭合(DO4) 		01 05 00 13 ff 00 7d ff
返回:			01 05 00 13 ff 00 7d ff

4断开 			01 05 00 13 00 00 3c 0f
返回:			01 05 00 13 00 00 3c 0f

5闭合(DO5) 		01 05 00 14 ff 00 cc 3e
返回:			01 05 00 14 ff 00 cc 3e

5断开			01 05 00 14 00 00 8d ce
返回:			01 05 00 14 00 00 8d ce

6闭合(DO6) 		01 05 00 15 ff 00 9d fe
返回:			01 05 00 15 ff 00 9d fe
6断开 			01 05 00 15 00 00 dc 0e
返回:			01 05 00 15 00 00 dc 0e

7闭合(DO7) 		01 05 00 16 ff 00 6d fe
返回:			01 05 00 16 ff 00 6d fe

7断开 			01 05 00 16 00 00 2c 0e
返回:			01 05 00 16 00 00 2c 0e

8闭合(DO8) 		01 05 00 17 ff 00 3c 3e
返回:			01 05 00 17 ff 00 3c 3e

8断开 			01 05 00 17 00 00 7d ce
返回:			01 05 00 17 00 00 7d ce

读多线圈指令

在这里插入图片描述

例:控制 DO1 DO2同时打开
Modbus tcp:00 00 00 00 00 08 01 0f 00 10 00 02 01 03
Modbus rtu: 01 0f 00 10 00 02 01 03 5f 55

读寄存器指令

栈地址 1byte控制码1byte寄存器地址高位1byte寄存器地址地位1byte读出数据长度高位1byte读出数据长度低位1byteCRC16高1byteCRC16低1byte
01(modbus栈地址,6842默认都为01)01(读功能码)001000008dff

DI DO状态查询则都是读取寄存器数据

DO状态查询

查询指令: 01 01 00 10 00 08 3c 09
返回(例): 01 01 01 ff 11 c8
返回的第4个字节,这里是0xff就表示8路DO的状态。从右至左,分别表示DO1~DO8的状态。1闭合,0表示断开。

DI输入查询

查询指令: 01 01 00 00 00 08 3d cc
返回(例): 01 01 01 0f 11 8c

返回的第4个字节,这里是0x0f就表示8路DI的输入情况。从右至左,分别表示DI1~DI8的状态。1表示有输入,0表示无输入。

AI查询

查询指令: 01 04 00 00 00 08 f1 cc
返回(例):01 04 10 00 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 93 6e

第4第5字节表示AI1的值,这里是0x0001,具体换算公式为首先将0x0001 转换为10进制数value。通过(value / 1024)* 5 计算公式得到模拟量的值。
AI2同上,这里是0x0002

电流 (I = U / R, 数值仅代表电压值,6802底板接了200欧的电阻,通过公式计算电流) ,((value / 1024) * 5) / 200
电流值I=(value / 1024)* 25 mA 电压值V=(value / 1024)* 5 v (根据量程来算,量程是10V 电压值V=(value / 1024)* 5 v ) value为10进制的数值

主动上报返回解释(选看)

首先要先配置模块,使之可以主动上报。设置方法参考文档ZLAN6842_6802_6032.doc。功能测试章节。
主要的设置如下图所示。设备地址为6842\6802的地址,可以不用改,是否主动上报设置为1表示启用主动上传。上报地址则是所生成的上报数据的地址字段的内容。

在这里插入图片描述

栈地址 1byte控制码1byte寄存器地址高位1byte寄存器地址地位1byte写入数据高位1byte写入收地位1byteCRC16高1byteCRC16低1byte
01(modbus栈地址,6842默认都为01)05(DO控制码,固定)0010ff008dff

注:主动上报指令其实是控制DO的指令。字段都相同。
所以这里说明一下,主动上报的栈地址默认设置为0了。通过这个字段来区分到底是DI变化主动上传还是DO控制的返回。

注:可以看到,这里一地个字节(站地址)为00,因为我们将上报地址设置为0了,这个字节的内容就是所设置的内容。

00 05 00 10 ff 00 8C 2E
DI1 无输入
00 05 00 10 00 00 CD 2E
DI2 有输入
00 05 00 11 ff 00 DD EE
DI2 无输入
00 05 00 11 00 00 9C 1E
DI3 有输入
00 05 00 12 ff 00 2D EE
DI3 无输入
00 05 00 12 00 00 6C 1E
DI4 有输入
00 05 00 13 ff 00 7C 2E
DI4 无输入
00 05 00 13 00 00 3D DE
DI5有输入
00 05 00 14 FF 00 cd ef
DI5 无输入
00 05 00 14 00 00 8c 1f
DI6 有输入
00 05 00 15 FF 00 9c 2f
DI6 无输入
00 05 00 15 00 00 dd df
DI7 有输入
00 05 00 16 FF 00 6c 2f
DI7 无输入
00 05 00 16 00 00 2d df
DI8 有输入
00 05 00 17 FF 00 3d ef
DI8 无输入
00 05 00 17 00 00 7c 1f
第2与3字段(从0开始)表示DI序号
	0x0010 DI1
	0x0011 DI2
0x0012 DI3
0x0013 DI4
0x0014 DI5
0x0015 DI6
0x0016 DI7
0x0017 DI8

第4个字段表示是否有输入
FF表示有
00表示没有

通播指令(选看)

返回所有配置信息,共6字节
ff 03 00 3f 00 03 20 19

以地址为01的设备为例:
返回设备地址与是否主动上报
01 03 00 3f 00 01 b4 06 //003F

返回上报地址与设备的波特率(波特率对6842无效)
01 03 00 40 00 01 85 de //0040

返回设备软件版本
01 03 00 41 00 01 d4 1e //0041

设置设备地址与是否主动上报
01 06 00 3f 01 01 79 96 //003F

设置上报地址与设备的波特率(波特率对6842无效)
01 06 00 40 00 03 c8 1f //0040

以上指令都为示例指令,如果要设置其他的数值则要重新计算CRC校验。

设置:
1、增加设备地址设置 》MODBUS寄存器地址003FH 高字节
2、增加设备主动上报设置 》MODBUS寄存器地址003FH 低字节
3、增加设备主动上报目标设备地址设置 》MODBUS寄存器地址0040H高字节
4、增加波特率设置(用于485通讯时) 》MODBUS寄存器地址0040H低字节
查询:
1、增加设备地址查询 》MODBUS寄存器地址003FH高字节
2、增加设备主动上报查询 》MODBUS寄存器地址003FH低字节
3、增加设备主动上报目标设备地址查询 》MODBUS寄存器地址0040H高字节
4、增加波特率查询(用于485通讯时) 》MODBUS寄存器地址0040H低字节
5、增加软件版本查询 》MODBUS寄存器地址0041H 低位

其他功能:
1、增加主动上报DI(在设备主动上报使能时,当输入的DI有变化时,主动上报,
上报格式即置单线圈指令,上位机需要将此指令转化为DI查询响应指令来解析,
DI的寄存器地址0001-0004对应0017-0020

ModBus TCP
Modbus TCP的指令结构

ModbusTCP前缀 ModBusRTU

ModbusTCP前缀 00 00 00 00 00 len,前面5个都为0,最后一个字节表示后面接上的RTU指令的长度。
例子:
DO1 闭合00 00 00 00 00 06 01 05 00 10 ff 00。这里的RTU不需要CRC校验了。
其他的指令都为这个格式。

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值