1.一種RTU多協(xié)議動態(tài)加載的數(shù)據(jù)傳輸方法,其特征在于包括以下步驟:
步驟1:對不同的通信組網(wǎng)協(xié)議進行抽象,形成統(tǒng)一的協(xié)議包處理框架模型;
不同的通信組網(wǎng)協(xié)議抽象成以下五個部分:協(xié)議結(jié)構(gòu)模塊、協(xié)議控制模塊、協(xié)議-設(shè)備銜接模塊、數(shù)據(jù)緩沖模塊和硬件驅(qū)動模塊;
(1)協(xié)議結(jié)構(gòu)模塊包括協(xié)議數(shù)據(jù)包/協(xié)議數(shù)據(jù)單元(PDU)的構(gòu)造、解析,負(fù)責(zé)將待發(fā)送的數(shù)據(jù)報文按照選定的協(xié)議封裝成PDU,同時完成對接收的PDU進行命令解析;
(2)協(xié)議控制模塊包括連接管理和傳輸控制,負(fù)責(zé)監(jiān)聽上層應(yīng)用程序的命令,完成建立連接、拆除連接、超時控制、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)命令;
(3)協(xié)議-設(shè)備銜接模塊包括RTU設(shè)備關(guān)聯(lián)和傳輸模式管理,負(fù)責(zé)與RTU設(shè)備支持的協(xié)議的關(guān)聯(lián)綁定,設(shè)置設(shè)備IP地址、端口、短消息參數(shù),配置首發(fā)、重發(fā)、組播(多中心發(fā)送)和信道切換方式;
(4)數(shù)據(jù)緩沖模塊包括數(shù)據(jù)發(fā)送控制和緩沖隊列管理,負(fù)責(zé)將待發(fā)送的PDU按照數(shù)據(jù)量大小、要求的時間間隔和數(shù)據(jù)類型,調(diào)度執(zhí)行基于串口的數(shù)據(jù)輸出;
(5)硬件驅(qū)動模塊包括數(shù)據(jù)通信口(COM)、參數(shù)配置口(CON)和外接設(shè)備口(USB),負(fù)責(zé)對多種形態(tài)的串行接口部件和設(shè)備的驅(qū)動使能,實現(xiàn)與RTU總線、外部計算和存儲設(shè)備的接入;
步驟2:生成嵌入式協(xié)議棧;
嵌入式協(xié)議棧保存可執(zhí)行的多種用戶通信協(xié)議代碼;根據(jù)步驟1的協(xié)議包處理框架模型,將各模塊的功能、算法進行標(biāo)準(zhǔn)化、模塊化代碼設(shè)計,形成不同的通信組網(wǎng)協(xié)議的函數(shù)庫;這些協(xié)議組件以嵌入式系統(tǒng)的虛函數(shù)形式寫入CPU的flash空間中,包含協(xié)議名稱、通信參數(shù)、數(shù)據(jù)類型要素,供RTU設(shè)備在初始化和運行時裝配、加載;
步驟3:協(xié)議配置與加載;
設(shè)置協(xié)議和相應(yīng)的RTU設(shè)備配置參數(shù),對協(xié)議進行加載控制;配置指示包括應(yīng)用協(xié)議指示、底層通信方式指示、本機和接收方IP地址、端口號、MAC地址綁定,短信參數(shù);根據(jù)協(xié)議名稱、通信參數(shù)、數(shù)據(jù)類型參數(shù)指示,定位選擇相應(yīng)的虛函數(shù),按照步驟1的五個模塊,組裝成指定的應(yīng)用協(xié)議,并與一個外部通信終端相應(yīng)的鏈路層協(xié)議參數(shù)關(guān)聯(lián),啟動RTU初始化過程,確定其與中心站的數(shù)據(jù)傳輸方式,完成通信雙方的協(xié)議加載;
步驟4:執(zhí)行協(xié)議狀態(tài)機算法,生成協(xié)議數(shù)據(jù)包/協(xié)議數(shù)據(jù)單元(PDU);
協(xié)議加載后,根據(jù)設(shè)置的數(shù)據(jù)發(fā)送觸發(fā)機制,對實際接收到的傳感器數(shù)據(jù)報文包頭識別、校驗和內(nèi)容的PDU封裝,并啟動數(shù)據(jù)傳輸與控制;
采用的面向字符型的狀態(tài)機協(xié)議棧算法,表示協(xié)議在運行時的工作狀態(tài);根據(jù)加載的協(xié)議及其對應(yīng)的狀態(tài)機參數(shù),當(dāng)接收到數(shù)據(jù)處理信號后,從接收數(shù)據(jù)接收緩沖區(qū)取出協(xié)議參數(shù)設(shè)置個數(shù)的字節(jié)來進行本協(xié)議包頭匹配,協(xié)議包頭匹配不成功時丟棄所取的數(shù)據(jù),同時進行緩沖區(qū)移位以便于再次取數(shù),這個操作被稱為包頭處理狀態(tài)(狀態(tài)A);當(dāng)協(xié)議包頭匹配成功即轉(zhuǎn)入?yún)f(xié)議數(shù)據(jù)包處理,處理具體的PDU內(nèi)容(狀態(tài)B);
在狀態(tài)B中又分三個具體的子狀態(tài):
(1)包頭匹配成功并進行緩沖區(qū)移位操作后即進入?yún)f(xié)議包長處理狀態(tài)(狀態(tài)B-子狀態(tài)a);
(2)知道協(xié)議包長(L字節(jié))后,狀態(tài)機控制轉(zhuǎn)入?yún)f(xié)議取數(shù)狀態(tài)(狀態(tài)B-子狀態(tài)b)進行協(xié)議取數(shù);
(3)讀取接收數(shù)據(jù)緩沖區(qū)L字節(jié)后,狀態(tài)機控制轉(zhuǎn)入?yún)f(xié)議校驗狀態(tài)(狀態(tài)B-子狀態(tài)c);
(4)數(shù)據(jù)包校驗通過后,取走整個PDU的數(shù)據(jù)部分,并發(fā)出協(xié)議數(shù)據(jù)處理信號啟動后續(xù)數(shù)據(jù)處理;
(5)最后,對接收數(shù)據(jù)緩沖區(qū)余下的數(shù)據(jù)啟動下一次協(xié)議狀態(tài)機處理過程(回到狀態(tài)A);
步驟5:完成數(shù)據(jù)傳輸與控制;
經(jīng)過步驟4處理后的數(shù)據(jù),輸入到數(shù)據(jù)上報緩沖區(qū)隊列中,由數(shù)據(jù)緩沖模塊與協(xié)議-設(shè)備銜接模塊和硬件驅(qū)動模塊共同完成數(shù)據(jù)發(fā)送和重發(fā)功能;上報成功的數(shù)據(jù)在上報完成后即丟棄,對于上報不成功的數(shù)據(jù),專門開辟了“補傳數(shù)據(jù)緩沖區(qū)”來區(qū)別存放;
每次啟動上報時都是優(yōu)先發(fā)送數(shù)據(jù)上報緩沖區(qū)內(nèi)的數(shù)據(jù),待數(shù)據(jù)上報緩沖區(qū)的數(shù)據(jù)全部發(fā)完后,再按后進先出的順序控制發(fā)送數(shù)據(jù)補傳緩沖區(qū)內(nèi)的數(shù)據(jù),保證實時數(shù)據(jù)的優(yōu)先上報。
2.根據(jù)權(quán)利要求1所述的一種RTU多協(xié)議動態(tài)加載的數(shù)據(jù)傳輸方法,其特征在于:所述的不同的通信組網(wǎng)協(xié)議可以是常用的水文協(xié)議、水資源協(xié)議、地下水協(xié)議以及加密協(xié)議。