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才能使用局部变量表。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++。
说明:
以下描述了在STEP 7 MicroWIN中可能的一种间接寻址使用.
例子中包含了OB1,一个数据块和一个状态表.
OB1包含4段程序。
500)this.width=500" border=0>
图1:在SFC功能块中的4段程序
注意第2段程序:
*AC1 中的(*)星号意味着正使用AC1所指向的地址内容,而并非AC1本身的值另一部分是数据块.
500)this.width=500" border=0>
图2:需要一个状态表用于测试和监控.
500)this.width=500" border=0>
图3:下载程序到控制器中,然后打开状态表,点击"Table Status" 观察变化.
首先保持监控当前的状态,可以看到VB200 到VB210 的值为1-10.而VB 220 之后全为空白.
当I0.0 为1时,这两点将被创建.
当I0.1为1时,从VB200 开始的连续前4个字节将被传送到VB220-VB223 中.
在第3段程序中将I0.0 置0可以分别增加1个地址字节,通过触发I0.2的上升沿可以增加多个地址字节.
在第4段程序中将I0.0 置0可以分别减少1个地址字节,通过触发I0.3的上升沿可以减少多个地址字节.
从入口条目为1109582.的"S7-200自动化系统" 手册中可以找到关于该主题的进一步信息,另外通过在线帮助输入"直接和间接寻址"也是非常有用的.。
S7-200数据存储与寻址方式1.I/O 点数扩展和编址S7-200 CPU22X 系列的每种主机所提供的本机I/O点的I/O地址是固定的,进行扩展时,可以在CPU右边连接多个扩展模块。
每个扩展模块的组态地址编号取决于各模块的类型和该模块在I/O链中所处的位置。
输入与输出模块的地址不会冲突,模拟量控制模块地址也不会影响数字量。
编址方法是同样类型输入或输出点的模块在链中按所处的位置而递增,这种递增是按字节进行的,如果CPU或模块在为物理I/0点分配地址时未用完一个字节,那些未用的位也不能分配给I/O链中的后续模块。
例如,某一控制系统选用CPU224,系统所需的输入/输出点数为:数字量输入24点、数字量输出20点、模拟量输入6点和模拟量输出2点。
本系统可有多种不同模块的选取组合,并且各模块在I/O链中的位置排列方式也可能有多种,表1-1所示为其对应的各模块的编址情况。
表1-1A.同类型输入或输出的模块按顺序进行编制。
B. 数字量模块总是保留以8位(1个字节)递增的过程映象寄存器空间。
如果模块没有给保留字节中每一位提供相应的物理点,那些未用位不能分配给I/O链中的后续模块。
对于输入模块,这些保留字节中未使用的位会在每个输入刷新周期中被清零。
C. 模拟量I/O点总是以两点递增的方式来分配空间。
如果模块没有给每个点分配相应的物理点,则这些I/O点会消失并且不能够分配给I/O链中的后续模块。
2. S7-200 PLC的寻址方式及内部数据存储区S7-200 CPU将信息存储在不同的存储单元,每个单元都有惟一的地址。
S7-200CPU使用数据地址访问所有的数据,称为寻址。
输入/输出点、中间运算数据等各种数据类型具有各自的地址定义,大部分指令都需要指定数据地址。
本节将从S7-200的数据长度、寻址、寻址方式和内部数据存储区几个方面进行介绍。
2.1 数据长度S7-200 寻址时,可以使用不同的数据长度。
不同的数据长度表示的数值范围不同。
S7-200模拟量寻址S7-200模拟量问题的解答问题1:S7-200模拟量输入模块(EM231,EM235)如何寻址?回答: 模拟量输入和输出为一个字长,所以地址必须从偶数字节开始, 精度为12位,模拟量值为0-32000的数值。
格式: AIW[起始字节地址] AIW6 ;AQW[起始字节地址] AQW0每个模拟量输入模块,按模块的先后顺序地址为固定的,顺序向后排。
例: AIW0 AI W2 AIW4 AIW6每个模拟量输出模块占两个通道,即使第一个模块只有一个输出AQW0 (EM235只有一个模拟量输出), 第二个模块模拟量输出地址也应从AQW4开始寻址,依此类推。
(注: 每一模块的起始地址都可在step7 micro/win 中Plc/Information里在线读到)。
问题2:如何将传感器连接到S7-200 模拟量输入模块(EM231,EM235)以及有哪些注意事项?回答:模拟量输入模块可以通过拨码开关设置为不同的测量方法。
开关的设置应用于整个模块,一个模块只能设置为一种测量范围。
(注:开关设置只有在重新上电后才能生效) 输入阻抗与连接有关:电压测量时,输入是高阻抗为10 MOhm ;电流测量时,需要将Rx 和x 短接,阻抗降到250 Ohm 。
注意:为避免共模电压,须将M端与所有信号负端连接, 未连接传感器的通道要短接, 如下列各图。
下列各图是各种传感器连接到S7-200 模拟量输入模块的示例图1: 4线制-外供电-测量图2: 2线制-测量为了防止模拟量模块短路,可以串入传感器一个750 Ohm电阻。
它将串接在内部2 50 Ohm电阻上并保证电流在32 m A以下。
图3: 电压测量注意:如果你使用一个4-20mA 传感器, 测量值必须通过编程进行相应的转换.输入转换: X=32000 *(AIWx – 6400) /(32000 – 6400)输出转换: Y=计算值*(32000 – 6400)/32000 + 6400问题3:为什么使用S7-200 模拟量输入模块时接收到一个变动很大的不稳定的值?回答:1.你可能使用了一个自供电或隔离的传感器电源,两个电源没有彼此连接。
(完整版)S7-200间接寻址解析对指令的操作数的指定方式,我将其理解为“寻址”。
下面将以我个人的理解对西门子S7-200的寻址方式进行描述,如有不当之处,还请广大读者指正。
在程序中绝大部分的指令都带有操作数,所谓的操作数,是执行这一指令时被这一指令加以操作、处理的数值。
对指令的操作数的指令方式大致的总结一下,可以概括为如下几个类型:1:指令的操作数为“立即数”,(如:15、16#F、2#1111等、、、、、、)。
LD M0.0MOVW +255, VW0+I +45, VW0这是一条加法指令,被加数为:255、加数为45执行这条指令后计算出来的“和”存放在VW0这一存储器内。
LD M0.0MOVB 15, VB0这是一条传指令,译为:将15传送至存储器VB0内。
2:指令的操作数没有直接的给出,而是给出它所在的地址。
LD M0.0MOVW VW0, VW4-I VW2, VW4这是一条减法指令,译为:将存储器VW0内的数值减去存储器VW2内的数值,将“差”存放在存储器VW4内。
3:指令的操作数没有直接的给出,而是给出它所在的地址的“地址”,在S7-200中,将这种寻址方式称之为“指针寻址”。
下面,我们一起来学习一下关于指针的使用方法:在使用指针进行间接寻址的过程中,会涉及到的两个符号:&:建立指针(进行间接访问的区域)*:读取指针(读取指针间接指定的地址)下面是使用指针的一般步骤:1:建立指针建立指针需要使用双字传送指令,如下所示:LD M0.0MOVD &MB0, VD10译为:在VD10建立指针,指针指向被间接访问的首地址MB0。
在建立指针时需要注意如下几个问题:①可以进行间接访问的区域,包括如下几个区域:I、Q、M、S、V、T(当前值)、C(当前值)。
在S7-200中位状态是不能进行间接指定的,所以这里特别强调只是访问定时器及计数器的当前值,而不是其位状态。
②可以作为建立指针的区域,包括如下几个区域:V、L、及累加器AC1至AC3。
S7—200smartPLC间接寻址的应用作者:赵青来源:《现代职业教育·职业培训》2018年第08期[摘要] 对S7-200smartPLC来说,寻址分为直接寻址和间接寻址,其中间接寻址主要用于需要在程序中修改地址的场合,特别是处理数据内容比较多的情况,使用间接寻址编程灵活,节省程序空间。
大多教材关于间接寻址的概念和应用介绍得不够通俗易懂,很多学生,甚至工程技术人员对间接寻址的使用存在概念不清,应用不明的情况。
通过三个例子循序渐进地说明间接寻址的概念和应用,经过教学实践,学生反馈较好。
[关键词] 间接寻址;操作数;地址;指针[中图分类号] TP273 [文献标志码] A [文章编号] 2096-0603(2018)24-0018-02PLC将信息存于不同的存储器单元,每个单元都有唯一的地址。
地址也是我们访问所有数据的依据,那么我们访问数据的过程就是寻址。
在s7-200smartPLC中通过地址访问数据,地址是访问数据的依据,访问数据的过程称为“寻址”。
几乎所有的指令和功能都与各种形式的寻址有关。
直接寻址指定了存储器的长度和位置,例如VW90是V存储区中16位的字,其地址为90。
而间接寻址在指令中给出的不是操作数的值或操作数的地址,而是给出一个被称为指针的双字存储单元的地址,指针里存放的是真正的操作数的地址。
一、如何进行间接寻址使用间接寻址的方式存取数据主要分为以下三个步骤来实现:(一)建立指针使用间接寻址之前,应创建一个指针。
指针以双字的形式存储要访问的存储器的地址,只能用V存储器、L存储器或者累加器AC作为指针。
建立指针时,用双字传送指令MOVD将需要间接寻址的存储器起始地址送到指针中。
指针的输入数应该以“&”符号开头来表明存储区的地址,注意不是其内容将移动到指令的输出操作数中。
S7-200smartPLC中允许使用指针对下述存储区进行间接寻址:I、Q、V、M、S、AI、AQ、SM、T(仅当前值)和C(仅当前值)。