首页 理论教育 SFC14和SFC15传输一致性数据的方法

SFC14和SFC15传输一致性数据的方法

时间:2023-11-16 理论教育 版权反馈
【摘要】:可以用系统功能SFC14“DPRD_DAT”和SFC 15“DPWR_DAT”来访问要求具有一致性的数据。SFC 14、15的参数RECORD指定的地址区和长度应与组态的参数一致。DP主站用SFC 15发送的输出数据被智能从站用SFC 14读出,并作为其输入数据保存。图3-27 调用SFC14的梯形图选中梯形图或语句表中的某条指令或某个FC、FB、SFC、SFB,按〈F1〉键可以获得选中对象的在线帮助。

SFC14和SFC15传输一致性数据的方法

1.数据的一致性

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

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

2.组态硬件和主从通信

在STEP 7中生成一个项目(见随书光盘中的例程PB_MS_3),CPU 413-2DP是S7 DP主站,CPU 313C-2DP是智能DP从站。主站和从站的组态与前面的项目PB_MS_2基本上相同,数据长度为20B。其区别在于参数“一致性”被组态为“全部”(见图3-25),因此需要在用户程序中调用SFC 15“DPWR_DAT”,将数据“打包”后发送,调用SFC 14“DPRD_DAT”,将接收到的数据“解包”。SFC 15用于将RECORD指定的数据连续地传送到DP从站。SFC 14、15的参数RECORD指定的地址区和长度应与组态的参数一致。

978-7-111-28256-3-Chapter03-44.jpg

图3-25 主从通信组态表

可以传送的数据长度与CPU的型号有关。对于S7-400 CPU,最大长度是32B。

S7-300 CPU和ET 200的接口模块可以传送的最大数据长度可以查阅有关的硬件与安装手册。

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

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

3.生成数据块

选中SIMATIC管理器左边窗口中CPU 413-2DP的“块”文件夹,用鼠标右键点击右边的窗口,执行出现的快捷菜单中的命令,插入数据块DB1。

数据块的大小取决于数据块中定义的变量的类型和个数。数组是同一数据类型的变量的集合,用数组可以方便地定义数据块的大小。打开数据块,可以看到只有一个临时生成的INT型的占位符变量,用下面的方法将它修改为数组。设置数组的名称(也可以使用默认的名称),用鼠标右键点击“类型”单元,选中出现的菜单的“复杂类型”中的“ARRAY”(数组),在出现的ARRAY后面的方括号中输入“1..20”(见图3-26),该数组有20个元素,数组元素的序号为1~20。数组元素序号的起始值可以是0或别的整数。删除原有的初始值,在注释列按回车键后,ARRAY的下面出现一个空白单元,输入数组元素的数据类型BYTE(字节),保存数据块后关闭它。用同样的方法生成数据块DB2,在数据块中创建一个名为ARAY,有10个字元素的数组。也可以用复制和修改名称的方法来创建内部结构相同的数据块。

978-7-111-28256-3-Chapter03-45.jpg

图3-26 在数据块中生成数组

4.OB1的程序

在双方的主程序OB1中,调用SFC 15“DPWR_DAT”,将DB1中的数据“打包”后发送,调用SFC 14“DPRD_DAT”,将接收到的数据“解包”后存放到DB 2中。

输入程序时,将程序编辑器左边窗口的文件夹“\库\Standard Library\System Function Blocks”中的SFC 14“拖放”到右边窗口的程序段中,将会自动生成调用SFC 14的CALL指令,“:=”号之前是SFC的形式参数(形参),在“:=”号的后面输入各形参的实际参数(实参),“//”号的右边是对该行语句的注释。

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

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

978-7-111-28256-3-Chapter03-46.jpg

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

978-7-111-28256-3-Chapter03-47.jpg

978-7-111-28256-3-Chapter03-48.jpg(www.xing528.com)

因为DB2中的数组的大小刚好为20B,输入RECORD的实参P#DB2.DBX0.0BYTE20后,自动变为DB2.ARAY。当然也可以直接输入DB2.ARAY。

图3-27是程序段1的CALL指令对应的梯形图。梯形图和语句表中的功能(FC)和功能块(FB)包含的信息基本相同。梯形图中的FC、FB、SFC和SFB的输入参数在左边,输出参数在右边;方框里面是形参,方框外面是实参。语句表的优点是可以给每一行加上“//”右边的注释,便于程序的阅读和理解,语句表的功能比梯形图更强,有的功能只能用语句表实现。本书的程序基本上用语句表的形式给出。

图3-27中的梯形图可以转换为语句表,但是程序段1的CALL指令不能转换为梯形图。

978-7-111-28256-3-Chapter03-49.jpg

图3-27 调用SFC14的梯形图

选中梯形图或语句表中的某条指令或某个FC、FB、SFC、SFB,按〈F1〉键可以获得选中对象的在线帮助。选中某条菜单命令,或者打开某个对话框的选项卡,按〈F1〉键也可以获得该对象的在线帮助。

从站OB1中的程序与主站的基本上相同,其区别仅在于将QD0改为QD4。图3-28给出了通信双方的信号关系图。

978-7-111-28256-3-Chapter03-50.jpg

图3-28 DP主站与智能从站的数据传输

5.初始化程序

在主站和从站的初始化程序OB100中,用SFC 21将DB 1的数据发送区中的各个字分别预置为16#1111和16#2222。将DB 2的数据接收区中的各个字清零。

6.通信的监控

在运行时用变量表同时监控通信双方接收到的DB 2的部分数据(见图3-29和图3-30)。为了动态地观察周期性数据传输的效果,在通信双方的周期性中断组织块OB35中,每100ms将DB1.DBW0加1。该数据被通信伙伴接收后存放在DB2.DBW0,通信正常时可以看到变量表中的DB2.DBW0在不断地变化。

978-7-111-28256-3-Chapter03-51.jpg

图3-29 CPU413-2DP的变量表

978-7-111-28256-3-Chapter03-52.jpg

图3-30 CPU313C-2DP的变量表

在运行时也可以用DB 2来监控数据块中定义的数组各元素的值,查看通信双方DB1中的数据是否传送给了通信伙伴的DB 2。

运行时在SIMATIC管理器中双击打开DB 2,点击工具栏上的978-7-111-28256-3-Chapter03-53.jpg按钮,启动监控功能,出现图3-31所示的对话框,点击“是”按钮,DB2首先切换到数据视图显示方式,然后进入在线监控状态(见图3-32)。选中对话框中的复选框“不再显示该信息”,以后点击978-7-111-28256-3-Chapter03-54.jpg按钮,将会直接进入数据视图监控状态。

978-7-111-28256-3-Chapter03-55.jpg

图3-31 数据块监视的提示信息

978-7-111-28256-3-Chapter03-56.jpg

图3-32 主站的DB 2接收的数据

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

我要反馈