首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于汽车的CANbus仿真

用于汽车的CANbus仿真
EN

Stack Overflow用户
提问于 2014-12-26 11:13:24
回答 3查看 1.8K关注 0票数 0

我解释一下..。

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

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

EN

回答 3

Stack Overflow用户

发布于 2015-01-23 22:03:09

这里有两个潜在的问题:

  1. 硬件问题
  2. CAN bus library problem

第一步是尝试环回测试。如果一切正常,从任何汽车OBD端口尝试CAN总线,速度应为500Kb。

票数 0
EN

Stack Overflow用户

发布于 2017-09-29 03:28:39

这里尝试了几种总线速度--使用sparkfun canbus shield:

代码语言:javascript
运行
复制
#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
EN

Stack Overflow用户

发布于 2019-03-09 23:18:00

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

作为一个测试工具,你可以读取故障代码,但你不能破解它来模拟点火信号等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27652481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档