Modbus通信概述
Modbus 协议作为一个标准的工业协议,其最简单的串行通信部分仅规定了在串行线路的基本数据传输格式,在 OSI 七层协议模型中只到 1层和2 层。Modbus 具有两种串行传输模式,ASCII 和 RTU。它们定义了数据如何打包、解码的不同方式。支持 Modbus 协议的设备一般都支持 RTU 格式。
Modbus 是一种单主站的主/从通信模式。Modbus 网络上只能有一个主站存在,主站在 Modbus 网络上没有地址,从站的地址范围为 0 - 247,其中 0 为广播地址。
Modbus 通信标准协议可以通过各种传输方式传播,如 RS232C、RS485、光纤、无线电等。
详细的协议和规范,请访问 Modbus 组织的网站:http://www.modbus.org
1.1 Modbus 主站寻址
Modbus 数据区地址为五到六位数,包含了数据类型和地址值。
不同的Modbus数据区地址通过不同的功能码来读取或者写入,Modbus 数据区地址定义如下:
• 00001 至 09999 是离散量输出(线圈)
• 10001 至 19999 是离散量输入(触点)
• 30001 至 39999 是输入寄存器(通常是模拟量输入)
• 40001 至 49999 和 400001 至 465535 是保持寄存器
所有 Modbus 数据区地址均从 xxxx1 (或者xxxxx1)开始,不同的设备支持不同的数据类型和地址范围。
1.2 Modbus主站读取和写入功能
Modbus 主站指令使用 Modbus 数据区地址读取或写入Modbus数据,相应的从站设备必须要支持对应的功能码,如表1所示。
表1 Modbus数据区地址对应Modbus从站需要支持的功能码
S7 200 SMART CPU通过串行端口进行 Modbus RTU 通信,借助STEP 7‑Micro/WIN SMART软件中的库指令,简化了与 Modbus 设备的通信。
SIMATIC S7‑200 SMART
2Modbus RTU 库
图1 西门子标准指令库(STEP 7-Micro/WIN SMART)
STEP 7-Micro/WIN SMART 支持主站和从站设备通过 RS 485(集成端口 0 和可选信号板端口 1)和 RS-232(jinxian可选信号板端口 1)进行 Modbus 通信, S7-200 SMART最多可以配置 2 个 Modbus RTU 主站。软件本身集成了指令库,如图1所示。
Modbus RTU 主站功能编程
调用 Modbus RTU 主站初始化和控制子程序。
图2 调用主站初始化MBUS_CTRL指令
1)使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制:
表2 MBUS_CTRL指令参数意义
2)调用Modbus RTU 主站读写子程序MBUS_MSG,发送一个Modbus请求:
图 3 调用主站读写子程序MBUS_MSG指令
表3 MBUS_MSG指令参数意义
3)库存储器分配
Modbus Master 指令库需要一个286个字节的全局 V 存储区。
调用STEP 7 - Micro/WIN SMART指令库需要分配库指令数据区。该数据区是相应库的子程序和中断程序所要用到的变量存储空间。
如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。
操作步骤:
a. 在指令树的Project(项目)中,以鼠标右键单击Program Block(程序块),在弹出的快捷菜单中选择Library Memory (库存储器…)。如图4所示:
图4 “库存储器”按钮
b. 在弹出的选项卡中设置库指令数据区,如图5所示:
图5 库存储器地址分配
注意事项
1)S7 200 SMART CPU一共支持两个 Modbus RTU 主站。如果您在项目中使用两个主站,则要确保 MBUS_CTRL/MBUS_MSG 和MB_CTRL2/ MBUS_MSG2成对使用,并采用不同的端口号做区分,如果只有一个主站则使用任意一对指令均可以。
2)S7-200 SMART CPU 支持的 Modbus 消息为每条最多 240 个字节(1920 位或 120 个寄存器)的数据。
3)通常 Modbus 协议的保持寄存器范围在 40001 到 49999 之间,这个范围对于多数应用来说已经足够了,但有些 Modbus 从站保持寄存器区的地址会超出该范围,此时主站协议库也支持400001 到 465536的地址范围,如果 Modbus 从站地址在该范围内,只需在调用 MBUS_MSG / MBUS_MSG2时给 Addr 参数赋相应的值即可,如 416768。
4)库存储器分配,可以自定义起始地址,或者使用 “建议地址” 设置数据区,但要注意应当确保该地址不与其他任何已使用的数据区重叠、冲突,这些数据区既包括一般寻址,还应该考虑间接寻址访问的地址。
5)Modbus数据区地址和S7-200 SMART存储区地址的映射举例。
- 【畅学技术】PCS 7 SFC 使顺序控制如鱼得水 2024-12-18
- 【畅学技术】工业数字化技术漫谈_工程师的 IT 百宝箱 2024-12-18
- 【畅学技术】S7-200 SMART Modbus RTU主站编程如何实现? 2024-12-18
- 如何在西门子博途TIA中定义变量 2024-12-18
- S7-200 smart实现设备故障报警 2024-12-18
- 测试S7-200 smart的SHRB命令 2024-12-18
- 西门子博途(TIA)S7-1200/1500利用CPU时钟寄存器来实现秒脉冲及测试 2024-12-18
- 西门子博途(TIA)读CPU时钟的测试 2024-12-18
- 西门子wincc问题之编辑C脚本时提示:当前服务器不可用,此时不能编辑任何动作 2024-12-18
- 工业以太网概念及通信基本术语介绍 2024-12-18