目前西门子300/400系列的PLC的通讯方式开始大量使用工业以太网通讯,MP277/377、xP177B系列触摸屏也集成了以太网接口,这带来一个好处,所有的接口都统一,在网络通讯时采用都以太网接口,所有的设备组成一个局域网,包括上位监控计算机、编程设备、PLC、触摸屏都能很方便地互相访问,需要扩展多一个设备也很方便,只需要加一个交换机就能扩展出多个接口。因为有这些好处,所以采用以太网通讯越来越流行,下面说一说以太网通讯的其中一个应用,PLC与PLC之间通过以太网互连。
一、S7-300/400之间互连
1、采用PLC与PLC通过以太网访问,需要增加以太网模块,如CP343-1,CP443-1的模块,或者采用带有PN接口的PLC,如CPU315-2DP/PN的PLC。
2、采用两块CP343-1互连,先在同一个项目里做好两套PLC的硬件组态,分配好IP地址,打开NetPro,选择其中一个PLC,双击连接列表上的空白行,添加一个
S7 conection。选择连接的另一个PLC,记住连接的ID号。通讯双方的其中一个站为Client端,激活“Establish an active connection”的选项(默认是激活的)。这样NetPro的配置就完成了,编译、下载完成
3、打开其中两套PLC的OB1,调用FB12(BSEND)块发送数据,FB13(BRCV)块接收数据,1#PLC的发送对应2#PLC的接收,1#PLC的接收对应2#PLC的发送。
4、调用FB12的时候几个参数的含意,a、REQ,发送开始,上升沿触发发送工作;b、ID,连接ID号,这个ID号是在NetPro组态时生成的ID号;c、R_ID,连接号,相同连接号的FB块互相对应发送接收数据,这个是由用户编程时定义的,例如1#PLC的FB12的R_ID是DW#16#2,则2#PLC的FB13的R_ID也是DW#16#2,这样才能保证正常接收发送;d、DONE,发送完成,如果REQ端是一个不停的脉冲,正常情况下DONE端也应该也是一个不停的脉冲反馈;e、SD_1,发送的开始地址,以P# x.x byte xxx来表示,f、LEN,发送数据的长度。
5、采用FB12、FB13来进行发送/接收是比较麻烦的,一方面需要两端的以太网模块都支持双边发送,如Cp343-1-Lean就不支持了,另一方面,两边都要写程序,对于增加的系统不太方便,所以这时可以在NetPro里把One-way(单边通讯,激活后FB12、FB13不能使用)激活,采用FB14(GET)取数据、FB15(PUT)发送数据来做,FB14的参数定义和FB12差不多,只是少了R_ID和LEN,这样更方便一些,而且还有一个好处,不需要对原有的系统进行什么更改,只需要把单边的PLC组态和程序下载就可以了
6、需要注意的另一个问题是FB和SFB的区别,在400上采用SFB,在S7-300上采用FB,在S7-300集成的PN口上,采用SFB,这个问题曾经折磨过我一两天才解决。
二、WinLC与PLC互连
WinLC是在PC机上的软件PLC,可以把一台PC机当成PLC使用。这样对于不能采用模拟器连接的软件是比较方便的,如采用Intouch、Ifix这些SCADA软件做为上位机软件时,测试是个麻烦的问题,需要与实际机器连接起来才能测试,但如果有WinLC,可以把程序拷到WinLC上运行,上位机软件与WinLC联机测试,省去不少工夫,所以WinLC对于不方便进行现场测试的环境,是个不错的替代方案。WinLC既然是一套软件PLC,就能够实现PLC的功能,那么与PLC通讯也是可以实现的,
下面说一说WinLC与S7-300互连
1、新建一个项目,建立一个S7-300的站点,硬件组态;建立一个PC站点,在PC站点上增加一个WinLC和一个IE General,IE General的IP地址与PC机的IP地址一致,其实IE General指的就是PC机的以太网卡。
2、打开NetPro,在WinLC上新建一个S7 conection,指向S7-300,编译、存盘
3、在PCStation上增加WinLC和IE General,需要注意槽号要与硬件配置时候一样
3、打开WinLC的OB块,调用SFB14、SFB15来读写S7-300的数据
4、启动WinLC软件,下载程序,这样就可以实现软件PLC与PLC互连了
三、两种方式的结合
如果有多台PLC需要与PC机上的SCADA软件通过OPC进行通讯,但是又发现SCADA软件读取的速度太慢,不能满足刷新要求,或者数据要做些预处理才能显示,SCADA软件上运行太多的脚本又影响速度,那么通过软PLC把多台PLC的数据先读过来进行预处理,SCADA软件只与一台PLC进行通讯,这样SCADA软件上的工作量会少一些。这个时候把上面说的两种方式结合一下,就能够实现这样的功能了。
1、通讯连接参照上面的方法设置
2、在WinLC的PC站点上添加一个OPC服务器,在NetPro里面打开OPC的连接列表,添加一个S7 conection,指向WinLC,编译、下载
3、通过OPC客户端可以直接访问OPC服务器的内容,常用的SCADA软件如Intouch、Citect、IFix这些软件都支持OPC,设置访问连接就可以在软件上直接读写了,如果更简单的界面,可以自己用VB编写一个OPC客户端,读写数据都在VB程序上实现,不使用SCADA软件,可以省掉不少钱了。