毫秒和秒的换算 六个小时和600分钟哪个时间长

2024-11-2801:31:12综合资讯0

在自动化控制系统中,PLC(可编程逻辑控制器)常常需要处理与时间相关的数据类型,比如TIME、TIME_OF_DAY、DAY、DAY_AND_TIME等格式。很多工程师在使用这些时间类型时,往往只会进行简单的赋值操作,但对其背后的存储机制并不了解。这导致在数据转换或设备间传递时间信息时,往往遇到困难。最近,我在工作中就遇到了这个问题:需要通过倍福PLC将日期数据(格式为DAY_AND_TIME)传递给西门子PLC,而两者之间只能通过字节(byte)进行通信,初时让我一度无从下手。接下来,我将详细分享我的解决思路和过程。

设备间的通信

在我们使用倍福PLC与西门子的Profibus模块进行通信时,配置选项中只有BYTE类型可供选择。为了让数据正确传输,我选择了一个64字节的输入/输出接口,只能通过BYTE格式传输数据,然后将其转换为所需的日期时间数据格式。

在这个项目中,我们需要传输四种类型的时间和日期数据,分别是TIME、TIME_OF_DAY、DAY、DAY_AND_TIME。接下来,我将逐一分析这些数据类型。

TIME数据类型

TIME类型表示时间数据,它的最小单位为1毫秒。其格式为:

T#xxdxxhxxmxxsxxms

其中,T表示时间常量的起始标记,#表示后面的数字是立即数,d表示天数,h表示小时,m表示分钟,s表示秒,ms表示毫秒。

例如,T#1d2h3m4s500ms表示1天2小时3分钟4秒500毫秒。

我编写了一个模拟程序,将时间数据存储到DWORD(双字)变量中,以查看每个字节如何显示。在程序中,由于TIME类型不能直接赋值给DWORD,因此需要使用指令TIME_TO_DWORD进行转换。

在程序运行时,我为tTime变量赋值1分钟,最终得到DWORD结构体dwTime存储的32位16进制数为0000EA60。这个数转换为十进制是60000,恰好等于1分钟(即60000毫秒)。dwTime存储的是TIME类型的最小单位——毫秒数。然后,我将这个32位16进制数0000EA60传送给西门子PLC,西门子会将其转换为对应的时间值。

TIME_OF_DAY数据类型

TIME_OF_DAY类型表示的是一天中的时间,其最小单位也是1毫秒。其格式为:

TOD#HH:mm:ss

其中,TOD表示时间常量的起始标记,#表示后面是立即数,HH表示小时,mm表示分钟,ss表示秒。

例如,TOD#13:30:30表示130分30秒。

在模拟程序中,同样使用指令TOD_TO_DWORD将TIME_OF_DAY数据转换为DWORD格式。我为todTime变量赋值1:00,最终得到的dwTime存储的32位16进制数为0036EE80。转换为十进制,得到的数值是3600000,表示从12:00 AM起经过了1小时(即3600000毫秒)。将此数据传输给西门子PLC,西门子会自动进行时间的转换。

DATE数据类型

DATE类型表示日期,其最小单位为秒,起始时间为1970年1月1日。其格式为:

DATE#YY-MM-DD

例如,DATE#1970-01-02表示1970年1月2日。

同样,我通过编写程序,使用DATE_TO_DWORD指令将DATE类型转换为DWORD。为dTime变量赋值为1970年1月2日,dwTime存储的32位16进制数为00015180,转换为十进制是86400,表示从1970年1月1日到1970年1月2日的秒数(86400秒)。这个数字可以通过西门子PLC进行日期转换。

DATE_AND_TIME数据类型

DATE_AND_TIME类型是日期和时间的组合,最小单位为秒,起始时间为1970年1月1日12:00 AM。其格式为:

DT#YY-MM-DD-HH:mm:ss

例如,DT#1970-01-02-13:30:30表示1970年1月2日130分30秒。

在程序中,我为datTime赋值为1970年1月2日00:01,经过DT_TO_DWORD指令转换后,dwTime的32位16进制数为000151BC,转换为十进制是86460,表示从起始时间1970年1月1日12:00 AM到1970年1月2日00:01的秒数(86460秒)。同样,这个值可以通过西门子PLC进行转换。

注意事项

尽管倍福PLC和西门子的时间数据结构有所不同,但它们在原理上是相通的。两者都将不同的数据类型分解为不同字节进行存储。西门子PLC的时间格式和Codesys平台的格式有所差异,但它们的转换原理是一致的。我们只需注意各自的数据存储方式,就能顺利进行数据交换。

通过上述分析和实验,我们成功解决了倍福PLC与西门子PLC之间关于时间和日期数据传输的问题。虽然不同设备的数据结构可能有所不同,但基本原理相同。掌握了这些时间数据类型的存储机制,设备间的时间数据传输将变得更加简便。如果在使用过程中遇到类似问题,可以参考上述方法进行调试和解决。欢迎大家在评论区分享您的经验与问题,我们一起探讨更多技术细节。