APP下载

一种半双工通信数话同传功能的实现算法

2017-02-17北方联创通信有限公司贺晔晔

电子世界 2017年2期
关键词:轮询话音令牌

北方联创通信有限公司 贺晔晔

一种半双工通信数话同传功能的实现算法

北方联创通信有限公司 贺晔晔

本文主要通过文字描述及流程图的方式给读者讲述了一种在半双工信道上实现全双工通信的协议实现算法,该算法具有一定的实用性及通用性,适用于多种应用方式,能够应用于多种需要同时进行数据及话音通信且对实时性有一定要求的应用场景。

轮询令牌;主从节点;半双工总线;收发地址

0 引言

受传统传输线路及价格成本的影响,目前半双工通信仍有较大的应用市场,例如:军用电台、工业及民用对讲机等等,它们都是使用半双工通信方式进行工作的。如何充分利用现有的半双工通信机制,在保证通信成本及价格不变的基础上,实现半双工通信方式中的双向数据及话音通信改造,从而让用户感觉到自己在使用一个全双工的通信方式。这对于充分利用现有线路,节约用户通信成本,具有重要的意义。为此,本文提出了一种半双工到全双工方通信方式的协议处理方案及其实现方法。

1 系统连接关系示意图

本系统按以下连接关系示意图为例进行讲述。

图1 系统连接关系图

图1 所示中,各主、从节点分别通过RS-232异步串行接口接入半双工通信总线,主、从节点内部本身可定义为两个层次:分别为应用层及链路层,其中应用层为用户应用软件,面向用户提供接口,而链路层则为底层通信提供协议及链路支持。

2 算法描述

为在半双工信道上实现全双工通信,本文对各通信双方协议规程进行了如下规定:

主节点以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轮询令牌时,上层应用程序必须取得半双工总线的发送允许消息后才能发送一包数据,否则将数据缓存;如果从节点没有取得发话请求占用证实消息,则生成的话音包直接丢弃。

3 算法实现流程图

主、从节点算法实现的流程分别见图2、图3所示。

图2 主节点算法实现流程图

图3 从节点实现流程图

为配合该算法的顺利实现,上层应用需要做以下处理:

a.设置通信链路层支持的最大通信节点数;

b.设置本节点ID号,否则链路层不发送空闲包;

c.发送令牌占用释放消息;

d.若本节点占用轮询令牌,当有数据或话音发送时,以100ms为周期向半双工总线节点发送,无需等待报文发送使能消息;

e.若本节点不占用轮询令牌,必须等待报文发送使能消息才能发送一帧;

f.其余所有控制如(空闲包的收发、链路层数据管理)由半双工总线负责;默认节点号0为主节点,半双工总线动态识别节点成员的变化。

4 接口定义

主从节点到半双工总线为异步串行接口。传输数据格式:1位起始位,8位数据位,1位停止位,无校验位;通信速率:115200bps。

5 应用报文定义

应用报文格式如表1所示。

表1 应用报文格式定义

5.1 报文头

1字节,默认为0x5E。

5.2 收发地址

共2字节。报文头后紧跟的第1个字节表示发送地址,报文头后紧跟的第2个字节表示接收地址。其中发送地址取值:0~127,接收地址取值:0~127。接收地址和发送地址定义如下表2。

接收地址又称轮循地址,接收方根据该地址值进行匹配,当该地址与自身节点地址匹配时,链路层主动上报允许发送消息给应用层。从而使得应用层有机会发送本节点待发送的数据、话音和信令。

发送地址是发送方填充的自身节点地址。接收地址和发送地址定义如表2所示。

表2 收发地址编码含义

5.3 类型

1字节,格式定义见表3。

猜你喜欢

轮询话音令牌
称金块
基于路由和QoS令牌桶的集中式限速网关
基于等概率的ASON业务授权设计∗
动态令牌分配的TCSN多级令牌桶流量监管算法
话音叠加中实时混音算法的FPGA实现
依托站点状态的两级轮询控制系统时延特性分析
利用时间轮询方式操作DDR3实现多模式下数据重排
IP语音报头压缩设计与实现
基于网优平台的数据话音均衡分析
卫星通信终端话音接入车通的分析