版权归原作者所有,如有侵权,请联系我们

[科普中国]-错误识别

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

概述

为了在有可能出现错误的传输媒介上实现可靠的数据传输,必须使用自动错误识别和更正程序。为了实现错误识别,单个数据包必须带有附加的信息。这样,在出现错误的情况下,至少从一定程度上修复数据包正确的内容。发送者在要发送的数据包上计算出一个校验和,并把它附加到数据包上。

当数据包到达接收者处时,接收者使用相同的程序在接收到的数据包上(无需附上校验和)生成校验和,并将算出的数值与发送者在数据包上附加的校验相比较。如果两个数字相吻合,那么数据包就很可能被正确地发送了。如果不相符,那么就是在传输过程中发生了变化。接收者会要求发送者再次发送该数据包,但必须再次发送的不是全部信息,而只是出现错误的那部分数据包。

尽管数据传输变得越来越可靠,广泛使用的无线通信技术(如无线局域网),还是导致了传输错误的大幅增加,这些错误是由于噪音和干扰造成的。接收者常常无法根据收到的信号正确地修复数据包。

幸运的是,在无线通信过程中,如果出现错误,错误会成堆地以“簇”的形式出现。如果错误总是以单个比特的形式出现,那么在以恒定的错误率(比如0.01%)传输一个大小为1 000 000比特的数据包时,几乎每个数据包都是错误的,都必须重新发送。相反,如果错误以平均每100个错误为一簇的形式出现,那么100个数据包中就只有1~2个会受到错误波及。

传输错误的衡量单位是比特错误率,它是由错误传输的比特数与传输总比特数之间比计算出来的。识别和消除错误的方法,通常不能正确地识别所有的错误。错误识别程序的工作目的在于,将剩余的错误尽可能降到最低限度。

为了更有效地处理错误,人们研发了两种基本程序:在已经识别错误的情况下,使用错误识别码和与此相连接的重复传输,以及自动更正错误的纠错码。为了能够使用错误识别及更正的必要算法,发送信息上有必要带有冗余信息。

为此,原始信息应携带附加编码,这一编码不拥有自己的信息值,而只是有助于错误识别和排除。通过这些附加的多余信息,无效的编码词句可以被识别,这些无效编码不符合原始编码词句,所以会指向传输中的错误。

通过使用纠错码,人们至少可以在错误不多时推断出原始编码词句。与错误识别相比,错误更正则需要更高的花费。但在出现错误而又不能要求重新传输编码词句时,它就是非常必要的。

如果可以进行这样的要求,那么使用错误识别编码就足够了,因为被错误识别的编码词句可以再一次被传送。1

程序调试的错误识别语法错误较好识别,因为MATLAB会给出相应的错误信息,以方便用户的检查和定位。

一般来说,执行错误较难识别,因为发生执行错误时,系统就会结束M文件的调用,这样将关闭函数的工作空间,无法获得需要的数据信息。MATLAB提供了以下几种方法来获取所需要的中间信息:

(1)将程序每一步执行的结果输出到命令窗口,以检查运行中间的结果,为实现这种效果,可以把程序中屏蔽输出的“;”号去掉。

(2)使用keyboard函数中断程序,此时程序处于调试状态,命令窗口的提示符变为K>>,可以实现函数工作空间和命令窗口工作空间的交互,从而获得所需要的信息。

(3)将函数头注释掉,这样函数将会变为脚本文件,所操作的对象也相应为命令窗口工作空间中的变量,也可以获得所需要的信息。

(4)使用调试菜单或调试函数。2

错误识别手段智能系统无法避免出现故障,因此必须采取措施避免这些故障错误造成重大损失。对于涉及安全性的系统,必须按照预定的安全性逻辑关系采取反应措施。对系统内错误的处理主要有两个步骤:首先是通过相应的措施对错误进行识别,之后是对错误的处理。

错误识别的主要功能在于识别系统中超出允许范围的误差。对错误识别措施进行定义,首先要分析系统组件潜在错误的特性,以保证对错误的识别和安全性处理。系统中主要采用以下手段进行错误识别:

(1)比较参照值:设备的一些特性标准值在使用前被存储在系统中,并将系统运行中测得的数值与之进行比较。

(2)对通讯连接中数据的传送与确认进行监测。

(3)程序运行监测:例如利用监测单元(看门狗或者第2处理器)对微处理器中过程的执行进行可信度监测。

(4)利用冗余配置:例如利用冗余传感器进行监测,或者进行荣誉运算监测。

(5)通过物理关系进行信号可信度监测。3

错误处理所谓错误处理,就是当代码运行时,如果发生错误,可以捕获错误,并按照程序设计者事先设计的方法来处理。使用错误处理的好处是:代码的执行不会中断,如果设定适当,可以让用户感觉不到错误的存在。

错误处理的步骤:设置错误陷阱,编写错误处理代码。

设置错误陷阱设置错误陷阱是在代码中设置一个捕捉错误的转移机制,一旦出现错误,便无条件转移到指定位置执行。Access 2003提供了以下几个语句来构造错误陷阱:

(1)On Error Go To语句

在遇到错误发生时,控制程序的处理。

语句的使用格式有如下几种:

①On Error GoTo标号:在遇到错误发生时,控制程序转移到指定的标号所指位置代码执行,标号后的代码一般为错误处理程序。一般来说,“On Error GoTo标号”语句放在过程的开始,错误处理程序代码会在过程的最后。

②On Error Resume Next:在遇到错误发生时,系统会不考虑错误,继续执行下一行语句。

③On Error GoTo 0:用于关闭错误处理。如果在程序代码中没有执行“On Error GoTo”语句捕捉错误,或使用“On Error GoTo0”语句关闭了错误处理,则当程序运行发生错误时,系统会提示一个对话框,显示相应的出错信息。

(2)Err对象

返回错误代码。在程序运行发生错误后,Err对象的number属性返回错误代码。

(3)Error()函数

该函数返回出错代码所在的位置或根据错误代码返回错误名称。

(4)Error语句

该语句用于错误模拟。以检查错误处理语句的正确性。在实际编程中,不能期待使用上述错误处理机制来维持程序的正常运行,要对程序的运行操作有预见,采用正确的处理方法,尽量避免运行错误的发生。

编写错误处理代码错误处理代码是由程序设计者编写的,根据可预知的错误类型决定采取哪种措施。

例如利用InputBox函数输入数据时,在InputBox对话框中,如果不输入数据或直接单击“取消”按钮,会产生运行错误,显示错误提示对话框。可以使用On Error ResumeNext语句忽略错误,也可以使用错误处理代码提示用户。

编写代码如下:

Private Sub Command0-Click()

On Error GoTo Errorline

Dim a As Integer

a=InputBox(”输入数据”,”提示框”)

MsgBox a

End Sub4