西门子PLC的寄存器结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西门子PLC的寄存器结构
一访问数据
CPU 将信息存储在不同存储单元,每个位置均具有唯一的地址。可以显式标识要访问的存储器地址。这样程序将直接访问该信息。要访问存储区中的位,必须指定地址,该地址包括存
储器标识符、字节地址和位号(也称为“字节.位”寻址)。
表格--存储区
M存储器最多32个(256个位、32个字节、16个字),从MB0~MB31,MW0~MW30,MD0~MD28。
V存储器最多可到几千~几万个。
M是位地址。比如M0.0,M0.1等。
MB0、MB1是字节地址,包括8个位地址,从M0.0~M0.7,从
M1.0~M1.7。
MW0是字地址,包括MB0和MB1,即从M0.0~M1.7共16个位
地址。常用于寄存16位数据。
MD0是双字地址,包括MW0和MW1,即从M0.0~M3.7共32
个位地址。常用于寄存32位数据。
在程序执行期间,使用过程映像寄存器比直接访问输入或输出点更有优势。使用映像寄存器共有三个原因:
●在扫描开始时对所有输入进行采样可在扫描周期的程序执行阶段同步和冻结输入值。程序执行完成后,使用映像寄存器中的值更新输出。这样会使系统更稳定。
●程序访问映像寄存器的速度比访问 I/O 点的速度快得多,从而可以更快地执行程序。
● I/O 点是位实体,必须以位或字节的形式访问,但可以采用位、字节、字或双字的形式访问映像寄存器。因此,映像寄存器更为灵活。
使用“字节地址”格式可按字节、字或双字访问多数存储区(V、I、 Q、 M、 S、 L 和 SM)中的数据。要按字节、字或双字访问存储器中的数据,必须采用类似于指定位地址的方法指定地址。这包括区域标识符、数据大小标识和字节、字或双字值的起始字节地
址,如下图所示。
二、基本数据类型
1、位(bit)
常称为BOOL(布尔型),只有两个值:0或1。如:I0.0,Q0.1,M0.0,V0.1等。
2、字节(Byte)
一个字节(Byte)等于8位(Bit),其中0位为最低位,7
位为最高位。如:IB0(包括I0.0~I0.7位),QB0(包括Q0.0~Q0.7位),MB0,VB0等。范围:00~FF(十进制的0~255)。
3、字(Word)
相邻的两字节(Byte)组成一个字(Word),来表示一个无符号数,因此,字为16位。如:IW0是由IB0和IB1组成的,其中I是区域标识符,W表示字,0是字的起始字节。需要注意的是,字的起始字节(如上例中的“0”)都必须是偶数。字的范围为十六进制的0000~FFFF(即十进制的0~65535)。在编程时要注意,如果已经用了IW0,如再用IB0或IB1要特别加以小心,不要出现交叉引用。
4、双字(Double Word)
相邻的两个字(Word)组成一个双字,来表示一个无符号数。因此,双字为32位。如:MD100是由MW100和MW102
组成的,其中M是区域标识符,D表示双字,100是双字的起始字节。需要注意的是,双字的起始字节(如上例中的“100”)和字一样,必须是偶数(4的倍数)。双字的范围为十六进制的00000000~FFFFFFFF(即十进制的0~4294967295)。在编程时要注意,如果已经用了MD100,如再用MW100或MW102要特别加以小心,不要出现交叉引用。
以上的字节、字和双字数据类型均为无符号数,即只有正数,没有负数。
三、地址分配:
在PLC中,同一个地址不可以同时用来存储不同的数据,这种情况会造成数据错乱,地址重叠。这种错误不能被PLC通过编译检查出来,需要编程员自己把控。
PLC中地址的分配方式举例如下:
VW10=VB10+VB11,VW11=VB11+VB12,VW12=VB12+VB13
VD10=VW10+VW12,VD11=VW11+VW13,VD12=VW12+VW14,VD13=VW13+VW15,VD14=VW14+VW16
字节、位的排列:“字节”由低到高是从左到右排列的, “位”由低到高是从右到左排列的。
示例1:
IB0寄存器值为33H (00110011B ), 则:I0.0=1, I0.1=1, I0.2=0, I0.3=0, I0.4=1, I0.5=1, I0.6=0, I0.7=0,
0 0
1 1
0 0
1 1
IB1寄存器值为D7H (11010111B ), 则:I1.0=1, I1.1=1, I1.2=1, I1.3=0, I1.4=1, I1.5=0, I1.6=1, I1.7=1, IW0寄存器值为33D7H ,
ID0寄存器值为33D7OOOOH ,(假设IB2=0,IB3=0)
I0.0
I0.2
I0.4
I0.6
I0.7
I0.5
I0.3
I0.1
IB0
已知VW50=101(0065H),
求:V50.3=0?,V51.3=0? ,
VB50=00? , VB51=65(01100101)? , 可以用V50.12表示一个位地址吗?
5、16位整数(INT,Integer)
整数为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-32768~32767。(1000 0000 0000 0000B~0111 1111 1111 1111B) (8000H~7FFFH)
AIW、AQW寄存器为16位整数(INT)数据,有符号位。6、32位整数(DINT,Double Integer)
32位整数和16位整数一样,为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-2147483648~2147483647。(1000 0000 0000 0000 0000 0000 0000 0000B~0111 1111 1111 1111 1111 1111 1111 1111B)(8000 0000H~7FFF FFFFH)
其它数据类型:实数、字符串、ASCII码数……,自己看手册。