我解释一下..。
我修理汽车的电动转向系统,特别是菲亚特/阿尔法/兰奇亚(德尔福制造商),我需要一些工具来测试这些赔偿,我的意思是,例如,只是打开它。
我已经研究了一段时间,我认为我需要模拟CAN总线信号,因为eps ECU正在接收来自CAN的点火数据包,我开始了。
我需要知道从总线读取/向总线发送CAN数据包的方式,我的意思是什么工具或其他任何东西。我一直在尝试Arduino UNO +火花之盾,但我没有得到任何结果,当一切都连接,我的串行控制台没有嗅探任何数据包,我已经连接所有正确的我认为,尝试不同的bitRates,更换Arduino板和盾牌,尝试许多不同的例子,我投入了很多小时都没有利润…我将Seat Ibiza2010用于I+D,在OBD端口上连接CAN-H和CAN-L,在来自无线电的CAN线路中连接,等等。
欢迎任何可能出错的想法,作为制作我的项目的新方法..提前感谢!!
信息:
https://dl.dropboxusercontent.com/u/47864432/arduino/IMG_9358.JPG https://dl.dropboxusercontent.com/u/47864432/canbus/LIBRARYS_USED.rar
发布于 2015-01-23 22:03:09
这里有两个潜在的问题:
第一步是尝试环回测试。如果一切正常,从任何汽车OBD端口尝试CAN总线,速度应为500Kb。
发布于 2017-09-29 03:28:39
这里尝试了几种总线速度--使用sparkfun canbus shield:
#include <SPI.h>
#include <SD.h>
#include <Canbus.h>
#include <defaults.h>
#include <global.h>
#include <mcp2515.h>
#include <mcp2515_defs.h>
const int chipSelect = 9;
File dataFile;
void setup() {
// put your setup code here, to run once:
pinMode(chipSelect, OUTPUT);
Serial.begin(115200); // For debug use
Serial.println("CAN Read - Testing receival of CAN Bus message");
delay(1000);
if (Canbus.init(CANSPEED_500)) //Initialise MCP2515 CAN controller at the specified speed
Serial.println("CAN Init ok: 500k");
else if (Canbus.init(CANSPEED_250)) //Initialise MCP2515 CAN controller at the specified speed
Serial.println("CAN Init ok: 250k");
else if (Canbus.init(CANSPEED_125)) //Initialise MCP2515 CAN controller at the specified speed
Serial.println("CAN Init ok: 125k");
else
Serial.println("Can't init CAN");
delay(1000);
if (!SD.begin(chipSelect)) {
Serial.println("uSD card failed to initialize, or is not present");
return;
}
else {
Serial.println("uSD card initialized.");
delay(1500);
}
dataFile = SD.open("caninfo.txt", FILE_WRITE);
}
void loop() {
tCAN message;
if (mcp2515_check_message())
{
if (mcp2515_get_message(&message))
{
if (dataFile) {
int timeStamp = millis();
//write to uSD card
dataFile.print(timeStamp);
dataFile.print("ID: ");
dataFile.print(message.id, HEX);
dataFile.print(", ");
dataFile.print("Data: ");
dataFile.print(message.header.length, DEC);
for (int i = 0; i < message.header.length; i++)
{
dataFile.print(message.data[i], HEX);
dataFile.print(" ");
}
dataFile.println("");
Serial.println("Writing to SD");
}
else
{
Serial.println("Problem writing to SD");
}
}
}
}发布于 2019-03-09 23:18:00
如果您想通过CAN与转向控制器进行通信,例如像Delhpi这样的OEM。这是不可能的,因为通信网络中的ELectronic控制单元( ECU )是安全的,并且CAN协议软件决定谁可以参与,谁不可以参与。
作为一个测试工具,你可以读取故障代码,但你不能破解它来模拟点火信号等。
https://stackoverflow.com/questions/27652481
复制相似问题