浔之漫智控技术(上海)有限公司
    关于我们
  • 企业文化 组织结构 分支公司 售后服务 技术支持
  • 西门子6ES7215-1HG40-0XB0技术参数
  • 西门子6ES7215-1HG40-0XB0技术参数
  • 西门子6ES7215-1HG40-0XB0技术参数

产品描述

产地德国 品牌西门子

西门子6ES7215-1HG40-0XB0技术参数


1.5 Modbus RTU 主站常问问题

Modbus RTU 主站库对 CPU 的版本是否有要求,为什么编译例子程序时,会遇到 4 个错误?

Modbus RTU 主站库对 CPU 的版本确实有要求,CPU 的版本必须为 2.00 或者 2.01(即订货号为6ES721*-***23-0BA*),1.22 版本之前(包括 1.22 版本)的 S7-200 CPU 不支持。

Modbus 指令库启动后,如何通过同一个通信端口进行 CPU 监控?

Modbus 指令库使用的是 CPU 的自由口通信功能,工作在自由口模式下的通讯口不能使用 Micro/WIN 的 PPI 编程通信监控。如果通信口都已经被占用,可以考虑:

加一个通信模块(如 EM 277、CP 243-1、EM 241 等)扩展出一个编程通信口

中止自由口模式,可以将 CPU 上的模式开关从 RUN 拨到 STOP;或者保持处于 RUN 状态,用程序停止指令库的 Modbus 模式(参见指令库应用)

 如何理解 Modbus 地址与功能码的区别?

Modbus 地址与 Modbus 的功能码是两个层次的概念。

 

根据 Modbus 通信协议,Modbus 数据的地址使用 0xxxx、1xxxx、3xxxx 和 4xxxx 的形式,分别表示数字量输出、数字量输入、模拟量输入等数据地址。在使用 S7-200 的指令库时,Modbus 数据地址与 S7-200 的 I/O 和数据存储区地址间有特定的对应关系。

 

有些设备表明它支持 Modbus RTU 通信协议,但也详细提供了读写数据的详细通信帧格式,其中包括如何 Modbus 站的地址,需要读写数据类型、长度等等。数据帧有特定字节指出此指令读写的数据类型和地址,此字节的数据内容即所谓"功能码",如功能 1 读取单个/多个数字量输出点的值。

 

支持 Modbus 协议的设备或软件,使用时用户直接设置或看到的应当是 Modbus 数据地址。Modbus 地址所访问的数据,是通过各种"功能"读写而来。功能码是 Modbus 地址的底层。如果 Modbus 通信的一方提供的所谓 Modbus 协议只有功能码,则需要注意了解此功能号与 Modbus 地址间的对应关系。西门子6ES7952-1KP00-0AA0

如何访问大于 9999 的保持寄存器地址?

通常 Modbus 协议的保持寄存器地址范围在 40001 - 49999 之间。对于多数应用来说已经够了。但有些 Modbus 从站把地址映射到保持寄存器区的地址超过 9999 的部分。

Modbus Master 协议库支持超过 9999 的保持寄存器地址。地址范围为 400001 - 465536。只需在调用 MBUS_MSG 子程序时给 Addr 参数赋相应的值即可,如 416768。

 Modubs Master 扩展地址模式仅支持保持寄存器区,不支持其他地址类型。

S7-200 作为 Modbus 主站方接收上来的数据格式与第三方设备不一样怎么办?

西门子PLC数据的存储格式为高位低存方式。举例:VD200中包含VW200和VW202,其中VW202是低字,VW200是高字。若第三方设备与西门子数据存储格式不同,是低位低存的方式,那么通信上来的数据就会存在错误,需要进行转换才能使用。编程的方式比较多样,针对双字中高低字的交换可以使用SWAP(字交换)指令,若是字节交换可以考虑循环移位指令。

S7-200 是否支持如 Modbus TCP 等其它协议?

不支持。S7-200自身的通信端口或其通信扩展模块均不支持 Modbus TCP、CANopen、DeviceNet 以及 BACnet 通信协议。

 为什么 S7-200 作 Modbus 主站时 MBUS_MSG 指令报6号错误?

引起6号错误主要有两方面的原因:1.多个 MBUS_MSG 指令同时使能执行;2. Modbus库存储区中分配的建议地址区与编程中已使用的V存储区有重叠。

2Modbus RTU从站

2.1 CPU 上的通信口(Port0)支持 Modbus RTU 从站通信协议

S7-200 CPU上的通信口Port0可以支持Modbus RTU协议,成为Modbus RTU从站。此功能是通过S7-200的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。

 详情请参考《S7-200系统手册》之相关章节。

要实现Modbus RTU通信,需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。

 Modbus RTU从站指令库只支持CPU上的通信0口(Port0)


VALUE 参数声明为 Output,因为数据流入变量。但此变量本身在块接必须声明
为 InOut。
有关有效数据类型的更多信息,请参见“另请参见”。
RET_VAL 参数
下表列出了 RET_VAL 参数值的含义:
错误代码*
(W#16#...
)
说明
0000 无错误
80B4 存储在 ARRAY 数据块中的元素数据类型与 VARIANT 中传输的元素数据类
型不匹配。
80B5 操作被中断。
8132 数据块不存在、太短、写保护或位于装载存储器中。
8135 ARRAY 数据块中包含无效值。
8154 该数据块的数据类型不正确。
8282 INDEX 参数的值超出 ARRAY 的。
8450 参数 VALUE 中数据类型 VARIANT 的值为“0”。
8452 代码生成错误
指令
4.1 指令
对 PLC 进行编程
1610 编程和操作手册, 10/2018
错误代码*
(W#16#...
)
说明
8453 该错误的原因有以下两种:
● VALUE 参数的大小与 ARRAY 数据块中的元素长度不匹配。
● 这两个变量不在具有“访问”的存储区内。有关存储区访问类型的更
多信息,请参见“块访问的基本知识 (页 60)”
* 在程序编辑器中,错误代码可显示为整数或十六进制值。有关切换显示格式的更多信
息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:
STL 说明
CALL ReadFromArrayDB // 调用指令
DB := "ArrayDB" // 待读取数据的数据块。
INDEX := "ArrayDB".THIS[2] // 从数据块中读取第二个元素。
RET_VAL := "TagRet_Val" // 错误信息
VALUE := "TargetField" // 从参数 VALUE 中读取值。
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数操作数值
DB ArrayDB 操作数“ArrayDB”是数据类
型为 Array [0 to 10] of INT
的 ARRAY DB。
INDEX 2 “ArrayDB”的第二个元素
VALUE TargetField 操作数“TargetField”是 INT
数据类型的全局变量。
将读取“ArrayDB”中的第二个元素并写入操作数“TargetField”中



http://www.absygs.com

产品推荐