浔之漫智控技术-西门子PLC代理商
西门子PLC模块 , 变频器 , 触摸屏 , 交换机
西门子中央处理器6ES7288-1ST20-0AA1

西门子中央处理器6ES7288-1ST20-0AA1

常见的错误:

如果多个 MBUS_MSG 指令同时使能会造成 6 号错误

库存储区被程序其它地方复用,有时也会造成6 号错误

从站 delay 参数设的时间过长会造成主站 3 号错误

从站掉电或不运行,网络故障都会造成主站 3 号错误

3. 在 CPU 的 V 数据区中为库指令分配存储区(Library Memory)

Modbus Master 指令库需要一个284个字节的全局 V 存储区。

参考:分配库指令数据区

1.3 关于 Modbus RTU 主站协议及地址

此为西门子正式推出的标准库指令说明资料。

在 Modbus RTU Master 协议和 PPI 协议之间切换:

Modbus RTU Master 协议指令库使通信口工作在自由口模式下,此时不能与 Micro/WIN 软件通信。要在切换回 PPI 协议,可以:

将 MBUS_CTRL 指令的 Mode 输入端设置为逻辑"0"

将 CPU 的允许模式选择开关置为 STOP 位置

西门子6ES7952-1KP00-0AA0

Modbus RTU Master 协议库的执行时间:

Modbus RTU Master 协议库的 MBUS_CTRL 指令不需要很长的执行时间。MBUS_需要 1.11 ms 用于初始化,在后续的每个扫描周期中只占用 0.41 ms。

调用 MBUS_MSG 子程序会加长处理时间。大部分时间都用于 CRC 校验的计算。每读、写一个字的数据就需要 1.85 ms 扫描时间。数据zui多的情况下(读、写 120 字的数据),扫描时间大概会扩增加 222 ms。读操作的时间主要消耗在接收数据上;写操作的时间主要消耗在发送数据上。

 

Modbus 地址

 

通常 Modbus 地址由 5 位数字组成,包括起始的数据类型代号,以及后面的偏移地址。Modbus Master 协议库把标准的 Modbus 地址映射为所谓 Modbus 功能号,读写从站的数据。Modbus Master 协议库支持如下地址:

00001 - 09999:数字量输出( 线圈)

10001 - 19999:数字量输入(触点)

30001 - 39999:输入数据寄存器(通常为模拟量输入)

40001 - 49999:数据保持寄存器

 

Modbus Master 协议库支持的功能

西门子6ES7952-1KP00-0AA0

为了支持上述 Modbus 地址的读写,Modbus Master 协议库需要从站支持下列功能:

表 1. 需要从站支持的功能

Modbus 地址读/写Modbus 从站须支持的功能00001 - 09999
数字量输出10001 - 19999
数字量输入

30001 - 39999
输入寄存器

40001 - 49999
保持寄存器
功能 1
功能 5:写单输出点
功能 15:写多输出点
功能 2
功能 4
功能 3
功能 6:写单寄存器单元
功能 16:写多寄存器单元

 

Modbus 地址和 S7-200 存储区地址的映射

 

S7-200 通过 Modbus Master 和 Slave 协议库通信时,Modbus 地址和 S7-200 内存储区地址的 映射关系都类似。

Modbus 保持寄存器地址映射举例:

5

Modbus 数字量地址映射举例:

 

位地址(0xxxx 和 1xxxx)数据总是以字节为单位打包读写。*个字节中的zui低有效位对应 Modbus 地址的起始地址。如下图所示:

西门子6ES7952-1KP00-0AA0

6

图 4. 数字量地址映射举例

1.4 Modbus RTU 主站例程

为了更好地理解 Modbus 主站的编程,可参考下面的例程。

 

例子程序1: 多个MBUS_MSG指令轮询执行,

 

注意

1. 该例程使用 Micro/WIN V4.0 SP5 保存。

2. 该例程仅访问一个从站,若访问不同的从站,可通过改变从站地址来实现。

Modbus RTU 主站指令库应用例程

 

例子程序2:反复激活单个MBUS_MSG指令:

 

Modbus RTU 主站变址方式轮询访问应用例程

 

注意:此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险*由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和支持,用户不必为 此西门子与服务部门。

西门子6ES7952-1KP00-0AA0

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 扩展地址模式仅支持保持寄存器区,不支持其他地址类型。


发布时间:2024-05-08
展开全文
优质商家推荐 拨打电话