EV-Embedded-Control-System/系统介绍.md

9.4 KiB
Raw Blame History

比亚迪秦EV嵌入式控制系统 - 系统介绍

1. 项目概述

本项目是针对比亚迪秦EV电动汽车开发的嵌入式控制系统,基于AT32F407RGT7ARM Cortex-M4微控制器实现了车辆数据采集、通信控制和实时监测等核心功能。

1.1 项目定位

  • 应用场景:电动汽车数据采集与控制系统
  • 核心目标:实现车辆状态实时监测、远程通信和智能控制
  • 技术特点:实时性强、可靠性高、通信协议丰富

2. 技术架构

2.1 硬件平台

参数 规格
MCU AT32F407RGT7ARM Cortex-M4168MHz
存储 1MB Flash + 192KB SRAM
通信接口 CAN×2、ETH、UART×7、RS485
定时器 多个通用定时器

2.2 软件架构层次

┌─────────────────────────────────────────────┐
│              应用层 (Application)           │
│   ┌─────────┬─────────┬─────────┐          │
│   │  数据采集 │  协议处理 │  控制逻辑 │          │
│   └─────────┴─────────┴─────────┘          │
├─────────────────────────────────────────────┤
│              中间件层 (Middleware)          │
│   ┌─────────┬─────────┬─────────┐          │
│   │ FreeRTOS │  LwIP   │ Modbus  │          │
│   └─────────┴─────────┴─────────┘          │
├─────────────────────────────────────────────┤
│              驱动层 (Driver)                │
│   ┌─────────┬─────────┬─────────┐          │
│   │  CAN    │  EMAC   │  UART   │          │
│   └─────────┴─────────┴─────────┘          │
├─────────────────────────────────────────────┤
│              HAL层 (Hardware Abstraction)   │
│           AT32 HAL Library                 │
└─────────────────────────────────────────────┘

2.3 核心中间件

中间件 版本 功能描述
FreeRTOS 实时内核 任务调度、队列、信号量、定时器
LwIP 轻量级TCP/IP 以太网通信、TCP/UDP协议栈
FreeModbus Modbus协议 Modbus TCP/RTU主从站实现
libmodbus Modbus库 额外的Modbus RTU支持
SEGGER RTT 调试工具 实时终端调试输出

3. 主要功能模块

3.1 功能模块总览

模块 文件名 核心功能
系统控制 wk_system.c 时钟配置、延时函数、时间基准
CAN通信 wk_can.c CAN1/CAN2初始化、数据收发
以太网 wk_emac.c EMAC初始化、PHY配置
网络协议 wk_lwip.c LwIP栈初始化、网络管理
调试配置 wk_debug.c SWD调试接口配置
FreeRTOS应用 freertos_app.c 任务创建与调度
Modbus任务 mbtask.c Modbus TCP从站初始化

3.2 FreeRTOS任务架构

系统基于FreeRTOS实现多任务并发核心任务包括

任务名称 优先级 功能描述
run_task 0 系统心跳、看门狗喂狗
tmr_task 0 速度计算(基于轮速脉冲)
modbustcp_slaver_task Modbus TCP从站协议处理
rs485_task RS485总线数据采集
io_task 信号灯检测、参数下发
modbusrtu_master_task Modbus RTU主站轮询
can2_master_task CAN2数据接收油门/刹车/转向)
can1_master_task CAN1数据接收车辆CAN总线

3.3 任务间通信机制

  • 队列 (Queue)用于CAN数据、定时器数据的异步传递
  • 信号量 (Semaphore):用于任务同步
  • 事件组 (Event Group):用于复杂事件通知

4. 核心通信协议

4.1 CAN总线通信

系统支持双通道CAN通信

CAN1(监听模式):

  • 波特率500 kbps
  • 用途侦听车辆CAN总线数据档位、电量、速度、里程

CAN2(通信模式):

  • 波特率500 kbps
  • 用途:与改装设备通信(油门、刹车、转向)

4.2 以太网通信

  • MAC地址00:00:44:45:56:01
  • IP地址192.168.1.37(静态配置)
  • 速率100Mbps 全双工
  • 协议栈LwIP支持TCP/UDP/IP

4.3 Modbus协议

系统同时支持Modbus TCP和Modbus RTU

Modbus TCP:作为从站,响应上位机数据请求

Modbus RTU:作为主站,采集传感器数据(温度、电压、电流)


