微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DSP的电动轮自卸车控制器的设计

基于DSP的电动轮自卸车控制器的设计

时间:03-04 来源:微计算机信息 点击:

1. 前言

  重型电动轮自卸车是大型露天矿和水利工程的高效运输设备。目前,分布在我国冶金、煤炭行业与大型水利建设工程的正在运行的重型电动轮自卸车约有600台之多,其电传动控制系统国内使用企业一直依赖进口美国通用电气公司(GE)的Statex系列单片机控制系统。由于该系统插件板多,致使线路复杂,调试困难,加之电动轮的工作环境恶劣,使得该类型的车存在故障率高、检修麻烦、备件昂贵等缺点,严重影响了自卸车的作业率。以往,有一些厂矿和研究所的技术研究员对该类产品进行分析与改造[1,2],但未从根本上解决问题。为此,湖南大学和湘潭电机股份有限公司联合研制了154T电动轮自卸车微机控制与故障诊断系统。该系统的车载电控子系统以DSP为核心处理器进行开发,更新升级原单片机控制系统,并与原系统兼容,开发出具有自主知识产权的产品。

  2.基于DSP的控制器硬件设计

  车载控制系统工作在-30°C ~40°C环境下,控制精度≤5%,超调量σ≤5%,上升时间tS≤3 s~5s,并要求符合IE60077牵引电力设备规则。它主要完成电动机的开关逻辑控制、电动车牵引与制动过程的发电机和电动机的自动励磁调节以及故障信号的实时采集。

  根据设计要求,控制器的核心CPU选用TMS320F2812型芯片[3]。该款芯片是在F24X的基础上开发的高性能定点芯片。先进的内部和外设结构使得该处理器特别适合电机及其他运动控制应用,能够真正的实现单片控制器。F2812采用32bit操作,150MHZ的主频。内含 16KRAM,128KFLASH,16路12位高速A/D转换,16路PWM,52路数字I/O,4路定时器和内置WATCHDOG。并配有专用的电机控制外设(事件管理模块EVA、EVB),能工作在−40°C 到 85°C的环境下。采用TMS320F2812无需外部总线扩展就能实现控制器的所有功能。

  该控制器的硬件结构框图如图1所示。控制器的输入部分有3路脉冲输入模块,34路开关量经输入光电隔离及电平转换后送入DSP处理,14路模拟量经通道切换、放大、滤波和快速A/D转换后输入。输出有经光电隔离及电平转换后的28路开关量和2路PWM方式的模拟量输出模块。TPS1与TPS2两路同步信号输入到同步触发模块,保证了发电机和电动轮的同步工作。控制器设有2个RS485串行通讯口,可保证它与上位机(故障诊断机)进行可靠通信。控制器还带掉电保持的实时日历时钟电路和64Kx8位带掉电保持存取器FM25L256,可实时采集和保存机车运行实时数据和故障数据。

图1控制器硬件系统方框图

  3. 控制器软件部分的设计

  控制系统软件具有通信、系统管理、控制和信息处理等功能,能实现系统的控制要求。系统主程序主要包括系统初始化、逻辑运算、牵引/制动控制和故障数据分析与处理,其主程序流图如2所示。由于系统外设较多,实时性要求高,故对系统中移相触发、串口通信、AD采样与数字滤波、测速、0.5ms的定时和历史数据保存均采用中断方式,确保了对电动车的实时监控。系统软件调试在CCS2.0环境下进行。系统中除了个别初始化程序采用汇编语言编写外,其他部分均采用标准 C编写,这有利于软件的修改、维护和升级[4]。系统程序烧录在F2812的Flash存储器中,运行时将全部中断程序加载到F2812的RAM中运行。这样可避免频繁从慢速的Flash中取指而影响运行速度,充分发挥了F2812的性能。

图2主程序流程图

  上图中,系统初始化主要完成整个系统硬件部分和参数的初始化工作。包括CPU工作初始化、 EV模块初始化、中断向量及中断初始化、串口初始化、故障诊断机(PTU)整定参数初始化和AD值与实际值的比例系数初始化。它还完成反馈单元的比例系数和各个函数输入接口参数的初始值及 PI或PID调节器参数、各特性曲线的转折点参数和比例(斜率)系数的设置。逻辑运算是运用开关输入量和相关模拟量,根据湘潭电机厂所提供的154T逻辑关系式计算开关输出量和中间变量,并输出所有开关输出量。由传感器送来的车速和柴油机转速信号,经EV模块处理后输出两路PWM信号。故障分析与处理部分主要是故障发生后,采集和保存故障数据,提供给上位机分析用。其主程序如下:

  #include "Device.h" // DSP2812 HeadeRFile Include File

  #include "Examples.h" // DSP2812 Examples Include File

  #include "Global_Variables.h" // Global variables used in this project

  #include "io.h"

  #include"PulseIn.h"

  extern void ReadDin(), OutDout(), LogicFunction(), InitialFramAndCalendar();

extern void WriteReadFramAndCalendar(Uint16*BuffStartAddress,Uint16DataLe

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top