APP下载

柴油机状态监测与分析系统软件设计

2016-01-29谢思奇董胜利

关键词:状态监测软件设计柴油机

谢思奇, 董胜利

(上海船舶运输科学研究所 航运技术与安全国家重点实验室,上海 200135)



柴油机状态监测与分析系统软件设计

谢思奇,董胜利

(上海船舶运输科学研究所 航运技术与安全国家重点实验室,上海 200135)

摘要:针对柴油机状态监测与分析系统的需求,设计能为其服务的上位机软件。系统采用C/S架构,下层为数据采集系统,上层为上位机软件。软件实现人机交互,采用以太网与采集系统通信;同时,其能通过解析传输数据信号,使用数据库存储数据,实现示功压力数据的计算和显示,以满足柴油机工况监测与故障诊断的需求。

关键词:柴油机;软件设计;状态监测;故障诊断

0引言

柴油机作为船上最主要的动力机械,直接影响着船舶的航行状态。因此,对柴油机进行状态检测和故障诊断、确保设备运行在最佳状态,具有十分重要的意义。近年来,工业较发达的国家普遍采用数字化方法研发状态监测和故障诊断设备对柴油机进行实时监控,以达到节省燃油、预防事故和延长发动机寿命等目的。目前国内研制数字化柴油机监测与诊断系统的厂家并不多,对此,针对柴油机工况监测与诊断的需求,采用客房端/服务器(C/S)结构,将VC++作为开发环境,对监测与诊断系统软件进行设计,并通过采集压力信号进行数据显示和计算,验证监测过程中软件的可靠性及其是否能满足柴油机监测与诊断功能的要求。

1系统架构

柴油机工况监控系统架构见图1。该软件依托的系统以C/S模型进行,包括数据采集系统和上位机两部分。

图1 柴油机工况监控系统架构

(1) 数据采集系统作为下层服务器,通过传感器向柴油机采集数据,同时采用TCP/IP协议向上层软件传输数据;

(2) 上位机作为上层客户端,对数据采集系统进行命令发送和数据接收,同时完成数据的显示和分析及故障诊断。

2数据采集系统简介

数据采集系统的功能包含数据采集和数据发送两部分:

(1) 数据采集系统通过传感器对柴油机进行测量,采集柴油机压力数据和转速数据等;

(2) 数据采集系统作为服务器端,将采集到的数据发送至上位机软件。

数据采集系统的硬件部分由ioBox L-CUR-C多通道数据采集记录设备构成。ioBox内部基于NI-RIO平台设计定制,包含1个数据采集装置接线箱、1块sbRIO-9626 RIO核心单板及2块NI 9203电流信号采集模块。整个设备主要采集气缸压力(包括扫气压力,4~20 ma)、测速齿轮脉冲信号(24 V)及曲轴转角脉冲信号(24 V)。设备通过LEMO接线与气缸压力传感器及位置传感器连接,实现数据采集;通过LAN接口与上位机连接,通过100 M以太网实现数据输出。

数据采集系统软件以LabVIEW作为平台,按照服务器端进行设计,具备发送、接收和断开等处理功能。

3上位机系统功能结构

上位机系统功能模块框图见图2。

图2 软件功能模块框图

1)参数设置功能。在数据发送前,系统会对齿轮齿数、发送圈数和细分角等通信参数进行设置。此外,系统还会对缸径、冲程、连杆比等柴油机参数进行设置,以便进行后续的数据处理和计算。

2)数据通信功能。该功能是上位机系统的基础功能。采集系统采用TCP/IP协议将采集的数据以预先设定好的格式发送至上位机。为确保数据发送准确无误,上位机系统须同时连接采集系统的3个预设端口,并解析发送命令和接收数据的格式。

3)数据显示功能。该功能主要反映柴油机的压力示功图,可通过P-T图、P-V图和平衡柱状图等3种不同的图形模式直观地表达和处理柴油机工况。P-T图为气缸压力与曲柄转角的关系图,P-V图为气缸压力与相对容积的关系图,两图可通过相关关系式进行转换;而平衡柱状图则通过数据计算来反映柴油机的平均指示压力、最大压力和指示功等。

4)故障分析功能。系统将根据示功图判断柴油机的故障形式,以达到诊断的效果。基于示功图的故障分析是将所测的示功图与柴油机的正常示功图进行比较,找出二者之间的差别,判断柴油机工作过程的优劣及产生偏差的原因,以进行必要的调整,使柴油机保持良好的技术状态。

5)数据存储功能。该功能包含数据库存储和文件存储。系统在接受到实时采集数据后,可通过操作数据库建立一个符合接收数据格式的数据表,将实时数据存储至该表内。此外,数据存储还可通过文件存储完成,可将数据改写为特定格式,作为历史数据保存至文本文档中。

4上位机软件设计与实现

上位机软件以功能模块化思路进行设计,程序开发基于VC++进行。

4.1 主程序流程设计

