无心飞扬 发表于 2024-8-6 14:41:35

基于树莓派的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]
查看完整版本: 基于树莓派的CODESYS编程(5)——ST语言编程的基础:时间日...