S7-200间接寻址解析
- 格式:doc
- 大小:35.00 KB
- 文档页数:5
S7-200指令详解PLC在运行时需要处理的数据一般都根据数据的类型不同、数据的功能不同而把数据分成几类。
这些不同类型的数据被存放在不同的存储空间,从而形成不同的数据区。
S7-200的数据区可以分为数字量输入和输出映像区、模拟量输入和输出映像区、变量存储器区、顺序控制继电器区、位存储器区、特殊存储器区、定时器存储器区、计数器存储器区、局部存储器区、高速计数器区和累加器区。
3.1 S7-200的数据区1. 数字量输入和输出映象区(1) 数字量输入映像区(I区)数字量输入映像区是S7-200 CPU为输入端信号状态开辟的一个存贮区,用I表示。
在每次扫描周期的开始,CPU对输入点进行采样,并将采样值存于输入映像区寄存器中。
该区的数据可以是位(1bit)、字节(8bit)、字(16bit)或者双字(32bit)。
其表示形式如下。
·用位表示I0.0、I0.1、…I0.7I1.0、I1.1、…I1.7…I15.0、I15.1、…I15.7共l28点。
输入映像区每个位地址包括存储器标识符、字节地址及位号三部分。
存储器标识符为“I”,字节地址为整数部分,位号为小数部分。
比如Il.0表明这个输入点是第1个字节的第0位。
·用字节表示IB0、IB1、…IB15共l6个字节。
输入映像区每个字节地址包括存储器字节标识符、字节地址两部分。
字节标识符为“IB”,字节地址为整数部分。
比如IB1表明这个输入字节是第1个字节,共8位,其中第0位是最低位,第7位是最高位。
·用字表示IW0、IW2、…IW14共8个字。
输入映像区每个字地址包括存储器字标识符、字地址两部分。
字标识符为“IW”,字地址为整数部分。
一个字含两个字节,一个字中的两个字节的地址必须连续,且低位字节在一个字中应该是高8位,高位字节在一个字中应该是低8位。
比如,IW0中的IB0应该是高8位,IB1应该是低8位。
·用双字表示ID0、ID4、…ID12共4个双字。
S7-200 SMART 间接寻址一、间接寻址概念:1、间接寻址是指用指针来访问存储区的数据。
指针以双字的形式存储其它存储区的地址,只能将V 存储单元、L 存储单元或累加器寄存器(AC1、AC2、AC3)用作指针。
注意:S7-200 SMART CPU 允许指针访问下列存储区:I、Q、V、M、S、AI、AQ、SM、T(仅限当前值)和C(仅限当前值)。
不能使用间接寻址访问单个位或访问HC、L 或累加器存储区。
2、指针存储的就是存储器的内存地址或编号,如下所示,VB0表示的是一个存储器,而内存地址:16#08000000则就是VB0这个存储区所对应的内存地址,通过对这个内存地址的改变就可以实现对不同的存储区的访问,这就是间接寻址的过程。
3、间接寻址的使用过程主要分为建立指针,改变指针,通过指针实现存储器三步骤。
二、建立指针:要创建指针,用“&”符号加上要访问的存储区地址可建立一个指针,必须使用“移动双字”指令,将间接寻址的存储单元地址移至指针位置。
注意:修改指针的值时,请记住调整所访问数据的大小:访问字节时,指针值加1;访问定时器或计数器的字或当前值时,指针值加2;访问双字时,指针值加4。
三、修改指针:对指针中的数据进行修改,可以实现对存储地址的改变,如图所示通过对指针进行加法操作来改变指针中的所存的数据,该数据指向的是PLC中存储器的内存地址。
四、通过指针对数据进行存取:当指针的内容修改完后,需要根据修改后的指针的内容访问对应的存储区的数据,此时指令中的操作数是指针是,应该在操作数前面加上“*”号。
例程1.通过指针访问数据表所实现的功能:索引号VW1008=0时,将指定的配方0(VB100~VB104) 数据传送到(VB1500~VB1504) 索引号VW1008=1时,将指定的配方1(VB105~VB109) 数据传送到(VB1500~VB1504) 索引号VW1008=2时,将指定的配方2(VB110~VB114) 数据传送到(VB1500~VB1504) 索引号VW1008=3时,将指定的配方3(VB115~VB119) 数据传送到(VB1500~VB1504)例程2.通过指针存储数据表所实现的功能:索引号VW1008=0时,将(VB1500~VB1504)数据传送到指定的配方0(VB100~VB104) 索引号VW1008=1时,将(VB1500~VB1504)数据传送到指定的配方1(VB105~VB109) 索引号VW1008=2时,将(VB1500~VB1504)数据传送到指定的配方2(VB110~VB114) 索引号VW1008=3时,将(VB1500~VB1504)数据传送到指定的配方3(VB115~VB119)例程3.通过地址偏移量来访问V存储区数据所实现的功能:本例程可以实现对区任意字节数据的访问。
S7-200模拟量数据格式与寻址
S7-200模拟量数据格式与寻址:
模拟量输入/输出数据是有符号整数,占用一个字长(两个字节),所以地址必须从偶数字节开始。
模拟量的转换精度为12位。
格式:
输入:AIW[起始字节地址]如AIW6
输出:AQW[起始字节地址]如AQW0
.每个模拟量输入模块,按模块的先后顺序和输入通道数目,以固定的递增顺序向后排地址。
例如:AIW0、AIW2、AIW4、AIW6、AIW8等。
对于EM231RTD(热电阻)两通道输入模块,不再占用空的通道,后面的模拟量输入点是紧接着排地址的。
.每个有模拟量输出的模块占两个输出通道。
即使第一个模块只有一个输出AQW0,第二个模块的输出地址也应从AQW4开始寻址(AQW2被第一个模块占用),依此类推。
.温度模拟量输入模块(EM231TC、EM231RTD)也按照上述规律寻址,但是所读取的数据是温度测量值的10倍(摄氏或华氏温度)。
如520相当于52.0度。
注意:每一模块的起始地址都可在STEP7-Micro/WIN中的菜单PLCInformation里在线读到。
图文详解S7-200SMART间接寻址方法PLC寻址分为直接和间接两种,前面已经介绍了直接寻址使用方法,本文介绍间接寻址如何使用,间接寻址类似于地球上经纬度定位方式,地球上任意一个地方都有一个与之相对于的经度和纬度值,这样定位不再分区域,可以延伸到全球。
间接寻址也是如此,PLC中只有一个存储数据的硬件(硬盘),所谓的I,Q,M,V等区只是西门子开发人员定义出来的逻辑分区,类似电脑C,D,E,F盘,其实都处在一个硬盘中,并且都有相对应得一个编号,如果能找到地址的编号,同样可以对其进行寻址,并且不再受存储区的限制,能够大批量的访问连续或有一定规律的地址,这就是间接寻址。
间接寻址分三步:1.建立指针,即获取需要访问存储区起始地址对应编号。
&为地址符号,是S7-200SMART中特殊的编程写法,&VB0代表VB0处在整个存储区的地址编号(指针),可以理解成我们的身份证号码,是一个很大的数值,必须存储在32位存储器中,如VD100,LD0,AC1(AC0不能做指针)等。
2. 间接访问。
通过访问指针指向地址来进行寻址。
间接寻址支持字节,字,双字方式访问,如下图所示:*为访问指针符号,*AC1代表AC1所指向地址的数值,以字节访问则代表一个字节,字访问代表一个字,双字访问代表一个双字。
3.指针偏移。
访问完一个地址后可以以该地址为起始,通过加/减方式对指针进行偏移,从而实现其它地址的访问。
通常字节偏移1,字偏移2,双字偏移4(位不支持间接寻址)总结:间接寻址与直接寻址各有千秋,直接寻址直观简单,适合单个或少量的寻址,不管有没有规律都可以使用,可以满足大部分寻址要求。
间接寻址适合批量且连续或有一定规律的地址,当寻址量较大时,可以将数据设计成有规律,用间接方式寻址可以少写很多步程序,使编程更加简单。
S7-200SMART系列PLC的间接寻址功能在PLC中使用的寻址方式分为直接寻址和间接寻址两种方式,所谓的直接寻址,就是直接使用存储区或寄存器的元件名称和地址编号,根据这个地址去找到该数据,而间接寻址,不直接给处存储区或寄存器的地址,而是通过对地址的地址进行访问来实习对存储区的数据读取,通俗的来讲,这个地址的地址就是一个编号或一个代号,这好比读书时每同学会有一个学号,老师在点名的时候,可以叫名字,也可以叫学号,叫名字就好比直接寻址,叫学号就好比间接寻址。
不管是叫名字还是叫学号,其实对应的都是同一个人。
如下图所示:VB0:就好比一个人的名字,而地址的地址16#08000000就相当于学号。
CPU会为每一个存储区分配一个32位大小的数值作为存储器地址的地址。
所有不管是通过间接寻址的方式还是直接寻址的方式其实是访问同一个存储器或是寄存器。
不同的PLC有不同的寻址方式,这里给大家介绍下西门子系列PLC的间接寻址的方式。
这里先给大家介绍下西门子S7-200系列的PLC的间接寻址的过程。
在S7-200系列PLC中,可以用间接寻址访问的存储有:输入过程映像区(I)、输出过程映像区(Q)、位存储器(M)、全局变量存储区(V)、顺控状态继电器(S)以及定时器(T)和计数器(C)。
在S7-200系列PLC中间接寻址的使用主要分为三步骤:(1)建立指针使用间接寻址对某个存储单元读写时,首先需要建立地址指针,指针为双字的长度,可作为指针的存储区有全局变量存储区V,局部变量存储区L和累加器(AC1\AC2\AC3),建立指针时,必须使用双字的传送指令(MOVD),将存储区中所要访问单元的地址装入用来作为指针的存储器单元或寄存器中。
如前面图中所示,若需要提取VB0地址的地址出来,则需要在VB0前面加上符号“&”即&VB0,&VB0所表示的就不是VB0的值了,而是VB0地址的地址即16#08000000.如下图所示:VD100表示指针,用于存储VB0这个存储器地址的地址。
识别绝对和符号地址用户可以用绝对或符号方式识别程序中的指令操作数。
绝对参考使用内存区和位或字节位置识别地址。
符号参考使用字母数字字符组合识别某地址(符号地址)或数值(符号常数)。
程序编辑器如何显示地址举例I0.0 绝对地址由内存区和地址数目指定(SIMATIC程序编辑器)%I0.0 在IEC中,百分比符号位于绝对地址之前(IEC程序编辑器)#INPUT1 #符号位于局部变量之前(SIMATIC或IEC程序编辑器)INPUT1 全局符号名(SIMATIC或IEC程序编辑器)??.? or ????红色问号表示未定义的地址(必须在程序编译之前定义)全局范围与局部范围在符号表中指定的符号值(全局变量表)具有全局范围,在局部变量表中指定的符号值具有局部范围。
全局符号全局符号可在SIMATIC和IEC程序编辑器中使用。
在SIMATIC程序中,用户使用符号表进行全局符号赋值。
在IEC程序中。
用户使用全局变量表进行全局符号赋值。
在程序程序中使用符号之前,不必执行符号赋值;用户可以在任何时间进行符号赋值。
局部变量局部变量可在SIMATIC和IEC程序编辑器中使用。
局部变量在各自的POU的局部变量表中赋值,其范围局限于建立局部变量的POU。
每个POU都有单独的局部变量表。
举例:用户在称作SBR1的子程序局部变量表中定义一个称作INPUT1的变量。
当用户从SBR1内参考INPUT1时,程序编辑器将其识别为SBR1的一个局部变量。
然而,如果用户从程序中的其他位置(例如,从OB1或第二个子程序)参考INPUT1,程序编辑器不将其视作局部变量(因为它位于SBR1之外),而将INPUT1视作未定义的全局符号。
局部变量表的硬件支持STEP 7-Micro/WIN的局部变量表功能要求硬件支持。
用户必须有一台CPU 221、CPU 222、CPU 224或CPU 226才能使用局部变量表。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++。