上位机与ioBox连接后,整个系统将进入工作模式。软件打开后,先进入参数设置模块,包括柴油机参数设置和通信参数设置;全部设置完毕后,即可进行数据通信。软件采用套接字进行通信,数据采集系统将采集的数据发送完毕后,用户可存储这些数据,之后软件调用通信数据进行数据的显示和计算。最后,软件将示功图与正常示功图比较,如有必要须进行故障原因分析。图3为软件的主程序流程图。

图3 软件主程序流程

4.1.1数据显示流程设计

软件每次接收到的数据都必须经过多周期平均化处理和平滑滤波处理。

(1) 多周期平均化处理可有效降低随机误差对计算结果的影响,考虑到整个系统与示功图的特征,软件会以0.5°CA为细分角精度发送命令至数据采集系统,采集10轮共7 200个数据后进行平均化处理,以便完成示功图整个周期的图像;

(2) 平滑滤波处理根据气缸压力数据等距节点的特点,采用“五点三次法”处理。

数据被处理后,软件将引入TeeChart控件对其进行显示并将处理后的数组数据引导至初始化函数;随后创建CSeris类对象,并将数组数据作为x、y轴数据提供给对象进行绘制。图4为软件数据显示流程图。

图4 软件数据显示流程

4.1.2数据通信流程设计

上位机软件以客户端形式对采集系统进行请求响应,并向其发送命令和接收数据。该软件需从3个端口接收批量数据;同时,由于对数据通信有步骤和准确依赖性,因而采用异步套接字进行数据通信。异步套接字是基于非阻塞模式的网络编程技术,针对不同的网络事件进行事件登记。上位机的数据通信功能包括连接端口、发送命令、解析接收数据及处理断开等网络事件。软件会对上述网络事件添设消息响应,将事件引导至线程函数进行处理。图5为软件数据通信流程图。

图5 软件数据通信流程

4.2 异步套接字数据接收实现

软件启动后,将有图6所示的主界面预览效果,用户可根据软件主流程对上位机进行操作。参数设置完毕后,上位机软件根据数据通信流程进行套接字创建、服务器连接、数据接收和套接字关闭等4个步骤的操作;若采集系统有数据发送,则上位机软件将通过线程函数对数据进行读取。实现数据接收的关键代码如下:

图6 软件主界面图

define UM_SOCK1 WM_USER+1 //(定义消息函数)

m_Socket = WSASocket(PF_INET, SOCK_STREAM, 0, NULL, 0, 0); //(创建异步套接字m_Socket)

m_ipAddr.GetAddress(m_stripAddr); //(获取ip地址框中的ip地址)

pIP = (unsigned char*)&m_stripAddr;

strIP.Format("%u.%u.%u.%u", *(pIP + 3), *(pIP + 2), *(pIP + 1), *pIP);

SOCKADDR_IN addrSock1403;

addrSock1403.sin_family = AF_INET;

addrSock1403.sin_port = htons(1403);

addrSock1403.sin_addr.s_addr = inet_addr(strIP); //(定义tcp连接地址族)

connect(m_Socket,(SOCKADDR*)&addrSock1403, sizeof(SOCKADDR)) == SOCKET_ERROR); //(连接服务器)

WSAAsyncSelect(m_Socket,m_hWnd,UM_SOCK1,FD_READ|FD_CLOSE)); //(设置触发消息响应函数)

WSABUF wsabuf;

wsabuf.buf = new char[500];

wsabuf.len = 500; // (设置接收数据的结构体)

DWORD dwRead;

DWORD dwFlag = 0;

SOCKADDR_IN addrFrom;

int len = sizeof(SOCKADDR);

switch (LOWORD(lParam))

{

case FD_READ:

WSARecvFrom(m_cSocket,&wsabuf,1,&dwRead,&dwFlag,(SOCKADDR*)&addrFrom1403, &len, NULL, NULL));

....//(若服务器传来数据,则触发该条语句,将数据读入结构体)

break;

default:

break;

}

closesocket(m_Socket); //(接收数据完毕后关闭套接字)

4.3 数据结构设计与显示实现

4.3.1数据结构设计

软件在接收到数据后,对这些数据进行解析,并存至结构体数组中。定义结构体如下:

typedef struct _Data_List

{

int length;// 传输数据总长

float Times; // 时间

float Crank;// 气缸角度

float Pressure;//压力数据

float Rotation;//转速

}Data_List, *pData_List;

由于从采集系统传输的数据是由参数设置中的采样圈数确定的,因此给数组动态分配内存,长度由传输数据长度确定。

Data_List ex_data;

float *ex_data.Times = new float[length]

float *ex_data.Crank = new float[length]

4.3.2数据库结构设计

上位机软件以MySQL作为数据库进行设计,数据表格式依照数据采集系统采集数据结构进行设计。数据采集系统采集的数据均精确到小数点后6位;而测量时间作为系统消除重复数据的采集量,是以递增状态生成,所以其整数长度较其他数据大,设为10位(其他数据整数长度均为5位)。数据表格式见表1。

