您现在的位置是:首页 > PLC技术 > PLC技术

STL编程语言中数据寻址中的特殊点

来源:艾特贸易2017-06-05

简介1 . DB 寄存器中内容的变化 用下列功能,程序编辑器生成能够影响两个数据块寄存器之一的内容的附加指令。 (1) 数据地址的全局寻址 每次数据地址是全局寻址时,程序编辑器用 OPN

    1DB寄存器中内容的变化

    用下列功能,程序编辑器生成能够影响两个数据块寄存器之一的内容的附加指令。

   (1)数据地址的全局寻址

    每次数据地址是全局寻址时,程序编辑器用OPN DB首先打开数据块,然后存取数据地址。每次都要重写DB寄存器。当用全局寻址的数据地址预置块参数时,这也是适用的。

   (2)存取块参数

    存取下面的块参数改变DB寄存器的内容:对于功能,为复杂数据类型的所有块参数;对于功能块,为复杂数据类型的输入/输出参数。

   (3)块调用CALL FBCALL SFB

    在实际的块调用之前,CALL FBCALL SFBDB寄存器中存储当前实例数据块数据(通过交换数据块寄存器),并且为被调用功能块打开实例数据块。以这种方式,与被调用数据块有关的实例数据块总是打开的。在实际的块调用之后,CALL FBCALL SFB再次交换数据块寄存器,当前实例数据块在调用功能块中是有效的。以这种方式,CALL FBCALL SFB改变了DB寄存器的内容。

   (4)功能块中的DI寄存器

    在功能块中,DI寄存器总是包含当前实例数据块的数字。所有存取块参数或静态局部数据通过DI寄存器实现。顺便说一下,在“multi instance-capable”(多实例能力)功能块情况下,也可以通过地址寄存器AR2。如果用户用CDBOPN DI改变DI寄存器的内容,请注意这个固定的设置。

    例如,用户想同时用两个数据块寄存器进行数据交换,必须首先保存寄存器的内容,然后恢复它们。图18-6显示的例子描述了相关的方法。

两个数据块寄存器直接使用举例

    18-6    两个数据块寄存器直接使用举例

    2.后来改变数据块的赋值

    在离线对象容器Blocks的属性窗口中的“Blocks”(块)选项卡上,改变已经存储的代码块的数据块配置,并再次显示和存储它们时,用户可以指明绝对地址或符号地址的优先权。

    “绝对地址优先”是默认的(与先前的STEP 7版本相同)。这个默认意味着,当声明发生变化时,程序中符号地址发生变化而绝对地址保持不变;如果选择“符号地址优先”这个约定,当绝对地址发生变化时符号地址保持不变。

    举例:假定在数据块DB 1中,数据字DBW 10的符号地址是Ac tual_value,在程序中用户可以通过

    L"Data"  .Actual_value    DB1.DBW 10来加载该数据字。

    假定式中“Data”是数据块DB 1的符号地址。如果想用符号地址MaxCurrentDBW 10数据字前添加一个数据字,当代码块下一次打开(或存储)时,程序将包含以下内容:

    在“绝对地址优先”的情况下,写成

   L  ”Data”.MaxCurrent    DB1.DBW 10

    在“符号地址优先”的情况下,写成

   L  ”Data”.Actual_value    DB1.DBW 12

    在全局数据块中,存取数据地址的方法与存取全局地址的相同(以输入为例),符号地址已在符号表中指定。