2014-12-26 3 views
0

я объяснить немного ...CANbus моделирование для автомобильной цели

I ремонт электрифицированной системы рулевого управления для автомобилей, особенно Fiat/Alfa/Lancya (производители Delphi) и я нахожусь в необходимости создания какого-то инструмента для тестирования эти репарации, я имею в виду просто включение его, например.

Я исследовал в течение некоторого времени, и я понял, что мне нужно Can-сигналы шины должны быть смоделированы как EPS ECU получает пакеты зажигания от CAN, здесь я иду ..

мне нужно знать, каким образом я может читать/отправлять CAN-пакеты с/на шину, я имею в виду, какой инструмент или что-то еще. Я пытаюсь с Arduino UNO + Sparkfun Shield, но я не получаю никаких результатов, когда все подключено, моя последовательная консоль не обнюхивает какие-либо пакеты, я все правильно подключил, думаю, попробовал разные битраты, изменил платы и щиты Arduino, попробовал много разные примеры, я потратил много часов без прибыли ... Я использовал Seat Ibiza 2010 для I + D, подключил CAN-H и CAN-L на OBD PORT, в линиях CAN от радио и т. д.

Любая идея о том, что может быть неправильной, приветствуется, как новый метод для моего проекта .. Спасибо заранее!

Информация:

https://dl.dropboxusercontent.com/u/47864432/arduino/IMG_9358.JPG https://dl.dropboxusercontent.com/u/47864432/canbus/LIBRARYS_USED.rar

+2

возможно попробуйте спросить на 'электрического enginnering' форума обмена стека. – Jasen

+0

Спасибо за подсказку Jasen, я отправил его туда сейчас :) –

ответ

0

Есть два возможных проблем здесь:

  1. H/W проблема
  2. CAN проблема библиотека шины

Первый шаг t ry loopback. Если все в порядке, попробуйте CAN-шину с любого порта OBD автомобиля, скорость должна быть 500Kb.

0

Это один пытается пару скорости шины - работает с SparkFun по CANBUS щит:

#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"); 
     } 
    } 
    } 
}