date类型_S7-300中有太多与“时间”有关的数据类型,它们之间关系如何?

一、有关时间的数据类型

1、S5TIME。长度为16位,包括时基和时间常数两部分,其数据格式如图1.1所示。详细说明可参见《S7-300/400进阶笔记8:深入浅出的认识一下S7的定时器》 。

04f159512aaaa60fa84062c0d410ba81.png

图1.1 S5TIME数据结构

2、IEC时间(TIME)。长度为32位,时基为固定值1ms,数据类型为双整数,所表示的时间值为整数值乘以时基,其格式为:

T#aaD_bbH_ccM_dds_eeeMS

详见《S7-300/400进阶笔记12:STEP7不止有S5定时器,带你认识IEC定时器》 。

3、IEC日期(DATE)。长度为16位,数据类型为整数,以1日为单位,日期从1900年1月1日开始,其对应为整数0,日期每增加一天,对应的整数值加1。其格式为:

D#aY-bM-cD

由于其为长度16位的整数,因此,其取值范围为:D#1900-1-1 – D#2163-12-31。

4、日计时(TIME_OF_DAY)。长度为32位,用于记录一天中的24小时,数据类型为双整数,以1ms为时基。其格式为:

TOD#aaH:bbM:ccS:dddMS

取值范围为:TOD#0:0:0.000 – TOD#23:59:59.999。

5、DATE_AND_TIME。复杂数据类型之一,由8个字节组成。详见《S7-300/400进阶笔记13:深入了解DATE_AND_TIME以及系统时钟》 。


二、各种类型"时间"之间的相互转换

在标准库的"IEC Function Blocks"目录下,收录了一些功能FC,用来实现以上5种"时间"数据类型之间的相互转换,以实现特定应用。

1、FC1(AD_DT_TM)

该功能为一个DT(即DATE_AND_TIME)加上一段时间(TIME),从而产生一个新的DT时间。

2d59a1249097a82fe29dbcb111d2a1ff.png

图2.1 FC1(AD_DT_TM)

需要注意的是:

1) 输入端"T"的值必须在其取值范围内,即DT#1990-01-01-00:00:00.000到DT#2089-12-31-23:59:59.999之间。

2) 输入"T"加上时间偏移量"D"后的时间值可能会超出有效值范围内,但功能FC1不会对运算结果校验。运算结果溢出后,状态字的二进制结果(BR)会被设置为"0"。

3) DATE_AND_TIME为复杂数据类型,不能采用立即寻址,需在DB块中定义好之后,通过符号地址来访问。

2、FC3(D_TOD_DT)

该功能将数据格式DATE和TIME_OF_DAY组合在一起,形成DATE_AND_TIME类型的数据。

82f4c1bf2d318d80a1cde8e3b5b0b524.png

图2.2 FC3(D_TOD_DT)

3、FC6(DT_DATE)

该功能从DATE_AND_TIME变量中提取日期,即DATE格式。

890da74238b4a87db67caafbb96f46a1.png

图2.3 FC6(DT_DATE)

4、FC7(DT_DAY)从DATE_AND_TIME变量中提取"周",用法简单,图解略去。

5、FC8(DT_TOD)从DATE_AND_TIME变量中提取"时间",即TIME_OF_DAY,用法简单,图解落去。

6、FC33(S5TI_TIM)将S5TIME格式的时间转换为TIME格式,用法简单,图解略去。

7、FC40(TIM_S5TI)将TIME格式的时间转换为S5TIME格式,用法简单,图解略去。


标准库中,共提供了上述若干个功能,来实现不同"时间"格式之间的相互转换,方便不同的应用场合,汇总如下:

2e64bac94c0d13cf100b62db0b90cfe3.png

图3 有关“时间转换”的功能汇总

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值