一種iec61850高層協議報文發送的管理方法
2023-09-20 14:28:35
專利名稱:一種iec61850高層協議報文發送的管理方法
技術領域:
本發明涉及一種IEC61850高層協議報文發送的管理方法,屬 電力系統自動化領域。(二)、背景技術 IEC 61850是智能變電站的系統通信標準。通過將抽象通信 服務映射到具體的協議棧,IEC 61850解決了標準的穩定性與未來網絡技術發展之間的矛 盾。目前IEC 61850的很多服務映射到MMS(製造報文規範),國內外絕大部分廠家都是基 於SISC0公司的MMSEASE-LITE軟體來實現IEC61850,在嵌入式裝置中選用主流的VxWorks 作業系統,其實現方式為TCP/IP+RFC1006+傳輸層(服務等級0) +會話層+表示層+應用 層。智能變電站強烈依賴於高速、可靠的網絡通信,因此網絡報文發送管理方式對系統的運 行效率和可靠性起著非常重要的作用。現有技術主要有兩類方法(1)、為每一個網絡連接建立一個網絡守護任務,網絡守護任務使用阻塞方式調用 recvO,在套接字上懸掛等待接收數據;在主任務中使用阻塞方式調用sendO來發送網絡 數據。這種方法比較簡單,但是效率低。一個網絡守護任務只能為一個連接接收數據。在 主任務中發送數據時,如果應用層報文較長、較多,主任務會阻塞在sendO中,影響了主任 務後續事件的實時處理。(2)、系統在初始時創建一個網絡守護任務,基於select 調用負責處理所有網 絡連接的數據接收,在主任務中使用非阻塞方式調用sendO來發送網絡數據。每發送一個 應用數據報文,將其分割成幾個帶RFC1006報文頭的傳輸層報文,放入套接字的發送報文 鍊表中,然後從鍊表頭開始依次發送報文。未能完全發送出去的報文繼續保存在該套接字 的發送報文鍊表中,設置標誌,由網絡守護任務擇機進行繼續發送。但網絡守護任務利用 select 調用的超時或者其它網絡事件,在下次重新選擇需要監視的文件描述字時才能判 斷此時該套接字是否能重新發送數據。如果在超時等待期間網絡連接能夠重新發送數據, 則存在一個滯後發送的時間窗,影響了報文的實時發送。智能變電站是一個實時系統,裝置生成的大量報文在網絡上傳輸,應儘可能提高 傳輸效率。現有技術在用戶發送數據、將會話層報文分割成傳輸層報文、以及報文進入發送 鍊表時均存在報文複製,大大影響了傳輸效率。(三)、發明內容本發明所要解決的技術問題是,在VxWorks系統下,提供一種 IEC 61850高層協議報文發送的管理方法,當網絡資源擁擠報文不能完全發送出去時,採取 一種報文的緩存機制,監視文件描述字,在可以發送報文時及時發送待發送的報文;採取一 種高效的報文緩衝區管理方式,提高傳輸效率。為了解決上述問題,本發明採用了以下技術方案。一種IEC 61850高層協議報文發送的管理方法,其特徵是主任務初始時分配一 個空閒發送報文緩衝區鍊表,每個發送報文緩衝區的大小比系統配置的會話層協議數據單 元長度多7個字節;每建立一個套接字,就創建一個相應的管道,管道消息結構包括的數據 成員有報文緩衝區起始指針、報文緩衝區長度、報文起始指針、報文實際長度、傳輸層報文 類型;發送報文時,從空閒發送報文緩衝區鍊表中分配一個發送報文緩衝區,對於數據報文,利用這個緩衝區從後向前進行報文編碼,添加表示層協議控制信息和會話層協議控 制信息;對於連接管理報文,直接在這個緩衝區中生成一個傳輸層協議數據單元,然後加上 RFC1006報文頭;主任務將生成報文的控制信息,包括報文緩衝區起始指針、報文緩衝區長 度、報文起始指針、報文實際長度、傳輸層報文類型,通過管道機制傳遞給網絡守護任務進 行發送;網絡守護任務基於selecto調用,監視一個讀文件描述字數組、一個寫文件 描述字數組和一個錯誤文件描述字數組;網絡守護任務為每一個套接字設置一個標誌 socketFlag,用來表示是等待網絡套接字可寫,還是等待套接字對應的管道有要發送的報 文;網絡守護任務初始時,將套接字對應的管道文件描述字設置在讀文件描述字數組中; 當網絡守護任務等待的文件描述字就緒時,網絡守護任務獲得執行時機,檢查存放系統返 回值的文件描述字數組,對於每個套接字上的報文發送(1)如果管道上有消息,則表明對應的套接字上有報文要發送,讀取管道消息,獲 取管道消息所指報文作為當前要發送的網絡報文進行發送;(2)如果網絡套接字可寫,先發送上次沒有發送出去的報文;如果上次沒有發送 出去的報文本次完全發送出去,並且管道中存在消息,再讀取管道中的消息,獲取管道消息 所指報文作為當前要發送的網絡報文進行發送;發送報文時,對於數據類型的報文,將其按照傳輸層用戶數據長度,添加3個字節 的協議控制信息和4個字節的RFC1006報文頭,利用socket接口進行分段發送;對於連接 管理報文,直接利用socket接口進行發送;如果當前需要發送的報文沒有完全發送出去,標記套接字的socketFlag為需要 等待網絡套接字可寫;如果當前需要發送的報文已經完全發送出去,並且管道中沒有消息 了,標記套接字的socketFlag為需要等待套接字對應的管道有要發送的報文;根據每個套接字的socketFlag所作標記,如果需要等待套接字對應的管道有要 發送的報文,則將管道文件描述字設置在讀文件描述字數組中;如果需要等待網絡套接字 可寫,則將套接字設置在寫文件描述字數組中;按照新設置的文件描述字數組,網絡守護任 務進行下一輪文件描述字監視與處理流程。對於數據類型的報文,將其按照傳輸層用戶數據長度TpktUserLen從低地址 開始分成若干段,只有當第n(n >= 1)段報文發送完後,才進行第n+1段的發送;指針 SessionPtr為會話層報文起始地址,第一段的RFC1006報文頭起始指針為SessionPtr-7, 第一段的傳輸層協議控制信息起始指針為SessionPtr-3,第一段的RFC1006報文 頭和傳輸層協議控制信息佔用發送報文緩衝區中會話層協議數據單元沒有使用的 空間;當第n(n > = 1)段報文發送完後,第n+1段報文的RFC1006報文頭起始指針 為SessionPtr+r^TpktUserLen-7,第n+1段報文的傳輸層協議控制信息起始指針為 SessionPtr+n*TpktUserLen-3,第n+1段的RFC1006報文頭和傳輸層協議控制信息佔用了 已發送的第n段報文的緩衝區空間。一個報文完全發送出去後,將報文所在的發送報文緩衝區放入空閒發送報文緩衝 區鍊表中。本發明的積極效果在於對於一個套接字上的報文發送,網絡守護任務要麼監視 套接字是否可寫,要麼監視套接字對應的管道是否有要發送報文的消息,當套接字可寫或者管道有要發送報文的消息時,作業系統喚醒網絡守護任務及時進行報文發送,消除了具 備發送條件而實際發送滯後的現象,提高了報文發送的實時性。對於數據類型的傳輸報文, 發送時動態添加RFC1006報文頭和傳輸層協議控制信息,避免了分段發送時的緩衝區復 制,提高了傳輸效率。
圖1是處理一個套接字上的報文發送流程示意圖。圖2是一個會話層協議數據單元被分割成多個傳輸段進行發送的示意圖。
具體實施方式
下面結合附圖和具體實施例進一步說明本發明。主任務主要包括以下幾個過程(1)主任務初始時分配一個空閒發送報文緩衝區鍊表,每個發送報文緩衝區的大 小比系統配置的會話層協議數據單元長度多7個字節;(2)每建立一個套接字,就創建一個相應的管道,管道消息結構包括的數據成員有 報文緩衝區起始指針、報文緩衝區長度、報文起始指針、報文實際長度、傳輸層報文類型;(3)發送報文時,從空閒發送報文緩衝區鍊表中分配一個發送報文緩衝區,對於數 據報文,利用這個緩衝區從後向前進行報文編碼,添加表示層協議控制信息和會話層協議 控制信息;對於連接管理報文,直接在這個緩衝區中生成一個傳輸層協議數據單元,然後加 上RFC1006報文頭;主任務將生成報文的控制信息,包括報文緩衝區起始指針、報文緩衝區 長度、報文起始指針、報文實際長度、傳輸層報文類型,通過管道機制傳遞給網絡守護任務 進行發送。網絡守護任務基於selectO系統調用,監視一個讀文件描述字數組、一個寫文 件描述字數組和一個錯誤文件描述字數組;網絡守護任務為每一個套接字設置一個標誌 socketFlag,用來表示是等待網絡套接字可寫,還是等待套接字對應的管道有要發送的報 文;任務初始時,將套接字對應的管道文件描述字設置在讀文件描述字數組中,並且不存在 上次沒有發送完的報文。當網絡守護任務等待的文件描述字就緒時,網絡守護任務獲得執行時機,檢查存 放系統返回值的文件描述字數組,如果某個套接字可寫,或者套接字對應的管道上有消息, 則如圖1所示,執行以下流程(1)判斷當前報文是否發送完;(2)如果當前報文沒有發送完,使用sendO,根據當前報文已經發送到的位置,繼 續發送當前報文,然後轉到過程(5)執行;(3)當前報文已發送完,將報文所在的發送報文緩衝區放入空閒發送報文緩衝區 鍊表中;使用不等待的select 判斷套接字對應的管道是否有消息;(4)如果管道有消息,讀取管道消息,獲取管道消息所指報文作為當前要發送的網 絡報文,轉到過程(1)繼續執行;否則標記套接字的socketFlag為需要等待套接字對應的 管道有要發送的報文,結束流程。(5)根據sendO的返回值,更新當前報文已經發送到的位置。如果sendO的返回 值小於希望發送的字節個數,標記套接字的socketFlag為需要等待網絡套接字可寫,結束 流程;如果sendO的返回值等於希望發送的字節個數,轉到過程(1)繼續執行。根據每個套接字的socketFlag所作標記,如果需要等待套接字對應的管道有要 發送的報文,則將管道文件描述字設置在讀文件描述字數組中;如果需要等待網絡套接字可寫,則將套接字設置在寫文件描述字數組中;按照新設置的文件描述字數組,網絡守護任 務進行下一輪文件描述字監視與處理流程。以下是報文發送的具體實現發送報文時,對於數據類型的報文,將其按照傳輸層用戶數據長度,添加3個字節 的協議控制信息和4個字節的RFC1006報文頭,利用socket接口進行分段發送;對於連接 管理報文,直接利用socket接口進行發送;如圖2所示,對於數據類型的報文,將其按照傳輸層用戶數據長度TpktUserLen從 低地址開始分成若干段,只有當第n(n>= 1)段報文發送完後,才進行第n+1段的發送。指針SessionPtr為會話層報文起始地址,第一段的RFC1006報文頭起始指針 為SessionPtr-7,第一段的傳輸層協議控制信息起始指針為SessionPtr-3,第一段的 RFC1006報文頭和傳輸層協議控制信息佔用發送報文緩衝區中會話層協議數據單元沒有使 用的空間;當第n(n > = 1)段報文發送完後,第n+1段報文的RFC1006報文頭起始指 針為SessionPtr+r^TpktUserLen-7,第n+1段報文的傳輸層協議控制信息起始指針為 SessionPtr+n*TpktUserLen-3,第n+1段的RFC 1006報文頭和傳輸層協議控制信息佔用了 已發送的第n段報文的緩衝區空間。
權利要求
一種IEC 61850高層協議報文發送的管理方法,其特徵是主任務初始時分配一個空閒發送報文緩衝區鍊表,每個發送報文緩衝區的大小比系統配置的會話層協議數據單元長度多7個字節;每建立一個套接字,就創建一個相應的管道,管道消息結構包括的數據成員有報文緩衝區起始指針、報文緩衝區長度、報文起始指針、報文實際長度、傳輸層報文類型;發送報文時,從空閒發送報文緩衝區鍊表中分配一個發送報文緩衝區,對於數據報文,利用這個緩衝區從後向前進行報文編碼,添加表示層協議控制信息和會話層協議控制信息;對於連接管理報文,直接在這個緩衝區中生成一個傳輸層協議數據單元,然後加上RFC 1006報文頭;主任務將生成報文的控制信息,包括報文緩衝區起始指針、報文緩衝區長度、報文起始指針、報文實際長度、傳輸層報文類型,通過管道機制傳遞給網絡守護任務進行發送;網絡守護任務基於select系統調用,監視一個讀文件描述字數組、一個寫文件描述字數組和一個錯誤文件描述字數組;網絡守護任務為每一個套接字設置一個標誌socketFlag,用來表示是等待網絡套接字可寫,還是等待套接字對應的管道有要發送的報文;網絡守護任務初始時,將套接字對應的管道文件描述字設置在讀文件描述字數組中;當網絡守護任務等待的文件描述字就緒時,網絡守護任務獲得執行時機,檢查存放系統返回值的文件描述字數組,對於每個套接字上的報文發送(1)如果管道上有消息,則表明對應的套接字上有報文要發送,讀取管道消息,獲取管道消息所指報文作為當前要發送的網絡報文進行發送;(2)如果網絡套接字可寫,先發送上次沒有發送出去的報文;如果上次沒有發送出去的報文本次完全發送出去,並且管道中存在消息,再讀取管道中的消息,獲取管道消息所指報文作為當前要發送的網絡報文進行發送;發送報文時,對於數據類型的報文,將其按照傳輸層用戶數據長度,添加3個字節的協議控制信息和4個字節的RFC1006報文頭,利用socket接口進行分段發送;對於連接管理報文,直接利用socket接口進行發送;如果當前需要發送的報文沒有完全發送出去,標記套接字的socketFlag為需要等待網絡套接字可寫;如果當前需要發送的報文已經完全發送出去,並且管道中沒有消息了,標記套接字的socketFlag為需要等待套接字對應的管道有要發送的報文;根據每個套接字的socketFlag所作標記,如果需要等待套接字對應的管道有要發送的報文,則將管道文件描述字設置在讀文件描述字數組中;如果需要等待網絡套接字可寫,則將套接字設置在寫文件描述字數組中;按照新設置的文件描述字數組,網絡守護任務進行下一輪文件描述字監視與處理流程。
2.如權利要求1所述的IEC61850高層協議報文發送的管理方法,其特徵是對於數 據類型的報文,將其按照傳輸層用戶數據長度TpktUserLen從低地址開始分成若干段,只 有當第n(n>= 1)段報文發送完後,才進行第n+1段的發送;指針SessionPtr為會話層報 文起始地址,第一段的RFC 1006報文頭起始指針為SessionPtr-7,第一段的傳輸層協議控 制信息起始指針為SessionPtr-3,第一段的RFC1006報文頭和傳輸層協議控制信息佔用發 送報文緩衝區中會話層協議數據單元沒有使用的空間;當第n(n>= 1)段報文發送完後, 第n+1段報文的RFC1006報文頭起始指針為SessionPtr+n*TpktUserLen-7,第n+1段報文的傳輸層協議控制信息起始指針為SessionPtr+n*TpktUserLen-3,第n+1段的RFC 1006報 文頭和傳輸層協議控制信息佔用了已發送的第η段報文的緩衝區空間。
3.如權利要求1或2所述的一種IEC 61850高層協議報文發送的管理方法,其特徵 是一個報文完全發送出去後,將報文所在的發送報文緩衝區放入空閒發送報文緩衝區鏈 表中。
全文摘要
本發明是一種IEC 61850高層協議報文發送的管理方法。發送報文時,從空閒發送報文緩衝區鍊表中分配一個發送報文緩衝區,對於數據報文,利用這個緩衝區生成一個會話層協議數據單元,發送時動態添加RFC1006報文頭和傳輸層協議控制信息;對於連接管理報文,直接在這個緩衝區中生成一個傳輸層協議數據單元,然後加上RFC1006報文頭;主任務將生成報文的控制信息,通過管道機制傳遞給網絡守護任務進行發送。對於一個套接字上的報文發送,網絡守護任務要麼監視套接字是否可寫,要麼監視套接字對應的管道是否有要發送報文的消息。本方法提高了報文發送的實時性,並提高了傳輸效率。
文檔編號H04L12/56GK101827026SQ201010140460
公開日2010年9月8日 申請日期2010年4月1日 優先權日2010年4月1日
發明者唐永建, 嶽增輝, 鄭永志, 韓明峰 申請人:東方電子股份有限公司