CAN总线的客车轻便换档系统设计与实现(一)

1 引 言
 
  随着社会经济的快速发展,城市交通曰益繁忙,交通安全问题越来越受到人们的重视。

  在车辆行驶过程中,驾驶员必须根据道路、交通条件的变化,及时对车辆行驶方向和行驶速度进行调节,使汽车获得良好的行驶性能和燃油经济性能。频繁换档使驾驶员容易疲劳,注意力分散,致使交通事故增加。本文介绍了一种基于CAN总线的客车轻便换档系统的设计,利用机电一体化技术实现了客车换档的轿车化。系统主要是结合客车的换挡系统进行的开发设计,包括前后两个节点,前置节点为手柄控制发令节点,后置节点为执行控制节点,系统总体框架图如图1所示。



2 系统应用设计

2.1 系统硬件结构及控制原理

  为使系统达到反应灵敏、可靠性高的设计要求,前后节点的控制单元均采用Philips公司生产的P87C591单片机,他成功包括了Philips半导体SJAl000 CAN控制器的PeliCAN功能,符合系统设计要求。主控系统CAN通信部分电路图如图2所示[1]:



  系统中挡位、车速和发动机转速信号的采集由霍尔元件A3144EU来完成,信号经过放大后,通过光电耦合器TLP521隔离,被送到CPU中。CPU经过逻辑运算后,将输出信号经过光电耦合器隔离后,送至大功率的场效应管,由场效应管来驱动电磁阀动作,以控制气缸动作来完成相应档位的变换。

  系统的主要控制过程为:前置节点根据手柄位置的不同以及离合开关的开合实时采集信号并经过逻辑判断处理成档位命令,通过CAN总线传输到后置节点,后置节点接到档位命令后,结合车速、发动机转速及当前挡位对换档时机进行判断,然后向执行器发出动作指令。执行器按指令要求使相应的电磁阀开始动作,从而控制对应气缸动作,来实现挡位的变换。在挡位转换完成后,还要对反馈信号处理,确定换挡动作完成后,再做出下一步的操作。车型有5个上挡位和一个倒挡位,采用电控气操作方式,其具体挡位与电磁阀位置如图3所示。



  如图3所示,当阀1通气、阀2断气时,活塞被推到气缸右端,通过活塞杆把拨叉推到预定位置,将此位置定义为KA层;当阀1断气、阀2通气时,定义为KC层;当两个阀都断气,由于变速箱内回位弹簧的作用,将会自动定位到中间层,定义为KB层。层位选定后,再通过相应位置上两个上档气阀的作用以实现不同方向的上下档动作,从而完成预定的选档和换档动作。

2.2 系统软件设计

  实际应用对系统的实时性与可靠性要求较高,在软件设计中采用了多任务实时操作系统μC/OS-Ⅱ的编程方法,即将应用程序分解为若干个独立的进程,再另外创建一个监控进程,监视各个进程的运行情况,这样就保证系统运行的实时性和可靠性[2]。

系统采用Keil C51编译器,结合所用单片机P89C591的技术特点,移植一个支持P89C591的μC/OS-Ⅱ操作系统的工作内容包括:

(1) 在OS_CPU.H中用#define设置一个常量值用于控制任务堆栈的增长方向。

(2) 在OS_CPU.H中声明10个数据类型。

(3) 在OS_CPU.H中用#define定义3个宏。

(4) 在OS_CPU.C中编写6个简单的C语言函数,即初始化任务堆栈、任务创建钩挂函数、任务删除钩挂函数、任务切换钩挂函数、统计任务钩挂函数和定时钩挂函数。

(5) 在OS_CPU_A.ASM中编写4个汇编语言函数。

系统共需创建4个任务,系统任务分配情况如图4所示。



  CAN总线扫描任务定时扫描CAN总线的各寄存器,用于接收前置节点发送的手柄位置信号。

  显示任务主要担任显示、刷新等职责,用于调试过程中观察动作的完成情况。

  系统主任务用于执行数据的逻辑分析判断及超限报警等功能。数据采集任务将实时扫描各个数据采集端口,用于采集车速,发动机转速等参数。

  主函数负责系统的初始化以及任务的创建、启动等。

  各个任务之间通过信号量、消息队列等途径可以相互通信,以保证任务执行得实时与同步。

3 系统通信机制设计

  轻便换档系统对通信系统的要求是:数据传输可靠,实时性高,传输速率高,误码率低[3]。CAN总线作为一种有效支持分布式控制或实时控制的串行通信网络,具有很强的灵活性、简单的扩展可能性、优良的通信实时性以及通信的可靠性和检错能力,能够应用于各种苛刻的电子环境,已经成为汽车的首选网络通讯总线形式。

  CAN总线的模型结构只有3层:物理层、数据链路层和应用层,传输介质为双绞线,通信速率最高可达1 Mb/s(40 m),其通信方式灵活,无需站地址等节点信息,采用非破坏性总线仲裁技术,满足实时要求。

  在研究CAN 2.0B规范的基础上,采用自定义通讯协议的方案实现了系统前后两个节点的通讯。前节点发出命令,后节点接收后不发确认信号,前节点收到后节点的信息后判断是否正确,如果不正确或在规定的时间内收不到,则重新发命令,重发超过规定的次数为通讯故障;后节点发出信息,前节点接收后不发确认信息,前节点在规定的时间内收不到则为通讯故障。节点数据帧基本结构定义如下: