可配置Modbus网关 嵌入式设备联网解决方案

news2024/12/27 17:35:43

1.概述

可配置Modbus网关可以预先配置Modbus RTU端的设备的地址、功能码和寄存器列表,并存储到网关内部。网关会自动采集这些配置的RTU设备的数据,然后映射到连续的Modbus TCP寄存器地址,从而允许Modbus TCP端一次性读取所有的设备的不同寄存器的数据。它的这种地址映射功能是对普通的Modbus RTU转Modbus TCP的Modbus网关的补充。

卓岚ZLAN5143、ZLAN7144、ZLAN7146、ZLAN5207M、ZLAN5407M等都支持可配置Modbus网关功能。其中ZLAN5143需要固件版本1.579及以上版本,配合ZLVircom5.15及以上版本来使用。7144需要固件版本1.491及以上版本。卓岚可配置Modbus网关简称为“ZLMB网关”。

可配置Modbus网关具有如下的优点:

1.指令合并:可以将分散的不同的站地址、寄存器映射到同一片寄存器。这样Modbus TCP端可以用一条指令采集所有数据,而不是分为几条指令分别去采集,实现了Modbus TCP端的传输效率。

2.预先采集:虽然之前的“存储型Modbus”可以自动采集一些数据,但是自动采集是在Modbus TCP端查询第一条指令开始的,所以第一条指令本身的返回数据还是需要等待串口的信息的返回。而可配置Modbus网关的自动采集是从网关上电就开始,第一条指令仍然可以快速应答。

多主机支持:可以支持多台Modbus TCP客户端连接上读取网关数据。

4.支持写指令:目前对于重新映射过的寄存器地址,Modbus TCP端不仅可以使用重新映射的地址读到数据,而且可以向这个重新映射的地址使用05和06指令写入数据。

5.支持任意长度读取:ZLVircom配置工具会显示RTU端的寄存器地址和TCP端的寄存器地址的映射关系。Modbus TCP端不仅可以整片读取寄存器和单个读取寄存器,而且可以任意长度来读取合法地址和长度的寄存器内容。

6.支持离线提示:当某个RTU设备从RS485总线上离线后,从Modbus TCP这端查询到的数据将全部变为0,提示设备的离线。

7.支持丢失重发:由于RS485总线容易存在干扰,假如第一次查询指令没有应答,则网关会再发送一条指令,并等待超时时间,如果确认第二次也没有应答才认为设备离线。通过ZLVircom可以设置第一次发送的时间和第二次超时应答时间。

8.支持大量设备和寄存器:目前支持100条RTU查询指令和500个寄存器数量,同时被访问。

2.简单例子

2.1.RTU采集要求

这里以ZLAN5143为例来介绍,首先确认固件版本为1.579及以上版本, ZLVircom为5.15及以上版本。

假设ZLAN5143的RS485下面接了2个Modbus RTU设备,需要采集的信息如下:

记录编号从站地址功能码寄存器地址长度
11324
22159
33324

现在需要ZLVircom进行配置,实现可以配置Modbus网关。

2.2.ZLVircom配置

运行ZLVircom,进入设备管理点击搜索设备选择一个需要配置的设备点击编辑设备点击下面“固件和配置”按钮,弹出如下对话框:

图 1进入ZLMB配置方法

这里选择“网页目录下载”,并且点击“…”,选择一个之前新建的空目录,用于存放配置信息。然后点击“ZLMB网关”按钮,弹出如下对话框:

图 2可配置Modbus网关设置列表

点击“添加”按钮可以逐条添加表1的RTU指令。这里需要注意的是网关会将Modbus TCP这端的寄存器地址从0开始自动按顺序增加。所以为了让同一个功能码的指令可以一次性分到同一个区域,应该将相同功能码的指令连续添加。也就是将表1的记录编号1和记录编号3放在一次,而编号2放在最后。添加的3个图如下:

图 3表1的编号1 RTU指令的配置

对于编号1的RTU指令的配置对话框解释如下:

1.记录编号:这个是系统根据添加的顺序自动增加编号,不可修改。不一定和表1一致。

2.从站地址:该RTU指令的RTU端从站地址。

3.Modbus功能码:该RTU指令的功能码。

