sfb8和sfb9
刘玉蓉
发布于2014-11-04 17:56
2
0
标签:
初学400PLC,想请问下SFB8和SFB9中的R-ID是不是只要两个块的数据是一样的就可以了,可以是任何数。比如SFB8是X,而SFB9也是X就可以???2;为什么块中的RD和SD都没有指定数据的长度了,它写成的是这样;P#DB18.DBX36.0那我怎样知道这个传输数据的长度了。??我看别的SFB13就是这样写的P#DB18.DBX36.0 BYTE20.??
佳答案
首先SFB8和SFB9是用于S7-400以太网通信时通过调用系统功能块来实现S7通信,它们是无确认的高速数据传输,不考虑通信接收方通信处理时间,因而有可能会覆盖饥接收方都数据;
SFB8和SFB9的使用要看你在组态时S7-400PLC之间是选择单边通信还是双边通信。在回答你的问题之前,先来了解几个概念:R_ID是连接号,相同连接号的系统功能块SFB互相对应发送/接收数据;SFB8是发送系统功能块,而SFB9是接收系统功能块,它们两个R_ID是没有联系的;如果选择双边通信,一方SFB8(发送方)对应于另一方的SFB9(接收方),此两者的R_ID必须一致,因为相同连接号的系统功能块互相对应发送和接收数据,同理一方SFB9(接收方)对应于另一方的SFB8(发送方),此两者的R_ID必须一致;如果是单边通信,只须在通信的一方编程,R_ID你选择何种连接号是没有关系的。所以R_ID只对双边通信时编程时调用SFB8和SFB9时才有意义。
S7 通信块的通信数据大为64KB,发送块SFB8的SD_1和接收块SFB9的 RD_1必须指定发送/接收数据区,包括数据的字节数,如SD_1: P#DB1.DBX0.0 BYTE 100;另外SFB8中的LEN为实际发送数据的长度;而SFB9中的LEN为实际接收到的数据长度。