APP下载

嵌入式油水分离器控制模块的软硬件设计

2019-06-10何琪文林叶锦张均东信佳智

上海海事大学学报 2019年1期
关键词:嵌入式系统船舶

何琪文 林叶锦 张均东 信佳智

摘要:鉴于在当前轮机模拟器中油水分离器控制模块缺少含油质量分数的仿真、报警记录和参数的存储以及人机交互界面的设计等功能,通过分析RWO油水分离器的工作原理和运行逻辑,提出一种新型嵌入式油水分离器仿真模块。根据模块的功能需求,选取STM32F103xx为主芯片,W5100为网络芯片,通过Altium Designer设计16DI8DO4AI 印制电路板(printed circuit board,PCB)。进行嵌入式操作系统μC/OS-II的裁剪和移植,根据所使用的模块对板载外设库进行初始化,基于运行逻辑进行多任务程序设计。试验表明,嵌入式油水分离器控制模块能够实现含油质量分数的采集,适时触发含油量超限报警并同步更新报警信息和阀位,用TFT液晶屏能够实现对参数值和运行状态的实时显示。该模块具有很高的应用价值和良好的可扩展性。

关键词:油水分离器; 嵌入式系统; 轮机模拟器; 分布式系统; 船舶

中图分类号:  U664.91;TP273.5

文献标志码:  A

Abstract:For current marine engine room simulators, the oily water separator control module lacks the functions of the simulation of oil mass fraction, storage of alarm records and parameters, and design of human-machine interaction interface. In view of this, by analyzing the working principle and running logic of RWO oily water separator, a new embedded oily water separator simulation module is designed. According to functional requirements of the module, STM32F103xx is selected as the main chip, W5100 is selected as the network chip, and 16DI8DO4AI PCB (printed circuit board) is designed by Altium Designer. Tailoring and transplanting embedded operating system μC/OS-II, the board support package is initialized based on the module used. Based on the running logic, the multi-tasking program is designed. Experiments show that, the embedded oily water separator control module can realize the collection of oil mass fraction, timely trigger the oil content high alarm, and synchronously update the alarm information and valve position, and implement the real-time display of parameter values and running status by TFT LCD screen. The module is of high application value and good scalability.

Key words:oily water separator; embedded system; marine engine room simulator; distributed system; ship

0 引 言

輪机模拟器是采用半实物模型搭建的、与母型船高度相似的模拟操作平台,广泛应用于教学[1]、操作培训[2-3]、工程论证等。油水分离器控制模块是模块化设计的轮机模拟器的重要组成部分,主要用于模拟机舱含油污水的处理过程。朱芳[4]和王守城等[5]基于可编程逻辑控制器(programmable logic controller,PLC)设计出船用油水分离器监控系统,但成本高、网络兼容性低,不适用于轮机模拟器。卢飞[6]设计出基于ARM内核的油水分离器监测系统,实现分布式数据采集和上位机通信,再通过轮机模拟器上位机进行集中仿真[7-8],实现了本地控制模块实时显示含油质量分数仿真值(常用106做分母)的功能,但囿于控制模块与服务器之间的高耦合性,且本地控制模块不能够独立运行,具有一定局限性。唐元元等[9]提出了分离型轮机模拟器仿真平台,要求模拟器各模块之间具有低耦合性,同时能独立运行和信息交互。本文基于分离型轮机模拟器仿真平台,采用分布式仿真模式[7],分析RWO油水分离器的工作原理,依托RWO油水分离器数学仿真模型和运行逻辑制定在本地控制模块中运行的嵌入式多任务软件程序,最终通过控制模块实现RWO油水分离器运行逻辑和工作流程的仿真,同时实现与上位机信息的实时交互。相对于现有的轮机模拟器油水分离器控制模块,本模块能实现对油水分离器更加全面的分布式仿真,具有很高的实用价值。

1 工作原理

