为机床工具企业提供深度市场分析                     

用户名:   密码:         免费注册  |   点击 进入企业管理  |   申请VIP  |   退出登录  |  

English  |   German  |   Japanese  |   添加收藏  |  

车床 铣床 钻床 数控系统 加工中心 锻压机床 刨插拉床 螺纹加工机床 齿轮加工
磨床 镗床 刀具 功能部件 配件附件 检验测量 机床电器 特种加工 机器人

博古通
搜索
热门关键字:

数控机床

 | 数控车床 | 数控系统 | 滚齿机 | 数控铣床 | 铣刀 | 主轴 | 立式加工中心 | 机器人
      用户频道:    应用案例 |  汽车 |  模具 |  船舶 |  电工电力 |  工程机械 |  航空航天 |  仪器仪表 |  通用机械 |  轨道交通 |  发动机加工 |  齿轮加工 |  汽轮机加工
您现在的位置:数控机床市场网>汽车>
基于Simulink 的小型汽油机ECU 底层驱动开发
2017-1-10  来源:江苏大学汽车与交通工程学院  作者:李捷辉,汤万飞,尹必峰

      摘要:针对小型汽油机电控系统,选择freescale MC9S12P128 芯片作为微处理器,使用Simulink 软件模块化的开发方式,设计出适用于小型汽油机ECU 的通用底层驱动模块。该方式可使底层驱动软件与发动机的控制软件完全独立,并具有便于移植和调试等优点。对电控系统底层驱动软件进行了输入信号采集试验、硬件在环试验和发动机台架试验,试验结果表明,开发的底层驱动模块程序可靠性好,实时性和快速响应能力强,满足发动机控制需求。

      关键词:小型汽油机;底层驱动模块;电控系统;软件开发

      通用小型汽油机具有结构紧凑、性能可靠、可移动性好以及维修方便等优点,被广泛用于园艺修剪、应急发电、农业灌溉、小型工程机械等领域[1] 。随着我国小型汽油机产量的迅速增长[2] ,能耗和排放增加,电控技术成为解决这些问题的最有效方法之一。为使电控小型汽油机具有强动力、低油耗、低排放和低噪声等性能优点,其电控系统不仅需要完善的控制策略,同时性能可靠、实时性强的ECU 底层驱动也是必不可少的一部分[3 ] 。底层驱动程序是发动机ECU 控制程序实施的基础,其实时性、可靠性和快速响应能力是影响发动机性能的重要因素,因此采用Simulink 软件模块化的开发方式,开发一整套便于调试和移植的ECU 底层驱动程序,对小型汽油机电控系统的开发具有重要意义。

      1 .汽油机ECU 底层驱动方案设计

      底层驱动程序是发动机电控系统的重要组成部分,是连接软件和硬件的桥梁。设计底层驱动程序时,首先根据发动机控制系统的总体流程来统计其需要的硬件资源,然后通过硬件资源确定ECU 所选用的微控制器芯片类型和传感器、执行器等零部件,由此确定发动机所需设计的驱动模块。

      1 .1 ECU 硬件资源统计

      小型汽油机电控系统的控制流程:传感器采集发动机各工况的信号参数,由控制程序对信号进行处理,并向各执行器发出相应的控制信号,控制汽油机平稳运行[4 ] 。电控系统从硬件的总体结构出发,主要由输入电路、微控制器电路以及输出电路组成(见图1) 。输入电路接收各传感器模拟信号,并对其进行处理,转换为数字信号;输出电路接收到微控制器的信号后驱动执行器工作。由硬件资源可知底层驱动模块包括输入与输出模块、齿中断模块、喷油模块和点火模块。其中输入与输出模块分为模拟量输入模块、数字量输入模块和数字量输出模块,齿中断模块分为输入捕捉模块和定时器时间输入模块。


