这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 汽车嵌入式开发中的ECU网关节点开发

共10条 1/1 1 跳转至

汽车嵌入式开发中的ECU网关节点开发

工程师
2022-09-19 23:41:40     打赏

汽车嵌入式开发中,开发ECU网关节点(GW:Gateway)时,难度会提升不少,这些难度中就包含对时间参数的解读问题。本文着重给大家聊一下P2Client、▲P2 = ▲P2Request + ▲P2Response、N_As时间参数。

背景介绍

假设:Tester发送功能寻址指令Request01给GW::VCU,因为VCU的GW属性,VCU需要将Request01转发,即由Flexray总线路由到Can总线,进而将Request01发送给Ecu::Xx,Request01路由示意如如下所示:

pYYBAGMNyGaAMxFIAACcxLYsxPA268.png

注意:诊断路由,需要通过Xx_Tp层。

VCU既然是GW,相对于ECU::Xx,就是一个Tester。

如果对各层的PDU类型不清楚,可以参考前文Autosar通信栈:I-PDU、N-PDU、L-PDU,要掰扯清楚。

P2Client、▲P2、N_As时间参数分析

1、P2Client

P2Client的时间定义如下所示:

poYBAGMNyMeAB3ppAABWKn_qzfg457.png

怎么理解呢?上位机(Tester)发送一个诊断指令以后,会等待Server(可以理解为某个ECU的节点)响应该诊断请求,如果在指定的时间内(P2Client_max/P2Client*_max)没有响应,Tester认为超时,并停止刷写流程,即:刷写失败

P2Client的时间范围是多少呢?如下所示:

pYYBAGMNyNeARRPSAACId3FxSKg978.png

P2Client时间范围的表达式:P2Client_max>P2Client>P2Server_max + ▲P2max 。P2Client_max是一个性能参数,由OEM设定。

这里假设:P2Server_max = 50ms,单向路由时间10ms,P2Client_max = 150ms,则70ms < P2Client < 150ms。为什么最小时间是70ms,不是60ms?稍后解释。

2、▲P2

▲P2的时间定义如下所示:

pYYBAGMNyOuAKoMHAACJz5FSVEA825.png

怎么理解这个时间参数呢?诊断指令的发送依赖于ECU各个模块的处理,在诊断指令被ECU接收到发送到总线需要一定的时间,同时由于总线仲裁等原因,也会导致诊断指令发送的延阻,这些因素所造成的时间消耗就是▲P2。

我们讨论路由时间,要分两种情况分析:

发送路由

对应第一小节图中的Fr->Can路由,即▲P2request = t1 - t0

响应路由

对应第一小节图中的Can->Fr路由,即▲P2response = t3 - t2

所以,需要约束一般会规定

单向路由时间

GWTIme_max,比如:GWTIme_max= 10ms。所以:▲P2 = P2Server_max + ▲P2request + ▲P2response = P2Server_max + 2*GWTIme_max = 50 + 2*10 = 70ms。这里的GWTIme_max = ▲P2request = ▲P2response。虽然▲P2request和▲P2response会有所不同,但实际工程项目中,一般设置▲P2request = ▲P2response,即:给一个单向路由的最大时间参数GWTime_max,GWTime_max需求如下所示:

pYYBAGMNyLaAfaKNAABAJRZUQEc525.png

3、N_As

以Can总线为例,N_As的时间定义如下所示:

poYBAGMNyQCAQl_iAABe_xWbcmE357.png

意思就是:发送端(Tester)的Xx_Tp层,从发送到驱动层应答的最大时间。该时间只是约束Xx_Tp层的计时行为,和▲P2 时间无关。因此,开发必须要先符合▲P2 时间。

多路诊断路由

我们将问题进一步拓展,如果GW节点将诊断指令路由到多个节点,如下图中的ECU::Xx01和ECU::Xx02。这里提一个问题:如果Can02不可用(比如:VCU Can02对应的Transceiver损坏或者未有连接),Can01上的刷写是否应该继续?
 

pYYBAGMNyRGADtvcAACOngWiDGA397.png

我们先看一下Autosar的答案,如下所示:
 

pYYBAGMNySKADE4BAABlYJ_xk6A684.png

答案很明确:如果TPs间的路由,有一路Fail(调用发送接口返回值为E_NOT_OK),不应影响其他TPs间的路由。如果OEM约束了你的开发:要符合Autosar规范。那么PduR的路由功能应满足上述规范。




高工
2022-09-20 04:00:27     打赏
2楼

感谢楼主的分享,很实用了。


专家
2022-09-20 06:28:01     打赏
3楼

谢谢分享


专家
2022-09-20 06:29:38     打赏
4楼

谢谢分享


专家
2022-09-20 06:39:27     打赏
5楼

谢谢分享


专家
2022-09-20 06:41:35     打赏
6楼

看看


专家
2022-09-20 07:07:29     打赏
7楼
谢谢分享

菜鸟
2022-09-20 07:51:08     打赏
8楼

谢谢分享


专家
2022-09-20 07:56:12     打赏
9楼

感谢分享


专家
2022-09-20 07:55:56     打赏
10楼

谢谢楼主共享资料


共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]