间接寻址是一种特殊的地址访问方式,其特点是程序在执行过程中才能确定实际的读写地址。在常规编程中,程序编写完成后,访问地址通常是固定的,而间接寻址则不同。它能够根据程序运行时的动态情况来确定具体的访问地址,从而让程序更加灵活。此外,这种灵活性还可以减少重复编程的工作量,提高编程效率。为了更好地实现间接寻址,并确保操作的安全性,我们可以在不同的存储区,采用index来访问相关的针对每个应用不同的变量。
示例一:访问不同存储区的变量
在下面的示例中,使用了三个访问变量,分别采用了不同的存储区,且每个都有单独的索引。
如表01所示:
创建一个功能,并声明输入变量为"Int"类型,图.01 展示了"AccessGroupInt"功能块的编程示例,通过index进行间接寻址并返回值。可以在程序中直接使用间接访问,例如使用指令#TempValue:= "AccessGroupInt"(#Index);。这一编程方法:
(1)可追踪,因为可以使用交叉索引。
(2)安全,因为仅使用了预定义的内存区。
(3)通用,因为既可以用于标准块也可以用于优化的数据区
示例二:从不同的优化的DB中读出或写入数据
三个数据块"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创建。
附加关键词
符号