版权声明:本文为IND4汽车人版权所有,未经网站官方许可严禁转载
昨天被人问起CCP的机制,讲的过程中灵机一动打了个比方,事后回想了一下这个比方还算贴切,于是整理记录下来。
CCP是“CAN Calibration Protocal”的缩写,是基于CAN实现的一种最为基本的标定协议,应用非常广泛。
因为是建筑在CAN之上的一个上层协议,所以只能在CAN数据区的8个Byte里做文章。
基本类比关系:
控制器(从设备)<->工厂
上位机标定软件如INCA等(主设备)<->客户
CCP数据帧<->车辆
命令及响应帧:公务车
DAQ数据帧:货车
CAN总线<->公路
DAQ数据<->货物
CCP帧的8个Byte中,第一个Byte被用作CCP命令的标识符,类似于车辆的车牌,车牌号的范围在0-255之间。也就是说工厂(控制器)的CCP车队最多只能有256辆车。CAN帧数据域剩余7个Byte相当于每辆车都有7个Byte的容量。
接下来,256辆车中,第255号和254号被用作工厂公务车,专门用来传递各种各样的商务信息(没有邮箱可用,只能靠人开车来回送信):
255号车:每次客户(上位机)派一辆车(指令帧CRO)送到工厂一条指令,工厂(控制器)处理一下,然后派255号车去反馈给客户,例如,建立联系,下订单,了解生产能力,生产节拍等。根据需要,捎上必要的数据(7个Byte的容量)。CCP的11条基本命令和17条可选指令数据都靠这辆车来处理。
254号车:每当工厂发现出现自身有特殊情况了,比如生产忙不过来了,库存不够了,派这辆车出去送信给客户(上位机)
DAQ过程:
DAQ是Data Acquisation的缩写,意指从设备按照主设备指定的方式,以固定节拍向主设备发送数据,即标定中的观测变量。
以前刚接触INCA,配试验环境经常晕在里面,观测信号有时没加几个就满了,有时加了好多也不满,有时候这个速率的满了换个速率还能加,有时候怎么换都加不进去了,都是些什么鬼。
言规正传,DAQ第一步,客户(上位机)派他的车来下订单,告诉工厂我需要货物A、B、C、D、E ... ...,然后货物A和B是每天要发货一次,货物C和D是每2天发货一次、货物E每个周发货一次就够了。工厂接到后,派255号车去跟上位机反馈,没问题,保证搞定。
接下来,如上所述,除了255和254两辆车以外,还有0-253号共254辆车,这些车都是运货(数据)的卡车,同样装7个Byte的数据。工厂就要开始安排生产和送货了。254辆车不需要全用满,只需要其中几辆车就够用了,例如从车库里提出16辆车来干活,分成几个班次(DAQList)的车队,第一班次第天一趟,第二班次每二天一趟,第三班次每周一趟,... ...
接下来,就是按部就班,每次到点了,工厂(控制器)就到各个车间去收集所需的货物(数据),然后装到相应班次的车上,发货出去。客户(上位机)接到货物,卸货,拆包然后在电脑上的界面中显示数值。
基本过程就是这样。
与实际情况有点不同的是,在CCP DAQ过程中,客户(上位机)比较辛苦,不仅要下订单,而且还要帮工厂规划生产和运输方案。上述车队的班次排布(DAQList),以及货物(数据)如何优化装载,实际上都是上位机规定好了以后再告诉工厂(控制器)的,工厂只需要负责忠实执行就行了。这就是CCP模块配置中所谓的ODT(Object Deor Table),就是上位机向工厂下的订单。只不过事无巨细规定的比较详细,连货物在第几车间第几区第几个货架上,应该摆在哪辆车上的哪个位置都写清楚了。
更详细一点解释。数据是分大小的,一般情况下,一个single类型的数据占4个Bytes,uint16类型占2Bytes,uint8和boolean类型占1Byte。如前所述,因为每辆货车只能装7个Bytes,因此如何充分利用车上的空间,就是要尽量塞满同一班次里的每辆车。假设要观测的量全部是single类型的(4bytes),那每辆车就只能装1个single类型的货物就占掉4bytes,剩3个bytes空在那里没用,因为没有小体积的货物来装,所以这种情况下可观测的数据量就显得非常少。上述填塞的过程是靠标定软件来优化的。但这个班次的车队塞不下了,换个班次可能就还有地方塞,所以换个采集速率可能就OK了。
另一方面,从工厂(控制器)本身来说,资源是有限的。如果真把254辆车全部用满,工厂可能根本就处理不过来这么多货物(计算资源),也没地方来摆布这么多货物(RAM资源),而且工厂对外的路就那么宽(CAN总线),有可能其它车也要跑,这个资源也有可能不够(CAN负载率)。
所以,碰到做标定时观测量不够的情况,可以考虑把ODT个数配置的多一些。每多加一个ODT就意味着多加一辆货车,ODT里详细定义了,应该到工厂里的什么地址(控制器内存)去取什么样的货物(数据),摆放在货车的哪个位置。但ODT加的太多,有可能导致控制器的CPU负载率过高,RAM不够用等问题,尤其是当控制程序本身就很大的情况下,可能会跟CCP在控制器资源上打架。另外,实际上一个ODT表本身占的大小比他所指定的货物(数据)还大。
最后,CCP的这些配置最终会体现在ASAP2(A2L)接口文件中。在基于模型自动代码生成的开发方式下,配置信息(工厂的基本信息,如地址,生产能力,生产班次等)在编译过程中都会生成到A2L文件中。上位机软件根据A2L文件的信息,就知道如何与特定控制器打交道了。
80%
1
步