用户
搜索
  • TA的每日心情

    2020-2-1 20:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    版主

    Rank: 7Rank: 7Rank: 7

    13

    主题

    58

    帖子

    667

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2016-5-14

    i春秋签约作者

    发表于 2021-9-29 17:27:47 01893
    本帖最后由 梧桐树下 于 2021-9-29 21:56 编辑

    汽车CAN总线探索之旅(二)

    ICS模拟器

    [color=#515151]本篇文章作者曹宇宁,本篇文章参与i春秋作家连载计划所属曹宇宁,未经许可禁止转载。[/color]汽车安全入门最首要的肯定是要从CAN开始。但是传统的汽车CAN研究起来可能会耗费大量的时间和成本,并且很长一段时间可能会在在CAN线的CAN高CAN低寻找上卡壳。
    那么现在值得庆幸的是CraigSmith开发了一款简单的CAN模拟器,该模拟器通过模拟的形式,使得汽车仪表盘,方向盘及各种操纵功能非常通俗易懂的展现了出来。使得普通学生和汽车安全研究员也可以下载安装和模拟汽车的一系列操作。进而进行CAN数据的分析和处理。值得注意的一点是,本文提到的方法切勿在实车进行测试,若过程中产生任何意外与本文作者无关,本文的意义重在讨论分析方法和模拟数据,所使用的数据均为模拟与实验无人车(自研车)在实验室内进行的测试。

    ICS的软件界面如下图所示:

    222

    安装步骤

    安装依赖环境

    • 安装运行所必要的依赖库

      sudo apt install libsdl2-dev libsdl2-image-dev -y
    • 安装CAN Utils

      • 关于CAN Utils

      • canutils 工具包内含 5 个独立的程序:canconfig、candump、canecho、cansend、cansequence。可以通过这些命令简单的进行CAN的配置和收发。这几个程序的功能简述如下:

        canconfig:用于配置 CAN 总线接口的参数,主要是波特率和模式。
        candump:从 CAN 总线接口接收数据并以十六进制形式打印到标准输出,也可以输出到指定文件。
        canecho:把从 CAN 总线接口接收到的所有数据重新发送到 CAN 总线接口。
        cansend:往指定的 CAN 总线接口发送指定的数据。
        cansequence:往指定的 CAN 总线接口自动重复递增数字,也可以指定接收模式并校验检查接收的递增数字。

      • 安装CAN Utils

      • sudo apt install can-utils

    安装&编译 ICS模拟器

    • GitHub下载编译安装

      git clone https://github.com/zombieCraig/ICSim
      Cloning into 'ICSim'...
      king@king:~/ICSim$ ls
      art                            controls.o  icsim.o  LICENSE
      candump-2021-09-28_171208.log  data        lib.c    Makefile
      controls                       icsim       lib.h    README.md
      controls.c                     icsim.c     lib.o    setup_vcan.sh
      king@king:~/ICSim$ sudo bash setup_vcan.sh 
      make
      (然后就安装成功,make过程中可能很多人会或多或少存在一些问题,建议自行打开make文件看下具体上哪里的问题,稍加修改后mack即可成功。)

    运行ICS模拟器控制端和显示端

    king@king:~/ICSim$ ./icsim vcan0
    Using CAN interface vcan0
    king@king:~/ICSim$ ./controls vcan0

    222

    一切无误安装完毕之后就可以开开心心的来模拟CAN数据进行分析了。

    CAN数据分析

    can分析的方法呢目前主流有两种分析方法,一种是“笨办法”一种是“聪明”办法。下面来详细梳理一下笨办法和聪明办法,具体的演示视频可以稍后观看春秋汽车安全的直播课程进行学习和了解。。

    笨办法呢,其实就是传统意义上的二分法。我们先来看看模拟的CAN数据有多少,这边我模拟打开车门和关闭车门,仅仅几分钟的操作,CAN数据即为图中所示。

    1234

    • 二分法逆向数据

    目测看起来是有两万多行的数据,那么如何从两万多行的数据之中具体得知是那条CAN命令控制我们无人车(实验无人车,此方法切勿在实车进行测试,若过程中产生任何意外与本文作者无关。本文重在讨论分析方法,所使用的数据均为模拟与实验无人车(自研车)进行测试。)的前进和后退呢?具体那条命令控制加速呢?那么在这里呢,针对我们实验无人车的数据,我们就要对这种数据进行分析。可以用二分的方法来进行,例如有两万行数据,那么我每次取前1万条进行分析,然后在重放,看我们的无人试验车有什么反应,依次类推然后就可以算出具体是哪条CAN在负责控制。

    • python程序逆向数据

    第二种方法更为简单,即为python程序法。我们用python程序来迅速处理。如下图:

    5678

    以下是数据文本展示:

    9101112

    系列课程未来会上传至公开课程,届时欢迎大家观看!python程序的原理就是计算各#之前的所有的数据出现的次数,建议自行手写。

    未完,待续。。。。。。


    发新帖
    您需要登录后才可以回帖 登录 | 立即注册