modbus协议 Mthings模拟器使用

进制转换

HEX 16进制 (0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F表示0-15)    

dec 10进制

n(16进制) -> 10

abcd.efg(n) = d*n^0 + c*n^1 + b*n^2 + a*n^3 + e*n^-1 + f*n^-2 + g*n^-3(10)

10 -> n(16进制)

Modbus基础概念

高位为NUM_H,低位为NUM_L

2F 3D

S7协议对接遇到的问题:

平台s7协议轮训取数据,连接不上设备,一直断开链接。

原因:有模拟软件连接着设备,故平台连接不上。关闭模拟软件等几分钟即可。

1.Modbus按照一般维度分为Modbus Rtu、Modbus ASCII、Modbus TCP三种模式。从接口类型维度来说,Modbus Rtu和ASCII基于串行链路(串行传输),属于串行通讯口(serial port)[ 各种介质,如有线RS-232-/422/485等串口连接线,接DTU设备(将RS485数据转为tcp数据双向)进行无线传输 ],Mobus tcp基于TCP/IP协议,属于网络(以太网)通讯口[以太网网线、无线4G传输等]。 高速令牌传输网络,相应的通信模式是Modbus PLUS。

协议分为硬件协议和软件协议。而通讯协议属于软件协议,它包含报头包围的格式,MODBUS是应用层的通讯协议,主要用于传送和接收文件包的格式。而RS232,RS485是物理层的串行接口,它可以支持几十种通讯协议,MODBUS只是其中的一种。RS232、RS485是一个工业常用的物理接口,是物理层的硬件设备(串口)

Modbus通讯物理接口可以选用串口(包括RS232和RS485)也可以选择以太网口

2.串口是一种接口标准,它规定了接口的电气标准,简单说只是物理层的一个标准。没有规定接口插件电缆以及使用的协议,所以只要我们使用的接口插件电缆符合串口标准就可以在实际中灵活使用,在串口接口标准上使用各种协议进行通讯及设备控制。所以485的使用范围广,通用性强。典型的串行通讯标准是RS232和RS485。

3.DTU串口服务器

(1)DTU是一种现代物联网行业广泛使用的无线数据终端设备,DTU 支持数据的双向转换,支持将 RS232、RS485、RS422 等常见的串口数据与 TCP/IP 数据进行相互转换,并通过无线通信网络进行传输dtu串口服务器可实现跨网段传输 

对于不方便拉宽带线或则无法随时拉宽带联网却要实现连网远程监控控制就需要到了同时具备工业4G路由器联网和串口转4G/WIFI模块的DTU

工业4G路由器实现串口转4G/WiFi/以太网过程中需要到一种网络通信传输协议叫TCP/IP.( TCP 握手 UDP 不握手 )

4.常见有线通信协议

(1)USB

(2)串口连接线(RS485/RS232):

(3)以太网网线

5.MODBUS是一种标准的工业控制数据交换协议,可以通过RTU和ASCII交换协议数据。RTU通过二进制数据直接传输数据,而TCP通过将每个字节的二进制数据转换成固定的二位十六进制字符串,然后依次串联,以TCP代码的形式传输数据。RTU通常使用最多比较简单。

Modbus协议属于应用层(OSI模型第7层)协议,TCP/UDP协议属于传输层(OSI模型第4层)协议

Modbus TCP协议则是在RTU协议上加一个MBAP报文头,

由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码,用一句比较通俗的话说就是:Modbus TCP协议就是Modbus RTU协议在前面加上五个0以及一个6,然后去掉两个CRC校验码字节就OK.虽然这句话说得不是特别准确,但是也基本上把RTU与TCP之间的区别说得比较清楚了

iot.modbus.client 数据采集服务,传输层通过tcp传输,顶层应用层协议是modbus。(tcp双向连接协议。udp单向无连接协议)

如果你这个硬件设备支持modbus tcp可以不用dtu,用dtu主要就是把485信号转成tcp

1.MODBUS RTU

Modbus设备一般通过dtu,连接modbus采集服务(将485信号转为tcp),配置dtu服务器的目标ip和目标端口为10.1.1.115、60001(dtu作为tcp客户端连接到115的60001)。 此方式由于dtu串口服务器可实现跨网段传输,故可在内网使用,也可以在外网通过域名使用。

dtu作为tcp客户端通过tcp与modbus采集服务通讯,进行数据传输。

2.MODBUS TCP
通过tcp协议通道,iot.modbus.client 采集服务作为tcp客户端,配置目标ip和端口,连接到modbus设备主机上(此时其作为tcp服务器端)。

注意:此方式只能用于内网使用。

PS:路由器一般都提供内网透传功能:比如tp-link 可以将内网端口映射到外网端口上,可以通过外网端口进行访问。

配置tp-link:传输控制-NAT设置-虚拟服务器。增加iot.modbus.client映射60001,ecmaster 8088映射,mqtt 8083(ws) 1883(mqtt)映射。并配置环回地址:10.0.0.0/8

