电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 梯形图实例 >> 正文

S7-200SMART系列PLC之间的Modbus通信 MBUS_CTRL和MBUS_MSG

作者:佚名    文章来源:网络整理    点击数:    更新时间:2026/1/31

在接下来的一段时间,会重点分享关于S7-200SMART通信应用的案例,包括串口通信应用案例、以太网通信应用案例等,希望有兴趣的朋友们持续关注该公众号。

一、 导读

Modbus 通信是一种应用广泛的通信协议 ,在变频器、智能仪表或是其他的一些智能设备上应用的一种通用通信协议,西门子S7-200SMART系列PLC即可作为Modbus的主站使用,也可作为Modbus从站使用。本文通过S7-200SMART之间的Modbus通信来为大家分享S7-200SMART作为Modbus主站和从站的应用,要求如下:

两个CPU型号分别为ST40和ST20的PLC通过Modbus通信协议完成相应的数据交换,其中ST40作为Modbus主站,ST20作为Modbus从站,数据交换如下说明:1.主站PLC的输入IB0控制从站PLC的输出QB02.从站PLC的输入IB0控制主站PLC的输出QB03.从站PLC的模拟量地址AIW12的数据送入到主站PLC的VW100中进行运算4.主站PLC中的VD200的数据写入从站PLC的MD10中。

二、地址对应关系与所支持的功能码

(1) PLC地址与从站地址的对应关系 MODBUS寄存器地址总是以0XXXX、1XXXX、3XXXX和4XXXX类型出现,因此对于PLC作为MODBUS从站时需要把PLC的地址与MODBUS寄存器地址进行对应。

 

其中T为S7-200SMART CPU中的缓冲区的起始地址即指令上的HoldStart指定地址,如&VB100,则MODBUS地址40001所对应的数据地址为VW100。所以MODBUS地址=40000+((地址-T)/2+1),假设:T为&VB100,则VW110所对应的MODBUS地址=40000+(110-100)/2+1=40006。 (2) S7-200SMART作为MODBUS从站可支持的功能码 当把S7-200SMART系列PLC作为MODBUS从站使用时,可支持的MODBUS功能码如下

 

三、主从站程序的编写

(1) 硬件接口 两个PLC选择本体集成的通信口进行通信连接,连接是可选择DB9针的公接头连接,也可选择西门子的PROFIBUS-DP接头连接,选择DB9针的公接头连接,如下所示。

  

(2) 主站PLC程序 在主站PLC中调用主站的通信指令,完成主站通信程序的设计。

MBUS_CTRL指令是西门子PLC中用于Modbus主站通信控制的核心指令。初始化:使用MBUS_CTRL指令配置Modbus主站的通信参数,包括波特率、校验方式等。

MBUS_MSG 是西门子 S7-200/S7-200 SMART PLC 中用于 Modbus RTU 通信的主站指令,负责向从站发送读写请求并处理响应。

 

  

 

  

 

(3) 从站PLC程序 调用从站初始化指令,设置好通信波特率、从这个站号和奇偶校验位、设置好V存储器的通信区域大小和起始地址等相关参数,此处相关参数设置要和主站中设置的参数一致

MBUS_INIT初始化 

 

调用从站中的响应请求指令编写对主站的相应程序,同时把主站写入到Modbus地址40001和40002的数据转存到MW10和MW12中

 

四、应用经验总结

(1)通信过程中对于线圈地址的读写和对离散输入地址的读过程,个位需要选择8的整数倍。(2)在从站指令中指定对应于4XXXX的地址时,只可指定V存储区地址,无法指定M存储区地址,所以需要读写M地址是需要采用转存到V存储器的方式。(3)若使用作为MODBUS从站的CPU为经济型的CPU,由于经济型的CPU不支持扩展功能,因此不存在模拟量输入通道,在MBUS_INIT指令上的MaxAI需要设为0,否则会出现通信出错。(4)MBUS_INIT指令上MaxHold用于制定建立V存储存区用于通信区的大小,其大小的表现是以字为单位进行计算,若填写的数为10,表示为10个字的通信区域大小。(5)需要注意对于MBUS_INIT指令的使能端EN,只需要接通一个扫描周期即可,因此都采用SM0.1使能,而对于MBUS_SLAVE指令需要保证每个扫描周期都接通才可进行对主站的响应。(6)不管是从站库指令还是主站库指令,编写完成后都需要对库指令分配存储区,详细的分配方法请参考任务二中的介绍。而且需要确保分配的存储区不要在程序中其他地方使用,特别是和建立V存储器通信区域进行重复。(7)很多技术人员不小心犯的一个错误,MBUS_SLAVE指令上的Error报错误代码10,查询错误代码说明是提示从站功能未启用,但检查初始化指令后发现初始化指令上的Mode管脚已经设置为1,出现该问题的主要原因在库存储器分配的地址在其他的地方被使用了,重新分配库存储器地址即可。
Tags:Modbus,200Smart,Modbus通信  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
推荐文章
最新推荐
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询