油水分离器的分离效果取决于油滴直径、停留时间、温度、聚集器材质等。RWO油水分离器采用三级分离方式:第一级为重力分离,采用多层挡板和小流量泵延长停留时间,同时通过蒸汽盘管控制温度,促使油滴碰撞、聚集、上浮形成稳定油层,实现大直径油滴分离[10-11];第二、三级为聚集器分离,利用聚集器材质的亲油性,小直径油滴在聚集器构件处被截留、聚集、脱离和上浮[10],最终实现小直径油滴分离。系统提供两路独立的含油质量分数值报警ALARM1和ALARM2,均可以进行报警参数设置和测试。ALARM1用于实现第二、三级分离处理后的水的含油量“高”报警,ALARM2用于实现第二、三级分离处理后的水的含油量“高高”报警。通过油水分离器日用泵把舱底水注入分离筒进行处理,通过日用水管线向含油量检测单元、管线、分离筒等提供反冲水。在系统启动前需检查相关管线阀位、舱底水液位,选择手动或自动模式后方可启动系统,运行结束时需对系统分离筒和管线进行反冲洗,如图1所示。

2 硬件设计

控制模块的硬件系统包括主芯片模块、通信模块、电源模块、存储模块、液晶显示模块、数字量输入模块、数字量输出模块和模拟量输入模块。主芯片STM32F103负责嵌入式操作系统μC/OS-II的运行和处理上位机发送过来的信息;通信模块采用网络芯片W5100实现本系统与上位机间数据流通信;存储模块负责实时存储含油污水含油质量分数值以及相关报警记录;在系统运行时,液晶显示屏实时显示含油质量分数值、系统模式、报警等参数;数字量输入模块用于采集人机交互按键信息和获取相关继电器状态;数字量输出模块负责控制相关继电器动作和LED灯的亮灭;模拟量输入模块负责实时采集压力值、含油质量分数值、温度值和流量值。

2.1 电路原理图设计

总体结构图见图2。充分考虑主芯片的引脚数量、模块种类、封装类型等因素后选取STM32F103ZET6为主芯片,封装类型为LQFP144。基于对主芯片的保护,在数字量输入和输出电路中采用TIP281-4光耦隔离模块将内、外部电路隔开。同时,为保证数字量输入的实时性和主芯片的安全,在光耦副边采用10 kΩ电阻拉高限制引脚灌入电流。在模拟量输入电路中,通过调理电路调整待放大电压,再通过OPA2277U的正相放大电路将其转换为0~3.3 V,该电路采用1%的精密电阻来实现精确放大。在考虑到代码實现难度、通信速率、引脚实现等因素后,网络芯片W5100与主芯片之间采用SPI(串行外设接口)通信,再通过RJ45网络变压器实现以太网通信。

2.2 印制电路板和按键贴膜设计

考虑到控制箱空间及内部布局等,将印制电路板(printed circuit board,PCB)整体尺寸确定为18.6 cm×24 cm,见图3。在绘制PCB图时,通过计算各电路电流确定线宽,线间距不小于10 mil(1 mil=0.025 4 mm),不得出现线直角和锐角,两线之间尽量避免90°夹角,顶层采用VSS铺铜,底层采用3.3 V铺铜,在PCB的四角预留直径4 mm的安装孔。

在PCB绘制完成后,利用电气规则检查错误并修改,然后生成Gerber文件并交付厂家生产。

采用Auto CAD设计按键贴膜整体布局,利用CorelDRAWX6绘制生产效果图。在设计过程中,还考虑了可靠性、视觉效果、安装便捷程度等因素。如图4所示,贴膜整体为蓝底白框,蓝色部分采用磨砂设计,透明的LCD或LED窗采用光面设计。采用直径1 cm的金属膜片按键,出线口位于贴膜下方,通过排线与电路板接口相连。

3 软件设计

以集成开发环境MDK 5为程序开发平台,充分利用ST官方的标准外设库和嵌入式操作系统μC/OS-II来快速实现程序设计。

3.1 外设驱动

利用STM32F103的ADC模块可实现规则组和注入组两种采样方式。本系统选择通道设置更加灵活的注入组采样方式。模拟量输入驱动程序在充分考虑采样精度、采样时间、采样数据存储等因素后,采用连续5次充分采样和适当的采样周期实现采样时间与采样精度间的平衡,同时使能DMA(直接存储器访问)通道实现采样数据直接高速地存储于SD卡。

在设计SDIO驱动程序时,参照SDIO模块的一般初始化流程,结合SDIO支持的SD卡系统规范协议版本、总线模式、存取速度以及不同读写模式对应的读写时序等因素后,选择4位总线模式,在卡识别阶段设为低速模式,在数据存储阶段设为高速模式。