图1  小型汽油机ECU 结构框图

      1 .2 ECU 微控制器选型

      由小型汽油机电控系统硬件资源确定主芯片类型和各传感器、执行器与主芯片连接的通道数,并对底层驱动程序进行具体设置。其电控系统选用MC9S12P128 芯片作为MCU ,采用64 引脚、LQFP(Low‐profile Quad Flat Package)形式封装。该芯片的主要功能:集成带有奇偶校验功能的128 kbflash ,其中包含4 kb data flash ;集成6 kb 静态内存;带有内部过滤器的锁相环倍频器;4 ~ 16 MHz振幅可控皮尔斯振荡器;定时器模块提供8 通道16 位输入捕捉、输出比较、计数器、脉冲累加功能;6 个8 位PWM 通道和10 通道12 位分辨率模数转换器;串行外围设备接口、串行通信接口,支持LIN总线通信和1 个控制器局域网模块[5‐7] 。该芯片不仅能满足小型汽油机电控系统的功能要求,而且具有价格低廉、性能可靠和通用性高等优点。

      1 .3 ECU 软件组成

      小型汽油机电控系统软件包括底层驱动程序和发动机控制程序。发动机控制程序是电控系统的核心,但控制程序需要通过底层驱动程序方能实现对传感器和执行器的控制。底层驱动程序是整个发动机系统控制软件的基础部分,它承担着整个系统软件的调度和控制器输入输出的工作,即调度各功能软件模块,控制整个系统各部件之间协调工作,包括传感器、执行器、控制器内部的电路模块,同时还可实现输入输出功能[8 ] 。虽然底层驱动软件往往被主控制软件开发者所忽视或被专业开发人员所固化隐藏,但它直接影响到控制系统可靠性、实时性和快速响应能力。

      2 .底层驱动模块软件设计

      采用传统手写C 语言代码的方式设计底层驱动程序不仅费时、费力、易错,还不便于调试和移植。由于底层驱动代码对于发动机控制系统来说相对固定,无需经常改动,所以利用Simulink 中S‐Function将底层驱动封装成模块型式,可直接拖动到模型中,这种图形化界面配置方式具有操作简单、便于调试和移植、参与整体代码生成、实现算法与底层驱动的无缝集成等优点[9‐10 ] 。

      本研究采用Simulink 软件模块化的设计方式,针对小型通用汽油机电控系统开发底层驱动程序。开发底层驱动程序首先根据Simulink 软件编译底层驱动模块的工作原理,制定编写底层驱动模块的流程,主要流程包括:编写C MEX S‐Function 文件、编写TLC 脚本文件和封装驱动模块。然后通过设计流程开发底层驱动模块。在设计小型汽油机电控系统底层驱动模块时,根据电控系统运行时执行任务的先后循序设计所需底层驱动程序,其中包括输入与输出模块、齿中断模块、喷油模块和点火模块。这些驱动模块分别用于驱动传感器信号采集、电磁阀与故障灯控制、捕捉齿信号进行转速计算与相位判断、驱动喷油器和点火线圈。最后将设计完成的底层驱动模块进行硬件在环测试和台架试验测试,验证底层驱动模块工作的实时性、可靠性和快速响应能力。

      2 .1 底层驱动模块软件设计流程

      由Simulink 软件编译驱动模块的工作原理可知,设计底层驱动模块主要由编写C MEX S‐Function、编写TLC 脚本文件和封装模块三步组成。

      1) C MEX S‐Function 编写

      编写S‐Function 用来扩展Simulink 环境性能,可使用C 语言编写,但需要用MEX 工具编译后方可使用。S‐Function 文件主要分为三部分:文件头部、回调函数和文件尾部。首先在文件头部定义函数名和函数级别以及加入必要的头文件。其次通过编写回调函数来定义参数个数、输入和输出口的个数、采样时间等。其中主要的回调函数包括:mdlInitializeSizes函数用于指定SimStruct 中各参数的值,如模块输入或输出个数;mdlInitializeSample‐Times 函数用于指定模块的采样时间;mdlOutputs函数用于计算模块输出;mdlTerminate 函数用于设置仿真终止时需要执行的动作[11 ] 。最后编写文件尾部作为MEX 文件与Real‐Time Workshop 的接口。

      2) TLC 脚本文件编写

      目标语言编译(Target Language Compiler ,TLC)文件的编写主要包括两部分。首先需要定义文件名,必须和S‐Function 文件中的函数名一致,之后通过函数设置模块的代码生成形式。主要使用的函数有:BlockTypeSetup(block ,system)函数用于定义全局变量、生成部分函数声明或初始化代码;Start(block , system)函数用于初始化代码;Outputs( block , system ) 函数用于生成模块执行代码[12 ] 。

      3) 封装模块

      模块封装的作用是为mdlRTW 函数中定义的参数制作配置界面,并对模块外观进行修饰,以增强模块的易用性。封装过程主要包括填写S‐Function函数名、指定mdlRTW 回调函数中定义的参数和对模块外观进行修饰。完成底层驱动模块软件流程设计后,根据小型汽油机电控系统上电运行工作原理,分别进行MCU 初始化、输入与输出、齿中断及喷油与点火等模块驱动程序设计。

      2 .2 MCU 初始化模块

      MCU 初始化模块用于设置MCU 总线频率,由于MC9S12P128 芯片可设置的最高总线频率为32 MHz ,为了提高芯片计算能力,所以通过外部晶振锁相环将总线频率设置为32 MHz 。为提高底层软件的通用性和调试的便捷性,设置了8 MHz 和16 MHz两种外部晶振,在自动生成代码时,RTW会根据不同的选择生成不同的总线时钟配置代码[13 ] 。该模块最后需要设定完成代码生成后的动作,分别包括:Build ,指代码生成后自动调用编译器完成代码编译;Run ,指编译后自动下载到目标硬件ECU 中;Null ,指仅生成C 语言代码,不调用编译器。

      2 .3 输入与输出模块

      输入与输出底层驱动模块包括:模拟量输入模块、数字量输入模块和数字量输出模块。模拟量输入模块的功能是对AD 模块进行初始化设置和输出指定通道的AD 转换值。由于算法模型中需要多个模拟量输入模块,但模块的初始化代码只需执行一遍,为此需定义一个全局变量用于控制初始化代码只生成一遍。AD 模块初始化设置如下:

      void ADC _Init(void)

      {ATDCTL0 = 0x05 ;// 第5 通道反转

      ATDCTL1 = 0x50 ;// 设置采样精度

      ATDCTL2 = 0x02 ;// 清除标志位

      ATDCTL3 = 0xB0 ;// 设置转换通道数

      ATDCTL4 = 0x33 ;// 设置时钟

      ATDCTL5 = 0x30 ;// 设置采样方式}

      模拟量输入模块只输出一个通道转换值,数据类型为无符号整型,并且需要设定打开相应的通道采集模拟量信号。以机体温度采集驱动模块为例(见图2) ,机体温度采集驱动模块采集到小型汽油机的机体温度信号,将该模拟量信号转化为数字量信号输出给信号滤波模块filter5 ,该信号滤波模块采用算数平均滤波法对机体温度信号进行处理,可减少其他信号的干扰,最后得到汽油机的机体温度信号。

      数字量输入模块用来接收MC33812 驱动芯片故障反馈信号,包括喷油故障、点火故障和油泵继电器故障;数字量输出模块用来控制故障灯和油泵继电器。输入与输出的数据类型均为布尔量。


图2  机体温度采集驱动模块

      2 .4 齿中断模块

      齿中断模块包括输入捕捉模块和定时器时间输入模块。输入捕捉模块用于产生周期性的齿中断任务。该模块只有一个输出端口,不是用来传递数据,而是在捕捉到齿信号上升沿后调用function‐call 子系统。输入捕捉模块的主要设置如下:

      % function Start(block ,system) Output

      TSCR1 = 0x90 ;//定时器使能、清除标志位

      TSCR2 = 0x05 ;//设置时钟周期

      TIOS = 0x80 ;//通道7 为输入捕捉方式

      TCTL3 = 0x40 ;//设置捕捉上升沿方式

      TIE = 0x80 ;// 允许通道7 中断

      % endfunction

      定时器时间输入模块的功能是记录定时器的时间,程序中需要输出每次输入捕捉模块捕捉到齿信号的时刻,由此可以判断曲轴相位和计算发动机转速。

      2 .5 喷油与点火模块

      设计的喷油与点火底层模块用于驱动单个喷油器和点火器,使用定时器模块设定0 通道和2 通道为输出比较功能。模块分别定义3 个输入端口,分别为使能标志、喷油(点火)信号起始时刻和喷油脉宽(点火闭合时间) ,数据输入类型分别为布尔量、无符号整型、无符号整型。模块需要在子系统中调用,所以采样时间设置为继承。为了保证数据能及时传递给底层模块,需要设置每个输入端口信号直接馈通。TLC 文件中设置定时器通道为输出比较模式,并先利用前两个输入信号控制驱动信号起始时刻,然后通过一个中断服务程序和第3 个输入信号控制喷油或点火信号持续时间。以喷油底层驱动模块为例,其对定时器模块的设置如下:

      TIOS_IOS0 = 1 ;//通道0 为输出比较方式
      if(Enable)
      {
      OCPD_OCPD0 = 0 ;

      TCTL2_OM0 = 1 ;

      TCTL2_OL0 = 1 ;//输出高电平

      TC0 = Injection Time ;//设置喷油始点

      TIE_C0I = 1 ;//允许输出比较中断

      }
      Else

      {

      TIE_C0I = 0 ;//禁止中断

      OCPD_OCPD0 = 1 ;//禁止引脚

      PTT_PTT0 = 0 ;

      }

      输出比较中断设置如下:

      void interrupt 8 Fuel_Control_Isr(void)

      {

      TC0 = TC0 + Fuel Pulse ;//设置喷油脉宽

      TCTL2_OM0 = 1 ;

      TCTL2_OL0 = 0 ;//输出低电平

      TIE_C0I = 0 ;//禁止中断

      3 .试验结果及分析

      为保证小型汽油机电控系统底层驱动模块工作的实时性、可靠性和快速响应能力,进行试验研究。试验分为三部分:首先验证模拟量输入模块的底层驱动程序;其次进行硬件在环测试,验证底层驱动程序的完整性;最后选用170F 电控汽油机进行台架试验。

      3 .1 输入模块底层驱动程序验证

      使用信号发生器、齿盘、油门踏板和示波器等模拟发动机运行时产生的信号。其中信号发生器用来模拟发动机各传感器输出电压信号;齿盘由电机驱动,结合曲轴位置传感器模拟发动机运转时产生的磁电信号;踏板可以控制电机的转速,以此模拟发动机转速的变化;示波器用来采集各驱动信号。试验首先通过采集传感器信号来验证模拟量输入模块的底层驱动程序,采集的传感器信号包括蓄电池电压(vbat) 、节气门位置(tps) 、机体温度(etemp) 、进气压力(map)和进气温度(atemp)信号。测试过程如下:

      1) 将传感器信号对应的ECU 引脚与模拟信号发生器连接;

      2) 将底层驱动模块与测试软件结合,生成C 语言代码下载到ECU 中;

      3) 将信号发生器旋钮从最小旋到最大,通过Codewarrior 实时监测所采集到的数据。

      传感器信号采集结果见图3 。在信号发生器电压从0 V 增大到+ 5 V 过程中,采集到的数据除vbat 外其余数据都从0 增大到4 095 ,有极小的误差是由于信号发生器的不精确和ECU 电路的设计引起的,属于正常误差范围,信号的变化规律与理论值基本一致。ECU 直接由稳压电源供电,因此测试中vbat 的值保持不变。说明模拟量输入模块功能正常,能准确地采集各传感器的信号。


