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.从机设备创建

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python多进程间通讯(包含共享内存方式)

文章目录 1 通过非共享内存配合队列方式2 通过共享内存配合队列方式 注:本博文测试环境为Linux系统。 1 通过非共享内存配合队列方式 下面是一个常见的生产者与消费者的模式示例,这里分别启动了两个子进程,一个为生产者(producer…

YOLOv11实战宠物狗分类

本文采用YOLOv11作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv11以其高效的特征提取能力,在多个图像分类任务中展现出卓越性能。本研究针对5种宠物狗数据集进行训练和优化,该数据集包含丰富的宠物狗图像样本…

游戏引擎学习第八天

视频参考: https://www.bilibili.com/video/BV1ouUPYAErK/ 理解下面的代码 关于虚函数 代码分解 结构体 foo 的定义: struct foo {int32 X;int64 Y;virtual void Bar(int c); };foo 结构体有两个成员变量:X(int32 类型)和 Y&…

我要学kali-linux之shell脚本编程1

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…

尽量通俗易懂地概述.Net U nity跨语言/跨平台相关知识

本文参考来自唐老狮,Unity3D高级编程:主程手记,ai等途径 仅作学习笔记交流分享 目录 1. .Net是什么? 2. .Net框架的核心要点? 跨语言和跨平台 .Net x Unity跨平台发展史 Net Framework 2002 Unity跨平台之 Mono 2004 Unity跨平台之 IL2CPP 2015 二者区别 .NET Core …

大陆 ARS513 / ARS510 标准雷达(解析二)

1。GW_ACU (0x40) • GW_ACU_LongAccel Longitudinal acceleration of ego vehicle. • GW_ACU_LongAccel_ValidFlag Valid flag of signal “GW_ACU_LongAccel”. • GW_ACU_LateralAccel Lateral acceleration of ego vehicle. Signal quality requirements for “GW_ACU_La…

【游戏引擎之路】登神长阶(十四)——OpenGL教程:士别三日,当刮目相看

【游戏引擎之路】登神长阶(十四)——OpenGL教程:士别三日,当刮目相看 2024年 5月20日-6月4日:攻克2D物理引擎。 2024年 6月4日-6月13日:攻克《3D数学基础》。 2024年 6月13日-6月20日:攻克《3D…

【C++动态规划】2304. 网格中的最小路径代价|1658

本文涉及知识点 C动态规划 LeetCode2304. 网格中的最小路径代价 给你一个下标从 0 开始的整数矩阵 grid ,矩阵大小为 m x n ,由从 0 到 m * n - 1 的不同整数组成。你可以在此矩阵中,从一个单元格移动到 下一行 的任何其他单元格。如果你位…

数据中台解决方案

文件是关于数据中台解决方案的详细介绍,内容涵盖了数据中台的定义、建设方案、实施步骤、以及在数字化转型中的作用。以下是对文件内容的分析和总结: 1. 数字化转型背景 国家政策支持:提到了《中华人民共和国国民经济和社会发展第十四个五年…

JS 实现WebSocket通讯和什么是WebSocket

WebSocket 介绍: WebSocket 是一种网络传输协议,可在单个 TCP 连接上进行全双工通信。它允许服务器主动向客户端推送信息,客户端也能实时接收服务器的响应。 客户端 这里实现了将input内的内容发送给客户端,并将接收到的服务器的…

K8S单节点部署及集群部署

1.Minikube搭建单节点K8S 前置条件:安装docker,注意版本兼容问题 # 配置docker源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo# 安装docker环境依赖 yum install -y yum-utils device-m…

算法闭关修炼百题计划(六)

塔塔开(滑稽 1.删除排序链表中的重复元素2.删除排序链表中的重复元素II3.字典序的第k小数字4.下一个排列5.排序链表6.随机链表的复制7.数据流的中位数 1.删除排序链表中的重复元素 使每个元素就出现一次 class Solution { public:ListNode* deleteDuplicates(ListNode* head)…

PH热榜 | 2024-11-13

DevNow 是一个精简的开源技术博客项目模版,支持 Vercel 一键部署,支持评论、搜索等功能,欢迎大家体验。 在线预览 1. Agree.com 标语:人人免费电子签名! 介绍:Agree,这款由人工智能驱动的平台…

PTE-中间件安全

DOCKER环境,一般是80 8080 8081端口 1 apache位置扩展名解析漏洞 cd vulhub-master/httpd/apache_parsing_vulnerability/ docker-compose up -d 修改一句话的后缀 直接上传 蚁剑 2 CVE-2017-15715 docker-compose stop cd .. cd CVE-2017-15715/ dock…

【Linux】Github 仓库克隆速度慢/无法克隆的一种解决方法,利用 Gitee 克隆 Github 仓库

Github 经常由于 DNS 域名污染以及其他因素克隆不顺利。 一种办法是修改 hosts sudo gedit /etc/hosts加上一行 XXX.XXX.XXX.XXX github.comXXX 位置的 IP 可以通过网站查询 IP/服务器github.com的信息-站长工具 这种方法比较适合本身可以克隆,但是速度很慢的…

Elasticsearch 8.16:适用于生产的混合对话搜索和创新的向量数据量化,其性能优于乘积量化 (PQ)

作者:来自 Elastic Ranjana Devaji, Dana Juratoni Elasticsearch 8.16 引入了 BBQ(Better Binary Quantization - 更好的二进制量化)—— 一种压缩向量化数据的创新方法,其性能优于传统方法,例如乘积量化 (Product Qu…

MySQL数据库常用命令大全(完整版——表格形式)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 ✨特色专栏&#xff1a…

微型导轨在自动化生产线中起什么作用?

在现代制造业的飞速跃进中,自动化生产线的蓬勃发展引领了一场效率与质量的双重革命。微型导轨作为传动领域的重要零部件,可用于工业自动化生产线上的零件运输、加工设备定位等,实现自动化生产和减少人力成本。那么,微型导轨在自动…

Flutter 小技巧之 Shader 实现酷炫的粒子动画

在之前的《不一样的思路实现炫酷 3D 翻页折叠动画》我们其实介绍过:如何使用 Shader 去实现一个 3D 的翻页效果,具体就是使用 Flutter 在 3.7 开始提供 Fragment Shader API ,因为每个像素都会过 Fragment Shader ,所以我们可以通…

c++实现B树(下)

书接上回小吉讲的是B树的搭建和新增方法的实现(blog传送门🚪:B树实现上)(如果有小可爱对B树还不是很了解的话,可以先看完上一篇blog,再来看小吉的这篇blog)。那这一篇主要讲的是B树中…