SPI模块驱动程序用于实现主芯片STM32F103与网络芯片W5100之间的数据通信。基于SPI总线接口的读写函数和网络芯片W5100相关寄存器地址对基本的以太网通信参数(网关地址、MAC地址、子网掩码、IP地址)进行配置。为保证模块的网络可靠性,同时还将这些参数保存在片内flash中以便上电/重启时确保网络配置不变。在充分考虑网络的通信速率、冗余性、容错率和可靠性后,设置端口0的模式为UDP,溢出时间为50 ms,重发次数为5,接收、发送缓存区各为2 kB。建立缓存数组用于保存UDP发送、接收数据包,按照协议格式对数据包进行异或校验,校验一致的数据包通过功能码字节和数据字节解析,执行相关操作。

3.2 嵌入式操作系统μC/OS-II移植

嵌入式操作系统μC/OS-II具有可裁剪、多任务、抢占式和实时性等优势[12-13]。该系统通过了FAA(federal aviation administration)认证,在实时性要求很高的工业领域得到广泛的应用,具有很好的可靠性。该系统移植时有大量的实例[14-15]可借鉴。关键注意事项如下:

(1)针对主芯片的存储密度不同,需要在startup文件中选择合适的 .s启动文件。同时利用USE_STDPERIPH_DRIVER宏定义调用ST官方标准外设库,在外设驱动层和应用层中使用与标准外设库相同的变量类型名,这样可以极大地增加程序的可读性和可移植性。

(2)系统嘀嗒SysTick作为操作系统的脉搏计时器,每秒嘀嗒数对操作系统的实时性和主芯片的运行负荷有重要影响[16]。在综合考虑上述因素后,每秒嘀嗒数在函数OS_CPU_SysTickInit()中被设置为1 000。

(3)在操作系统运行多任务时,不同任务之间的切换需要各自的私有栈。在建立私有栈时,充分参考主芯片STM32F103本身的堆栈类型,将任务栈设置为满减栈。在OS_CPU_SysTickHandler()中进行任务切换时,将需要切换的任务的状态保存在对应的任务栈中,同时将下一需要执行的任务的状态出栈并载入到主芯片相关寄存器,下一任务就开始运行,这就是嵌入式操作系统μC/OS-II的任务切换机制。在图5中,任务切换会导致相应的任务状态变化,但任务始终处于睡眠态、就绪态、运行态、挂起态和中断服务程序这5种状态之一。

3.3 主程序

软件流程采用多任务分时执行,每次系统嘀嗒中断就会检查就绪表中最高优先级任务进行任务调度。采用嵌入式操作系统μC/OS-II可以很好地将程序分为3层[17-18]:外设驱动层、模块功能层和应用层。如表1所示,根据每个任务的实时性要求和数据量创建任务,确定其优先级和任务栈大小。利用多任务操作系统的优势,在外设初始化使能后,可以根据任务功能调用相关模块函数建立任务,在需要时将其加入到任务队列中,通过操作系统实现任务切换。

如图6所示,系统上电或复位后通过复位中断进入main函数。在main函数中实现系统初始化、外设初始化和主任务App_TaskStart建立等。在创建主任务App_TaskStart后,调用函数OSTimeSet()设置当前系统时间为0,调用OSStart()开启系统的多任务调度。在主任务中使能统计任务和空闲任务,建立其他任务,最后进行延时空循环。

4 功能试验

在试验时,硬件PCB安装在金属盒子内,盒子前部覆盖按键贴膜。通过以太网与轮机模拟器上位机相连,在利用TCP/UDP调试工具发送协议确保程序通信功能正常后,针对含油质量分数值超限报警功能,通过电位计调整模拟量输入通道来逐渐增大输入电流,观测含油质量分数值和报警。试验结果显示(见图7a),TFT液晶显示屏上含油质量分数值逐渐增大,当含油质量分数值超过14×10-6时触发ALARM1报警,当含油质量分数值超过15×10-6时触发ALARM2报警。同时模拟器上位机界面的相关阀发生动作,含油质量分数值报警信息更新,见图7b。长时间运行可靠性试验、按键频繁按压试验、功能验证试验等表明,本模块具有完善的功能和良好的可靠性,实现了设计目标。

