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 通信错误代码说明