高喜奎,白 焰,蔣敏敏,琚 贇
(華北電力大學(xué) 控制與計(jì)算機(jī)工程學(xué)院,北京 102206)
在線分析儀器是在工業(yè)生產(chǎn)流程中可以采取連續(xù)或周期性的方式來檢測(cè)待測(cè)的物質(zhì)化學(xué)成分或某些物質(zhì)特性的具有高度自動(dòng)化結(jié)構(gòu)的分析儀表[1]。在現(xiàn)代工業(yè)領(lǐng)域中,隨著在線分析儀器的需求量的日益增加、儀表設(shè)備日益復(fù)雜化與大型化,Internet技術(shù)和人工智能技術(shù)(特別是專家系統(tǒng))在故障診斷中的應(yīng)用引起了人們的高度重視,實(shí)現(xiàn)在線分析儀器的遠(yuǎn)程監(jiān)測(cè)和故障診斷已成為工業(yè)領(lǐng)域的迫切需求[2]。然而,在線分析儀表一般采用內(nèi)部通信協(xié)議,為了實(shí)現(xiàn)故障診斷專家系統(tǒng)自主研制、開發(fā)與集成,實(shí)現(xiàn)這些儀表的通信協(xié)議解析是十分必要的。
基于無線傳感器網(wǎng)絡(luò)的在線分析儀器故障診斷系統(tǒng)的數(shù)據(jù)流向結(jié)構(gòu)如圖1所示。這個(gè)系統(tǒng)可以分為3個(gè)子模塊,分別為現(xiàn)場(chǎng)儀器儀表到數(shù)據(jù)庫(kù)的協(xié)議解析、數(shù)據(jù)庫(kù)與知識(shí)庫(kù)的檢索以及圖形用戶界面 GUI(graphical user interface)的實(shí)現(xiàn)。 該系統(tǒng)所實(shí)現(xiàn)的功能如下:該系統(tǒng)能夠從現(xiàn)場(chǎng)的儀器儀表上接收數(shù)據(jù),并連續(xù)監(jiān)測(cè)這些輸入,當(dāng)出現(xiàn)需要嚴(yán)加注意的狀況時(shí),系統(tǒng)對(duì)這些運(yùn)行狀態(tài)加以檢測(cè),若出現(xiàn)故障,就對(duì)工作人員發(fā)出警告指示并能利用知識(shí)庫(kù)搜索引擎來檢索知識(shí)庫(kù)與數(shù)據(jù)庫(kù)中的內(nèi)容,將搜索到的相關(guān)信息以各種方式顯示在人機(jī)界面上,以達(dá)到故障預(yù)警與故障維護(hù)的目的。而對(duì)整個(gè)系統(tǒng)而言,要想實(shí)現(xiàn)這個(gè)功能,其最基本、最重要的就是在線分析儀器的通信協(xié)議的解析。
圖1 故障診斷專家系統(tǒng)結(jié)構(gòu)Fig.1 Structure of the fault diagnosis expert system
一般來講,置于現(xiàn)場(chǎng)的在線分析儀器是實(shí)時(shí)地往控制中心回傳檢測(cè)數(shù)據(jù)的,當(dāng)儀表正常工作時(shí),回傳的數(shù)據(jù)均表現(xiàn)為正常的數(shù)值,一旦系統(tǒng)出現(xiàn)故障或者檢測(cè)到的數(shù)據(jù)出現(xiàn)異常情況,回傳的數(shù)據(jù)中就會(huì)產(chǎn)生故障碼[3]。所以,主要任務(wù):一是接收大量回傳的數(shù)據(jù)并根據(jù)儀器儀表的通信協(xié)議將數(shù)據(jù)與信息的對(duì)應(yīng)關(guān)系解析出來以建立數(shù)據(jù)庫(kù);二是要將故障碼從正常數(shù)據(jù)中解析出來用于建立知識(shí)庫(kù)。
ULTRAMAT 23是西門子公司的在線氣體分析儀,它是基于串口與計(jì)算機(jī)之間進(jìn)行通信的。串口通信的數(shù)據(jù)幀由起始位、數(shù)據(jù)位、停止位和奇偶校驗(yàn)位組成。數(shù)據(jù)獲取便是對(duì)每一幀按照指定的串口參數(shù)進(jìn)行拆解,取得數(shù)據(jù)位。
為了能更快更方便地獲取U23與計(jì)算機(jī)之間的通信數(shù)據(jù),可以采用最簡(jiǎn)單的硬件接線。從U23的通信串口RS485接出,使用RS485/RS232轉(zhuǎn)換器,再接入到計(jì)算機(jī)的串口RS232。
由于U23的通信協(xié)議屬于不對(duì)外公開的內(nèi)部協(xié)議,無法直接獲取通信數(shù)據(jù),只能通過其配套的應(yīng)用軟件Siprom GA來實(shí)現(xiàn)PC機(jī)與U23的串口通信。操作Siprom GA時(shí),實(shí)際上就是計(jì)算機(jī)通過串口向U23下發(fā)指令數(shù)據(jù),U23接收到上位機(jī)發(fā)送來的指令后作出相應(yīng)應(yīng)答,并向計(jì)算機(jī)發(fā)送響應(yīng)數(shù)據(jù)。這樣,通過串口通訊軟件,就能截取到經(jīng)過該串口的所有數(shù)據(jù)。
串口調(diào)試助手是串口調(diào)試相關(guān)工具,在互聯(lián)網(wǎng)上有多個(gè)版本,支持9600、19200等常用各種波特率及自定義波特率,可以自動(dòng)識(shí)別串口;能夠設(shè)置校驗(yàn)、數(shù)據(jù)位和停止位;能夠以ASCII碼或十六進(jìn)制接收或發(fā)送任何數(shù)據(jù)或字符;能夠任意設(shè)定自動(dòng)發(fā)送周期,并能將接收數(shù)據(jù)保存成文本文件;能夠發(fā)送任意大小的文本文件。
采用串口調(diào)試助手獲取通信數(shù)據(jù)步驟如下:
(1)預(yù)先在串口調(diào)試助手中選擇相應(yīng)的串口號(hào),設(shè)置好波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位等串口參數(shù);
(2)打開 Siprom GA,連接計(jì)算機(jī)與 U23,進(jìn)行一些操作,如讀診斷值、日志信息等;
(3)退出Siprom GA,打開串口調(diào)試助手,連接;
(4)將收到數(shù)據(jù)截圖保存或直接接收轉(zhuǎn)成文本文檔。
結(jié)合使用串口調(diào)試助手與Siprom GA,便能成功接收到儀表傳輸給計(jì)算機(jī)的數(shù)據(jù)。但是,由于從上位機(jī)發(fā)送指令數(shù)據(jù)到接收到儀表的響應(yīng)數(shù)據(jù),這一過程是很短暫的,可能僅需要幾毫秒甚至更少,當(dāng)串口調(diào)試助手無法同時(shí)與Siprom GA使用時(shí),基本上不可能從串口調(diào)試助手截取到上位機(jī)下發(fā)的指令數(shù)據(jù)與相應(yīng)操作的應(yīng)答數(shù)據(jù)。因此該方法僅適用于在線分析儀表不停地往上位機(jī)發(fā)送響應(yīng)數(shù)據(jù)或儀表發(fā)送響應(yīng)數(shù)據(jù)存在很大延遲的情況。很明顯,這2種情況僅存在極少數(shù)的案例。
串口監(jiān)聽軟件是偵測(cè)RS232/422/485串行端口的專業(yè)工具軟件,能夠偵聽、攔截、記錄、分析串行通信協(xié)議;能夠?qū)崟r(shí)監(jiān)測(cè)應(yīng)用程序操作串行端口的過程和細(xì)節(jié);能夠及時(shí)地模擬被偵聽程序或設(shè)備的數(shù)據(jù)、控制流;能夠捕獲串口的打開、讀寫數(shù)據(jù)、關(guān)閉操作,并能同時(shí)監(jiān)視指定進(jìn)程的最多255個(gè)串口;無須設(shè)定串口參數(shù),不會(huì)占用串口,只會(huì)對(duì)相關(guān)的API進(jìn)行攔截。
采用串口監(jiān)聽軟件獲取通信數(shù)據(jù)步驟如下:
(1)開啟 Siprom GA;
(2)打開串口監(jiān)聽軟件,選擇相應(yīng)進(jìn)程ID即Siprom GA.exe、串口號(hào)等,啟動(dòng)監(jiān)聽;
(3)回到Siprom GA界面,連接計(jì)算機(jī)和U23,然后進(jìn)行一系列操作,如讀診斷值、日志信息等;
(4)將串口監(jiān)聽軟件監(jiān)聽到的數(shù)據(jù)截圖保存或直接接收轉(zhuǎn)成文本文檔。
結(jié)合使用串口監(jiān)聽軟件與Siprom GA,便可很輕松地獲取計(jì)算機(jī)與串口的通信數(shù)據(jù)。與使用串口調(diào)試助手方法相比,采用該方法的主要優(yōu)點(diǎn)有2個(gè):一是不需要知道串口的匹配參數(shù),而直接監(jiān)聽到串口數(shù)據(jù);二是不占用串口,能同時(shí)與其他應(yīng)用程序使用,并實(shí)時(shí)監(jiān)測(cè)該程序操作串口的過程中的通信數(shù)據(jù)。
串口數(shù)據(jù)記錄儀是一種串口數(shù)據(jù)存儲(chǔ)設(shè)備。采用高速ARM控制芯片,將串口RS232電平以文件的方式透明地記錄在存儲(chǔ)介質(zhì)中。當(dāng)使用記錄后的數(shù)據(jù)時(shí),可以通過模塊自身的USB2.0接口上傳到電腦上。
同樣的,采用串口數(shù)據(jù)記錄儀來獲取數(shù)據(jù)無需匹配串口參數(shù),且不占用串口。但是,無法實(shí)時(shí)地監(jiān)測(cè)到串口的操作數(shù)據(jù),對(duì)后期的分析工作造成困難。
綜合上述3種方法的優(yōu)缺點(diǎn),采用第2種方法來獲取串口數(shù)據(jù)。
通過串口監(jiān)聽獲取數(shù)據(jù)后,需要對(duì)接收到的大量數(shù)據(jù)進(jìn)行解析。由于對(duì)協(xié)議的步驟格式一無所知,采用數(shù)據(jù)挖掘技術(shù)來解析協(xié)議。對(duì)接收到的數(shù)據(jù)進(jìn)行分析步驟如圖2所示。
圖2 數(shù)據(jù)分析流程圖Fig.2 Flow chart of data analyse
數(shù)據(jù)挖掘是從大量的數(shù)據(jù)中抽取潛在的、有價(jià)值的知識(shí)(模型或規(guī)則)的過程[4]。在協(xié)議解析中,主要用到的數(shù)據(jù)挖掘技術(shù)有:
1)關(guān)聯(lián)分析算法。即利用關(guān)聯(lián)規(guī)則進(jìn)行數(shù)據(jù)挖掘,尋找在同一事件中出現(xiàn)的不同項(xiàng)的相關(guān)性[11]。一般用4個(gè)參數(shù)來描述一個(gè)關(guān)聯(lián)規(guī)則的屬性:置信度、支持度、最小置信度和最小支持度。關(guān)聯(lián)規(guī)則的挖掘通常分2個(gè)步驟:一是找出所有的頻繁項(xiàng)集,即從事務(wù)集中找出所有支持度大于最小支持度的數(shù)據(jù)項(xiàng)集;二是由頻繁項(xiàng)集產(chǎn)生強(qiáng)關(guān)聯(lián)規(guī)則,這些規(guī)則必須滿足最小支持度和最小置信度。通過該算法可以解析出通信協(xié)議的起始和結(jié)束標(biāo)志,并確定協(xié)議的大致格式結(jié)構(gòu)。
2)聚類分析算法。聚類是一個(gè)把數(shù)據(jù)對(duì)象劃分成子集的過程,屬于無監(jiān)督學(xué)習(xí)。這種算法通過觀察學(xué)習(xí),計(jì)算不同數(shù)據(jù)段的屬性差別,把類似的數(shù)據(jù)段聚集在一起,然后判斷出數(shù)據(jù)包中各數(shù)據(jù)段的含義。
3)分類分析算法。數(shù)據(jù)分類是一個(gè)兩階段過程,包括學(xué)習(xí)階段和分類階段[4]。學(xué)習(xí)階段就是通過分析或從訓(xùn)練集“學(xué)習(xí)”來構(gòu)造分類器,但是該階段并不保證分類的準(zhǔn)確率。因此,在分類階段,首先評(píng)估分類器的預(yù)測(cè)準(zhǔn)確率,如果準(zhǔn)確率是可行的,那么就可以用它對(duì)類標(biāo)號(hào)未知數(shù)據(jù)元組進(jìn)行分類,否則,還需重新構(gòu)建分類模型。在協(xié)議解析中,通過該算法能夠分類解析出數(shù)據(jù)包中各數(shù)據(jù)段的含義。
結(jié)合使用聚類和分類算法,可以更好地對(duì)接收到的數(shù)據(jù)進(jìn)行拆分、解析,得出儀表的通信協(xié)議格式。
使用Siprom GA讀取診斷值和偏移值時(shí),軟件界面上會(huì)顯示故障信息。此時(shí),串口通信數(shù)據(jù)里面很明顯是包含故障碼的。對(duì)照解析出的協(xié)議,提取出有可能是故障碼的數(shù)據(jù)段,結(jié)合Siprom GA上的故障日志信息,再對(duì)照U23工作手冊(cè),進(jìn)行驗(yàn)證修改,便可分析出故障代碼。對(duì)于故障碼的解析,其思路和方法與協(xié)議解析的思路方法大同小異,此處不再贅述。
使用串口監(jiān)視軟件可以實(shí)時(shí)獲取U23與計(jì)算機(jī)的通信數(shù)據(jù),比如以下3條數(shù)據(jù)為執(zhí)行不同操作時(shí)獲取的指令數(shù)據(jù):
對(duì)獲取的數(shù)據(jù)進(jìn)行挖掘后,可以總結(jié)歸納出U23通信協(xié)議的步驟如表1所示。該儀表的通信步驟以10H 01H開始以10H 03H結(jié)束。而最重要的信息在有效數(shù)據(jù)里,有效數(shù)據(jù)中包括源地址、目的地址、儀表狀態(tài)、指令、數(shù)據(jù)等信息。而有效數(shù)據(jù)中每一類數(shù)據(jù)所用的表示方式也不盡相同,有十六進(jìn)制、ASCII碼以及其他表示方式。
表1 U23通信協(xié)議步驟Tab.1 Communication protocol steps of U23
本系統(tǒng)都是基于JAVA的運(yùn)行環(huán)境開發(fā)的,所以故障診斷專家系統(tǒng)與西門子氣體分析儀的通信即是利用JAVA實(shí)現(xiàn)PC機(jī)與儀表的串口通信[5-7]。
JAVA的串口通信API可以使用Sun公司開發(fā)的comm.jar,串口的初始配置程序片斷如下:
考慮到故障診斷專家系統(tǒng)與在線分析儀表之間數(shù)據(jù)的傳輸速度匹配問題以及龐大的數(shù)據(jù)量,在本系統(tǒng)中采用串口讀數(shù)據(jù)的線程模型和環(huán)形緩沖器相結(jié)合的方法來進(jìn)行數(shù)據(jù)處理[5-7]。
采用該方法,在有效地提高程序的數(shù)據(jù)處理速度同時(shí)大大降低程序占用的內(nèi)存空間。
串口讀數(shù)據(jù)的線程模型實(shí)際上就是使用2個(gè)線程——接收線程和程序處理線程。如圖3所示,接收線程從串口獲取數(shù)據(jù),并將數(shù)據(jù)打包放入環(huán)形緩沖區(qū)中,然后啟動(dòng)程序處理線程從環(huán)形緩沖區(qū)中獲取并處理數(shù)據(jù)。
圖3 串口讀數(shù)據(jù)的線程模型Fig.3 Threading model while reading a serial port
環(huán)形緩沖區(qū),顧名思義是一個(gè)環(huán)形的緩沖區(qū)域,用于存放從串口發(fā)送來的數(shù)據(jù)。環(huán)形緩沖區(qū)設(shè)有一個(gè)讀指針和一個(gè)寫指針。讀指針指向環(huán)形緩沖區(qū)中可讀的數(shù)據(jù),寫指針指向環(huán)形緩沖區(qū)中可寫的緩沖區(qū)。接收線程只影響寫指針,數(shù)據(jù)處理線程只影響讀指針,通過移動(dòng)讀指針和寫指針就可以實(shí)現(xiàn)緩沖區(qū)的數(shù)據(jù)讀取和寫入。為了防止出現(xiàn)緩沖區(qū)中數(shù)據(jù)讀空或數(shù)據(jù)覆蓋的現(xiàn)象,需要添加保護(hù)機(jī)制確保緩沖器已滿時(shí)接收進(jìn)程不再試著往里寫數(shù)據(jù),數(shù)據(jù)處理線程在緩沖器為空時(shí)也不去取數(shù)據(jù)。
本文的主要研究?jī)?nèi)容為在線分析儀器通信協(xié)議解析。通過監(jiān)視西門子氣體分析儀U23與PC機(jī)間的串口通信,截取經(jīng)過串口的所有數(shù)據(jù),通過數(shù)據(jù)挖掘技術(shù)解析出通信協(xié)議的步驟以及各個(gè)字段所代表的含義,最后總結(jié)出在線分析儀器的內(nèi)部通信協(xié)議及其故障碼。并且利用解析出來的協(xié)議,用JAVA實(shí)現(xiàn)故障診斷專家系統(tǒng)與U23的通信。這一研究是十分有意義的,提出了一種新的儀器儀表協(xié)議解析方式并且成功實(shí)現(xiàn)了故障診斷專家系統(tǒng)與在線分析儀器的通信,對(duì)該系統(tǒng)集成不同在線分析儀器、進(jìn)行遠(yuǎn)程實(shí)時(shí)故障診斷操作具有重要意義。
[1]王森.在線分析儀器手冊(cè)[M].北京:化學(xué)工業(yè)出版社,2008.
[2]胡素娟.FC SAN協(xié)議分析與故障診斷系統(tǒng)的研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2012.
[3]賈磊磊.無線傳感器網(wǎng)絡(luò)在煤炭集團(tuán)大規(guī)模遠(yuǎn)程監(jiān)測(cè)的研究[J].煤炭技術(shù),2013,32(6):195-196.
[4]Han Jiawei,Kamber Micheline,Pei Jian.數(shù)據(jù)挖掘概念與技術(shù)[M].北京:機(jī)械工業(yè)出版社,2012.
[5]吳金鋒,劉偉平,黃紅斌.Java串口通信數(shù)據(jù)采控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,26(10):65-66,75.
[6]馬賽,王忠,陳典.基于Java異步串行通信技術(shù)的研究[J].計(jì)算機(jī)測(cè)量與控制,2014(8):2644-2646,2649.
[7]李剛.瘋狂Java講義[M].北京:電子工業(yè)出版社,2008.