在 STL 中进行不完全地址寻址
简介
寻址 DB 变量时未* DB 名称或 DB 编号,称为部分限定寻址。 通过部分限定寻址方式,访问当前存储在 DB 寄存器的数据块中定义的值。
以下限制条件适用于 S7-1500 中的部分限定寻址。
在 S7-1500 中,仅当当前块中显式设置了 DB 寄存器时才可以进行部分限定寻址。 例如,使用“OPN”指令设置 DB 寄存器。 在进行标准访问的数据块中,只能对变量进行部分限定寻址。
在 S7-1500 中,可通过块调用将数据块寄存器置位为“0”。这意味着在一个块中将无法打开数据块,而且也无法在从属块中通过部分限定寻址数据块中的数据元素。 需要先在当前块中设置 DB 寄存器,然后才能对 DB 变量进行部分限定寻址。
每次进行完全限定访问时(例如,%DB10.DBW10),DB 数据块寄存器都将设置为“0”。 需要在进行完全限定访问后设置 DB 寄存器,然后才能对 DB 变量进行部分限定寻址。
在运行时使用部分限定的地址会降低程序的处理速度。
部分限定寻址的移植
在移植过程中,将对 STL 中的部分限定寻址进行以下处理:
必要时,可将部分限定寻址转换为完全限定访问。
如果在调用的代码块中打开该数据块且无法明确标识该 DB,则移植将在被调用块的接口处插入一个“DB_Any”数据类型的参数。 这样,就可将数据块名称传递给该参数。 移植将在被调用块中插入“OPN”指令以打开数据块。
示例
以下举例说明部分限定寻址的移植。
在**个表中,为移植前的程序:
STL | 说明 |
---|---|
L DBW10 L DBW12 +I T DBW14 | 在调用块中打开数据块,并传送到 DB 寄存器。 在当前块中,从 DB 寄存器中当前正打开的数据块中获取“DBW10”、“DBW12”和“DBW14”的值。 |
下表为移植后的程序:
STL | 说明 |
---|---|
OPN "PlcmigTempBlockDB" L DBW10 L DBW12 +I T DBW14 | 移植将在被调用块的接口处插入一个“DB_Any”数据类型的参数。这样,就可将数据块名称传递给该参数。 移植在被调用块中插入“OPN”指令以打开通过该接口传递的数据块。 |
提示 移植部分限定寻址块参数移植过程中,还会将部分限定寻址 DB 参数转换为完全限定访问参数。 请注意,可以更改传送给被调用块的参数类型,这是因为: 被调用的块可能无法使用完全限定访问直接访问实参,而是使用块调用期间所传送的副本。 示例: CALL "MyFC" |
shtxjd.cn.b2b168.com/m/