我修理汽车的电动助力转向系统,特别是菲亚特/阿尔法/朗西(德尔福制造商),我需要制作一些工具来测试这些赔偿,我的意思就是打开它。
我已经研究了一段时间了,我想我需要模拟Can-bus信号,因为eps ECU正在接收来自CAN的点火包,我在这里...
我需要知道我可以从/向BUS读取/发送CAN数据包的方式,我的意思是什么工具或其他任何东西。我一直在尝试使用Arduino UNO + Sparkfun Shield,但我没有得到任何结果,当所有连接,我的串口控制台没有嗅探任何数据包,我已正确连接所有我认为,尝试不同的bitRates,更改Arduino板和盾,尝试了很多不同的例子,我花了很多时间没有利润...我正在使用Seat Ibiza 2010用于I + D,在OBD PORT上连接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
答案 0 :(得分:0)
这里有两个潜在的问题:
第一步是尝试环回测试。如果一切正常,请从任何车载OBD端口尝试CAN总线,速度应为500Kb。
答案 1 :(得分:0)
这个尝试几个总线速度 - 使用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");
}
}
}
}
答案 2 :(得分:0)
如果要通过CAN与转向控制器进行通讯,例如对于Delhpi之类的OEM,则无法进行此操作,因为通讯网络中的ECU(电子控制单元)已得到保护,并且CAN协议软件决定了谁可以参加并谁不能。
作为测试仪工具,您可以读取故障代码,但无法破解它来模拟点火信号等。