首页 理论教育 S7-200PLC数据类型与寻址方式详解

S7-200PLC数据类型与寻址方式详解

时间:2023-06-26 理论教育 版权反馈
【摘要】:常数的表示方法S7-200系列PLC的许多指令都会使用常数,常数的数据长度可以是字节、字或双字。

S7-200PLC数据类型与寻址方式详解

1.数据类型

(1)数据存储类型

S7-200 PLC的指令参数所用的基本数据类型有1位布尔型(BOOL)、8位字节型(BYTE)、16位无符号整数(WORD)、16位有符号整数(INT)、32位无符号双字整数(DWORD)、32位有符号双字整数(DINT)、32位实数型(REAL)。

CPU存储器中存放的数据类型可分为BOOL、BYTE、WORD、INT、DWORD、DINT、REAL。不同的数据类型具有不同的数据长度和数值范围。在上述数据类型中,用字节(B)、字(W)、双字(D)分别表示8位、16位、32位数据的数据长度。不同的数据长度对应的数值范围见表2-6。例如,数据长度为字(W)型的无符号整数(WORD)的数值范围为0~65535。不同数据长度的数值所能表示的数值范围是不同的。

表-6 数据长度和数值范围

978-7-111-51420-6-Chapter02-15.jpg

SIMATIC指令集中,指令的操作数具有一定的数据长度。如整数乘法指令的操作数是字型数据;数据传送指令的操作数可以是字节、字或双字型数据。

(2)常数的表示方法

S7-200系列PLC的许多指令都会使用常数,常数的数据长度可以是字节、字或双字。在CPU中常数都是以二进制形式来存储的,为表示和使用方便,书写时经常用二进制、十进制十六进制、ASCII码或实数等多种形式。书写要求如下:

十进制常数,直接书写,如3458;十六进制,书写时前面加16#,如16#13AC;二进制,书写时前面加2#,如2#0001101111100001;实数(浮点数),采用科学计数法书写,如+1.230516E-38、-1.584345E+27。

2.编址方式

S7-200系列PLC为每一种元件分配一个存储区域,并采用不同字母作为区域标识符,如数字量输入,区域标识符为I;数字量输出,区域标识符为Q;模拟量输入为AI;模拟量输出为AQ;内部标志位存储器为M;特殊标志位存储器为SM;变量存储器为V;局部存储器为L;顺序控制存储器为S;T为定时器;C为计数器;HC表示高速计数器。

存储器的单位可以是位、字节、字或双字,所以编址方式相应也分为位、字节、字或双字编址。

3.寻址方式

S7-200 CPU将程序中的各类信息和数据存储在不同的存储器单元,每个单元都确定一个唯一的地址,CPU通过地址来访问其对应的数据,称为寻址。

(1)直接寻址(www.xing528.com)

1)位寻址格式:对于I、Q、M、SM、S、V、L这些存储器,按位寻址的格式为Ax.y。其中A为存储器区域名称,x为字节地址,y为字节内的位地址,例如I1.5、Q0.1、M10.0、V100.6。对于T和C存储器,按位寻址格式为Ax,例如T0、T100、C0、C56。

2)字节、字和双字寻址格式:对于I、Q、M、SM、S、V、L这些存储器,可以按字节、字、双字寻址,寻址格式为ATx。其中A为存储器区域名称,T的取值分别可以是B(字节)、W(字)、D(双字),x为字节地址。例如图2-9,VB50表示以字节的方式存取,VW50表示存取VB50、VB51组成的字(VB50为高8位字节、VB51为低8位字节);VD50表示存取VB50~VB53组成的双字(VB50为最高8位字节,VB53为最低8位字节)。

978-7-111-51420-6-Chapter02-16.jpg

图2-9 字节/字/双字寻址格式示例

(2)间接寻址

S7-200系列PLC的间接寻址方式是指数据存放在存储器或寄存器中,在指令中只出现所需数据所在单元的内存地址的地址。存储单元的地址的地址又称为地址指针。间接寻址一般在处理内存连续地址中的数据时使用。

S7-200系列PLC可以对I、Q、V、M、S、T(仅当前值)、C(仅当前值)间接寻址,但不能对独立的位(Bit)或模拟量进行间接寻址。用间接寻址方式存取数据需要做的工作有3个,分别是建立指针、用指针存取数据和修改指针。

1)建立指针。使用间接寻址时,首先要创建一个指向该位置的指针。指针为双字(32位),用于存放另一个存储器的地址,只能用V、L或累加器AC1、AC2和AC3作指针。生成指针时,必须用双字传送指令(MOVD)将数据所在单元的内存地址送入指针,指令的输入操作数开始处加&符号,表示某一存储器位置的地址,而不是存储器里的值,指令的输出操作数为指针地址。

例如:MOVD&VB100,AC1。该指令的含义是将VB100的地址(32位)送入累加器AC1中。

2)用指针存取数据。用指针来存取数据时,操作数前面加“*”符号,表示该操作数为一指针。

例如:MOVW*AC1,AC0。该指令的含义是将AC1中的内容为起始地址的一个字长的数据(即VB100,VB101)送入AC0的低16位,如图2-10所示。

978-7-111-51420-6-Chapter02-17.jpg

图2-10 间接寻址方式

3)修改指针。连续存储数据时,通过修改指针很容易存取某一串数据。指针是32位的数据,应使用双字指令来修改指针值,如INCDAC1,将指针加1。另外修改指针时,要记住访问数据的长度:存取字节时,指针加1;存取字时,指针加2;存取双字时,指针加4。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