一种通讯系统抗干扰方法
【技术领域】
本发明涉及通讯技术,尤其是其中的抗干扰方法。
【背景技术】
在干扰比较严重的场合,例如有电子设备、大规模使用变频器的车间等场合,会使通讯软件的应用受到严峻挑战。如果不对通讯产品做抗干扰设计,将会导致通讯时断时续,从而导致通讯产品无法正常使用。因此,针对通讯产品的抗干扰设计方法很多,主要分为硬件抗干扰设计和软件抗干扰设计。硬件抗干扰设计有很多,可以从芯片选择、硬件滤波设计、加屏蔽线缆等方面来考虑。软件抗干扰设计也有很多,可以从冗余算法、自适应滤波等方面来考虑。硬件抗干扰设计会增加通讯产品的成本和设计复杂度,而软件抗干扰设计算法如果复杂的话,也将增加软件的复杂度和可维护性。
通讯软件的数据帧在发送前是通过软件来确定的,但是发送过程却是通过硬件来完成的,因此,通讯软件设计的难点在于数据帧的接收。通讯软件在运行时存在通讯速率,而通讯速率与波特率有关。每个数据帧都有具体字节个数,考虑到波特率,接收每个数据帧都是需要时间的。现有技术中,在数据接收过程中,例如有如下数据帧
0x03 0x02 0x24 0x3A 0x29 0x00 0xBE 0xE9
帧头 数据 数据 校验和
现有技术在进行该数据帧的接收时,延时一个确定的时间或者固定一个时间后进行帧头检测,如设置时间为1ms,时间一到1ms就开始进行数据帧接收,这时进行数据帧帧头检测,发现不是0x03就认为本次接收数据帧失败,如果帧头是0x03就进行整个数据帧检测,然后进行整个数据帧校验,如果校验和不是0xBE 0xE9也认为本次接收的数据帧失败。这种方式虽然在一定程度上可以起到抗干扰的作用,但是属于固定时间接收数据帧后检测帧头,发现帧头不对就认为本次接收失败,在干扰比较严重的场合,会导致通讯时断时续,从而导致通讯产品无法正常使用。
【发明内容】
本发明的主要目的是:提供了一种高可靠性、可维护性、高通用性的通讯系统抗干扰方法。
为实现上述目的,本发明提出在通讯数据的接收过程中,包括数据帧帧头检测步骤:系统首先对待接收的数据帧帧头进行过滤检测;当检测到数据帧帧头是合法数据(通讯软件认可的数据,随通讯协议的不同而不同)时,才开始整个数据帧的接收。
上述的通讯系统抗干扰方法,在数据帧帧头的过滤检测步骤中,包括对数据帧头的侦听持续一个时间段,在该时间段内未侦听到合法的帧头时,视为本次数据帧接收失败。在通讯数据的接收过程中,还包括数据帧接收计时检测步骤:系统对数据帧接收计时,当其超出预定时限时,视为本次数据帧接收失败。还包括对整个数据帧的验证步骤:验证接收到的整个数据帧的检验和是否正确;当判定校验和错误时,视为本轮数据帧接收失败。
当系统判定本次数据帧接收失败时,将单轮通讯中数据帧接收失败次数TimesNUM加1;当单轮通讯中数据帧接收失败次数TimesNUM大于或等于单轮通讯中数据帧接收失败次数上限MaxTimesNUM时,系统视本轮通讯为失败。当系统认为本轮通讯失败时,将对应的通讯失败轮数累计变量CycleNUM加1,然后将单轮通讯中数据帧接收失败次数TimesNUM清零,但是本轮并不报通讯故障或者通讯失败,而是继续下一轮通讯。当通讯失败轮数累计变量CycleNUM大于或等于通讯失败轮数累计上限MaxCycleNUM时,系统报通讯失败。当通讯不成功轮数累计变量CycleNUM小于通讯失败轮数累计上限MaxCycleNUM时,系统报通讯成功,在接收结束后,将通讯不成功轮数累计变量CycleNUM清零。
由于采用了以上的方案,本发明的方法通过对待接收的数据帧帧头先行检测,避免将非法信号作为数据帧的数据进行接收,可以有效抑制干扰给通讯所带来的冲击;特别在干扰比较强烈的通讯环境中,不会因该误接收导致通讯失败次数达到一定由系统自身规定的次数时,使通讯系统报通讯失败。而且,本发明中对数据帧头的检测无须定时执行,具有很强的灵活性。
本发明的方法通过数据帧帧头过滤检测和数据帧接收计时,保证在通讯确实有问题的情况下不至于让通讯系统陷入死循环,从而确保了数据帧接收时的帧头检测方法能够正常实施,通讯得以继续。
本发明通过多轮次通讯检测来进行数据帧的接收,即使在干扰强烈的场合,仍可以避免频繁强烈的干扰造成通讯系统的瘫痪,有效保证通讯的正常进行;尽管此时比较消耗时间,会造成通讯数据帧接收的速度变慢,但是保证了通讯的正常进行还是值得的。
本发明方法的基础是通讯协议,由于任何通讯软件都是以通讯协议为基础的,因此,本发明方法在通讯方面具有通用性,而不局限于某一种通讯协议,对通讯软件设计所使用的计算机语言也没有局限性。
本发明方法有着方法简单使用和代码量小的特点,在工程上非常实用。
【附图说明】
图1是本发明方法的流程图。
【具体实施方式】
下面通过具体的实施例并结合附图对本发明作进一步详细的描述。
本发明方法共包括三个步骤:1、数据帧头过滤检测;2、数据帧接收计时;3、多轮次检测。下面进行详细介绍。
步骤一:数据帧头过滤检测。
在干扰比较严重的场合,通讯设备在接收数据帧时,接收到的第一个数据绝大部分情况下是一个非法数据,比如干扰信号或是非与本机通讯的其他设备发出的数据;如果此时将该非法数据作为数据帧的第一个数据接收了,将会导致数据帧接收通不过校验,从而会导致本次接收失败。如果第二轮接收数据帧时,接收到的第一个数据还是非法信号,将会导致本次接收又是失败。通讯失败次数达到由系统自身规定的次数时,将会导致通讯系统报通讯失败。
此时,在本例中,系统将待接收的数据帧帧头进行检测,判断其是否为合法数据,每个数据帧帧头必须正确才开始接收;假设待接收的数据帧为:
0x03 0x02 0x21 0x0A 0xAB 0x09 0xC0校验和高位 校验和低位
帧头 指令 数据 数据 校验和
通讯软件在接收数据帧时,首先接收到的要么是帧头0x03,要么是非法信号。如果检测到第一个数据不是0x03,而是非法信号,那么便会一直进行帧头过滤检测,也即对数据帧帧头进行持续侦听。通过帧头过滤检测,在检测到第一个数据是0x03时才认为数据帧的帧头是正确的,然后便开始整个数据帧的接收;然后验证校验和,也就是将整个数据帧进行验证,验证合格了才认为数据帧中的数据是合法的。
在帧头过滤检测时,当发现待接收的数据帧不是合法数据时,可以剔除该非法信号,直至检测到数据帧的第一个数据是合法的时候才开始接收,此时就可以避免将非法信号作为数据帧的数据进行接收。
为了保证帧头过滤检测的顺利实施,设置了数据帧帧头过滤检测的计时,也即是对数据帧帧头的持续侦听设置一个时间段,而非无限制地侦听下去;如此,可以保证在通讯确实有问题的情况下不至于让通讯系统在死等,从而确保了数据帧帧头的过滤检测方法能够正常实施。
步骤二:数据帧接收计时。
如果干扰在某段时间过于强烈,可能导致线路根本就不能通讯,或者通讯线路断裂,此时如果还在做数据帧帧头过滤检测,将会导致通讯软件一直处于帧头检测状态,这显然是不符合实际的。因此,在抗干扰设计过程中,需要加入数据帧接收计时检测。数据帧接收计时的预定时限可以通过通讯波特率和数据帧长度,并增加一定的裕量来进行设置计时上限。通过设置数据帧接收计时,可以保证在通讯确实有问题的情况下不至于让通讯系统在死等,从而确保了数据帧的接收能够正常实施。
步骤三:多轮次检测。
由于在通讯过程中,通讯系统报通讯故障是建立在单轮通讯中数据帧接收不成功次数TimesNUM的基础上,因此,这给抗干扰设计提供了一个契机:可以巧妙利用TimesNUM,如果数据帧帧头过滤检测或数据帧接收超时,将认为本次通讯失败,TimesNUM加1;当整个数据帧接收后,如果校验和不正确,将认为本次通讯失败,TimesNUM加1。如果TimesNUM大于或等于单轮通讯中数据帧接收不成功次数上限MaxTimesNUM,通讯系统将认为这一轮通讯不成功,并将对应的通讯不成功轮数累计变量CycleNUM加1,然后将TimesNUM清零,但是本轮并不报通讯故障或者通讯失败,而是继续下一轮。通讯不成功轮数累计变量CycleNUM根据通讯产品本身设置一个通讯不成功轮数累计上限MaxCycleNUM,当CycleNUM不小于MaxCycleNUM时,将报通讯不成功。如果在一轮通讯过程中,变量CycleNUM小于MaxCycleNUM,则表明正确接收了数据帧,在接收结束后,CycleNUM将会自动清零,这也增加了通讯软件的灵活性。通过多轮通讯检测来进行数据帧的接收虽然比较消耗时间,会造成通讯数据帧接收的速度变慢,但是在干扰强烈的场合,可以有效保证通讯的正常进行。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,所做出的若干简单推演或替换,都应当视为属于本发明的保护范围。