存储区域
西门子系统,将存储区分成不同类型:
- C:COUNTERS
- T:TIMERS
- D:DIRECT_PERIPHERAL_ACCESS
- I:INPUTS
- Q:OUTPUTS
- M:FLAGS_MARKERS
- DB:DATA_BLOCKS
- DBI:INSTANCE_DATA_BLOCKS
- LD:LOCAL_DATA
本次主要对M-存储区、I-输入、Q-输出、DB数据块说明。
I:输入区
内部地址分为D(DW)双字、W字、B字节和位。
位:1bit
B(BYTE):8位/1字节;
W(WORD):16位/2字节;
D(DOULBE WORD):32位/4字节
为了方便理解,下面用例子说明
I100.0
表示I区第100字节的第0位,通常数据类型为BOOL。
IB100
表示I区第100字节,其包含I100.0、I100.1、~I100.7共8位,数据可能为BYTE、SINT、USINT、CHAR,如果数据类型为STRING需要再后面增加字符串长度IB100.30。
IW100
表示I区第100字节开始的字,其包含IB100、IB101,数据可能为DWORD、DINT、UDINT、REAL。
ID100
ID100:表示I区第100字节开始的双字,其包含IW100,IW102,或者IB100、IB101、IB102、IB103,数据可能为WORD、INT、UINT。
Q:输出区
内部地址分为D(DW)双字、W字、B字节和位。
位:1bit
B(BYTE):8位/1字节;
W(WORD):16位/2字节;
D(DOULBE WORD):32位/4字节
为了方便理解,下面用例子说明
Q100.0
表示Q区第100字节的第0位,通常数据类型为BOOL。
QB100
表示Q区第100字节,其包含Q100.0、Q100.1、~Q100.7共8位,数据可能为BYTE、SINT、USINT、CHAR,如果数据类型为STRING需要再后面增加字符串长度QB100.30。
QW100
表示Q区第100字节开始的字,其包含QB100、QB101,数据可能为DWORD、DINT、UDINT、REAL。
QD100
QD100:表示I区第100字节开始的双字,其包含QW100,QW102,或者QB100、QB101、QB102、QB103,数据可能为WORD、INT、UINT。
M:存储区
内部地址分为D(DW)双字、W字、B字节和位。
位:1bit
B(BYTE):8位/1字节;
W(WORD):16位/2字节;
D(DOULBE WORD):32位/4字节
为了方便理解,下面用例子说明
M100.0
表示M区第100字节的第0位,通常数据类型为BOOL。
MB100
表示M区第100字节,其包含M100.0、M100.1、~M100.7共8位,数据可能为BYTE、SINT、USINT、CHAR,如果数据类型为STRING需要再后面增加字符串长度MB100.30。
MW100
表示M区第100字节开始的字,其包含MB100、MB101,数据可能为DWORD、DINT、UDINT、REAL。
MD100
MD100:表示I区第100字节开始的双字,其包含MW100,MW102,或者MB100、MB101、MB102、MB103,数据可能为WORD、INT、UINT。
DB:数据块
内部地址分为D(DW)双字、W字、B字节和位。
位:1bit
B(BYTE):8位/1字节;
W(WORD):16位/2字节;
D(DOULBE WORD):32位/4字节
为了方便理解,下面用例子说明
DB1.DBX100.0
表示数据块DB1的第100字节的第0位,通常数据类型为BOOL。
DB1.DBB100
表示数据块DB1的第100字节开始的字节,数据可能为BYTE、SINT、USINT、CHAR,如果数据类型为STRING需要再后面增加字符串长度DB1.DBB100.30。
DB1.DBW100
表示数据块DB1的第100字节开始的字,数据可能为DWORD、DINT、UDINT、REAL。
DB1.DBD100
表示数据块DB1的第100字节开始的双字,数据可能为WORD、INT、UINT。
数据类型
1、二进制数(BOOL、BYTE、WORD、DWORD、LWORD)
BOOL型:
布尔,是表示1位的值,就是说0或1。
BYTE:
字节,是位字符串,占有8位,举例说2#0 到 2#1111_1111,对应16进数就是16#00—16#FF。如IB2、MB10、DB1.DBB4
WORD:
字,是位字符串,占有16位,举例说:2#0到2#1111 1111 1111 1111,对应的16进制数就是16#0—16#FFFF。如MW10、DB2.DBW1。
DWORD:
双字,是位字符串占有32位,举例说:2#0到2#1111 1111 1111 1111 1111 1111 1111 1111,对应的16进制数就是16#0—16#FFFF FFFF。如MD10、DB2.DBD1。
2、整数(SINT、USINT、INT、UINT、DINT、UDINT、LINT、ULINT),这里的S代表短,U代表无符号、D代表双。
SINT和USINT:
这两种相同的是短整形数,占8位,地址举例:MB0,DB1.DBB0。但是这两种的取值范围是不同的。
SINT:有符号短整形,取值范围-128—127,2#0—2#0111 1111,最高位为符号位,
USINT:无符号短整形,取值范围0—255,2#0—2#1111 1111
INT和UINT:
这两种相同的是整形数,占16位,地址举例:MW0,DB1.DBW0。但是这两种的取值范围是不同的。
INT:有符号整形,取值范围-32768—32767,2#0—2#0111 1111 1111 1111,最高位为符号位,
USINT:无符号短整形,取值范围0—65535,2#0—2#1111 1111 1111 1111
LDNT和UDINT:
这两种相同的是双整形数,占32位,地址举例:MD0,DB1.DBD0。但是这两种的取值范围是不同的。
DINT:有符号整形,取值范围-2,147,483,648—2,147,483,647,2#0—2#0111 1111 1111 1111 1111 1111 1111 1111,最高位为符号位,
UDINT:无符号整形,取值范围0—4,294,967,295,2#0—2#1111 1111 1111 1111 1111 1111 1111 1111
3、浮点数
实(或浮点)数以 32 位单精度数 (Real) 或 64位双精度数 (LReal) 表示。单精度浮点数的精度最高为 6位有效数字,而双精度浮点数的精度最高为 15 位有效数字。
在输入浮点常数时,最多可以指定 6 位 (Real) 或 15 位 (LReal) 有效数字来保持精度。
后记
本文只是记录本人学习过程中的理解,可能有部分内容有纰漏,望各位不吝赐教。