使用neoVI RED结合Vehicle SPY3实现双路CAN输出控制

    有款汽车产品(2个样件)要进行高温试验,96h,手头只有一个neo VI Red,平常只是用了1路HS CAN,尝试在一路CAN上挂2个样件运行,发现只有1个样件动作,另一个不动作,以为是电源功率不够大,用2个电源分别给样件供电也是不可以的。尝试用2路HS CAN分别控制样件,从图1看出,它是看出输出3路HS CAN的,研究下如何配置。

图1

    目前控制工程使用的HS CAN1,Enabled,500000,Write Setting,这时候会看到左侧HS CAN前面出现一个对号,表明已经使能HS  CAN,另一路CAN使用HS CAN2,同样将其使能,如图2。 

图2

    点击工具栏-Spy NetWorks-ECUs弹出图x界面,要想用spy3控制产品动作需要配置一些内容,具体有诊断ID、DID、UDS服务、安全访问等等,下面依次说说。

1、ECU配置

ECU配置中需要关注几个点,ECUBasis、Identifiers、Routine、DTCS、Jobs等。

(1)ECUBasis设置诊断ID,选择NetWork,选择HS CANHSCAN2创建2个Networks,如图3。

图3

(2)Jobs,即ISO14229服务,用到了10、27、2F和3E服务,如图4,使用2F服务之前需要先使用27服务进安全访问,同时需要用到10和3E服务,19服务是试验开始和结束时读下故障。 

图4

    重点看下2F服务内容,Input Output Control By Identifier,根据ID控制输入输出,字面意思就是根据规定的Identifier控制产品输入和输出。图5是2F界面可选择不同的dataIdentifier和ioControlParameter,我们产品有一个动作时间设置,对应报文的最后一位,这里有一个转化关系,比如在动作时间一栏设置为1,报文对应是0x0A,即十进制的10,1LSB=100ms,则实际的动作时间为10*100ms=1s,就是对应设置的1s,当时折腾半天才发现是这么个对应关系。

图5

 点击一下右下角的Copy to Messages Editor,具体作用后面讲。 

(3)Identifier,图6是2F服务使用到的Identifier,根据调查问卷表定义,不细说。

图6

 (4)Routine,是31服务使用到的,这里没用到暂且不说了,用下也挺有意思。

(5)DTCS,是必须的,根据调查诊断问卷表填写吧。

    ECU配置结束,要用2路HS CAN,所以每一路都要配置诊断ID,DID和UDS服务。

2、Messages Editor

    Messages Editor存放发送和接收的报文,其中包含Database、Transmit和Receive模块,Database存放整个dbc,Transmit存放发送给ECU的报文,Receive是ECU发出的报文。

图7

    图7是Transmit的界面:

  • on Networks:HS CAN( or HS CAN2);
  • LP-UDS-Request-Seed:27服务中请求Seed;
  • LP-UDS-Seed-key:27服务中请求Key,根据ECU发出的Seed计算key,所以需要定义bits,如图8,具体位数根据调查诊断问卷表;
图8
  • 10、27、3E和2F报文:是通过点击Jobs界面Copy to Messages Editor直接复制过来的; 
图9

    图9是Receive的界面:

  • on Networks:HS CAN( or HS CAN2);
  • LP-UDS-SEED:ECU发出去的Seed,定义bits存放,如图10;
图10
  • LP-UDS-KEY_SUCCESS:安全访问成功;

 3、Tx Panel

    如图11,各个Networks要Transmit的信号都可以在这里看到,遇到一个奇怪的问题,在调试过程中发现Transmit里面的报文和实际读取到的报文不一致,比如Transmit中copy过来的报文是:04 03 02 01,但是在Tx Panel这里会变成04 00 00 00,只能手动在这里重新编辑一下,不知道为什么。

图11

 4、安全访问

    安全访问要用到Function Blocks功能,如图12,有的简单,有的复杂,具体看产品。

图12

    注意:比如Transmit一条报文运行时间是100ms,后面wiat for时间必须大约100ms,这个时间最好用示波器调试看下感觉不是很稳定,可能是报文发送接收经过PC和RED有延迟。

5、Function Blocks

    自动化测试使用,可以调用报文,可以调用Function Blocks,根据控制要求编写控制用例,对执行时间有严格要求的建议拿示波器看下信号

小结:

  1. 创建2个ECUs,但是诊断ID,DID和UDS服务都是一样的,2份;
  2. Copy 2个ECUs Jobs中的服务报文到Messages Editor中,2份;
  3. Function Blocks编写安全访问的用例,2份;
  4. Function Blocks编写控制用例,2份,分别调用HS CAN和HS CAN2的Messages Editor报文,就可以经过2路CAN发出一样的控制信号;
  5. 2个ECU的CAN线分别连接RED的2路CAN。

    开始接触14229时完全不知道什么鬼,网上介绍的内容也挺多,其实找款产品的诊断协议认真过一遍就知道什么意思了。原本想把从拿到dbc到工程创建的全部过程写一写的,但是会涉及公司产品信息,不方便。

如有错误,请指教。

发布了8 篇原创文章 · 获赞 1 · 访问量 175

猜你喜欢

转载自blog.csdn.net/fendoulanyan/article/details/104500210
RED