游伏兵,雷本鑫,陳澤亮,陳智君,高超
(武漢理工大學(xué) 能源與動力工程學(xué)院,武漢 430063)
基于C#的船用柴油機(jī)監(jiān)控系統(tǒng)軟件設(shè)計(jì)
游伏兵,雷本鑫,陳澤亮,陳智君,高超
(武漢理工大學(xué) 能源與動力工程學(xué)院,武漢 430063)
針對國產(chǎn)柴油機(jī)監(jiān)控系統(tǒng)技術(shù)不成熟、測量精度不高及自主研發(fā)能力不足等問題,以某中速船用V12缸型柴油機(jī)為原型,運(yùn)用C#語言開發(fā)一套柴油機(jī)安保監(jiān)控系統(tǒng)軟件。運(yùn)用該軟件可實(shí)現(xiàn)對柴油機(jī)的運(yùn)行工況的實(shí)時(shí)監(jiān)控。
CCP協(xié)議;多線程;數(shù)據(jù)庫;人機(jī)交互
由于我國的國產(chǎn)監(jiān)控系統(tǒng)的起步較晚,技術(shù)并不成熟,較多監(jiān)控系統(tǒng)仍在使用物理儀表進(jìn)行狀態(tài)監(jiān)測。這種監(jiān)測方法的監(jiān)測精度往往不高,且自動化水平較低,很多儀器仍需手動操作。目前,應(yīng)用于實(shí)際船舶的柴油機(jī)監(jiān)控系統(tǒng)產(chǎn)品主要來自國外[1-3]。實(shí)現(xiàn)對柴油機(jī)的自動化監(jiān)控,提高柴油機(jī)的監(jiān)測精度,突破國外相關(guān)公司的技術(shù)壟斷,成為目前國內(nèi)監(jiān)控系統(tǒng)行業(yè)亟需解決的問題。本文作者以某V12缸型柴油機(jī)為對象,開發(fā)一套監(jiān)測系統(tǒng),以實(shí)現(xiàn)對柴油機(jī)的自動化監(jiān)測。
柴油機(jī)監(jiān)控系統(tǒng)是指能完成主機(jī)的控制、監(jiān)測及報(bào)警、故障的診斷、安全保護(hù)等功能的一個(gè)獨(dú)立完整的系統(tǒng),其主要功能有:
1)監(jiān)測采集重要參數(shù)。通過人機(jī)界面予以顯示。
2)報(bào)警。人機(jī)界面及集控臺同時(shí)予以警告。
3)安全保護(hù)。由人機(jī)界面顯示并通過下位機(jī)進(jìn)行安保動作。
4)操控主機(jī)。通過集控臺進(jìn)行主機(jī)啟停及加、減速等操作。
其主要組成包含硬件模塊和軟件模塊,其中硬件部分由監(jiān)測模塊(MU)、邏輯控制模塊(LCU)和安保模塊(ESU)組成;軟件部分在集控臺(ECR)上的PC機(jī)中運(yùn)行,硬件部分通過工控機(jī)內(nèi)的CAN卡PCI9820I的端口1(CAN1)與PC機(jī)通信,同時(shí)PC機(jī)通過CAN卡的端口2(CAN2)與ECU進(jìn)行通信,此外監(jiān)測模塊也通過CAN2總線與ECU進(jìn)行通信。安保監(jiān)控系統(tǒng)的組成見圖1。
要實(shí)現(xiàn)上述功能,需要將采集到的各通道值傳遞至上位機(jī),上位機(jī)將接收到的數(shù)據(jù)存儲在本地磁盤,同時(shí)將數(shù)據(jù)及通道信息顯示在界面上。因此,柴油機(jī)監(jiān)控系統(tǒng)軟件主要由通信、數(shù)據(jù)庫、人機(jī)界面等幾個(gè)模塊組成.。
柴油機(jī)安保監(jiān)控軟件主要功能是完成系統(tǒng)輸入和界面輸出顯示,在完成界面初始化并進(jìn)入系統(tǒng)后,首先進(jìn)行系統(tǒng)初始參數(shù)設(shè)置,包括軟件系統(tǒng)自身運(yùn)行的必要參數(shù)設(shè)置和下位機(jī)運(yùn)行參數(shù)設(shè)置,其中下位機(jī)的運(yùn)行參數(shù)設(shè)置通過CAN通信發(fā)送到下位機(jī)完成初始化工作。隨后系統(tǒng)由上位機(jī)向下位機(jī)發(fā)送數(shù)據(jù)采集命令,進(jìn)入正常的數(shù)據(jù)采集狀態(tài),接收下位機(jī)發(fā)送來的數(shù)據(jù),進(jìn)行參數(shù)、狀態(tài)、報(bào)警的實(shí)時(shí)監(jiān)測,并保存這些狀態(tài)數(shù)據(jù),以便進(jìn)行歷史參數(shù)、狀態(tài)、報(bào)警的記錄查詢。程序運(yùn)行流程見圖2。
確定好系統(tǒng)程序運(yùn)行流程后,通過構(gòu)建不同的類和方法再組成C#中的命名空間來實(shí)現(xiàn)其功能,程序中自定義的命名空間主要有以下幾個(gè)。
1)數(shù)據(jù)庫命名空間(DataBase_System):主要用于配置和操作數(shù)據(jù)庫。
2)通信命名空間(CAN_System):主要用于實(shí)現(xiàn)CAN1和CAN2數(shù)據(jù)傳輸和顯示,包含CAN用函數(shù)結(jié)構(gòu)體,協(xié)議結(jié)構(gòu)體,站地址信息,接收和發(fā)送的線程等。
3)應(yīng)用程序命名空間(Engine_Monitoring_System):控制上述所有的對象,確定程序特點(diǎn),負(fù)責(zé)應(yīng)用程序初始化、運(yùn)行和清除。將各個(gè)窗口界面相關(guān)的類和函數(shù)、功能類、控件類、通信類、數(shù)據(jù)庫類等通過命名空間的形式組織在一起,從而實(shí)現(xiàn)整個(gè)柴油機(jī)安保監(jiān)控系統(tǒng)程序的運(yùn)行。
3.1 數(shù)據(jù)庫設(shè)計(jì)
柴油機(jī)監(jiān)控系統(tǒng)軟件的核心是對柴油機(jī)運(yùn)行參數(shù)的監(jiān)測和顯示,實(shí)現(xiàn)運(yùn)行中的柴油機(jī)的安全保護(hù)和操縱,附加系統(tǒng)參數(shù)的設(shè)置功能,是以數(shù)據(jù)為中心的體系結(jié)構(gòu),依靠數(shù)據(jù)聯(lián)通各個(gè)部分并使之協(xié)調(diào)工作,故可將其數(shù)據(jù)結(jié)構(gòu)組成設(shè)計(jì)成圖3所示的結(jié)構(gòu)。
從系統(tǒng)的數(shù)據(jù)流向上看,可將系統(tǒng)數(shù)據(jù)分為下位機(jī)發(fā)送數(shù)據(jù)和上位機(jī)發(fā)送數(shù)據(jù),其中系統(tǒng)參數(shù)設(shè)置是上位機(jī)發(fā)送給下位機(jī)的數(shù)據(jù),顯示的狀態(tài)和參數(shù)由下位機(jī)發(fā)送給上位機(jī)。
軟件界面上顯示的通道實(shí)時(shí)數(shù)據(jù)來自于下位機(jī)采集的數(shù)據(jù),顯示的通道信息則來自于數(shù)據(jù)庫。本文采用數(shù)據(jù)庫結(jié)構(gòu)中的二維表結(jié)構(gòu)對系統(tǒng)中的實(shí)體集進(jìn)行描述,它是由許多包含字段的記錄組成的,每個(gè)字段對應(yīng)一個(gè)對象屬性??筛鶕?jù)實(shí)際的要求,對字段的長度、數(shù)據(jù)類型及能否配置進(jìn)行設(shè)置,部分二維表如下。
1)T_AnSesorChannelInfo(模擬量通道表)用于管理模擬量各通道的信息。
2)T_ChannelBasicInfo(配置信息基本表)用于管理所有通道的配置信息。
各表的結(jié)構(gòu)均由字段名和數(shù)據(jù)類型組成,由于模擬量通道表包含的信息較為全面,故此處以模擬量通道表為例來展示二維表的內(nèi)部結(jié)構(gòu),見表1。
表1 模擬量通道表的結(jié)構(gòu)
在設(shè)計(jì)好各個(gè)數(shù)據(jù)庫后,柴油機(jī)安保監(jiān)控程序在結(jié)合系統(tǒng)數(shù)據(jù)庫結(jié)構(gòu)的基礎(chǔ)上,通過包含System.Data、System.Data.SqlClient等命名空間來調(diào)用結(jié)構(gòu)化的語言(SQL語言)對數(shù)據(jù)庫進(jìn)行管理[4-5]。
3.2 通信設(shè)計(jì)
柴油機(jī)安保監(jiān)控程序和下位機(jī),以及ECU的通信均采用CAN通信。柴油機(jī)監(jiān)控系統(tǒng)的通信包含兩路CAN通信,其中CAN1端口為程序與監(jiān)控單元的通信端口,CAN2端口為程序與電控單元(ECU)的通信端口。上位PC機(jī)采用的是工控機(jī),工控機(jī)采用PCI9820I型CAN卡與下位機(jī)及ECU進(jìn)行通信。
上位機(jī)安保監(jiān)控程序與下位機(jī)控制器的通信,涉及到多種模擬量和頻率量等的標(biāo)定,采用基于CAN通信的CCP標(biāo)定協(xié)議發(fā)送和接收數(shù)據(jù)。CCP全稱為CAN Calibration Protocol,即CAN標(biāo)定協(xié)議,是基于主從方式可用于在線參數(shù)標(biāo)定和實(shí)時(shí)數(shù)據(jù)采集的CAN總線應(yīng)用層協(xié)議,通過CCP可完成控制參數(shù)標(biāo)定、實(shí)時(shí)數(shù)據(jù)采集和FLASH編程等具體操作。安保監(jiān)控程序與電控單元(ECU)的通信,采用同樣基于CAN并在發(fā)動機(jī)中常用的SAE J1939通信協(xié)議進(jìn)行發(fā)送和接收數(shù)據(jù)。
針對柴油機(jī)安保監(jiān)控系統(tǒng)任務(wù)多,通信量大,實(shí)時(shí)性要求高等特點(diǎn),程序在設(shè)計(jì)時(shí)采用多線程技術(shù)。柴油機(jī)安保監(jiān)控系統(tǒng)程序通信中主要采用以下幾個(gè)線程:數(shù)據(jù)接收線程(threadRAV),掉線重連接線程(threadReConn),數(shù)據(jù)解碼線程(threadDecode),記錄線程(threadRecord),下載線程(threadDwnP)。具體運(yùn)行流程如下。
1)打開軟件后,程序首先打開CAN設(shè)備,并設(shè)置CAN設(shè)備的一些相關(guān)參數(shù)及進(jìn)行CAN設(shè)備的初始化,并開啟上述線程。
2)開啟線程后,系統(tǒng)向下位機(jī)發(fā)送連接指令與下位機(jī)進(jìn)行通信連接,通信連接上后立即向下位機(jī)發(fā)送數(shù)據(jù)采集指令以接收下位機(jī)數(shù)據(jù)。若運(yùn)行中出現(xiàn)掉線,則通過掉線重連接線程(threadReConn)與掉線的模塊重新建立連接。CAN2則是直接接受ECU傳遞過來的數(shù)據(jù)。
3)數(shù)據(jù)采集指令發(fā)出后,接收線程(threadRAV)開始接收下位機(jī)數(shù)據(jù),并將數(shù)據(jù)放置于一個(gè)隊(duì)列中,同時(shí)解碼線程(ThreadDecode)會從數(shù)據(jù)隊(duì)列的首部取出數(shù)據(jù)進(jìn)行解碼。數(shù)據(jù)解碼后,解碼線程會將解碼后的數(shù)據(jù)傳遞給記錄線程(threadRecord),將這些數(shù)據(jù)存儲在本地磁盤上供顯示及歷史查詢使用。
4)通信連通后,下載線程(threadDwnP)也會立即運(yùn)行,并檢查用戶是否修改了配置信息。如有修改,則將修改后的配置信息通過下載線程發(fā)送至下位機(jī)。
3.3 程序界面設(shè)計(jì)
結(jié)合用戶對監(jiān)控系統(tǒng)界面的要求可將界面劃分如下:
1)主界面,用于顯示柴油機(jī)的轉(zhuǎn)速和8個(gè)重要通道的數(shù)據(jù),以及上下位機(jī)通信連接狀態(tài)。
2)數(shù)據(jù)顯示界面,用于顯示各個(gè)通道的實(shí)時(shí)數(shù)據(jù),并可選擇將其中8個(gè)通道的數(shù)據(jù)以曲線的形式顯示在界面上。此外,軟件提供了歷史曲線查詢功能,可查詢在某段時(shí)間內(nèi)某一通道的數(shù)據(jù),并以曲線形式顯示在界面上。
3)報(bào)警界面,將柴油機(jī)運(yùn)行過程中需要監(jiān)測報(bào)警的通道的實(shí)時(shí)狀態(tài)顯示在界面上,當(dāng)出現(xiàn)報(bào)警時(shí),在界面上以紅色標(biāo)出。此外,不管當(dāng)前處于哪一界面,若出現(xiàn)報(bào)警則立即跳轉(zhuǎn)至報(bào)警界面,以提示用戶出現(xiàn)了報(bào)警情況。軟件也提供了報(bào)警查詢的功能,用于查詢某段時(shí)間內(nèi)出現(xiàn)的報(bào)警信息(包括報(bào)警通道及報(bào)警發(fā)生時(shí)間)。
4)打印界面,提供通道數(shù)據(jù)的打印功能,可選擇60個(gè)通道進(jìn)行打印輸出。
5)系統(tǒng)設(shè)置界面,完成下位機(jī)配置信息的下載,數(shù)據(jù)庫的備份和恢復(fù),中英文切換等功能。
6)登錄界面:系統(tǒng)提供了兩類權(quán)限,一是普通權(quán)限,能完成系統(tǒng)的監(jiān)視、記錄查詢和打印功能;另一類為管理員權(quán)限,除了擁有普通權(quán)限功能外,還可以進(jìn)行系統(tǒng)設(shè)置。管理員權(quán)限需在該界面登錄賬號。
設(shè)計(jì)好的系統(tǒng)界面主要功能模塊見圖4。
針對各個(gè)界面逐一校核后發(fā)現(xiàn),該系統(tǒng)能根據(jù)通信協(xié)議滿足實(shí)時(shí)監(jiān)測保護(hù)的要求,各通道均能接收正確的數(shù)據(jù)并顯示對應(yīng)狀態(tài),各界面數(shù)據(jù)刷新時(shí)間為1 s。但模擬量生成的曲線波形波動較大,達(dá)到3~5 ℃的偏差,波形中存在較大的噪聲,故需要采用軟件濾波器對通道數(shù)值進(jìn)行濾波,濾掉其波形中所包含的噪聲。
根據(jù)溫度、壓力等模擬量參數(shù)是連續(xù)的值并結(jié)合噪聲干擾因素等情況,采用中位均值限幅濾波。中位均值限幅濾波是將中位均值濾波與限幅濾波相結(jié)合的方法,其具體方法是:對單個(gè)通道采集N次,去掉其最大值和最小值后,取其均值作為第一次通道采集到的值,根據(jù)經(jīng)驗(yàn)判斷溫度是連續(xù)變化的,在極短的時(shí)間假設(shè)其變化值為X℃,將第二次中位均值采集到的數(shù)值與第一次采集到的數(shù)值進(jìn)行比較,若兩者之差小于或等于X,則認(rèn)為此次采集到的數(shù)值是準(zhǔn)確的,此時(shí)更新通道顯示的值為第二次的數(shù)值;若兩者之差大于X,則不更新該通道的顯示值;進(jìn)行第三次中位均值采集的時(shí)候,則以第二次通道顯示值為準(zhǔn),依此類推。
濾波前后通道采集的波形對比,見圖5。
采用C#語言并結(jié)合數(shù)據(jù)庫管理技術(shù),進(jìn)行了柴油機(jī)安保監(jiān)控系統(tǒng)軟件的開發(fā)。該軟件可實(shí)現(xiàn)對柴油機(jī)運(yùn)行工況的實(shí)時(shí)監(jiān)控,軟件監(jiān)測精度較高。通過使用此上位機(jī)軟件對柴油機(jī)進(jìn)行實(shí)時(shí)監(jiān)控,能準(zhǔn)確把握柴油機(jī)運(yùn)行中的狀態(tài)變化,及時(shí)發(fā)現(xiàn)柴油機(jī)運(yùn)行中出現(xiàn)的故障,提高柴油機(jī)運(yùn)行的安全性。本監(jiān)控系統(tǒng)軟件的設(shè)計(jì)思路和實(shí)現(xiàn)方法,可為國內(nèi)柴油機(jī)監(jiān)控以及船舶自動化等領(lǐng)域提供一定的參考。
此安保監(jiān)控系統(tǒng)軟件還有些需要改進(jìn)的方面,如軟件長時(shí)間運(yùn)行,需要定期對接受的海量數(shù)據(jù)進(jìn)行處理,既要做到不影響歷史數(shù)據(jù)分析,又需保證數(shù)據(jù)運(yùn)行空間,處理方法有待進(jìn)一步優(yōu)化。
[1] 孫培廷.船舶柴油機(jī)動力裝置發(fā)展趨勢與環(huán)境關(guān)系的探討[J].航海技術(shù),2000(2):5-7.
[2] 陳越.船用柴油機(jī)監(jiān)控系統(tǒng)模塊化設(shè)計(jì)技術(shù)研究[D].哈爾濱:哈爾濱工程大學(xué),2009.
[3] 羅福強(qiáng),楊劍,張敏輝.C#程序設(shè)計(jì)經(jīng)典教程[M].北京:清華大學(xué)出版社,2014.
[4] 扶松柏.深入體驗(yàn)C#項(xiàng)目開發(fā)[M].北京:清華大學(xué)出版社,2011.
[5] Vidya Vrat Agarwal. C# 2012數(shù)據(jù)庫編程入門經(jīng)典[M].北京:清華大學(xué)出版社,2013.
[6] 饒運(yùn)濤.現(xiàn)場總線CAN原理與應(yīng)用技術(shù)[M].北京,北京航空航天大學(xué)出版社,2003.
[7] 劉運(yùn)瀟.基于CCP的通用型ECU標(biāo)定系統(tǒng)研究和設(shè)計(jì)[D].上海:上海交通大學(xué),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
國家部委基金資助項(xiàng)目(2012BAG02B00)
游伏兵(1971—),男,博士,副教授
U664.121
A
1671-7953(2017)02-0153-04
修回日期:2016-09-14
研究方向:柴油機(jī)性能及排放