用于汽车的CANbus仿真

问题描述 投票:0回答:3

我解释一下......

我修理汽车的电动助力转向系统,特别是菲亚特/阿尔法/朗西(德尔福制造商),我需要制作一些工具来测试这些赔偿,我的意思就是打开它。

我已经研究了一段时间了,我想我需要模拟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

arduino can-bus
3个回答
0
投票

这里有两个潜在的问题:

  1. H / W问题
  2. CAN总线库问题

第一步是尝试环回测试。如果一切正常,请从任何车载OBD端口尝试CAN总线,速度应为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");
      }
    }
  }
}

0
投票

如果你想通过CAN与转向控制器进行通信,例如像Delhpi这样的OEM ......这是不可能的,因为通信网络中的ECU(ELectronic控制单元)是安全的,CAN协议软件决定谁可以参与,谁可以'吨。

作为测试工具,您可以阅读故障代码但不能破解它来模拟点火信号等...

© www.soinside.com 2019 - 2024. All rights reserved.