图3  传感器信号采集

      3 .2 硬件在环测试

      通过对底层驱动输入量精确测试,保证了发动机输入信号的可靠性和实时性。为验证控制系统能否准确输出驱动信号,编制了专用验证程序进行硬件在环测试。验证模型通过周期性任务调用喷油、点火驱动任务,用示波器采集喷油与点火驱动信号波形。分别改变喷油与点火底层模块的输入数据,包括喷油信号起始时刻偏移量、喷油脉宽、点火信号起始时刻偏移量、点火闭合时间。通过对采集的驱动信号波形的变化进行比较分析,验证喷油与点火底层驱动程序的准确性。

      模型中喷油与点火任务的周期为20 ms ,分别用IT ,FP ,ST ,SD 表示喷油信号起始时刻偏移量、喷油脉宽、点火信号起始时刻偏移量、点火闭合时间。第1 组数据:IT = 1 000 ,FP = 5 000 ,ST =1 000 ,SD = 1 500 ;第2 组数据:IT = 1 000 ,FP =8 000 ,ST = 4 000 ,SD = 3 000 。采集到的波形见图4 。上方波形为喷油信号,下方波形为点火信号,由图可见,各信号的频率均为50 Hz ,与模型设置的20 ms 任务周期一致,证明了齿中断模块的准确性。

      第1 组数据中IT 和S T 相等,所以喷油与点火信号的起始时刻相同。第2 组数据中ST 大于I T ,所以点火信号比喷油信号的起始时刻延迟。此外, FP和SD 的改变均会引起对应输出波形的占空比的变化,表明喷油与点火底层驱动模块能够准确对输出数据作出反应,可以实现对发动机喷油与点火的精确控制。


