odbus TCP 服务器指令 MB_SERVER V5.0 新功能概述

如下图1所示服务器指令 MB_SERVER 从 V5.0 以后增加了三个新功能,分别为:

  1. 访问数据块中的数据区域,而不是直接访问 MODBUS 地址
  2. 过程映像区的读访问限制
  3. 统计变量 NDR_immediate 和 DR_immediate

A screenshot of a computerDescription automatically generated

图1. MB_SERVER 指令

SIMATIC S7-1200 使用要求

  • TIA Portal V15 及以上版本
  • CPU 固件 V4.2 及以上版本

新功能实验环境和内容

在本应用实例中,通过以下产品进行Modbus TCP服务器V5.0新功能编程,实现了访问1217C CPU 中数据块的数据区域以及限制对1217 CPU过程映像区的读访问。

软件:

TIA Professional V16
Modbus Poll

硬件:

CPU1217C DC/DC/DC V4.4

新功能通信程序

1、指令调用及参数分配

1.1、打开 TIA Portal V16软件,新建一个项目命名为 "ModbusTCP V5.0",在项目中添加CPU1217C DC/DC/DC V4.4,为以太网接口新建一个子网并设置 IP地址为 "192.168.0.1",如下图 3 所示。

A screenshot of a computerDescription automatically generated

图2. 分配IP地址

1.2、在 OB1组织块中添加Modbus TCP Server功能块 "MB_SERVER",软件将提示会为该 FB块增加一个背景数据块,本例中为 DB1"MB_SERVER_DB",如下图3所示。

A screenshot of a computerDescription automatically generated

图3. 指令创建

2、访问数据块中的数据区域

用户可访问数据块中的数据区域,而不用直接访问过程映像和保持性寄存器。在此情况下,必须禁用数据块的“优化块访问”(Optimized block access) 属性,并且该属性不得单独存在于装载存储器中。

2.1、创建标准数据块,DB10(Area 1 for Input)、DB11(Area 2 for Input Register)、DB12(Area 3 for Holding Register)、DB13(Area 4 for Holding Register)如下图 4 所示。并修改数据块属性为标准访问数据块,如下图5所示。

A screenshot of a computerDescription automatically generated

图4. 创建数据块

A screenshot of a computerDescription automatically generated

图5. 数据块属性

2.2、分配数据区域及注意事项

  • 用户最多可在不同数据块中定义八个数据区域,每个数据块只能包含一个数据区域。单个MODBUS 请求只能对恰好一个数据区域进行读写操作。每个数据区域对应于一个 MODBUS 地址区域。可以在MB_SERVER背景数据块的静态变量中"Data_Area_Array"中定义数据区域。
  • 如果要使用的数据区域不到八个,则所需数据区域必须紧密相连,没有间隙。在处理过程中,数据区域中的第一个空白条目会终止数据区域搜索。例如,如果已定义字段元素 1、2、4 和 5,由于字段元素 3 留空,则"Data_Area_Array"只会识别字段元素 1 和 2。
  • 如果 MODBUS 请求到达时尚未定义相应功能代码的 MODBUS 数据类型的数据区域,请求会按之前的指令版本处理,即直接访问过程映像和保持性寄存器。如果已为功能代码的 MODBUS 数据类型定义了数据区域,则指令 MB_SERVER 可对该数据区域进行读写操作。具体是读操作还是写操作取决于作业类型。如果有两个区域都是03呢,是否会读写搞混了?测试一下功能码1和15可以放在2个功能区吗,并且起始地址和长度一样
  • 单个 MODBUS 请求只能对一个数据区域进行读写操作。如果要读取覆盖多个数据区域的保持性寄存器,则需要多个 MODBUS 请求。

Data_Area_Array 字段包含八个元素:Data_Area_Array[1] 到 Data_Area_Array[8],每个字段元素 Data_Area_Array[x](其中 1 <= x <= 8)都是 MB_DataArea 类型的 UDT,结构如下表1。

表1:Data_Area_Array结构

