機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
串行通信中滑動窗過濾器的多協(xié)議自動識別
串行通信中滑動窗過濾器的多協(xié)議自動識別
 更新時間:2008-8-16 20:53:02  點擊數(shù):6
【字體: 字體顏色

       在室內(nèi)型和室外型云臺及一體化智能高速球型攝像機中,解碼器通過RS-485總線接收來自監(jiān)控中心由控制鍵盤或DVR發(fā)送的命令,對命令進行解析后發(fā)出相應(yīng)的控制指令,從而控制云臺的上下左右運動以及攝像機的光圈、聚焦和變倍等調(diào)整動作。

       1 通信協(xié)議介紹

       一個控制命令就是一個通過串行總線傳輸?shù)南?消息由多個字節(jié)組成,每個字節(jié)的傳輸格式一般都是1個起始位、8個數(shù)據(jù)位、1個停止位、沒有奇偶校驗位。下面介紹消息的基本結(jié)構(gòu),第一個字節(jié)往往是同步字節(jié)或稱特征字節(jié),可以是AAH或55H等,它的作為是讓總線上的每個終端作好接收后續(xù)字節(jié)的準(zhǔn)備。第二個字節(jié)是地址,即指明接收該命令的終端地址,響應(yīng)該消息的可能是一個,也可能是一組或全部的終端。每個終端有自己獨一無二的地址信息,只有當(dāng)接收到的信息中的地址與自己的地址吻合時,才執(zhí)行該命令,因為地址字節(jié)只有8位,因此同一系統(tǒng)中最多只能識別256個不同的終端。在串行通信中,除了單個字節(jié)的傳輸有時需要奇偶校驗外,接收到的消息還要做整體的數(shù)據(jù)塊校驗,通常采取的是將數(shù)據(jù)塊進行簡單的累加或者是異或后得到一個校驗字節(jié)(Check-Byte),將該校驗字節(jié)附加在消息的最后發(fā)出。終端接收后,首先要對接收到的數(shù)據(jù)塊進行校驗以判斷數(shù)據(jù)是否可靠。表1是PELCO-D協(xié)議的一個完整消息的結(jié)構(gòu)。

                 
         
 
 

       不同的公司采用不同的協(xié)議,消息的結(jié)構(gòu)完全不同。表2顯示4種常見傳輸協(xié)議的基本格式。

       由于協(xié)議之間完全不兼容,因此云臺解碼器往往只使用其中一種傳輸協(xié)議,造成產(chǎn)品的適用范圍不廣,一種兼容多種協(xié)議的解決方法是采用硬件設(shè)定的方法,即在解碼器上設(shè)計一個多位撥碼開關(guān),當(dāng)使用不同協(xié)議時,撥碼開關(guān)的選擇狀態(tài)不同,單片機讀取該設(shè)定參數(shù)后就知道當(dāng)前是什么樣的傳輸協(xié)議,然后采取相應(yīng)的解碼措施,在串行口中,當(dāng)接收到對應(yīng)協(xié)議中每個消息的特征字節(jié)時,就開始接收相應(yīng)長度的后續(xù)字節(jié),否則放棄該字節(jié)不予判斷,這樣設(shè)計的缺陷在于,首先必須非常明確當(dāng)前的傳輸協(xié)議,其次是當(dāng)更換不同的協(xié)議時必須重新設(shè)定拔碼開關(guān)的狀態(tài),在使用過程中不靈活不方便,而且這種方法容易造成誤判,因為一種協(xié)議中的特征字節(jié)也很可能會在其他協(xié)議的命令中以非特征字節(jié)的形式出現(xiàn)。僅僅依靠特征字節(jié)來決定是否接收后續(xù)字節(jié)是很容易丟碼或產(chǎn)生誤碼的。

       2 滑動窗和過濾器


       本文提出采用滑動窗過濾器的方式進行多協(xié)議的自動識別,而不會造成誤碼或漏碼。在單片機的RAM中建立一個數(shù)組R_Buf[n],他是對串口數(shù)據(jù)流進行過濾的窗口,窗體的大小即數(shù)組的大小n,取各種協(xié)議中的一個消息所包含的字節(jié)最多的長度,例如取SAMSUNG協(xié)議的長度為9。串口接收到的任何一個字節(jié)都按照先入先出的順序通過該窗口,而不論該字節(jié)是否是特征字節(jié),串口接收的數(shù)據(jù)碼流依次流經(jīng)該數(shù)組,因此該數(shù)組像一個窗口。始終保留碼流中的最后一幅數(shù)據(jù)的圖像,如圖1所示。

    

       各種協(xié)議以其不同的特征字節(jié)、消息長度和校驗字節(jié)的規(guī)律而構(gòu)成過濾器。每從串口中接收到一個新的字節(jié),滑動窗的內(nèi)容就刷新一次,同時將窗口內(nèi)容與過濾器中的數(shù)據(jù)結(jié)構(gòu)對比一次,這樣做得好處在于,接收到的串行數(shù)據(jù),無論其是什么協(xié)議,什么長度以及什么特征字節(jié),都會被過濾一次,滑動窗在數(shù)據(jù)碼流中從頭往后搜索,不放過任何一個符合某個協(xié)議的有效消息。只要落入滑動窗口內(nèi)的那些數(shù)據(jù)符合任何一種協(xié)議的數(shù)據(jù)格式,該數(shù)據(jù)就被認為是一個有效的消息,因此不會產(chǎn)生漏碼或誤碼的現(xiàn)象。

       3 軟件設(shè)計

       過濾過程包

括3個階段:第一個階段是特征字節(jié)過濾;第二個階段是校驗字節(jié)過濾;第三個階段是地址過濾,即判斷消息的目的地址與該解碼器設(shè)備的地址是否吻合。只有在這三個階段的過濾過程中均符合要求的消息才是有效命令,然后才開始對命令進行解析和執(zhí)行,因為是自動識別,因此R_Buf[0]中內(nèi)容每刷新一次就必須開始一次過濾過程。

       下面以8051系列兼容單片機為例,用Keil C51語言來描述窗體的形成以及過濾方法。整個過程都是在串口中斷服務(wù)程序中完成的。

                
              
 

       4 結(jié)論

       采用滑動窗和過濾器的方式可以自動識別不同的傳輸而無需通過硬件的方式進行協(xié)議設(shè)定,采用該方法編程簡單方便,對碼流的識別速度快、效率高、實際應(yīng)用表明沒有漏碼和誤碼現(xiàn)象發(fā)生,但是這種方法也有缺陷:一是只能識別那些每個消息的字節(jié)數(shù)確定的協(xié)議,而對那些消息長度不確定的協(xié)議不適合,因為滑動窗的大小是固定的,而過濾器的大小無法確定;二是需要自動識別協(xié)議的傳輸波特率都必須相同,否則無法正確識別,這是因為消息的內(nèi)容是可以自動識別的,而波特率卻不是。

 

[1] [2]  下一頁
  • 上一篇: 基于ARM核嵌入式微處理器的以太網(wǎng)應(yīng)用
  • 下一篇: KS8993型高性能交換電路及其應(yīng)用
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責(zé)信息內(nèi)容的真實性、準(zhǔn)確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1