一种测试Modbus通讯质量及从站响应性能的方法与流程

文档序号:12821815阅读:2079来源:国知局

本发明涉及modbus通讯技术领域,更具体地涉及一种测试modbus通讯质量及从站响应性能的方法。



背景技术:

modbus是由modicon(莫迪康)公司于1979年发明的,是全球第一个真正用于工业现场的总线协议,其经过数年发展,已被广泛应用且可在串行通信或者以太网上实现。其中modbus按照传输模式主要分为ascii(americanstandardcodeforinformationinterchange,美国标准信息交换码)模式或rtu(remoteterminalunit,远程终端单元)模式,基于这两种模式的modbus分别被本领域的技术人员称为“modbusascii”和“modbusrtu”。

对于modbusrtu,其链路协议为主-从协议,即在同一时间,总线可以有至少一个从站,但是只能有一个主站,并且通信由主站发起请求,从站响应主站的请求而实现。通常,在一些对通讯可靠性要求较高且采用modbusrtu通讯格式的场合,需要测试通讯质量的可靠性。目前主要通过示波器观察485a和485b两端的差分信号来检测modbus的通讯质量,即通过观察信号的规则性和幅度值来判断通讯质量的好坏,这种方法虽然可以直观的观察出通讯波形的好坏,却不能定量的测试出通讯误码率等重要参数。而传统的modbus总线通讯误码率的测试方法是先将一帧可预测的固定数据帧每隔一定时间发送出去,再将返回的数据与预定会接收到的数据作比较,如果出现不同,那么数据错误计数器就加一,然后在一定时间内,将总的错误计数器值除以总的发送数据以测得通讯的误码率,然而这种方法可以计算出固定可预测数据帧的误码率,却不能计算出可变数据帧的误码率。且对于高速协同的modbus场合,测出从站的响应速度尤为重要,响应速度决定了该场合能否使用modbus从站设备,而现有的plc主站是每隔一定时间发送数据帧,然后等待从站响应,这样无法测试出从站响应极限。

鉴于此,有必要提供一种既能检测modbus从站的响应速度,同时也能测试出总线误码率的测试modbus通讯质量及从站响应性能的方法以解决上述缺陷。



技术实现要素:

本发明所要解决的技术问题是提供一种既能检测modbus从站的响应速度,同时也能测试出总线误码率的测试modbus通讯质量及从站响应性能的方法以解决上述缺陷。

为解决上述技术问题,本发明提供一种测试modbus通讯质量及从站响应性能的方法,该方法包括:

a1、modbus主站发送一帧数据至modbus从站并记录数据帧发送完毕时的时间;

a2、间隔第一预设时间后检测modbus主站是否接收到modbus从站响应,并在主站接收到从站响应时,执行下述步骤;

a3、modbus产生接收中断,记录此时的时间且计算响应时间,并将所接收的数据打包;

a4、对数据帧进行crc校验以计算获得所接收的数据帧的crc值;

a5、判断上述步骤计算所得的crc值与接收的数据帧中的crc值是否相同,若相同,执行步骤a6,若不同,执行步骤a7;

a6、通过第一计数器计算接收到正确的数据帧的次数,且执行步骤a8;

a7、通过第二计数器计算接收到错误的数据帧的次数,且执行步骤a8;

a8、判断modbus通讯是否结束,并在modbus通讯结束时执行步骤a9;

a9、计算modbus总线的通讯误码率。

其进一步技术方案为:步骤a8还包括有:在modbus通讯没有结束时,重新执行步骤a1。

其进一步技术方案为:所述第一预设时间为3.5个字符时间。

其进一步技术方案为:步骤a2还包括有:主站未接收到从站响应时,则判断是否超过第二预设时间,若是,则通过第三计数器计算超时未接收到数据帧的次数且重新执行步骤a1;若否,则重新执行步骤a2。

其进一步技术方案为:所述第二预设时间为5ms。

其进一步技术方案为:modbus通讯结束后根据第三计数器中的数据及modbus主站发送的总的数据帧计算总线的丢包率。

与现有技术相比,本发明的测试modbus通讯质量及从站响应性能的方法根据测试记录的modbus主站发送数据帧后及接收到响应产生接收中断时的时间可计算响应时间,从而获得modbus从站的响应性能,且可对数据帧进行crc校验,通过与接收的数据帧中的crc值进行对比,进而可计算获得modbus总线的通讯误码率,从而实现本发明既能检测modbus从站的响应速度,同时也能测试出总线误码率的目的。

附图说明

图1是本发明测试modbus通讯质量及从站响应性能的方法一实施例的流程图。

具体实施方式

为使本领域的普通技术人员更加清楚地理解本发明的目的、技术方案和优点,以下结合附图和实施例对本发明做进一步的阐述。

modbusrtu代码系统串口1字节数据由起始位、数据位、停止位以及校验位组成,起始位固定为1位,数据位可以是6、7或8位,停止位固定为1位,当有校验时,校验位固定为1位,当无校验时,校验位为0位,本实施例采用1-8-1无校验位的数据,其总位数为10位,在某些其他实施例中可用其他不同位数的数据。

modbusrtu中数据帧之间的间隔时间最少不能少于3.5个字符时间,所以1-8-1无校验格式的帧与帧间的最小间隔时间不能小于35位时间,而1位的时间=1/波特率,单位是秒。