4.寄存器起始地址:RTU端指令的寄存器开始地址。

5.寄存器长度:RTU端指令的寄存器查询长度。

6.串口轮询间隔:这个间隔是网关正常发送查询指令后等待应答返回的时间。也是轮询的速度。所有RTU指令的这个参数是一样的,如果不一样取最大者。

7.超时应答时间:这个时间是在正常发送查询指令接收不到应答时,立刻发送第二条查询时的等待应答返回时间。所有RTU指令的这个参数是一样的,如果不一样取最大者。

8.支持06或者05写指令:勾选这个选项将可以支持Modbus TCP端对RTU设备的数据的改写。若不需要改写则不要勾选,因为勾选,会额外增加内存和计算量开销。

9.Modbus TCP寄存器地址:这个地址是系统自动按照顺序计算的,Modbus TCP端只要按照这个起始地址读取即可得到这条RTU指令获得的数据。这个参数是地址映射的关键信息。

确定后,再次点击“添加”,添加表1编号3的指令:

图 4表1的编号3 RTU指令的配置

这里看到Modbus TCP寄存器地址自动增加到4。说明两条指令合并的寄存器从0~7,整个寄存器范围都可以一次性读取。

添加表1编号2的指令:

图 5表1的编号2 RTU指令的配置

这里系统自动分配的Modbus TCP地址为01指令的128地址(十进制)。最后列出的表格是:

图 6 RTU和Modbus TCP寄存器映射关系表

这个表格列出了RTU和Modbus TCP寄存器映射关系。也清楚的展示了,如果用户需要获得RTU端的某个设备的数据需要用什么功能码的什么寄存器地址去读取数据。

例如需要读取从站地址2功能码1、寄存器地址5、长度9的数据可以使用Modbus TCP指令的任意从站地址、功能码1、寄存器地址128、长度9来读取。 最后点击“保存并返回”来保存设计,如果点击“不保存返回”则放弃设计。同时可以通过选择某一行点击“编辑”进行编辑,点击“删除”删除某个RTU指令。

点击“保存并返回”后回到“卓岚网页/程序下载工具”界面。在这个界面点击“下载按钮”。下载完毕后弹出“传输完毕…”按钮,然后点击确定,设备将会自动重启,并加载这个配置。

2.3.数据测试

现在使用串口模拟这个RTU设备,并进行测试,RTU端模拟参数如下图。

图 7 模拟表1的3个RTU设备

然后将ZLAN5143连接到这个计算机串口。假如设备的IP为192.168.0.200,端口4196,Modbus TCP软件连接上这个IP和端口后读取如下的数据。根据映射关系表,应该读取0~7这8个寄存器,功能码为03;应该读取128到136这9个bit性寄存器,功能码为01。

图 8 Modbus读取网关数据

如图所示,可配置Modbus网关实现了站地址1、站地址3这两个RTU Modbus的数据合并,将其合并到寄存器0~7整片区域,实现指令合并功能。 使用SockeDlgTest连接上192.168.0.200的4196端口发送12 34 00 00 00 06 01 03 00 00 00 00指令,立即返回数据。

图 9 预采集效果

如图所示返回时间大约为18ms。这个反应时间比“存储型”Modbus的第一次应答时间要快速很多。 打开多个Modbus TCP客户端可以同时对网关进行数据采集。说明可以支持多主机功能。 在Modbus TCP端修改某个寄存器的值,则在RTU端的数据就被修改,同时也会反馈到Modbus TCP端。这说明发送的05/06单线圈修改和单寄存器修改指令写是支持的。

修改任意长度的寄存器长度读取,例如修改为从01地址开始的06个长度的寄存器内容,同样可以正常读取到Modbus TCP软件中。说明支持任意长度的数据读取。 将Modbus RTU软件关闭或者关闭串口。则Modbus TCP软件中的数据全部变为0,可见可以通过数据全部变为0来反映一个仪表的离线还是在线。 关闭Modbus RTU软件,使用ZLComDebug打开COM口接收数据,可以看到当一条指令没有应答时会重发一次。说明网关具有数据重发功能。

图 10 数据重发功能

2.4.设置离线默认值

图 11 设置离线默认值

