Autosar CAN开发09(使用Vector工具(Configurator、Developer)变更报文(新增报文、删除报文、新增信号删除信号------应用报文))

首先,先简单描述一下使用Vector工具包变更CAN应用报文、信号的整个流程(网管报文、诊断报文是另外的配置方法)。

        1、在DBC里面添加CAN报文信号(填好报文、信号的各种参数,报文属性等)

        2、使用Configurator软件打开代码配置工程,把DBC导入至Configurator中,配置好Can、CanIf、PDUR、COM等模块

        3、使用Developer软件打开代码配置工程(与Configurator软件打开的是同一份代码配置工程,),因为第2步已经操作完成,因此打开Developer软件后,可以看到对应在DBC里面新增的报文信号了,接下来就是Mapping报文信号,也就是将报文信号映射到应用层架构的各个模块里面,供应用层使用。

        具体开发流程操作如下:

另外:本篇文章讲的是Vector工具包信号开发的配置流程,对于具体的各个参数配置项不做深入讲解(这些也讲的话,涉及太多太多了)。       

步骤1:在DBC中进行报文、信号变更

        DBC的操作如果不懂看我前面的一篇文章就可以了。

Autosar BSW层CAN通讯开发------01(DBC)_嵌软小白呗的博客-CSDN博客_autosar bsw开发icon-default.png?t=N7T8https://blog.csdn.net/qq_41848098/article/details/122029487       在DBC中添加报文时,要注意报文的属性(Attribute),在Attribute界面配置好对应报文的属性,不同的报文属性不一样。应用报文、网管报文、诊断报文,都有对应属性,这样在把DBC导入Configurator软件时软件才能识别出对应的报文。

9b2acd76ecd14a96816dda7d3b1ccedd.png

        另外需要注意的是,你需要变更的报文、信号需要添加到DBC中的一个节点里面去,导入DBC至Configurator之后,需要你选择对应的节点导入,并且只能选择一个节点。也就是说,代码里面的所有发送和接收报文都需要添加到DBC的一个节点里面。如下图OBC节点:

12f5d537e4964564be053559bbb7f510.png

        另外提一嘴。

        操作过DBC的人都知道,在DBC里面添加报文和信号非常浪费实际,添加一两个报文或者信号还好。但在实际的工作过程中,需要添加的信号量非常大,操作起来非常费时间。所以一般企业都会有工具通过Excel表等方式直接转成DBC。(比如我们公司,我进去的时候居然没有这种工具,弄了几次我受不了了,我TM当场把Python给学了,弄了个Excel转DBC工具)

步骤2:导入DBC至Configurator

        打开Configurator之后,点击InputFile,即可导入DBC

        

        导入DBC后,在ECU Instance处选择DBC里面的节点,这也就是上面所说的,要在一个节点里面变更报文信号,其它节点的报文信号,Configurator工程是不理会的。0111a25f05324f5a91e94c8a1b1b2164.png

        添加DBC后,需要Update工程,如下图:

        ab94bd4f95e24b5b97fdb0bfdb68dcae.png

       ( 注意:若是DBC的报文、信号有变更,一定要点击Complete Update,否则在Developer软件进行报文信号映射(Mapping)的时候,同一个信号组的信号会以数组的形式存在。正常情况,同一个信号组的信号我们都是希望它以结构体的形式供应用层使用。关于这一点,如果看不懂的话可以不理会,上手开发之后,在开发过程中慢慢就理解了)

步骤3:配置Configurator中所变更报文信号的各个模块的相关属性

        配置之前,先看下Container这个东西,(所谓Container,就是下图所示的一个个像容器的东西,配置的东西都在这些容器里面)

        

045cd06cf3264e83909856f282397099.png

1、CAN模块:

CAN控制器(CanController):        

当填加一个新的DBC之后,Configurator中会在CAN模块生成新的一路CAN控制器,因为一个节点必须要一路CAN通道。如下图所示,这个工程就有2路CAN通道 ,工程里面共添加了2个DBC

    122d27e324474ae9a651e9f7d1d70c48.png

        至于CAN控制器的各个参数配置,涉及的东西都是关于CAN控制器的,内容较多,我另外会用一篇文章去讲解。

