多任務(wù)TDCS車站分機(jī)通信協(xié)議的設(shè)計(jì)
3 通信協(xié)議設(shè)計(jì)和解析
協(xié)議是數(shù)據(jù)發(fā)送與接收方都必須遵守的一種規(guī)則,這種規(guī)則一部分是發(fā)送方及接收方所認(rèn)識(shí)的信息組成格式即信息結(jié)構(gòu),另一部分是由信息結(jié)構(gòu)的協(xié)議類型及協(xié)議操作符所組成的會(huì)話方式即傳輸控制。
在該系統(tǒng)中,從串口和以太網(wǎng)接收到的各種的數(shù)據(jù)的類型和長(zhǎng)度是不一致的,數(shù)據(jù)處理任務(wù)要對(duì)其分門(mén)別類進(jìn)行處理就必須明確數(shù)據(jù)的類型、實(shí)際長(zhǎng)度以及數(shù)據(jù)本身。因此必須定義一種數(shù)據(jù)傳輸?shù)膮f(xié)議以保證通信的可靠性和數(shù)據(jù)讀取的可用性。本文針對(duì)以太網(wǎng)通信和串口通信,分別建立了對(duì)應(yīng)的數(shù)據(jù)協(xié)議。
3.1 以太網(wǎng)通信協(xié)議
以太網(wǎng)通信涉及的信息包括計(jì)算機(jī)聯(lián)鎖設(shè)備狀態(tài)信息、無(wú)線車次號(hào)信息、調(diào)度命令信息。本文定義了一種以太網(wǎng)信息通用的數(shù)據(jù)協(xié)議封裝類如下:
在該數(shù)據(jù)結(jié)構(gòu)中,報(bào)文類型用來(lái)識(shí)別該報(bào)文是聯(lián)鎖設(shè)備信息、無(wú)線車次號(hào)信息或者調(diào)度命令信息;序列號(hào)用來(lái)判斷接收?qǐng)?bào)文的連續(xù)性;CRC錯(cuò)誤檢測(cè)綴用來(lái)判斷接收?qǐng)?bào)文的正確性,可以根據(jù)需要選擇不同的生成多項(xiàng)式;接收數(shù)據(jù)數(shù)組將根據(jù)聯(lián)鎖設(shè)備信息、無(wú)線車次號(hào)信息和調(diào)度命令信息的相應(yīng)內(nèi)容填充。
3.2 串口通信協(xié)議
串口通信采用RS 422方式。在嵌入式車站分機(jī)中,冗余的處理器單元采用輪詢的方式進(jìn)行一主多從通信。車站分機(jī)作為主機(jī),無(wú)線車次號(hào)設(shè)備、無(wú)線命令調(diào)度設(shè)備和計(jì)算機(jī)聯(lián)鎖設(shè)備作為從機(jī)。具體為:使用1問(wèn)1答的方式,整個(gè)系統(tǒng)中車站分機(jī)發(fā)送查詢命令,其他設(shè)備是從機(jī),只能被動(dòng)地接收和發(fā)送數(shù)據(jù)。
在串口通信中,必須為每一個(gè)數(shù)據(jù)報(bào)文設(shè)計(jì)一個(gè)起始碼和結(jié)束碼,如0x03,并對(duì)報(bào)文中所有與起始碼和結(jié)束碼相同的字符進(jìn)行轉(zhuǎn)義。接收方接收到該報(bào)文時(shí),再按照轉(zhuǎn)義規(guī)則對(duì)其進(jìn)行還原。本文定義的通用串口數(shù)據(jù)協(xié)議封裝類如下:
其中:報(bào)文類型、序列號(hào)和CRC錯(cuò)誤檢測(cè)綴的作用與以太網(wǎng)通信協(xié)議相同;從機(jī)地址用來(lái)區(qū)分該報(bào)文的目的地是無(wú)線車次號(hào)設(shè)備、無(wú)線調(diào)度命令設(shè)備還是計(jì)算機(jī)聯(lián)鎖設(shè)備。
評(píng)論