设置离线默认值功能,可以可以让设备离线的时候采集到一个特殊的值,例如65535(也就是有符号的-1)。因为之前的默认值为0,有些设备的0是一个可能出现的值,无法区分是离线还是有效数据。

这个离线只要求高字节和低字节一样,即可以设置:v*256+v,其中v≤255且v>=0。 只有第一条记录的设置值是有效的,其它记录仿造第一条记录的参数。这里只看第一条记录的参数还包括:串口轮询间隔、超时应答时间、支持06或者05写指令。

3.其它注意事项

1.某些bit型数据无法合并,如下图,01/02指令的第一个指令的数据长度为9,不是16的倍数。所以无法通过从128开始的地址读取19个来一起读取所有数据。而是应该按照软件给出的128地址读9个,144地址读10个,分别读取。

图 12 Bit数据的连续

2.Modbus TCP的站地址无所谓,一般用01即可。

3.如果发现无法支持05/06指令,请确认设计的时候是否已经勾选05/06支持选项。

4.注意02功能的寄存器是无法被修改的。

5.注意Modbus网关的“转化协议”部分不要选择“Modbus TCP转RTU”,请选择“无”协议。

6.现在可以支持多寄存器写入的15/16指令。但是不要跨区域写入。例如原来的地址为2个寄存器是一起排列的,如果试图跨区域一次写入超过2个寄存器将会出错。

原文连接:可配置Modbus网关嵌入式设备联网解决方案——上海卓岚

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

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

相关文章

基于AT89C51单片机的电子密码锁设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87848194?spm=1001.2014.3001.5503 源码获取 摘 要 随着经济社会发展,人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出。传统的机械锁,由于其构造简单,安…

手机卡停机三个月被自动注销,欠费需要补交吗?不交会影响征信?

经常换手机卡的朋友都会面临着这样的一个问题,手机卡欠费不用而且忘了注销,三个月过后自动注销了,这样就会面临着一个问题,欠费应该怎么处理,需要补交吗?如果不补交会影响个人征信吗? 官方解释是…

电商服务智能解决方案

互联网时代,智能客服已成为电商企业客户服务、管理和运营的标配。面临大量客户咨询、订单流程等业务,传统人工客服工作时间有限、人员流动性大、人工成本持续上涨等,已经无法满足电商企业“数智化”转型的需求,这也促使AI成为电商…

线程池及gdb调试多线程

一、线程池概念和使用 概念:通俗的讲就是一个线程的池子,可以循环的完成任务的一组线程集合 必要性: 我们平时创建一个线程,完成某一个任务,等待线程的退出。但当需要创建大量的线程时,假设T1为创建线程…

Breakdance Builder评测 – 快速构建网站?

您是否正在寻找一个WordPress页面构建器,它可以轻松快速地构建网站 – 而不会使网站臃肿?如果是这样,您可能希望继续阅读这篇Breakdance Builder评测。 在构建网站时,速度就是一切。 编辑器在后端加载的速度有多快?您…

Vue + intro.js 实现页面新手引导流程功能

效果图: 1、安装 intro.js npm install intro.js --save 2、在项目的 main.js 中,引入 intro.js 库和相关样式文件,如下: // 首页引导插件 import intro from intro.js // introjs库 import intro.js/introjs.css // introjs默…

民宿小程序源码,开启民宿新模式

今天我为大家带来了一份最新的民宿小程序源码!这个源码不仅可以帮助你开启民宿新模式,还可以让你轻松实现线上预订、在线客服等多种功能。 民宿小程序源码,是什么? 民宿小程序源码是一款基于微信小程序平台的民宿管理系统&#…

数据库基础概念

文章目录 一、什么是数据库二、数据库的分类三、数据库的使用(内部) 一、什么是数据库 数据库是一类软件,作用是管理数据,内部应用了许多数据结构。但是我们还可以用文档储存数据,为什么要出现数据库? 文…

2022年天府杯全国大学生数学建模竞赛B题第一“君”情解题全过程文档及程序

2022年天府杯全国大学生数学建模竞赛 B题 第一“君”情 原题再现: 近日俄罗斯和乌克兰的冲突日益加剧,不难发现现代战争仍然是以人为主的战争,并未进入到全机械化的战争状态。那么在战争中军事物资的补给显得十分重要,中国古代兵…

