ModBus TCP/RTU互转(主)(从)|| Modbus主动轮询下发的工业应用 || 基于智能网关的串口服务器进行Modbus数据收发的工业应用

目录

前言    

一、ModBus TCP/RTU互转(从)及应用||

1.1 举栗子

二、ModBus TCP/RTU互转(主)

       2.1 举栗子

三、ModBus 主动轮询

3.1 Modbus主动轮询原理

3.2 Modbus格式上传与下发

3.2.1.设置Modbus主动轮询指令

3.2.2 设置网络通道N1的参数

3.2.3 设置串口通道U1的参数

3.2.4 设置网络通道N2、N3的参数

3.2.5 打开两个Modbus Slave软件

3.2.6 打开一个网络调试助手

3.2.7.打开一个Modbus Poll

3.3 JSON格式上传与下发

3.3.1 数据上传

3.3.2 JSON格式的数据下发协议


前言    

        本文主要通过一款智能网关的串口服务器来进行工业modbus数据收发的应用

一、ModBus TCP/RTU互转(从)及应用||

        1.用户的串口设备是Modbus RTU从站,网络端的设备或组态软件是Modbus TCP主站, 则可以使用ModBus TCP/RTU互转(从)模式。 设备内部具有智能的消息排队机制,因此在该模式下,支持多个Modbus TCP主站同时 轮询Modbus RTU 从站设备。

        以设备的第一路串口PORT1(U1)为例,来说明ModBus TCP/RTU互转(从)模式的配 置步骤。设备支持自定义数据通道,本测试选择的数据通道为U1↔N1。

1.1 举栗子

        打开一个modbus Slave 软件,模拟用户的的Modbus RTU从站设备;打开4个或更多的 Modbus Poll 软件(配置参数完全一样),模拟用户Modbus TCP主站。实现多个主站同时轮 询一个从站的目的。

        配置完成之后,通信成功后的截图如所示。

二、ModBus TCP/RTU互转(主)

        若用户的串口设备是Modbus RTU主站,网络端的设备或组态软件是Modbus TCP从站 站,则可以使用ModBus TCP/RTU互转(主)模式。

        以设备的第一路串口PORT1(U1)为例,来说明ModBus TCP/RTU互转(主)模式的配 置步骤。设备支持自定义数据通道,本测试选择的数据通道为U1↔N1。

       2.1 举栗子

        打开一个modbus Poll 软件,模拟用户的的Modbus RTU主站设备;打开一个Modbus Slave 软件,模拟用户Modbus TCP从站。实现Modbus RTU主站查询Modbus TCP从站数据 的目的。

        配置完成之后,通信成功后的截图如所示。

三、ModBus 主动轮询

3.1 Modbus主动轮询原理

        启用Modbus主动轮询功能功能后,用户服务器只需要接收数据,不需要再下发查询指 令,可极大的缓解服务器的压力。 阿里云ALINK 启用该功能后,设备会按照用户事先设置的ModBus指令轮询串口设备,设备会将不同 指令返回的数据保存到缓存里。定时主动将缓存中的所有数据一次性上传到设置好的网络通道上。

轮询接口:轮询接口可以选择设备的8个串口通道PORT1~PORT2(U1~U8)、24 个网 络通道(N1~N24),每个轮询接口之间相互独立。可以轮询Modbus RTU 协议,也可以轮 询Modbus TCP 协议。

数据类型:支持BYTE、整型(16bit)、整形(32bit高在前)、整形(32bit高在后)、 浮点型(高在前)、浮点型(高在后)。用户根据实际情况选择合适的数据类型。

JSON名:JSON名支持自定义,最大支持32个字符。 kx+b:设备可对轮询的数据进行简单的线性计算。比如k设置为0.01,b设置为0,则 将数据缩小100倍后,上传到服务器。

紧急数据:对于非常重要且实时性要求比较高的寄存器数据,用户可将该数据设置为紧 急数据,并将变化上传条件设置为紧急数据变化上传,则该数据一旦变化,就会立即上传, 轮询间隔时间对此无效。设置0,则该数据为非紧急数据,设置1,则该数据为紧急数据。

轮询间隔:每个数据通道所有设置的指令,全部轮询完之后,等待该轮询间隔时间后, 才会进行下一轮的指令轮询。轮询间隔时间设置的越小,数据的实时性也就越高。 超时时间:当轮询指令发出后,从站设备没有应答,网关设备需要等待该超时时间后, 才会轮询下一条指令。

超时处理:当轮询指令发出后,没有收到从站设备的应答,此时上报的数据可以设置为 上一次轮询的数据(超时无变化)、设置为FF(超时清FF)、设置为00(超时清00)。

