通信原理差错控制编码 [张力检测系统中差错控制编码的原理与实现]

  摘要:在钢丝绳张力无线检测系统数据传输过程中,由于受传输信道介质和外界环境干扰影响,导致数据传输错误。根据差错控制编码的基本原理,本文介绍一种能检测两位错误并纠正一位错误的差错控制技术,并在Keil C51中进行C语言程序设计实现此算法。
  关键词:张力检测;编码;译码;汉明码;KeilC51
  中图分类号:TP274 文献标识码:A
  
  随着现代通信技术和计算机技术的高速发展,无线数字通信的应用越来越广泛。钢丝绳张力检测系统就是一个很好的例子。此系统将数字无线通信、测量和计算机技术结合在一起,其功能是将电梯、缆车或提升机钢丝绳张力检测信息通过测力传感器转换成数字信号, 通过数据采集处理与移动数据通信发射装置,在接收端经过数据接收与数据处理等装置,对原始数据进行处理、分析和计算,输出人们想要的结果,并作出相应的判断与控制。使用该系统,可为提升机安全、经济地运行提供重要保证,从而大大地提高提升系统可靠性,减少事故,防止人员伤亡。
  
  1 编译码算法讨论
  
  1.1 编码原理
  汉明码就是在一组代码中加入一定数量的监督码元。若某个信息位错,引起几组奇偶校验结果均出错,由此根据奇偶组的检错,确定误码信息位及误码性质。
  一般说来,若码长为n,信息位数为k,则监督位数�r=n-k�。编码效率为k/n。如果希望用r个监督位构造出r个监督关系式来指示一位错码中的n种可能位置,则要求:
  1.2 设计思想
  在提升机钢丝绳张力检测系统中需要同时检测好几根钢丝绳的张力均衡情况,因此在传送数据的时候需要将这几路信号连续传送出去。在测力传感器将检测信息转换成数字信号后,钢丝绳张力无线检测系统上位机用来对这些数字信号进行编码。在数据接收端,下位机则用来进行译码取出有效数据。
  假定数据块长度为8个字节,发送前将高四位和低四位取出分别进行编码再进行发送(见图1)。在接收端,同编码一样,译码也是分开进行:接收到16位数据后,分别取出高八位和低八位进行译码,并提取有用信息,即信息位,得到编码前的原始数据。
  1.2.1 编码设计
  由于单片机串口串行发送数据一般都是8 位数据位,所以根据汉明码不等式,需要4 位监督位,即 r = 4 ,用s3 s2 s1 s0 表示四个监督关系式中的校正子,信息码位k = 4。这样就构成(8 ,4) 汉明码,此编码效率为50%。其构成见表1 所示。这里用a7 a6 a5 a4 a3 a2 a1 a0 表示8 个码元,s0 s1 s2 s3 表示四个监督关系式中的校正子。则s0 s1 s2 的值与错码位置的对应关系可以规定如表2 所示(当然我们可以规定成另外一种对应关系)。s3的值在下面1.2.2译码设计这一节中确定。
  由表1知,发送编码时,按下式决定监督位
  当s3为0时表示没有错码或者有两个错码
  当s3为1时表示存在一个错码
  现根据s3s2s1s0的取值进行错码分析从而进行检测和纠正
  讨论:
  (1)s3=0
  当s2s1s0不为000 (即a1,a2………a7中有一个错码)
  当s2s1s0为000(即a1,a2………a7中没有错码)
  没有错码
  (2)s3=1
  综合以上讨论情况得出此种编码方式可以满足纠正一个错码检测两个错码的要求。下面进一步讨论在Keil C51进行C语言编程实现。
  
  2 软件实现
  
  上述设计思想可以通过一定的数字逻辑器件来实现,将其运用于串行数据通信中,可提高数据的可靠性,并且编译码速度也较快。但是这需要一定的硬件电路来支持,因此也就增加了设备的成本和复杂性。下面叙述的用软件实现的方法,能够在不增加任何硬件的情况下,完成错码的纠正和检测,从而也更好地改善了传输系统的性能。
  软件实现的基本思想:先构造一个编码表,因此数据的编码可以通过查表来实现,具体流程图见图2。在数据接收端,当一数据块接收完毕,取出高8位和低8位,通过计算校正因子,判断接收数据有无错误,若有一个错误,则通过表2确定错码位置,然后用取反指令即可。若有两个或以上错误,则重新发送数据。接收程序流程图见图3。
  MCS-51系列单片机在串行数据传输过程中用软件实现流程如图2~图4所示。为叙述方便,假定A机发送,B机接收。在A机开始发送时,先送一个“AA”信号,B机收到后回答一个“BB”,表示同意接收。当A机收到“BB”后,开始发送编码后的数据信息,直到全部数据信息发送完毕。接收程序与此对应,B机首先和A机联络,然后接收数据,待全部数据接收完毕,再对接收的数据进行译码,完成数据位错码的检测和纠正,当检测到两个或两个以上错码时,向A机回送“CC”,重新接收数据块长度。
  在实时的,动态的单片机级的通信中要有快速的算法。因为在动态中位与位的时距t往往只有几十微秒,以9600b/s的传输速度为例,t=104微秒。在这104微秒中要完成译码过程,否则,现有的码未检测完毕,下一个码已经到了。在Keil C51中运行上述程序,运行时间仅为几十微秒,速度较快,可以满足要求。
  至此,整个检测误码纠正误码过程结束。
  
  3 结语
  
   单片机之间通过无线方式进行数据通信,由于工业现场的各种干扰,使得串行数据传输经常出现误码,从而影响整个提升机钢丝绳张力检测系统的可靠性。本文结合汉明码和奇偶校验码编码思想,构造了一种纠正一位错码检测两位错码的编码算法。通过软件实现提高了整个传输系统的性价比。
  
  参考文献
  [1]樊昌信. 通信原理[M]. 北京: 国防工业出版社, 2001.
  [2]王建校, 杨建国等. 51系列单片机及C51程序设计[M]. 北京: 科学出版社, 2002.
  [3]李群芳,黄建. 单片微型计算机与接口技术[M]. 北京: 电子工业出版社, 2001.
  [4]徐爱钧, 彭秀华. 单片机高级语言C51应用程序设计[M]. 北京: 电子工业出版社, 1998.
  [5]刘保录. 基于单片机的电机综合参数测试仪设计[J]. 兰州工业高等专科学校学报, 2003( 2).

推荐访问:差错 检测系统 编码 张力检测系统中差错控制编码的原理与实现 差错控制技术 控制系统的频率特性实验报告