Autosar CAN开发10(Autosar的CanNM报文开发Configurator------非PNC)

        前面写了一些关于网管报文的作用和状态机,在此基础上就容易理解网管报文具体如何开发了。

        一、接收网管报文的ID范围

        在总线上,网管报文的有效ID是有范围的(比如0x550-0x5FF),挂在总线上的ECU只有接收到ID在此范围内的网管报文才进行响应(唤醒或保持唤醒)。

        在Vector工具链的Configurator配置工具中,网管报文接收范围的配置是在CANIF模块中配置的,如下图所示,网管报文的接收范围为0x580-0x5FF: 

        二、网管报文重要、关键的时间参数

        Repeat Message Timer:状态机停留在Repeat Message状态的时间

        NM-Timeout Timer:若超过该时间没接收到网管报文,网管状态就从Ready Sleep状态跳转到Prepear Bus Sleep状态

        Wait BusSleep Timer: 若超过该时间没检测到唤醒源,网管状态就从Prepear Bus Sleep状态跳转到Bus Sleep状态

        如下图所示:

        另外:

                NM Message Cycle Time:网管报文发送的周期时间

                Immediate NM Cycle Time: 当被本地唤醒后,网管报文快发的周期时间

                Immediate NM transmissions: 当被本地唤醒后,网管报文快发的次数

       配置如下图所示:

         三、其它配置项

        1、网管报文的Source Node Identifier即Node ID(Nid)和Control Bit Vector(Cbv)

         网管报文的Byte0和Byte1分别为Nid和Cbv,至于Byte0是Nid还是Cbv可以根据用户自己定义。目前我所接触到的项目,Byte0都是Nid,Byte1都是Cbv,如下图所示:

        Nid:Source Node Identifier。顾名思义,ECU节点ID。如车企定义有效网管报文的ID范围为0x550-0x5FF,则发出0x550这帧网管的ECU的NodeID为0,发出0x551的NodeID为1,以此类推发出0x5FF的ECU的NodeID为175(或十六进制:0xAF)。

                根据Autosar标准,NoteID在NM报文中占一整个字节(8个Bit)。

         NoteID的在Configurator中的配置如下:

        Cbv:Control Bit Vector。Cbv也占据一整个字节(8个Bit),具体每一个Bit的定义如下(这是Autosar标准,不能自己改变的)。

        在这个Byte中,“Reserve”即保留,Autosar官方把这些bit作为保留位以后使用。

        Bit0:该位为RepeatMessage请求位。当ECU发出的网管报文该位置1时,发出的ECU自身的网管状态要进入RepeatMessage状态。其它ECU接收到网管报文该位置1时也要进如RepeatMessage状态。

        Bit4:主动唤醒标志位。即当ECU为主动唤醒时该位置1。

        Bit6:当网管报文有PNC功能才会用到。

官方定义如下:

        3、网管报文的Offset(CanNmMsgCycleOffset)

        网管报文Offset的意义:当CAN总线上的所有ECU都处于休眠状态,此时若某个ECU主动唤醒并向总线发出网管报文,总线上的其它所有ECU接收到网管报文后也将被唤醒进入RepeatMessage状态,向外发出网管报文,若每个ECU同时向外发出网管报文,则会造成总线爆发,因此给每个ECU配置不同的网管Offset,就避免了这样的情况。

        官方解释如下:

        另外,CanNmMsgCycleOffset只会在网管报文唤醒ECU时起作用。其实很容易理解,若是主动唤醒是没必要用这个Offset的。

        官方解释如下:

        Configurator配置如下:

         四、网管报文的User Data

        如上图所示,网管报文的UserData为Byte2-Byte7,用户可以在Byte2-Byte7中填充数据,填充好后通过网管报文发出来,这些数据通常在出现问题后可以很好帮助解决问题。一些车企要求这些UserData中实时更新唤醒源、保持唤醒源等等。

        配置UserData

        一般情况下,UserData都是在网管状态机跳转的时候代码调用StateChangeNotification函数,在函数内更新网管报文的UserData。开启StateChangeNotification函数调用的配置方法如下图。 

        然后在函数内调用如下接口,就能够配置网管报文的UserData了


        最近工作比较忙,加班有点多,累。。。


 返回目录:

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

  • 15
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值