串口数据通信协议的问题分析
- 格式:doc
- 大小:67.00 KB
- 文档页数:3
Modbus-RTU串口通信的故障排查及处理候录江;王勇;赵一炜【摘要】以串口Modbus-RTU协议为例,通过分析实际调试过程的数据,详细介绍故障排查方法,并提出处理措施及建议.【期刊名称】《河北电力技术》【年(卷),期】2011(030)0z1【总页数】3页(P38-40)【关键词】Modbus-RTU;通信;故障处理;消息帧;调试【作者】候录江;王勇;赵一炜【作者单位】河北张河湾蓄能发电有限责任公司,石家庄,050300;河北张河湾蓄能发电有限责任公司,石家庄,050300;河北张河湾蓄能发电有限责任公司,石家庄,050300【正文语种】中文【中图分类】TK3231 概述河北张河湾蓄能发电有限责任公司电站监控系统采用Modbus-RTU通信采集全厂大量的信息,这种方式不仅节约投资,并且在一定程度上节省了维护费用和时间。
监控系统采用RS485(四线)Modbus通信构架,而子系统多为RS485(两线)或RS232,因此需要通过串口模块在两者之间进行线制转换才能进行通信。
串口之间转换典型接线如图1所示,只要相应管脚正确接通即可通信。
目前PLC 厂家一般都配置了RS485(两线)或RS232端口,并且计算机一般配置了1~2个RS232串口通信端口,当用计算机接收查询/响应信息帧时一般通信距离不大于3 m,因此可以直接用电缆把通信终端(如PLC、交换机等)和计算机端口连接进行相关调试、维护。
如果使用笔记本电脑接收/发送帧,要具备以下条件。
a. 在计算机上要安装串口调试软件。
b. 启动串口调试软件后,要确认其与测试端口同样为Modbus-RTU传输模式,并按照测试端口串行通信参数(波特率、奇偶校验、数据位、停止位等)对调试软件进行相应配置。
c. 串口物理连接应按照图2所示,正确、可靠连接。
图1 串口之间转换典型接线示意图2 RS485(两线)和计算机RS232端口连接示意用A/B接线端和需要测试的串口相联,即可接收/发送帧,应注意A端是T-,B 端是T+,如果正负接反,则只能接收到一些错误的消息帧。
stm8 内部晶振串口 8位数据接收正常发送乱码一、概述在使用STM8单片机进行开发时,我们常常会遇到各种问题。
其中,内部晶振串口8位数据接收正常但发送乱码的问题是一个常见的问题。
本文将针对这个问题进行详细的分析和解决方案的提供。
二、问题描述在我们的开发环境中,STM8单片机的内部晶振工作正常,串口接收数据正常,但发送数据时却出现了乱码。
这通常意味着串口的通信协议或者发送数据的格式存在问题。
三、可能原因1. 波特率设置不正确;2. 校验位设置不正确;3. 串口引脚配置不正确;4. 发送数据的字节顺序不正确;5. 串口通信的硬件或软件故障。
四、解决方案1. 检查波特率设置:确保波特率设置正确,符合项目需求。
可以通过查看开发板的数据手册或者手册来确定正确的波特率。
2. 检查校验位设置:校验位通常有奇校验、偶校验、无校验三种方式。
确认是否选择了正确的校验位,这会影响数据的传输准确性。
3. 检查串口引脚配置:确保串口TX、RX引脚配置正确,并且与外接的串口模块连接正常。
同时,也要检查这些引脚的电压和阻抗是否满足要求。
4. 检查字节顺序:如果使用的是位反转的通信协议,那么需要确认发送和接收数据的字节顺序是否一致。
可以使用二进制反码的方式检查和确认字节顺序。
5. 诊断硬件和软件故障:使用串口调试工具进行通信测试,可以进一步诊断是否存在硬件或软件故障。
如果可能的话,检查串口模块的驱动程序和固件是否更新到最新版本。
6. 代码调试:检查和确认发送数据的代码部分,确保数据格式正确,没有遗漏或者错误的数据字段。
可以使用串口打印函数来调试发送的数据,以便发现问题所在。
7. 确认通信协议:如果使用的是第三方提供的通信协议,需要仔细阅读协议文档,确保理解并正确应用。
必要时,可以参考类似项目的代码或文档,以便更好地理解和应用该协议。
五、案例分析假设我们遇到的问题是由于波特率设置不正确导致的。
在STM8单片机中,正确的波特率通常需要根据晶振频率和项目需求进行计算和设置。
串口调试工具中的DTR和RTS是什么意思RS-232C接口定义(DB9)引脚定义符号1 载波检测 DCD(Data Carrier Detect 数据载波检测)2 接收数据 RXD(Received Data)3 发送数据 TXD(Transmit Data)4 数据终端准备好 DTR(Data Terminal Ready 数据终端准备好)5 信号地 SG(Signal Ground)6 数据准备好 DSR(Data Set Ready 数据准备好)7 请求发送 RTS(Request To Send 请求发送)8 清除发送 CTS(Clear To Send 清除发送)9 振铃提示 RI(Ring Indicator)串口大师右下方的几个指示灯DTR、RTS、DSR、CTS、RI、CD的含义?红表示什么,绿表示什么?绿表示完成,红表示错误。
DTR表示数据终端准备好RTS表示请求发送DSR表示数据准备好CTS表示清除发送RI表示振铃提示CD代表小型镭射盘串口DCD、DTR、DSR、RTS、CTS分别是什么意思?DCD(Data Carrier Detect 数据载波检测)DTR(Data Terminal Ready 数据终端准备好)DSR(Data Set Ready 数据准备好)RTS(Request To Send 请求发送)CTS(Clear To Send 清除发送)在这五个控制信号中,DTR和RTS是DTE设备(数据终端设备,在实际应用中就是路由器)发出的,DSR、CTS和DCD是DCE设备(数据电路终结设备,在实际中就是各种基带MODEM)发出的。
在数字电路中(如计算机),设备甲和设备乙交换信息(通讯),双方采用某个通讯规范(协议)来交换数据,它们的联络过程就叫“握手”,用来联络的信号就叫“握手信号”,单向联络通常用两根联络线:请求,应答,双向则四条。
RXD、TXD英文全称是什么?在原版英文资料中对RXD引脚的解释说是Serial data RXD pin for receive input andtransmit output,是既可做输入又作输出(I/O)。
232芯片接ttl侧的引脚和地短路问题摘要:本文主要探讨了232芯片接TTL侧的引脚和地短路问题,包括故障原因、诊断方法及解决方案。
一、引言232芯片(RS-232接口)是一种常用的串口通信协议,广泛应用于计算机与通信设备之间的数据通信。
然而,在实际应用中,RS-232接口容易出现引脚和地短路的问题,影响通信性能。
本文将针对这个问题进行分析,并提出相应的解决方案。
二、引脚和地短路问题原因1. 外部干扰:在RS-232通信过程中,外部环境中的电磁干扰可能导致引脚和地之间的信号耦合,从而引发短路现象。
2. 电源电压不稳定:当电源电压波动较大时,可能导致芯片内部电路出现异常,从而引发短路问题。
3. 设计不合理:电路设计中的布局不合理、布线不规范等问题也可能导致引脚和地之间的短路现象。
4. 电气参数不匹配:RS-232接口芯片与TTL接口电路之间的电气参数不匹配,可能导致信号传输不稳定,从而引发短路现象。
三、诊断方法1. 观察法:检查电路板上的焊接点、引脚之间的连接线等,看是否存在虚焊、短路等现象。
2. 信号测试法:通过示波器等仪器,观察信号在传输过程中的波形变化,以判断是否存在短路问题。
3. 阻抗测试法:使用万用表等测试工具,测量电路中关键节点的阻抗,以判断是否存在阻抗不匹配问题。
四、解决方案1. 设计优化:优化电路布局,减小引脚之间的距离,降低信号传输过程中的耦合效应。
2. 电源稳定:确保电源电压的稳定性,避免因电压波动导致的短路问题。
3. 参数匹配:根据实际应用需求,选择合适的RS-232接口芯片和TTL接口电路,确保电气参数匹配。
4.接地处理:合理地进行电路接地,以降低电磁干扰的影响。
续写内容如下:五、预防措施1. 严格筛选元器件:在采购元器件时,应选择质量可靠的产品,避免因元器件品质问题导致的电路短路。
2. 规范安装工艺:在安装过程中,应严格按照电路设计要求进行焊接、连接,确保引脚和地之间的连接稳固、可靠。
18.1 RS485通信实际上在RS485之前RS232就已经诞生,但是RS232有几处不足的地方:1、接口的信号电平值较高,达到十几V,容易损坏接口电路的芯片,而且和TTL电平不兼容,因此和单片机电路接起来的话必须加转换电路。
2、传输速率有局限,不可以过高,一般到几十Kb/s就到极限了。
3、接口使用信号线和GND与其他设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。
4、传输距离有限,最多只能通信几十米。
5、通信的时候只能两点之间进行通信,不能够实现多机联网通信。
针对RS232接口的不足,就不断出现了一些新的接口标准,RS485就是其中之一,他具备以下的特点:1、我们在讲A/D的时候,讲过差分信号输入的概念,同时也介绍了差分输入的好处,最大的优势是可以抑制共模干扰。
尤其工业现场的环境比较复杂,干扰比较多,所以通信如果采用的是差分方式,就可以有效的抑制共模干扰。
而RS485就是一种差分通信方式,它的通信线路是两根,通常用A和B或者D+和D-来表示。
逻辑“1”以两线之间的电压差为+(0.2~6)V表示,逻辑“0”以两线间的电压差为-(0.2~6)V来表示,是一种典型的差分通信。
2、RS485通信速度快,最大传输速度可以达到10Mb/s以上。
3、RS485内部的物理结构,采用的是平衡驱动器和差分接收器的组合,抗干扰能力也大大增加。
4、传输距离最远可以达到1200米左右,但是他的传输速率和传输距离是成反比的,只有在100Kb/s 以下的传输速度,才能达到最大的通信距离,如果需要传输更远距离可以使用中继。
5、可以在总线上进行联网实现多机通信,总线上允许挂多个收发器,从现有的RS485芯片来看,有可以挂32、64、128、256等不同个设备的驱动器。
RS485的接口非常简单,和RS232所使用的MAX232是类似的,只需要一个RS485转换器,就可以直接和我们单片机的UART串行接口连接起来,并且完全使用的是和UART一致的异步串行通信协议。
串⼝通讯TTL详解分析lRS-232-C是美国电⼦⼯业协会EIA(Electronic Industry Association)制定的⼀种串⾏物理接⼝标准。
采⽤150pF/m的通信电缆时,最⼤通信距离为15m;若每⽶电缆的电容量减⼩,通信距离可以增加。
传输距离短的另⼀原因是RS-2 32属单端信号传送,存在共地噪声和不能抑制共模⼲扰等问题,因此⼀般⽤于20m以内的通信。
RS-232C规定了⾃⼰的电⽓标准,由于它是在TTL电路之前研制的,所以它的电平不是+5 V和地,⽽是采⽤负逻辑,即逻辑“0”:+5 V~+15 V;逻辑“1”:-5 V~-15 V。
【TTL电平:逻辑“0:<0.4V;逻辑“1”:+3 V~+5 V 】因此,RS-232C不能和TTL电平直接相连,使⽤时必须进⾏电平转换,否则将使TTL电路烧坏,实际应⽤时必须注意!⼀种常⽤的电平转换电路是使⽤MAX232还可以使⽤如下电路:RS-232C虽然应⽤⼴泛,但因为推出较早,在现代通信系统中存在以下缺点:数据传输速率慢,传输距离短,未规定标准的连接器,接⼝处各信号间易产⽣串扰。
鉴于此,EIA制定了新的标准RS-485总线:在要求通信距离为⼏⼗⽶到上千⽶时,⼴泛采⽤RS-485 串⾏总线标准。
RS-485采⽤平衡发送和差分接收,因此具有抑制共模⼲扰的能⼒。
加上总线收发器具有⾼灵敏度,能检测低⾄200mV的电压,故传输信号能在千⽶以外得到恢复。
RS-485采⽤半双⼯⼯作⽅式,任何时候只能有⼀点处于发送状态,因此,发送电路须由使能信号加以控制。
RS-485⽤于多点互连时⾮常⽅便,可以省掉许多信号线。
应⽤RS-485 可以联⽹构成分布式系统,其允许最多并联32台驱动器和32台接收器。
RS232接⼝是1970年由美国电⼦⼯业协会(EIA)联合贝尔系统、调制解调器⼚家及计算机终端⽣产⼚家共同制定的⽤于串⾏通讯的标准。
它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串⾏⼆进制数据交换接⼝技术标准”该标准规定采⽤⼀个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。
串口协议分析串口通信是一种常见的数据传输方式,它通过串行通信接口将数据一位一位地传输。
串口通信协议则是规定了数据传输的格式、速率、校验等参数,以确保数据的可靠传输。
在嵌入式系统、传感器网络、工业控制等领域,串口通信协议被广泛应用。
本文将对串口协议进行分析,探讨其基本原理、常见类型及应用场景。
首先,串口通信协议通常包括数据帧格式、波特率、校验方式等内容。
数据帧格式包括起始位、数据位、停止位和校验位,它规定了数据的传输格式,以便接收端正确解析数据。
波特率是指每秒钟传输的比特数,常见的波特率有9600、19200、38400等,不同的波特率适用于不同的应用场景。
校验方式包括奇偶校验、偶校验和无校验,用于检测数据传输过程中是否出现错误。
其次,串口通信协议有多种类型,包括RS-232、RS-485、TTL等。
RS-232是最常见的串口通信协议,它适用于短距离通信,常用于连接计算机和外部设备。
RS-485是一种多点通信协议,适用于长距离通信和多设备通信,常用于工业控制系统。
TTL是一种逻辑电平串口通信协议,常用于单片机和传感器之间的通信。
此外,串口通信协议在各种领域都有广泛的应用。
在嵌入式系统中,串口通信协议常用于连接外部设备,如显示屏、键盘、鼠标等。
在传感器网络中,串口通信协议常用于传感器之间的数据传输。
在工业控制系统中,串口通信协议常用于PLC、HMI、传感器等设备之间的通信。
总之,串口通信协议是一种重要的数据传输方式,它规定了数据传输的格式、速率、校验等参数,保证了数据的可靠传输。
不同类型的串口通信协议适用于不同的应用场景,广泛应用于嵌入式系统、传感器网络、工业控制等领域。
希望本文的分析能够帮助读者更好地理解串口通信协议的原理和应用。
uart串口通信协议UART串口通信协议。
UART(Universal Asynchronous Receiver/Transmitter)是一种通用的异步串行通信接口,广泛应用于各种嵌入式系统和外设设备之间的通信。
在本文中,我们将介绍UART串口通信协议的基本原理、通信流程以及常见问题解决方法。
1. 基本原理。
UART串口通信是一种点对点的通信方式,由发送端和接收端组成。
通信的基本单位是一个字节(8位),包括起始位、数据位、校验位和停止位。
在通信开始之前,发送端和接收端必须约定好通信的波特率、数据位、校验位和停止位等参数,以确保通信的准确性和稳定性。
2. 通信流程。
UART串口通信的流程一般包括以下几个步骤:a. 发送端准备好要发送的数据,并将数据写入UART发送缓冲区。
b. UART发送端根据约定的参数,将数据以一定的波特率发送出去,包括起始位、数据位、校验位和停止位。
c. 数据经过传输介质(如串口线)传输到接收端。
d. UART接收端接收到数据后,将数据读取到接收缓冲区。
e. 接收端根据约定的参数,对接收到的数据进行解析和处理。
3. 常见问题解决方法。
在实际应用中,UART串口通信可能会遇到一些常见问题,如数据丢失、波特率不匹配、数据格式错误等。
针对这些问题,我们可以采取一些解决方法:a. 数据丢失,可以通过增加数据缓冲区的大小、提高处理数据的速度等方式来解决。
b. 波特率不匹配,发送端和接收端的波特率必须一致,否则会导致数据传输错误,可以通过修改通信参数来解决。
c. 数据格式错误,检查数据位、校验位和停止位等参数是否设置正确,确保发送端和接收端的参数一致。
总结。
通过本文的介绍,我们了解了UART串口通信协议的基本原理、通信流程以及常见问题解决方法。
在实际应用中,我们需要根据具体的需求和场景来合理选择通信参数,并严格遵守通信协议,以确保通信的稳定和可靠。
希望本文能对您有所帮助,谢谢阅读!。
串口成帧协议串口接收中的问题在电子系统中,最简单、最广泛的通信方式无疑是串口了,几乎所有与模块相关的产品,差不多都有串口的操作方式,如串口蓝牙模块、串口WIFI模块、串口ZigBee模块、串口语音模块等。
不仅是这样,在嵌入式开发中,很多时侯调试离不开串口,固件升级离不开串口,可见搞电子的人如果不能很好的操作串口,那就真是说不过去了。
串口的应用场合非常多,但是有一个残酷的现实摆在我们面前,那就是通信问题。
我们知道串口发送数据时是面向字节的,接收方接收数据时也是面向字节的,而在实际应用中,收发数据往往都是面向帧的,这样往往会对接收方接收数据造成一定的困难。
举个例子吧,一个单片机系统通过串口往PC机发送一帧100字节数据,但是PC机在调用系统API来接收数据时,往往不能一次性接收完100字节,可能第一次接收5字节,第二接收10字节……,虽然最后都能收到100字节。
如果单片机发送两帧数据,并且这两帧数据之间的时间间隔非常短,那PC就无法区别出两帧数据的边界了。
初入行的人或许会想到一些诸如增加标志位、判断时间等方法来解决这个问题,但不够严谨的。
所以我们有必要设计一个相对可靠一点的串口成帧的方法来解决接收难题。
也许搞技术的人,或多或少都听说过网络通信的OSI模型,标准的OSI模型有7层之多,像串口这种简单的通信,并不需要这么多层的实现,但是至少要实现链路层,才能解决数据组帧问题。
很多人之所以在接收串口数据时出现困难就是因为从物理层接收数据之后,直接提交给应用层,这样应用层必然是面向字节的,通信方式是如下形式:物理层-->> 应用层在这里,我们要做的是在物理层与应用层之间插入一个链路层,也即OSI模型的第二层,本文要描述的就是这个链路层的协议,通信方式会变成如下形式:物理层-->> 链路层-->> 应用层由于大部分人都习惯于直接操作串口,所以链路层只需要实现最基本的组帧功能即可,没有必要搞的那么复杂。
串口通信是一种常见的数据传输方式,在很多嵌入式系统和外设设备中都广泛应用。
然而,在实际的应用开发中,我们经常会遇到一些与串口通信相关的问题,如数据传输不稳定、通信速率不符等。
本文将针对串口通信中常见的问题进行分析,并提出相应的解决方法,希望能够帮助读者更好地应对串口通信中的各种挑战。
1. 数据传输不稳定的原因及解决方法数据传输不稳定是串口通信中常见的问题之一。
这种问题可能导致数据丢失、接收错误等影响系统稳定性和可靠性的后果。
数据传输不稳定的原因主要包括串口线路质量差、通信协议不匹配、接收方处理能力不足等。
针对这些原因,我们可以采取一些解决方法来提高数据传输的稳定性和可靠性。
对于串口线路质量差的情况,我们可以通过更换串口线路、加装屏蔽罩等方法来改善线路质量,从而提高数据传输的稳定性。
对于通信协议不匹配的情况,我们需要仔细检查通信双方的协议设置,确保它们完全匹配。
如果发现协议不匹配,需要及时修改配置参数,使其保持一致。
对于接收方处理能力不足的情况,我们可以考虑增加接收缓存的大小,提升接收方的处理能力,从而确保数据能够及时被接收和处理。
2. 通信速率不符的原因及解决方法通信速率不符是另一个常见的串口通信问题。
在实际应用中,由于设备之间的差异,通信速率往往会不一致,导致数据传输的异常。
通信速率不符的原因主要包括串口设置错误、设备硬件限制等。
在面对这种问题时,我们需要针对不同的原因采取相应的解决方法。
对于串口设置错误的情况,我们需要仔细检查通信双方的串口设置,确保它们的波特率、数据位、停止位、校验位等参数一致。
如果发现设置错误,需要及时修改配置,使其保持一致。
对于设备硬件限制的情况,我们需要了解设备的硬件规格,确保通信速率在设备规格范围内。
如果发现速率不符合硬件规格,需要及时调整至符合规格范围内的速率。
3. 数据处理不完整的原因及解决方法数据处理不完整是另一个常见的串口通信问题。
在实际应用中,由于各种原因,接收方经常会出现数据丢失、数据不完整等现象,影响数据的准确性和可靠性。
串口数据通信协议的问题分析
作者:田赛
来源:《科技视界》2013年第23期
【摘要】多个独立的控制模块完成它们之间通过串口通信完成复杂的控制过程,必须在通信过程中加入必要的通信协议,要完成特定的通信协议,就得有一定的同步机制。
本文针对串口通信过程中的帧同步问题给出了分析。
【关键词】串口数据通信协议;RS-232;帧同步
0 前言
串口通信协议用于完成双机互联程序的文件传输功能,简称SPCP。
设计思想基于帧传输方式,即在向串口发送数据时是一帧一帧地发送。
为了保证可靠传输,通过握手建立连接,在每一帧的传输中,采用发送/应答/重连/失败方式。
所谓通信协议是指通信双方的一种约定。
约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。
它属于OSI七层参考模型中的数据链路层。
由于RS-232标准只是一个接门标准,它规定了连接电缆、机械、电气特性、信号功能及传送过程等,因此,在OSI七层(包括应用层、表示层、会话层、传输层、网络层、数据链路层、物理层)参考模型中只代表了物理层(Physical Layer)和数据链路层(Data Link Layer),如果想实现数据的双向访问,使通信双方能够按规定的格式从串口发送数据,同时也能从接收到的数据中将需要的信息提取出来,就需要设计用户通信协议,以进行数据处理。
而用户层协议则是面向使用者的,这种用户层通信协议简单地讲就是对数据格式、同步方式、传送速度、传送步骤、数据校验、检纠错方式等问题做出统一规定,通信双方必须共同遵守。
1 数据成帧
在通信过程中的帧,按其功能的不同,分为数据帧、控制帧和短语帧三种。
数据帧用于传递用户所需传递的信息(文件),数据帧中的数据最终会被程序解读并重组;而控制帧则用于实现在通信过程中的控制信息的交换,以顺利实现数据帧的传输;短语帧用于文本消息的发送。
每一帧分为帧头和负载两个部分,其中帧头占6个字节,前2个字节用于区分三种帧,后4个字节对于不同帧的意义各不相同,负载长度不定。
表1 三种帧结构
1.1 数据帧
数据帧包括帧头、负载数据和校验和。
帧头长8个字节,其中,Source表示发出本帧的机器的编号;Destination表示本帧欲发送到的目的机的编号;Count表示负载数据的长度(字节
计数),Count则是程序运行中根据输出缓冲区大小而定的,最多不超过输出缓冲区的一半;Checksum表示将前面从Byte0到Byte5所有的数据进行校验和计算后得到的结果。
1.2 控制帧
控制帧与控制信号合作完成通信同步与控制任务,只有帧头,没有负载数据,帧头长8个字节,其中nPack表示本次传输共发送的帧数,以便让接收端控制进度。
当
nPack=Checksum=0时,表示本次传输结束,当接收端收到该帧时,不管是否已收到应接收的帧数,都将结束此次传输(记该帧为ABORT帧)。
在没有发生传输错误的情况下,一次传输只会出现两次控制帧,第一次在传输开始时(记为控制首帧),第二次则在传输结束时出现。
1.3 短语帧
短语帧的组成与数据帧十分相似,前两字节分别为0x01和0x00,其后的字节则用于承载所要发送的文本数据,短语帧的最后两个字节仍然为对本帧前面所有字节的校验和计算后的值。
应用程序发送来的数据作为一个流按协议进行分帧,切割后为每帧加上帧头和校验和进行发送;在接收端,分帧的数据去掉帧头后存入文件缓冲区,接收完成后写入磁盘。
2 数据传输方式
在数据传输时,主要有三种方案可供选择,即有确认的面向连接的服务;有确认的无连接的服务;无确认的无连接服务。
有确认的面向连接服务在源机器与目的机器在传递任何数据之前,都先建立一条连接。
在这条连接上所发送的每一帧都被编上号,数据链路层保证所发送的每一帧都确实已收到。
与此同时,它保证每帧只收到一次,且所有的帧都是按正确的顺序收到的,但是这种连接方式系统开销较大。
大多数广域网的通信子网的数据链路层采用面向连接确认服务。
无确认的无连接服务是源机器向目的机器发送独立的帧,而目的机器对收到的帧不作确认。
事先没有建立连接,事后也不存在释放。
如果由于线路上的原因造成某一帧的数据丢失,则数据链路层并不会检测到这样的丢失帧,也不会恢复这些帧。
错误率较高。
当然在错误率很低,或者对数据的完整性要求不高的情况下(如话音数据),这样的服务还是非常有用的,因为这样简单的错误可以交给OSI上面的各层来恢复。
如大多数局域网在数据链路层所采用的服务也是无确认的无连接服务。
有确认的无连接服务是对无确认的无连接服务的一种改进。
当提供这种服务时,仍然不建立连接,但是所发送的每一帧都进行单独确认。
以这种方式,发送方就会知道帧是否安全地到达,如果在某个确定的时间间隔内,帧没有到达,就必须重新发送此帧。
这类服务主要用于不可靠信道,如无线通信系统。
在发送数据前,发送方将数据进行分帧包装,然后按发送请求、数据传输、发送完成的步骤进行通信。
接收端收到请求信号后,向用户询问是否接收。
用户确认接收后,接收端发出“请求发送文件”信号。
发送端收到“请求发送文件”信号后,开始发送数据。
首先由发送端发出
第一帧数据,然后等待反馈。
接收端收到一帧数据后,若帧长度校验和错误则发出“请求重新发送帧数据”信号,如果正确,则发出“请求发送下一帧数据”信号。
若发送端收到“请求重新发送帧数据”信号,则重新发送先前发送的帧数据。
若发送端收到“请求发送下一帧数据”信号,则首先检查已经发出的一帧数据是否是最后一帧,如果是则发出“发送完毕”信号,否则,发送下一帧数据。
重复整个过程。
当发送方发出“发送完毕”信号后,关闭文件,并提示用户“发送完毕”。
接收端受到“发送完毕”信号后,则把文件缓冲区中存储的数据写入磁盘,然后关闭文件,并向用户提示“接收完毕”。
3 结束语
从上面的分析可以看出,基于有确认的无连接服务的串口通信帧同步方法是本文中提出的三种帧方法中最优的,结构清晰且系统资源利用率高。
串口数据传输时在每一帧都采用了发送/应答/重连/失败的方式进行。
克服了数据帧传输在RS-232接口中低速率、无线信道不可靠性以及整个通信系统的开销等制约因素。
需要指出的是本协议仍有一些不完善的地方,比如安全性没有考虑等,这些不足都有待于以后进一步的优化。
【参考文献】
[1]陈启美,李嘉.现代数据通信教程[M].南京:南京大学出版社,2000,3.
[2]王达.网络工程师必读:网络工程基础[M].北京:电子工业出版社,2006,7.
[责任编辑:杨扬]。