Modbus_TCP协议如何使用?

news2024/12/23 16:57:29

1 驱动简介

网关支持标准的Modbus-TCP协议,支持Modbus-TCP协议的设备(例如智能仪表、电表等),都可以通过此协议直接通讯,实现远程采集、监控、控制设备的功能。

从站号:默认为1,需要查看设备说明书关于通讯这部分的说明。

硬件接线:采用标准的RJ45接口的网线,连接网关的LAN口和下位机设备的LAN口。也可通过交换机进行连接。 

端口号:默认为502

通讯方式:一主一从,一主多从

注意:现场设备必须支持做Modbus-TCP从站。

例如:某触摸屏的通讯参数如图:

       IP地址为192.168.1.5   子网掩码为255.255.255.0

 

2 网关通讯口配置

LAN口配置路径:【②:网关驱动管理】→【通讯口配置】→【LAN配置】。在弹出窗口中填写网关LAN口IP。

IP地址:需要与PLC同一网段(一般情况下即是要求点分四段IP表示法的前三段地址要相同)。如外接交换机,不能与交换机中其他设备IP相同。本文中,PLC的IP地址为192.168.1.5,此处LAN口IP填写192.168.1.200

子网掩码:一般填写为255.255.255.0(与当前连接的网络结构相关。若网络结构较复杂,请咨询该网络的网络管理员)。

 

 

3 网关驱动配置

网关配置驱动路径:【②:网关驱动管理】→【+新增】。在弹出界面中填写驱动信息:

 

【通讯口】:选择LAN此处可选LAN/RS232/RS485

【驱动名称】:用于区分不同型号的驱动,例如“modbus仪表”。

【品牌】【型号】:分别选择通用Modbus设备,Modbus TCP

【IP地址】:填写下位机设备的IP地址,本例中填写192.168.1.5

【设备地址】:填写下位机的设备地址,默认为1。

端口号】:以太网单元的数据帧接收/发送端口,默认为502

【最小采集时间】:网关采集设备数据的时间间隔,单位为ms,默认是1000ms(1秒),根据采集数据量的大小,设置值可适当调整。

【通讯等待时间】:网关接收通讯数据等待时间,默认1000ms。设置太小可能导致通讯不上(建议大于1秒)。

【16位整形】【32/64位整形】【32/64位浮点型】:是指对应数据类型的解码顺序。如果厂家给的表格没有标明,建议不要进行修改,直接选择默认即可。具体解释见下表:

数据类型

解码方式

说明

举例