图4  喷油与点火模块检测波形

      3 .3 台架试验测试

      选用170F 电控汽油机进行台架试验对底层驱动程序进一步验证。分别选取发动机常用工况,即稳态工况、瞬态工况和起动工况,使用示波器采集发动机不同工况下曲轴位置信号、进气压力信号、喷油驱动信号和点火驱动信号等,通过这些驱动信号之间的关系分析底层驱动程序的可靠性和快速响应能力。

      首先,发动机在稳态下, 选取转速为2 000 r/min的空载工况进行台架试验测试。如图5所示,上方为喷油器低端驱动信号,下方为进气压力信号,每一个工作循环内,喷油器喷油时刻和进气压力开始减小时刻一致,并且一个工作循环内只喷一次油,验证了喷油底层驱动程序可靠性好、快速响应能力强。


图5  喷油与进气压力信号

      图6 示出发动机2 000 r/min ,空载工况时的喷油与点火驱动信号的相位关系,两者是近似交替地工作,二者相差的角度约为280° ,与图5 所示情况基本一致。并且一个工作循环内完成一次喷油和点火,符合控制软件中设计的任务执行目标,验证了底层驱动程序的可靠性。


图6  喷油与点火驱动信号

     其次,选取瞬态工况进行底层驱动试验测试。图7 示出发动机转速从1 500 r/min 突然增加到2 800 r/min时的驱动信号波形,上方为喷油器低端驱动信号,下方为曲轴位置信号。由图可知,当发动机喷油脉宽突然增加时,曲轴位置信号波形周期随之减小,表示发动机转速增加。曲轴位置信号波形周期随喷油脉宽增加而减小,验证了底层驱动程序的快速响应能力强。


