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