参数数据类型含义
data_typeUInt映射到此数据区域的 MODBUS 数据类型的标识符:
• 0:空字段元素或未使用数据区域的标识符。此时,db、start和length的值无效。
• 1:过程映像输出(与功能代码 1、5 和 15 一起使用)
• 2:过程映像输入(与功能代码 2 一起使用)
• 3:保持寄存器(与功能代码 3、6 和 16 一起使用)
• 4:输入寄存器(与功能代码 4 一起使用)
dbUInt映射的数据区编号,该DB必须是非优化DB
startUInt映射到数据块中的首个 MODBUS 地址,从0开始
lengthUIntBool数(对于data_type 1或者2),Word数(data_type 3或者4)

本例中使用了4个区域,进入MB_SERVER背景数据块DB1“MB_SERVER_DB”的静态变量中Data_Area_Arry,分别为区域1访问输入位、区域2访问输入字、区域3访问保持寄存器、区域4访问保持寄存器、区域5~8保持默认为0,如下图6所示。

A screenshot of a computerDescription automatically generated

图6. 数据区域

2.3、仿真软件设置,如下图7-8所示。

A screenshot of a computerDescription automatically generated

图7. 通信配置

A screenshot of a computerDescription automatically generated

图8. 读写配置

2.4、测试结果,如下图9所示。

A screenshot of a computerDescription automatically generated

图9. 测试结果

3、过程映像区的读访问限制

对于 MB_SERVER 指令V5.0及以上版本,用户可在过程映像输入中定义一个区域,在过程映像输出中定义一个区域,方便远程 MODBUS 设备 进行读访问。随后,远程 MODBUS 设备便不能对超出这些过程映像区域的地址进行读访问。

背景数据块的以下静态变量定义了过程映像中的读取区域:

  • QB_Read_Start:可由远程 MODBUS 设备读取的过程映像输出中的第一个字节的地址(应用于功能代码 1)
  • QB_Read_Count:可由远程 MODBUS 设备读取的过程映像输出中的字节数(应用于功能代码 1)
  • IB_Read_Start:可由远程 MODBUS 设备读取的过程映像输入中的第一个字节的地址(应用于功能代码 2 和 4)
  • IB_Read_Count:可由远程 MODBUS 设备读取的过程映像输入中的字节数(应用于功能代码 2 和 4)

下表2介绍了指令 MB_SERVER 背景数据块中的上述静态变量,可用于定义过程映像中的读区域。为确保完整性,表格中还列出了自版本 V4.2 起,用于定义过程映像中的写区域的静态变量(QB_Start 和 QB_Count)。

表2 读访问限制变量

变量数据类型默认值说明版本
QB_StartUInt0CPU 可写入的输出字节的起始地址V4
QB_CountUInt65535CPU 可写入的输出字节的字节数。
如果 QB_Count = 0,则CPU 的输出字节均无法写入。
V4
QB_Read_StartUInt0CPU 可读取的输出字节的起始地址V5
QB_Read_CountUInt65535CPU 可读取的输出字节的字节数。
如果 QB_Read_Count = 0,则CPU 的输出字节均无法读取。
V5
IB_Read_StartUInt0CPU 可读取的输入字节的起始地址V5
IB_Read_CountUInt65535CPU 可读取的输入字节的字节数。
如果 IB_Read_Count = 0,CPU 的输入字节均无法读取。
V5

3.1、本例中定义过程映像中读取区域如下图9所示,输出过程映像写访问权限QB0~QB9,输出过程映像读访问权限QB10~QB19,输入过程映像读访问权限IB20~IB29。

A screenshot of a computerDescription automatically generated

图9. 过程映像区域设定

3.2、仿真软件设置,如下图10所示。

A screenshot of a computerDescription automatically generated

图10. 通信设置

3.3、测试结果

A screenshot of a computerDescription automatically generated

图11. 读取Q区数据

A screenshot of a computerDescription automatically generated

图12. 读取I区数据

4、统计变量 NDR_immediate 和 DR_immediate

指令 MB_SERVER(自指令版本 V5.0 起)的背景数据块中含有统计变量 NDR_immediate 和 DR_immediate。

表3:NDR_immediate 和 DR_immediate。

变量数据类型默认值说明
NDR_immediateBoolFalse与参数 NDR(新数据就绪)含义相同。MB_SERVER 在处理
Modbus TCP 写请求的同一调用中更新"NDR_immediate"。
DR_immediateBoolFalse与参数 DR(数据读取)含义相同。MB_SERVER 在处理
Modbus TCP 写请求的同一调用中更新"DR_immediate"。

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

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

