北方聯創通信有限公司 賀曄曄
一種半雙工通信數話同傳功能的實現算法
北方聯創通信有限公司 賀曄曄
本文主要通過文字描述及流程圖的方式給讀者講述了一種在半雙工信道上實現全雙工通信的協議實現算法,該算法具有一定的實用性及通用性,適用于多種應用方式,能夠應用于多種需要同時進行數據及話音通信且對實時性有一定要求的應用場景。
輪詢令牌;主從節點;半雙工總線;收發地址
受傳統傳輸線路及價格成本的影響,目前半雙工通信仍有較大的應用市場,例如:軍用電臺、工業及民用對講機等等,它們都是使用半雙工通信方式進行工作的。如何充分利用現有的半雙工通信機制,在保證通信成本及價格不變的基礎上,實現半雙工通信方式中的雙向數據及話音通信改造,從而讓用戶感覺到自己在使用一個全雙工的通信方式。這對于充分利用現有線路,節約用戶通信成本,具有重要的意義。為此,本文提出了一種半雙工到全雙工方通信方式的協議處理方案及其實現方法。
本系統按以下連接關系示意圖為例進行講述。

圖1 系統連接關系圖
圖1 所示中,各主、從節點分別通過RS-232異步串行接口接入半雙工通信總線,主、從節點內部本身可定義為兩個層次:分別為應用層及鏈路層,其中應用層為用戶應用軟件,面向用戶提供接口,而鏈路層則為底層通信提供協議及鏈路支持。
為在半雙工信道上實現全雙工通信,本文對各通信雙方協議規程進行了如下規定:
主節點以100ms為周期定時發送數據包給從節點(簡稱:100ms輪詢令牌),地址從1到N周而復始(N參數在上電后設置好),主節點在應用層無數據發送時由鏈路層自動發送空閑包,否則,鏈路層接收應用層的信令包(為實現雙方話音通信的建立所進行必要的信令交互)、數話同傳包(即一個報文中包含數據信息及話音信息)或純數據包,通過線路發送出去(同時通知應用層當前鏈路層處于忙狀態);從節點在收到主節點信令包、數話同傳包、或純數據包后根據自身情況發送信令包、數話同傳包或純數據包或空閑包。
某節點若要發送話音,必須先發送發話請求消息并等待發話占用證實消息(即占用令牌),某節點得到令牌后由從節點切換成主節點(原來的主節點接收到發話請求消息后,則發送發話占用證實消息,并將自己由主節點切換成從節點),系統同一時刻只允許一個節點占用數據發送令牌。以下對算法的各種情況進行分析:
2.1 系統中沒有數據或話音發送
主節點以100ms為周期發送空閑包給從節點,其中空閑包中的接收地址從1至N遞增,某節點地址與報文的接收地址匹配后,回發空閑包;如果不匹配則不予響應。
2.2 主節點需要發送數據,從節點也需要發送數據
主節點以100ms為周期發送數據包給從節點,其中數據包中的接收地址從1至N遞增,從節點接收到數據包后,如果某節點地址與報文的接收地址匹配,若從節點有數據需要回發數據給主節點,在匹配地址成功后回發自身數據;否則不回發數據。
2.3 當主節點需要發送話音和數據,其它節點也需要發送話音和數據
主節點以100ms為周期發送數話同傳包給從節點,其中數話同傳包中的接收地址從1至N遞增,從節點接收到數據包后,如果某節點地址與報文的接收地址匹配,若從節點需要回發數據或話音給主節點,在匹配地址成功后回發數據或話音;否則不回發數據或話音。
2.4 從節點需要發送話音和數據,其它節點需要發送數據
從節點發送發話請求信令,獲得應答后獲得100ms輪詢令牌,以100ms為周期發送數話同傳包,地址從0至N遞增(跳過自身地址),此時主節點的100ms輪詢令牌喪失,同其它節點一樣被動響應數話同傳包。當從節點釋放發話請求后,100ms輪詢令牌重新歸主節點所有。如果主節點要進行發話,發送發話占用消息,則從節點無條件釋放發話權(即主節點具有最高優先級);如果這時其它從節點進行發話請求則不予響應。
2.5 節點數據發送規則
當主、從節點獲得100ms輪詢令牌時,上層應用程序定時在數據包中插入話音和數據,將數據通過RS-232串口發往半雙工總線,不需做流控處理;當主、從節點喪失100ms輪詢令牌時,上層應用程序必須取得半雙工總線的發送允許消息后才能發送一包數據,否則將數據緩存;如果從節點沒有取得發話請求占用證實消息,則生成的話音包直接丟棄。
主、從節點算法實現的流程分別見圖2、圖3所示。

圖2 主節點算法實現流程圖

圖3 從節點實現流程圖
為配合該算法的順利實現,上層應用需要做以下處理:
a.設置通信鏈路層支持的最大通信節點數;
b.設置本節點ID號,否則鏈路層不發送空閑包;
c.發送令牌占用釋放消息;
d.若本節點占用輪詢令牌,當有數據或話音發送時,以100ms為周期向半雙工總線節點發送,無需等待報文發送使能消息;
e.若本節點不占用輪詢令牌,必須等待報文發送使能消息才能發送一幀;
f.其余所有控制如(空閑包的收發、鏈路層數據管理)由半雙工總線負責;默認節點號0為主節點,半雙工總線動態識別節點成員的變化。
主從節點到半雙工總線為異步串行接口。傳輸數據格式:1位起始位,8位數據位,1位停止位,無校驗位;通信速率:115200bps。
應用報文格式如表1所示。

表1 應用報文格式定義
5.1 報文頭
1字節,默認為0x5E。
5.2 收發地址
共2字節。報文頭后緊跟的第1個字節表示發送地址,報文頭后緊跟的第2個字節表示接收地址。其中發送地址取值:0~127,接收地址取值:0~127。接收地址和發送地址定義如下表2。
接收地址又稱輪循地址,接收方根據該地址值進行匹配,當該地址與自身節點地址匹配時,鏈路層主動上報允許發送消息給應用層。從而使得應用層有機會發送本節點待發送的數據、話音和信令。
發送地址是發送方填充的自身節點地址。接收地址和發送地址定義如表2所示。

表2 收發地址編碼含義
5.3 類型
1字節,格式定義見表3。