S7200数据的存取.docx
- 文档编号:2951449
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:15
- 大小:629.62KB
S7200数据的存取.docx
《S7200数据的存取.docx》由会员分享,可在线阅读,更多相关《S7200数据的存取.docx(15页珍藏版)》请在冰豆网上搜索。
S7200数据的存取
S7--200数据的存取
S7--200将信息存于不同的存储器单元,每个单元都有唯一的地址。
您可以明确指出要存取的存储器地址。
这就允许用户程序直接存取这个信息。
表4-1列出了不同长度的数据所能表示的数值范围。
表4-1不同长度的数据表示的十进制和十六进制数范围
若要存取存储区的某一位,则必须指定地址,包括存储器标识符、字节地址和位号。
图4-3是一个位寻址的例子(也称为“字节.位”寻址)。
在这个例子中,存储器区、字节地址(I代表输入,3代表字节3)和位地址(第4位)之间用点号(“.”)相隔开。
图4-3
使用这种字节寻址方式,可以按照字节、字或双字来存取许多存储区(V、I、Q、M、S、L及SM)中的数据。
若要存取CPU中的一个字节、字或双字数据,则必须以类似位寻址的方式给出地址,包括存储器标识符、数据大小以及该字节、字或双字的起始字节地址,如图4-4所示。
存储区数据的存取
输入过程映象寄存器:
I
在每次扫描周期的开始,CPU对物理输入点进行采样,并将采样值写入输入过程映象寄存器中。
可以按位、字节、字或双字来存取输入过程映象寄存器中的数据:
位:
I[字节地址].[位地址]I0.1
字节、字或双字:
I[长度][起始字节地址]IB4
输出过程映象寄存器:
Q
在每次扫描周期的结尾,CPU将输出过程映象寄存器中的数值复制到物理输出点上。
可以按位、字节、字或双字来存取输出过程映象寄存器:
位:
Q[字节地址].[位地址]Q1.1
字节、字或双字:
Q[长度][起始字节地址]QB5
变量存储区:
V
您可以用V存储器存储程序执行过程中控制逻辑操作的中间结果,也可以用它来保存与工序或任务相关的其它数据。
并且可以按位、字节、字或双字来存取V存储区中的数据:
位:
V[字节地址].[位地址]V10.2
字节、字或双字:
V[长度][起始字节地址]VW100
位存储区:
M
可以用位存储区作为控制继电器来存储中间操作状态和控制信息。
并且可以按位、字节、字或双字来存取位存储区:
位:
M[字节地址].[位地址]M26.7
字节、字或双字:
M[长度][起始字节地址]MD20
定时器存储区:
T
S7--200CPU中,定时器可用于时间累计,其分辨率(时基增量)分为1ms、10ms和100ms三种。
定时器有两个变量:
-当前值:
16位有符号整数,存储定时器所累计的时间。
-定时器位:
按照当前值和预置值的比较结果置位或者复位。
预置值是定时器指令的一部分。
可以用定时器地址(T+定时器号)来存取这两种形式的定时器数据。
究竟使用哪种形式取决于所使用的指令:
如果使用位操作指令则是存取定时器位;如果使用字操作指令,则是存取定时器当前值。
如图4-5中所示,常开触点指令是存取定时器位;而字移动指令则是存取定时器的当前值。
图4-5存取定时器位或者定时器的当前值
计数器存储区:
C
在S7--200CPU中,计数器可以用于累计其输入端脉冲电平由低到高的次数。
CPU提供了三种类型的计数器:
一种只能增计数;一种只能减计数;另外一种既可以增计数,又可以减计数。
计数器有两种形式:
-当前值:
16位有符号整数,存储累计值。
-计数器位:
按照当前值和预置值的比较结果置位或者复位。
预置值是计数器指令的一部分。
可以用计数器地址(C+计数器号)来存取这两种形式的计数器数据。
究竟使用哪种形式取决于所使用的指令:
如果使用位操作指令则是存取计数器位;如果使用字操作指令,则是存取计数器当前值。
如图4-6中所示,常开触点指令是存取计数器位;而字移动指令则是存取计数器的当前值。
图4-6存取计数器位或者计数器的当前值
高速计数器:
HC
高速计数器对高速事件计数,它独立于CPU的扫描周期。
高速计数器有一个32位的有符号整数计数值(或当前值)。
若要存取高速计数器中的值,则应给出高速计数器的地址,即存储器类型(HC)加上计数器号(如HC0)。
高速计数器的当前值是只读数据,仅可以作为双字(32位)来寻址。
格式:
HC[高速计数器号]HC1
累加器:
AC
累加器是可以象存储器一样使用的读写设备。
例如,可以用它来向子程序传递参数,也可以从子程序返回参数,以及用来存储计算的中间结果。
S7--200提供4个32位累加器(AC0,AC1,AC2和AC3)。
并且您可以按字节、字或双字的形式来存取累加器中的数值。
被访问的数据长度取决于存取累加器时所使用的指令。
如图4-7所示,当以字节或者字的形式存取累加器时,使用的是数值的低8位或低16位。
当以双字的形式存取累加器时,使用全部32位。
图4-7存取累加器
关于如何在中断服务程序中使用累加器的相关信息,参见第6章中的中断指令部分。
特殊存储器:
SM
SM位为CPU与用户程序之间传递信息提供了一种手段。
可以用这些位选择和控制S7--200CPU的一些特殊功能。
例如:
例如:
首次扫描标志位、按照固定频率开关的标志位或者显示数学运算或操作指令状态的标志位。
(有关SM位的详细信息参见附录D)。
并且可以按位、字节、字或双字来存取SM位:
位:
SM[字节地址].[位地址]SM0.1
字节、字或者双字:
SM[长度][起始字节地址]SMB86
局部存储器:
L
S7--200有64个字节的局部存储器,其中60个可以用作临时存储器或者给子程序传递参数。
提示:
如果用梯形图或功能块图编程,STEP7--Micro/WIN保留这些局部存储器的最后四个字节。
局部存储器和变量存储器很相似,但只有一处区别。
变量存储器是全局有效的,而局部存储器只在局部有效。
全局是指同一个存储器可以被任何程序存取(包括主程序、子程序和中断服务程序)。
局部是指存储器区和特定的程序相关联。
S7--200给主程序分配64个局部存储器;给每一级子程序嵌套分配64个字节局部存储器;同样给中断服务程序分配64个字节局部存储器。
子程序或者中断服务程序不能访问分配给主程序的局部存储器。
子程序不能访问分配给主程序、中断服务程序或者其它子程序的局部存储器。
同样的,中断服务程序也不能访问分配给主程序或子程序的局部存储器。
S7--200PLC根据需要分配局部存储器。
也就是说,当主程序执行时,分配给子程序或中断服务程序的局部存储器是不存在的。
当发生中断或者调用一个子程序时,需要分配局部存储器。
新的局部存储器地址可能会覆盖另一个子程序或中断服务程序的局部存储器地址。
局部存储器在分配时PLC不进行初始化,初值可能是任意的。
当在子程序调用中传递参数时,在被调用子程序的局部存储器中,由CPU替换其被传递的参数的值。
局部存储器在参数传递过程中不传递值,在分配时不被初始化,可能包含任意数值。
位:
L[字节地址].[位地址]L0.0
字节、字或双字:
L[长度][起始字节地址]LB33
模拟量输入:
AI
S7--200将模拟量值(如温度或电压)转换成1个字长(16位)的数字量。
可以用区域标识符(AI)、数据长度(W)及字节的起始地址来存取这些值。
因为模拟输入量为1个字长,且从偶数位字节(如0,2,4)开始,所以必须用偶数字节地址(如AIW0,AIW2,AIW4)来存取这些值。
模拟量输入值为只读数据。
格式:
AIW[起始字节地址]AIW4
模拟量输出:
AQ
S7--200把1个字长(16位)数字值按比例转换为电流或电压。
可以用区域标识符(AQ)、数据长度(W)及字节的起始地址来改变这些值。
因为模拟量为一个字长,且从偶数字节(如0,2,4)开始,所以必须用偶数字节地址(如AQW0,AQW2,AQW4)来改变这些值。
模拟量输出值是只写数据。
格式:
AQW[起始字节地址]AQW4
顺控继电器存储器:
S
顺控继电器位(S)用于组织机器操作或者进入等效程序段的步骤。
SCR提供控制程序的逻辑分段。
可以按位、字节、字或双字来存取S位。
位:
S[字节地址].[位地址]S3.1
字节、字或者双字:
S[长度][起始字节地址]SB4
实数的格式
实数(浮点数)由32位单精度数表示,其格式按照ANSI/IEEE754--1985标准中所描述的形式,参见图4-8。
实数按照双字长度来存取。
图4-8实数的格式
对于S7--200来说,浮点数精确到小数点后第六位。
因而当您使用一个浮点数常数时,您最多可以指定到小数点后第六位。
实数运算的精度
在计算中涉及到非常大和非常小的数,则有可能导致计算结果不精确。
例如数值相差10的X次方倍,而X>6时。
例如:
100000000+1=100000000
字符串的格式
字符串指的是一系列字符,每个字符以字节的形式存储。
字符串的第一个字节定义了字符串的长度,也就是字符的个数。
4-9给出了一个字符串的格式。
一个字符串的长度可以是0到254个字符,再加上长度字节,一个字符串的最大长度为255个字节。
而一个字符串常量的最大长度为126字节。
图4-9字符串的格式
在S7--200指令中输入常数值
在S7--200的许多指令中,都可以使用常数值。
常数可以是字节、字或者双字。
S7--200以二进制数的形式存储常数,可以分别表示十进制数、十六进制数、ASCII码或者实数(浮点数)。
见表4-2。
表4-2常数表示法
提示:
S7--200CPU不支持数据类型检测(例如指定常数存储为一个整数、有符号整数或者双整数)。
例如:
可以在加法指令中使用VW100中的值作为有符号整数,同时也可以在异或指令中将VW100中的数据当作无符号的二进制数。
本地I/O和扩展I/O的寻址
CPU提供的本地I/O具有固定的I/O地址。
您可以将扩展模块连接到CPU的右侧来增加I/O点,形成I/O链。
对于同种类型的输入输出模块而言,模块的I/O地址取决于I/O类型和模块在I/O链中的位置。
举例来说,输出模块不会影响输入模块上的点地址,反之亦然。
类似的,模拟量模块不会影响数字量模块的寻址,反之亦然。
提示:
数字量模块总是保留以8位(1个字节)递增的过程映象寄存器空间。
如果模块没有给保留字节中每一位提供相应的物理点,那些未用位不能分配给I/O链中的后续模块。
对于输入模块,这些保留字节中未使用的位会在每个输入刷新周期中被清零。
模拟量I/O点总是以两点递增的方式来分配空间。
如果模块没有给每个点分配相应的物理点,则这些I/O点会消失并且不能够分配给I/O链中的后续模块。
图4-10中是一个特定的硬件配置中的I/O地址。
地址间隙(用灰色斜体文字表示)无法在程序中使用。
图4-10CPU224XP的本地和扩展I/O地址举例
用指针对S7--200存储区间接寻址
间接寻址是指用指针来访问存储区数据。
指针以双字的形式存储其它存储区的地址。
只能用V存储器、L存储器或者累加器寄存器(AC1、AC2、AC3)作为指针。
要建立一个指针,必须以双字的形式,将需要间接寻址的存储器地址移动到指针中。
指针也可以作为参数传递到子程序中。
S7--200允许指针访问以下存储区:
I、Q、V、M、S、AI、AQ、SMT(仅限于当前值)和C(仅限于当前值)。
您无法用间接寻址的方式访问单独的位,也不能访问HC或者L存储区。
要使用间接寻址,您应该用“&”符号加上要访问的存储区地址来建立一个指针。
指令的输入操作数应该以“&”符号开头来表明是存储区的地址,而不是其内容将移动到指令的输出操作数(指针)中。
当指令中的操作数是指针时,应该在操作数前面加上“*”号。
如图4-11所示,输入*AC1指定AC1是一个指针,MOVW指令决定了指针指向的是一个字长的数据。
在本例中,存储在VB200和VB201中的数值被移动到累加器AC0中。
图4-11创建和使用指针
如图4-12所示,您可以改变一个指针的数值。
由于指针是一个32位的数据,要用双字指令来改变指针的数值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- S7200 数据 存取
![提示](https://static.bdocx.com/images/bang_tan.gif)