一种基于优先级和分段的数据采集方法

文档序号:7811398阅读:271来源:国知局
一种基于优先级和分段的数据采集方法
【专利摘要】本发明公开了一种基于优先级和分段的数据采集方法,属于数据采集、网络通信【技术领域】。本方法利用Vxworks实时操作系统的终端机作为主站,采集对象是Modbus设备或子系统的从站。对一个从站,主站的一个采集器的具体采集步骤包括:步骤一:读取配置文件;步骤二:将采集数据范围分解为采集数据分段组;步骤三:根据数据分段组优先级生成采集任务循环队列;步骤四:根据采集任务循环队列向从站发送Modubus请求报文;步骤五:判断响应报文是否错误,是则执行步骤六,否则执行步骤七;步骤六:重新连接从站;步骤七:将采集的数据更新到内存;步骤八:转到步骤四并执行下一个任务。本发明支持同时采集多个从站数据,可靠性强、兼容性好、实时性高及错误开销小。
【专利说明】一种基于优先级和分段的数据采集方法

【技术领域】
[0001] 本发明涉及一种数据采集方法,特别是涉及一种基于标准Modbus协议的通讯系 统、方法和装置,具体是一种基于优先级和分段的数据采集方法的设计。

【背景技术】
[0002] 在工业通信领域,Modbus协议由于其协议开放、实施简单、可靠性高的特点,已经 成为事实上的工业标准,得到了众多产商的产品支持。
[0003] 随着信息技术的不断发展,许多应用场合要求使用现有的Modbus设备进行数据 通信,对数据的实时性要求也越来越高,如地铁综合监控领域,从站数据量不断增加、主站 对从站的数据采集量远大于标准Modbus协议支持的单次最大数据采集量、数据采集的实 时性要求越来越高,为了兼容标准Modbus报文最大长度为256字节的限制,同时满足大数 据量和高实时性的要求,加上网络原因或者设备故障,传统的数据采集方法经常会出现数 据上报延时长,而影响了整个综合监控系统的可扩展性和实时性。


【发明内容】

[0004] 本发明所要解决的技术问题是提供一种基于优先级和分段的数据采集方法,在兼 容标准Modbus协议提前下,以解决因更多从站接入和大数据范围的采集带来的数据实时 性问题。采集分优先级,并根据采集器与从站数据交换状况自动调整采集频率,有效保障了 高优先级数据的实时性,减少了从站负担,该方法不仅增加数据的实时性而且减少了通信 错误开销和网络带宽的占用。
[0005] 为实现上述发明目的,本发明提供基于优先级和分段的数据采集方法,包括多采 集器并发采集、按照优先级对大范围数据分段采集和根据采集器与从站数据交换状况自动 调整采集频率。
[0006] 所述多采集器并发采集,采用是的多线程并发采集技术,一个采集器就是一个线 程,一个采集器与一个从站通讯,不同的采集器互不干扰并将采集的数据更新于不同的内 存块,以备上层应用使用。针对每个从站,主站分配一个固定的内存块用于存储该从站的数 据,采集器对该固定的内存块只有写权限。
[0007] 所述按照优先级对大范围数据分段采集,采集器初使化时将生成一个采集任务循 环队列,该队列是根据每个数据范围优先级的不同生成的,采集器将依据该任务队列进行 采集工作。采集任务循环队列的生成包括以下步骤:
[0008] 步骤一:采集器读取配置文件,包括数据类型、优先级、功能码、单次最大数据采集 量、采集范围、映射范围;
[0009] 步骤二:根据配置参数,将超过单次最大数据采集量的每个待采集数据范围分段, 将其转化为待采集数据分段组,使每个分段组的各分段范围之和等于原数据范围;
[0010] 步骤三:根据每个分段组优先级的不同生成采集任务循环队列,使不同优先级的 分段按照它们的采集频率比例分散地分布于采集任务循环队列中。
[0011] 生成的循环队列可以表示为

