对于中国工程师来说,嵌入式系统在发动机燃油控制方面的应用是一个全新的课题,其主要特点是机电一体化,工程师必须对机电系统的基本工作过程有全面的了解。本文以电控柴油机引擎控制的产品Centinel为例,说明其嵌入式系统需要关注的问题,包括产品要求、实现方案、具体实现以及软件结构等四个方面,值得中国从机电一体化设计工程师参考。 Centinel燃油管理系统(AOS)是一种可延长电控柴油发动机燃油添加间隔的嵌入式系统,它可周期性地从发动机的曲柄轴箱中去除少量旧油,并用新油替代之。旧油被送到发动机的燃料箱,在那里与燃料混合,并在正常燃烧条件下燃烧。 Centinel可拓展柴油卡车、
拖拉机、发电机及其它设备的工作时间,缩短燃油更换和其它常规维护方面花费的时间。Centinel将旧油作为燃料,这样不但无需废油处理,而且还可减少成本并控制环境污染。 实际上,具有类似功能的机械系统已问世多年,但是,由于目前业界提出了复杂的发动机控制器和严格的空气质量标准,全机械方案已不能满足要求。Centinel在维持燃油质量方面要优于机械系统,因为它包含一种灵巧的算法,能根据发动机工作负荷的大小来替换燃油,而且它配备了机械设备无法实现的故障检测逻辑。 Centinel设计者从一开始就要求这种装置要具备高可靠性。如果燃油质量恶化或油位下降,发动机都可能受到极大的损害。由于Centinel要从发动机中除油,它必须采取必要的预防措施以确保油位和质量始终保持稳定,要解决这个问题很麻烦,因为目前尚未出现能够在柴油发动机内部恶劣条件下正常工作的、廉价的油位传感器。 在各种气候条件下,柴油卡车在高速公路上年行驶里程高达20万英里,建筑设备等工业机械需要数月的维护间隔,因此,要求Centinel必须经久耐用。为了尽可能维持商用柴油设备的高使用率,像Centinel这样的设备就不能经常维修而迫使整个设备闲置。 Centinel的软件性能要稳定,因为微控制器是一次性编程器件。一旦系统出厂,固件便不能更新。如果出厂后出现软件缺陷,所有的Centinel装置都必须替换。Centinel的价格也应适当。 实现方案 Centinel是一种机电设备,它包括TMS370微控制器、SAE J1587
汽车数据链接口、控制油进出发动机的机械活门组件、油位测量传感器,以及容纳新油的油箱。 在正常工作情况下,微控制器从J1587数据链接口读取发动机信息,以确定发动机的当前工作负荷,并检测是否发生与发动机和燃油相关的各种系统故障。这一信息可用于计算燃油燃烧率,并将之转换为一系列的电子控制脉冲,以便让燃油输送活门组件将旧油从发动机曲柄轴箱输送到燃料箱。 燃油输送活门的设计将旧油和新油活塞集成在同一装置,因此可将固定数量的旧油输送到燃料箱,并用同样数量的新油替换之。活门及相关铅管经过发动机加热,因此即便在寒冷天气燃油也能正常流动。 当新油箱空时,传感器就会报警,这时Centinel便延迟脉冲,直到加满油为止。发动机操作员仍需监视发动机曲柄轴箱的量油计,如果必要还得手工加油以替换发动机在正常工作期间内部燃烧的少量燃油。 具体实现 TMS370微控制器构成了该设计的基础。所选TMS370的型号包括256B板上RAM、8KB OTPROM、256B EEPROM、一个串行通信接口(SCI)、两个16位计数器、23个数字输入、一个8通道模拟-数字转换器,以及一个12MHz系统时钟。Centinel设计所用的其它器件还包括
电源调节及电源故障检测电路,以及一个用于连接发动机通信数据链路的SAE J1587数据链接口(类似于RS-485)。 为提高可靠性和耐用性,所有Centinel数据输入的值在使用之前都要通过软件和硬件两方面的验证。硬件检测输入和输出上的开路和短路,而所有输入值范围的检查则可阻止机械或电气故障情况下的不正确操作。 控制算法以固定的20ms间隔运行,并结合发动机工作负荷、气候及其它从发动机数据链路接收到的信息来计算正确的燃油率。因此,燃油更换频率是实时变化的,无论发动机的实际工作周期如何都可维持一定的燃油质量,一般是2万英里更换一次。 一旦计算出正确的燃油率,为了燃烧和替换所要求的燃油量,该值被传送到第二个算法以计算脉冲被传送到燃油输送活门组件的速度。这时控制逻辑是个难题,因为当新油油箱空、油冷或系统出现故障时,控制脉冲将被延迟。如果操作员将油箱加满新油、油热或系统故障得到修复时,控制脉冲就被加快传送,从而控制新油替换的量。 为尽量减少空气污染,EPA限定了柴油发动机的燃油量。为防止Centinel超出这一限定值,设计者采用了第三个算法以限制在所有情况下传送到燃油输送活门的zui大脉冲频率。由于这一限制,在一些极端情况下延迟脉冲的恢复可能要花费几个小时,甚至几天才能完成。 软件结构 软件的功能是配置微控制器的I/O硬件、定时器、串行通信端口、ADC及其它外设,然后处于等待中断状态。中断服务程序包含大量的Centinel代码,在需要多线程处理但缺乏操作系统调度程序的应用中,这种方法很常用。 周期性定时器产生的中断启动主控制环代码,该代码只有在成功完成时才复位硬件看门狗定时器。在计算结束时复位看门狗定时器可防止超时。如果代码执行时间过长,看门狗复位代码就被算法的迭代中断,zui终使看门狗定时器时间溢出。 另一个中断服务程序从串行端口接收到引擎数据链路信息。该代码包括一个简单的状态机,可解析输入数据包的数据和校验和,带无效校验和的数据包及超出范围的数据都被放弃。一个定时器可测量被成功接收的数据包之间的持续时间,如果检测到过长的延迟,将终止燃烧率计算。这样,当缺乏确定适当燃烧率所必需的引擎信息时,Centinel就不会输送新油。 还有一些中断服务程序强迫对TMS370的板上ADC进行周期性抽样,并将操作员关闭引擎所导致的电源故障告知Centinel,Centinel由点火开关启动。 不使用的中断向量由启动功能指针填充,当检测到不需要的中断时可重新启动系统。 Centinel的EEPROM可用来存储重要的连续数据,像所需燃油脉冲数和实际发送数。但是,这些数值不能在每一个控制循环中都得到更新,因为这样做会在Centinel的生命期结束之前大大超过EEPROM的写周期限制。相反,只有在关闭期间,在由内置于Centinel供电电路的电容所提供的200ms保持时间内,数据才能镜像到RAM并被写入EEPROM。 保持时间在可靠性和降低成本之间提供了很好的平衡(更大的值需要更大的电容),但它很接近于EEPROM的写周期时间。这意味着关闭期间几乎没有任何意外延迟的余地。由于EEPROM包含有关燃油燃烧状态的重要信息,除非设备出现故障,其内容必须在所有情况下保持稳定。 现场测试中出现了一个意想不到的问题:许多卡车司机喜欢特别高压无线电装置,这会造成卡车主供电系统(一般为12V DC供电)的电压波动,峰-峰值接近30V。这些电压波动可能导致Centinel供电线路出现故障,触发以外的EEPROM写操作,并影响系统性能。为解决这一问题,必须在Centinel现有的信号分析逻辑上添加额外的滞后作用代码,以防止无线电在使用时引起EEPROM更新,由此给出错误的电源故障提示。 本文小结 Centinel开发人员的宝贵经验是采用结构性设计工具并配合案例分析和故障模式研究,这样当进行编码时,软件就基本上达到了设计要求。 Centinel软件开发队伍坚持提前编写程序,从而使写出的应用程序几乎不存在任何缺陷,而且完全达到了要求。这些程序还包含附加控制逻辑,消除了大多数可能的软件错误,例如前面提及的EEPROM超时。 设计过程还采用了对等的评估过程,在zui终定型之前,程序和电路设计都必须经过其他开发人员的研究。这些“外眼”可帮助发现错误,或发现没有达到设计要求的地方,还促进了团队合作,让公司内更多的人参与Centinel的开发并分享其成功。 Centinel目前是Cummins引擎公司电控柴油机引擎系列产品之一。Centinel设计赢得了《OEM Off-Highway》杂志颁发的OEMmie奖,在Cummins公司内部被视为系统工程实践不断改进而获得优异产品的典范。