0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

实现高效通信数据处理的串行通信协议的设计

电子设计 来源:郭婷 作者:电子设计 2019-01-11 09:06 次阅读

一、串行通信介绍

1、串行通信概述

串行通信是将数据分成若干二进制位(bit),然后通过一条线路或一个通信信道,按照规定的规程逐位依次进行传输,实现计算机与计算机或计算机与外部设备之间的通信(数据交换)。

在通信领域内,有两种数据通信方式:并行通信和串行通信。随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。

串行通信具有占用硬件资源少、可大幅度降低通信线路成本、简化通信设备、应用灵活、易维护等诸多优点,在工业控制、电力通信、智能仪表等领域得到了广泛应用。

2、串行通信特点

数据在单条一位宽的传输线上,一比特接一比特地按顺序传送的方式称为串行通信。

一位接一位地顺序传送。这样一个字节的数据要分8次由低位到高位按顺序一位位地传送。由此可见,串行通信的特点如下:

(1)节省传输线,这是显而易见的。尤其是在远程通信时,此特点尤为重要。这也是串行通信的主要优点。

(2)数据传送效率低。与并行通信比,这也这是显而易见的。这也是串行通信的主要缺点。

例如:传送一个字节,并行通信只需要1T的时间,而串行通信至少需要8T的时间。 由此可见,串行通信适合于远距离传送,可以从几米到数千公里。对于长距离、低速率的通信,串行通信往往是唯一的选择。并行通信适合于短距离、高速率的数据传送,通常传输距离小于30米。特别值得一提的是,现成的公共电话网是通用的长距离通信介质,它虽然是为传输声音信号设计的,但利用调制解调技术,可使现成的公共电话网系统为串行数据通信提供方便、实用的通信线路。

3、串行通信方式

EIA-RS232、EIA-RS485电流环、CAN等串行通信方式是通信领域中应用广泛的串行接口。EIA-RS232是全双工的通信模式,可保证短距离点对点的高速传输,EIA-RS485实现了较长距离下的多点互联通信。CAN属于现场总线的范畴,采用了多主机制,改善了在集散控制系统下的主从通信模式。

随着应用需求的复杂化,对串行通信的性能、通信效率的提升需求越来越明显。如何制定一套切实可行、简单易用,又能大幅度提高串行通信效率的通信协议;如何在PC端、嵌入式系统端构建一个高效的串行数据处理的应用程序,是串行通信协议中等待解决的问题。本文将以加油站信息管理系统为例,介绍串行通信协议的制定以及高效通信数据处理的实现。

二、串行通信协议的设计

1、系统总体结构

实现高效通信数据处理的串行通信协议的设计

加油站信息管理系统的结构如图1所示,每台加油机为一个应用节点(即图1中的控制点),通过半双工RS-485总线连接至通信控制器,在RS-485网络中,通信控制器为主机,各加油机为从机,构成一个主从通信的网络架构。在多种串行接口标准中,RS-485接口结构简单、通信速率高、传输距离远、使用传输线较少,长距离通信较经济,在集散式控制装置中得到了广泛应用。RS-485采用差分电平传输,只需2根信号线,即可以方便地增加控制节点数目。

通信控制器通过全双工RS-232总线与管理PC进行数据交互,管理PC和通信控制器层面的数据交互,保证了实时性和高效性,采用互为主机的通信方式,以此构成集散控制系统。

2、通信协议格式的定义

(1)协议帧格式

1)主机(Master)下发数据帧格式

起始标志数据(5AH+A5H)+长度(从命令字开始到校验和为止的字节数)+命令字HIGH+命令字LOW+机号+参数+一个字节校验和(从命令字开始到校验码前一个字节的逻辑“异或”和)。

2)从机(Slave)上传数据帧格式

起始标志数据(9BH+B9H)+长度(从命令字开始到校验和为止的字节数)+命令字HIGH+命令字LOW+机号+参数+一个字节校验和(从命令字开始到校验码前一个字节的逻辑“异或”和)。

(2)协议帧解释

起始标志数据:采用1个字节或多字节作为帧起始标志,该部分的字节定义应尽量与帧数据的其他部分完全不一样。接收方在接收数据时总是先寻找帧头。帧头的排他性将有利于提高各通信节点的接收效率。

长度:应尽量采用短帧,以避免各种干扰因素对通信效率的影响。可根据实际应用情况,在“长度”后增加“长度反码”或“长度补码”等校验数据对长度进行更为严格的校验。