【权利要求】
1. 一种基于优先级和分段的数据采集方法,其特征在于,包括以下步骤: 步骤一:采集器读取配置文件,包括数据类型(Type e [1,512])、优先级 (Priority e [60, 232])、功能码(Code e [1,255])、单次最大数据采集量(Max e [1,2161])、 采集范围([Read e [〇,216-1])、映射范围(Write e [〇, 264-1]); 步骤二:根据配置参数,将超过单次最大数据采集量的每个待采集数据范围分段,将其 转化为待采集数据分段组,使每个分段组的各分段范围之和等于原数据范围; 步骤三:根据每个分段组优先级的不同生成采集任务循环队列,使不同优先级的分段 按照它们的采集频率比例分散地分布于采集任务循环队列中; 步骤四:主站采用标准的Modbus/TCPIP或者Modbus/RTU协议,根据采集任务循环队 列,发送当前任务分段范围的Modubus请求报文; 步骤五:主站收到该分段响应报文判断其是否错误,或者是否超时,如果是则执行步骤 六,否则执行步骤七; 步骤六:主站有限次数地重新发送对该分段的Modbus请求报文或者重新连接从站; 步骤七:主站取出分段响应报文中的有效数据并更新到指定内存块; 步骤八:重复步骤四,从采集任务循环队列取出下一个任务并执行。
2. 根据权利要求1所述的方法,其特征在于,主站可以同时接入N(1 <=N<= 100) 个从站并发地数据采集,主站将从各从站采集的数据更新到不同内存块,无需关心各从站 地址范围是否重叠的问题。
3. 根据权利要求1所述的方法,其特征在于,主站采集器根据每个分段组优先级生 成采集任务循环队列,采集器将依据这个采集任务循环队列进行数据采集工作,每次只读 取队列的任务,并没有出队列,每个任务组成一个4维的向量T = [Code, Start, Count, NextTask],其中Code是分段查询的功能码,Start是分段查询的开始地址,Count是分段查 询的字数,NextTask是下一个分段查询任务执行的时间。
4. 根据权利要求3所述的方法,其特征在于,还包括:采集任务循环队列是根据每个分 段组优先级生成的,可以用以下的表达式表示:
其中Q表示采集任务循环队列,Qn表示该采集器采集了 η个不同优先级的数据范围,U 是一种运算符,将其后面元素的下标按照U运算符的上标到下标以递增方式从左到右连接 起来,?\表示当前优先级数据范围的第i个分段或任务,nSplitCount是指第η个数据范围 分段数目,Fn指第η个数据范围的查询频率,将表达式展开如下:
只有一个数据范围;
,两个数据范围;
,三个数据范围;
个数据范围。
5. 根据权利要求1所述的方法,其特征在于,采集器定时从采集任务循环队列中取 出当前任务,根据任务所属性:[Code, Start, Count, NextTask]中的Code (功能码)、 Start (开始地址)和Count (请求字数)组成标准的Modbus报文与从站数据交换,并将在 NestTask(毫秒)时间后启动下次任务。
6. 根据权利要求5所述的方法,其特征在于,还包括:主站如果在NestTask时间内收 到从站的正确响应,则会在下一次任务启动事件到来时执行下一个任务,否则,将重新执行 当前任务,重新执行次数通过配置文件确定,如果重新执行数据超过设定的值,采集器将重 新连接从站。
7. 根据权利要求5所述的方法,其特征在于,还包括:在收到从站的正确响应后,采集 器将数据更新至内存数据库,同时累计正常数据交换计数,如果计数达到预设的阀值,采集 器将认为与该从站的通讯良好,可以加速与其数据交换,从而采集器将提前一个预设的单 位时间去执行下一个任务;如果在采集过程中出现响应超时、数据错误或者网络故障,下一 个任务的执行时间将会还原为初始值。
【文档编号】H04L12/26GK104158699SQ201410396966
【公开日】2014年11月19日 申请日期:2014年8月8日 优先权日:2014年8月8日
【发明者】肖奇峰, 陈朝晖, 张少文 申请人:广州新科佳都科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1