当前位置:文档之家› 车辆电控大作业-发动机转速信号采集与控制

车辆电控大作业-发动机转速信号采集与控制

这是车辆电子控制技术的一个课程作业:设计一个电控系统(硬件和软件),该系统可按照SAEJ1939采集发动机油门踏板和发动机转速信号,如果监测到的发动机转速超过1600rpm,则控制发动机转速稳定工作在1600rpm。

要求:画出电路原理图和PCB图(自行选择单片机、接口电路和绘图软件),给出相关的源程序(编程语言不限)。

备注:禁止任何形式的抄袭,如发现抄袭无论被抄袭者还是抄袭者,该作业一律0分。

发动机转速信采集与控制的设计作业分析:为完成此项目,首先要确定硬件系统,从而利于进行软件的设计;第二了解SAEJ1939通讯协议,以便进行发动机油门踏板信号和发动机转速信号的解析;第三进行软件编程,实现对硬件系统的初始化,通过CAN总线接收油门踏板信号与转速信号的数值,控制电路实现对发动机稳定转速1600rpm的控制。

(一)硬件系统设计系统核心MCU采用MC9S12XDP512单片机,负责采集传感信号,实现CAN总线通讯,输出信号控制输出电路。

整车硬件系统采用MC9S12XDP512单片机,由频率量采样电路、模拟量采样电路、驱动电路、CAN总线通讯电路组成,通讯速率250kps。

图1 硬件系统原理频率量采样电路实现对发动机转速、空气流量传感器等具有脉冲输出的功能信号的采集,同时也能实现对开在信号的采集。

模拟量采样电路可以实现对怠速、点火、启动、空档、空调等开关信号的采集,也能实现对空气流量传感器、曲轴、凸轮轴、节气门等位置传感器信号的采集,还能实现对进气、冷却液等热电阻温度传感器信号的采集。

驱动电路实现对电磁喷油器的PWM控制,对电动汽油泵继电器的通断控制。

CAN总线接口电路实现与整车总线的连接,采集发动机转速、油门的开度信号;实现数据的上传;实现软件升级下载。

1. 供电电路设计图2 供电电路设计设定车载供电为24V,电压波动范围是16V至32V。

如果车载供电电压为12V,则将LM2937-12的输入与输出短接即可。

在此电路设计中增加输入电压钳位保护,利用SMCJ36A将输入电压保护在36V以下,实现对LM2575的保护;利用SMAJ6.0A将单片机工作电压保护在6V以下,防止在调试时操作不当,由于电压过高损坏单片机。

车载传感器可由VCC或+12VDC、+24VDC供电。

2. CAN总线电路设计图3 CAN总线电路设计相对而言,PCA82C251相对其它芯片TJA1050、TJA1040、具有更广范围的供电电压,因此选用82C51。

这终端电阻设置在总线拓扑的首尾,并在CANH和CANL上,通常而言总线距离在500m内这两个电阻为120Ω,由于车辆内部总线长度不会超过500m,因此装甲车辆的CAN总线的终端电阻为120Ω。

在总线上,串联两个5.1欧的电阻,起到限流作用,保护82C51,同时增加保护二极管PESD1CAN。

3. 模拟量采样电路设计图4 模拟量采样电路设计模拟量输入与开关信号输入共用电路。

实现对0-5V信号的AD转换,以及0-24V开关信号的检测。

此电路也可实现对频率量的检测,只需将电路与单片机的输入捕捉通道连接即可,对MC9S12而言,接到PT通道即可。

4. 驱动电路设计图5 额定电流3.7A最大瞬态电流12A驱动电路设计驱动电路设计了两类,一类是驱动小电流负载的,额定电流为3.7A,但实际中会降额使用,一般不大于2A电流的负载会使用这个电路,对于喷油的电磁阀是适用的。

当负载电流大时,可以使用图6的驱动电路。

图6 额定电流44A最大瞬态电流90A驱动电路设计这两个驱动电路,均具有状态反馈功能,控制信号加上后,是否输出24V,这是可以通过反馈的开关信号检测的。

这有利于实现故障诊断功能。

利用软件Altium Designer(16.0)完成了四层板的设计,如图7所示。

图7 四层板设计(隐藏了中间两层)(二)信号解析根据作业要求,要确认SAEJ1939协议中发动机油门踏板和发动机转速信号的形式,因此查《SAE-J1939-71协议》查到如下相关章节:5.3.6电子发动机控制器#2:EEC2传输循环率:50ms数据长度:8 字节数据页面:0PDU格式:240PDU特定:3默认优先值:3参数群数编号:61443(00F00316)1 状态—EEC18-7未定义字节6-5道路速度极限状态 5.2.6.764-3AP 换低挡装置开关 5.2.2.52-1AP低空转开关 5.2.2.42加速器踏板(AP)位置 5.2.1.83当前载入百分比 5.2.1.74远程加速器 5.2.1.595-8未定义5.3.7电子发动机控制器#1:EEC1传输循环率:由发动机速度决定数据长度:8 字节数据页面:0PDU格式:240PDU特定:4默认优先值:3参数群数编号:61444(00F00416)1 状态—EEC18-5未定义字节4-1发动机/减速器扭矩模式 5.2.2.12主动轮命令发动机—扭矩百分比 5.2.1.43实际发动机—扭矩百分比 5.2.1.54-5发动机速度 5.2.1.96针对发动机控制的控制设备源地址 5.2.5.2985.2.1.8加速踏板位置这是指加速踏板的实际位置和最大踏板位置的比值。

