TIME/LTIME 常量
TIME 是有符号 32 位时长类型,分辨率为毫秒,可用负值表示时间差或反向时长。
LTIME 是有符号 64 位时长类型,可用于高分辨率计时,分辨率为纳秒。
日期常量 LTIME 常量 日期常量 语法
<时间关键字> # <时间长度>
<时间关键字> : TIME | time | T | t
<时间长度> : ( <天数>d )? ( <小时数>h )? ( <分钟数>m )? ( <秒数>s )? (<毫秒数>ms)? // ( ...)? 可选的
时间单位的顺序不得更改。但是,不需要指定所有单位。允许以大写形式写入单位。
时间单位
D | d: 天数 H | h: 小时数 M | m: 分钟数 s | s: 秒数 MS | ms: 毫秒数 例如
正确分配ST的时间常量
VAR
timLength : TIME := T#14ms;
negativeDuration : LTIME := LTIME#-1s;
timLength1 : TIME := T#100s12ms; // 最高单位允许溢出。
timLength2 : TIME := T#12h34m15s;
timCompare : TIME;
xIsOK: BOOL;
timLongest := T#49D17H2M47S295MS; // 4294967295
END_VAR
IF timLength < T#15MS THEN
IF timCompare < timLength1 THEN
xIsOK := TRUE;
END_IF;
END_IF
不正确的用法:
timIncorrect := t#5m68s; 在较低位置溢出
timIncorrect1:= 15ms ; 缺少时间标记T#
timIncorrect2 := t#4ms13d; 时间单位顺序错误
LTIME 常量
语法
<长时间关键字> # <高分辨率时间长度>
<长时间关键字> : LTIME | ltime
<高分辨率时间长度> : <时间长度> ( <微妙数>us )? ( <纳秒数>ns )? // ( ...)? 可选的
你可以对LTIME常量使用与TIME常量相同的单位。此外,你可以指定微秒和纳秒,因为指定的时间是以更高的时间分辨率计算的。LTIME字面量在内部被视为数据类型LWORD,因此值以纳秒为单位解析。
附加时间单位
US | us: 微妙 NS | ns: 纳秒 ST分配的正确用法示例:
PROGRAM PLC_PRG
VAR
ltimLength := LTIME#1000d15h23m12s34ms2us44ns;
ltimLength1 := LTIME#3445343m3424732874823ns;
END_VAR
时长采用有符号运算。例如,LTIME#-1s < LTIME#1s 为 TRUE,LTIME#-1h / UINT#3600 得 -1000000000,DINT_TO_LTIME(-5) 得 -5。时长乘以实数时先进行浮点计算,再向零截断为整数时长;例如 t * REAL#2.5 按 2.5 倍计算。