西门子Modus_TCP_V5版本更新.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

ModbusTCP服务器指令MB_SERVERV5.0新功能概述

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

访问数据块中的数据区域,而不是直接访问MODBUS地址

过程映像区的读访问限制

统计变量NDR_immediate和DR_immediate

图1.MB_SERVER指令

SIMATICS7-1200使用要求

TIAPortalV15及以上版本

CPU固件V4.2及以上版本

对于ModbusTCP基础版本V4.0,请参见:

客户端:链接

服务器:链接

新功能实验环境和内容

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

软件:

TIAProfessionalV16

ModbusPoll

硬件:

CPU1217CDC/DC/DCV4.4

新功能通信程序

1、指令调用及参数分配

1.1、打开TIAPortalV16软件,新建一个项目命名为ModbusTCPV5.0,在项目中添加CPU1217CDC/DC/DCV4.4,为以太网接口新建一个子网并设置IP地址为192.168.0.1,如下图3所示。

图2.分配IP地址

1.2、在OB1组织块中添加ModbusTCPServer功能块MB_SERVER,软件将提示会为该FB块增加一个背景数据块,本例中为DB1MB_SERVER_DB,如下图3所示。指令各引脚具体含义及如何分配与先前版本一致,请参考链接。

图3.指令创建

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

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

2.1、创建标准数据块,DB10(Area1forInput)、DB11(Area2forInputRegister)、DB12(Area3forHoldingRegister)、DB13(Area4forHoldingRegister)如下图4所示。并修改数据块属性为标准访问数据块,如下图5所示。

图4.创建数据块

图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_type

UInt

映射到此数据区域的MODBUS数据类型的标识符:

?0:空字段元素或未使用数据区域的标识符。此时,db、start和length的值无效。

?1:过程映像输出(与功能代码1、5和15一起使用)

?2:过程映像输入(与功能代码2一起使用)

?3:保持寄存器(与功能代码3、6和16一起使用)

?4:输入寄存器(与功能代码4一起使用)

db

UInt

映射的数据区编号,该D

文档评论(0)

159****5811 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档