Modbus通信协议原理具备如下的特征:

一次只有一个主机(Master)连接到网络

只有主设备(Master)可以启动通信并向从设备(Slave)发送请求

主设备(Master)可以使用其特定地址单独寻址每个从设备(Slave),也可以使用地址0(广播)同时寻址所有从设备(Slave)

从设备(Slave)只能向主设备(Master)发送回复

从设备(Slave)无法启动与主设备(Master)或其他从设备(Slave)的通信

Modbus通信协议  RTU通讯案例

温湿度变送器(485)为例

1 通讯基本参数

编 码

8位二进制

数据位

8位

奇偶校验位

停止位

1位

错误校验

CRC(冗余循环码)

波特率

2400bit/s、4800bit/s、9600 bit/s可设,出厂默认为4800bit/s

2 通讯基本参数

采用Modbus-RTU通讯规约,格式如下:

初始结构 ≥4 字节的时间

地址码 = 1 字节

功能码 = 1 字节

数据区 = N 字节

错误校验 = 16 位CRC 码

结束结构 ≥4 字节的时间

地址码:为变送器的地址,在通讯网络中是唯一的(出厂默认0x01)。

功能码:主机所发指令功能指示,本变送器只用到功能码0x03(读取寄存器数据)。

数据区:数据区是具体通讯数据,注意16bits数据高字节在前!

CRC码:二字节的校验码。

主机问询帧结构:

地址码

功能码

寄存器起始地址

寄存器长度

校验码低位

校验码高位

1字节

1字节

2字节

2字节

1字节

1字节

从机应答帧结构:

地址码

功能码

有效字节数

数据一区

第二数据区

第N数据区

校验码

1字节

1字节

1字节

2字节

2字节

2字节

2字节

3 寄存器地址

寄存器地址(16进制)

PLC或组态地址

内容

操作

0000H

40001

湿度(实际值10倍)

只读

0001H

40002

温度(实际值10倍)

只读

0050H

40081

温度校准(实际值10倍)

读写

0051H

40082

湿度校准(实际值10倍)

读写

07D0H

42001

设备地址

读写

07D1H

42002

设备波特率

读写

4 通讯协议实例以及解释

举例:读取设备地址0x01(十进制地址为1)的温湿度值

问询帧(十六进制):

地址码

功能码

起始地址

数据长度

校验码低位

校验码高位

0x01

0x03

0x00 0x00

0x00 0x02

0xC4

0x0B

 应答帧(十六进制): (例如读到湿度为65.8%RH,温度为15.5℃)

地址码

功能码

返回有效字节数

湿度值

温度值

校验码低位

校验码高位

0x01

0x03

0x04

0x02 0x92

0x00 0x9B

0x5A

0x3D

温度计算:

温度:009BH(十六进制)=155=>温度=15.5℃

湿度计算:

湿度:292H(十六进制)=658=>湿度=65.8%RH

关于通信速率问题

MODBUS 协议本身没有规定最大通信速率。甚至也没有规定电气协议,一般使用 RS232

或者 RS485 的电气协议。

RS485 协议的通讯速率可以达到 10M 以上的,所以理论上,注意是理论上,MODBUS

通讯速率是可以做到十几兆的。

由于 MODBUS 属于总线协议,总线上的所有站点要求有相同的通信速率(及相同的奇偶校

验设置),最大的通信速率自然由总线上最慢的站点决定。

使用Mthings模拟器 进行modbus数据模拟测试

mthings官网下载安装即可

1.通道配置

2.从机设备创建

注意:此步骤中批量添加的数据,要与下图中配置的批量数据读取数量一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/14231.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

微信版产品目录如何制作?

微信作为我国最流行的社交媒体平台,拥有庞大的用户群体。许多企业都希望通过微信来推广自己的产品,提高品牌知名度。制作一份精美、实用的微信版产品目录,是企业微信营销的重要手段。微信版产品目录的制作方法,帮助您轻松入门。 ​…

消息推送之SSE

一、简介 市面上很多系统都有 以上三种的消息提醒。但大多分为2类,一类移动端,一类web端比,通常在服务端会有若干张消息推送表,用来记录用户触发不同事件所推送不同类型的消息,前端主动查询(拉&#x…

react中如何在一张图片上加一个灰色蒙层,并添加事件?

最终效果: 实现原理: 移动到图片上的时候,给img加一个伪类 !!此时就要地方要注意了,因为img标签是闭合的标签,无法直接添加 伪类(::after),所以 我是在img外…

微搭低代码入门03函数

目录 1 函数的定义与调用2 参数与返回值3 默认参数4 将功能拆分成小函数5 函数表达式6 箭头函数7 低代码中的函数总结 在用低代码开发软件的时候,除了我们上两节介绍的变量、条件语句外,还有一个重要的概念叫函数。函数是执行特定功能的代码片段&#xf…

Zabbix中文监控指标数据乱码

1)点击主机,选择Zabbix server 中的 图形 一项,可以看到当前显示的为乱码 2) 下载字体文件: https://gitcode.com/open-source-toolkit/4a3db/blob/main/SimHei.zip 解压unzip -x SimHei.zip 3) 替换字体文…

