布尔型数据类型
表1-布尔型数据类型
数据类型 | 名称 | 值 | 存储位数 |
---|---|---|---|
BOOL | 布尔型 | TRUE,FALSE | 8 bit |
整型数据类型
表1- 整型数据类型
数据类型 | 名称 | 数据下限 | 数据上限 | 存储位数 |
---|---|---|---|---|
BYTE | 字节型 | 0 | 255 | 8 bit |
SINT | 短整型 | -128 | 127 | 8 bit |
USINT | 无符号短整型 | 0 | 255 | 8 bit |
WORD | 字型 | 0 | 65,535 | 16 bit |
INT | 整型 | -32768 | 32,767 | 16 bit |
UINT | 无符号整型 | 0 | 65,535 | 16 bit |
DWORD | 双字型 | 0 | 4,294,967,295 | 32 bit |
DINT | 32位整型 | -2,147,483,648 | 2,147,483,647 | 32 bit |
UDINT | 无符号32位整型 | 0 | 4,294,967,295 | 32 bit |
LWORD | 四字型 | 0 | 18,446,744,073,709,551,615 | 64 bit |
LINT | 64位整型 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 | 64 bit |
ULINT | 无符号64位整型 | 0 | 18,446,744,073,709,551,615 | 64 bit |
浮点型数据类型
表1-浮点型数据类型
数据类型 | 名称 | 数据下限 | 数据上限 | 存储位数 |
---|---|---|---|---|
REAL | 单精度浮点型 | -3.402823466E+38 | -1.175494351E-38 | 32 bit |
1.175494351E-38 | 3.402823466E+38 | |||
LREAL | 双精度浮点型 | -1.7976931348623158e+308 | -2.2250738585072014e-308 | 64 bit |
2.2250738585072014e-308 | 1.7976931348623158e+308 |
当有实型数据参与运算时,有时会出现INF和NAN的值,含义如下:INF是表示无穷大数。NAN即not a number,表示这不是一个数。
时间数据类型
时间型数据类型实质是一个DWORD数据类型。对TIME和TOD,可以以毫秒为单位指定时间,对DATE和DT可以以秒为单位指定时间。
表1-时间型数据类型
数据类型 | 名称 | 数据下限 | 数据上限 | 位数 |
---|---|---|---|---|
TIME | 时间 | T#0ms | T#49d17h2m47s295ms | 32 bit |
TOD | 日时 | TOD#00:00:00.000 | TOD#23:59:59.999 | 32 bit |
DATE | 日期 | D#1970-01-01 | D#2106-02-07 | 32 bit |
DT | 日期和日时 | DT#1970-01-01-00:00:00.000 | DT#2106-2-7-06:28:15 | 32 bit |
LTIME | 长时间 | LT#0ns | LT#213503d23h34m33s709ms551us615ns | 64 bit |
LTOD | 长日时 | LTOD#00:00:00.000000000 | LTOD#23:59:59.999999999 | 64 bit |
LDATE | 长日期 | LD#1970-01-01 | LD#2554-07-21 | 64bit |
LDT | 长日期和日时 | LDT#1970-01-01-00:00:00.000000000 | LDT#2554-07-21-23:34:33.709551615 | 64 bit |
[TIME格式]
TIME用于定义定时时间。定义格式有4种:TIME#、time#、T#、t#,格式符#后为时间数据,依次为d(日)、h(时)、m(分)、s(秒)和ms(毫秒)。
定义要求:
- 格式:TIME#/time#/T#/t#<时间值 >,例如Time#1d23h5m23s12ms
- 时间值必须按日、时、分、秒、毫秒顺序输入。根据实际需要定义,不是所有时间单位值都要求定义。例如:TIME#12h38m
- 时间单位如秒、毫秒等可用大写或者小写单位表示
[TOD格式]
TOD用于定义一天的时间。定义格式有4种:TOD#、tod#、TIME_OF_DAY#、time_of_day#,格式符#后为日时数据,依次为时、分、秒。
定义要求:
- TOD#/tod#/TIME_OF_DAY#/time_of_day#<时:分:秒.毫秒>,例如:TIME_OF_DAY#15:36:30.123,tod#15:36:30
- 可以将秒定义为实数或定义为一秒的分数,例如:TOD#23:12:12.888
[DATE格式]
DATE用于定义日期。定义格式有4种:D#、d#、DATE#、date#,格式符#后为日期数据,依次为年、月、日。
定义要求:
- 必须按格式定义:D#/d#/DATE#/date#+日期,例如:D#1984-06-01,d#2000-02-08。
[DT格式]
DT用于定义日期+日时,是DATE和TOD数据的结合。定义格式有4种:DT#、dt#、DATE_AND_TIME#、date_and_time#,格式符#后为日期和时刻数据,依次为年、月、日、时、分、秒。
定义要求:
- 必须按格式定义:DT#/dt#/DATE_AND_TIME#/date_and_time#+日期+时刻,例如:DT#1984-01-01-12:00:00。
[LTIME格式]
LTIME用于定义定时时间。定义格式有4种:LTIME#、ltime#、LT#、lt#,格式符#后为时间数据,依次为d(日)、h(时)、m(分)、s(秒)、ms(毫秒)、us(微妙)和ns(纳秒)。
定义要求:
- 格式:LTIME#/ltime#/LT#/lt#<时间值 >,例如LTime#1d23h5m23s12ms49us68ns,LT#1d23h5m23s
- 时间值必须按日、时、分、秒、毫秒、微妙、纳秒顺序输入。根据实际需要定义,不是所有时间单位值都要求定义。例如:LTIME#12h38m59ns
- 时间单位如秒、毫秒、微妙、纳秒等可用大写或者小写单位表示
[LTOD格式]
LTOD用于定义一天的时间。定义格式有4种:LTOD#、ltod#、LTIME_OF_DAY#、ltime_of_day#,格式符#后为日时数据,依次为时、分、秒、纳秒。
定义要求:
- LTOD#/ltod#/LTIME_OF_DAY#/ltime_of_day#<时:分:秒.纳秒>,例如:LTIME_OF_DAY#15:36:30.123456789,ltod#15:36:30
- 可以将秒定义为实数或定义为一秒的分数,例如:TOD#23:12:12.987654321
[LDATE格式]
LDATE用于定义日期。定义格式有4种:LD#、ld#、LDATE#、ldate#,格式符#后为日期数据,依次为年、月、日。
定义要求:
- 必须按格式定义:LD#/ld#/LDATE#/ldate#+日期,例如:LD#1984-06-01,ld#2554-07-21。
[LDT格式]
LDT用于定义日期+日时,是LDATE和LTOD数据的结合。定义格式有4种:LDT#、ldt#、LDATE_AND_TIME#、ldate_and_time#,格式符#后为日期和时刻数据,依次为年、月、日、时、分、秒、纳秒。
定义要求:
- 必须按格式定义:LDT#/ldt#/LDATE_AND_TIME#/ldate_and_time#+日期+时刻,例如:LDT#1984-01-01-12:00:00.123456789,ldt#1984-01-01-12:00:00。
字符串数据类型
一个STRING数据类型的变量可包含任何一串字符。您可以在声明字符串变量时定义其长度大小,该大小显示在括号中。如果没有定义大小,则 默认分配80个字符。
字符串允许大小1~1000字符,每个字符占一个字节地址。注意:字符串函数处理的长度只能从1到255,如果使用一个长度过长的字符串进行初始化,则软件将从对该字符串截断处理。
定义字符串
您可以通过字符串向导定义字符串类型:在变量定义区,双击变量的数据类型,将显示数据类型选择按钮,如下图所示。
单击按钮,将弹出数据类型选择下拉框
单击“字符串向导”命令,在弹出的字符串向导对话框中选择大小
点击确定,将完成字符串类型变量定义。
初始化字符串
字符串内容显示在单引号内,输入格式:'String'。
例如:定义大小为30字节的字符串Str1:STRING(30)。
Str1:= 'this is a string'。
字符串中除了字符,您也可以插入空格和特殊字符,特殊字符定义如下:
表1-特殊字符
特殊字符 | 说明 |
---|---|
$R 或 $r | 回车 |
$L 或 $l | 换行 |
$T 或 $t | 水平制表符 |
$P 或 $p | 换页 |
$N 或 $n | 新行 |
$$ | 美元符号 |
$' | 单引号 |
数组
您可以定义一维,二维和三维数组的数据类型。您可以在一个POU的变量表和全局变量表中定义数组。
创建数组
您可以通过数组向导定义数组类型:在变量定义区,双击变量的数据类型,将显示数据类型选择按钮,如下图所示。
单击按钮,将弹出数据类型选择下拉框
单击“数组向导”命令,在弹出的数组向导对话框中输入维数信息(下标必须小于等于上标)和数据类型。
点击确定,将完成数组类型变量定义。
初始化数组
可以点击初始值框右边的...图标打开初始化数组对话框进行初始值设定。
也可以直接在初始值框中输入初始值,规则如下:
数组初始值是由一组由逗号分割,存放于方括号中的一组数据。示例如下:
arr1 :ARRAY [1..5] OF INT := [1,2,3,4,5]; (全部初始化)
arr2 :ARRAY [1..10] OF INT := [1,2]; (部分初始化)
arr3 :ARRAY [1..5] OF INT := [1,2(3),5]; (重复初值格式)
arr4 :ARRAY [1..5] OF point := [(xPos := 1.0 ),(xPos := 3.0 ,yPos := 4.0 ),(yPos := 1.0)]; (结构体初始化)
访问数组成员
通过数组名+索引访问,详细如下:
一维数组:数组名[索引],如Arr[3]
二维数组:数组名[索引,索引],如Arr[1,3]
三维数组:数组名[索引,索引,索引],如Arr[1,2,3]
软件支持数组越界保护,您需手动勾选菜单编译-数组越界保护。勾选保护后当数组的下标超上限或下限时,则取对应边界的成员。 | |
---|---|