相关文章

2-RuoYi-UI管理平台的启动

RuoYi-UI是RuoYi后端框架的管理中心(基于 Vue.js 的前端项目)的详细配置与启动指南,结合官方文档和常见实践整理,涵盖环境准备、配置修改、启动流程及问题排查。 ⚙️ 一、环境准备 Node.js 版本要求:≥12.0(推荐 ≥14.0 或 18.18+ 适配 Vue3) 安装后验证: node -v …

WPF学习笔记(21)ListBox、ListView与控件模板

ListBox与控件模板 一、 ListBox默认控件模板详解二、ItemsPresenter集合数据呈现1. 概述2. 示例 三、 ListView默认控件模板详解1. 概述2. 示例 一、 ListBox默认控件模板详解 WPF 中的大多数控件都有默认的控件模板。 这些模板定义了控件的默认外观和行为&#xff0c;包括控…

操作系统【2】【内存管理】【虚拟内存】【参考小林code】

本文完全参考 虚拟内存内存分段内存分页段页式内存管理Linux内存管理 一、虚拟内存 1. 单片机的绝对物理地址 以单片机作为引子&#xff0c;它没有操作系统&#xff0c;每次写完程序是借助工具将程序烧录进单片机&#xff0c;程序才能运行。 单片机由于没有操作系统&#…

【王树森推荐系统】召回05:矩阵补充、最近邻查找

概述 这节课和后面几节课将详细讲述向量召回&#xff0c;矩阵补充是向量召回最简单的一种方法&#xff0c;不过现在已经不太常用这种方法了本节课的矩阵补充是为了帮助理解下节课的双塔模型上节课介绍了embedding&#xff0c;它可以把用户ID和物品ID映射成向量 矩阵补充 模型…

C# 事件(订阅事件和触发事件)

订阅事件 订阅者向事件添加事件处理程序。对于一个要添加到事件的事件处理程序来说&#xff0c;它必须具有 与事件的委托相同的返回类型和签名。 使用运算符来为事件添加事件处理程序&#xff0c;如下面的代码所示。事件处理程序位于该运 算符的右边。事件处理程序的规范可以…

64页精品PPT | 基于DeepSeek的数据治理方案AI大数据治理解决方案数据治理大模型解决方案

这份PPT文档是关于基于DeepSeek的大模型技术在数据治理方案中的应用介绍。强调数据作为新型生产要素与人工智能技术相结合的重要性&#xff0c;指出大模型凭借强大的文学理解、生成能力以及多模态数据处理能力&#xff0c;能为数据治理带来新机遇。文档详细阐述了数据资产化的路…

【文献笔记】Tree of Thoughts: Deliberate Problem Solving with Large Language Models

Tree of Thoughts: Deliberate Problem Solving with Large Language Models https://github.com/princeton-nlp/tree-of-thought-llm 标题翻译&#xff1a;思维树&#xff1a;利用大型语言模型问题求解 1. 内容介绍 1.1. 背景 决策过程有两种模式&#xff1a; 快速、自动…

使用 Mathematical_Expression 从零开始实现数学题目的作答小游戏【可复制代码】

从零开始实现数学题目的作答小游戏 开源技术栏 使用 Mathematical_Expression 让计算机做出题人&#xff0c;让代码与数学碰撞出趣味火花。 目录 文章目录 从零开始实现数学题目的作答小游戏目录 从零开始实现数学题目的作答小游戏&#xff1a;让代码与数学碰撞出趣味火花为…

DQL-9-小结

DQL-9-小结 小结DQL语句 小结 DQL语句 SELECT 字段列表 -- 字段名 [AS] 别名FROM 表名列表WHERE条件列表 -- >、 >、 <、 <、 、 <>、 like、 between ... and、 in、 and、 or, 分组之前过滤 GROUP BY分组字段列表HAVING分组后条件列表 -- 分组之后…

[netty5: WebSocketServerHandshaker WebSocketServerHandshakerFactory]-源码分析

在阅读这篇文章前&#xff0c;推荐先阅读以下内容&#xff1a; [netty5: WebSocketFrame]-源码分析[netty5: WebSocketFrameEncoder & WebSocketFrameDecoder]-源码解析 WebSocketServerHandshakerFactory WebSocketServerHandshakerFactory 用于根据客户端请求中的 Web…

