首页 理论教育 使用SFC14和SFC15实现数据传输一致性

使用SFC14和SFC15实现数据传输一致性

时间:2023-06-28 理论教育 版权反馈
【摘要】:可以用系统功能SFC14“DPRD_DAT”和SFC15“DPWR_DAT”来传送要求具有一致性的数据。这两个SFC在实际程序中被广泛使用。SFC14、SFC15的参数RECORD指定的地址区和长度应与组态的参数一致。DP主站用SFC15发送的输出数据被智能从站用SFC14读出,并作为其输入数据保存。调用SFC14“DPRD_DAT”,将接收到的数据“解包”后存放到DB2中。

使用SFC14和SFC15实现数据传输一致性

1.数据的一致性

数据的一致性(Consistency)又称为连续性。通信被执行、通信数据被传送的过程如果被一个更高优先级的OB块中断,将会使传送的数据不一致(不连续)。即被传输的数据一部分来自中断之前,一部分来自中断之后,因此这些数据是不连续的。

在通信中,有的从站用来实现复杂的控制功能,例如模拟量闭环控制电气传动等。从站与主站之间需要同步传送比字节、字和双字更大的数据区,这样的数据称为一致性数据。需要绝对一致性传送的数据量越大,系统的中断反应时间越长。可以用系统功能SFC14“DPRD_DAT”和SFC15“DPWR_DAT”来传送要求具有一致性的数据。这两个SFC在实际程序中被广泛使用。

2.组态硬件和主从通信的地址

随书光盘中的例程“SFC14_15”的硬件和通信组态与前面的项目“智能从站”基本上相同,其区别在于参数“一致性”被组态为“全部”(见图6-35),因此需要在用户程序中调用SFC15“DPWR_DAT”,将数据“打包”后发送,调用SFC14“DPRD_DAT”,将接收到的数据“解包”。这样DP主站指定的数据区被连续地传送到DP从站。SFC14、SFC15的参数RECORD指定的地址区和长度应与组态的参数一致。

978-7-111-53570-6-Chapter06-53.jpg

图6-35 组态主从通信的地址区

如果从具有模块化设计或具有多个DP标识符的DP非智能从站读取数据,通过组态时指定的起始地址,每次调用SFC14只能访问一个模块或一个DP标识符的数据。

DP主站用SFC15发送的输出数据被智能从站用SFC14读出,并作为其输入数据保存。反之也适用于智能从站发送给主站的数据的处理。用于通信的I/Q区的起始地址LADDR的数据类型为WORD,应使用十六进制数格式。100对应的十六进制数为16#64。

3.OB1的程序

为两台CPU生成数据块DB1和DB2,分别在各数据块中创建一个有10个字元素的数组ARAY。可以用复制和修改名称的方法来创建内部结构相同的数据块。

在双方的主程序OB1中,调用SFC15“DPWR_DAT”,将DB1中的数据“打包”后发送。调用SFC14“DPRD_DAT”,将接收到的数据“解包”后存放到DB2中。(www.xing528.com)

DP主站和智能从站的OB1中的用户程序基本上相同,下面是主站OB1的程序:

程序段1:解开IB100~IB119接收到的数据包,并将数据存放在DB2

978-7-111-53570-6-Chapter06-54.jpg

程序段2:将DB1的数据打包后通过QB100~QB119发送出去

978-7-111-53570-6-Chapter06-55.jpg

参数RECORD的数据类型为ANY,如果指定SFC14的参数RECORD的实参为P#DB2.DBX0.0 BYTE 20,因为DB2中的数组ARAY的大小刚好为20B,输入后会变为DB2.ARAY,也可以直接输入DB2.ARAY。

从站OB1中的程序与主站的基本上相同,图6-36给出了通信双方的信号关系图。

978-7-111-53570-6-Chapter06-56.jpg

图6-36 DP主站与智能从站的数据传输示意图

通信双方OB100的程序分别将DB1中要发送的数据初始化为16#1111和16#2222,将保存接收数据的DB2清零。双方的OB35每100ms将DB1.DBW0的值加1,运行时它被传送给对方的DB2.DBW0。将通信双方的程序块和组态信息下载到硬件CPU,用PROFIBUS电缆连接主站和从站的DP接口,接通主站和从站的电源,将CPU切换到RUN模式。

用变量表监控双方接收到的DB2中的DBW0、DBW2和DBW18,监控时可以看到双方的DB2.DBW0的值在不断增大。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