CAN邮箱(CanHardwareObject):

        新增个DBC文件后,除了会生成一路CAN控制器,另外还会在CanHardwareObject里面自动生成两个邮箱(一个TX,一个RX),如下图所示:

        cc4e7b5132124b98a56046e5d27c27bb.png

        关于CAN邮箱,类型有Full-can和Basic-can,简单来说:就是配置成Full-can,那么一个邮箱只能存一个ID的报文。配置成Basic-can,那么一个邮箱就能存放多个不同ID的报文。

2、CANIF模块:

       在导入DBC后,CANIF会根据所导入的DBC生成相应的报文Container(容器)。Vector软件会自动将CANIF模块的报文与CAN模块中的CAN控制器和邮箱索引起来(在上面CAN模块中有说,导入DBC会自动在CAN模块生成对应的CAN控制器和邮箱,所以,该DBC中的报文也会自动索引到对应的CAN控制器和邮箱中。当有多个DBC和多路的CAN控制器时,CAN报文自然不会索引到错误的CAN控制和邮箱了)

        CANIF模块的接收报文如图所示:(包含应用报文、NM报文、诊断报文、烧录报文等) 

6a17a75a88f040f78b6a9526bd9e2fd1.png

        CANIF模块的发送报文如图所示:(包含应用报文、NM报文、诊断报文、烧录报文等) 

fc20072bf51744bd90e6a105c9f273a4.png

        在CANIF模块中,可以配置各帧CAN报文的类型,可以配置为CAN格式、CANFD格式,扩展帧格式等(实际上在DBC配好后,这些会根据DBC自动帮你配好)

3、PDUR模块:

        导入DBC后,Pdur模块也会自动生成DBC节点中的报文。这个模块通常配置的项比较少。

dcccda9eaaa84322ba9998b6ef88aae7.png

4、COM模块:

         4cc397f908b94bf19530bc1e5cb6f18b.png

         在该模块可以配置报文的周期、报文发送的偏置时间、事件型报文触发后的发送次数,配置界面如下(通常这些参数也是在DBC里面直接配好了):

28f90bed1f094f97b30b884910177d22.png


当把这上述四个模块配置好后,应用报文的底层配置基本是没什么问题,然后可以生成COM(Communication)代码了,界面如下图所示:

        

571ef4919ed04edcbd49ff0fd03e8897.png

        若所配置的工程没有问题,生成代码应当是全部通过。

451aeba072a04f16a8853dccfac6236a.png


        底层Configurator弄好后,接下来就是使用Developer软件把报文信号Mapping(映射)到应用层中去了。

          Developer中,报文数据Mapping界面如下:

bbbcbc146faa40a4a9f0e81fa40d4f23.png

        Mapping完成后,就是使用模型把各个报文信号连到应用层各个模块中去了,界面如下:

        ac9af99513da48f884469199f447e618.png

        完成Develoer的操作后,若是操作无误,则可在Configurator中生成RTE和OS文件了,界面如下:

        


         使用Vector工具链开发应用报文的整个流程就是这些了。但实际上开发起来的细节是非常多的,对于新手来说不太友好。

        我是通信工程师,因此在这整个开发流程中,我实际上只用开发Configurator部分。因为对于各个报文信号在哪里写、在哪里读是由应用层决定的,因此Developer部分是由应用层同事开发,他们把报文信号Mapping至对应的模块直接使用就可以了。

        事实上,开发流程熟悉后其实不难。主要还是出现问题后如何去查,该怎么查,这就要求对代码和架构比较熟悉了。比如开发完之后,发现被你开发过,工程跑起来连报文都发不出,这可咋整。我刚开发的时候就出现过这样的问题,后面查代码才发现是收发器没有跟CANIF层索引起来,然后再Configurator里面配一下就好了。


 返回目录:

Autosar BSW 开发笔记(目录)-CSDN博客

  • 15
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值