Modbus_TCP协议如何使用?

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.rhkb.cn/news/93952.html

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

相关文章

机器学习算法之-逻辑回归(2)

为什么需要逻辑回归 拟合效果太好 特征与标签之间的线性关系极强的数据,比如金融领域中的 信用卡欺诈,评分卡制作,电商中的营销预测等等相关的数据,都是逻辑回归的强项。虽然现在有了梯度提升树GDBT,比逻辑回归效果更…

多线程-死锁

/*** 死锁demo*/ public class DeadlockDemo {public static void main(String[] args) {// 创建两个对象final Object resource1 "resource1";final Object resource2 "resource2";// 创建第一个线程Thread t1 new Thread(() -> {// 尝试锁定resour…

python模块中的_all__属性的作用

文章目录 前言 一、python模块中的_all__属性的作用 总结 前言 python模块中的特殊变量_all__的用法总结。 一、python模块中的_all__属性的作用 顾名思义:我们如果导一个包里面的函数或者变量,会把暴露在外部的变量和函数导出。那么有些变量或者函…

Vim在Mac电脑中的下载与安装方法:MacVim

本文介绍在Mac系统电脑中,下载、安装文本编辑器Vim软件(MacVim软件)的具体方法。 在Mac系统电脑中,原本就带有一个非图形界面的Vim;只要我们在终端中,输入如下的代码,就可以查看系统自带的非图形…

651页23万字智慧教育大数据信息化顶层设计及建设方案WORD

导读:原文《651页23万字智慧教育大数据信息化顶层设计及建设方案WORD》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 目录 一、 方案背景 1.1 以教育…

windows下载安装FFmpeg

FFmpeg是一款强大的音视频处理软件,下面介绍如何在windows下下载安装FFmpeg 下载 进入官网: https://ffmpeg.org/download.html, 选择Windows, 然后选择"Windows builds from gyan.dev" 在弹出的界面中找到release builds, 然后选择一个版本&#xff0…

使用windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. 使用cpolar内网穿透,将WebDav服务暴露在公网3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功 1. Linux(centos8…

打印出二进制的奇数位和偶数位

void print(int a) {int i0;printf("奇数位:");for(i30;i>0;i-2){printf("%d ",(a>>i)&1);}printf("\n");printf("偶数位:");for(i31;i>1;i-2){printf("%d ",(a>>i)&1);} …

多维时序 | MATLAB实现PSO-CNN-BiGRU多变量时间序列预测

多维时序 | MATLAB实现PSO-CNN-BiGRU多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-CNN-BiGRU多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.多维时序 | MATLAB实现PSO-CNN-BiGRU多变量时间序列预测; 2.运行环境为Matlab20…

SpringBoot-Hello World

SpringBootWeb快速入门 创建Springboot工程,并勾选web开发相关依赖定义HelloController类,添加方法hello,并添加相关注释运行测试 创建新的SpringBoot项目 几个注意的点: Name:基本上不用管,会根据下面的Ar…

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

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

复数

文章目录 复数虚数 i i i几何解释 复数复数的性质复数的加法1. 加实部2. 加虚部3. 组合实部和虚部复数加法的几何解释总结 复数减法1. 减实部2. 减虚部3. 组合实部和虚部复数减法的几何解释总结 复数乘法1. 展开乘法2. 使用 i 2 − 1 i^2 -1 i2−13. 合并实部和虚部复数乘法…

conda常用命令及国内镜像源

conda命令使用介绍 启动conda source ~/.bashrc帮助目录 conda create -h检查conda版本 conda --version升级当前版本的conda conda update conda环境管理 列出所有的环境 conda info -e conda env list安装一个不同版本的python新环境 conda create --name py27 pytho…

内网穿透-外远程连接中的RabbitMQ服务

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

实现动画的连续展示 JAVA

目录 1、前言:2、图片的展示以及自动关闭:3、动画的连续展示: 1、前言: 要实现动画的流畅展示需要在能展示图片的基础上对图片进行关闭,再切换下一张图片,这要关闭窗口,与延时函数以及while函数…

Grafana Prometheus 通过JMX监控kafka 【2023最新方式】

第三方kafka exporter方案 目前网上关于使用Prometheus 监控kafka的大部分资料都是使用一个第三方的 kafka exporter,他的原理大概就是启动一个kafka客户端,获取kafka服务器的信息,然后提供一些metric接口供Prometheus使用,随意它…

【C语言】回调函数,qsort排序函数的使用和自己实现,超详解

文章目录 前言一、回调函数是什么二、回调函数的使用1.使用标准库中的qsort函数2.利用qsort函数对结构体数组进行排序 三、实现qsort函数总结 先记录一下访问量突破2000啦,谢谢大家支持!!! 这里是上期指针进阶链接,方便…

【GitLab私有仓库】如何在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透?

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具&#xf…

数据结构单链表

单链表 1 链表的概念及结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链 接次序实现的 。 在我们开始讲链表之前,我们是写了顺序表,顺序表就是类似一个数组的东西&#xff0…

UG NX二次开发(C#)-CAM-获取刀具类型

文章目录 1、前言2、UG NX中的刀具类型3、获取刀具类型3.1 刀具类型帮助文档1、前言 在UG NX的加工模块,加工刀具是一个必要的因素,其包括了多种类型的类型,有铣刀、钻刀、车刀、磨刀、成型刀等等,而且每种刀具所包含的信息也各不相同。想获取刀具的信息,那就要知道刀具的…