同样,在SIMATIC 315PN-2 的OB1 中,调用FB8/FB9。通信双方的“R_ID”均设为0。将SIMATIC315PN-1 的MB100-MB109 赋值B#16#02,在SIMATIC 315PN-2中,将FB9的“EN_R”置1,在SIMATIC315PN-1 中,将FB8 中“REQ”设置上升沿信号,此时SIMATIC315PN-2 的MB110-MB119 接收到B#16#02。如图7 所示。
3.2. 确认数据交换
SFB/FB 12 "BSEND" 向类型为“BRCV”的远程伙伴SFB/FB 发送数据。通过这种类型的数据传送,更多的数据可以在通讯伙伴之间传输,超过任何其它用于组态的S7连接的通讯SFB/FB 所能传输的数据量,通过集成PN 口的S7-400 和S7-300是65534字节。
要发送的数据区是分段的。各个分段单独发送给通讯伙伴。通讯伙伴在接收到Zui后一个分段时对此分段进行确认,该过程与相应SFB/FB"BRCV" 的调用无关。在调用块之后,当在控制输入REQ上有上升沿时,发送作业被激活。发送用户存储区中的数据与处理用户程序是异步执行的。
由SD_1 指定起始地址和要发送数据的Zui大长度。可以通过LEN 来确定数据域的作业指定长度。在这种情况下,LEN替换SD_1 的长度区域。参数R_ID 必须在相应的两个SFB/FB上完全相同。如果在控制输入R 处有上升沿,则当前数据传送将被取消。如果传送成功完成,则通过将状态参数DONE的数值设置为1 来进行指示。如果状态参数DONE 或ERROR的数值为1,则在前一个发送处理结束之前,不能处理新的发送作业。
SFB/FB 13 "BRCV" 接收来自类型为“BSEND”的远程伙伴SFB/FB 的数据。在收到每个数据段后,向伙伴SFB/FB发送一个确认帧,更新LEN 参数。在块调用完毕,并且在控制输入EN_R数值为1 之后,块准备接收数据。可以通过EN_R=0 来取消一个已激活的作业。
由RD_1 指定起始地址和接收区的Zui大长度。由LEN 指示已接收数据域的长度。
从用户存储区中接收数据与处理用户程序是异步执行的。参数R_ID 必须在相应的两个SFB/FB上完全相同。通过状态参数NDR 的数值为1 来指示所有数据段的无错接收。接收到的数据保持不变,直到通过EN_R=1来重新调用SFB/FB 13 为止。如果在数据的异步接收期间调用块,则将引发一个警告,该警告通过STATUS参数输出;如果当控制输入EN_R数值为0时进行调用,则接收将被终止,并且SFB/FB 将返回到它的初始状态。
打开SIMATIC 315PN-1 的OB1,在OB1 中依次调用FB12,FB13 如图9、图10 所示:
同样,在SIMATIC 315PN-2 的OB1 中,调用FB12/FB13。通信双方的R_ID设为0,LEN设为10,将SIMATIC315PN-1 的MB120-MB129 赋值B#16#04,在SIMATIC 315PN-2中,将FB13的“EN_R”置1,在SIMATIC 315PN-1 中,将FB12中“REQ”设置上升沿信号,此时SIMATIC315PN-2 的MB130-MB139 接收到B#16#04。如图11 所示。