2. 武汉理工大学, 湖北 武汉 430063
2. Wuhan University of Technology, Wuhan 430063, China
船舶柴油机是船舶的动力源,其一旦故障将会使船舶失去动力,如果在恶劣海况下极易造成翻船,带来巨大的损失。而且人工监测可靠性和实时性都很差,所以柴油机监控系统是船舶不可或缺的设备。船舶监控系统的出现可以追溯到 20 世纪 60 年代,日本和丹麦将集中式电子监控系统首先应用于船舶。如今,在硬件上随着电子技术的快速发展,可靠性更高、性能更好的硬件芯片不断推出。在软件上提高软件可移植性和保障软件安全稳定运行的各类实时操作系统也不断推出和更新。加上市场对柴油机监控系统的要求也不断提高,对船舶柴油机监控系统进行软件和硬件升级具有很大的必要性。
目前,国外船舶柴油机监控系统研发设计的大型国际化公司Norcontrol,Lyngsø Marine A/S,Kongsberg Maritime,MAN B & W 等,都推出了成熟的商业化产品,技术一直处于领先的地位[1]。在国内,船舶柴油机监控系统起步较晚,功能简单且可靠性较低,大都是定制化产品,可移植性差不利于商业化。而且大部分系统基于裸机开发,这样的系统软件可靠性差且不利于软件的移植和后续开发。μC/OS-Ⅲ 是 Micrium 在 2011 年推出的第 3 代强实时性微内核,具有强实时性、硬件要求低和功能完善的特点。基于此,本文对基于μC/OS-Ⅲ 的船舶柴油机监控系统的硬件和 软件进行了设计以提高船舶柴油机监控系统的可靠性。
1 主机监控系统设计监控系统在结构上可以分为:集中式船舶监控系统和分散式船舶监控系统 2 种类型[2]。其中集中式是把所有数据采集、逻辑控制、显示和人机交互都由 1 台工控机完成,此设计虽然结构简单但可靠性较差。因为工控机任务较多一旦出现故障整个系统瘫痪。对于分散式是将采集、控制、安保和显示人机交互都分配给不同的 CPU 处理,并且其供电也分开,然后通过现场总线将它们组织起来形成一个系统。此类系统虽然结构复杂但分散了风险,提高了系统的可靠性。本系统将从分散式的角度进行设计。此设计中将整个模块划分为监测单元 MU(Monitoring Unit)、逻辑控制单元 LCU(Logical Control Unit)、主机安全保护单元 ESU(Engine Safety Unit)和负责数据存储和人机交互的工控机 4 个分立的单元,组成每个单元都有各自的CPU 处理器和电源。此系统总体设计框图如图 1 所示。
1) 信号采集模块 MU1 和 MU2
信号采集模块主要负责柴油机的状态参数信号采集、状态异常报警以及数据上传到集控室。集控室中会有报警灯以及蜂鸣器对报警进行警示。报警类型主要有状态参数越界报警、通信故障报警和硬件故障报警等。
2) 安全保护单元 ESU
这一模块的主要功能是对柴油机重要参数报警后发出停车信号。这些参数主要包含柴油机转速、润滑油压力油雾探测器报警信号和冷却水温度和来自采集单元的重要监测参数报警信号等。
3) 逻辑控制单元 LCU
这一模块主要负责柴油控制的逻辑判断。主要逻辑包括启动连锁逻辑、启动成功逻辑、停车逻辑以及一些报警信号判断。其中集控台发出的控制信号都由此单元处理比如复位、消音、加速、减速和控制权转换等。
2 μC/OS-Ⅲ 简介 2.1 采用操作系统的优势1) 提高系统可靠性。μC/OS-Ⅲ 已获得 3 项标准认证 DO-178B Level E up to Level A,IEC 61508 Safety Integrity Level 1 up to Level3 和 ISO 62304 Class A up to Class C [FDA 510(k)]。
2) 可以提高 CPU 的利用率。比如 μC/OS Ⅲ提供的延时函数 OSTimeDlyHMSM()和 OSTimeDly()在提供精确延时的同时还进行了任务切换,也就是说在延时期间 CPU 去执行其他任务。
3) 降低功耗。比如 μC/OS-Ⅲ 在没有任务执行时会运行空闲任务,用户可以使用空闲任务的钩子函数 OSIdleTaskHook()让 CPU 运行在低功耗状态。
4) 任务操作更加灵活。比如 μC/OS-Ⅲ 为任务提供了 5 种状态(睡眠态、等待态、就需态、运行态和中断服务态)并且提供了大量 API 函数供用户使用比如任务的挂起函数 OSTaskSuspend()与解挂函数 OSTaskResume()、时间片轮转调度函数 OSSchedRoundRobinCfg()等。
5) 工程扩展更方便。只需添加不同的应用函数即可,而且工程在不同平台上的移植更方便。官方提供了很多标准扩展比如 GUI、TCP/IP 等。
6) 缩短工程开发周期。在操作系统模式下一个工程可以分解成若干子工程同时开发最后由集成到操作系统中[3]。
2.2 实时操作系统(RTOS)的比较对于 RTOS 种类繁多,比较知名的有美国 WindRiver 公司的 VxWorks,微软公司的 Windows CE,Linux,Micrium 公司的 μC/OS 系列,FreeRTOS,eCos 等。VxWorks 具有可裁剪微内核结构、高效的任务管理、灵活的任务间通信、微秒级的中断处理、支持多种物理介质及标准的完整的 TCP/IP 网络协议。但价格昂贵且不开源,一般应用于军事航空领域。Windows CE 是非开源、实时性一般且价格较高的操作系统。Linux 的版本较多,其中应用较多的是 μClinux,其最大特点在于针对无 MMU 处理器设计,可以利用功能强大的 Linux 资源,因此适合开发对实时性要求不高的小容量、低成本的各类产品,特别适用于开发与网络应用密切相关的嵌入式设备或者 PDA 设备。μC/OS 是一个结构简单、功能完备和实时性很强的开源的嵌入式操作系统,适合于广大嵌入式系统开发人员和爱好者入门学习,以及高校教学和科研。RreeRTOS 是一个完全免费结构简单开源的操作系统,但其扩展性和可靠性不如 μC/OS。eCos 最大特点是配置灵活,而且是面向深度嵌入式应用的,很适合用于一些商业级或工业级对成本敏感的领域。
综上所述,本系统采用 μC/OS 系列中的最新版本 μC/OS-Ⅲ,它具有向上兼容性。μC/OS-Ⅲ较之前版本的改进如下[3]:
1) 任务数目不受限制(μC/OS-Ⅱ最大数目为 255)。
2) 支持同优先级下的时间片轮转调度。这就使同优先级的任务数不止一个(μC/OS-Ⅱ是不支持的)。
3) 无需调度的发送机制(μC/OS-Ⅱ不支持)[4]。
本系统采用的 CPU 为 STM32F207ZG 单片机,内核为 Cortex-M3,经调试该单片机可以很流畅地运行μC/OS-Ⅲ,为后续嵌入式软件开发提供了良好的软件平台。[5]
3 监控系统下位机硬件设计对于大型船舶柴油机的监控需要测量的状态参数主要有燃油温度和压力、滑油温度和压力、冷却水温度压力和水位、进排气温度、连杆轴承和主轴承温度、曲柄箱油雾浓度、盘车机状态、主机和增压器转速等。需要的输出的有指示灯的控制、按钮状态识别、转速表控制、启动空气的控制等[6]。上下位机之间也需要通信装置。除了排气温度较高的温度峰值,其他温度峰值均小于 200 ℃低温为常温,所以使用 PT100 就可以满足其测量要求(常用 PT100 量程为-50 ℃~450 ℃),而且其线性度较好精度高。对于排温一般采用热电偶测量。压力可采用压力变送器,转换成 4~20 mA 电流测量。转速采集采用磁敏电阻传感器,将转速转换成脉冲信号进行采集。剩下的是开关量信号的采集。压力和热电偶采集电路较为简单,主要是进行一定的硬件滤波(可采用一般的 RC 滤波电路)、信号放大和隔离。下面主要对 PT100、带断线检测的数字量采集和频率量采集电路进行介绍。
3.1 PT100 电路设计为提高精度 PT100 电路设计采用三线制以去除线电阻的影响。具体的设计框图如图 2 所示。
因为测点较多,为节省 IO 口资源可使用多路开关进行扫描式采集。XTR105 为 PT100 提供了精准的 0.8 mA 电流并将 PT100 电阻值转成 4 mA +VIN
(
断线检测功能对于重要开关量的监测是必不可少的,其电路设计如图 3 所示。
从图中可知当外界断线时 2 个比较器 LM339 的正向输入端都是 + 24 V,比较器都会正向饱和,输出端输出 + 24 V,光耦的右端处于截止状态,单片机 DI1 和 DI2 读到的电平都是高电平。当外部无断线且开关处于常开时,2 个比较器的正向出入端为都为 + 12 V,所以 U1 输出 + 24 V 而 U2 输出 GNDX,此时到单片机端口的状态是 DI1 为高 DI2 为低。同理,当外部无断线开关闭合时 DI1 和 DI2 都为低电平。
3.3 频率量采集电路的设计对于脉冲信号的采集可采用滞回比较器,它可引入正反馈加速电压的转变过程,而且引入回差提高了电路的抗干扰能力。具体设计如下:
由于磁敏电阻传感器是无源的,所以需要电路板提供 + 24 V 的电源,NTC 用于防浪涌,信号经滞回比较器和高速磁耦后将信号输送给单片机。
4 监控系统下位机的软件设计 4.1 软件整体设计对于下位机软件以采集模块 MU 为例进行简要介绍。此程序分 3 个任务: 1)信号采集与上传任务; 2)上位机 CCP 命令处理任务; 3)与电控喷油单元(ECU)的通信任务。在此仅以任务 1 为例进行简要介绍。信号采集与上传采用周期模式(每 200 ms 更新一次采集数据并上传)事件触发采用定时器中断。中断服务函数与任务 1 同步采用 μC/OS-Ⅲ 提供的内嵌任务信号量机制。任务 1 的程序流程如图 5 所示。
本系统的下位机和上位机通信采用 CAN 总线协议,为 CCP 协议。CCP 协议是一种主从方式用于在线参数标定和实时数据采集的 CAN 总线应用层协议。CCP 主站发送 CRO(指令接收对象)完成对从站的功能配置,如进行参数下载上传和数据采集触发等。CCP 从站在接收 CRO 后立即返回 DTO(数据传输对象)作为对控制指令的接收响应,此时的 DTO 又称 CRM(指令返回报文)。当启动数据采集后,下位机处于 DAQ(Data Acquisition)模式,从站将实时连续地发送 DTO 用于数据采集[7]。 本系统是以上位机为主站下位机的块板子为从站,其数据采集程序设计框图如图 6 所示。
通过将保存各通道采集数据的内存单元地址固化,再由 CCP 控制指令完成固定内存单元数据采集,大大简化了 CCP 通信过程。通过判断 CCP 从站是否接收到启动数据采集指令,该单元可进入 DAQ 数据采集会话状态,完成相应 DAQ 列表的数据采集,并保证 DAQ 列表中每一个 ODT 的成功发送,未能及时发送的 ODT 转入到待发送队列中,下次空闲时发送。
4.3 数据标定与软件滤波因为 PT100 和压力信号线性度较好可直接标定线性方程的 a,b 值。其标定方法可采用特稳携式校验仪给出特定温度或压力下的电阻值或电流值,在不同温度段下取多点的平均值对 a,b 值进行求解(对于 PT100 的补偿温度可选用室温补偿)。热电偶线性度较差,一般采用根据不同类型热电偶进行查表的方式。本系统采用的是 K 型热电偶,可从其数据手册中得到 0 ℃以下的电压-温度对应表。对热电偶采集数据加上冷端补偿电压后用二分法查表就可以得到对应温度值。其标定方法可采用特稳携式校验仪给出不同温度下的热电偶信号,然后对采集线号进行分段线性化处理即可。转速测量可采用 STM32F207 中的输入捕获功能实现。其中 CCP 协议是专业的标定协议可提供在线标定为数据标定提供很大的便利。
对于上述采集到的数据一般要进行软件滤波。软件滤波的方法非常多,仅对本程序用到的滤波方法进行介绍。本程序大量采用的是中位值平均滤波法即连续采样N 个数据,去掉一个最大值和一个最小值然后计算N-2 个数据的算术平均值。此算法可有效地抑制偶然出现的脉冲性干扰[8]。
5 结 语本文开发了一套基于 μC/OS-Ⅲ 系统的船舶柴油机监控系统软件,在满足逻辑判断与输出设计要求的同时具有较好的移植性和可靠性。在硬件方面对数据的采集稳定可靠。对所有模拟量通道以及重要开关量通道都有断线检测功能,也增强了系统的可靠性。在信号调理上经硬件和软件双重滤波后使采集信号具有较好抗干扰能力。基于 CCP 协议的 CAN 通信也具有通信速率高和高可靠性的特点。但对于这些采集数据的利用还不够深入,比如利用这些数据进行柴油机故障诊断或柴油机性能分析等。因此系统为以后 ECU 的开发和柴油机故障的智能诊断打下了良好的基础。
[1] | DPS 2100 Engine Safety System User Manual. Lyngsø Marine A/S, Doc. No. 921. 450. 021. |
[2] | 金江善. 船用柴油机电控系统[J]. 舰船科学技术, 2010, 32 (8):71–73. |
[3] | Jeam J. Labrosse. 嵌入式实时操作系统μC/OS-Ⅲ[M]. 宫辉等, 译. 北京:北京航空航天大学出版社, 2012:80-100. |
[4] | Jeam J. Labrosse. 嵌入式实时操作系统μC/OS-Ⅲ应用开发[M]. 何小庆等, 译. 北京:北京航空航天大学出版社, 2012:25-40. |
[5] | Joseph Yiu. ARM Cortex-M3权威指南[M]. 宋岩, 译. 北京:北京航空航天大学出版社, 2009. 62-70 |
[6] | 刘易. 船用柴油机监控系统CAN总线协议设计与研究[D]. 哈尔滨:哈尔滨工程大学, 2010. |
[7] | 韦文波. 基于CCP协议的电控发动机标定系统开发[D]. 湖南大学, 2011. |
[8] | 姬海晨. 在西门子300系列PLC中实现的程序滤波的又一创新方法[J]. 信息科技, 2014 (4):233–236. |