请联系客服QQ
艾特贸易网首页

艾特贸易网

数据块的生成与使用

提示:

数据块(DB)用来分类储存设备或生产线中变量的值,。数据块也是用来实现各逻辑块之间的数据交换、数据传递和共享数据的重要途径。数据块丰富的数据结构便于提高程序的执行效率和进行数据管理。与逻辑块不同,数据块只有变量声明部分,没有程序指令部分。不同型号CPU允许建立数据块的块数和每个数据块可以占用的最大字节数均


  数据块(DB)用来分类储存设备或生产线中变量的值,。数据块也是用来实现各逻辑块之间的数据交换、数据传递和共享数据的重要途径。数据块丰富的数据结构便于提高程序的执行效率和进行数据管理。与逻辑块不同,数据块只有变量声明部分,没有程序指令部分。

    不同型号CPU允许建立数据块的块数和每个数据块可以占用的最大字节数均不同,具体的参数可以查看选型手册。

    1.数据块的类型

    数据块分为共享数据块(DB)和背景数据块(DI)两种。

    (1)共享数据块

    共享数据块又称为局数据块,它不附属于任何逻辑块。在共享数据块中和全局符号表中声明的变量都是全局变量。用户程序中所有的逻辑块(FBFCOB等)都可以使用共享数据块和全局符号表中的数据。

    (2)背景数据块

    背景数据块是专门指定给某个功能块(FB)或系统功能块(SFB)使用的数据块,它是FBSFB运行时的工作存储区。当用户将数据块与某一功能相连时,该数据块即成为该功能块的背景数据块,功能块的变量声明表决定了它的背景数据块的结构和变量功能块的变量声明表决定了其对应背景数据块的结构和变量。用户不能直接修改背景数据块,只能通过对应的功能块的变量声明表来修改它。调用FB时,必须同时指定一个对应的背景数据块。只有FB才能访问存放在它的背景数据块中的数据。

    2.生成共享数据块

    用鼠标右键点击SIMATIC管理器的块工作区,在弹出的菜单中选择“Insert New Obj ect”→“Data Block”命令,生成新的数据块,如图4-22所示。

数据块有两种显示方式:声明表显示方式和数据显示方式,菜单命令View”→“Declaration View”和“Data View”分别用来指定这两种显示方式。发动机控制系统中共享数据块DB3两种不同的显示状态如图4-26和图4-27所示。

 

4-26声明表显示状态下的共享数据块DB3

 

4-27数据显示状态下的共享数据块DB3

    3.生成背景数据块

    要生成背景数据块,首先应生成对应的功能块(FB),然后再生成背景数据块。

SIMATIC管理器中,用菜单命令“Insert”→“S7 Block”→“Data Block,,生成数据块,在弹出的窗口中如图4-28所示,选择数据块的类型为背景数据块(Instance),并输入对应功能块的名称。操作系统在编译功能块时将自动生成功能块对应的背景数据块中的数据,其变量与对应功能块的变量声明表中的变量相同,不能在背景数据块中增减变量,只能在数据显示( Data View)方式修改其时基值。背景数据块有两种显示方式,分别是声明表显示方式和数据显示方式。

 

4-28  生成背景数据块

    4.访问数据库

    在访问数据库时,需要指明被访问的数据块以及访问该数据块中的数据,有两种访问数据块中数据的方法。

    (1)先打开后访问

    访问数据块中的数据时,需要先打开这个数据块,由于只有两个数据块寄存器,即DB寄存器和DI寄存器,程序只能同时打开一个共享数据块和一个背景数据块。它们的块号分别存放在DB寄存器和DI寄存器中。打开新的数据块后,原来打开的数据块将自动关闭。

    下面的例程说明了这种访问方法:

    OPN    DB2    //打开数据块DB2

    ADBX4.5    //如果DB2.DBX4.5的常开触点接通

    LDBW12    //将DB2DBW12装入累加器1

    OPN    DB3    //打开数据库DB3

    TDBW4    //将累加器1中的数据传送到DB3.DBW4

    调用一个功能块时,它的背景数据块被自动打开。如果该功能块调用了其他块,调用结束后返回该功能块,原来打开的背景数据块不再有效,必须重新打开它。

    (2)直接访问数据库中的数据

    在指令中同时给出数据块的编号和数据在数据库中的地址,可以直接访问数据库中的数据。访问时可以使用绝对地址,也可以使用符号地址。数据块中存储单元的地址由两部分组成。例如DB2.DBX2.0DB2DBX2.0两部分组成,其中DB2为数据块的名称,DBX2.0是数据块内的第2个字节的第0位。如果打开了数据块DB2,可以省略第一个小数点前面的数据块编号。

    这种访问方法不容易出错,建议尽量使用这种方法。用下面的指令即可完成与“先打开后访问”相同的功能。

    ADB2DBX4.5

    LDB2.DBW12    //将DB2.DBW12装入累加器1

    TDB3.DBW4    //将累加器l中的数据传送到DB3.DBW4

(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:艾特贸易网客服为您服务


(责任编辑: 艾特贸易网 )

免责声明:本文章仅代表作者个人观点,与艾特贸易网无关。本站大部分技术资料均为原创文章,文章仅作为读者参考使用,请自行核实相关内容,如若转载请注明来源:艾特贸易网 http://www.aitmy.com