韓江洪, 周 濤, 張本宏, 孫 峰, 魏振春
(1.合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院,安徽 合肥 230009;2.合肥工業(yè)大學(xué) 安全關(guān)鍵工業(yè)測控技術(shù)教育部工程研究中心,安徽 合肥230009)
Petri網(wǎng)是一種用網(wǎng)狀圖形表示系統(tǒng)建模的方法,并具有嚴(yán)格數(shù)學(xué)定義的圖形建模工具,是對異步、離散、并發(fā)事件動(dòng)態(tài)系統(tǒng)建模和性能分析的有力工具,已在許多領(lǐng)域得到了廣泛的應(yīng)用[1]。車身網(wǎng)絡(luò)診斷系統(tǒng)具有離散的狀態(tài),并在診斷消息事件的驅(qū)動(dòng)下進(jìn)行狀態(tài)演化,因此可以看成一個(gè)離散事件系統(tǒng)。運(yùn)用Petri網(wǎng)對車身網(wǎng)絡(luò)診斷系統(tǒng)進(jìn)行建模,可以最大限度地保證開發(fā)系統(tǒng)的正確和可靠。而有色的Petri網(wǎng)能夠進(jìn)一步降低系統(tǒng)模型的復(fù)雜性,因而更加適合復(fù)雜離散事件系統(tǒng)的建模[2-4]。在車身故障診斷系統(tǒng)中,利用Petri網(wǎng)可以很好地描述故障診斷信息的產(chǎn)生過程。但是由于消極消息的多樣性和不確定性,用普通的Petri網(wǎng)建模方法難以滿足故障診斷的要求。因此,本文將有色Petri網(wǎng)技術(shù)運(yùn)用在車身網(wǎng)絡(luò)診斷系統(tǒng)中并給出了有色Petri網(wǎng)的建模方法,通過仿真實(shí)驗(yàn)證明了該方法的有效性。
在總線式的車身診斷控制系統(tǒng)中,分布于汽車車身的多個(gè)電子控制單元(ECU)是通過CAN總線連成網(wǎng)絡(luò)[5],而每個(gè)電子控制單元都包含了與之相應(yīng)的診斷服務(wù)功能。通常在診斷的時(shí)候選擇診斷儀為中央控制節(jié)點(diǎn),并以邏輯的方式實(shí)現(xiàn)對車身中各個(gè)ECU節(jié)點(diǎn)的控制和診斷[6-8]。
總線式車身網(wǎng)絡(luò)診斷系統(tǒng)的工作流程為:診斷儀改變會(huì)話狀態(tài);ECU發(fā)送響應(yīng)消息;診斷儀發(fā)送所需進(jìn)行的診斷服務(wù);相關(guān)的ECU接收到命令消息,并根據(jù)命令作出相應(yīng)的動(dòng)作后按照確定的規(guī)則產(chǎn)生相應(yīng)的消息并回復(fù)。
診斷服務(wù)原語的狀態(tài)是離散的,其狀態(tài)組合構(gòu)成了整個(gè)車身控制系統(tǒng)的狀態(tài)空間,而ECU內(nèi)各個(gè)服務(wù)原語的狀態(tài)改變、響應(yīng)消息的接收可以作為事件。在事件驅(qū)動(dòng)下,診斷響應(yīng)消息狀態(tài)按照一定規(guī)則發(fā)生變化,因此車身網(wǎng)絡(luò)診斷系統(tǒng)具有離散時(shí)間系統(tǒng)的典型特征:狀態(tài)的變化是由事件驅(qū)動(dòng),并只在離散時(shí)間點(diǎn)發(fā)生改變;狀態(tài)的變化遵循一定的邏輯規(guī)則。
Petri網(wǎng)是由Carl Adam Petri發(fā)明的。最初只有自動(dòng)化專家對Petri網(wǎng)感興趣,后來Petri網(wǎng)在計(jì)算機(jī)科學(xué)中也得到了廣泛的應(yīng)用,如在性能評價(jià)、操作系統(tǒng)和軟件工程等領(lǐng)域,Petri網(wǎng)都得到了比較廣泛的應(yīng)用。特別是相關(guān)研究已經(jīng)證明,用Petri網(wǎng)可以有效地描述并發(fā)活動(dòng)[9]。
Petri網(wǎng)包含4種元素:一組位置P、一組轉(zhuǎn)換T、輸入函數(shù)I以及輸出函數(shù)O,Petri網(wǎng)的組成如圖1所示。
圖1 Petri網(wǎng)的組成
圖1中,一組位置P為{P1,P2,P3,P4,P5},用圓圈代表位置;一組轉(zhuǎn)換T為{t1,t2},用短直線表示轉(zhuǎn)換;2個(gè)用于轉(zhuǎn)換的輸入函數(shù)用由位置指向轉(zhuǎn)換的箭頭表示,即
2個(gè)用于轉(zhuǎn)換的輸出函數(shù)用由轉(zhuǎn)換指向位置的箭頭表示,即
所以,更形式化的Petri網(wǎng)結(jié)構(gòu)是一個(gè)四元組C={P,T,I,O}。其中,P={P1,…,Pn}是一個(gè)有窮位置集,n>0;T={t1,…,tm}是一個(gè)有窮的轉(zhuǎn)換集合,m>0,且T和P不相交;I:P→T為輸入函數(shù),是由轉(zhuǎn)換到位置無序單位組的映射;O:T→P為輸出函數(shù),是由位置到轉(zhuǎn)換無序單位組的映射。
如果只是使用基本的Petri網(wǎng)作為車身網(wǎng)絡(luò)診斷系統(tǒng),ECU中每個(gè)服務(wù)的狀態(tài)只能有一種狀態(tài)。而選擇CPN來建模,則可以將每個(gè)器件用一個(gè)庫所描述,再通過不同顏色的托肯來表示其不同的狀態(tài)。診斷儀任何的一個(gè)請求服務(wù)的變化都會(huì)觸發(fā)產(chǎn)生響應(yīng)的ECU的響應(yīng)狀態(tài)消息,這一事件可以用一個(gè)變遷來描述,其發(fā)送的消息可以用一個(gè)普通的托肯表示。響應(yīng)ECU接收到請求服務(wù)消息后,會(huì)檢測與之相關(guān)的服務(wù)狀態(tài),然后根據(jù)規(guī)則產(chǎn)生響應(yīng)消息,其過程對應(yīng)的是一個(gè)變遷。產(chǎn)生的響應(yīng)消息可以讓控制單元改變狀態(tài)或者讀出該單元目前的狀態(tài),因而可以用一個(gè)庫所表示??刂茊卧捻憫?yīng)消息也是一事件,需要使用一個(gè)變遷來表示。
每個(gè)服務(wù)在任何一個(gè)時(shí)刻只會(huì)處于一種狀態(tài),因此在表示服務(wù)的庫所之中任何時(shí)刻只存在一個(gè)有色托肯。對于表示診斷儀的庫所在同一時(shí)刻只能發(fā)送一種服務(wù)命令消息,因此其庫所容量也要限為1,由此本文對有色Petri網(wǎng)添加了如下約定。
約定1 在Σ中,各個(gè)庫所包含的托肯最多只能為1,即 ?p∈P:M(p)≤1。
而車身網(wǎng)絡(luò)診斷系統(tǒng)包括通信管理、權(quán)限管理、監(jiān)控管理、Flash編程等子模塊。此時(shí),可以在建立各個(gè)子模塊的CPN后再合并各個(gè)子網(wǎng)模型中的相同的庫所和變遷,然后合并成整個(gè)ECU的車身網(wǎng)絡(luò)診斷模塊。由于篇幅所限,下面僅以Flash編程模塊為例進(jìn)行說明,并給出CPN的子模型。
在車身網(wǎng)絡(luò)診斷Flash編程子模塊中,請求會(huì)話層服務(wù)包含了默認(rèn)會(huì)話、編程會(huì)話、擴(kuò)展會(huì)話3個(gè)子請求消息,這3個(gè)會(huì)話分別是診斷儀請求所對應(yīng)的ECU將會(huì)話模式調(diào)整到相應(yīng)的會(huì)話方式,只有在相應(yīng)的會(huì)話模式下才能進(jìn)行響應(yīng)的診斷服務(wù)。例程服務(wù)請求包含了擦除請求服務(wù)、下載控制服務(wù),例程請求必須在編程會(huì)話模式下才能進(jìn)行。安全訪問請求服務(wù)包含了安全種子發(fā)送請求服務(wù)、安全碼發(fā)送服務(wù)。其中,安全種子發(fā)送服務(wù)完成之后才能進(jìn)行安全碼發(fā)送服務(wù),此服務(wù)只有在編程會(huì)話下進(jìn)行。另外,F(xiàn)lash下載服務(wù)中包含了請求下載服務(wù)、下載服務(wù)和退出下載服務(wù)。只有在完成了安全訪問請求服務(wù)和路徑請求服務(wù)后才能進(jìn)行Flash下載服務(wù)。
由此可見診斷儀發(fā)送的服務(wù)請求都是輸入器件,而ECU返回的響應(yīng)消息都是輸出器件。本文根據(jù)上述的描述將庫所定義如下:P1為默認(rèn)會(huì)話回復(fù)狀態(tài);P2為ECU會(huì)話層狀態(tài);P3為擴(kuò)展會(huì)話回復(fù)狀態(tài);P4為編程會(huì)話回復(fù)狀態(tài);P5為安全訪問服務(wù)碼回復(fù)狀態(tài);P6為安全算法通過狀態(tài);P7為清除例程完成狀態(tài);P8為安全訪問回復(fù)狀態(tài);P9為下載狀態(tài)控制狀態(tài);P10為例程服務(wù)回復(fù)狀態(tài);P11為請求下載服務(wù)狀態(tài);P12為下載服務(wù)狀態(tài);P13為退出下載服務(wù)狀態(tài)。為了方便理解,將CPN模型劃分為3層:
(1)狀態(tài)轉(zhuǎn)換層。整個(gè)車身網(wǎng)絡(luò)診斷服務(wù)是在不同的狀態(tài)下完成的,此層只需完成狀態(tài)的轉(zhuǎn)換并得到正確的響應(yīng)。
(2)下載前的判定層。車身的Flash下載服務(wù)必須在獲得相應(yīng)的權(quán)限后才能進(jìn)行,因此在進(jìn)入了相應(yīng)的會(huì)話狀態(tài)后,必須判斷此時(shí)是否獲得權(quán)限和是否完成了下載前的準(zhǔn)備,只有在獲得了此層的正確響應(yīng)后才能繼續(xù)進(jìn)行下一層的服務(wù)。
(3)Flash下載層。此層主要是接收下載的數(shù)據(jù),判斷數(shù)據(jù)是否符合規(guī)范,并給出最終結(jié)果。
整個(gè)狀態(tài)轉(zhuǎn)換如圖2所示。
圖2 Flash編程子模塊CPN模型
圖2中各個(gè)變遷的含義見表1所列,而對于圖2中的庫所,將其顏色定義如下:
C(P1)=(無消息,默認(rèn)會(huì)話通過,默認(rèn)會(huì)話否決)。
C(P3)=(無消息,擴(kuò)展會(huì)話通過,擴(kuò)展會(huì)話否決)。
C(P4)=(無消息,編程會(huì)話通過,編程會(huì)話否決)。
C(P5)=(安全碼訪問請求正確,子服務(wù)號不支持,服務(wù)請求長度錯(cuò)誤)。
C(P6)=(安全訪問請求正確,安全碼不正確,服務(wù)請求長度錯(cuò)誤)。
C(P7)=(擦除例程通過,擦除例程不通過)。
C(P8)=(無消息,下載控制例程通過,下載控制例程不通過)。
C(P9)=(安全服務(wù)正確回復(fù),安全訪問順序不正確,服務(wù)長度請求錯(cuò)誤,服務(wù)會(huì)話狀態(tài)不正確)。
C(P10)=(無消息,例程服務(wù)正確回復(fù),服務(wù)長度請求錯(cuò)誤,服務(wù)會(huì)話狀態(tài)不正確)。
C(P11)=(請求下載服務(wù)通過,請求下載服務(wù)不通過)。
C(P12)=(下載服務(wù)通過,下載服務(wù)不通過)。
C(P13)=(退出下載服務(wù)通過,退出下載服務(wù)不通過)。
C(P14)= (無消息,F(xiàn)lash下載服務(wù)正確回復(fù),服務(wù)長度請求錯(cuò)誤,服務(wù)會(huì)話狀態(tài)不正確,安全訪問未通過狀態(tài))。
在此顏色定義中,將整個(gè)消息分為積極響應(yīng)消息和消極響應(yīng)消息。
表1 Flash編程子模塊CPN模型中變遷的含義
約定2 在Σ中,當(dāng)庫所獲得特定顏色的托肯時(shí),立刻觸發(fā)變遷發(fā)送消極響應(yīng)消息,相應(yīng)托肯消失。
由此可以將最終輸出的函數(shù)表達(dá)式定義如下:
本文賦予上述模型中的消極響應(yīng)消息不同顏色的托肯表示不同類的消極響應(yīng)消息。當(dāng)需要發(fā)送消極消息時(shí),系統(tǒng)根據(jù)不同顏色的托肯自動(dòng)發(fā)送相應(yīng)的消息。對于車身網(wǎng)絡(luò)診斷系統(tǒng)的其他子系統(tǒng),均采用統(tǒng)一的形式對相應(yīng)的庫所和變遷進(jìn)行劃分,建立CPN子網(wǎng)模型。
在車身網(wǎng)絡(luò)診斷控制系統(tǒng)的CPN模型中,變遷tsi表示診斷儀(輸入器件)發(fā)送新的診斷服務(wù)消息,而變遷tri表示相應(yīng)的ECU(輸出器件)根據(jù)輸入的消息返回的響應(yīng)服務(wù)消息。所以,可以根據(jù)診斷儀發(fā)送的服務(wù)消息產(chǎn)生的變遷發(fā)生序列,實(shí)現(xiàn)對車身網(wǎng)絡(luò)診斷系統(tǒng)的仿真,對于上述的變遷用(x,y(x))表示。
仍以Flash編程子模塊為例,假設(shè)首先診斷儀發(fā)出編程會(huì)話服務(wù)請求,在收到積極響應(yīng)后發(fā)送安全服務(wù)碼服務(wù)請求。根據(jù)返回的服務(wù)碼計(jì)算得到最后的安全碼并發(fā)送消息獲得相應(yīng)的訪問權(quán)后發(fā)送例程服務(wù),最后完成Flash下載服務(wù)。其CPN的變遷序列有可能為:
(ts1,(默認(rèn)會(huì)話、編程會(huì)話、擴(kuò)展會(huì)話))
(tp3,擴(kuò)展會(huì)話)→(tr3,擴(kuò)展會(huì)話通過)
(ts2,(安全碼訪問、安全碼計(jì)算服務(wù)))→(tp4,安全碼訪問請求)
(ts2,(安全碼訪問、安全碼計(jì)算服務(wù)))
(tp5,安全碼計(jì)算服務(wù))→(tr4,安全服務(wù)通過)
(ts3,(擦除例程服務(wù)、下載例程控制服務(wù)))
(tp6,擦除例程服務(wù))→(tr5,擦除例程服務(wù)通過)
(ts4,(請求下載服務(wù)、下載服務(wù)、退出下載服務(wù)))→(tp7,請求下載服務(wù)通過)
(ts4,(請求下載服務(wù)、下載服務(wù)、退出下載服務(wù)))→(tp8,下載服務(wù)通過)
(ts4,(請求下載服務(wù)、下載服務(wù)、退出下載服務(wù)))
(tp9,請求下載服務(wù)通過、下載服務(wù)通過、退出下載服務(wù)通過)→(tr6,F(xiàn)lash下載服務(wù)正確)
綜上所述可以看出,通過仿真診斷儀按照流程發(fā)送了相關(guān)的消息命令后,根據(jù)Petri網(wǎng)所建立的模型,ECU也發(fā)出了下載成功的響應(yīng)消息,表明此模型是有效、可行的。
本文通過對車身網(wǎng)絡(luò)診斷系統(tǒng)的分析,指出了其具有離散事件系統(tǒng)的特征,從而選擇CPN為工具,并以Flash診斷子系統(tǒng)為例,通過分層設(shè)計(jì)介紹了子系統(tǒng)的建模方法。仿真結(jié)果表明,該建模方法形式簡單規(guī)范,可以提高車身網(wǎng)絡(luò)診斷系統(tǒng)的軟件開發(fā)效率。
[1]Murata T.Petri nets properties analysis and applications[J].Proc of the IEEE,1989,77(4):541-580.
[2]劉小平,韓江洪.基于有色Petri網(wǎng)的車身控制系統(tǒng)建模方法[J].汽車工程,2009,31(8):698-701.
[3]高德平,周國祥.基于著色Petri網(wǎng)的工作流模型研究與應(yīng)用 [J].合 肥 工 業(yè) 大 學(xué) 學(xué) 報(bào):自 然 科 學(xué) 版,2010,33(2):201-203,218.
[4]Koriem S M.A fuzzy Petri net tool for modeling and verification of knowledge-based systems[J].The Computer Journal,2000,43(3):206-223.
[5]韓江洪,魏振春,張本宏.總線式車身控制系統(tǒng)的規(guī)則化建模方法[J].汽車工程,2006,28(12):1121-1124.
[6]陳玉寶,夏繼強(qiáng),鄔學(xué)禮.Petri net在故障診斷領(lǐng)域的應(yīng)用研究[J].中國機(jī)械工程,2002,11(12):1386-1388.
[7]楊其宇,張 霞.模糊Petri網(wǎng)故障診斷技術(shù)應(yīng)用[J].測控技術(shù),2006,25(4):73-74.
[8]王俊國,閩 松,趙 金,等.基于模糊Petri網(wǎng)的故障診斷方法[J].兵工自動(dòng)化,2002,21(6):18-21.
[9]袁崇義.Petri網(wǎng)原理與應(yīng)用[M].北京:電子工業(yè)出版社,2005:180-210.