指令延时:同一个数据通道中,每条轮询指令之间的时间间隔。不同的数据通道之间是 独立的,可以并发轮询。 映射地址:将所有数据通道的轮询的从站地址,设置为该映射地址,默认128。当上传 格式选择Modbus RTU或Modbus TCP格式上传时,则会按映射地址上传。服务器下发设置 指令,也是按照映射地址下发。

缓存地址:缓存地址可以理解为用户串口设备的Modbus寄存器地址的映射地址。当上 传格式选择Modbus RTU或Modbus TCP格式上传时,该缓存地址即为上传的寄存器地址。 用户解析上传的数据时,可根据该缓存地址,来确定该数据来自那一条指令。

定时上传:数据上传服务器的时间间隔,单位毫秒,设置为0,则不上传。如设置5000ms, 则设备会每隔5秒将数据上传到指定的服务器。

变化上传:若某个轮询数据对用户比较重要,可将该数据设置为紧急数据,并启用变化 上传,这样网关设备会将本次轮询的数据与上一次的数据做比较,若有变化,则立即上传服 务器,不需等待定时上传设置的时间间隔。

上传格式:数据上传格式支持Modbus RTU、Modbus TCP、JSON带设备ID、JSON自定 义、阿里云ALINK等。

JSON 自定义格式说明: "id":%id:设备的唯一标识符,可在配置软件中的设备信息中查看,适用于基于设备识 别的应用。 "imei":%imei:设备内的4G 模块的唯一识别码。 "iccid":%iccid :SIM 卡的唯一识别码,适用于基于SIM卡识别的应用。 "time":%t:时间戳。 %d:轮询的数据。

如设置为:{"id":%id,"imei":%imei,"iccid":%iccid,"time":%t,%d} 则上报的数据为: {"id":e461211757372e32,"imei":,"iccid":,"time":2022-03-0317:13:15,"k0":0,"k1":0}

        数据上传到:可将数据上传到多个网络通道或串口通道,通过配置软件勾选即可。

3.2 Modbus格式上传与下发

        用modbus Slave 模拟从站设备,网络调试助手和Modbus Poll模拟主站或服务器。 本次实验实现效果:网关设备主动轮询modbus从站数据(U1通道和N1通道),并将数据 上传到主站或服务器(N2通道和N3通道)。同时主站或服务器也可向从站写数据。

        轮询数据通道选择N1:向设备的网络通道N1发送Modbus TCP轮询指令; 映射地址:默认128,将U1、N1通道上的从站地址全部映射为128。 数据上传到:勾选N2、N3,将轮询应答数据上传到网络通道N2、N3。

3.2.1.设置Modbus主动轮询指令

        轮询数据通道选择U1:向设备的第一路串口PORT1发送Modbus RTU轮询指令;

        轮询数据通道选择N1:向设备的网络通道N1发送Modbus TCP轮询指令;

        映射地址:默认128,将U1、N1通道上的从站地址全部映射为128。

        数据上传到:勾选N2、N3,将轮询应答数据上传到网络通道N2、N3。


       

3.2.2 设置网络通道N1的参数

        与网络通道N1相连接的设备作为Modbus TCP从站,因此网关设备的工作模式设置为 TCP CLIENT,目标 IP 及端口号即为从站设备的IP及本地端口号。

3.2.3 设置串口通道U1的参数

        确定串口通道U1即为设备的第一路串口PORT1,通过USB转RS485或RS232线连接电脑。 U1 参数默认即可(9600,8,N,1)。

3.2.4 设置网络通道N2、N3的参数

        网络通道N2、N3作为轮询数据的上传通道,本次举例采用设备默认参数: 网络通道N2:TCP SERVER模式,IP为192.168.1.253,端口号为1031 网络通道N3:TCP SERVER模式,IP为192.168.1.253,端口号为1032

3.2.5 打开两个Modbus Slave软件

        打开两个Modbus Slave软件,分别模拟Modbus RTU从站(与串口通道U1通信)、Modbus TCP 从站(与网络通道N1通信)。

3.2.6 打开一个网络调试助手

         模拟modbus TCP从站设备 打开一个网络调试助手,连接设备的网络通道N2,在网络调试助手中就可以接收到主 动轮询的数据。

3.2.7.打开一个Modbus Poll

        打开一个Modbus Poll,模拟Modbus TCP 主站,连接设备的网络通道N3(192.168.1.253: 1032)。连接之后即可接收主动轮询的数据。

        通过以上配置之后,Modbus主站设备就可以对从站进行读写操作了。

3.3 JSON格式上传与下发