命令字:根据实际通信应用需求,可应用1~2字节的通信命令字。

机号:该帧所需接收方的地址识别号,可根据实际应用需求对其进行修改,如增加源地址、目的地址等。

参数:该帧的应用数据,针对不同的应用,考虑到数据的安全性,可对该部分的数据进行加密处理。

校验和:该帧的数据校验,可根据应用需求选择不同的校验方式。

三、高效串行通信方式的实现

1、PC端软件发送数据的处理机制

PC端的软件首先判断最高优先级的命令字是否需要发送,如果需要,则进入该命令字的发送流程;如果没有,接着判断次高级优先级的命令字是否需要发送,如果需要,则进入发送流程。

根据命令字的优先级由高到低的顺序依次判断要发送的命令字,当没有通信数据命令字发送时,PC端软件将发送轮询命令字。

此外,在发送完一帧数据后,PC端软件会开启接收超时定时器T,如果PC端软件在超时时间内收到应答命令数据帧则进入相应数据处理流程,同时关闭接收超时定时器T;如果系统定时时间内未收到应答命令数据帧,则重新发送该命令字的帧数据,并记录发送该命令字的次数,当发送命令字的帧超过10次未收到相应应答命令,即视为该命令字和控制点的通信失败,将通信流程重新调整到轮询命令字状态下。

2、PC端软件接收数据的处理机制

在PC软件端的接收程序部分,按字节来处理接收到的每帧数据,而不是按帧来处理。为此,应用程序将串口的接收中断的响应字节阈值设为1,即当接收缓冲区有多于1个数据便进入接收数据处理流程。

当开始接收一帧数据时,首先找到帧头,其次应根据接收数据缓冲区中的有效数据长度和帧长度的关系来分类处理。因为Windows对串口的封装(开发平台为VC++6.0),使得应用程序无法来设定软件,根据接收数据缓冲区的数据阈值来响应串行中断。所以在通信过程中当PC产生串行中断时,应根据串行中断当前数据接收缓冲区的有效数据长度来做分类处理。

首先,把接收缓冲区ReceBuffer[M]的数据取出来,放到待处理缓冲区DealBuffer[M]中(为了防止该帧数据还没有处理完毕,未处理的数据会被新来的数据覆盖掉,造成系统的数据丢失)。其次,要确定接收数据的帧头,方法就是逐字节查找,一般帧头在接收缓冲区中出现的位置有3种情况,如图2所示,每一个方格代表一个字节。

如果帧头就是接收缓冲区的前两个字节(如图2(a)所示),则按照通信协议依次处理剩下的接收缓冲区的有效数据。用全局变量表示接收缓冲区处理步骤S,正确接收到2个帧头后P赋值为2.

如果帧头在接收数据缓冲区的不连续字节内(如图2(b)所示),应把从第2个帧头开始的有效数据移到第1个帧头后,如图3所示,使得待处理缓冲区的数据形成连续的一帧数据来继续下一步的处理。

如果帧头分散在两个数据帧中(如图2(c)所示),即PC响应串行中断第1次接收到第1个帧头,第2次响应或者第n次响应串行中断接收到第2个帧头。当接收到第1个帧头后,S赋值为1.当下次响应串行中断时,判断S的值,如果是1,表示第1个帧头已经找到,开始在接收到的帧数据中寻找第2个帧头;如果找到,S赋值为2,并把从第2个帧头开始的有效数据移到第1个帧头后,使待处理缓冲区的数据形成连续的一帧数据来处理。

判断命令字是否为协议中规定的合法命令字。如果是,将根据命令字所对应的长度来判断该帧数据的合法性,因为在制定通信协议时,规定了特定命令字所对应的数据长度,这两点约束条件可以保证接收数据的合法性,从而提高了系统的稳定性。如果命令字和其对应的长度值合法则将S赋值为3,进入下一步的数据处理步骤。

最后,关闭发送定时器,防止处理的过程中有新的接收数据影响处理有效数据的过程。处理完毕,打开发送定时器,根据处理过程中标志位的改变情况继续与控制点进行相应的数据通信。在处理接收数据的步骤中,如果任何一个步骤出现非法数据,则清空ReceBuffer[M]和DealBuffer[M],认为该帧数据传输出错,丢弃该帧数据,并初始化接收变量,重新设定接收超时定时器,接收下一次通信数据。

四、小结

