直接跳到内容

布尔型数据类型

表1-布尔型数据类型

数据类型名称存储位数
BOOL布尔型TRUE,FALSE8 bit

整型数据类型

表1- 整型数据类型

数据类型名称数据下限数据上限存储位数
BYTE字节型02558 bit
SINT短整型-1281278 bit
USINT无符号短整型02558 bit
WORD字型065,53516 bit
INT整型-3276832,76716 bit
UINT无符号整型065,53516 bit
DWORD双字型04,294,967,29532 bit
DINT32位整型-2,147,483,6482,147,483,64732 bit
UDINT无符号32位整型04,294,967,29532 bit
LWORD四字型018,446,744,073,709,551,61564 bit
LINT64位整型-9,223,372,036,854,775,8089,223,372,036,854,775,80764 bit
ULINT无符号64位整型018,446,744,073,709,551,61564 bit

浮点型数据类型

表1-浮点型数据类型

数据类型名称数据下限数据上限存储位数
REAL单精度浮点型-3.402823466E+38-1.175494351E-3832 bit
1.175494351E-383.402823466E+38
LREAL双精度浮点型-1.7976931348623158e+308-2.2250738585072014e-30864 bit
2.2250738585072014e-3081.7976931348623158e+308

img当有实型数据参与运算时,有时会出现INF和NAN的值,含义如下:INF是表示无穷大数。NAN即not a number,表示这不是一个数。

时间数据类型

时间型数据类型实质是一个DWORD数据类型。对TIME和TOD,可以以毫秒为单位指定时间,对DATE和DT可以以秒为单位指定时间。

表1-时间型数据类型

数据类型名称数据下限数据上限位数
TIME时间T#0msT#49d17h2m47s295ms32 bit
TOD日时TOD#00:00:00.000TOD#23:59:59.99932 bit
DATE日期D#1970-01-01D#2106-02-0732 bit
DT日期和日时DT#1970-01-01-00:00:00.000DT#2106-2-7-06:28:1532 bit
LTIME长时间LT#0nsLT#213503d23h34m33s709ms551us615ns64 bit
LTOD长日时LTOD#00:00:00.000000000LTOD#23:59:59.99999999964 bit
LDATE长日期LD#1970-01-01LD#2554-07-2164bit
LDT长日期和日时LDT#1970-01-01-00:00:00.000000000LDT#2554-07-21-23:34:33.70955161564 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,如果使用一个长度过长的字符串进行初始化,则软件将从对该字符串截断处理。

定义字符串

您可以通过字符串向导定义字符串类型:在变量定义区,双击变量的数据类型,将显示数据类型选择按钮,如下图所示。

img

单击按钮img,将弹出数据类型选择下拉框

img

单击“字符串向导”命令,在弹出的字符串向导对话框中选择大小

img

点击确定,将完成字符串类型变量定义。

初始化字符串

字符串内容显示在单引号内,输入格式:'String'。

例如:定义大小为30字节的字符串Str1:STRING(30)。

Str1:= 'this is a string'。

字符串中除了字符,您也可以插入空格和特殊字符,特殊字符定义如下:

表1-特殊字符

特殊字符说明
$R 或 $r回车
$L 或 $l换行
$T 或 $t水平制表符
$P 或 $p换页
$N 或 $n新行
$$美元符号
$'单引号

数组

您可以定义一维,二维和三维数组的数据类型。您可以在一个POU的变量表和全局变量表中定义数组。

创建数组

您可以通过数组向导定义数组类型:在变量定义区,双击变量的数据类型,将显示数据类型选择按钮,如下图所示。

img

​ 单击按钮img,将弹出数据类型选择下拉框

img

​ 单击“数组向导”命令,在弹出的数组向导对话框中输入维数信息(下标必须小于等于上标)和数据类型。

img

点击确定,将完成数组类型变量定义。

img

初始化数组

可以点击初始值框右边的...图标打开初始化数组对话框进行初始值设定。

也可以直接在初始值框中输入初始值,规则如下:

数组初始值是由一组由逗号分割,存放于方括号中的一组数据。示例如下:

​ 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)]; (结构体初始化)

img

访问数组成员

通过数组名+索引访问,详细如下:

​ 一维数组:数组名[索引],如Arr[3]

​ 二维数组:数组名[索引,索引],如Arr[1,3]

​ 三维数组:数组名[索引,索引,索引],如Arr[1,2,3]

img软件支持数组越界保护,您需手动勾选菜单编译-数组越界保护。勾选保护后当数组的下标超上限或下限时,则取对应边界的成员。
布尔型数据类型已经加载完毕