西门子中央处理器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. 需要从站支持的功能
读 | 功能 1 |
写 | 功能 5:写单输出点 功能 15:写多输出点 |
读 | 功能 2 |
写 | - |
读 | 功能 4 |
写 | - |
读 | 功能 3 |
写 | 功能 6:写单寄存器单元 功能 16:写多寄存器单元 |
Modbus 地址和 S7-200 存储区地址的映射
S7-200 通过 Modbus Master 和 Slave 协议库通信时,Modbus 地址和 S7-200 内存储区地址的 映射关系都类似。
Modbus 保持寄存器地址映射举例:
Modbus 数字量地址映射举例:
位地址(0xxxx 和 1xxxx)数据总是以字节为单位打包读写。*个字节中的zui低有效位对应 Modbus 地址的起始地址。如下图所示:
西门子6ES7952-1KP00-0AA0
图 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 扩展地址模式仅支持保持寄存器区,不支持其他地址类型。
- 西门子中央处理器6ES7288-1SR20-0AA1 2024-05-08
- 西门子可编程控制器6ES7288-1CR60-0AA0 2024-05-08
- 西门子可编程控制器6ES7288-1CR40-0AA0 2024-05-08
- 西门子可编程控制器6ES7288-1ST60-0AA1 2024-05-08
- 西门子可编程控制器6ES7288-1SR60-0AA1 2024-05-08
- 西门子可编程控制器6ES7288-1ST40-0AA1 2024-05-08
- 西门子可编程控制器6ES7288-1SR40-0AA1 2024-05-08
- 西门子可编程控制器6ES7288-1ST30-0AA1 2024-05-08
- 西门子可编程控制器6ES7288-1SR30-0AA1 2024-05-08
- 西门子可编程控制器6ES7288-1ST20-0AA1 2024-05-08