Opencv(图像处理)-基于Python-图像的基本运算-给图片加水印

1. 图像运算概念2. 图像运算2.1 add()2.2 substract()部分代码示例: 2.3 multiply()/divide()2.4 addWeighted()部分代码展示 2.5 与/或/非bitwise_and()bitwise_or()bitwise_not()bitwise_xor部分代码展示 3.给一幅图像添加水印 1. 图像运算概念 在计算机的世界里…

git工作流实践

常见分支命名 远程仓库的分支:主干分支master, 开发分支dev,发布分支release 个人开发分支:特性分支feature, 缺陷修改分支bugfix, 热更新分支 hotfix 一般工作流如下 创建个人本地开发分支: git checkout -b feat…

Benewake(北醒) 快速实现TFmini-i-RS485与电脑通信操作说明

目录 一、前言二、工具准备1. USB-RS485 转接器2. TFmini-i-RS4853. 兆信直流电源4.连接线、绝缘胶带、螺丝刀5. PC:Windows 系统6. 串口助手软件 三、连接方式1. USB-RS485 转接板接口说明2. TFmini-i-RS485 引脚定义3. 连接图 四、TFmini-i-RS485 与电脑通信操作说…

cisp pte模拟题

1.信息搜集 本题共三个key 端口 1433 27689 存活ip 192.168.85.137 2.访问网站27689进行信息搜集 一个登录框,sql注入失败,暴力破解失败 扫描目录 发现三个文件robots.txt ,web.config 除了robots.txt,其他都访问不了 访问robots.txt,发现一个file参数…

ChatGPT实际上是如何工作的?

ChatGPT是如何工作的? 我们深入研究了广受欢迎的AI聊天机器人ChatGPT的内部运作方式。如果您想了解它是如何进行生成式人工智能魔术的,请继续阅读。 谷歌、Wolfram Alpha和ChatGPT都通过一个单行文本输入框与用户进行交互,并提供文本结果。谷…

Ubuntu18.04下搭建Ardupliot开发环境

本文参考的文章: -Ardupilot开发环境搭建(Ubuntu18.04,20190407) -Ardupilot环境搭建 1、下载文件 1.在GitHub上下载ardupilot文件,网速很慢的时候科学上网。 git clone https://github.com/ArduPilot/ardupilotcd ardupilotgit…

音乐推荐系统实战

文章目录 1. 项目背景2. 数据处理2.1 统计用户播放总量2.2 统计歌曲播放总量2.3 过滤出实验数据2.4 加入音乐详情信息2.5 查看音乐集情况2.6 查看用户播放量的分布 3. 推荐系统3.1 排行榜单排序3.2 基于歌曲相似度的推荐(协同过滤)3.3 基于矩阵分解&…

市面上流行的 5 大网页制作工具总结

这里是对市面上流行的 5 大网页制作工具的总结: 1. 即时设计 即时设计是一款国内新一代在线协作设计工具,具备原型、设计、交付、协作和资源管理等功能,适合个人用户和团队使用。它提供丰富的社区设计资源和原型模板,支持 UI/UX…

Python 的十大特性

摘要 在了解 Python 的特性之前,我们首先要了解 Python 编程语言是什么。Python 编程语言是世界上发展最快的编程语言。这一高级通用编程语言提供了广泛的实际应用,并且是一种非常流行的认证。 Python 可以让程序员更加高效地工作和集成系统。Python 的…

vue中如何通过iframe方式加载本地的vue页面

这个需求一般很少能遇到,只要说去了iframe,很多人就会唾弃。 但是有时候的确无法避免使用它,当iframe的特性带来的优势远远高于自己用div模拟的时候 啥时候需要用到iframe加载本地的vue文件呢 我在写一个demo,我需要demo效果模拟…

【接口测试】神器JMeter

‍1 JMeter是什么 Apache JMeter是Apache组织开发的一款开源软件,是一款非常好用的接口测试工具。它的特点是开源免费,简单好用。 我们在测试过程需要做接口测试的话就可以使用它,也可以用来批量造数据,接下来我们就来看看JMete…