快捷搜索: 王者荣耀 脱发

标定协议之CCP协议的DAQ模式介绍

在前面《》一文中我们介绍了标定数据传输方式有Polling和DAQ两种模式,Polling模式是最基本的一问一答方式,大家都比较容易理解,在此不再赘述,本文将详细介绍一下DAQ模式如何实现。

DAQ模式工作原理介绍

在介绍DAQ模式工作原理之前,首先介绍生活中存在一个例子:A是开饭店的,B是送菜的。饭店刚开始的时候A也不知道什么菜可能比较受欢迎,每到需要什么蔬菜了就一个电话打给B说赶紧给我送点菜来。B送了一段时间发现,几乎每天送菜的时间点和送菜的内容都差不多,于是和A两个人一商量,就定下一个规矩,能放时间长的菜每两天送一次,新鲜的菜每天送一次,每次送菜的时间也固定下来,就不用天天打电话送这送那了,如果临时急需的再打电话沟通。讲到这里,大家估计都有点明白了,CCP协议是通过CAN通讯实现的,如果所有数据都是一问一答的传输,这就要浪费很多传输带宽,影响传输的效率。因此CCP协议就定义了DAQ传输模式,将需要传输的数据按照传输速率分组,每一组称之为一个DAQ List。每一个DAQ List里面定义需要传输的数据内容,存储传输数据内容的容器称之为ODT,专门描述每一个数据的存储地址、数据长度等相关信息,一个ODT对应一条DAQ-DTO报文。

根据CCP协议中DAQ的DTO数据报文格式定义,一个DTO最多可以传输7个字节的数据,因此每一个ODT最多也只能定义7个字节长度的数据信息。DAQ-DTO报文格式中第一个字节是PID,根据CCP协议定义,PID最大为0xFD,因此一个DAQ List中最多可以定义254个ODT。标定工具和目标控制器根据相关指令将DAQ配置完后,目标控制器接收到开始传输指令就会按照DAQ-DTO报文格式自动上传数据。同样如果特殊的数据上传频率要求,可以通过Polling模式自定义传输周期。

DAQ数据传输配置过程

DAQ模式数据传输配置主要通过GET_DAQ_SIZE、SET_DAQ_PTR、WRITE_DAQ和START_STOP四条CRO指令来实现,下图是具体配置过程:

GET_DAQ_SIZE

该CRO指令是标定工具获取目标控制器中能够支持的DAQ的ODT数量,如果目标控制器不支持DAQ模式就会返回0。

SET_DAQ_PTR

该CRO指令用来写入DAQ列表数据的入口地址指针

WRITE_DAQ

该CRO指令将需要传输的数据地址、长度信息写入DAQ列表中,SET_DAQ_PTR命令所定义的地址即为这条命令所写入的地址

START_STOP

该CRO指令用于启动和停止DAQ传输,DAQ配置完成后标定工具发送该指令启动DAQ数据传输。

DAQ数据传输大小配置

前面介绍了标定工具通过相应的指令配置DAQ List,在CCP标定协议栈软件开发时,目标控制器中会根据需要传输数据的速率、数据量大小定义好相应的DAQ List和每一个DAQ List中的ODT数量,标定工具在配置的时候需要与目标控制器中的配置信息保持一致。在配置DAQ List的时候还需要注意CCP标定协议所使用的CAN总线波特率,不能将相关配置得过大,否则就会使得CAN总线负载率过高,从而导致数据更新不及时,甚至是数据传输丢失等后果。

经验分享 程序员 微信小程序 职场和发展