1200PLC的数据类型详述
前文所提到的数据类型用于描述数据的长度以及属性,即为指定数据元素的大小以及如何解释数据,每个指令至少支持一种数据类型,因而指令上使用的操作数的数据类型必须与指令所支持的数据类型一致。所以在设计程序,建立变量时需要对所建立的变量分配数据类型。
博图中建立建立变量的主要地方有:变量表、DB块、FB/FC/OB的接口区,接口区的变量的建立并非适用于所有变量类型。
变量表可以建立的途径:变量表,数据块,代码块的接口区域,其中变量表无法建立双精度的浮点数(Lreal)
实数的存储方式:
实数在1200PLC中分为单精度和双精度两种,单精度存储空间为32位,双精度存储空间为64位。
例如将实数0.5存储至MD20中,MD20的数据类型为Real
对于双精度浮点数:最高位为符号位(63位),指数部分(52-62位),尾数部分(0-51位)
时间和日期:
DTL的每一部分均包含不同的数据类型和取值范围,指定值的数据类型必须与相应部分的数据类型相一致。包括年、月、日、星期、小时、秒和纳秒为12个字节,可以在全局数据块以及块的接口区定义。注意,长格式DTL日期和时间在变量表中无法定义。
BYTE |
组件 |
数据类型 |
值范围 |
0-1 |
年 |
UNIT |
1970-2554 |
2 |
月 |
USINT |
1-12 |
3 |
日 |
USINT |
1-31 |
4 |
星期 |
USINT |
1-7 |
5 |
小时 |
USINT |
0-23 |
6 |
分钟 |
USINT |
0-59 |
7 |
秒 |
USINT |
0-59 |
8-11 |
纳秒 |
USINT |
0-999 999 999 |
字符和字符串的数据类型:
数据类型 |
大小 |
范围 |
常数输入示例 |
Char |
8位 |
16#00-16#FF |
'A'、'T'、‘@’ |
WChar |
16位 |
16#0000-16#FFFF |
亚洲字符等 |
String |
n+2个字节 |
n=(0-254字节) |
‘ABCD' |
WString |
n+2个字 |
n=(0-65534个字) |
’abc123@.com' |
Char在存储器中占用一个字节,可以包含以ASCALL码格式的单个字符。WChar可以包含任意双字节形式的内容。
String数据类型存储一串单字节字符,提供了256个字节,其中前两个字节表示最大字符数和当前字符数,定义字符串的最大长度可以减少它所占用的存储空间。示例:MyString[13]的表明最大字符长度就为13个字符,如不这样定义,则该字符串需要占用256个字符。WString的表达形式类同,不再详述。
对于String和WString的数据类型只能在DB块和块的接口参数里面建立,不可在变量表中建立。
String和Wstring定义最大字数后,如果输入的超过最大存储数的时候,后续便不再继续存储 S_MOVE字符传送指令 S_CONV为字符转换指令。
Array:
Array是一个数组,数组是由相同数据类型的多个元素组成,数组可以在DB块中或者是在OB、FB、FC的块接口的编辑器中创建而无法在变量表中创建,其创建格式为Array[lo..hi]of type.其中Low和High表示数组的下标和上标,取值范围为[-32768,32767]。type表示基本数据类型。
Struct:
表示一组指定数目的数据元素,每个元素可以具有不同的元素类型,1200PLC结构型变量不支持嵌套。结构元素可以在声明中进行初始化赋值,初始化值得类型必须必须与结构元素的数据类型相一致。
Variant:
该数据类型可以指向各种数据类型或是参数变量得指针,其可以指向基本数据类型,也可以指向复合得数据类型,其不会占用存储器空间,该变量只能在块得接口处建立。