(0x0001,0x0000 0001

16位整形

0-12

表示字元件高低字节不颠倒(默认值)

表示0x0001

1-21

表示字元件高低字节颠倒

表示0x0100

32/64位整形

0-1234

表示双字元件不做处理直接解码(默认值)

表示0x0000 0001

1-2143

表示双字元件高低字不颠倒,但字内高低字节颠倒

表示0x0000 0010

2-3412

表示双字元件高低字颠倒,但字内高低字节不颠倒

表示0x0001 0000

3-4321

表示双字元件内4个字节全部颠倒

表示0x0100 0000

32/64浮点型

0-1234

表示双字元件不做处理直接解码(默认值)

1-2143

表示双字元件高低字不颠倒,但字内高低字节颠倒

2-3412

表示双字元件高低字颠倒,但字内高低字节不颠倒

3-4321

表示双字元件内4个字节全部颠倒

【分块采集方式】:一般不用修改,默认即可。

0按最大长度分块:采集分块按最大块长处理,对地址不连续但地址相近的多个连续地址合并一次性读取,而不是多次读取,提升采集的效率。

1按连续地址分块:采集分块按地址连续性处理,对地址不连续的地址分多次读取。该项多用于仪表类通讯。

例如:有寄存器地址分别为1~5、7、9~12的数据需采集,如果选择“0-按最大长度分块”,则两块可优化为地址1~12的数据打包1次完成采集;如果选择“1-按连续地址分块”,则需要采集3次。

【4区16位写功能码】:一般不用修改,默认即可0x06为写单个寄存器,0x10为写多个寄存器。在双字(32位)数据写操作或批量写入多个数据时,使用0x10功能码。

4 网关变量配置

变量设置路径::变量管理】→【+添加变量】,填写变量信息:

 

 

变量介绍:

【变量图片】:在列表展示时显示的变量图片(一般不用)。

【仪表、PLC】:选择已创建的驱动名称(如上述创建的“modbus仪表”驱动)

【标识(key)】:可用于脚本编程、中间变量计算等功能,详细说明点击【?】帮助(不常用)。

【变量名称】:自定义即可(如“温度1”),注意变量名称不允许重复

【单位】:此单位会出现在历史数据、曲线的图例中,自定义填写。

【寄存器类型】:填写对应下位机设备的寄存器类型线圈0x、离散输入1x、输入寄存器3x、输出寄存器4x

【寄存器地址】:地址填写时不带寄存区标志符,与实际寄存器地址一致。具体下图“平台地址填写举例”

【数据类型】:根据实际需要选择即可。

【小数位数】:对于数值型的变量确定显示的小数位数,根据需求填写。

【死区设置】:默认即可。根据需要填写即可。详细说明点击【?】帮助。

【状态列表】:一般不用。可将数值直接与文本映射。如值为“10”,映射字段为“设备故障”,则当采集到变量的值为“10”时,会直接在设备监控和历史报表中显示“设备故障”。

公式】:一般用于数据的工程换算和数据处理详细说明点击【?】帮助。

【读写方式】:可选择 “只读”和“读写”两种方式。 

注:“寄存器类型”、“寄存器地址”、“数据类型”、“读写方式”的设置规则见附录1(寄存器地址范围表)

平台地址填写举例:

下位机地址表

EMCP平台变量填写指导

寄存器地址

数据类型

寄存器类型

寄存器地址

数据类型

0x0001

开关量

线圈(0x)

1

Bit位

4x0010

16位整形

保持寄存器(4x)

10

16位整形

4x0019

浮点型

保持寄存器(4x)

19

浮点型

对于部分寄存器起始地址为0的设备,填写的寄存器地址需要加1

5 数据调试

添加完成后,【变量管理】如下图所示,此时可以点击【数据测试】按钮检查变量能否采集到数据,或者数据是否正确。

 

6 常见错误代码

点击【数据调试】按钮,如有异常,会上报数据异常代码,点击该异常码可直接查看解释说明。

下表为常见错误码说明及处理建议。

错误码

说明

处理建议

99901

下位设备通讯故障

1、检查网关和PLC的接线

2、检查通讯口参数配置

3、检查硬件本身存在的问题

1711

99902

响应超时

1715

99903

变量不存在

  1. 检查变量地址
  2. 检查PLC地址表

1714

99904

变量地址为空或格式错误,数据校验错误

1、检查通讯参数

2、检查变量地址

3、排查干扰

1713

99905

变量只读,不可以写入

2004

99907

读取的数据不完整

  1. 排查干扰
  2. 适当调整采集周期和通讯等待时间

查看更多错误码信息请查看如下链接:

通用异常码列表:通用异常码列表 · 异常码查询

Modbus异常码列表:Modbus协议异常码列表 · 异常码查询

附录1  寄存器地址范围表

MODBUS寄存器地址表

寄存器

操作方式

读功能码

写功能码

寄存器类型

地址范围

数据范围

【1区】输入继电器

只读

02

Bit位

1x0001 - 1x9999

0、1

【0区】输出继电器

读写

01

05

Bit位

0x0001 - 0x9999

0、1

【3区】输入寄存器

只读

04

16位、32位

4x0001 - 4x9999

0-65535

【4区】输出寄存器

读写

03

06、10

16位、32位

3x0001 - 3x9999

0-65535

此表用于解释说明每个寄存器类型对应的参数。

06功能码为写单个寄存器,16功能码为写多个寄存器。

不同的设备的寄存器对应的modbus地址不同,需要查看设备说明书。

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

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

相关文章

【实际开发21】- 项目部署

目录 1. 项目打包方式就两种 : war、jar 1. Windows 环境运行 Jar 包 2. Windows 后台运行 jar 包 1. cmd 下执行方式 2. bat 批处理方式 - ( Batch ) 3. 启动 : 在 xx.jar 同级目录下建立 run.bat 文件 4. 项目部署打包 忽略 test 文件 2. CICD 自动化部署 3. 代码质…

数据结构—散列表的查找

7.4散列表的查找 7.4.1散列表的基本概念 基本思想:记录的存储位置域关键字之间存在对应关系 ​ 对应关系——hash函数 ​ Loc(i) H(keyi) 如何查找: 根据散列函数 H(key) k 查找key9,则访…

【刷题笔记8.17】LeetCode:最长公共前缀

LeetCode:最长公共前缀 (一)题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 (二)分析 纵向扫描时,从前往后遍历所有字符串的每一列&am…

python开发环境准备

python开发环境准备 文章目录 python开发环境准备windows安装配置python3下载配置 安装pip(通过get-pip.py)测试与问题 测试python windows安装配置python3 校验日期 :2023年8月11日 下载 下载地址 官网地址 版本分为推荐下载最新的版本和…

leetcode 377. 组合总和 Ⅳ

2023.8.17 本题属于完全背包问题,乍一看和昨天那题 零钱兑换II 类似,但细看题目发现:今天这题是排列问题,而“零钱兑换II”是组合问题。排列问题强调顺序,而组合顺序不强调顺序。 这里先说个结论:先遍历物品…

原码、反码、补码,进制转换,有符号数和无符号数转换

计算机底层存储数据时,存储的是数据对应的二进制数字。对于整型数据,其二进制表示形式有三种,分别是:原码、反码、补码,而实际存储的是整型数据的补码。 原码、反码以及补码都是有符号的,其中最高位存放符…

windows系统丢失mfc120u.dll的解决方法

1.mfc120u.dll是什么 mfc120u.dll是Windows操作系统中的一个动态链接库(Dynamic Link Library,简称DLL)文件。它包含了一些用于运行C程序的函数和其他资源。这个特定的DLL文件是Microsoft Foundation Classes(MFC)库的…

LangChain源码逐行解密之系统(二)

LangChain源码逐行解密之系统 20.2 serapi.py源码逐行剖析 我们可以看一下Google查询的例子,在LangChain中有多种实现的方式。 如图20-5所示,在utilities的serpapi.py代码文件中实现了SerpAPIWrapper。 图20- 5 utilities的serpapi.py的SerpAPIWrapper 在langchain目录的se…

matplotlib从起点出发(7)_Tutorial_7_Artist

1 Artist教程 使用Artist对象来渲染画布。 matplotlib API一共有三个层次: matplotlib.backend_bases.FigureCanvas是绘制图形的区域;matplotlib.backend_bases.Renderer是知道如何在FigureCanvas上绘制的对象;matplotlib.artist.Artist是…

[NOIP2008 提高组] 传纸条——DP+优化

传纸条——DP优化 [NOIP2008 提高组] 传纸条题目描述输入格式输出格式样例样例输入样例输出 提示 温馨提示结题思路四维DP(不推荐)三维DP(推荐) A C 代码 [NOIP2008 提高组] 传纸条 题目描述 小渊和小轩是好朋友也是同班同学&am…

代码审计-Java项目审计-SQL注入漏洞

代码审计必备知识点: 1、代码审计开始前准备: 环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集: 审计目标的程序名,版本,当前环境(系统,中间件…

挑选最佳编程神器

选择适合的编程软件对于STM32开发至关重要。以下是几个值得推荐的软件:Arduino IDE:适用于跨单片机型号的编程。通过编写通用的Arduino代码,支持多达140多种主流单片机型号。无论是51、ST、ESP、GD、恩智浦、树莓派等,都可以使用统…

KVM虚拟机管理

1、创建、删除快照 关机 init0 列出快照 删除快照 2、虚拟机迁移 报错 解决:关闭防火墙,关闭selinux 其他解决办法:kvm热迁移使用nfs共享存储报错_莉法的博客-CSDN博客

serve : 无法将“serve”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

1、在学习webpack打包的时候,需要 serve用来启动开发服务器来部署代码查看效果的。安装完之后运行出现以下错误: 2、使用命令查看安装目录: npm list -g我们已经安装过了 3、解决: 我们看到上图路径在:C:\Users\qiy…

SpringBoot整合Shiro实现登录认证,鉴权授权

文章目录 前言一、shiro简介二、环境搭建2.1.数据库2.1.1user用户表2.1.2user_role用户角色关系表2.1.3role角色表2.1.4role_permission角色权限关系表2.1.5permission权限表 2.2导坐标2.3实体类2.3.1User2.3.2Role2.3.3Permission 2.4MVC三层2.4.1User2.4.1.1mapper层2.4.1.2s…

python使用xlwt时,报ValueError: More than 4094 XFs (styles)

在写表格时,遇到如下报错 一、报错原因 xlwt最多只能有4094个样式,超出这个样式数量就报错了。 二、解决办法 (1)去掉样式的要求

Windows权限维持—自启动映像劫持粘滞键辅助屏保后门WinLogon

Windows权限维持—自启动&映像劫持&粘滞键&辅助屏保后门&WinLogon 1. 前置2. 自启动2.1. 路径加载2.1.1. 放置文件2.1.2. 重启主机 2.2. 服务加载2.2.1. 创建服务2.2.2. 查看服务2.2.3. 重启主机 2.3. 注册表加载2.3.1. 添加启动项2.3.2. 查看注册表2.3.3. 重启…

如何使用Asp.net Core实现定时任务,轻松解决任务调度问题!

一、前言 Asp.net core作为一种高效、跨平台的web框架,在开发过程中,我们常常需要在后台执行定时任务,例如清理无用文件、生成报告、发送邮件等任务。对于这种需求,我们可以使用第三方库(如Hangfire或Quartz.NET&…

VIOOVI:什么是精益生产改善?如何做好精益生产改善?

现代化企业经营,更要注重科学化管理、精准化布局,才能为长线稳健运营奠定基础。当下,精益生产改善是各行各业都在探索的话题。那什么是精益生产改善?精益生产,也被称之为精益生产方式,它是基于生产组织、管…

Datawhale Django后端开发入门 TASK03 QuerySet和Instance、APIVIew

一、QuerySet QuerySet 是 Django 中的一个查询集合,它是由 Model.objects 方法返回的,并且可以用于生成数据库中所有满足一定条件的对象的列表。 QuerySet 在 Django 中表示从数据库中获取的对象集合,它是一个可迭代的、类似列表的对象集合。主要特点…