s7-1200使用“Modbus_Master”指令的一些笔记

已锁定

小尹先生

  • 帖子

    23
  • 精华

    1
  • 被关注

    4

论坛等级:游侠

注册时间:2012-04-07

普通 普通 如何晋级?

s7-1200使用“Modbus_Master”指令的一些笔记

6500

3

2021-05-28 11:49:09

这次调试的是S7-1200PLC和施耐德ATV310系列变频器的通讯,走的是Modbus—RTU通讯。然后顺带总结了一下使用modbus指令的一些笔记。

先说一下一共用了哪几条指令


其实一共就用了”Modbus_Comm“组态指令和“Modbus_Master”主站指令。但是里面的注意事项还是不少的。


先说一下“Modbus_Comm”指令。

1.使用”Modbus_Comm“组态指令,这个指令的作用是保证程序和硬件组态一致。这个是必须要有的,不管是做主站还是做从站。在指令里面设置好对应的引脚参数。


这个指令的其他输入管脚就是波特率,数据位这些通讯格式,最后一个管脚MB_DB需要注意,这个是和你后面用的是“主站”还是“从站”的指令有关。手册上的解释是“对 Modbus_Master 或 Modbus_Slave 指令的背景数据块的引用”


举个例子就是,先建立一个“Modbus_Master”指令,然后程序会自动建立一个DB程序块,这里建立的是DB11,这个DB11就是这个“Modbus_Master”指令的专用背景数据块。接着就在DB11里面找到MB_DB的选项,填入”Modbus_Comm“指令的MB_DB引脚处。

2.设置”Modbus_Comm“指令的MODE参数,这个参数也比较重要,和前面的2线制,4线制的硬件接线相互匹配。这个参数需要在”Modbus_Comm“的专用背景DB里面寻找,这里是DB31。为什么要修改?手册上是这么解释的。



接下来说下“Modbus_Master”指令

这个指令的引脚大部分也能看的懂。就是"MODE"引脚需要注意一下,这里的解释是“模式选择”,并不是直接填写功能码。


举个例子:

你需要用到读取字的功能码03,这里的MODE是不能填写3的,为什么?因为模式没有规定数字3是个啥。这里需要填写的是0,然后你会发现,0包括了01,02,03,04这些Modbus的功能码。那么怎么区分我读的是位元件还是字元件?靠运气吗?当然是靠地址啦!

注意看,功能码01的地址是1~9999,  功能码02的地址是10001~19999,功能码03的地址是40001~49999,  功能码04的地址是30001~39999。

同理可证,你要写入字就需要在MODE填写1,因为1包括05,06,15,16这些Modbus的功能码,还是通过地址来区分你写入的是位件还是字元件。

一般用到的也就是写入字或读取字,所以用到MODE里的0或1就差不多了,具体更复杂的功能还是看手册吧。



关于modbus的字地址,有的时候会错位。所以需要注意,比如说,变频器的频率写入字是100,然后我们这里用的是06功能码,如果直接写入100这个字的地址是会爆炸的!为什么?因为1-9999是位元件的地址,你的字元件是从40001开始的。

然后你就写入40100这个地址,发现还是不对?在你一懵逼以后,你会发现字地址是40001开始,那么字100的地址就应该是40001+100=40101这个地址。



3.因为这里用的是主站指令,所以需要做轮询,一个变频器既要发送,又要读取,在同一个时刻是做不到的,因此要排个先后顺序。这方面的资料有专门的官方资料。


整理这些的目的是为了防止以后用同样的指令却忘了哪些注意事项。同时也供那些使用modbus指令有疑惑的小伙伴一些参考,可能没办法解决所有的问题。但总归聊胜于无嘛!以上均为原创,感谢收看!

s7-1200使用“Modbus_Master”指令的一些笔记 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有13143条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。