数据挖掘:深度解析与实战应用

在当今数字化时代&#xff0c;数据挖掘已经成为企业获取竞争优势的关键技术之一。通过从大量数据中提取有价值的信息&#xff0c;企业可以更好地理解客户需求、优化业务流程、提高运营效率。本文将深入探讨数据挖掘的核心技术、实际应用案例以及如何在企业中实施数据挖掘项目。…

LLM面试题14

算法岗面试题 介绍下Transformer模型。 Transformer本身是一个典型的encoder-decoder模型&#xff0c;Encoder端和Decoder端均有6个Block,Encoder端的Block包括两个模块&#xff0c;多头self-attention模块以及一个前馈神经网络模块&#xff1b;Decoder端的Block包括三个模块&…

Java金融场景中为什么金额字段禁止使用浮点类型(float/double)?

引言 Java金融场景中为什么金额字段禁止使用浮点类型&#xff1f;这是一篇你不能忽视的“爆雷”警告&#xff01; 在金融、电商、支付、清结算等业务系统中&#xff0c;浮点类型是绝对禁区&#xff01; &#x1f6a8;一、核心警告&#xff1a;浮点类型不是十进制数&#xff01;…

SVN下载与拉取

大家好我是苏麟&#xff0c;今天聊一聊SVN。 SVN官网&#xff1a;下载 TortoiseSVN - TortoiseSVN 软件 根据系统选择32位还是64位 打开文件 安装&#xff0c;下一步&#xff0c;下一步 安装成功后&#xff0c;右键找到SVNcheck 输入地址 输入用户名和密码就OK了 这期就到这里…

数据结构笔记8:堆

目录 满二叉树&#xff1a; 完全二叉树&#xff1a; 堆是一种特殊的完全二叉树&#xff1a; 我们可以以数组的方式存储堆。 父节点和子节点下标关系的推导&#xff1a; 1.使用数学归纳法证明n2 1 n0&#xff1a; 2.使用边和节点的关系证明n2 1 n0&#xff1a; 我们…

3. lvgl 9.3 vscode 模拟环境搭建 lv_port_pc_vscode-release-v9.3

文章目录1. 资源下载1. 1 lv_port_pc_vscode1.2 cmake 和 mingw 环境搭建1.3 sdl 下载1.4 下载lvgl_v9.32. 环境搭建2.1 拷贝lvgl 源码到工程2.2 添加SDL2 依赖2.3 执行工程3. 运行示例1. 资源下载 1. 1 lv_port_pc_vscode 那么多模拟器&#xff0c;为什么选择这个&#xff1…

【牛客刷题】小红的爆炸串(二)

一、题目介绍 本题链接为:小红的爆炸串(二) 小红定义一个字符串会爆炸,当且仅当至少有k对相邻的字母不同。 例如,当 k k k=2时,"arc"会爆炸,而"aabb"则不会爆炸。 小红拿到了一个长度为

【实战】如何训练一个客服语音对话场景VAD模型

1. 引言:客服场景下的VAD模型 在客服中心,每天都会产生海量的通话录音。对这些录音进行有效分析,可以用于服务质量监控、客户意图洞察、流程优化等。VAD在其中扮演着“预处理器”和“过滤器”的关键角色: 提升ASR效率与准确性:只将检测到的语音片段送入ASR引擎,可以避免…

在 Dokploy 中为 PostgreSQL 搭建 PgBouncer 数据库连接池(图文)

前言&#xff1a;为什么你需要一个连接池&#xff1f; 如果你正在使用 Node.js (尤其是像 Next.js 这样的框架) 配合 Prisma 操作 PostgreSQL 数据库&#xff0c;你很可能在某个阶段会遇到那个令人头疼的错误&#xff1a;“Error: Too many clients already”。这通常发生在应…

Mac获取终端历史

在 macOS 中&#xff0c;历史记录文件的位置取决于你使用的 shell。以下是针对不同 shell 的历史记录文件的默认位置&#xff1a;对于 Bash 用户&#xff1a; 历史记录文件通常位于 ~/.bash_history。对于 Zsh 用户&#xff08;macOS Catalina及以后版本默认使用的shell&#x…