Date 从modbus到日期和时间的十六进制/十进制

Date 从modbus到日期和时间的十六进制/十进制,date,time,modbus,Date,Time,Modbus,我有一个modbus连接到一个通风系统,当出现问题时,它会发出警报。我可以使用modbus接收有关报警的数据。该部分记录有ID、日期和时间的登记簿。所有tre接收包含2字节的数据。ID 00:13(开关转换为十进制错误代码19=过滤器报警) 但是我不知道日期和时间是什么格式。然而,我可以在通风系统处看到这些日期和时间在显示屏上被转换成什么 我收到的日期以字节(十六进制)=43:68(十进制为17256)表示,在显示屏上与“13-11-08”(2013年11月8日)相等,时间以字节(十六进制)=3

我有一个modbus连接到一个通风系统,当出现问题时,它会发出警报。我可以使用modbus接收有关报警的数据。该部分记录有ID、日期和时间的登记簿。所有tre接收包含2字节的数据。ID 00:13(开关转换为十进制错误代码19=过滤器报警)

但是我不知道日期和时间是什么格式。然而,我可以在通风系统处看到这些日期和时间在显示屏上被转换成什么

我收到的日期以字节(十六进制)=43:68(十进制为17256)表示,在显示屏上与“13-11-08”(2013年11月8日)相等,时间以字节(十六进制)=34:71(十进制为13425)表示,在显示屏上与“06:35”相等

我试着与历元“1970和1980”进行比较,并试着与其他时间转换32位整数等进行比较。但我不知道翻译的目的是什么。也许这里有人见过simular,也许能说出这是什么编码

致意
托马斯·尼森

谢谢你,纳诺穆夫,我修好了。我“翻译”出了一个有效的方法:) 它给了我以下08-11-2013 06:35:24,这就是我想要的。谢谢你抽出时间

    Dim strDate As String = "17256"
    Dim year As String = (strDate >> 9) + 1980
    Dim month As String = (strDate And &H1E0) >> 5
    Dim day As String = strDate And &H1F

    Dim strTime As String = "13425"
    Dim hour As String = strTime >> 11
    Dim minute As String = (strTime And &H7E0) >> 5
    Dim secund As String = (strTime And &H1F) * 2

    Dim AlarmDate As String = New DateTime(CInt(year), CInt(month), CInt(day), CInt(hour), CInt(minute), CInt(secund))

您能否提供您试图读取的Modbus寄存器映射的更多信息?我可以想象,日期/时间可能存储在一个以上的16位寄存器中,或者可能有更多关于正确解码日期/时间信息的信息。此寄存器映射是否公开可用?这是发送和接收的内容[R]:[T]1E 04 01 92 00 01 93 B4-总线地址=30[1byte],寄存器=4[1byte],地址=402[2bytes],数量=1[2bytes],CRC[2bytes][R]1E 04 02 43 68 1C总线地址=30,寄存器=4,字节=2,数据字节=43:68,CIF CRI对16位寄存器发出请求(数量=2)然后我得到两个寄存器中日期和时间的字节。17256和13425。这是来自数据表的唯一信息:Alarm.List_1_date-402-Alarm 1 date Alarm.List_1_time-402-Alarm 1 time每隔读取一个寄存器,我就会得到等于0-1(开/关)或0-10000(度/100)、0-100%的十六进制值(%)或ASCII字符来显示显示状态。当您读取这些寄存器时,值是否会发生变化?如果您正在读取时间寄存器,但它不是每分钟都在变化,则说明其他问题。。。