基于C#的船用柴油机监控系统软件设计
2017-05-16游伏兵雷本鑫陈泽亮陈智君高超
游伏兵,雷本鑫,陈泽亮,陈智君,高超
(武汉理工大学 能源与动力工程学院,武汉 430063)
基于C#的船用柴油机监控系统软件设计
游伏兵,雷本鑫,陈泽亮,陈智君,高超
(武汉理工大学 能源与动力工程学院,武汉 430063)
针对国产柴油机监控系统技术不成熟、测量精度不高及自主研发能力不足等问题,以某中速船用V12缸型柴油机为原型,运用C#语言开发一套柴油机安保监控系统软件。运用该软件可实现对柴油机的运行工况的实时监控。
CCP协议;多线程;数据库;人机交互
由于我国的国产监控系统的起步较晚,技术并不成熟,较多监控系统仍在使用物理仪表进行状态监测。这种监测方法的监测精度往往不高,且自动化水平较低,很多仪器仍需手动操作。目前,应用于实际船舶的柴油机监控系统产品主要来自国外[1-3]。实现对柴油机的自动化监控,提高柴油机的监测精度,突破国外相关公司的技术垄断,成为目前国内监控系统行业亟需解决的问题。本文作者以某V12缸型柴油机为对象,开发一套监测系统,以实现对柴油机的自动化监测。
1 监控系统软件设计原理
柴油机监控系统是指能完成主机的控制、监测及报警、故障的诊断、安全保护等功能的一个独立完整的系统,其主要功能有:
1)监测采集重要参数。通过人机界面予以显示。
2)报警。人机界面及集控台同时予以警告。
3)安全保护。由人机界面显示并通过下位机进行安保动作。
4)操控主机。通过集控台进行主机启停及加、减速等操作。
其主要组成包含硬件模块和软件模块,其中硬件部分由监测模块(MU)、逻辑控制模块(LCU)和安保模块(ESU)组成;软件部分在集控台(ECR)上的PC机中运行,硬件部分通过工控机内的CAN卡PCI9820I的端口1(CAN1)与PC机通信,同时PC机通过CAN卡的端口2(CAN2)与ECU进行通信,此外监测模块也通过CAN2总线与ECU进行通信。安保监控系统的组成见图1。
2 监控系统软件设计思路
要实现上述功能,需要将采集到的各通道值传递至上位机,上位机将接收到的数据存储在本地磁盘,同时将数据及通道信息显示在界面上。因此,柴油机监控系统软件主要由通信、数据库、人机界面等几个模块组成.。
柴油机安保监控软件主要功能是完成系统输入和界面输出显示,在完成界面初始化并进入系统后,首先进行系统初始参数设置,包括软件系统自身运行的必要参数设置和下位机运行参数设置,其中下位机的运行参数设置通过CAN通信发送到下位机完成初始化工作。随后系统由上位机向下位机发送数据采集命令,进入正常的数据采集状态,接收下位机发送来的数据,进行参数、状态、报警的实时监测,并保存这些状态数据,以便进行历史参数、状态、报警的记录查询。程序运行流程见图2。
确定好系统程序运行流程后,通过构建不同的类和方法再组成C#中的命名空间来实现其功能,程序中自定义的命名空间主要有以下几个。
1)数据库命名空间(DataBase_System):主要用于配置和操作数据库。
2)通信命名空间(CAN_System):主要用于实现CAN1和CAN2数据传输和显示,包含CAN用函数结构体,协议结构体,站地址信息,接收和发送的线程等。
3)应用程序命名空间(Engine_Monitoring_System):控制上述所有的对象,确定程序特点,负责应用程序初始化、运行和清除。将各个窗口界面相关的类和函数、功能类、控件类、通信类、数据库类等通过命名空间的形式组织在一起,从而实现整个柴油机安保监控系统程序的运行。
3 监控系统软件具体实现
3.1 数据库设计
柴油机监控系统软件的核心是对柴油机运行参数的监测和显示,实现运行中的柴油机的安全保护和操纵,附加系统参数的设置功能,是以数据为中心的体系结构,依靠数据联通各个部分并使之协调工作,故可将其数据结构组成设计成图3所示的结构。
从系统的数据流向上看,可将系统数据分为下位机发送数据和上位机发送数据,其中系统参数设置是上位机发送给下位机的数据,显示的状态和参数由下位机发送给上位机。
软件界面上显示的通道实时数据来自于下位机采集的数据,显示的通道信息则来自于数据库。本文采用数据库结构中的二维表结构对系统中的实体集进行描述,它是由许多包含字段的记录组成的,每个字段对应一个对象属性。可根据实际的要求,对字段的长度、数据类型及能否配置进行设置,部分二维表如下。
1)T_AnSesorChannelInfo(模拟量通道表)用于管理模拟量各通道的信息。
2)T_ChannelBasicInfo(配置信息基本表)用于管理所有通道的配置信息。
各表的结构均由字段名和数据类型组成,由于模拟量通道表包含的信息较为全面,故此处以模拟量通道表为例来展示二维表的内部结构,见表1。
表1 模拟量通道表的结构
在设计好各个数据库后,柴油机安保监控程序在结合系统数据库结构的基础上,通过包含System.Data、System.Data.SqlClient等命名空间来调用结构化的语言(SQL语言)对数据库进行管理[4-5]。
3.2 通信设计
柴油机安保监控程序和下位机,以及ECU的通信均采用CAN通信。柴油机监控系统的通信包含两路CAN通信,其中CAN1端口为程序与监控单元的通信端口,CAN2端口为程序与电控单元(ECU)的通信端口。上位PC机采用的是工控机,工控机采用PCI9820I型CAN卡与下位机及ECU进行通信。
上位机安保监控程序与下位机控制器的通信,涉及到多种模拟量和频率量等的标定,采用基于CAN通信的CCP标定协议发送和接收数据。CCP全称为CAN Calibration Protocol,即CAN标定协议,是基于主从方式可用于在线参数标定和实时数据采集的CAN总线应用层协议,通过CCP可完成控制参数标定、实时数据采集和FLASH编程等具体操作。安保监控程序与电控单元(ECU)的通信,采用同样基于CAN并在发动机中常用的SAE J1939通信协议进行发送和接收数据。
针对柴油机安保监控系统任务多,通信量大,实时性要求高等特点,程序在设计时采用多线程技术。柴油机安保监控系统程序通信中主要采用以下几个线程:数据接收线程(threadRAV),掉线重连接线程(threadReConn),数据解码线程(threadDecode),记录线程(threadRecord),下载线程(threadDwnP)。具体运行流程如下。
1)打开软件后,程序首先打开CAN设备,并设置CAN设备的一些相关参数及进行CAN设备的初始化,并开启上述线程。
2)开启线程后,系统向下位机发送连接指令与下位机进行通信连接,通信连接上后立即向下位机发送数据采集指令以接收下位机数据。若运行中出现掉线,则通过掉线重连接线程(threadReConn)与掉线的模块重新建立连接。CAN2则是直接接受ECU传递过来的数据。
3)数据采集指令发出后,接收线程(threadRAV)开始接收下位机数据,并将数据放置于一个队列中,同时解码线程(ThreadDecode)会从数据队列的首部取出数据进行解码。数据解码后,解码线程会将解码后的数据传递给记录线程(threadRecord),将这些数据存储在本地磁盘上供显示及历史查询使用。
4)通信连通后,下载线程(threadDwnP)也会立即运行,并检查用户是否修改了配置信息。如有修改,则将修改后的配置信息通过下载线程发送至下位机。
3.3 程序界面设计
结合用户对监控系统界面的要求可将界面划分如下:
1)主界面,用于显示柴油机的转速和8个重要通道的数据,以及上下位机通信连接状态。
2)数据显示界面,用于显示各个通道的实时数据,并可选择将其中8个通道的数据以曲线的形式显示在界面上。此外,软件提供了历史曲线查询功能,可查询在某段时间内某一通道的数据,并以曲线形式显示在界面上。
3)报警界面,将柴油机运行过程中需要监测报警的通道的实时状态显示在界面上,当出现报警时,在界面上以红色标出。此外,不管当前处于哪一界面,若出现报警则立即跳转至报警界面,以提示用户出现了报警情况。软件也提供了报警查询的功能,用于查询某段时间内出现的报警信息(包括报警通道及报警发生时间)。
4)打印界面,提供通道数据的打印功能,可选择60个通道进行打印输出。
5)系统设置界面,完成下位机配置信息的下载,数据库的备份和恢复,中英文切换等功能。
6)登录界面:系统提供了两类权限,一是普通权限,能完成系统的监视、记录查询和打印功能;另一类为管理员权限,除了拥有普通权限功能外,还可以进行系统设置。管理员权限需在该界面登录账号。
设计好的系统界面主要功能模块见图4。
4 监控系统软件功能测试
针对各个界面逐一校核后发现,该系统能根据通信协议满足实时监测保护的要求,各通道均能接收正确的数据并显示对应状态,各界面数据刷新时间为1 s。但模拟量生成的曲线波形波动较大,达到3~5 ℃的偏差,波形中存在较大的噪声,故需要采用软件滤波器对通道数值进行滤波,滤掉其波形中所包含的噪声。
根据温度、压力等模拟量参数是连续的值并结合噪声干扰因素等情况,采用中位均值限幅滤波。中位均值限幅滤波是将中位均值滤波与限幅滤波相结合的方法,其具体方法是:对单个通道采集N次,去掉其最大值和最小值后,取其均值作为第一次通道采集到的值,根据经验判断温度是连续变化的,在极短的时间假设其变化值为X℃,将第二次中位均值采集到的数值与第一次采集到的数值进行比较,若两者之差小于或等于X,则认为此次采集到的数值是准确的,此时更新通道显示的值为第二次的数值;若两者之差大于X,则不更新该通道的显示值;进行第三次中位均值采集的时候,则以第二次通道显示值为准,依此类推。
滤波前后通道采集的波形对比,见图5。
5 结论
采用C#语言并结合数据库管理技术,进行了柴油机安保监控系统软件的开发。该软件可实现对柴油机运行工况的实时监控,软件监测精度较高。通过使用此上位机软件对柴油机进行实时监控,能准确把握柴油机运行中的状态变化,及时发现柴油机运行中出现的故障,提高柴油机运行的安全性。本监控系统软件的设计思路和实现方法,可为国内柴油机监控以及船舶自动化等领域提供一定的参考。
此安保监控系统软件还有些需要改进的方面,如软件长时间运行,需要定期对接受的海量数据进行处理,既要做到不影响历史数据分析,又需保证数据运行空间,处理方法有待进一步优化。
[1] 孙培廷.船舶柴油机动力装置发展趋势与环境关系的探讨[J].航海技术,2000(2):5-7.
[2] 陈越.船用柴油机监控系统模块化设计技术研究[D].哈尔滨:哈尔滨工程大学,2009.
[3] 罗福强,杨剑,张敏辉.C#程序设计经典教程[M].北京:清华大学出版社,2014.
[4] 扶松柏.深入体验C#项目开发[M].北京:清华大学出版社,2011.
[5] Vidya Vrat Agarwal. C# 2012数据库编程入门经典[M].北京:清华大学出版社,2013.
[6] 饶运涛.现场总线CAN原理与应用技术[M].北京,北京航空航天大学出版社,2003.
[7] 刘运潇.基于CCP的通用型ECU标定系统研究和设计[D].上海:上海交通大学,2013.
Marine Diesel Engine Monitoring System Software Design Based on C#
YOU Fu-bing, LEI Ben-xin, CHEN Ze-liang, CHEN Zhi-jun, GAO Chao
(School of Energy and Power Engineering, Wuhan University of Technology, Wuhan 430063, China)
In view of problems of that the domestic diesel engine monitoring system technology is not mature, measurement accuracy is not high and the independent research and development ability is poor, a security monitoring system software was designed by using the C# language based on a V12 diesel. This software was proved to be able to monitor the operation condition of diesel engine in real-time.
CCP protocol; multithreading; Database; HCI
10.3963/j.issn.1671-7953.2017.02.036
2016-06-27
国家部委基金资助项目(2012BAG02B00)
游伏兵(1971—),男,博士,副教授
U664.121
A
1671-7953(2017)02-0153-04
修回日期:2016-09-14
研究方向:柴油机性能及排放