通俗解释S7-200指针寻址_第1页
通俗解释S7-200指针寻址_第2页
通俗解释S7-200指针寻址_第3页
通俗解释S7-200指针寻址_第4页
通俗解释S7-200指针寻址_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

S7-200的指针寻址对指令的操作数的指定方式,我将其理解为“寻址”。下面将以我个人的理解对西门子S7-200的寻址方式进行描述,如有不当之处,还请广大读者指正。在程序中绝大部分的指令都带有操作数,所谓的操作数,是执行这一指令时被这一指令加以操作、处理的数值。对指令的操作数的指令方式大致的总结一下,可以概括为如下几个类型:1:立即数寻址指令的操作数为“立即数”,(如:15、16#F、2#1111等、、、、、、)。LDM0.0MOVW+255,VW0+I+45,VW0这是一条加法指令,被加数为:255、加数为45执行这条指令后计算出来的“和”存放在VW0这一存储器内。LDM0.0MOVB15,VB0这是一条传指令,译为:将15传送至存储器VB0内。2:直接地址寻址指令的操作数没有直接的给出,而是给出它所在的地址。LDM0.0MOVWVW0,VW4-IVW2,VW4这是一条减法指令,译为:将存储器VW0内的数值减去存储器VW2内的数值,将“差”存放在存储器VW4内。3:寄存器间址寻址指令的操作数没有直接的给出,而是给出它所在的地址的“地址”,在S7-200中,将这种寻址方式称之为“指针寻址”。下面,我们一起来学习一下关于指针的使用方法:在使用指针进行间接寻址的过程中,会涉及到的两个符号:&:建立指针(进行间接访问的区域)*:读取指针(读取指针间接指定的地址)4.S7-200中使用指针的步骤下面是使用指针的一般步骤:1:建立指针建立指针需要使用双字传送指令,如下所示:LDM0.0MOVD&MB0,VD10译为:在VD10建立指针,指针指向被间接访问的首地址MB0。在建立指针时需要注意如下几个问题:①可以进行间接访问的区域,包括如下几个区域:I、Q、M、S、V、T(当前值)、C(当前值)。在S7-200中位状态是不能进行间接指定的,所以这里特别强调只是访问定时器及计数器的当前值,而不是其位状态。②可以作为建立指针的区域,包括如下几个区域:V、L、及累加器AC1至AC3。且只能是双字(32bit)类型的地址。③在建立指针时在存储器前加“&”这个符号的表示进行间接访问的区域的首地址,所以除定时器T及计数器C外都必须是以字节的形式出现的。2:读取指针在读取指针时,有如下几种不同的情况出现:①以字节的形式读取指针:LDM0.0MOVD&MB0,VD10MOVB*VD10,VB30译为:在VD10建立指针,指针指向以MB0为首地址的地址,读取在指针VD10所指向的首地址开始的一个字节(即以MB0开始的一个字节,很明显就是MB0本身),所以,读取指针时将MB0放到VB30。②以字的形式读取指针:LDM0.0MOVD&MB0,VD10MOVW*VD10,MW20译为:在VD10建立指针,指针指向以MB0为首的地址,读取在指针VD10所指向的首地址开始的一个字(即以MB0开始的一个字,很明显就是MW0),所以,读取指针时将MW0放到MW20。③以双字的形式读取指针:LDM0.0MOVD&VB0,VD10MOVD*VD10,VD40译为:在VD10建立指针,指针指向以VB0为首的地址,读取在指针VD10所指向的首地址开始的一个双字(即以VB0开始的一个双字,很明显就是VD0),所以,读取指针时将VD0放到VD40。3:修改指针修改指针是在使用指针寻址中关健的一部分,修改指针是将指针指向的首地址进行适当的偏移,使之指向我们需要访问的地址,这样我们可以比较方便的使用在这一存储区的某一具体地址,使程序的灵活性有所增加。修改指针的方法大致的可以概括为如下几种:①使用加法或减法指令,对指针进行指定常数作为偏移量的修改指针。②使用加“1”或减“1”指令,对指针进行1个单位(字节)的偏移。4.修改批指针下面将以实际情况为例来说明修改批指针的方法:例1:网络1:LDM0.0MOVD&VB0,VD10MOVD*VD10,VD40+D4,VD10网络2:LDM0.1MOVD*VD10,VD44译为:在VD10建立指针,指针指向以VB0为首的地址,读取在指针VD10所指向的首地址开始的一个双字(即以VB0开始的一个双字,很明显就是VD0),所以,读取指针时将VD0放到VD40。然后对指针进行修改,对其指定4个单位的偏移量,即指针此时指向的首地址为VB4。在下一网络中又以双字的形式读取指针。所以,此时读取指针是将以VB4为首的一个双字传送至VD44(即VD4传送至VD44)。例2:网络1:LDM0.0MOVD&VB0,VD10MOVB*VD10,MB0INCDVD10网络2:LDM0.1MOVB*VD10,MB1译为:在VD10建立指针,指针指向以VB0为首的地址,读取在指针VD10所指向的首地址开始的一个字节(即以VB0开始的一个字节,很明显就是VB0),所以,读取指针时将VB0放到MB0。然后对指针进行修改,对其进行一个单位(字节)的偏移,即指针此时指向的首地址为VB1。在下一网络中又以字节的形式读取指针。所以,此时读取指针是将以VB1为首的一个字节传送至MB1(即VB1传送至MB1)。5.访问连续间接地址在程序中,如果希望以连续的形式去间接访问地址(即:读取VB0后希望下一次读取的是VB1、读取VW0后希望下一次读取的是VW2、读取VD0后希望下一次读取的是VD4),修改指针时,需要注意以下问题:①读取下一个字节:网络1:LDM0.0MOVD&VB0,VD10MOVB*VD10,VB100+D1,VD10网络2:LDM0.1MOVB*VD10,VB100第一次读指针时,读取的是VB0。第二次读指针时,读取的是VB1。②读取下一个字:网络1:LDM0.0MOVD&VB0,VD10MOVW*VD10,VW100+D2,VD10网络2:LDM0.1MOVW*VD10,VW100第一次读指针时,读取的是VW0。第二次读指针时,读取的是VW2。③读取下一个双字:网络1:LDM0.0MOVD&VB0,VD10MOVD*VD10,VD100+D4,VD10网络2:LDM0.1MOVD*VD10,VD100第一次读指针时,读取的是VD0。第二次读指针时,读取的是VD4。综上所述,在以连续方式读取指针时:⑴读取下一个字节,修改指针时“加1”。⑵读取下一个字,修改指针时“加2”。⑶读取下一个双字,修改指针时“加4”。5.应用实例下面,给出两个应用实例,读者可自行分析其工作原理。例1:网络1:LDI1.0EUMOVD&VB0,VD100SM0.0,1网络2:LDM0.0FORVW1000,1,10网络3:LDAlways_On:SM0.0MOVWVW1000,VW1002+IVW1000,VW1002MOVWVW1002,*VD100+D2,VD100网络4:NEXT网络5:LDW>=VW1000,10RM0.0,1例2:网络1:LDM0.0MOVD&VB300,VD131MOVW0,VW129网络2:LDM0.0FORVW125,1,6网络3:LDSM0.0MOVB*VD131,AC0+IAC0,VW129+D1,VD131 网络4:NEXTS7-200cpu允许使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论