EDN China > 技术文章 > 通信 > 网络传输与交换 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 串行通信中滑动窗过滤器的多协议自动识别

来源:中电网/湖北咸宁学院 张红兵?? 2006年08月19日 ?? 收藏0

?????? 在室内型和室外型云台及一体化智能高速球型摄像机中,解码器通过RS-485总线接收来自监控中心由控制键盘或DVR发送的命令,对命令进行解析后发出相应的控制指令,从而控制云台的上下左右运动以及摄像机的光圈、聚焦和变倍等调整动作。

?????? 1 通信协议介绍

?????? 一个控制命令就是一个通过串行总线传输的消息,消息由多个字节组成,每个字节的传输格式一般都是1个起始位、8个数据位、1个停止位、没有奇偶校验位。下面介绍消息的基本结构,第一个字节往往是同步字节或称特征字节,可以是AAH或55H等,它的作为是让总线上的每个终端作好接收后续字节的准备。第二个字节是地址,即指明接收该命令的终端地址,响应该消息的可能是一个,也可能是一组或全部的终端。每个终端有自己独一无二的地址信息,只有当接收到的信息中的地址与自己的地址吻合时,才执行该命令,因为地址字节只有8位,因此同一系统中最多只能识别256个不同的终端。在串行通信中,除了单个字节的传输有时需要奇偶校验外,接收到的消息还要做整体的数据块校验,通常采取的是将数据块进行简单的累加或者是异或后得到一个校验字节(Check-Byte),将该校验字节附加在消息的最后发出。终端接收后,首先要对接收到的数据块进行校验以判断数据是否可靠。表1是PELCO-D协议的一个完整消息的结构。

????????????????? 消息结构
????????? 消息结构
?
?

?????? 不同的公司采用不同的协议,消息的结构完全不同。表2显示4种常见传输协议的基本格式。

?????? 由于协议之间完全不兼容,因此云台解码器往往只使用其中一种传输协议,造成产品的适用范围不广,一种兼容多种协议的解决方法是采用硬件设定的方法,即在解码器上设计一个多位拨码开关,当使用不同协议时,拨码开关的选择状态不同,单片机读取该设定参数后就知道当前是什么样的传输协议,然后采取相应的解码措施,在串行口中,当接收到对应协议中每个消息的特征字节时,就开始接收相应长度的后续字节,否则放弃该字节不予判断,这样设计的缺陷在于,首先必须非常明确当前的传输协议,其次是当更换不同的协议时必须重新设定拔码开关的状态,在使用过程中不灵活不方便,而且这种方法容易造成误判,因为一种协议中的特征字节也很可能会在其他协议的命令中以非特征字节的形式出现。仅仅依靠特征字节来决定是否接收后续字节是很容易丢码或产生误码的。

?????? 2 滑动窗和过滤器


?????? 本文提出采用滑动窗过滤器的方式进行多协议自动识别,而不会造成误码或漏码。在单片机的RAM中建立一个数组R_Buf[n],他是对串口数据流进行过滤的窗口,窗体的大小即数组的大小n,取各种协议中的一个消息所包含的字节最多的长度,例如取SAMSUNG协议的长度为9。串口接收到的任何一个字节都按照先入先出的顺序通过该窗口,而不论该字节是否是特征字节,串口接收的数据码流依次流经该数组,因此该数组像一个窗口。始终保留码流中的最后一幅数据的图像,如图1所示。

???? 滑动窗和过滤器

?????? 各种协议以其不同的特征字节、消息长度和校验字节的规律而构成过滤器。每从串口中接收到一个新的字节,滑动窗的内容就刷新一次,同时将窗口内容与过滤器中的数据结构对比一次,这样做得好处在于,接收到的串行数据,无论其是什么协议,什么长度以及什么特征字节,都会被过滤一次,滑动窗在数据码流中从头往后搜索,不放过任何一个符合某个协议的有效消息。只要落入滑动窗口内的那些数据符合任何一种协议的数据格式,该数据就被认为是一个有效的消息,因此不会产生漏码或误码的现象。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

滑动窗? 多协议? 自动识别? 通信?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