使用ELM327接收CAN消息时的流控制消息

时间:2015-03-23 15:22:21

标签: can-bus obd-ii elm327

我正在尝试制作一个在Windows下运行并与ELM327设备通信的软件。我创建了第一个版本,然后我使用了SMART ForTwo(SMART 451)车辆,并设法连接仪表盘(传输CAN ID为782,接收CAN ID为783)。但是我的Flow Control存在很大问题。这是日志:

TX:ATI RX:ELM327 v1.5a

TX:ATE0 RX:ATE0 OK

TX:ATSP6 RX:好的

TX:ATH1 RX:好的

TX:ATL1 RX:好的

TX:ATCFC1 RX:好的

TX:ATFCSM0 RX:好的

TX:ATAL RX:好的

TX:ATSH782 RX:好的

TX:ATCRA783 RX:?

TX:ATST64 RX:好的

TX:1092 RX: 783 02 1A 87

TX:1A87 RX: 783 10 16 5A 87 05 6E 00 08

我使用了另一种工具,我看到ELM327设备立即发送了流量控制帧。就像这样:

891.438 782 02 1A 87

891.444 783 10 16 5A 87 05 6E 00 08

891.444 782 30 00 00 00 00 00 00 00

如您所见 - 流控制帧与第一帧完全同时发送,即从其他设备发送。我确信其他设备有问题需要接收“流量控制”框架。 我研究了ELM327文档,但没有找到有关如何延迟流控制框架的任何信息。 我该如何正确发送请求“1A 87”并收到回复?

2 个答案:

答案 0 :(得分:1)

这很容易,我想..

使用ATCFC0命令,然后您可以处理来自控制单元的所有响应帧,并且您需要手动发送流控制帧。

答案 1 :(得分:1)

这是一个老帖子,但可能会帮助别人!

这是我在与SPI连接的MCP2515上的第一帧(FF)和流控制(FC)的经验。

首先,您应该始终在FF消息之后发送FC消息,而不是在同一时间发送。

其次,诊断读取器可以使用ECU响应帧中的ID继续与特定ECU通信。特别是,多帧通信需要响应特定的ECU ID而不是ID 7DF。在简单的语言中,您不应该使用ID 7DF发送FF消息,并且应该找到要接收连续帧的确切ECU。例如,请求汽车VIN(基于来自Golf VII的真实信息):

7DF 02 09 00 00 00 00 00 00 //发送请求

7E8 10 14 49 02 01 57 56 57 //从主ECU接收

7E0 30 00 00 00 00 00 00 00 //再次点击主ECU而不是7DF !!

7E8 21 5A 5A 5A 41 55 5A 45 //连续消息由7E0发送!!

7E8 22 50 35 33 30 36 38 35

希望它有所帮助!