3.3.1 数据上传

        在3.2的基础上,将设备modbus主动轮询的上报格式设置为JSON格式上传。网络 调试助手不要16进制显示,这样U1、N1通道的Modbus从站数据就会转成JSON格式向网 络通道N2、N3上发送。

3.3.2 JSON格式的数据下发协议

        若用户需要对用户的串口设备进行写操作,如写线圈、写寄存器等,用户的服务器可按 照网关设备的JSON格式的数据下发协议格式,向网关设备下发数据,网关设备收到服务器 的下发数据后,会将解析后的数据发送到串口上;串口设备的应答数据,网关设备会转换成 JSON 格式上传给服务器。

        JSON 格式的数据下发协议如下: 服务器下发格式: {"mb":"010600000008","sn":1,"ack":0,"crc":0,"uart":0} 网关设备应答数据格式: {"retmb":"010600000008880c","sn":1,"status":"ok"}

说明:

mb: 010600000008,是十六进制ascii格式,比如ff 就是255。网关设备收到服务器的 下发数据后,会将此处的ascii格式的数据转换为对应的十六进制数据,然后转发到串口上。

sn: 数据包的顺序,整数。网关设备收到服务器的下发数据中的 sn 值是多少,网关设 备应答给服务器的数据包中的sn值就是多少。用户可用该参数来识别网关设备的应答数据 与服务器请求数据的对应关系。

ack: 是否需要网关设备应答数据,0:不将应答数据上传到服务器;1:将应答数据上 传到服务器。非必须,若没有则按ack 等于1 处理。

crc: “mb”字段中的数据是否包含crc校验。1:mb字段不包含crc校验值,网关设备 会自动计算crc值;0:mb字段包含crc校验值,网关设备则不再会计算crc值。非必须。若没有则按crc等于0 处理。

uart:指定往哪一路串口(PORT)上发,0~23分别代表第1~24路串口(PORT)。非必 须,若没有则按uart 等于0 处理,即向第一路串口上下发。

若想向网络通道上发数据,则 可以用net替代uart即可,如:{"mb":"010300000001","sn":1,"ack":0,"crc":0,"net":0}。 retmb: 010300000001,是十六进制ascii 格式,比如ff 就是255。网关设备收到串口设 备的应答数据后,会将串口设备应答的十六进制格式的数据转换为对应的ascii格式的数据, 然后转发到服务器上。 status: timeout:超时;ok:正常

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch 在航空行业:数据管理的游戏规则改变者

作者:来自 Elastic Adam La Roche 数字化客户体验不再是奢侈品,而是欧洲航空公司必不可少的需求。它推动了客户满意度,提升了运营效率,并创造了可持续的竞争优势。随着行业的不断发展,优先投资前沿数字技术和平台的航空…

CXL协议之FM(Fabric Management)解释

CXL协议中的FM功能详解 1. FM的核心作用 FM是CXL(Compute Express Link)架构中的核心管理实体,负责协调和管理CXL设备之间的通信、资源分配及拓扑结构。其核心功能包括: 设备发现与枚举:识别CXL拓扑中的设备&#x…

html5基于Canvas的经典打砖块游戏开发实践

基于Canvas的经典打砖块游戏开发实践 这里写目录标题 基于Canvas的经典打砖块游戏开发实践项目介绍技术栈核心功能实现1. 游戏初始化2. 游戏对象设计3. 碰撞检测系统4. 动画系统5. 用户界面设计 性能优化1. 渲染优化2. 内存管理 项目亮点技术难点突破项目总结 项目介绍 在这个…

IDEA的常用设置与工具集成

简介 IDEA是捷克JetBrains公司推出的一款Java集成开发环境,在业内被公认为最好的Java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、Junit、CVS整合、代码审查、创新的GUI设计等方面的功能可以说是超强的。 官网:ht…

Golang | 每日一练 (6)

💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 Golang | 每日一练 (6)题目参考答案什么是内存逃逸&am…

Qt窗口控件之颜色对话框QColorDialog

颜色对话框QColorDialog QColorDialog 是 Qt 内置的颜色对话框,它允许用户选择一个颜色,并通过接口获取颜色的值,进行进一步设置。 获取QColorDialog颜色 QColorDialog 可以使用堆创建,挂载对象树的方式。但它更适合使用它的静…

Windows Docker 报错: has no HTTPS proxy,换源

pull python 3.7报错: 尝试拉取Docker 测试库hello world也失败 尝试使用临时镜像源,可以成功拉取: sudo docker pull docker.m.daocloud.io/hello-world说明确实是网络问题,需要配置镜像源,为了方便,在d…

Unity Shader 学习16:全局光照 概念理解

