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博客

  • 12
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Autosar-CAN NM是一种用于网络管理的通信协议,旨在实现CAN总线系统的高效管理和控制。Autosar-CAN NM支持多个节点共享相同的CAN总线,通过提供网络管理功能来确保节点之间的通信可靠性和稳定性。 Autosar-CAN NM的主要功能包括节点的电源管理、通信总线状态的监控和管理、节点之间的网络通信和报文的传输。首先,节点的电源管理功能包括监测节点的供电状态和能力,并根据需要进行电源管理,以确保节点之间的正常通信。其次,通过监控和管理CAN总线的状态,Autosar-CAN NM可以检测并处理潜在的通信故障,如总线冲突和错误帧。此外,还可以对总线负载进行监控和管理,以避免总线过载和通信延迟。 在节点之间的网络通信方面,Autosar-CAN NM通过提供网络管理帧(用于节点之间的通信)和网络管理报文(用于各个节点之间传输数据)来实现。网络管理帧用于在节点之间传递通信状态和配置信息,并支持节点之间的网络拓扑管理。网络管理报文是主要用于节点之间的数据传输和通信,通过CAN总线进行传输。这样可以确保节点之间的数据通信具有高可靠性和实时性。 总的来说,Autosar-CAN NM提供了一种有效的方法来管理和控制CAN总线系统中节点之间的通信。它通过电源管理、总线监控和状态管理、网络通信和报文传输等功能,实现了节点之间的可靠通信。这不仅提高了CAN总线系统的性能和稳定性,还为制造商和开发人员提供了一种有效的方法来设计和管理CAN网络。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值