一種基于rs422總線的通訊協(xié)議匹配方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通訊協(xié)議匹配方法,尤其涉及一種基于RS422總線的通訊協(xié)議匹配方 法。
【背景技術(shù)】
[0002] RS422標(biāo)準(zhǔn)全稱是"平衡電壓數(shù)字接口電路的電氣特性",它定義了 422通訊方式 接口電路的特性。由于采用接收器高輸入阻抗和發(fā)送器強(qiáng)驅(qū)動能力,RS422允許在相同傳 輸線上連接多個接收節(jié)點,最多可以連接256個節(jié)點,其最大傳輸距離為1219米,最大傳輸 速率為lOMb/s。憑借其高可靠性和高傳輸速率特點,RS422總線目前廣泛應(yīng)用于航空航天 和工業(yè)控制等各個領(lǐng)域中,成為連接復(fù)雜電子信息系統(tǒng)內(nèi)部各部件或子系統(tǒng)之間的重要信 息傳輸通道。
[0003] 在復(fù)雜電子信息系統(tǒng)內(nèi)部,接口控制文件(ICD)作為描述復(fù)雜電子信息系統(tǒng)內(nèi)部 各部件之間及子系統(tǒng)之間通訊協(xié)議的依據(jù),定義了各部件或子系統(tǒng)的電氣及電子接口,是 電子信息系統(tǒng)規(guī)范的重要組成部分。在復(fù)雜電子信息系統(tǒng)運(yùn)行過程中,各部件或子系統(tǒng)在 接收外部發(fā)送來的數(shù)據(jù)后,根據(jù)ICD中規(guī)定的通訊協(xié)議特征(如協(xié)議幀頭、幀尾、長度等信 息)對所接收的數(shù)據(jù)進(jìn)行匹配,準(zhǔn)確的查找出相應(yīng)的通訊協(xié)議是后續(xù)進(jìn)行信息處理的先決 條件。
[0004] 隨著信息系統(tǒng)復(fù)雜度的增加,系統(tǒng)內(nèi)部各部件或子系統(tǒng)之間所傳輸?shù)男畔⒎N類也 日漸增多,系統(tǒng)內(nèi)部信息傳輸過程容易受到外部因素的干擾而影響所傳輸數(shù)據(jù)的完整性和 正確性。如何根據(jù)RS422總線所接收的數(shù)據(jù)從種類繁多的ICD中快速查找其所對應(yīng)的通訊 協(xié)議,提高通訊協(xié)議的匹配速度,同時解決RS422數(shù)據(jù)接收過程中斷數(shù)據(jù)分組不均勻?qū)е?數(shù)據(jù)包易丟失、通訊過程易受到錯誤幀干擾、通訊協(xié)議數(shù)據(jù)完整性和正確性難以保障的問 題,是保障復(fù)雜電子信息系統(tǒng)正常運(yùn)行的關(guān)鍵技術(shù)途徑。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明為解決現(xiàn)有的復(fù)雜信息系統(tǒng)內(nèi)部由于RS422數(shù)據(jù)接收過程中斷數(shù)據(jù)分組 不均勻?qū)е聰?shù)據(jù)包易丟失問題,以及通訊過程易受到錯誤幀干擾、通訊協(xié)議數(shù)據(jù)完整性和 正確性難以保障的問題,而提出一種基于RS422總線的通訊協(xié)議匹配方法。
[0006] -種基于RS422總線的通訊協(xié)議匹配方法,按以下步驟進(jìn)行:
[0007] 一、建立通訊協(xié)議匹配模板:
[0008] 通訊協(xié)議匹配模板是根據(jù)ICD中所定義的通訊協(xié)議信息在軟件中建立的模型,根 據(jù)RS422總線常用I⑶格式,以XML文件手動撰寫方式建立通訊協(xié)議匹配模板,其中協(xié)議幀 頭數(shù)組和協(xié)議幀尾數(shù)組為由若干元素組成的動態(tài)數(shù)組,其內(nèi)部每個元素為一個協(xié)議幀頭或 協(xié)議幀尾;
[0009] 二、接收并緩存RS422數(shù)據(jù):
[0010] 在建立通訊協(xié)議匹配模板后,利用RS422通訊板卡進(jìn)行數(shù)據(jù)接收;在接收RS422 數(shù)據(jù)之前,需要按照各個部件或子系統(tǒng)的通訊參數(shù)對通訊板卡每個傳輸通道進(jìn)行初始化, 初始化的具體參數(shù)包括:波特率、數(shù)據(jù)位、停止位和校驗位;由于復(fù)雜信息系統(tǒng)內(nèi)部所含部 件較多,需要采用多傳輸通道模式進(jìn)行信息傳輸,因此需要為每個傳輸通道建立數(shù)據(jù)緩沖 區(qū);
[0011] 每個傳輸通道的數(shù)據(jù)緩沖區(qū)大小為65535個字節(jié),同時為管理數(shù)據(jù)緩沖區(qū)并使后 續(xù)幀頭匹配和幀長度匹配能夠順利進(jìn)行,需要為每個傳輸通道設(shè)置單獨(dú)的數(shù)據(jù)當(dāng)前位置標(biāo) 識,該標(biāo)識用于表征該通道當(dāng)前所緩存等待進(jìn)行通訊協(xié)議匹配的RS422數(shù)據(jù)量;
[0012] 三、傳輸通道匹配:
[0013] 接收到的RS422數(shù)據(jù)經(jīng)過各通道數(shù)據(jù)緩存后,首先根據(jù)通訊協(xié)議匹配模板中的傳 輸通道字段進(jìn)行匹配,通訊協(xié)議匹配模板中某條協(xié)議的傳輸通道字段與本次接收的數(shù)據(jù)傳 輸通道相同則認(rèn)為傳輸通道匹配成功,將該條通訊協(xié)議加入到條件1協(xié)議隊列中,并啟動 后續(xù)幀頭首字節(jié)匹配過程;對于其它傳輸通道非本次接收的數(shù)據(jù)或傳輸通道不匹配的通訊 協(xié)議不進(jìn)行任何處理;
[0014] 四、匹配幀頭首字節(jié):
[0015] 采用幀頭首字節(jié)匹配從數(shù)據(jù)緩沖區(qū)中尋找所有可能的數(shù)據(jù)起始位置;
[0016] 四.一、從步驟三傳輸通道匹配成功后的條件1協(xié)議隊列中取出一條通訊協(xié)議;
[0017] 四.二、從該通訊協(xié)議的幀頭數(shù)組中取出第一個幀頭元素;
[0018] 四.三、根據(jù)該幀頭的是否固定值標(biāo)識判斷該幀頭是否是固定值;
[0019] 四.三.一、如果該幀頭是固定值,則取該幀頭值中的第一個字節(jié)數(shù)據(jù)與緩沖區(qū)中 的數(shù)據(jù)從起始位置依次進(jìn)行比較;
[0020] 四.三.一.一、如果存在兩者值相同的情況,則記錄第一個相同數(shù)據(jù)在緩沖區(qū)的 位置,判斷該位置是否小于之前其它通訊協(xié)議首字節(jié)匹配成功后的首字節(jié)位置;
[0021] 四.三.一.一.一、如果該條協(xié)議的首字節(jié)位置小于之前其它通訊協(xié)議首字節(jié) 匹配成功后的首字節(jié)位置,則清空條件2協(xié)議隊列中的所有通訊協(xié)議,將該條通訊協(xié)議加 入到條件2協(xié)議隊列中;
[0022] 四.三.一.一.二、如果該條協(xié)議的首字節(jié)位置等于之前其它通訊協(xié)議首字節(jié) 匹配成功后的首字節(jié)位置,將該條通訊協(xié)議加入到條件2協(xié)議隊列中;
[0023] 四.三.一.一.三、如果該條協(xié)議的首字節(jié)位置大于之前其它通訊協(xié)議首字節(jié) 匹配成功后的首字節(jié)位置,則對該條通訊協(xié)議不進(jìn)行任何處理;
[0024] 四.三.一.二、如果不存在兩者值相同的情況,則對該條通訊協(xié)議不進(jìn)行任何處 理;
[0025] 四.三.二、如果該幀頭是變值,則取該條通訊協(xié)議中幀頭數(shù)組的下一個幀頭元素 進(jìn)行比較,轉(zhuǎn)至步驟四.三;
[0026] 四.四、如果條件1協(xié)議隊列中還包含其它協(xié)議,則轉(zhuǎn)至步驟四.一,否則轉(zhuǎn)至 四?五;
[0027] 四.五、完成幀頭首字節(jié)匹配,輸出條件2協(xié)議隊列;
[0028] 五、幀頭全內(nèi)容匹配:
[0029] 幀頭全內(nèi)容匹配過程也同樣采用線性查找方式;
[0030] 五.一、從步驟四幀頭首字節(jié)匹配成功后的條件2協(xié)議隊列中取出一條通訊協(xié) 議;
[0031] 五.二、判斷該通訊協(xié)議幀頭長度與幀頭首字節(jié)位置到該傳輸通道數(shù)據(jù)當(dāng)前位置 標(biāo)識的大小關(guān)系;
[0032] 五.二.一、如果該通訊協(xié)議幀頭長度大于幀頭首字節(jié)位置到該傳輸通道數(shù)據(jù)當(dāng) 前位置標(biāo)識的長度,認(rèn)為幀頭全內(nèi)容匹配失?。?br>[0033] 五.二.二、如果該通訊協(xié)議幀頭長度大于幀頭首字節(jié)位置到該傳輸通道數(shù)據(jù)當(dāng) 前位置標(biāo)識的長度,則從幀頭首字節(jié)位置開始按照單字節(jié)取值的方法將該通訊協(xié)議幀頭與 緩沖區(qū)數(shù)據(jù)進(jìn)行比較;
[0034] 五.二.二.一、如果出現(xiàn)任意一個單字節(jié)不相同的情況,則認(rèn)為幀頭全內(nèi)容匹配 失??;
[0035] 五.二.二.二、如果出現(xiàn)所有單字節(jié)比較都相同,則認(rèn)為幀頭全內(nèi)容匹配成功, 將該條協(xié)議加入到條件3協(xié)議隊列;
[0036] 五.三、如果條件2協(xié)議隊列中還包含其它協(xié)議,則轉(zhuǎn)至步驟五.一,否則轉(zhuǎn)至步 驟五.四;
[0037] 五.四、完成幀頭全內(nèi)容匹配,輸出條件3協(xié)議隊列;
[0038] 六、幀長度匹配:
[0039] 在幀頭全內(nèi)容匹配成功后,該條通訊協(xié)議有較大可能匹配成功,但是在幀頭之后 數(shù)據(jù)所蘊(yùn)含的內(nèi)容是否完整也是通訊協(xié)