嵌入式系統(tǒng)的通信規(guī)約管理平臺設(shè)計(jì)
關(guān)鍵詞:平臺 規(guī)約說明書 CPCB 動態(tài)描述靜態(tài)描述 邏輯描述
引言
眾所周知,通信的雙方必須遵守相同的協(xié)議,報(bào)文才能互相識別。目前,不同行業(yè)間的通信協(xié)議千差萬別。為解決不同通信協(xié)議間的計(jì)算機(jī)系統(tǒng)通信問題,人們普遍采用的措施是一個(gè)具體規(guī)約對應(yīng)一段程序。如果出現(xiàn)新規(guī)約,只能由通信雙方共同配合,由一方按另一方的標(biāo)準(zhǔn)修改或增加通信規(guī)約來解決問題。這種解決措施使得通信系統(tǒng)的適應(yīng)能力不強(qiáng)、可維護(hù)性差,難以兼容不同規(guī)約的設(shè)備。
筆者借鑒操作系統(tǒng)進(jìn)程控制塊PCB的思想,通過對各種通信規(guī)約的認(rèn)真分析研究,提出了自己的通信規(guī)約管理平臺的核心設(shè)計(jì)思想――用戶填寫指定格式的靜態(tài)規(guī)約說明書。規(guī)約管理平臺根據(jù)規(guī)約書生成通信規(guī)約控制塊,由規(guī)約控制塊統(tǒng)一控制、管理,并適應(yīng)千差萬別規(guī)約程序的運(yùn)行。
該平臺的設(shè)計(jì)使得系統(tǒng)能夠適應(yīng)千差萬別的通信規(guī)約,不用修改程序就能夠保證通信系統(tǒng)在線運(yùn)行情況下,接入各種新設(shè)備,以不變的程序應(yīng)對萬變的規(guī)約,維護(hù)真正做到傻瓜化、智能化。
1 設(shè)計(jì)通信規(guī)約管理平臺的可行性
1.1 統(tǒng)一的通信模型
任何兩臺計(jì)算機(jī)上的兩個(gè)應(yīng)用程序通信,都遵從如圖1所示的通信模型。數(shù)據(jù)流動可以用收到發(fā)兩個(gè)動作來描述。把提出數(shù)據(jù)請求服務(wù)的應(yīng)用程序稱為控制方向、即命令的下行;把提供數(shù)據(jù)服務(wù)的應(yīng)用程序稱為監(jiān)測方向,即數(shù)據(jù)的上行。這樣,一個(gè)完整的規(guī)約有控制方和監(jiān)測方兩個(gè)方面。控制方向下發(fā)送命令,并解析監(jiān)測方發(fā)來的應(yīng)答或主動上報(bào)的數(shù)據(jù)或狀態(tài)指示報(bào)文;監(jiān)測方解析命令,根據(jù)請求命令組織應(yīng)答報(bào)文并上傳。
1.2 通信規(guī)約的共性
任何通信規(guī)約都具有如下共同特征;幀結(jié)構(gòu)的相似性、數(shù)據(jù)對象種類和報(bào)文長度的有限性、報(bào)文流的粒子性、邏輯過程的有窮性、傳送原因的可分類性。
(1)幀結(jié)構(gòu)的相似性
每幀報(bào)文都有圖2所示的傳輸控制部分。
傳輸控制部分的目的之一是保證要傳輸?shù)臄?shù)據(jù)最終能夠正確到達(dá)目的地。傳輸控制部分包括同步字對象、長度對象、傳輸方向?qū)ο?、源地址對象、目的地址對象、幀號對象、功能符對象、結(jié)束符對象、其它對象及校驗(yàn)碼十種對象構(gòu)成。任何具體的規(guī)約都是上述對象的全部或基子集的一個(gè)具體排列。
數(shù)據(jù)部分就是用傳輸控制元素封裝起來的傳輸數(shù)據(jù)。
(2)數(shù)據(jù)對象種類和報(bào)文長度的有限性
數(shù)據(jù)對象是通信規(guī)約真正要傳輸?shù)膶ο?。任何一個(gè)具體應(yīng)用,要傳輸數(shù)據(jù)對象的種類是有限的,因而人們能夠通過具體的通信規(guī)約將其進(jìn)行描述。通信規(guī)允管理平臺同樣也能被描述出來。
任何規(guī)約一幀報(bào)文的最大長度都是有限的,這樣不但可以遏制通信線路上長期被個(gè)別設(shè)備獨(dú)占,也減少了錯誤傳的次數(shù)與重傳時(shí)間。一旦要傳輸?shù)臄?shù)據(jù)超過規(guī)定幀長,要分幀發(fā)送,接收方根據(jù)幀號來組裝源數(shù)據(jù)。
(3)報(bào)文流的粒子性
更重要的是任何報(bào)文流的最小單位都是一個(gè)二進(jìn)制位,相應(yīng)報(bào)文的最小定義單元也是一個(gè)二進(jìn)制位,這是所有通信規(guī)約的共性,不同的是各位間含義不同。任何規(guī)約的不同定義都在報(bào)文流有不同的確定位置(對位而言),數(shù)據(jù)發(fā)送是以字節(jié)為單位的。所以,引入順序號的概念來描述并指示定義在不同報(bào)文中的起始位置(相對于合法報(bào)文的第一個(gè)同步字)和位數(shù),順序號屬性就成了所有對象的共同屬性。描述如下:
*字節(jié)序號――定義在一個(gè)以字節(jié)為單位,合法幀中數(shù)據(jù)成員占有的邏輯序號,第一個(gè)起始符為邏輯序號0(C、C++下標(biāo)從0開始),根據(jù)在數(shù)據(jù)流中出現(xiàn)的先后順序遞增;
*字節(jié)內(nèi)的起始位號――字節(jié)內(nèi)的開始位號,取值范圍0~7;
*位數(shù)――用幾位表示。
struct CommSerial
{unsigned int SerialByte;
unsigned char ByteStartBit,ByteEndBit}my={2,0,8};
字節(jié)順序號為2,字節(jié)內(nèi)起始位號為0,位數(shù)為8,說明是幀中的第三個(gè)字節(jié)。如果規(guī)約用已有定義的字節(jié)的空位來定義,順序號可以重復(fù),但位號不能重復(fù),用累加實(shí)現(xiàn)。
(4)邏輯規(guī)則的有窮性
邏輯規(guī)則包含以下四個(gè)方面。
①命令應(yīng)答關(guān)系規(guī)則:包括通信雙方中,控制方發(fā)送的命令和監(jiān)測方的應(yīng)答數(shù)據(jù)對應(yīng)關(guān)系,以及監(jiān)測方的狀態(tài)指示和控制方的發(fā)送命令關(guān)系兩個(gè)方面。這種對應(yīng)關(guān)系是確定的、有限的和可描述的。
②雙方數(shù)據(jù)發(fā)送的時(shí)間規(guī)則:控制方的自動輪詢時(shí)間規(guī)則、監(jiān)視方主動上報(bào)的時(shí)間規(guī)則及人工隨機(jī)干預(yù)的控制命令,以上都是有限的與確定的。
③優(yōu)先級規(guī)則:控制方同時(shí)出現(xiàn)多種要發(fā)送的命令,應(yīng)按優(yōu)先級規(guī)則進(jìn)行傳送。
④在幀結(jié)構(gòu)的各控制元素一級封裝下,數(shù)據(jù)對象本身又進(jìn)行了二級封裝。這種二級封可按一級封裝的方式解決。
(5)傳送原因的可分類性
控制方的傳輸原因有自動輪詢、人工隨機(jī)干預(yù)、監(jiān)視方出現(xiàn)需優(yōu)先處理的狀態(tài)或指示;監(jiān)視方向的傳輸原因有受召喚與主動上報(bào)兩種。
綜上所述,通信規(guī)約管理平臺的設(shè)計(jì)是完全可行的。
圖2 通信報(bào)文統(tǒng)一抽象格式
2 通信規(guī)約管理平臺的基本組織方式
管理平臺組織方式是將規(guī)約按照統(tǒng)一格式分解,以形成規(guī)約說明書或規(guī)約描述文件,將之放在外存,啟動注冊命令,管理平臺將規(guī)約說明書進(jìn)行系統(tǒng)注冊,填入規(guī)約注冊控制表。運(yùn)行時(shí),管理平臺從規(guī)約注意表中提取指定的規(guī)約說明書,并找到一個(gè)空白規(guī)約控制塊CPCB,根據(jù)規(guī)約說明文件填寫CPCB,再由CPCB控制管理這個(gè)具體規(guī)約的運(yùn)行??瞻滓?guī)約控制塊的個(gè)數(shù)是有限的。一個(gè)進(jìn)程按照CPCB的內(nèi)容來運(yùn)行,同時(shí)一個(gè)進(jìn)程管理一個(gè)硬件通信端口資源,即通信端口的數(shù)量決定通信進(jìn)程的數(shù)量。平臺可根據(jù)運(yùn)行各規(guī)約的實(shí)現(xiàn)性要求,來安排一個(gè)進(jìn)程運(yùn)行CPCB的數(shù)量。當(dāng)然,一個(gè)進(jìn)程依照一個(gè)CPCB運(yùn)行是容易實(shí)現(xiàn)的。
2.1 規(guī)約說明書
規(guī)約說明書由基本情況表、靜態(tài)描述表、動態(tài)描述表、邏輯規(guī)則表構(gòu)成。靜態(tài)描述表由控制元素對象中不隨時(shí)間變化而變化的屬性信息及其它信息組成;動態(tài)描述表用于描述隨時(shí)間不斷變化的控制元素和數(shù)據(jù)元素信息及其它信息;邏輯描述表由命令應(yīng)答關(guān)系表、應(yīng)答命令表、時(shí)間規(guī)則表、優(yōu)先級規(guī)則表、篩選規(guī)則表和二級封裝規(guī)則表組成。
(1)基本情況表
包括規(guī)約名稱、最大幀長、數(shù)據(jù)對象個(gè)數(shù)、命令對象個(gè)數(shù)和狀態(tài)指示對象個(gè)數(shù),如圖3(a)所示。
(2)靜態(tài)描述
由同步字、傳輸方向、源地址、結(jié)束符及其它6種數(shù)據(jù)對象構(gòu)成,如圖3(b)所示。同步字標(biāo)志一幀數(shù)據(jù)的開始;傳輸方向說明當(dāng)前是工作在控制方向還是標(biāo)志測方向;源地址說明報(bào)文的發(fā)送設(shè)備地址;結(jié)束符標(biāo)志一幀報(bào)文的尾;其它對象指向所有不在上述靜態(tài)描述之中的控制元素對象鏈的隊(duì)首。靜態(tài)描述中的每個(gè)控制元素對象都有本規(guī)約內(nèi)全局統(tǒng)一的標(biāo)識號(ID)。
(3)動態(tài)描述
用于描述隨時(shí)間具體因素控制而不斷變化的信息,它包括幀號對象、校驗(yàn)碼對象、報(bào)文長度對象、數(shù)據(jù)對象、請求命令對象、應(yīng)答命令對象、目的地址對象及其它對象,如圖3(c)所示。幀號是完整報(bào)文的分幀傳送,規(guī)約規(guī)定的報(bào)文幀的幀長是有限的;超限時(shí)分幀傳送,發(fā)送方指明幀號,接受方按幀號重新組裝。校驗(yàn)碼對象用于傳輸差錯控制,檢驗(yàn)一幀報(bào)文的合法性。報(bào)文長度對象管理并指明有效數(shù)據(jù)的長度。數(shù)據(jù)對象按應(yīng)答命令對象指明的類型組織該類數(shù)據(jù)。目的地址對于控制方向,指明服務(wù)的設(shè)備地址,它可能向多個(gè)設(shè)備輪流請求;對于監(jiān)測方向,指明請求服務(wù)的設(shè)備地址。數(shù)據(jù)對象取決于具體規(guī)約的定義。應(yīng)答命令對換快捷指明應(yīng)答數(shù)據(jù)對象的類型。請求命令對象指明控制方向,向目的設(shè)備下發(fā)請求數(shù)據(jù)狀態(tài)對象命令,并組織報(bào)文幀。應(yīng)答命令對象和請求命令對象管理的措施與數(shù)據(jù)狀態(tài)對象相同。當(dāng)然,應(yīng)答數(shù)據(jù)狀態(tài)表和請求命令表是靜態(tài)的,在此便于說明;而數(shù)據(jù)狀態(tài)對象表是動態(tài)的。
動態(tài)描述中的控制元素對象和數(shù)據(jù)元素對象也都由本規(guī)約內(nèi)全局統(tǒng)一的ID號來識別;ID號由ID注冊管理程序生成,填寫規(guī)約自己所賂的ID注冊表。
(4)靜態(tài)對象和動態(tài)對象公有的屬性
①順序號對象:如前所述,它指明某一元素對象在報(bào)文流中的起始位置和所占的連續(xù)二進(jìn)制位數(shù)。
②ID號對象是全局統(tǒng)一的,它由六段依次連接而成,即一段、二段、三段、四段、五段、六段。根據(jù)ID可以識別提取不同的元素對象,它是各控制元素和數(shù)據(jù)元素的唯一標(biāo)識。
一段是注冊后的規(guī)約ID號,高段的位數(shù)由規(guī)約ID號位數(shù)決定。二段是區(qū)分上行與下行,用一位二進(jìn)制位就可區(qū)分。三段用于說明具體的規(guī)約是否含有對應(yīng)的元素對象,它說明的是有與無。四段用于區(qū)分源地址、目的地址、傳輸方向、同步字、其它靜態(tài)對象、幀號、校驗(yàn)碼、報(bào)文長度、請求命令符、應(yīng)答命令符、其它動態(tài)對象和數(shù)據(jù)對象,共12種,用4位二進(jìn)制位就可區(qū)分。五段用于說明四段之中的每一種是否具有原子性,比如同步字就具有原子性。當(dāng)子種類多于一個(gè)同步字時(shí),也相當(dāng)于一個(gè),要發(fā)就全發(fā),不可分割;而請求命令符就不具有原子性,只能發(fā)出其子種類之中的一種。原子性是個(gè)布爾量,一位二進(jìn)制就可描述。六段用于說明當(dāng)上述12種之中任一種超過一個(gè)時(shí),就可用第5段描述,比如同步字6個(gè),就得用三位,選取上述12種之中子種類最多的一個(gè)和為第五段的位數(shù)。
③拷貝、賦值、被拷貝:在報(bào)文流中的其它類元素對象中,當(dāng)出現(xiàn)與已有定義的控制元素對象表示值重復(fù)時(shí),引進(jìn)對象的拷貝與被拷貝屬性。賦值屬性說明該元素指的是已獨(dú)立的定義值。相應(yīng)的,引入拷貝與賦值操作。
(5)邏輯描述信息
邏輯描述信息由下列表構(gòu)成:
①控制方發(fā)送的命令被監(jiān)測方收到后,監(jiān)測方予以應(yīng)答的數(shù)據(jù)對象ID對應(yīng)關(guān)系表;
②控制方收到監(jiān)測方的狀態(tài)指示后,控制方應(yīng)響應(yīng)的發(fā)送命令I(lǐng)D對應(yīng)關(guān)系表;
③控制方發(fā)送輪詢命令I(lǐng)D時(shí)間間隔表;
④控制方的人工干預(yù)控制命令I(lǐng)D表;
⑤監(jiān)測方的主動上報(bào)數(shù)據(jù)表、狀態(tài)ID表;
⑥控制方發(fā)送命令I(lǐng)D優(yōu)先級的規(guī)則表;
⑦監(jiān)測方應(yīng)答數(shù)據(jù)與主動上報(bào)的ID優(yōu)先級規(guī)則表;
⑧二級封裝規(guī)則表。
2.2 規(guī)約控制埠CPCB
通信平臺的某一通信進(jìn)程在運(yùn)行時(shí),如未匹配通信規(guī)約,則運(yùn)行空規(guī)約。如收到控制臺發(fā)來的匹配命令,則從規(guī)約注冊表中提取規(guī)約說明書,并從空白CPCB鏈表中摘下一個(gè),將它鏈入運(yùn)行CPCB鏈表,按照規(guī)約說明書的內(nèi)容填寫該CPCB,填寫完畢即投入運(yùn)行。這樣,在邏輯規(guī)則的控制下,各靜態(tài)對象和動態(tài)對象各司其職而又發(fā)送消息協(xié)同工作,整個(gè)平臺就會有條不紊地動作。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論