虽然它是用于输入对传动系统的要求,但它也可以为传动和ASR算法提供关于驱动器操作的预设信息。

数据长度:1字节分辨率:0.4%/位递增,从0 % 开始计算数据范围:0%到100%类型:测量值可疑参数编号:91参考: 5.3.65.2.1.9发动机转速这是指转过720度最小曲轴角的速度除以气缸的数目所得到的实际发动机转速。

数据长度:2字节分辨率:0.125 rpm/位递增,从0 rpm开始计算(高位字节分辨率=32 rpm/位)数据范围:0到8031.875 rpm类型:测量值可疑参数编号:190参考: 5.3.7J1939是一种支持闭环控制的在多个ECU之间高速通信的网络协议冈。

主要运用于载货车和客车上。

它是以CAN2.0为网络核心。

表1介绍了CAN2.0的标准和扩展格式,及J1939协议所定义的格式。

表1则给出了J1939年的一个协议报文单元的具体格式。

可以看出,J1939标识符包括:PRIORTY(优先权位);R(保留位);DP(数据页位);PDU FORMAAT(协议数据单元);PDU SPECIFIC(扩展单元)和SOURCE ADDRESS(源地址)。

而报文单元还包括64位的数据场。

表1CAN2.0的标准和扩展格式及J1939协议所定义的格式由表1:可得到如下计算CAN总线帧标识符的公式:CAN_ID = [占3位的优先级(P)00B]H‘+’[参数组编号(PGN)D]H‘+’[源地址]H注:B为二进制;D为十进制;H为16进制,最终均强制转换为16进制。

‘+’代表字符串按顺序联接在一起。

对于油门位置信息:优先级3,参数组编号61443D,源为00H,即来源于发动机1则AcceleratorPedalPosition=[01100B]H‘+’[61443D]H‘+’[00H]H=0CH‘+’F003H‘+’00H=0CF00300H因此可以得到:(三)软件设计1. 硬件的资源分配在设计软件之前,一定先进行硬件的资源分配,即进行信号采集,通讯,控制输出等的通道配置。

如表2。

表2 控制器硬件资源分配2. 软件流程分析实际的发动机转速控制是很复杂的,为简化处理,假定喷油器控制使能时,代表喷油量增大,转速增加,喷油器控制清零时,代表喷油量减小,从而转速减小。

程序流程如图8。

图8 发动机转速控制流程3. 程序设计要点分析(1)总线标识符的设定为了实现程序的良好维护性,一般定义标识符,以代替实际的数字帧号。

//定义加速踏板位置(油门)CAN总线标识符AcceleratorPedalPosition,ID号0CF00300unsigned long AcceleratorPedalPosition =(((0x0CF00300<<1)&0x3FF80000)<<2)|((0x0CF00300<<1)&0x000FFFFF|0x00180000);#define AcceleratorPedalPosition_0 ((AcceleratorPedalPosition&0xFF000000)>>24)#define AcceleratorPedalPosition_1 ((AcceleratorPedalPosition&0x00FF0000)>>16)#define AcceleratorPedalPosition_2 ((AcceleratorPedalPosition&0x0000FF00)>>8)#define AcceleratorPedalPosition_3 (AcceleratorPedalPosition&0x000000FF)对于XDP512单片机而言,是由CAN0TXIDR0、CAN0TXIDR1、CAN0TXIDR2、CAN0TXIDR3是来保存扩展帧的标识符的。

总线扩帧:为上图蓝色与红,第0字节为MID28-MID21;第1字节为MID20-MID18+空2位+MID17-MID15;第2字节为MID14-MID7;第3字节为MID6-MID0+空1位。

因此对于扩展帧标识符的定义是:(1)整个标识符左移1位,(0x0CF00300<<1),是为了空出第3字节的最低的空1位;之后再按位与0x3FF80000,((0x0CF00300<<1)&0x3FF80000),是为了得到高11位,其余位均去除;之后再左移两位,(((0x0CF00300<<1)&0x3FF80000)<<2,是为了空出第2字节的中间空的两位。

这样就得到了待存入标识符寄存器中的31-19位;(2)整个标识符左移1位,(0x0CF00300<<1),是为了空出第3字节的最低的空1位;之后再按位与0x000FFFFF,(0x0CF00300<<1)&0x000FFFFF,是为了得到低20位,其余位去除,注意第19位为扩展标识位,扩展帧时必须为1,因此不是按位与0x0007FFFF。

之后再按位或,((0x0CF00300<<1)&0x000FFFFF|0x00180000),即可得到低20位在标识符寄存器中的排列。

注意,第20位,扩展模式下,设置为1,因此是按位或0x00180000。

(3)将1、2步得到的值按位或,即得到所需符合S12单片机所要求的标识符。

相关主题