PPI协议是专门为S7-200开发的通信协议。S7-200 CPU的通信口(Port 0、Port 1)均支持PPI通信协议。S7-200 CPU的PPI网络通信是建立在RS-485网络的硬件基础上,因此其连接属性和需要的网络硬件设备与其他RS-485网络一致。
1 网络读写(NETR/NETW)指令介绍
网络读写指令一般用于S7-200 CPU之间的PPI网络通信。PPI通信前要保证PPI网络上的所有站点都应当有各自不同的网络地址,否则通信不会正常进行。另外,网络读写指令进行编程和应用时要注意以下几点:
1) 在程序中可以使用任意条网络读写指令,但是在同一时刻,最多只能有8条网络读写指令被激活;
2) 每条网络读写指令可以从远程站点读取/写入最多16个字节的信息;
3) 使用NETR/NETW指令向导可以编辑最多24条网络读写指令,其核心是使用顺序控制指令,这样在任一时刻只有一条NETR/NETW指令有效;
4) 每个CPU的端口只能配置一个网络读写指令向导。
2 网络读写指令向导组态
2.1 硬件连接
下面通过一个实例(两台S7-200 plc之间的通信)来介绍如何使用网络读写指令向导。首先,两个S7-200之间的硬件连接需要一根标准DP电缆加两个DP总线插头。两台S7-200的RS485通信端口连接方式,可参考以下图片中的连接方式(如果PLC有两个通信端口,则任意端口都可进行配置,本例中两个PLC均以Port 0口做PPI通信使用),如图1所示。
图1 两台PLC的网络连接
2.2 NETR/NETW向导组态过程
2.2.1设定通信站地址
首先,用PC/PPI编程电缆将两台PLC的网络站地址分别设置为2和3,波特率都为9.6Kbps。这时,将编程电缆连接到任一个CPU带可编程插口的DP插头上,查找两台PLC的站地址,如图2所示。
图2 设定两台CPU的网络地址
在本例中,选定通信地址为3的PLC为网络主站,并对其进行向导配置。选定要做为通信主站的CPU地址,点击确认后即可进入该CPU的编程界面。另外,网络读写指令向导会自动将CPU设置成主站模式,不必另行编程设置,只需为主站编写通信程序,从站直接使用通信缓冲区中的数据,或将数据整理到通信区即可。
2.2.2 向导配置步骤
进入到编程画面后,点击工具菜单栏,找到指令向导选项,准备进入网络读/写功能的向导配置模式,如图3所示。
图3 进入指令向导编程界面
打开指令向导界面,选择NETR/NETW指令功能,如图4所示。
图4 NETR/NETW指令向导界面
选择网络读写指令后,点击下一步,可以定义通信所需网络操作的数目,如图5所示。向导中最多可以使用24个网络读写操作,对于更多的操作,可用网络读写指令编程实现,本例子中将建立两个网络操作。
图5 网络读写操作数目的确定
接下来,选择要进行通讯主站的PLC端口序号,这里选择PORT 0口作为通讯主站端口,并为即将生成的向导配置子程序命名(可使用默认名,也可自命名)。对于有两个通信端口的CPU既可以选择Port 0也可以选择Port 1,所有网络操作将由定义的通信口完成,如图6所示。
图 6 定义网络端口序号并命名子程序名称
点击下一步,进入到数据交换区域的设定界面,如图7所示。
图7 网络读数据交换组态界面
其中:
1. 代表定义该网络操作是一个网络读(NETR)还是一个网络写(NETW)操作;
2. 代表定义应该从远程PLC读取多少个数据字节(NETR)或者应该写到远程PLC多少个数据字节(NETW),每条网络读写指令最多可以发送或接收16个字节的数据;
3. 代表定义想要通信的远程PLC地址;
4. 代表定义的是网络读(NETR)或网络写(NETW)操作时,定义读取或写入的数据应该存在本地PLC的哪个地址区,并且将被写入和被读取的数据定义在远程PLC中的哪个地址区,有效的操作数为VB、IB、QB、MB、LB;
因为之前已定义了两项网络读/写操作,所以在“下一项操作”中可以配置另外一条网络读/写操作指令,配置内容与上述界面类似,就不再重复介绍。在第一个操作中定义为网络读操作,地址分配如图7所示;下一项操作中将定义为网络写(NETW)操作,具体的地址分配如图8中所示的内容。
图8 网络写操作的配置画面
最后需要分配V存储区的建议地址,建议将V存储区起始地址设置的大一些(如图9所示),原则是避免和程序中已经应用到的V存储区地址有重叠。
图9 建议地址区分配
完成了上述步骤,即完成了向导的配置过程。在向导配置完成后,会自动生成网络读写指令的子程序及符号表。
2.3 NETR/NETW程序块编程
完成向导配置后,进入程序块编程。编程的内容就是对向导生成的子程序进行调用,最后将程序下载到相应的PLC中,使之生效,如图10所示。
图10 调用向导生成的子程序模块
其中:
1) 必须用SM0.0来使能NETR/NETW,以保证该指令的正常运行;
2) Timeout:超时参数。0=不延时;1-32767=表示以秒为单位的超时延时时间。如果通信有问题的时间超出此延时时间,则报错误;
3) Cycle:周期参数。此参数在每次所有网络读写操作完成时切换其开关量状态;
4) Error:错误参数。0=无错误,1=有错误。
2.4 通信数据交换
首先,打开主站CPU222的状态表,输入数据的交换地址区,并在执行NETW指令的VB200~VB201区域赋值,然后在通信的界面中选择从站CPU 224XP,并打开它的状态表进行监控,查看它的VB200和VB201是否有值写入,同时在VB100和VB101中写入新数值,然后打开主站CPU222的状态表监控相应的地址区是否接收到数值,由此完成如图11所示的读/写数据交换过程。
图11 主/从站通信数据交换
3 通信错误代码
如果数据区没有接收到数据,那么代表通信不成功,需要查看通信的状态字节来获取错误代码。每项读/写操作的状态字节可以参考指令向导配置成功后在符号表中生成的NET_SYMS标签栏,如图12所示。状态字节对应的V区地址如图13所示(由于分配的V存储区起始地址不同,那么得到的状态字节地址也会不同),例如:第一项NETR操作对应的状态字节地址为VB503。
图12 符号表中生成的NET_SYMS
图13 通信读/写指令状态字节
状态字节中每一位代表的具体含义如图14中红框中标注的内容。
图14 状态字节位含义
由上图可以看出错误代码只占据状态字节的低4位,将其转换为十进制数值即代表了错误代码,错误代码的具体说明如图15所示。
图15 通信错误代码说明