5 结束语

在嵌入式油水分离器控制模块中,主芯片STM32F103具有多样化的外设接口,以嵌入式操作系统μC/OS-II为平台的软件程序具有良好的通用性和可移植性,同时TFT液晶显示屏提供了友好的人机界面。本文的设计基于分布式轮机模拟器,不仅实现了对控制模块的物理仿真,还实现了油水分离器的运行流程仿真、运行模式仿真、报警和参数修改等功能。印制电路板(PCB)具有较强的通用性,软件程序拥有很好的可移植性,可用于其他类型油水分离器控制模块,也可以用于新型油水分离器的设计论证,具有很高的实用价值。

参考文献:

[1]曾鸿, 甘辉兵. 轮机模拟器课程实施翻转课堂的教学设计[J]. 航海教育研究, 2016, 33(1): 62-64.

[2]贾宝柱. 基于轮机模拟器的机舱资源管理培训及评估方案[J]. 航海教育研究, 2016, 33(1): 10-14.

[3]李燕彪, 张均东, 曹辉, 等. 轮机协同训练平台中的角色问题及协同策略[J]. 大连海事大学学报, 2016, 42(2): 63-67, 82.  DOI: 10.16411/j.cnki.issn1006-7736.2016.02.011.

[4]朱芳. 基于PLC的船用油水分离监控系统设计[J]. 舰船科学技术, 2015, 37(6): 210-213.

[5]王守城, 田乐帅, 段俊勇, 等. 基于PLC的油水分离器远程控制系统的设计[J]. 制造业自动化, 2016, 38(1): 124-127.

[6]卢飞. 基于ARM内核μC/OS-II操作系统的舱底水监测系统的设计与实现[D]. 大连: 大连海事大學, 2012.

[7]贾宝柱, 曹辉, 张均东, 等. 轮机模拟器及其关键技术[J]. 中国航海, 2012, 35(1): 35-40.

[8]郑恒持, 蒋丁宇, 任光, 等. 全任务轮机模拟器的应用与发展[J]. 世界海运, 2016, 39(11): 25-29. DOI: 10.16176/j.cnki21-1284.2016.00.006.

[9]唐元元, 张均东, 曹辉. 大型商船分离型轮机仿真实验平台的设计[J]. 大连海事大学学报, 2016, 42(2): 58-62. DOI: 10.16411/j.cnki.issn1006-7736.2016.02.010.

[10]侯先瑞. 重力式油水分离器性能的数值模拟[D]. 大连: 大连海事大学, 2011.

[11]许永信. 船用立式油水分离器分离性能的数值模拟与分析[D]. 大连: 大连海事大学, 2012.

[12]金亮, 张学杰. 3种嵌入式操作系统内核的关键技术分析[J]. 云南大学学报(自然科学版), 2006(S2): 1-4.

[13]宋延昭. 嵌入式操作系统介绍及选型原则[J]. 工业控制计算机, 2005(7): 41-42, 24.

[14]张继珂. 嵌入式操作系统μC/OS-II的移植及文件系统设计[D]. 南京: 南京航空航天大学, 2011.

[15]王小妮. 嵌入式操作系统μC/OS-II剖析与移植[J]. 现代电子技术, 2015, 38(4): 84-86.

[16]赵霞, 郭耀, 雷志勇, 等. 基于模拟器的嵌入式操作系统能耗估算与分析[J]. 电子学报, 2007, 36(2): 209-215.

[17]SHI Jian, GUO Mian. Embedded digital oscilloscope based on STM32 and μC/OS-II[J]. Applied Mechanics and Materials, 2012, 190-191: 1129-1135.

[18]廉小亲, 张阳伟, 郝宝智, 等. 基于UcosII系统的电气火灾远程监控系统[J]. 测控技术, 2015, 34(12): 70-73, 77.

(编辑 赵勉)

猜你喜欢

嵌入式系统船舶
民用船舶舵系轴系修理工艺分探讨
船舶上层建筑建造工艺探讨
项目管理技术在船舶建造进度控制中的实践
项目管理技术在船舶建造进度控制中的实践
中国造!全球首艘智能船舶交付
办公自动化系统的设计
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究
新船订单骤降 价格低位震荡