亚洲一区人妻,久久三级免费,国模少妇无码一区二区三区,日韩av动漫

國(guó)內(nèi)或國(guó)外 期刊或論文

您當(dāng)前的位置:發(fā)表學(xué)術(shù)論文網(wǎng)電子論文》 電子職稱論文發(fā)表基于編譯技術(shù)的協(xié)議> 正文

電子職稱論文發(fā)表基于編譯技術(shù)的協(xié)議

所屬分類:電子論文 閱讀次 時(shí)間:2016-01-26 15:50

本文摘要:本篇文章是由《 計(jì)算機(jī)科學(xué)與探索 》發(fā)表的一篇電子論文,是由中國(guó)電子科技集團(tuán)公司主管、華北計(jì)算技術(shù)研究所主辦的國(guó)內(nèi)外公開(kāi)發(fā)行的計(jì)算機(jī)學(xué)報(bào)級(jí)高級(jí)學(xué)術(shù)期刊,中國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)刊。報(bào)道計(jì)算機(jī)(硬件、軟件)各學(xué)科具有創(chuàng)新性、前沿性、導(dǎo)向性、開(kāi)拓性及探索

  本篇文章是由《計(jì)算機(jī)科學(xué)與探索》發(fā)表的一篇電子論文,是由中國(guó)電子科技集團(tuán)公司主管、華北計(jì)算技術(shù)研究所主辦的國(guó)內(nèi)外公開(kāi)發(fā)行的計(jì)算機(jī)學(xué)報(bào)級(jí)高級(jí)學(xué)術(shù)期刊,中國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)刊。報(bào)道計(jì)算機(jī)(硬件、軟件)各學(xué)科具有創(chuàng)新性、前沿性、導(dǎo)向性、開(kāi)拓性及探索性的科研成果。內(nèi)容包括高性能計(jì)算機(jī),體系結(jié)構(gòu)、并行處理,計(jì)算機(jī)科學(xué)新理論、算法設(shè)計(jì)與分析、人工智能與模式識(shí)別、系統(tǒng)軟件,軟件工程、數(shù)據(jù)庫(kù)、計(jì)算機(jī)網(wǎng)絡(luò)、信息安全、計(jì)算機(jī)圖形學(xué)與計(jì)算機(jī)輔助設(shè)計(jì)、虛擬現(xiàn)實(shí)、多媒體技術(shù)及交叉學(xué)科的相互滲透和新理論的衍生等。

  摘 要:在過(guò)程工業(yè)的控制中存在著大量的通信協(xié)議,這些協(xié)議的結(jié)構(gòu)差別很大。要進(jìn)行上層應(yīng)用開(kāi)發(fā),必須對(duì)這些協(xié)議進(jìn)行解析和處理。該文討論了用形式化描述的方法對(duì)協(xié)議進(jìn)行描述,實(shí)現(xiàn)了與協(xié)議無(wú)關(guān)的協(xié)議解析和處理,從而避免了針對(duì)不同通信協(xié)議均要編寫相應(yīng)的解析和處理程序,使協(xié)議的解析和處理具有更好的靈活性和普適性。

  關(guān)鍵詞:協(xié)議分析;數(shù)據(jù)幀;編譯技術(shù)

  在過(guò)程工業(yè)中,工業(yè)自動(dòng)化技術(shù)日趨成熟,自動(dòng)化控制系統(tǒng)的應(yīng)用已經(jīng)非常普及,但是各類控制系統(tǒng)絕大多數(shù)是封閉的系統(tǒng),控制裝置自身存在封閉性。不同的廠家為各自的產(chǎn)品提供不同的協(xié)議和通信方式,缺乏統(tǒng)一的、標(biāo)準(zhǔn)的開(kāi)放式接口。如果要集成在一起,必須為它們開(kāi)發(fā)專用的通信接口。隨著工業(yè)自動(dòng)化系統(tǒng)功能要求越來(lái)越復(fù)雜,完全用一個(gè)廠家的產(chǎn)品來(lái)構(gòu)成整個(gè)系統(tǒng)是很困難的。用戶在進(jìn)行上層應(yīng)用程序開(kāi)發(fā)的時(shí)候,通常需要對(duì)協(xié)議進(jìn)行解析,從中提取出所需數(shù)據(jù)項(xiàng),并進(jìn)行相應(yīng)的存儲(chǔ)、加工計(jì)算和顯示等處理,這就要求用戶不得不針對(duì)特定的控制系統(tǒng)開(kāi)發(fā)特定的、專用的通信接口論文。

  這些通信接口程序之間的結(jié)構(gòu)非常類似,主要的區(qū)別在于對(duì)網(wǎng)絡(luò)接口收到數(shù)據(jù)幀的理解和解釋不同,極易造成整個(gè)應(yīng)用系統(tǒng)的復(fù)雜和冗余。更為不利的是,一旦底層設(shè)備發(fā)生變化,就可能造成整個(gè)應(yīng)用程序的重新編寫和編譯,大大增加了系統(tǒng)的維護(hù)量和開(kāi)發(fā)人員的負(fù)擔(dān)[1]。

  1 控制設(shè)備協(xié)議分析

  對(duì)于不同控制系統(tǒng)中的控制協(xié)議,其數(shù)據(jù)幀格式往往不同。但是在特定的控制系統(tǒng)中所涉及到的數(shù)據(jù)幀通常都有明確的格式定義,并且數(shù)據(jù)幀與數(shù)據(jù)幀之間往往是相對(duì)獨(dú)立的。更為重要的是控制系統(tǒng)中的設(shè)備要完成通信功能必須在物理鏈路上建立邏輯連接。這里的物理鏈路包括以太網(wǎng)、串行口等,相應(yīng)的邏輯連接是TCP/IP 協(xié)議、串行通信協(xié)議,在此基礎(chǔ)上各種設(shè)備再定義自己的應(yīng)用層協(xié)議。雖然應(yīng)用層協(xié)議的類別會(huì)因設(shè)備和廠家的不同而有很大的變化,但是仔細(xì)分析就會(huì)發(fā)現(xiàn),這些協(xié)議都各自具有確定的幀格式,如哪些字節(jié)表示命令、哪些字節(jié)表示參數(shù)名、哪些字節(jié)表示設(shè)備位號(hào)、哪些字節(jié)表示數(shù)值等。

  既然所有的通信協(xié)議都遵守一定的幀格式,那么就可以根據(jù)已知的幀格式構(gòu)造此協(xié)議的解析程序,針對(duì)每一種通信協(xié)議手工編寫這樣的解析程序是沒(méi)有問(wèn)題的,本文討論的是能不能將通信協(xié)議數(shù)據(jù)幀格式的描述與協(xié)議的解析代碼相分離,用穩(wěn)定的程序來(lái)處理不穩(wěn)定的數(shù)據(jù)幀格式。如果答案肯定,那么就能對(duì)不同設(shè)備采用同一個(gè)接口采集數(shù)據(jù),如果底層設(shè)備的通信協(xié)議發(fā)生變化,只需要改變協(xié)議相應(yīng)的描述,而不必重新編寫和編譯協(xié)議的解析程序,可以降低系統(tǒng)的復(fù)雜度,便于管理和擴(kuò)充。

  2 協(xié)議解析的解決方案

  如前所述,編譯原理中的基本詞法分析和語(yǔ)法分析的思想為解決所面臨的問(wèn)題提供了理論基礎(chǔ),特別是詞法分析器自動(dòng)生成器和語(yǔ)法分析器自動(dòng)生成器提供了很好的借鑒方法[2]。詞法分析器自動(dòng)生成器的基本實(shí)現(xiàn)思想是:(1)對(duì)輸入流進(jìn)行形式化描述生成一個(gè)狀態(tài)轉(zhuǎn)換圖,根據(jù)此狀態(tài)圖可以識(shí)別此種輸入流的所有形式;(2)由一個(gè)主控程序根據(jù)狀態(tài)轉(zhuǎn)換圖對(duì)輸入流進(jìn)行掃描分析以識(shí)別符合描述的短語(yǔ)。把這種思想運(yùn)用到本文所面臨的問(wèn)題上,問(wèn)題的解決方案就可描述為:(1)把設(shè)備的通信協(xié)議形式化描述(描述的方式即采用正規(guī)式集的方式);(2)由一個(gè)狀態(tài)圖生成程序產(chǎn)生對(duì)應(yīng)這些正規(guī)式的狀態(tài)圖(在下文中把狀態(tài)圖稱為驅(qū)動(dòng)表、相應(yīng)的狀態(tài)圖生成程序稱為驅(qū)動(dòng)表自動(dòng)構(gòu)造器);(3)由一個(gè)唯一的主控程序根據(jù)此驅(qū)動(dòng)表對(duì)接收到的數(shù)據(jù)幀進(jìn)行分析識(shí)別,輸出用戶希望的數(shù)據(jù)格式。

  2.1 總體設(shè)計(jì)方案

  本文提出一種根據(jù)用戶配置文件自動(dòng)進(jìn)行協(xié)議數(shù)據(jù)識(shí)別的解決方案,該方案主要由以下部分構(gòu)成,即用戶配置文件、詞法分析器自動(dòng)生成器、語(yǔ)法分析器自動(dòng)生成器、數(shù)據(jù)幀識(shí)別器,方案結(jié)構(gòu)如圖1 所示。用戶配置文件協(xié)議形式化描述語(yǔ)法規(guī)則配置詞法分析器自動(dòng)生成器語(yǔ)法分析器自動(dòng)生成器數(shù)據(jù)幀識(shí)別器數(shù)據(jù)幀 數(shù)據(jù)幀分析結(jié)果圖1 總體方案結(jié)構(gòu)程序運(yùn)行時(shí),首先根據(jù)用戶配置文件自動(dòng)生成詞法分析器和語(yǔ)法分析器,數(shù)據(jù)幀識(shí)別器把接收到的數(shù)據(jù)幀進(jìn)行詞法分析,然后進(jìn)行語(yǔ)法分析,最后得到分析結(jié)果。這樣做的好處是,一旦底層應(yīng)用設(shè)備協(xié)議發(fā)生變化,就可以適當(dāng)更改用戶配置文件,而不必把整個(gè)程序重新編譯。

  2.2 用戶配置文件設(shè)計(jì)

  用戶配置文件是本文方案的基礎(chǔ)所在,一個(gè)良好的配置文件設(shè)計(jì),能夠大大簡(jiǎn)便以后詞法分析器和語(yǔ)法分析器的生成。由圖1 可以看出,在設(shè)計(jì)時(shí)采用了2 個(gè)文件單獨(dú)配置的方法:(1)底層設(shè)備協(xié)議的形式化描述,該配置文件主要用來(lái)自動(dòng)生成詞法分析器;(2)用戶定義的語(yǔ)法規(guī)則,用來(lái)自動(dòng)生成語(yǔ)法分析器。

  協(xié)議的形式化描述實(shí)際上就是通過(guò)分析設(shè)備的協(xié)議定義,用正規(guī)式集的方式表現(xiàn)出來(lái),以便進(jìn)行詞法分析。一條命令幀或響應(yīng)幀的基本格式為:命令頭_命令_參數(shù)_數(shù)據(jù)命令頭:Gnn, AnnG:代表命令A(yù):代表響應(yīng)nn:命令或響應(yīng)的序號(hào)命令:由兩個(gè)字母表示的命令或響應(yīng)的內(nèi)容參數(shù):參數(shù)表示了數(shù)據(jù)的來(lái)源、個(gè)數(shù)、大小、類型等數(shù)據(jù):數(shù)據(jù)值,有的命令和響應(yīng)沒(méi)有數(shù)據(jù)部分_:代表一個(gè)或多個(gè)空格此類消息的形式化描述,即正規(guī)式集如下所示:digit [0-9]commandtype (a|g|p){digit}{digit}interrupt (p){digit}{digit}id [a-z][a-z0-9_ ]*integer {digit}{digit}*exp [Ee][+-]?{digit}+float ({digit}*"."{digit}+({exp})?)|({digit}+"."{digit}*({exp})?)token [a-z0-9_]+command (si)|(mn)|(sp)|(fg)|(fp)|(fs)| (ms)|(bf)| (bg)|(bd)|(bk)|(pm)|(sc)|(ac)datatype (int)|(flt)|(chr)|(der)bool (on)|(off)

  value {integer}|{float}|{token}string語(yǔ)法規(guī)則定義是用戶配置文件的主要部分,它既可以讓用戶定義一定的語(yǔ)法規(guī)則,還能夠讓用戶決定在符合規(guī)則的情況下什么樣的數(shù)據(jù)幀接受,什么樣的數(shù)據(jù)幀拋棄,以及接受的數(shù)據(jù)幀哪一部分需要存儲(chǔ)等一系列動(dòng)作。該配置文件首先應(yīng)該給出詞法分析所能識(shí)別的協(xié)議關(guān)鍵字,這樣用戶就可以根據(jù)這些關(guān)鍵字和協(xié)議手冊(cè)實(shí)現(xiàn)白己的配置。這些關(guān)鍵字的形式化描述上面己經(jīng)給出。另外還應(yīng)該包括己經(jīng)提前定義的動(dòng)作。本文在設(shè)計(jì)中采用了提前定義動(dòng)作函數(shù)的方法。再就是規(guī)定用戶配置條目的格式,具體設(shè)計(jì)包括兩部分:

  (1)語(yǔ)法規(guī)則條

  語(yǔ)法規(guī)則條主要是用戶根據(jù)具體需要寫出程序應(yīng)該能夠識(shí)別的語(yǔ)法規(guī)則,該語(yǔ)法規(guī)則并不要求用戶寫出所有同該協(xié)議有關(guān)的條目,僅需要寫出用戶需要的規(guī)則即可。例如某用戶僅需要識(shí)別返回?cái)?shù)據(jù)的響應(yīng)幀,就可以寫成:commandtype_command_integer_parameter_data不必將并非返回?cái)?shù)據(jù)的命令幀commandtype_ command__ _寫出。

  (2)相應(yīng)動(dòng)作項(xiàng)

  相應(yīng)動(dòng)作項(xiàng)是發(fā)現(xiàn)符合用戶定義的語(yǔ)法規(guī)則的數(shù)據(jù)幀后應(yīng)該執(zhí)行什么樣的動(dòng)作,常用的是存儲(chǔ),一般是數(shù)據(jù)項(xiàng)的存儲(chǔ),也可能是用戶感興趣的命令類型的存儲(chǔ)等。例如,如果定義一個(gè)動(dòng)作save(string key)可以把key 對(duì)應(yīng)的實(shí)際數(shù)據(jù)值存到一個(gè)全局變量中,那么用戶就可以在該分析器以外通過(guò)配置和調(diào)用從而獲得感興趣的數(shù)據(jù)。相應(yīng)配置條目可以寫成:commandtype_command_integer_parameter_data {save(data);}表示發(fā)現(xiàn)符合上述語(yǔ)法規(guī)則的數(shù)據(jù)幀就接受,并且存儲(chǔ)data 數(shù)據(jù)項(xiàng)到全局變量。

  2.3 詞法分析器自動(dòng)生成器

  詞法分析器的主要目的是讀取用戶的形式化描述,然后自動(dòng)生成協(xié)議驅(qū)動(dòng)表,即本文所說(shuō)的詞法分析器。詞法分析器自動(dòng)生成器的主要部分就是3 個(gè)主要算法,這3 個(gè)主要算法實(shí)現(xiàn)了從正規(guī)表達(dá)式到最小化確定有限自動(dòng)機(jī)的一步步轉(zhuǎn)換。最后生成的最小化確定有限自動(dòng)機(jī),既可以包括所有形式化描述的最小化確定有限自動(dòng)機(jī),也可以是針對(duì)每一個(gè)形式化描述的最小化確定有限自動(dòng)機(jī)。本文采取的是后者。相應(yīng)的數(shù)據(jù)結(jié)構(gòu)如下:Sword[]單詞數(shù)組,包含有3 個(gè)域:Name 域代表可識(shí)別的單詞名稱;States[]代表該單詞狀態(tài)數(shù)組;Trans[]是狀態(tài)轉(zhuǎn)移矩陣,Nstate=Trans[inChr] [curState]。

  (1)從正規(guī)表達(dá)式到NFA

  設(shè)計(jì)中用狀態(tài)轉(zhuǎn)換圖來(lái)分別表示相應(yīng)的NFA 或DFA,而在內(nèi)存中的表示,則使用狀態(tài)矩陣表示,即上面提到的Trans[]。在手工方式下,可以手工對(duì)每一類單詞建立一張狀態(tài)轉(zhuǎn)換圖,然后把所有的狀態(tài)轉(zhuǎn)換圖合并成一張統(tǒng)一的狀態(tài)圖。在程序自動(dòng)生成中,所有狀態(tài)以及狀態(tài)轉(zhuǎn)換都需要保存,以便后繼處理的使用。

  (2)從NFA 到DFA

  從不確定的有限自動(dòng)機(jī)N 轉(zhuǎn)換為一個(gè)等價(jià)的確定有限自動(dòng)機(jī)M,可以用子集構(gòu)造法完成[3]。M 的每個(gè)狀態(tài),對(duì)應(yīng)于N 的一個(gè)狀態(tài)的集合。其基本思想是:M 讀入一個(gè)給定的輸入串之后處于狀態(tài){x, y, z},當(dāng)且僅當(dāng)N 可能處在x, y, z 中任何一個(gè)狀態(tài),視N 選定哪個(gè)狀態(tài)而定。讓M 記住N 可能走的全部可能路線,并讓M 同N 平行地工作。M 的接收狀態(tài)將是任何含有N 的接收狀態(tài)的任何集合。

  (3)DFA 的最小確定化

  經(jīng)過(guò)上述建立的DFA 并不是最優(yōu)的,其狀態(tài)數(shù)比必要的狀態(tài)數(shù)可能要多,因此需要對(duì)這個(gè)DFA 進(jìn)行最小化,其基本思想是:在一個(gè)狀態(tài)集合中,還有不等價(jià)狀態(tài),就把不等價(jià)的狀態(tài)分開(kāi),使一個(gè)集合中的狀態(tài)等價(jià)。分開(kāi)后,如果一個(gè)集合中的狀態(tài)還有不等價(jià)的,就繼續(xù)分開(kāi),直到每個(gè)分開(kāi)的小集合中的狀態(tài)都等價(jià)為止。

  2.4 語(yǔ)法分析器自動(dòng)生成器

  有了以上的詞法分析器自動(dòng)生成器,就可以生成能夠識(shí)別協(xié)議形式化描述中的所定義的單詞。而這些單詞,正是本文在用戶語(yǔ)法規(guī)則條中所使用的。利用用戶所定義的語(yǔ)法規(guī)則,生成相應(yīng)的語(yǔ)法樹(shù)。

  由于該語(yǔ)法分析器是通過(guò)讀取用戶配置文件生成,因此首先要有一個(gè)小的詞法分析器,能夠識(shí)別文件中的單詞,該詞法分析器是按照文件中配置條的特殊字符進(jìn)行分割,然后對(duì)比形式化描述文件中的定義,識(shí)別特定的和己經(jīng)定義的單詞符號(hào)。語(yǔ)法分析樹(shù)自動(dòng)生成器如圖2 所示。

  圖2 語(yǔ)法分析樹(shù)自動(dòng)生成器

  (1)腳本文件識(shí)別器

  腳本文件識(shí)別器主要是識(shí)別配置文件中所定義的節(jié)點(diǎn)關(guān)鍵詞,如command, integer 等,即在語(yǔ)法配置文件中所出現(xiàn)的Sword[]中的name 域。該識(shí)別器也是一個(gè)詞法分析器,只不過(guò),它所要進(jìn)行的動(dòng)作是按照特定的分割字符,識(shí)別關(guān)鍵詞。例如配置條目commandtype_command_integer_parameter_data {save(data);}中所出現(xiàn)的commandtype, command, integer, parameter,data 等。

  首先是把形式化描述中的名稱定義為關(guān)鍵字,然后通過(guò)詞法分析的方法,識(shí)別語(yǔ)法配置腳本中的關(guān)鍵詞,并且記下識(shí)別的順序。

  (2)語(yǔ)法樹(shù)生成

  考慮到本文所要進(jìn)行的語(yǔ)法分析,是一種比較簡(jiǎn)單的對(duì)比分析,只要符合配置條目中所出現(xiàn)的語(yǔ)法配置條,就可以執(zhí)行其后的動(dòng)作。因?yàn)樵谠O(shè)計(jì)中把配置條目的動(dòng)作也作為一個(gè)單獨(dú)的節(jié)點(diǎn)掛在語(yǔ)法樹(shù)葉子節(jié)點(diǎn)的。這樣一旦語(yǔ)法分析走到葉子節(jié)點(diǎn),就可以認(rèn)為是語(yǔ)法匹配,再進(jìn)一步走到動(dòng)作節(jié)點(diǎn),去執(zhí)行相應(yīng)的語(yǔ)法動(dòng)作。

  2.5 數(shù)據(jù)幀識(shí)別器

  當(dāng)詞法分析器和語(yǔ)法分析器都建立起來(lái)以后,就可以對(duì)數(shù)據(jù)幀進(jìn)行分析識(shí)別。數(shù)據(jù)幀識(shí)別器接收數(shù)據(jù)幀,然后調(diào)用詞法分析器識(shí)別單詞,然后根據(jù)識(shí)別出的單詞的順序去查語(yǔ)法樹(shù),最后執(zhí)行能夠識(shí)別的語(yǔ)法的對(duì)應(yīng)動(dòng)作。

  當(dāng)系統(tǒng)取得所要識(shí)別的數(shù)據(jù)幀后,首先把它轉(zhuǎn)換成字符串,然后存到字符緩沖區(qū);詞法分析器從緩沖區(qū)的頭部開(kāi)始進(jìn)行狀態(tài)匹配,如果出現(xiàn)不匹配的情況要進(jìn)行字符回退,詞法分析的結(jié)果是把所有的單詞識(shí)別出來(lái)并按順序存儲(chǔ)。隨后這些按順序存儲(chǔ)的單詞查找語(yǔ)法樹(shù),并執(zhí)行能夠匹配的語(yǔ)法樹(shù)的動(dòng)作。其結(jié)構(gòu)如圖3 所示。

  圖3 數(shù)據(jù)幀識(shí)別器結(jié)構(gòu)

  3 結(jié)束語(yǔ)

  該系統(tǒng)如果底層協(xié)議發(fā)生變化,只需要在形式化描述文件中加入新的協(xié)議形式化描述,在用戶語(yǔ)法配置文件中加入新的語(yǔ)法配置條。程序啟動(dòng)時(shí),會(huì)自動(dòng)生成相應(yīng)的詞法分析器和語(yǔ)法分析器,此時(shí)的詞法分析器和語(yǔ)法分析器己經(jīng)是不同于先前而是適合于現(xiàn)在底層協(xié)議的分析器,協(xié)議識(shí)別主程序就會(huì)調(diào)用該新生成的詞法分析器和語(yǔ)法分析器分別進(jìn)行詞法分析和語(yǔ)法分析,從而進(jìn)行相應(yīng)的數(shù)據(jù)提取。此過(guò)程完全避免了應(yīng)用程序的重新編譯,而且,一般用戶經(jīng)過(guò)簡(jiǎn)單培訓(xùn),也可以方便地對(duì)配置文件進(jìn)行手工配置,解放了開(kāi)發(fā)人員對(duì)整個(gè)應(yīng)用程序的維護(hù)[4]。

轉(zhuǎn)載請(qǐng)注明來(lái)自發(fā)表學(xué)術(shù)論文網(wǎng):http:///dzlw/6030.html