随着车载网络发展,ecu的通讯速率相较以往得到飞速提升。现今多数oem在中高速通讯场景中仍采用canfd进行过渡,但当同时考虑安全和更高带宽时,canfd则无法满足,因此flexray成为部分oem的首要选择。其中控制各ecu的睡眠唤醒依旧利用耳熟能详的nm网络管理实现。
下面跟随小怿一起了解flexray网络管理及相关测试吧。
一、flexray网络管理简介
01 报文格式
flexray网段通信时为了表示各ecu表示自身是否加入网络,特意在nm报文中引入vote投票位,当vote=1时代表加入网络,vote位是否有效取决于flexray-nm状态机。
flexray-nm报文格式及内容如下所示:
其中针对cbv字节的bit信息定义如下:
02 flexray-nm状态机
poc:protocol operation control,协议操作控制,简称poc状态机
pnc:patiral network control,局部网络控制,简称pnc状态机
swc:software component,应用层软件组件,负责实现不同功能
wup:wakeup pattern,flexray唤醒信号,以低高电平呈现
flexray网络管理设计类同于can网络管理设计,不同的是flexray的网络管理为了更清晰的划分局部网络,同一flexray网段下根据ecu功能划分了pnc网关、非pnc网关与不支持pn三种。其中ecu的休眠、唤醒、同步的时机由nm状态机决定;各ecu状态由自身poc状态机控制负责实现;唤醒状态时,各swc映射至pnc的相关报文是否发送由pnc状态机与comm channel状态机共同决定。测试时仅关注pnc状态机即可,也就是pnc网关的网络管理报文对应pncid是否置1,这一信息部分oem也布置了vfc报文进行体现。
再简而言之,在flexray网络管理与can/canfd网络管理测试不同点为nm状态机跳转与pnc状态机map-frame的一致性。今天我们主要介绍flexray-nm状态机的跳转机制。
flexray-nm状态机模式有三大三小,后文有关状态描述采用对应缩写:
bsm:bus sleep mode,总线睡眠模式
sym:synchronize mode,同步模式
nm:network mode,网络模式
network mode模式中包含三个子状态:
rms:repeat message state,重复消息状态
nos:normal operation state,正常操作状态
rss:ready sleep state,准备睡眠状态
flexray-nm状态机与can-nm状态机唯一不同的是取消了pbm预睡眠模式,并引入同步模式给与全局时基同步时间。各个状态跳转的条件基本取决于nm-timeout-timer、repeat-message-timer、wait-bus-sleep-timer及网络是否释放。具体的跳转条件如下:
condition1:本地唤醒请求
condition2:接收网络管理报文成功
condition3:发送网络管理报文成功
condition4:repeat-message-timer超时
condition5:不进行本地唤醒请求
condition6:nm-timeout-timer超时
condition7:配置flexraynmpnenabled=false并且网络请求
condition8:wait-bus-sleep-timer超时
condition9:配置flexraynmpnenabled =true并且重复消息请求
condition10:poc状态机完成同步
action1:初始化
action2:初始化nm-timeout-timer
action3:开始repeat-message-timer
action4:开始wait-bus-sleep-timer
了解了flexray网络管理的基础知识,下面跟随小编一起学习下网络管理中flexray不同于can的部分测试吧。
二、flexray网络管理测试
01 测试环境搭建
基于vector的基础测试环境
怿星自研的flexray自动测试台架由上图vector基础测试环境再搭配自研ets6210、eh6466板卡共同构成,可同时实现flexray单节点、系统级、网络管理以及诊断刷写测试。基于cdd的诊断实现同样满足oem在flexray节点诊断协议的不一致性,常见的诊断协议为doip、flexray、can。测试中为避免canoe中poc状态机重启将影响网络管理测试,在network hardware中配置如下:
当被测件为冷启动节点时,为保证网络启动时被测节点的冷启动优先级,还需取消canoe的冷启动功能:
02 vote投票位测试
测试方法:利用canoe发送wup唤醒电平,仿真带有请求所有pnc的有效网络管理报文,监测ecu发出网络管理报文中vote有效性。
发送唤醒报文后,ecu的nm报文vote=1
前文所述,vote有效代表节点自身加入网络,可以概括为vote在需要节点通信时总是有效,具体的变化如下:
· 本地唤醒/网络唤醒进入rms状态时vote=1
· 本地唤醒/网络唤醒维持进入nos状态时vote=1
· 网络被释放且nm-timeout-timer超时后vote=0
· wait-bus-sleep-timer超时后vote不再发送
03 bsm-rms测试
测试方法:利用canoe发送wup唤醒电平,仿真vote=1有效网络管理报文,监测ecu发出网络管理报文中vote的发送次数与pnc信息。
发送唤醒信号后,ecu的nm报文持续10个nm-cycle
flexray采用时隙(时间片)传输,因此处于静态段的网络管理报文传输无法像can一样在rms状态设置快发送,但仍然规定了网络管理报文的发送次数,通常配置为10个nm-cycle。基于flexray的10mbit/传输,网络管理报文周期相较于can仍加速3-4倍,相较于canfd加速1-2倍,这也取决于nm-repcycle的设置。bsm-rms状态测试正是检测此项机制。监测实现采用on frframe事件,测试时最好设置同一cycle中仿真的网络管理报文时隙id大于被测的网络管理报文,大家可以参照lin协议的调度表运行考虑不这样做会有什么bug,又有哪种方法可以解决?
04 pnc掩码测试
测试方法:利用arxml解析后的pnc-pdu-signal group信息,使用canoe发送wup唤醒电平,仿真带有不同pncid的有效网络管理报文,监测ecu相关pdu的signal group是否更新。
分别发送pncid=16,17的nm报文
前文所述,flexray节点为安全与高速服务,任何节点的通信都必须保证,因此在整车网络中各冷启动节点常被配置为pnc网关,那pnc掩码唤醒/唤醒维持测试就必不可少了。测试中需注意on frpdu事件无法抓取object::name,必须将arxml文件中的信息提取并根据object::fr_cycle与object::fr_slotid做匹配。capl提供主要抓取对象如下:
以上,就是本次给大家分享的全部内容啦。小怿相信随着oem对于整车功耗标准的不断提升,flexray的优点与管理用户数据的pnc状态设计在未来将会有更多运用。限于篇幅,内容不详之处如果您还有疑问,欢迎关注怿星科技公众号,也可随时联系九游会j9官方网站呦!
关注怿星科技公众号,获取更多资讯