本文通过完整的串行通信协议的设计,在PC软件发送端始终处于通信状态,能以很快的速度响应系统协议规定的命令字及其数据的发送。同时,在PC软件接收端,采用逐字节处理的方式,通过设定全局变量来确定处理接收数据帧的步骤,细化了处理接收数据的过程,保证了数据高效可靠的传输。本系统已经应用在上海宝钢集团加油站信息管理系统中,实验结果证明,此协议的通信数据准确、通信效率高效可靠、自适应能力强,具有在相关领域推广的价值和意义。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7352

    浏览量

    87625
  • 串行通信
    +关注

    关注

    4

    文章

    562

    浏览量

    35230
  • 数据处理
    +关注

    关注

    0

    文章

    571

    浏览量

    28505
收藏 人收藏

    评论

    相关推荐

    Modbus​串行通信协议概述

    Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域
    发表于 09-02 10:58 1331次阅读

    Minifly的通信协议是什么?

    通信协议是什么?是不是我协议没理解清楚?还是原子的飞控51822端做了数据处理(添加或修改了遥控器发来的包)后才通过串口发送给411的?
    发表于 08-05 02:20

    CAN串行通信协议

    一.CAN简介CAN是ControllerArea Network的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求
    发表于 08-19 08:44

    通信协议是指什么?串行通信和并行通信的优缺点分别有哪些

    通信协议是指什么?串行通信和并行通信的优缺点分别有哪些?串行通信
    发表于 12-10 06:36

    如何实现基础通信协议的设计?

    常见的通信协议格式是什么?如何实现基础通信协议的设计?
    发表于 02-14 07:35

    串行通信数据的传送方向是怎样的?具体的通信协议有哪几种呢

    所谓异步通信是指什么?所谓同步通信是指什么?串行通信数据的传送方向是怎样的?具体的通信协议有哪几
    发表于 02-16 07:57

    高效串行通信协议的制定及实现

    探讨了一种基于串行通信的简单、高效通信协议制定方法。实验结果证明,该协议有效提高了串行
    发表于 12-03 17:22 18次下载
    <b class='flag-5'>高效</b>的<b class='flag-5'>串行</b><b class='flag-5'>通信协议</b>的制定及<b class='flag-5'>实现</b>

    一种高效串行通信协议的制定及实现

    一种高效串行通信协议的制定及实现
    发表于 11-09 18:08 56次下载

    CAN总线通信协议的分析和实现 CAN总线通信协议以及其实现方法

    CAN总线通信协议的分析和实现 CAN总线通信协议以及其实现方法
    发表于 09-04 08:45 40次下载
    CAN总线<b class='flag-5'>通信协议</b>的分析和<b class='flag-5'>实现</b> CAN总线<b class='flag-5'>通信协议</b>以及其<b class='flag-5'>实现</b>方法

    基于嵌入式环境的串行通信协议设计

    根线,即可实现简单的全双工通信通信协议是两端设备数据交换的语言,是通信可靠性的保证,在保证功能的前提下,
    发表于 10-14 16:29 1377次阅读
    基于嵌入式环境的<b class='flag-5'>串行</b>帧<b class='flag-5'>通信协议</b>设计

    一个简单的基础通信协议的设计与实现

    一个简单的基础通信协议的设计与实现一种常见的通信协议格式搭建串口收发环境配置STM32CubeMX添加USART部分代码通信协议实现不同设
    发表于 12-14 18:38 10次下载
    一个简单的基础<b class='flag-5'>通信协议</b>的设计与<b class='flag-5'>实现</b>

    通信协议的概念

    通信协议是指在通信过程中,为了使得不同设备之间进行有效的数据交换,所约定的一整套规则和标准。通信协议中定义了通信双方的接口、
    发表于 05-06 14:32 1954次阅读

    高速串行通信协议详解

    随着信息技术的飞速发展,数据通信已成为现代社会不可或缺的一部分。在数据通信中,串行通信作为一种基本的通信方式,以其独特的优势在各个领域得到了
    的头像 发表于 05-16 16:45 708次阅读

    简单认识UART串行通信协议

    数据通信,特别是在嵌入式系统、计算机外设以及微控制器等场景中。本文将对UART串行通信协议进行详细的介绍,包括其基本原理、工作方式、参数设置、错误检测与纠正以及应用实例等方面。
    的头像 发表于 05-27 16:09 1890次阅读

    高速串行通信协议都有哪些

    高速串行通信协议是现代电子设备中用于数据传输的关键技术。这些协议在各种应用中发挥着重要作用,如计算机、移动设备、网络设备等。以下是一些常见的高速串行
    的头像 发表于 05-31 16:11 943次阅读