
了解西门子plc的朋友们都知道,西门子有几个自己的协议,什么PPI协议、MPI协议、S7协议。PPI协议是s7-200特有的,早就已经停产了,在这里就不多说了。重点来说说MPI协议和S7协议。虽然经常提到它们,但是我老是搞不清它们的具体应用是什么,比如我们在应用的时候用MPI协议做了哪些功能,用S7协议做了哪些功能,和触摸屏相连的时候用的是什么协议,两个plc做数据读写时用的协议不一样时所用编程指令又分别是什么,等等。
今天我们就来好好的理一理,让思绪更清晰一些。虽然我们在应用中只需要把功能实现了,也不是必须要清楚这些东西,但是知道这些会让我们更清楚的知道我们在干什么。
首先我们理一下MPI协议和S7协议的概念。
MPI协议:MPI协议都是西门子内部协议,MPI是基于OSI(开放系统互联)的七层网络结构模型,符合欧洲标准EN50170所定义的PROFIBUS标准,基于令牌的的网络通信协议。MPI(multipoint)多点MPI通信MPI(Multipointinterface)是SIMATICS7多点通信的接口,是一种适用于少数站点间通信的网络,多用于连接上位机和少量PLC之间近距离通信。
S7协议:所有SIMATICS7和C7控制器都集成了用户程序可以读写数据的S7通信服务。S7-400控制器使用SFB,S7-300和C7控制器使用FB。不管使用那种总线系统都可以应用这些功能块。即以太网,PROFIBUS和MPI网络中都可使用S7通信。
官方的话总是那么绕,我再用我的大白话来解释一下。
MPI协议是西门子内部的协议,是一个支持多点通信的协议,一般用于连接上位机和少量plc近距离通信。
S7协议是一个经过包装的协议,只要你在用西门子提供的特定FB或者SFB(编程软件中有写明S7通信)你就是在用S7协议了。它更像是一个功能,以太网,PROFIBUS和MPI网络中你都可以使用这个功能。
本人曾经一段时间一直认为S7协议包含了MPI协议,很显然这种理解是错误的。
好了,我们继续来说说它们各自的应用。
先来说MPI协议。从上面的定义我们已经可以看出它的应用,一个是和上位机连接,上位机软件中选驱动的时候我们就需要选择MPI协议的驱动,如下图。

另一个应用就是plc之间的通讯了。我们知道s7-200和S7-200smart支持的是MPI从站,S7-1200是不支持MPI协议的,S7-1500是不支持MPI协议的,S7-300,400是支持MPI协议的,其实从产品的更替可以看出MPI协议正在被淘汰,profinet越来越成为主流。
那么200或者200smart和S7-300怎么通过MPI协议通讯呢?因为S7-200或者200smart只能支持MPI从站,所以它不要任何编程,只需设置一下站号地址和波特率。

而在S7-300中用SFC67和SFC68,就能读取和设置200中的值了。
那么300之间通过MPI协议是如何通讯的呢?300之间的MPI协议可以实现全局数据通讯功能。

也不需要怎么编程,主要还是在软件中设置通讯的内容。这里就不展开详细说明了,有兴趣的可以自行百度。
那么如果使用S7协议的话,300和200smart之间又该怎么通讯呢?当然是用get,put指令来实现了。我们知道这两款plc都是支持S7协议的。

300中的说明文档

200smar中的说明文档
那么300与300之间当然可以用get,put等S7通信功能块来实现数据的交换了。

好了,今天就到这吧。有说的不对的地方,请大家指正,谢谢。