西门子s7-300间接寻址的指令说明一、西门子s7-300间接寻址的指令1、立即寻址指令“L 100”表示将100装入累加器12、直接寻址指令“L MW200”表示将编号为MW200这个箱子里的数据装入累加器13、间接寻址指令“L MW[LD300]”表示LD300这个箱子里装的是真正存放数据的箱子的编号(即存放数据的MW的地址),假设LD300这个箱子里放的是MW200的地址,取出这个地址后,再把MW200这个箱子里的数据装入累加器1二、 西门子s7-300用于间接寻址的梯形图指令实例:复制代码 代码示例:OPN DB 1 L L#0 T DBW 170 //序号初始化 T DBW 172 //序号初始化 T DBD 200 //指针初始化 T DBD 204 //指针初始化 lab2: L DBD 200 L 80 >=D JC lab1 A M [DBD 200] JCN lab3 L DBD 200 L 1 +I T DBW 174 L 1 L DBW 170 +I T DBW 170 L 2 ==I = M 10.7lab3: L 1 L DBD 200 +D T DBD 200 JU lab2lab1: NOP 0这是一个间接循址的例子,dbd200为指针,dbw170统计m0.0-m9.7中置位的点的个数。
dbw174指示最后一个置位点的序号梯形图不支持间接寻址三、西门子s7-300间接寻址做西门子200较多 通讯 模拟量 间接寻址 for循环都用过,最近有项目需要用到西门子300,看间接寻址的手册,不是很理解求指点与西门子s7-300间接寻址的实例解答:1、建议看看:《关于S7-300和S7-400指针寻址的说明与例程(更新版)(2008.03.04) 》下载: 将PIW128- PIW147,共20个字送入DB10中在OB1:OPN DB 10 //打开DB 10 L P#128.0 //初始读指针 LAR1 L P#0.0 //初始写指针 LAR2 CALL FC 1002. 将PIW256- PIW275,共20个字送入DB20中OPN DB 20 //打开DB 20 L P#256.0 //初始读指针 LAR1 L P#0.0 //初始写指针 LAR2 CALL FC 100建立一FC块:在FC100:L 20 // 20个字的循环计数为初值M001: T MB 10 //计数值 送入MB 10 L PIW [AR1,P#0.0] //按读指针指示的地址读数据 T DBW [AR2,P#0.0] //按写指针指示的地址写数据 +AR1 P#2.0 //读指针指向下一数据地址 +AR2 P#2.0 //写指针指向下一数据地址 L MB 10 //取循环计数值 LOOP M001 //循环计数值如为0则结束循环;如不为0减1后则转向标号为M001的语句,继续循环。
四、西门子S7-1200间接寻址指令的应用西门子S7-1200的间接寻址需要通过数据块中的数组来实现指令FieldRead通过索引(又称为下标)变量从数组中读取数值,指令FieldWrite 通过索引变量向数组中写数值,使用这两条指令可以实现间接寻址索引变量是间接寻址中的地址指针,它的值是要读写的数组元素的索引值地址指针就像收音机调台的指针,改变指针的位置,指针指向不同电台改变地址指针中的索引值,指针“指向”数组不同的元素间接寻址的优点是可以在程序处理期间,通过改变指针的值动态地修改指令中的地址首先,生成一个名为“数据块1”的全局数据块DB2,在数据块中生成名为“数组1”的数组Array[1..10] of Int,其元素的数据类型为Int这两条指令没有列入指令列表和高级指令列表,编程时将收藏夹中的空逻辑框插入程序,点击其中红色的“??”,打开下拉式列表框,可以看到列表框底部的指令FieldWrite或FieldRead点击生成的指令框中的“???”,用列表设置要写入或读取的数据类型为Int(见下图)。
两条指令的参数MEMBER的实参必须是数组的第一个元素“数据块1”.数组1[1]指令的输入参数索引值“INDEX”是要读写的数组中的元素的下标,数据类型为DINT(双整数)参数“VALUE”是要写入数组元素的值或要读取的数组元素的值下图中的FieldWrite指令将常数25写入数组1中的元素“数组1[3]”FieldRead指令读取数组元素“数组1[3]”的值,将它保存到MW20改变INDEX的值,可以读写别的数组元素的值猜你喜欢: 西门子s7-200模拟量数据格式与寻址方法 【图】西门子s7-200寻址方式与内部数据存储区 【问答】西门子S7-300的寄存器间接寻址问题第二例 【问答】西门子s7-300寄存器间接寻址问题 西门子plc间接寻址的二种方式 3 / 3。