现象: 在河南某汽车厂,刷写博世控制器的时候,发现发送36 01 XX XX指令,正常来说应该收到76 01.或者7F XX的负响应。 但是没有收到任何响应数据。
用canOE监控一下,发送总线上确实有36 01,但是就是对方控制器没有法数据到总线上。
之前在公司测试,仅仅控制器连接到电脑上,刷文件是可以的。 实际现场又专门把控制器拆掉,单独接到电脑上,也是可以的。这说明车的环境对控制器有影响。
设备 连接到 网关,网关然后连接到控制器。 所有设备发出的数据都是由网关这个模块,来转发到控制器的。用厂家的431来刷文件可以,说明网关是正常。是可以刷写文件的。 不仅仅这个博世的控制器,所有的像ABS,EPS,tbox等等好多ECU都是接到网关上的。
在发送到总线上前提是,必须其他ECU保持安静,他们不能发数据到总线上。ID越小,则ECU的优先级越高。当优先级高的ECU在发数据的时候,而此时你要是发数据,那么是不可以的。因此要让其他ECU保持安静。
通过,进扩展,设置DTC, 让所有ECU安静。这三个步骤可以控制其他ECU。
监控总线,发现进扩展之后,总线上有些ECU回复50 03.但是,有的ECU 没有回复。而每次用431进扩展,都会发现好多ECU都能发50 03到总线。因此猜测,我发的数据太快,导致有些ECU没有正常发出50 03。 因此,在进扩展,设置DTC, 让其他ECU安静等命令之后, 都延迟一些时间。我这里延迟了400毫秒。
结果,可以了,在总线上终于看到了76 01的回复。
来源:oschina
链接:https://my.oschina.net/u/4355739/blog/4490612