kaiyun官方注册
您所在的位置: 首页> 模拟设计> 其他> 教学:汽车嵌入式开发中的ECU网关节点开发

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

2022-08-31
来源:开心果 Need Car
关键词: CAN总线 PDU 上位机 VCU

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

  1 背景介绍

  假设: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,要掰扯清楚。

  2 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 时间。

  3 多路诊断路由

  我们将问题进一步拓展,如果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的路由功能应满足上述规范。



更多信息可以来这里获取==>>电子技术应用-AET<<

mmexport1621241704608.jpg

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306116;邮箱:aet@chinaaet.com。
Baidu
map