Delta(台达) HMI 历史缓冲区记录文件格式分析

转载请注明作者与出处,谢谢。

 

最近有个项目使用到台达的HMI,由于需要取出历史缓冲区里面的数据,并用自行开发的上位机软件读取显示数据,因此需要知道它的数据组织格式。一番网络搜索无果之后,遂决定自行研究。功夫不负有心人,经过几天研究,得成果若干,分享之。

    台达人机历史缓冲区数据主要保存在HISTORY.DAT文件中,当选择掉电保存时候,该文件会出现在U盘或者是SD卡中。如下所示:

 下面以例子讲解该文件组成:

在人机编辑软件中新建四组缓冲区,保存时间,数据单位为1笔,取样点数分别为10,15,20,25

 

设置好之后,程序下载进人机之后,即会生成HISTORY.DAT文件。

注意该文件生成的规律为:一次性生成所需文件大小并填充其所有字节内容为0

这里该文件所保存的字节大小为: FILE_HEADER +缓冲区1 + 缓冲区2 +缓冲区3+缓冲区4

FILE_HEADER长度固定为2字节。

缓冲区长度的计算公式为   8字节  +  取样点数*(时间数据(6字节) + 数据资料长度)

 这里的8字节内容用于记录该缓冲区中总有效数据笔数

根据上面公式计算我们上面例子中的缓冲区长度如下:

缓冲区 1 8 + 10 *6+2 = 88字节

缓冲区 2 8 + 15 *6+2 = 128字节

缓冲区 3 8 + 20 *6+2 = 168字节

缓冲区 4 8 + 25 *6+2 = 208字节

 

HISTORY.DAT文件的总长度为FILE_HEADER +缓冲区1 + 缓冲区2 +缓冲区3 + 缓冲区4 = 2 + 88 + 128 + 168 + 208 = 594字节。

缓冲区在该文件中的组织形式为:

FILE_HEADER + 缓冲区1所有时间数据+缓冲区1所有数据+缓冲区2所有时间数据+缓冲区2所有数据

+ 缓冲区3所有时间数据+缓冲区3所有数据+缓冲区4所有时间数据+缓冲区4所有数据

即其在保存数据时候不是一笔时间数据  + 一笔数据的方式进行保存,而是把所有的时间数据放在一起,所有的数据放在一起,且数据紧紧跟随在时间数据后面

下面我们采用十六进制形式打开HISTORY.DAT文件即可以直观的看到我们上面的分析过程。

上图中的数据即HISTORY.DAT文件的实际内容,注意其总长度为594,与我们上面的分析一致。

图中用不同颜色圈出来的数据,即为我们设定的取样点数。

注意该文件初始建立的时候,其大小便为594字节,且除了文件头之外,所有的内容均为 0x00人机每保存一笔数据,则会在相应的地方将数据写入进去。

假设我们要在缓冲区1中保存第X笔数据,则其在保存时候,偏移量的计算公式如下:

时间数据的偏移计算公式:文件头(2字节) + 8(缓冲区数据记录长度) + 6*X

数据偏移计算公式:文件头(2字节) + 8(缓冲区数据记录长度) + 6*10(缓冲区1取样点数)+ 数据单位长度 * X

后续缓冲区计算公式同上,不同的是其基址偏移不仅仅是文件头,还需要加上缓冲区1的总长度。

知道该文件组织格式之后就可以很容易的定位任意一笔时间数据与数据所在的位置了。

剩下最后一个问题是时间格式如何解析,台达人机用6个字节保存年月日时分秒,不同于常见的时间格式。经过不断试验分析,

最后分析出其时间格式组织如下:

下面是用于保存时间数据的6个字节

byte1   byte2   byte3  byte4  byte 5   byte6

则年月日时分秒的计算公式为

second = byte1 % 64

minute = byte1 / 64 + (byte2 % 16) * 4

hour   = (byte3 % 4) * 16 + byte2 / 16

day    = byte3 / 4

month  = byte4

year   = byte6 * 256 + byte5

 

通过上面这个公式即可以得到数据保存时候的时间。

经过验证无误,下图是我项目中上位机读取历史缓冲区数据并显示曲线:

pdf 文档下载

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
台达触摸屏HMI中止传输数据可能是由多种原因所致。首先,可能是由于通信线路出现故障。这可能包括通信线路断开、线路接触不良、线路短路等问题,导致无法正常传输数据。可以检查线路连接是否牢固,排除线路故障问题。 其次,可能是由于设备或驱动程序故障引起的。设备故障可能包括主板损坏、存储器问题、电源供应不稳定等。此外,驱动程序的问题也可能导致传输数据的中止,可能需要重新安装或升级驱动程序。 另外,可能是软件配置或设置问题。例如,网络设置不正确、通信协议不匹配、数据格式错误等都可能导致数据传输中止。可以检查网络设置和通信协议是否正确配置,确保数据格式与设备要求一致。 此外,还有可能是传输数据量过大或传输速度过快导致中断。如果传输的数据量超过设备的处理能力或数据传输速度太快,可能导致设备无法处理或接收数据,从而中止传输。可以尝试减少传输数据量或降低传输速度,以确保数据能够正常传输。 综上所述,台达触摸屏HMI中止传输数据可能是由于通信线路故障、设备或驱动程序故障、软件配置问题或传输数据量过大等多种原因造成的。可以通过检查线路连接、排除设备故障、修复驱动程序问题、检查软件配置和调整数据传输参数等方法来解决该问题。如果问题无法解决,建议联系台达技术支持寻求进一步的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值