表1 采集数据表

上位机软件连接数据库后,将SQL语句存入命令中,通过API方式对数据库进行操作。每采集完一次数据,上位机软件可通过CStdiofile类将数据存入文本文档作为历史数据,并选择要上传的文本文档作为最近次数据存储至数据库,数据库存储实现程序如下。

CStdioFile File(fileDlg.GetPathName(), CFile::modeCreate | CFile::modeWrite);

for (int i = 0; i < 7 200; i++)

{

CString str;

str.Format("%f %f ",Crankshaft[i],pressure[i]); //(数组数据写入str中)

File.WriteString(str); //(str写入file中,数据保存至文本文档)

MYSQL m_sqlCon;

mysql_init(&m_sqlCon);

mysql_real_connect(&m_sqlCon, "localhost", "root", "password", "database", 3306, NULL, 0)//(连接数据库, localhost为服务器,root为账号密码,test为数据库名,3306为端口)

CString query; //(创建sql语句)

query.Format("Load Data InFile "test.txt" Into Table pressure fields terminated by ' ' lines terminated by ' ' ");

mysql_real_query(&m_sqlCon, query, (unsigned long)strlen(query));//(将数据所在文本文档“test.txt”中数据以规定格式上传至数据库)

4.4 数据显示实现

导入数组数据后,点击主界面的示功图按钮可出现P-T图、P-V图及平衡柱状图等3个界面的选择,选择确认后可弹出对应的界面示功图。上位机软件对数组数据进行处理和绘图操作,3个界面的实现方法类似,实现代码如下。

for (int i = 0; i<7 200; i++)

{

ex_data[i].Pressure = Avg(data[i],10); //(对通信数据平均化, Avg是平均化函数)

}

for (int i = 0; i<7 200; i++)

{

ex_data[i].Pressure = Filter(ex_data[i].Pressure);//(对平均化后的数据进行滤波, Filter为滤波函数)

}

CSeries lineSeries = (CSeries)m_chart1.Series(0);//(对Teechart插件变量m_chart1创建CSeris对象)

lineSeries.Clear();(对象初始化)

for (int i = 0; i<720; i++)

{

lineSeries.AddXY((double)(ex_data[i].crankshaft),(double)ex_data[i].Pressure, NULL, 0);//(提供x,y轴数据)

}

执行结束后,将得到图7所示的TeeChart插件环境下的示功图P-T图效果。

图7 示功图P-T曲线图

5结语

参照柴油机工况监控系统的功能,设计了基于VC++的上位机软件。该软件从数据采集系统接收数据,并通过处理压力数据绘制示功图,达到故障分析和预警的效果。软件与数据采集装置ioBox连接后,可通过以太网接收数据和命令,数据库和示功图操作均可在指定命令下完成,证明该软件满足设计需求。

参考文献:

[1]石灵丹.基于虚拟仪器技术的柴油机综合测试及智能故障诊断系统设计与研究[D]. 哈尔滨:哈尔滨工程大学, 2008.

[2]周兴利.电控柴油机故障智能诊断研究[D]. 上海:上海交通大学, 2007.

[3]钱阳军,宋恩哲,陆平,等.柴油机数字控制系统监控软件[J]. 哈尔滨工程大学学报, 2002, 23(4):99-102.

[4]张克涵,张呼和,顾李冯. VC++环境下的电机状态监测软件设计[J]. 测控技术, 2012, 31(2):23-26.

Software Design for Condition Monitoring and Analyzing System of Diesel Engine

XieSiqi,DongShengli

(State Key Laboratory of Navigation and Safety Technology,Shanghai Ship & Shipping Research

Institute,Shanghai 200135,China)

Abstract:The software for the diesel engine condition monitoring and analysis system is developed. The software is designed based on C/S architecture with one tier for data acquisition and the other running in the PC as the host. The PC software collects data via Ethernet and supports man machine interaction. The software also analyzes the pressure data signal from data acquisition module and storages them in a database. The software processes the acquired data and displays them for monitoring and fault diagnosis of the diesel engine.

Key words:diesel engine; software design; condition monitoring; fault diagnosis

中图分类号:TK428;TP311.52

文献标志码:A

文章编号:1674-5949(2015)04-032-06

作者简介:谢思奇(1991—),男,上海人,助理工程师,硕士生,主要从事船舶轮机工程研究。

猜你喜欢

状态监测软件设计柴油机
美国FCA 推出第三代EcoDie s e l V6 柴油机
谭旭光:柴油机50年内仍大有可为
基于STM8S903K3的序列打螺丝夹具的软件设计
智能变电站设备诊断与状态监测技术研究
多通道采煤机状态监测与分析装置设计及应用
一种VHDL语言代码重用的方法
现代柴油机的技术发展趋势
新型2.0L高效柴油机的开发