S7-200PLC进行modbusRTU通讯实例 点击:832 | 回复:0



大连德嘉f

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:41帖 | 5回
  • 年度积分:0
  • 历史总积分:114
  • 注册:2016年7月06日
发表于:2017-09-29 09:43:52
楼主

本例使用的是大连德嘉的M02型PLC,它完全兼容西门子S7-200PLC,带有以太网口,可直接通过网口编程,连接上位机触摸屏等。


首先,S7-200想要进行modbus通讯必须安装modbus指令库,指令库大家可以网上下载一个,这里就不提供了。

接线:本例是在两个S7-200 CPU的PORT 0口进行的modbus通讯,两个CPU的PORT 0口通过PPI电缆进行连接(电缆的针脚连接为3,5,8)。

这个例子能实现的功能是读取从站40001地址开始的10个字,存到主站VB400开始的10个字。

主站程序如下:




我们要注意的是需要分配库存储区地址,如下图:

这段寄存器地址不能再被程序中的任何指令使用,包括MBUS_INIT 和 MBUS_SLAVE 指令在内。

从站程序如下:

同样,从站也需要分配库存储区。


之后把程序编译下载运行,这里我们给从站VB1000开始的20个字节赋值如下:

然后可以观察到主站VB400开始的20个字节如下:

这就是一个简单的200之间的modbus通讯。下面我们在两台PLC中间加一个USB转485串口监视器,然后我们用串口调试助手可以看到例子执行时的请求码和响应码。

图中第一行为请求码,下面讲一下这个码是怎么来的。

我们例子中使用的是03功能码(读保持寄存器):

首先是请求:03 03 00 00 00 0A C4 2F

03为串口号,接的是COM 3 

03为功能码

00 00为起始地址即40001 

00 0A为寄存器数量,读10个字

C4 2F 为CRC校验码

响应:03 03 14 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0F 10 11 12 13 14 CE 6E

03为串口号

03为功能码

14为字节数,一共20个字节




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师