基于CANape开发的XCP测量

最近整理一下XCP,XCP开发过程中有的一些心得。感觉整个开发过程中,帮助最大的就是CANape这个工具,其次是Vector官网上的一些免费的协议和驱动例程(也就是CSDN经常链接的一些付费才能下载的驱动)。如果你对CAN的系统服务(基于AUTOSAR的)相当了解,那开发XCP是相当容易的。XCP下载的协议是ASAM协会发布的XCP 1.1版本,驱动支持的是标准帧,基本可以实现XCP常用的基本的功能,可能基于不同的芯片需要简单做一些裁剪。

上面上一个简单的图,了解一些简单的术语。我们的XCP是目前基于标准CAN的主从的会话结构,从上面图我们可以看到,主要的几个方式,一是CMD用于主机向从机发送命令,RES是从机回复命令,采取一问一答的形式,而后面的DTO是我们重点要说的测量,而我们主要意义上说的测量就是把从机的数据发送至主机电脑CANape,在测量过程中我们传输数据用到的就是上图所示的XCP message format数据包,其中头和尾按照发送的协议的不同而不同。

然后没包数据都会按照ID、时间戳(数据包的首帧选择发送,可以不填充时间戳)、和数据部分,XCP1.1协议就是按照这样的最小单位将数据包一帧一帧地更新到主机。同时如果选择时间戳,主机CANape还会主动地发出获取时间戳的会话,大概1s会询问一次,以确保测量值时时地更新。

关于测量数据如何添加,XCP及CANape工具和协议支持两种,一种是预定义在ECU中的DAQ数据包,一种是由ECU预定于内存,然后由上位机CANape在会话中传送具体的变量地址。显然,第一种只适用于标定量固定且不变的观测数据。第二种方法适用于大多数测量场景,其中数据测量量的地址信息来源于A2L文件,CANape中获取数据地址信息的数据库就是A2L文件。

 

A2L文件的制作来源于代码生成中编译的.ELF或其他生成文件,A2L文件中还包含CANape工程的配置信息,可以后边单独陈列。A2L有了之后只需要将相应的变量添加到测量周期中就可以了,在这里信号的测量周期包括周期名称、通道和优先级、及其测量类型都有ECU代码描述,通过和上位机的会话交互,将这些参数传递到CANape界面。然后你上面的测量变量就可以添加到如下事件中了。

 然后点开始测量,数据就会按照你想到的格式绘制在CANape界面,数据的传输速率主要由传输介质CAN决定,以及相关的首帧发送然后补发及相关服务都基于CAN的服务演变而来,不同的是XCP在处理测量数据的时候会预留一个队列的数据缓存包,来保证每个数据都可以按照周期及优先级发送。

如上图所示就是XCP常用的绘制3D数据包。

以上截图来自XCP免费标准协议和Vector的使用例程,其中一些标准的会话以具体协议支持的会话为准,主要了解大概思路,一些标准术语解释参考协议,开发仍旧需要购买正版软件。 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值