系列视频:S7-200跟我学/跟我做

S7-200CN: PPI 网络架构-跟我学 - 157/185 https://www.ad.siemens.com.cn/service/elearning/cn/CourseV2.aspx?CourseID=406

网络读写(NetR/NetW)- PPI通信

PPI协议是专门为S7-200开发的通信协议。S7-200 CPU的通信口(Port0、Port1)支持PPI通信协议,S7-200的一些通信模块也支持PPI协议。Micro/WIN与CPU进行编程通信也通过PPI协议。

S7-200 CPU的PPI网络通信是建立在RS-485网络的硬件基础上,因此其连接属性和需要的网络硬件设备是与其他RS-485网络一致的。

S7-200 CPU之间的PPI网络通信只需要两条简单的指令,它们是网络读(NetR)和网络写(NetW)指令。

在网络读写通信中,只有主站需要调用NetR/NetW指令,从站只需编程处理数据缓冲区(取用或准备数据)。

PPI网络上的所有站点都应当有各自不同的网络地址。否则通信不会正常进行。

可以用两种方法编程实现PPI网络读写通信:

 

NetR/NetW指令要点

有关网络读写(NetR/NetW)指令的详细情况必须参考《S7-200系统手册》。

每条网络读写指令最多能够读或者写16个字节的数据;每个CPU内最多只能有8条网络读写指令同时激活,而网络读写指令的数目没有限制。

只有通信主站能够使用网络读写指令。缺省情况下,S7-200 CPU的通信口设置为从站模式。因此在编程时,需要把通信口设置为通信主站模式。

在一个PPI网络中,与一个从站通信的主站的个数并没有限制,但是一个网络中主站的个数不能超过32个。主站既可以读写从站的数据,也可以读写主站的数据。也就是说,S7-200作为PPI主站时,仍然可以作为从站响应其他主站的数据请求。

一个主站CPU可以读写网络中任何其他CPU的数据。

由于串行通信的特点,通信数据的接收(或者发送)是不能与PLC程序的扫描周期配合的。所有的通信活动都需要PLC操作系统的管理,网络读写(包括其他类似的通信指令)指令只是告诉操作系统有需要处理的通信任务。因此,网络读写指令采取通信数据缓冲区的方式,在操作系统的通信管理功能与PLC的用户程序之间交换信息。

网络读写指令(NetR/NetW)的数据缓冲区类似。数据缓冲区除了状态字节和地址、数据长度之外,剩余的部分就是纯数据字节。能够传送到通信对象,或者从对象接收的仅仅是数据字节,不包括数据个数等信息。远程站(通信对象)的数据缓冲区则是纯数据区域。

网络读写指令可以传递V存储区、M存储区、I/Q区的数据。这取决于设定数据地址时,使用间接寻址方式将地址信息写入到缓冲区中的相应位置,地址信息中包括了存储区和数据的类型。

网络读写编程大致有如下几个步骤:

  1. 规划本地和远程通信站的数据缓冲区
  2. 写控制字SMB30(或SMB130)将通信口设置为PPI主站
  3. 装入远程站(通信对象)地址
  4. 装入远程站相应的数据缓冲区(无论是要读入的或者是写出的)地址
  5. 装入数据字节数
  6. 执行网络读写(NetR/NetW)指令

各CPU的通信口地址在各自项目的System Block(系统块)中设置,下载之后起作用。

 

调用NetR/NetW指令

多数网络读写的不正常现象,除了硬件设备和软件设置的问题外,与在用户程序中调用网络读写指令的方式有关。包括看起来通信正常,但经过一段时间(可能是几天)后也会出现故障的现象。

使用用NetR/NetW时,应当注意:

最简单可靠的方法,是使用Micro/WIN中的NetR/NetW Wizard(网络读写指令向导)。

使用NetR/NetW向导可以编辑最多24条网络读写指令,其核心是使用顺序控制指令,这样在任一时刻只有一条NetR/NetW指令有效。如果要求超出24条网络读写指令,可以自己按照此方法编程。

清除网络读写指令数据缓冲区中的(故障)状态字节可以恢复“死掉”的通信。但还是建议用户采用比较正规的编程方法。