5. 数据采集功能

5.1 采集参数列表

参数ID 参数名称 来源 数据类型
MODBUS_ID_SPEED1 车速1 CAN1 uint16
MODBUS_ID_SPEED2 车速2 轮速脉冲 uint16
MODBUS_ID_TEMP1 温度1 RS485 uint16
MODBUS_ID_TEMP2 温度2 RS485 uint16
MODBUS_ID_VOLTAGE 电压 RS485 uint16
MODBUS_ID_CURRENT 电流 RS485 uint16
MODBUS_ID_THROTTLE1/2 油门位置 CAN2/RS485 uint16
MODBUS_ID_BRAKE 刹车状态 CAN2 uint16
MODBUS_ID_STEERING 转向角度 CAN2 uint16
MODBUS_ID_GEAR 档位 CAN1 uint16
MODBUS_ID_BAT 电量 CAN1 uint16
MODBUS_ID_MILEAGE 里程 CAN1 uint16
MODBUS_ID_LIGHT 信号灯 GPIO uint16

5.2 速度计算原理

#define CIRC (2.3f * C_NUM)  // 车轮周长
time = 100.0f * measured_time / 1000000.0f;  // 转换为秒
speed = CIRC / time;  // m/s
speed *= 3.6f;  // 转换为 km/h

6. 系统初始化流程

main()
    │
    ├─► wk_system_clock_config()     // 系统时钟配置
    ├─► wk_periph_clock_config()    // 外设时钟配置
    ├─► wk_debug_config()           // 调试接口配置
    ├─► wk_nvic_config()            // NVIC中断配置
    ├─► wk_timebase_init()          // 时间基准初始化
    ├─► wk_tmr1_init()              // 定时器1初始化
    ├─► wk_tmr2_init()              // 定时器2初始化
    ├─► wk_emac_init()              // 以太网初始化
    ├─► wk_can1_init()              // CAN1初始化
    ├─► wk_can2_init()              // CAN2初始化
    ├─► wk_lwip_init()              // LwIP初始化
    ├─► at32_bsp_init()             // BSP初始化
    ├─► wk_wdt_init()               // 看门狗初始化
    └─► wk_freertos_init()          // FreeRTOS启动
            │
            └─► vTaskStartScheduler()

7. 中断优先级配置

中断源 优先级 说明
EMAC 5 以太网DMA中断
UART7 6 UART7中断
CAN2 7 CAN2中断
CAN1 8 CAN1中断

8. 项目文件结构

byd_qin_ev 1.4/
├── libraries/                    # 基础库
│   ├── cmsis/                   # CMSIS核心库
│   └── drivers/                 # AT32 HAL驱动
├── middlewares/                 # 中间件
│   ├── freertos/                # FreeRTOS实时内核
│   ├── lwip/                    # LwIP网络协议栈
│   ├── FreeModbus/              # FreeModbus协议
│   ├── libmodbus/               # libmodbus库
│   └── segger_rtt/              # RTT调试工具
├── project/                     # 项目工程
│   ├── src/                     # 源代码
│   │   ├── main.c               # 主入口
│   │   ├── wk_system.c          # 系统控制
│   │   ├── wk_can.c             # CAN通信
│   │   ├── wk_emac.c            # 以太网驱动
│   │   ├── wk_lwip.c            # 网络协议
│   │   ├── wk_debug.c           # 调试配置
│   │   ├── freertos_app.c       # FreeRTOS应用
│   │   └── mbtask.c             # Modbus任务
│   └── MDK_V5/                  # Keil MDK工程文件
└── AT32F407RGT7.ATWP            # AT32配置文件

9. 技术特点总结

  1. 实时性设计基于FreeRTOS实现任务调度关键任务高优先级保障实时响应

  2. 多协议支持CAN、以太网、Modbus TCP/RTU、RS485等多种通信方式

  3. 数据采集全面:覆盖车辆速度、温度、电压、电流、位置等关键参数

  4. 可靠性保障看门狗机制、CAN自动重传、错误中断处理

  5. 模块化架构:分层设计,便于功能扩展和维护

  6. 远程监控能力:以太网+Modbus TCP支持上位机远程访问


10. 应用场景

本系统主要应用于:

  • 电动汽车改装:数据采集与控制
  • 车队管理:远程监控车辆状态
  • 数据分析:收集车辆运行数据用于优化
  • 故障诊断:实时监测车辆异常状态