首页 > 其他分享 >卓岚等设备 modbus 指令解释

卓岚等设备 modbus 指令解释

时间:2024-07-10 14:59:07浏览次数:14  
标签:卓岚 00 01 05 modbus 地址 指令 ff 寄存器

寄存器地址

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校验了。
其他的指令都为这个格式。

标签:卓岚,00,01,05,modbus,地址,指令,ff,寄存器
From: https://blog.csdn.net/zwz1342/article/details/140323308

相关文章

  • 案例分享:Qt modbusTcp调试工具(读写Byte、Int、DInt、Real、DReal)(当前v1.0.0)
    前言  西门子PLC、台达PLC、法兰克机床等等多年以前玩得比较多,有tcp/ip通讯也有modbus通讯,modbus又分为网络,485,232等。  医疗项目,焊接机器人项目,工控机床项目,数控项目,物联网项目用的挺多的,将关键的通信技术抽离出来,单独弄成工具。  最近调绞车,遇到了modbustcp,正好有设......
  • uniapp 封装蓝牙-(给设备发指令,分包数据发送)
    注意事项:1、关键点:初始化蓝牙——》uni.openBluetoothAdapter获取本机蓝牙适配器状态——》uni.getBluetoothAdapterState开始搜索蓝牙设备——》uni.startBluetoothDevicesDiscovery监听蓝牙设备(或者蓝牙设备列表,找到需要的那个)——......
  • 08 内核第一条指令
    了解QEMU启动指令qemu-system-riscv64\-machinevirt\-nographic\-bios../bootloader/rustsbi-qemu.bin\-deviceloader,file=target/riscv64gc-unknown-none-elf/release/os.bin,addr=0x80200000-machine virt 表示将模拟的64位RISC-V计算机......
  • Profibus转ModbusTCP网关模块实现Profibus_DP向ModbusTCP转换
    Profibus转ModbusTCP网关模块实现Profibus_DP向ModbusTCP转换Profibus和ModbusTCP是工业控制自动化常用的二种通信协议。Profibus是一种串口通信协议,它提供了迅速靠谱的数据传输和各种拓扑结构,如总线和星型构造。Profibus可以和感应器、执行器、PLC等各类设备进行通信。ModbusTC......
  • 【WCH蓝牙系列芯片】-CH9141模块AT指令增加自定义透传UUID服务
    -------------------------------------------------------------------------------------------------------------------------------------在使用沁恒的蓝牙串口透传芯片CH9141,这是一个自带固件,拿来接上串口就可以直接用的蓝牙模块芯片。支持串口AT配置和在从机模式下......
  • PN转Modbus RTU模块连接ACS4QQ变频器通信
    一台完整的机器在出厂前由许多部件组成。但是,由于各种原因,这些组件来自不同的制造商,导致设备之间的通信协议存在差异。Modbus和Profinet代表两种不同的通信协议,Profinet通常用于较新的设备,而Modbus是较旧的通信协议。在工业控制现场,很可能会有同时使用Profinet协议和Modbus协议的......
  • Modbus转Profibus模块连SmartPLC接汇川630伺服案例
    Profibus转Modbus模块连SmartPLC接汇川630伺服案例一、环境:Modbus转Profibus模块(XD-MDPB100)是一种通讯协议转换器,能够实现Modbus协议与Profibus-DP协议的信息共享。汇川630伺服作为一种先进的运动控制设备,其平稳性和准确性获得了充分肯定。本文将详细分析怎么使用Profibus转Mod......
  • ARM汇编与机器码、汇编指令
    文章目录1. CISC与RISC指令集2. ARM汇编指令3. 汇编与机器码4. 汇编指令格式5. MOV指令6. BL指令7. B指令8. ADD/SUB指令9. LDR/STR指令1. CISC与RISC指令集根据指令的复杂度,所有CPU可以分为两类:CISC(ComplexInstructionSetComputer)描述:复杂指令集......
  • 从 0 实现一个 vue3 的权限指令 v-permission
    在开发过程中会经常遇到一些权限控制,比如路由的权限控制、按钮的权限控制......
  • 通信协议_C#实现自定义ModbusRTU主站
    背景知识:modbus协议介绍相关工具mbslave:充当从站。虚拟串口工具:虚拟出一对串口。VS2022。实现过程以及Demo打开虚拟串口工具:打开mbslave:此处从站连接COM1口。Demo实现创建DLL库,创建ModbusRTU类,进行实现:usingSystem;usingSystem.Collections.Generic;usi......