一台S7-200如何通过modbus和两台上位机通讯? 点击:471 | 回复:0



大连德嘉工控

    
  • [版主]
  • 精华:7帖
  • 求助:2帖
  • 帖子:1050帖 | 1333回
  • 年度积分:376
  • 历史总积分:8436
  • 注册:2009年2月24日
发表于:2017-11-21 17:18:41
楼主

"目前有一个项目,需要将一个s7-200作为从站,把数据通过modbus协议送给两个上位机。  如何解决?急求,谢谢~"

 

针对客户的以上需求,可以选用大连的的M02型PLC。该PLC通过其自带的Modbus_TCP协议可以连接12台上位机。

 

C# Modbus TCP  通讯实例:
这里简单的理解一下Modbus TCP/IP 协议的内容,就是去掉了modbus 协议本身的CRC 校验,增加了MBAP 报文头。
这里只是简单的理解,深入之后可能会有更多的东西需要学习,但为了可以快速入门,我们先按照这个思路往下走。
我们首先来看一下,MBAP 报文头都包括了哪些信息和内容

下面我们再来介绍一下针对我们 PLC 的功能码
1、0x01 功能码: 按位读取 Q 区(线圈 )例:我们来读取从 Q0.0 到 Q0.5 这 6 个线圈

发送码分析:

根据上面的分析,我们需要发送 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x01, 0x00, 0x00,0x00, 0x06

接收码分析:

我们收到的数据为 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x01,0x01,0x01,0x2A
modbus 数据中从左数,0x01 表示功能码,0x01 表示 1 个字节数据,0x2A 表示数据值把 0x2A 转换为 2 进制为 0010 1010 , 从左数起,前 2 位是补充数据 00,剩下的 101010 表示我们读取的 Q0.5 到 Q0.0 的状态。
Q0.5------ ON,
Q0.4 ------ OFF,
Q0.3-------ON,
Q0.2--------OFF,
Q0.1-------ON,
Q0.0----------OFF。
注意数据的顺序,左侧是高位,右侧是低位。
注意:上述发送及接收数据中,红色数码是 MBAP 报文头,黑色码是 modbus 数据,下同。

2、0x02 功能码:按位读取 I 区 (离散输入)
例:我们来读取从 I0.0 到 I0.5 这 6 个离散输入点
发送码分析:

 

根据上面的分析,我们需要发送 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x02, 0x00, 0x00,0x00, 0x06
接收码分析:

我们收到的数据为 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x01,0x02,0x01,0x00
modbus 数据中从左数,0x02 表示功能码,0x01 表示 1 个字节数据,0x00 表示数据值
把 0x0 转换为 2 进制为 0000 0000 ,从左数起,前2 位是补充数据 00,剩下的000000 表示我们读取的 I0.5 到 I0.0 的状态。
3、0x03 功能码:按双字节(VW)读取 V 区或者读 MW
Modbus 寄存器 0-------19999 是读取 VW
Modbus 寄存器 20000------20031 是读取 MW
例:我们来读取从 VW0 到 VW2 这个数据
发送码分析:

...........

更多具体设置详见www.dl-winbest.com

 QQ:1242136482(注明中国工控网)

1分不嫌少!


热门招聘
相关主题

官方公众号

智造工程师