DAQ测量模式报文分析
什么是DAQ测量:
DAQ 是标定协议中一种高效的数据上传模式。它只需要进行一次DAQ配置后就可以脱离主节点自主的按照周期向主设备上传数据。
直接举例说明DAQ是怎么分配的:
如果我们需从ECU中按照3个不同的周期上传数据就需要分配3个DAQ列表分别是DAQ List#1=10ms,DAQ List#2=50ms,DAQ List#3=100ms,DAQ List#0中有n个ODT列表,这些列表里存放的是具体要上传的变量的信息,里面包含变量的地址和长度,每个ODT可以最多存放7个单字节变量的信息,意思就是如果是Word类型的变量占两个字节的话一个ODT中只能存放3个变量的信息,为了保持数据的完整性,当然剩余一个字节的空间要看标定工具的处理方法,有的工具就让它空着,有的工具会进行分割或寻找一个单字节的变量进行组合,前提是同周期测量变量组中有这么一个变量。
每个ODT对应的就是一条ECU返回的DAQ 数据信息了,它会转成DTO的形式进行发送,每个ODT都有一个唯一的绝对编号来对应一个DTO,通过PID号标识。如果DAQ List#1有2个ODT,那这三个ODT的绝对编号为继DAQ list #0 的三个ODT 编号的PID=4,PID=5。
DAQ通讯前,主节点需要对DAQ列表及ODT列表进行配置具体通过这几个指令完成:FREE_DAQ(0xD6)、ALLOC_DAQ(0xD5)、ALLOC_ODT(0xD4)和ALLOC_ODT_ENTRY(0xD3)。
FREE_DAQ(0xD6):清除所有的DAQ列表,释放所有动态分配的DAQ列表。
ALLOC_DAQ(0xD5):获取ECU内要实现的DAQ列表数目,根据数据上传的周期决定。
ALLOC_ODT(0xD4):将ODT分配到DAQ列表中。
ALLOC_ODT_ENTRY(0xD3):该命令分配若干ODT到ODT表项,将它们分配给具体的DAQ列表中指定的ODT表项。
SET_DAQ_PTR(0xE2:):设置DAQ指针为后续读写DAQ作准备。
WRITE_DA