对于MPI网络,调用系统功能块进行PLC站之间的通信只适合于S7-300/400,S7-400/400之间的通信,S7-300/400通信时,由于S7-300CPU中不能调用SFB12(BSEND),SFB13 (BRCV),SFB14(GET),SFB15(PUT),不能主动发送和接收数据,只能进行单向通信,所以S7-300 PLC只能作为一个数据的服务器,S7-400 PLC可以作为客户机对S7-300PLC的数据进行读写操作。S7-400/400通信时,S7-400 PLC可以调用SFB14,SFB15,既可以作为数据的服务器同时有可以作为客户机进行单向通信,又可以调用SFB12,SFB13,发送和接收数据进行双向通信,在MPI网络上调用系统功能块通信,最大一包数据不能超过160个字节。
在这里将介绍S7-300/400之间的单向通信,先建立两个站STATION1 S7-400 CPU416 ,站号为2,STATION2 S7-300 CPU315-2DP,站号为4,假设S7-400PLC把本地数据 DB1中字节0以后20个字节写到S7-300PLC DB1中字节0以后20个字节,然后在读出S7-300PLC DB1中字节0以后的20个字节,放到S7-400PLC本地数据 DB2中字节0以后20个字节。
在STEP7中点击“Options” -> “Configure Network”进入网络组态画面,如图1所示:
图1 进入网络配置界面
点击STATION1 CPU,出现连接表,双击连接表选择连接类型“S7 connection”,并选择所需要连接的CPU,在本例中选择CPU315,如图2所示:
图2 选择通信对象
点击“Apply”后连接表建立完成,并可以查看连接表的详细属性,如图3所示:
图3 通信连接信息
完成以后编译存盘下载连接表信息。
在PLC中调用通信所需的系统功能块,由于是单向通信,S7-300PLC是数据的服务器,所以只能在S7-400PLC侧编程,调用SFB15写数据到S7-300PLC中如图4所示:
图4 连接与通信程序的对应关系
REQ:上升沿触发,每一个沿触发一次。
调用SFB14读出S7-300PLC的数据 如图5:
图5 调用读数据程序
程序编写完成后下载到CPU中,通信就可以建立了。