描述
采用间接寻址时,只有程序执行时,用于读或写数值的地址才得以确定。使用这种方法可以减少编程量并使得程序更灵活。通常来讲,程序创建后访问地址也就确定了。为了使得间接寻址更灵活和更安全,可以
使用array数据类型用于组合相同的数据类型。
对于不同的存储区,采用index来访问相关的针对每个应用不同的变量。
在下面的例子中,对于三个变量的访问采用了不同的存储区。表01 显示了三个变量的访问列表,每个都有单独的索引。
索引
访问变量
存储区
1
input_word_0
ew 0
2
processdata.temperature
db 1
3
output_word_4
aw 4
表01
创建一个功能,并声明输入变量为int类型。图.01 显示了对于accessgroupint功能块的编程示例,通过index进行间接寻址并返回值。可以在程序中直接使用间接访问,例如使用指令#tempvalue:= accessgroupint(#index);。这一编程方法
可追踪,因为可以使用交叉索引。
安全,因为仅使用了预定义的内存区。
通用,因为既可以用于标准块也可以用于优化的数据区 。
在下面的示例中数据被从三个不同的优化的数据块中读出或写入。三个数据块silo_water, silo_sugar 和silo_milk都包含相同的变量声明:
db 变量1:mybool bool类型
db 变量2:myint int类型
db 变量3:myword word类型
创建的plc数据类型siloudt用于寻址包含不同数据类型的db变量。 accessgroupsiloread功能块用于读出返回值,是由plc 数据类型 siloudt定义的。基于此可以在一个fb中间接访问,例如如图.03所示的指令:
silo_handling_onlyreading(accessgroupsiloread(index:= #silo_index));
创建环境
此faq中的截屏由 step 7 (tia portal) v13创建。