时间数据类型,我们一般在PLC编程的时候,用来给TON定时器功能块赋值。其他方面我们用的并不多,不过这里我参考codesys的v3编程基础将此部分列出来:
像CODESYS 处理DWORD一样内部处理时间数据类型。你可以以毫秒为单位为TIME和TOD指定时间并以秒为单位为DATE和DT指定时间。
数据类型 | 下限 | 上限 | 内存 |
---|---|---|---|
TIME | 0 | 4294967295 | 32位 |
TIME_OF_DAY (TOD) | 0 (00:00:00:000) | 4294967295 (23:59:59:999) | 32位 |
DATE | 0 (01.01.1970) | 4294967295 (2106-02-07) | 32位 |
DATE_AND_TIME (DT) | 0 (1970-01-01, 00:00:00) | 4294967295 (2106-02-07,06:28:15) | 32位 |
LTIME | 0 | 213503d23h34m33s709ms551us615ns | 64位 |
你可用时间常数来操作标准定时器模块。TIME 是一个32位的IEC 61131-3标准的时间常数。除了 TIME, CODESYS 还支持以 LTIME 为时间基础的高精度定时器。LTIME 是一个64位的以纳秒分辨率扩展标准的时间常量。
TIME时间常量赋值
t#<时间声明>
作为替代,你可以使用下面的语法风格代替“T #”:T#, 时间, TIME。
您可以为下面列出的所有时间单位使用此时间声明。这些单元必须按下面的顺序声明,但是,并不是所有的单元必须要声明。
d: 日 h: 小时 m: 分钟 s: 秒钟 ms: 毫秒
正确用法
在一个ST任务中正确使用时间常量的例子: TIME1 := T#14ms; TIME1 := T#100s12ms;(允许在最高组件中溢出。) TIME1 := t#12h34m15s;
错误用法
错误使用的例子: TIME1 := t#5m68s;(在较低位置溢出) TIME1 := 15ms;(T# 丢失) TIME1 := t#4ms13d;(时间维度的错误顺序)
LTIME用法
在这个时间声明中,您可以使用相同的时间单元作为TIME常量。您也可以使用下面的单元: us:微秒 ns:纳秒 LTIME1 := LTIME#1000d15h23m12s34ms2us44ns LTIME1 := LTIME#3445343m3424732874823ns
注意:
以下时间类型我们用的并不多,仅作为了解。用的最多的是TIME数据类型。
DATE用法
使用DATE常量作为日期。
语法:
d# <日期声明>
作为替代,您可以使用下面的语法风格而不是 d#:D#, 日期, DATE。
您必须按格式 <年-月-日> 来定义日期的声明。
CODESYS 在内部处理 DATE (D) 和处理 DWORD一样。以秒为单位给出时间,从1970年1月1日00:00开始。
DATE#1996-05-06 d#1972-03-29
DATE_AND_TIME用法
DATE_AND_TIME#1996-05-06-15:36:30 dt#1972-03-29-00:00:00
语法:
Dt# <日期和时间声明>
作为替代,您可以使用如下语法风格来替换 dt#:DT#, date_and_time, DATE_AND_TIME。
您必须按格式 <年-月-日-时:分:秒>来定义日期和时间声明。
您可以将秒定义为实数或定义为一秒的分数。
CODESYS 内部处理 DATE_AND_TIME (DT) 值就像处理 DWORD一样。以秒为单位给出时间,从1970年1月1日00:00开始。
TIME_OF_DAY 用法
您可以使用此常量来定义一天的时间。
语法:
Tod# <数据时间的声明>
作为替代,您可以使用如下语法风格来替换 tod#:TOD#, time_of_day, TIME_OF_DAY。
您必须按照格式 <时:分:秒> 来定义一天的时间声明。
您可以将秒定义为实数或定义为一秒的分数。
CODESYS 像处理 DWORD 一样在内部处理 TIME_OF_DAY(TOD) 。时间是以毫秒为单位,从00:00开始。
例子: TIME_OF_DAY#15:36:30.123 tod#00:00:00