基于树莓派的CODESYS编程(5)——ST语言编程的基础:时间日...
今天这篇文章我们来介绍下CODESYS编程环境下ST语言时间日期数据类型,这是后续编程的基础。 1、时间数据类型1.1、TIME:长度为32位的时间数据类型,符合PLC编程标准IEC61131-3,分辨率为毫秒。TIME类型的常量以"T#"开头,其取值范围为:T#0D0H0M0S0MS~T#49D17H2M47S295MS,其中"D"表示"天","H"表示"小时","M"表示"分钟","S"表示"秒","MS"表示"毫秒";
在实际使用时,没有必要把所有的单位都列出。TIME变量建议使用前缀"t"标识,比如下面的代码定义了一个tHold变量,其初始值为3小时20分钟; tHold : TIME :=T#3H20M; //保持时间
1.2、LTIME:长度为64位的时间数据类型,分辨率为纳秒。LTIME类型的常量以"LTIME#"开头,其取值范围为:LTIME#0NS~LTIME#213503D23H34M33S709MS551US615NS,其中"US"表示微秒,"NS"表示纳秒,其它D/H/M/S/MS与TIME类型中的定义相同。LTIME类型变量建议前缀为"lt",比如下面的代码定义了一个ltRunning的变量,其初始值为20天31秒; ltRunning : LTIME :=LTIME#20D31S;
2、日期数据类型
日期数据类型包括六种:DATE、DATE_AND_TIME、TIME_OF_DATE、LDATE、LDATE_AND_TIME和LTIME_OF_DAY。
2.1、DATE(日期)
DATE的数据长度为32位,用来表示日期。DATE常量以"DATE#"或"D#"开头,其取值范围为:D#1970-01-01~D#2106-02-07。建议的命名前缀为"date",比如下面的代码定义了一个名称为"dateStart"的变量,其初始值为2021-10-19: dateStart: DATE:=DATE#2021-10-19;
2.2、DATE_AND_TIME(日期时间)
DATE_AND_TIME的数据长度为32位,用来表示日期及时间,分辨率为秒。其常量以DT#开头,取值范围为:DT#1970-1-1-0:0:0~DT#2106-02-07-06:28:15。建议的命名前缀为"dt",比如下面的代码定义了一个名称为"dtTimeNow"的变量,其初始值为2021-10-19-13:53:00; dtTimeNow: DATE_AND_TIME:=DT#2021-10-19-13:53:00;
2.3、TIME_OF_DAY(时钟)
TIME_OF_DAY的数据长度为32位,用来表示一天的时钟时间,分辨率为毫秒。其常量以"TOD#"开头,取值范围为:TOD#0:0:0~TOD#23:59:59.999。建议的命名前缀为"tod",比如下面的代码定义了一个名称为"todTimer"的变量,其初始值为14:08:59.555(14点08分59秒555毫秒) todTime: TIME_OF_DAY:=TOD#14:08:59.555;
2.4、LDATE(长日期)
LDATE与DATE类似,不过它的数据长度为64位,可表示的日期范围更长。其常量以"LD#"开头,取值范围为:LD#1970-1-1~LD#2554-7-21;建议的变量命名前缀为"ld",比如下面的代码定义了一个名称为"ldStart"的变量,其初始值为2021-10-19 ldStart: LDATE:=LDATE#2021-10-19;
2.5、LDATE_AND_TIME(长日期时间)
LDATE_AND_TIME与之前介绍的DATE_AND_TIME类似,不过它使用LDATE取代之前的DATE,因而数据长度也是64位。其常量以"LDT#"开头,取值范围为:LDT#1970-1-1-0:0:0~LDT#2554-7-21-23:59:59.99999999。建议的命名前缀为"ldt",比如下面的代码定义了一个名称为"ldtTimeStart"的变量,其初始值为:LDT#2021-10-19-14:32:00 ldtTimeStart: LDATE_AND_TIME:=LDT#2021-10-19-14:32:00;
2.6、LTIME_OF_DAY(长时钟)
LTIME_OF_DAY与TIME_OF_DAY类似,也用来表示时钟。不过它的数据长度为64位,可表示时钟精确到纳秒。其常量以"LTOD#"开头,取值范围为:LTOD#0:0:0~LTOD#23:59:59.999999999。建议的命名前缀为"ltod",比如下面的代码定义了一个名称为"ltodClock"的变量,其初始值为:8:38:00.89998989 ltodTime: LTIME_OF_DAY:=LTOD#8:38:00.89998989;
之前在西门子SCL编程基础的文章中也曾介绍过日期时间数据类型,二者有相似之处,也有不同的地方。比如虽然都有TIME类型,但取值范围不同。
西门子SCL语言中TIME类型用作32位有符号整数,其取值范围为:
T#-24d_20h_31m_23s_648ms~T#+24d_20h_31m_23s_647ms。
而CODESYS的TIME类型用作32位无符号整数,其取值范围为:
T#0d0h0m0s0ms~T#49d17h2m47s295ms。还有一些其它的区别,请看文章《西门子SCL编程入门教程连载(13)-日期时间数据类型》。
页:
[1]