S7-200 SMART Modbus RTU主站编程

2024/8/6 1:02:55 人评论 次浏览 分类:PLC应用  文章地址:http://yunrun.com.cn/tech/5714.html

SIMATIC S7‑200 SMART

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从站需要支持的功能码

Modbus数据区地址对应Modbus从站需要支持的功能码

S7-200 SMART CPU通过串行端口进行Modbus RTU通信,借助STEP 7‑Micro/WIN SMART软件中的库指令,简化了与Modbus设备的通信。


2、Modbus RTU库

Modbus RTU库
图1 西门子标准指令库(STEP 7-Micro/WIN SMART)


STEP 7-Micro/WIN SMART支持主站和从站设备通过RS485(集成端口0和可选信号板端口1)和RS232(仅限可选信号板端口1)进行Modbus通信, S7-200 SMART最多可以配置2个Modbus RTU主站。软件本身集成了指令库,如图1所示。


3、Modbus RTU主站功能编程

调用Modbus RTU主站初始化和控制子程序。

调用主站初始化MBUS_CTRL指令
图2  调用主站初始化MBUS_CTRL指令


①使用SM0.0调用MBUS_CTRL完成主站的初始化,并启动其功能控制:


表2 MBUS_CTRL指令参数意义

MBUS_CTRL指令参数意义

②调用Modbus RTU主站读写子程序MBUS_MSG,发送一个Modbus请求:

调用主站读写子程序MBUS_MSG指令
图3  调用主站读写子程序MBUS_MSG指令


表3 MBUS_MSG指令参数意义

MBUS_MSG指令参数意义

③库存储器分配

Modbus Master指令库需要一个286个字节的全局V存储区。
调用STEP 7-Micro/WIN SMART指令库需要分配库指令数据区。该数据区是相应库的子程序和中断程序所要用到的变量存储空间。
如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。

操作步骤:

a、在指令树的Project(项目)中,以鼠标右键单击Program Block(程序块),在弹出的快捷菜单中选择Library Memory(库存储器…)。如图4所示:

“库存储器”按钮
图4 “库存储器”按钮


b、在弹出的选项卡中设置库指令数据区,如图5所示

库存储器地址分配
图5 库存储器地址分配


4、注意事项

①S7 200 SMART CPU一共支持两个Modbus RTU主站。如果您在项目中使用两个主站,则要确保MBUS_CTRL/MBUS_MSG和MB_CTRL2/ MBUS_MSG2成对使用,并采用不同的端口号做区分,如果只有一个主站则使用任意一对指令均可以。

②S7-200 SMART CPU支持的Modbus消息为每条最多240个字节(1920位或120个寄存器)的数据。


③通常Modbus协议的保持寄存器范围在40001到49999之间,这个范围对于多数应用来说已经足够了,但有些Modbus从站保持寄存器区的地址会超出该范围,此时主站协议库也支持400001到465536的地址范围,如果Modbus从站地址在该范围内,只需在调用MBUS_MSG / MBUS_MSG2时给Addr参数赋相应的值即可,如416768。


④库存储器分配,可以自定义起始地址,或者使用 “建议地址” 设置数据区,但要注意应当确保该地址不与其他任何已使用的数据区重叠、冲突,这些数据区既包括一般寻址,还应该考虑间接寻址访问的地址。


⑤Modbus数据区地址和S7-200 SMART存储区地址的映射举例。

Modbus数据区地址和S7-200 SMART存储区地址的映射举例

共有访客发表了评论 网友评论

  客户姓名:
邮箱或QQ:
验证码: 看不清楚?