西门子s7-300间接寻址的指令说明

作者:老电工时间:2015-10-27 05:42:36

一、西门子s7-300间接寻址的指令

1、立即寻址指令“L  100”表示将100装入累加器1。

2、直接寻址指令“L  MW200”表示将编号为MW200这个箱子里的数据装入累加器1。

3、间接寻址指令“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.7
lab3: L     1
      L     DBD  200
      +D   
      T     DBD  200
      JU    lab2

lab1: NOP   0
 

这是一个间接循址的例子,dbd200为指针,dbw170统计m0.0-m9.7中置位的点的个数。dbw174指示最后一个置位点的序号。梯形图不支持间接寻址。

三、西门子s7-300间接寻址

做西门子200较多   通讯  模拟量  间接寻址  for循环都用过,最近有项目需要用到西门子300,看间接寻址的手册,不是很理解。
求指点与西门子s7-300间接寻址的实例。

解答:
1、建议看看:
《关于S7-300和S7-400指针寻址的说明与例程(更新版)(2008.03.04)     》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215
、《西门子STL间接寻址常问问题集》
http://www.ad.siemens.com.cn/download/docMessage.aspx?
ID=6175&loginID=&srno=&sendtime=

2、实例:
典型的循环语句编程:
1. 将PIW128- PIW147,共20个字送入DB10中
在OB1:
 

OPN   DB     10      //打开DB 10
      L     P#128.0          //初始读指针
      LAR1 
      L     P#0.0            //初始写指针
      LAR2 
      CALL  FC   100

2. 将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-1200间接寻址指令

本站仅提供信息发布平台,文章仅代表作者个人观点。

猜你喜欢

首页 > plc > 西门子plc