广东湘恒智能科技有限公司
主营产品: 西门子PLC,西门子模块,西门子触摸屏,西门子变频器,西门子伺服电机驱动,电缆,西门子全系列
S7-200 SMART Modbus RTU主站编程如何实现?
发布时间:2024-09-19
观看S7-200 SMART Modbus RTU主站编程如何实现?视频:
1


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

2


Modbus 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所示。


3


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 库存储器地址分配


4


注意事项

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存储区地址的映射举例。


图片

图片







展开全文
拨打电话 微信咨询 发送询价