需要在连接表中建立通信连接,并在程序中调用SFB,这种通信方式适合于S7-300系列PLC与S7-400系列PLC和S7-400系列PLC之间的通信,S7-300系列PLC与400系列PLC通信时,只能进行单边通信,S7-300系列PLC作为一个数据的服务器(不能调用通信函数块),S7-400系列PLC作为客户机调用通信函数块(SFB14、SFB15)对S7-300系列PLC的数据进行读写操作。S7-400系列PLC之间通信时,S7-400系列PLC既可以作为数据的服务器,同时又可以作为客户机进行单边通信,双边通信方式时,通过调用SFB12、SFB13进行数据的发送和接收,最大通信数据量为160B,通信带有确认。需要配置连接的通信方式占用CPUS7通信资源,CPU支持S7通信资源的数量与CPU型号有关,可以参考CPU订货手册。
需要配置连接的通信有两种通信方式:双边通信方式和单边通信方式。
(1)双边通信方式
适合S7-400系列PLC之间的通信,通信连接需要在连接表中建立。实现的通信步骤如下:
1)在“SIMATIC Manager”界面中,使用菜单命令“Options”➝“Configuring Network”进入网络配置界面“NETPRO”。
2)点击S7-400系列PLCCPU后,在下方出现连接表,双击连接表中任意一空白行弹出对话框,选择需要连接的对象(与之通信的PLC站),在“Type”中选择“S7 Connec-tion”,点击“Apply”键进行确认,进入连接属性界面,如图10-5所示。在连接属性中列出连接ID(编程时需要使用)、使用的网络、通信双方地址、使用的接口等参数,如果是S7-400系列PLC与S7-300系列PLC间的单边通信,“One-way”选项自动被选择。
3)在被连接CPU的连接表中自动生成一个连接,该连接同样表示本地CPU连接的信息。双击打开连接,记录本方的连接ID,用于编程时使用。
图10-5 S7连接属性
4)通信连接建立后,需要调用通信函数发送和接收数据。在本地OB35(间隔发送)中调用SFB12"BSEND"发送数据,示例程序如下:
通信函数块SFB12的参数含义:
REQ:沿触发,每个上升沿触发一次数据的发送。
R:为1时,停止通信任务。
ID:通信连接ID,指定一个通信连接,包括通信双方的通信参数(参考连接表)。
R_ID:标识符,发送与接收函数必须一致。
DONE:每次发送成功,产生一个上升沿。
ERROR:错误位。
STATUS:通信状态字,如果错误位为1,可以查看通信状态信息。
SD_1:发送区。
LEN:发送数据(字节)的长度。
示例程序中S7-400系列PLC发送DB1中前60B。
5)在通信方PLCOB1中相应调用SFB13"BRCV"接收数据,示例程序如下:
通信函数块SFB13的参数含义:
EN_R:为1时,激活接收功能。
ID:通信连接ID,指定一个通信连接,包括通信双方的通信参数(参考连接表)。
R_ID:标识符,发送与接收函数块标识必须一致。(www.xing528.com)
NDR:每次接收到新数据,产生一个上升沿。
ERROR:错误位。
STATUS:通信状态字。
RD_1:接收区。
LEN:接收数据(字节)的长度。
示例程序中S7-400系列PLC将接收到的数据存储于本地数据区DB2的前60B中。
(2)单边通信方式
适合S7-300系列PLC与S7-400系列PLC、S7-400系列PLC之间的通信,以S7-400系列PLC与S7-300系列PLC通信为例,在S7-400系列PLC侧调用SFB14"GET"和SFB15"PUT",对S7-300系列PLC数据进行读写。通信的步骤如下:
1)与上例相同,在“NETPRO”中将需要通信的双方建立连接表(只能在S7-400系列PLC侧建立)。
2)在S7-400系列PLCCPU编写SFB14“GET”,示例程序如下:
通信函数SFB14的参数含义:
REQ:读请求。每个上升沿触发读任务。
ID:通信连接ID,指定一个通信连接,包括通信双方的通信参数。
NDR:每次接收到新数据,产生一个上升沿。
ERROR:错误位。
STATUS:通信状态字。
ADDR1_4:通信方的数据区。
RD1_4:本地数据接收区。
示例程序中将通信方数据区MB200~MB299复制到本地数据DB2的前100B中。
3)SFB15"PUT"写操作的示例程序如下:
通信函数SFB15与SFB14不同参数的含义:
DONE:每次发送成功后,产生一个上升沿。
SD1_4:本地数据发送区。
示例程序中将本地数据区DB1前10字节存储的数据写到通信方数据区DB10的前10B中。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。