限价订单簿中的高频交易

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

JDBC事务管理、四大特征(ACID)、事务提交与回滚、MySQL事务管理

目录 一、什么是JDBC事务? (1)事务概念。 (2)JDBC事务的实现。 1、提交。 2、回滚。 (3)生活中可以类比 JDBC 事务的例子。 1、以网上购物为例。 二、JDBC的四大事务(ACID&#xff0…

操作系统离散存储练习题

1. (简答题)分页存储管理系统具有快表,内存访问时间为2ns,检索快表时间为0.5ns,快表命中率为80%,求有效访问时间 -分析:首先访问缓存(快表),如果没有找到访问内存(页表&…

【AI日报】2024年11月13号

我回来啦!!发现自己好久不发文章了。 在某头部AI公众号实习的过程中,学到太多太多了,也感谢某位大神的指点,也衷心祝愿他的IP可以越做越好 之后因为时间关系,可能要自己出来单干了。 在实习过程中学到的…

inline内联函数(C++)

a)⽤inline修饰的函数叫做内联函数,编译时C编译器会在调⽤的地⽅展开内联函数,这样调⽤内联函数就不需要建⽴栈帧了,就可以提⾼效率。 b)inline对于编译器⽽⾔只是⼀个建议,也就是说,你加了inl…

C++builder中的人工智能(27):如何将 GPT-3 API 集成到 C++ 中

人工智能软件和硬件技术正在迅速发展。我们每天都能看到新的进步。其中一个巨大的飞跃是我们拥有更多基于自然语言处理(NLP)和深度学习(DL)机制的逻辑性更强的AI聊天应用。有许多AI工具可以用来开发由C、C、Delphi、Python等编程语…

Harmony- List组件最后一个item显示不全

在使用List组件显示数据的时候会出现最后一个item显示不全的问题,如下 出现在高度问题上,如果List组件上下没有其他占位组件就是正常显示的 解决方案: 1.给List组件加上layoutWeight(1),使它填满父控件剩余空间; 2.还有一种情况…

neo4j desktop基本入门

下载安装不在赘述,本文只记述一些neo4j的基本入门操作 连接本地neo4j数据库 1. 点击ADD添加连接 端口一般是7687 账户名和密码忘记了,可以通过neo4j web(默认为neo4jneo4j://localhost:7687/neo4j - Neo4j Browser)重置密码 AL…

function and task

任务和函数 在Verilog语言中提供了任务和函数,可以将较大的行为级设计划分为较小的代码段,允许设计者将需要在多个地方重复使用的相同代码提取出来,编写成任务和函数,这样可以使代码更加简洁和易懂。 1.1任务 任务的定义 任务定义…

24/11/13 算法笔记<强化学习> DQN算法

DQN算法的主要特点包括: 神经网络代替Q表:在传统的Q学习中,需要维护一个Q表来存储每个状态-动作对的Q值。而在DQN中,使用神经网络来近似这些Q值,这使得算法能够处理具有大量状态和动作的问题。 经验回放(E…

blind-watermark - 水印绑定

文章目录 一、关于 blind-watermark安装 二、bash 中使用三、Python 调用1、基本使用2、attacks on Watermarked Image3、embed images4、embed array of bits 四、并发五、相关 Project 一、关于 blind-watermark Blind watermark 基于 DWT-DCT-SVD. github : https://githu…

Qt_day10_程序打包(完结)

目录 1. 设置图标 2. Debug和Release版本 3. 动态链接库 4. 打包 5. 联系项目要求 Qt开发的程序最终都是要给用户使用的,用户的电脑上不可能装一个Qt的开发环境导入项目使用。因此项目项目开发完成后需要打包——制作成安装包,用户直接下载并安装即可使用…

【C语言】指针的运算

指针的增量操作: int i 10; int *p &i;printf("p %p\n", p);//1024p; // 增加int 4个字节大小printf("p %p\n", p);//1028指针的增量运算取决于指针的数据类型,它将会增加数据类型的大小的字节。 指针的减量操作与增量同理…

C++builder中的人工智能(28):FANN: Fast Artificial Neural Networks快速人工神经网络(ANNs)

这篇文章全面介绍了快速人工神经网络(ANNs)的世界,探讨了它们在现代计算智能中的重要地位、核心特点、应用领域以及未来发展。 快速人工神经网络库(Fast Artificial Neural Network Library,简称FANN)是一…

零基础Java第十六期:抽象类接口(二)

目录 一、接口(补) 1.1. 数组对象排序 1.2. 克隆接口 1.3. 浅拷贝和深拷贝 1.4. 抽象类和接口的区别 一、接口(补) 1.1. 数组对象排序 我们在讲一维数组的时候,使用到冒泡排序来对数组里的元素进行从小到大或从大…