S7-1200的间接寻址S7-1200梯形图中的间接寻址需要通过数组和指令来实现。
使用指令FieldRead (通过索引变量从数组中读取数值) 和FieldWrite (通过索引变量向数组中写数值),可以实现间接寻址。这两条指令在基本指令的“移动操作”文件夹中。
在全局数据块“数据块2”中生成名为“数组1”的数组Array[0..5] of Int,其元素的数据类型为Int,元素的下标为0~5。间接寻址的程序见下图。
点击生成的指令框中的“??”,用下拉式列表设置要写入或读取的数据类型为Int。两条指令的参数MEMBER的实参必须是数组的第一个元素,例如本例中的“数据块2”.数组1[0]。
改变输入参数INDEX(下标)的值,可以读、写不同的数组元素。
SCL没有FieldRead和FieldWrite指令,但是支持通过变量对数组进行间接寻址,例如
#Tag_1 := "数据块1".数组1[#Index];
这种表达方式有点像S7-300/400,但是仍然要通过数组来进行间接寻址。
S7-1200的数组元素几乎可以使用所有的基本数据类型(包括Bool),所以S7-1200的间接寻址的功能是很强的。其他小型PLC(例如S7-200)的间接寻址不能对数据类型为bool的变量间接寻址。