本实施例中以一套采用modbusrtu通讯格式的拉丝机设备为例,若有10台变频器作从站,一台plc作主站,主站一次请求有25个字节的通信数据,从站返回的字节数为17字节,采用modbus1-8-1无校验格式,若在57600波特率下要求100ms内所有的设备都要和主站通信一次,modbus帧与帧之间的间隔时间最少为3.5个字符时间,那么最小的通讯周期为:10*(25+17+3.5)*10*1*1000/57600=79ms,则留给每台变频器最长处理数据帧的时间就是2ms。在某些其他实施例中,本发明的方法也适用于其他拥有不同波特率和请求字节数的高速通讯场合。

参照图1,图1是本发明的测试modbus通讯质量及从站响应性能的方法一实施例的流程图。在附图所示的实施例中,该方法包括:

s101、modbus主站发送一帧数据至modbus从站并记录数据帧发送完毕时的时间t1。

s102、间隔第一预设时间后检测modbus主站是否接收到modbus从站响应,若主站未接收到从站响应,则执行步骤s103;若主站接收到从站响应,则执行步骤s105及s105以下的步骤。

该步骤中,所述第一预设时间为3.5个字符时间,因1-8-1无校验位的数据,其总位数为10位,1位的时间=1/波特率,单位是秒,则帧与帧间的最小间隔时间即3.5个字符时间为:3.5*10*1*1000*1000/57600=607us=0.6ms。

s103、判断是否超过第二预设时间,若否,则重新执行步骤s102;若是,则执行步骤s104。

该步骤中,所述第二预设时间优选为5ms,因从站返回17字节的时间为:17*10*1000*1000/57600=2951us=2.95ms,从站最长处理数据帧的时间为2ms,帧与帧间的最小间隔时间为0.6ms,则第二预设时间设为5ms,该第二预设时间也可根据通讯的从站数量及返回的不同字节数即不同的高速通讯场合设置不同的数值。

s104、通过第三计数器计算超时未接收到数据帧的次数且重新执行步骤s101。

该步骤中,第二预设时间后还未接收到一帧数据则第三计数器计数加一,通过第三计数器计数增加来计算超时未接收到数据帧的次数。

s105、modbus产生接收中断,记录此时的时间t2且计算响应时间,并将所接收的数据打包。

modbus数据帧的发送是一位一位进行的,mcu一般是每接收到一个字符产生一次接收中断,在接收中断后需要将接收到的字符放入缓存中,该步骤中将所接收的数据打包是指将字符放入缓存的过程。响应时间=t2-t1-4.5个字符时间。因为modbusrtu格式规定,数据帧与数据帧之间的最小时间为3.5个字符时间,且因为从站响应数据帧在返回第一个字符时,主站mcu才产生中断,实际上从站响应数据帧在1个字符时间前就已经到达了主站,所以还需减去4.5个字符的时间。

s106、对数据帧进行crc校验以计算获得所接收的数据帧的crc值。

该步骤中,数据接收打包完毕后对所接收的数据帧进行crc校验。

s107、判断上述步骤计算所得的crc值与接收的数据帧中的crc值是否相同,若相同,执行步骤s108,若不同,执行步骤s109。

rtu模式传输的数据帧中自带有crc低字节和crc高字节。该步骤中,若计算所得的crc值与接收的数据帧中的crc值相同,则说明这帧数据没有发生错误;若不同,则说明这帧数据发生错误。

s108、通过第一计数器计算接收到正确的数据帧的次数,且执行步骤s110。

该步骤中,计算所得的crc值与接收的数据帧中的crc值相同,说明所接收的这帧数据没有发生错误,则第一计数器计数加一。本实施例通过第一计数器计数增加来计算所接收到的正确的数据帧即没有发生错误的数据帧的次数。

s109、通过第二计数器计算接收到错误的数据帧的次数,且执行步骤s110。

该步骤中,计算所得的crc值与接收的数据帧中的crc值不同,说明这帧数据发生错误,则第二计数器加一。本实施例通过第二计数器计数增加来计算所接收到的发生了错误的数据帧的次数。

s110、判断modbus通讯是否结束,若否则重新执行步骤s101;若是则执行步骤s111。

s111、计算modbus总线的通讯误码率。

该步骤中,误码率=错误数据帧/总发送数据帧*100%=第二计数器中的数据/(第一计数器中的数据+第二计数器中的数据)*100%。

在某些实施例,例如本实施例中,modbus通讯结束后可根据第三计数器中的数据及modbus主站发送的总的数据帧计算总线的丢包率。丢包率=丢失数据帧/总发送数据帧*100%=第三计数器中的数据/总发送数据帧*100%。

综上所述,本发明的测试modbus通讯质量及从站响应性能的方法根据测试记录的modbus主站发送数据帧后及接收到响应产生接收中断时的时间可计算响应时间,从而获得modbus从站的响应性能,且可对数据帧进行crc校验,通过与接收的数据帧中的crc值进行对比,进而可计算获得modbus总线的通讯误码率,从而实现本发明既能检测modbus从站的响应速度,同时也能测试出总线误码率的目的。

以上所述仅为本发明的优选实施例,而非对本发明做任何形式上的限制。本领域的技术人员可在上述实施例的基础上施以各种等同的更改和改进,凡在权利要求范围内所做的等同变化或修饰,均应落入本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1