图7  瞬态工况驱动信号

    最后,选取发动机起动工况进行底层驱动试验验证。图8 示出喷油器低端驱动信号和曲轴位置信号。由图可知,发动机在刚开始起动时由于转速较低(曲轴位置信号波形周期较长) ,未达到起动要求,没有低端驱动信号,喷油器不工作。当发动机转速增大(曲轴位置信号波形周期减小) ,出现喷油器低端驱动信号,喷油器开始工作。两种波形变化与发动机控制策略相一致,进一步验证底层驱动程序的可靠性较好。


图8  起动工况驱动信号

      4 .结束语

      根据底层驱动模块的设计思想,采用Simulink软件模块化的开发方式,针对小型汽油机电控系统设计硬件底层驱动软件流程和驱动模块。主要模块包括输入与输出模块、齿中断模块以及喷油与点火模块。自主开发了具有便于调试和移植、可参与整体代码生成、实现算法与底层驱动的无缝集成等优点的底层驱动模块程序。对电控系统底层驱动模块进行了输入信号采集试验、硬件在环试验和发动机台架试验,结果表明,开发的底层驱动模块程序能够满足小型汽油机ECU 控制要求,并且其可靠性好,实时性和快速响应能力强。
    投稿箱:
        如果您有机床行业、企业相关新闻稿件发表,或进行资讯合作,欢迎联系本网编辑部, 邮箱:skjcsc@vip.sina.com
更多相关信息
  • target=_blank>超越离合器在机床上的应用
  • target=_blank>飞行人员智能飞行体检仪的设计与应用
  • target=_blank>风电齿轮箱高速轴轴承振动的应用分析
  • target=_blank> 缸体曲轴孔珩磨原理及实际问题解决
  • target=_blank>钛合金精度孔加工 实现动部件高效生产
新闻资讯
更多
  • target=_blank>MB2120B型数控内圆磨床电主轴变频器的改造
  • target=_blank>【雷尼绍】RESOLUTE™与MELSERVO-J5强强组合,实现更快速、精确、可靠的运动控制
  • target=_blank>NSK开发低摩擦轮毂单元轴承 可增加电动汽车续航里程
  • target=_blank>T68卧式镗床进给系统的数字化改造
  • target=_blank>AGV+协作机器人在零件数控机床加工上下料中的应用
  • target=_blank>2020年7月高端装备制造业、工业机器人,行业运行简述
  • target=_blank>浅谈线切割机床中走丝与慢走丝
  • target=_blank>ANCA整体PCD铣刀 —— 提高生产效率带来新的发展机遇
  • target=_blank>伊斯卡,不止专注于金属加工
  • target=_blank>EMAG成功收购Scherer Feinbau(舍勒公司),极大扩展了公司产品范围以及客户群体