[西门子] 西门子 S7-200 SMART 系列七:手把手教你配置S7-200 SMART Modbus RTU 从站&样例程序下载

[复制链接]
查看5489 | 回复0 | 2024-3-23 07:33:54 | 显示全部楼层 |阅读模式
西门子 S7-200 smart Modbus RTU 从站


R-C
s7=200 smart Modbus 通讯简介

在上期Modbus主站通讯通知中,介绍了Modbus相关介绍,本篇不过多关注Modbus本身,主要讲如何将S7-200 samrt作为从站使用的相关配置。

s7-200 samrt 通常情况下是用作主站使用,来采集现场仪表、传感器等的485信号,但西门子s7-200 samrt 同时又支持作为从站使用(通信板和COM1口,同一时间仅支持作为主站或从站),多用于作为数据转发站点存在,随着越来越多的MES、I4.0项目上线,s7-200 smart 作为从站的需求也越来越多。本期内容教你如何使用西门子标准库组态配置Modbus从站;
s7-200 Modbus RTU 从站指令库

西门子在 STEP 7-Micro/WIN SMART 中已经集成了 Modbus RTU 从站协议库(西门子标准库指令)库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。使用 Modbus RTU 从站指令库,可以将PLC内数据以Modbus 协议形式传输至上位机系统。


image-20240319161300097
s7-200 Modbus RTU 从站配置步骤

1. 从站指令初始化

使用SM0.1调用子程序MBUS_INIT进行从站参数初始化,注意:SM0.1仅在第一个扫描周期执行,因此Modbus RTU 从站参数无法在线修改,每次修改完成必须重启CPU;


image-20240319165710113
各参数意义:
EN使能使用SM0.1仅在第一个扫描周期执行
Mode模式选择启动/停止Modbus,1=启动;0=停止
Addr从站地址Modbus从站地址,取值1~247
Baud波特率可选1200,2400,4800,9600,19200,38400,57600,115200
Parity奇偶校验0=无校验;
1=奇校验;
2=偶校验
Port端口0=CPU中集成的  RS-485
1=可选信号板上的RS-485 或 RS-232。
Delay延时附加字符间延时,缺省值为0
MaxIQ最大I/Q位参与通信的最大I/O点数,S7-200  SMART 的I/O映像区为256/256(但目前只能最多连接4个扩展模块,因此目前最多I/O点数为188/188)
MaxAI最大AI字数参与通信的最大AI通道数,最多56个
MaxHold最大保持寄存器区参与通信的V存储区字(VW)
HoldStart保持寄存器区起始地址以&VBx指定(间接寻址方式)
Done初始化完成标志成功初始化后置1
Error初始化错误代码0=无错误
1=存储器范围错误
2=波特率或奇偶校验非法
3=从站地址非法
4=Modbus参数值非法
5=保持寄存器与Modbus从站符号重叠6=收到奇偶校验错误
7=收到CRC错误
8=功能请求非法
9=请求中的存储器地址非法
10=从站功能未启用
11=端口无效
12=信号板端口1缺失或未组态

2.调用从站指令初

使用SM0.0调用MBUS_SLAVE指,由于Modbus通讯从站不能主动发起数据传输,只有等待主站轮询,因此需要使用SM0.0一直执行;


image-20240319171337333
各参数意义:
EN使能使用SM0.0,一直保持执行
Done从站指令响应状态当 MBUS_SLAVE 指令响应 Modbus 请求时,“完成”(Done) 输出接通。
如果未处理任何请求,“完成”(Done) 输出关闭。
Error输出包含指令的执行结果仅当“完成”(Done) 接通时,该输出才有效。如果“完成”(Done) 关闭,则错误参数不会改变。
在CPU的V数据区中分配库指令数据块

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

调用STEP 7 - Mciro/WIN SMART Instruction Library(指令库)需要分配库指令数据区(Library  Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。

如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。

操作步骤:

    在指令树的Project(项目)中,以鼠标右键单击Program Block(程序块),在弹出的快捷菜单中选择Library Memory。


    image-20240318142619164
    在弹出的选项卡中设置库指令数据区,可以自己填地址,也可选择建议地址自动分配;注意:分配后的地址,不能再用在其他程序中;


    image-20240318143740235
    配置结束,下载程序即可进行通讯测试;
Modbus RTU 从站指令库支持的 Modbus 功能码
功能码主站使用相应功能码作用于此从站的效用
1读取单个/多个线圈(离散量输出点)状态。 功能 1 返回任意个数输出点(Q)的 ON/OFF 状态。
2读取单个/多个触点(离散量输入点)状态。 功能 2 返回任意个数输入点(I)的 ON/OFF 状态。
3读取单个/多个保持寄存器。功能 3 返回 V 存储区的内容。在 Modbus 协议下保持寄存器都是“字”值,在一次请求中可以读取最多 120 个字的数据。
4读取单个/多个输入寄存器。功能 4 返回 S7-200 SMART CPU 的模拟量数据值。
5写单个线圈(离散量输出点)。功能 5 用于将离散量输出点设置为指定的值。这个点不是被强制的,用户程序可以覆盖 Modbus  通信请求写入的值。
6写单个保持寄存器。功能 6 写一个值到 S7-200 SMART 的 V 存储区的保持寄存器中。
15写多个线圈(离散量输出点)。功能 15 把多个离散量输出点的值写到 S7-200 SMART CPU 的输出映像寄存器(Q  区)。输出点的地址必须以字节边界起始(如 Q0.0 或 Q2.0),并且输出点的数目必须是 8 的整数倍。这是此 Modbus RTU  从站指令库的限制。些点不是被强制的,用户程序可以覆盖 Modbus 通信请求写入的值。
16些多个保持寄存器。功能 16 写多个值到 S7-200 SMART CPU 的 V 存储区的保持寄存器中。在一次请求中可以写最多 120  个字的数据。
Modbus 从站例程

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

关注公众号,发送10003,获取打包下载链接


public

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则