<address id="vfzrl"><nobr id="vfzrl"><progress id="vfzrl"></progress></nobr></address>
    <address id="vfzrl"></address>

    <address id="vfzrl"></address>

    <em id="vfzrl"><form id="vfzrl"><nobr id="vfzrl"></nobr></form></em><address id="vfzrl"></address>
    <address id="vfzrl"></address>

    <noframes id="vfzrl"><form id="vfzrl"><th id="vfzrl"></th></form><form id="vfzrl"><th id="vfzrl"><th id="vfzrl"></th></th></form>

    國內或國外 期刊或論文

    您當前的位置:發表學術論文網電子論文》 電子職稱論文發表基于編譯技術的協議> 正文

    電子職稱論文發表基于編譯技術的協議

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

    本文摘要:本篇文章是由《 計算機科學與探索 》發表的一篇電子論文,是由中國電子科技集團公司主管、華北計算技術研究所主辦的國內外公開發行的計算機學報級高級學術期刊,中國計算機學會會刊。報道計算機(硬件、軟件)各學科具有創新性、前沿性、導向性、開拓性及探索

      本篇文章是由《計算機科學與探索》發表的一篇電子論文,是由中國電子科技集團公司主管、華北計算技術研究所主辦的國內外公開發行的計算機學報級高級學術期刊,中國計算機學會會刊。報道計算機(硬件、軟件)各學科具有創新性、前沿性、導向性、開拓性及探索性的科研成果。內容包括高性能計算機,體系結構、并行處理,計算機科學新理論、算法設計與分析、人工智能與模式識別、系統軟件,軟件工程、數據庫、計算機網絡、信息安全、計算機圖形學與計算機輔助設計、虛擬現實、多媒體技術及交叉學科的相互滲透和新理論的衍生等。

      摘 要:在過程工業的控制中存在著大量的通信協議,這些協議的結構差別很大。要進行上層應用開發,必須對這些協議進行解析和處理。該文討論了用形式化描述的方法對協議進行描述,實現了與協議無關的協議解析和處理,從而避免了針對不同通信協議均要編寫相應的解析和處理程序,使協議的解析和處理具有更好的靈活性和普適性。

      關鍵詞:協議分析;數據幀;編譯技術

      在過程工業中,工業自動化技術日趨成熟,自動化控制系統的應用已經非常普及,但是各類控制系統絕大多數是封閉的系統,控制裝置自身存在封閉性。不同的廠家為各自的產品提供不同的協議和通信方式,缺乏統一的、標準的開放式接口。如果要集成在一起,必須為它們開發專用的通信接口。隨著工業自動化系統功能要求越來越復雜,完全用一個廠家的產品來構成整個系統是很困難的。用戶在進行上層應用程序開發的時候,通常需要對協議進行解析,從中提取出所需數據項,并進行相應的存儲、加工計算和顯示等處理,這就要求用戶不得不針對特定的控制系統開發特定的、專用的通信接口論文。

      這些通信接口程序之間的結構非常類似,主要的區別在于對網絡接口收到數據幀的理解和解釋不同,極易造成整個應用系統的復雜和冗余。更為不利的是,一旦底層設備發生變化,就可能造成整個應用程序的重新編寫和編譯,大大增加了系統的維護量和開發人員的負擔[1]。

      1 控制設備協議分析

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

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

      2 協議解析的解決方案

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

      2.1 總體設計方案

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

      2.2 用戶配置文件設計

      用戶配置文件是本文方案的基礎所在,一個良好的配置文件設計,能夠大大簡便以后詞法分析器和語法分析器的生成。由圖1 可以看出,在設計時采用了2 個文件單獨配置的方法:(1)底層設備協議的形式化描述,該配置文件主要用來自動生成詞法分析器;(2)用戶定義的語法規則,用來自動生成語法分析器。

      協議的形式化描述實際上就是通過分析設備的協議定義,用正規式集的方式表現出來,以便進行詞法分析。一條命令幀或響應幀的基本格式為:命令頭_命令_參數_數據命令頭:Gnn, AnnG:代表命令A:代表響應nn:命令或響應的序號命令:由兩個字母表示的命令或響應的內容參數:參數表示了數據的來源、個數、大小、類型等數據:數據值,有的命令和響應沒有數據部分_:代表一個或多個空格此類消息的形式化描述,即正規式集如下所示: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語法規則定義是用戶配置文件的主要部分,它既可以讓用戶定義一定的語法規則,還能夠讓用戶決定在符合規則的情況下什么樣的數據幀接受,什么樣的數據幀拋棄,以及接受的數據幀哪一部分需要存儲等一系列動作。該配置文件首先應該給出詞法分析所能識別的協議關鍵字,這樣用戶就可以根據這些關鍵字和協議手冊實現白己的配置。這些關鍵字的形式化描述上面己經給出。另外還應該包括己經提前定義的動作。本文在設計中采用了提前定義動作函數的方法。再就是規定用戶配置條目的格式,具體設計包括兩部分:

      (1)語法規則條

      語法規則條主要是用戶根據具體需要寫出程序應該能夠識別的語法規則,該語法規則并不要求用戶寫出所有同該協議有關的條目,僅需要寫出用戶需要的規則即可。例如某用戶僅需要識別返回數據的響應幀,就可以寫成:commandtype_command_integer_parameter_data不必將并非返回數據的命令幀commandtype_ command__ _寫出。

      (2)相應動作項

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

      2.3 詞法分析器自動生成器

      詞法分析器的主要目的是讀取用戶的形式化描述,然后自動生成協議驅動表,即本文所說的詞法分析器。詞法分析器自動生成器的主要部分就是3 個主要算法,這3 個主要算法實現了從正規表達式到最小化確定有限自動機的一步步轉換。最后生成的最小化確定有限自動機,既可以包括所有形式化描述的最小化確定有限自動機,也可以是針對每一個形式化描述的最小化確定有限自動機。本文采取的是后者。相應的數據結構如下:Sword[]單詞數組,包含有3 個域:Name 域代表可識別的單詞名稱;States[]代表該單詞狀態數組;Trans[]是狀態轉移矩陣,Nstate=Trans[inChr] [curState]。

      (1)從正規表達式到NFA

      設計中用狀態轉換圖來分別表示相應的NFA 或DFA,而在內存中的表示,則使用狀態矩陣表示,即上面提到的Trans[]。在手工方式下,可以手工對每一類單詞建立一張狀態轉換圖,然后把所有的狀態轉換圖合并成一張統一的狀態圖。在程序自動生成中,所有狀態以及狀態轉換都需要保存,以便后繼處理的使用。

      (2)從NFA 到DFA

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

      (3)DFA 的最小確定化

      經過上述建立的DFA 并不是最優的,其狀態數比必要的狀態數可能要多,因此需要對這個DFA 進行最小化,其基本思想是:在一個狀態集合中,還有不等價狀態,就把不等價的狀態分開,使一個集合中的狀態等價。分開后,如果一個集合中的狀態還有不等價的,就繼續分開,直到每個分開的小集合中的狀態都等價為止。

      2.4 語法分析器自動生成器

      有了以上的詞法分析器自動生成器,就可以生成能夠識別協議形式化描述中的所定義的單詞。而這些單詞,正是本文在用戶語法規則條中所使用的。利用用戶所定義的語法規則,生成相應的語法樹。

      由于該語法分析器是通過讀取用戶配置文件生成,因此首先要有一個小的詞法分析器,能夠識別文件中的單詞,該詞法分析器是按照文件中配置條的特殊字符進行分割,然后對比形式化描述文件中的定義,識別特定的和己經定義的單詞符號。語法分析樹自動生成器如圖2 所示。

      圖2 語法分析樹自動生成器

      (1)腳本文件識別器

      腳本文件識別器主要是識別配置文件中所定義的節點關鍵詞,如command, integer 等,即在語法配置文件中所出現的Sword[]中的name 域。該識別器也是一個詞法分析器,只不過,它所要進行的動作是按照特定的分割字符,識別關鍵詞。例如配置條目commandtype_command_integer_parameter_data {save(data);}中所出現的commandtype, command, integer, parameter,data 等。

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

      (2)語法樹生成

      考慮到本文所要進行的語法分析,是一種比較簡單的對比分析,只要符合配置條目中所出現的語法配置條,就可以執行其后的動作。因為在設計中把配置條目的動作也作為一個單獨的節點掛在語法樹葉子節點的。這樣一旦語法分析走到葉子節點,就可以認為是語法匹配,再進一步走到動作節點,去執行相應的語法動作。

      2.5 數據幀識別器

      當詞法分析器和語法分析器都建立起來以后,就可以對數據幀進行分析識別。數據幀識別器接收數據幀,然后調用詞法分析器識別單詞,然后根據識別出的單詞的順序去查語法樹,最后執行能夠識別的語法的對應動作。

      當系統取得所要識別的數據幀后,首先把它轉換成字符串,然后存到字符緩沖區;詞法分析器從緩沖區的頭部開始進行狀態匹配,如果出現不匹配的情況要進行字符回退,詞法分析的結果是把所有的單詞識別出來并按順序存儲。隨后這些按順序存儲的單詞查找語法樹,并執行能夠匹配的語法樹的動作。其結構如圖3 所示。

      圖3 數據幀識別器結構

      3 結束語

      該系統如果底層協議發生變化,只需要在形式化描述文件中加入新的協議形式化描述,在用戶語法配置文件中加入新的語法配置條。程序啟動時,會自動生成相應的詞法分析器和語法分析器,此時的詞法分析器和語法分析器己經是不同于先前而是適合于現在底層協議的分析器,協議識別主程序就會調用該新生成的詞法分析器和語法分析器分別進行詞法分析和語法分析,從而進行相應的數據提取。此過程完全避免了應用程序的重新編譯,而且,一般用戶經過簡單培訓,也可以方便地對配置文件進行手工配置,解放了開發人員對整個應用程序的維護[4]。

    轉載請注明來自發表學術論文網:http://www.cnzjbx.cn/dzlw/6030.html

    五级黄18以上免费看