- 全局光照 直接光 间接光&#xff0c;在没有开启GI的情况下是不计算间接光的&#xff08;如果放了光照探针 倒是可以模拟间接光 <光照探针只影响动态物体>&#xff09;&#xff1b; - 处理对象&#xff1a;静态物体(static) 、 非静态(动态)物体&#xff1b; - 计算方…

【蓝桥杯python研究生组备赛】005 数学与简单DP

题目1 01背包 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整数&a…

吴恩达机器学习笔记复盘(六)梯度下降算法

简介 梯度下降&#xff08;Gradient Descent&#xff09;是一种常用的优化算法&#xff0c;广泛应用于机器学习、深度学习等领域&#xff0c;在这里是用于求J&#xff08;w,b&#xff09;局部最小值。 我自己觉得这样说有点过于抽象。换个直观点的说法就是&#xff0c;一个人…

【Golang那些事】go1.22和1.23 更新重点及测评

好久没有写文章了&#xff0c;攒了一年的Golang版本特性的技术点以及踩过的坑&#xff0c;那就在新年第一篇的文章中做一个总结吧&#xff1a; 一、关于迭代器 (一)迭代器去掉了共享共享内存 一个经典的面试题 说到Golang经典的面试题&#xff0c;大家可能都刷到过很多&…

【css酷炫效果】纯CSS实现照片堆叠效果

【css酷炫效果】纯CSS实现照片堆叠效果 缘创作背景html结构css样式完整代码基础版进阶版(增加鼠标悬停查看) 效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;https://download.csdn.net/download/u011561335/90492022 缘 创作随缘&#xff0c;不定时更新。 创…

labview与西门子1500plc进行S7通讯(仿真效果)

环境&#xff1a; 1.博图V16 2.S7-PLCSIM Advanced V3.0 3.labview2020 4.HslCommunication的dll文件 运行效果图 通过使用HslCommunication的库文件来对西门子plc进行通讯 labview代码 代码打包 通过网盘分享的文件&#xff1a;labview进行s7通讯测试.rar 链接: https:/…

[蓝桥杯 2023 省 B] 飞机降落(不会dfs的看过来)

[蓝桥杯 2023 省 B] 飞机降落 题目描述 N N N 架飞机准备降落到某个只有一条跑道的机场。其中第 i i i 架飞机在 T i T_{i} Ti​ 时刻到达机场上空&#xff0c;到达时它的剩余油料还可以继续盘旋 D i D_{i} Di​ 个单位时间&#xff0c;即它最早可以于 T i T_{i} Ti​ 时刻…

实验1:Vue基础实验

Web前端开发技术实验报告 实验1&#xff1a;Vue基础实验 一、实验目的&#xff1a; 掌握Vue实例的创建方法理解并初步掌握Vue实例的生命周期及钩子函数的使用掌握计算属性与侦听器使用方法 二、实验要求&#xff1a; 掌握Vue的基本语法及使用。编写程序并调试&#xff0c;完…

Spring Cloud 服务监控 - Sleuth + Zipkin 全链路追踪实战

一、为何需要全链路追踪&#xff1f; 在微服务架构中&#xff0c;用户请求通常涉及多个服务的交互&#xff08;如订单→支付→库存&#xff09;。这使得性能瓶颈和故障排查变得更加复杂。传统的日志分析面临两大核心挑战&#xff1a; • 性能瓶颈模糊&#xff1a;当响应延迟增…

数据类设计_图片类设计之6_矩阵图形类设计(前端架构)

前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 接续上一篇,讨论矩阵图形类设计 方法论-现在能做什么 这段属于聊天内容---有句话是这么说的&#xff1a;不要只埋头拉车&#xff0c;还要抬头看路。写代码也是…

OpenCV图像拼接(1)概述

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 此图说明了在Stitcher类中实现的拼接模块流程。使用该类&#xff0c;可以配置/移除某些步骤&#xff0c;即根据特定需求调整拼接流程。流程中的所…

【开原宝藏】30天学会CSS - DAY1 第一课

下面提供一个由浅入深、按步骤拆解的示例教程&#xff0c;让你能从零开始&#xff0c;逐步理解并实现带有旋转及悬停动画的社交图标效果。为了更简单明了&#xff0c;以下示例仅创建四个图标&#xff08;Facebook、Twitter、Google、LinkedIn&#xff09;&#xff0c;并在每一步…

【pytest框架源码分析五】pytest插件的注册流程

前文介绍到pytest整体是运用插件来实现其运行流程的。这里仔细介绍下具体过程。 首先进入main方法 def main(args: list[str] | os.PathLike[str] | None None,plugins: Sequence[str | _PluggyPlugin] | None None, ) -> int | ExitCode:"""Perform an i…