一种读取控制器数据的方法和系统与流程

文档序号:15144063发布日期:2018-08-10 20:14阅读:293来源:国知局

本发明涉及自动化控制领域,尤其涉及一种读取控制器数据的方法和系统。



背景技术:

自动控制是指在没有人直接参与的情况下,利用外加的设备或装置,使机器、设备或生产过程的某个工作状态或参数自动地按照预定的规律运行,目前随着经济的快速发展,人力成本逐步提高,随着控制、计算机、通信、网络等技术的发展,信息交换沟通的领域正在迅速覆盖从工厂的现场设备层到控制、管理的各个层次,覆盖从工段、车间、工厂、企业乃至世界各地的市场。

目前市面上主流的自动控制器包括可编程控制器(plc)、变频器、伺服、运动控制器等,对于终端使用者来说,这些控制器都是黑盒子,无法直接进行操作。由此人机界面应运而生,它是用来连接plc、变频器、直流调速器、仪表等工业控制设备,利用显示屏显示,通过输入单元(如触摸屏、键盘、鼠标等)写入工作参数或输入操作命令,实现人与机器信息交互的数字设备。

对于大多数应用场景来说,终端客户只要求能从控制器定时读到数据就可以,但在某些应用场景,终端客户要求能实时反馈数据的变化,比如300ms进行一次数据刷新。以9600波特率为例,大约100ms可以进行一次通信,如果界面数据达到10个或以上,每个数据都需要依次从控制器读取,那么意味着要隔10*0.1秒,即1秒以上才能反馈数据的变化,无法达到终端客户的使用要求。



技术实现要素:

为了解决上述技术问题,本发明的目的是提供一种读取速度快的读取控制器数据的方法,包括步骤:

s1、对所有数据的优先级设置相同的优先级初始值,并令优先级最高值的初值为优先级初始值;

s2、在当前轮的读取中,读取优先级为优先级最高值的所有数据,根据当前轮读取的数据相较于上一轮读取时内容是否发生变化的判断执行操作,包括:

当至少一个数据的内容发生变化时,将发生变化的数据对应的优先级加1,且将优先级最高值加1;

s3、根据预设的触发条件执行下一轮的读取,返回步骤s2。

进一步地,在步骤s2中,根据当前轮读取的数据相较于上一轮读取时内容是否发生变化的判断执行操作还包括:

当没有数据的内容发生变化时,判断当前轮读取的数据是否已读取预设次数,若是,则将数据的优先级更新为优先级初始值,且将优先级最高值减1,直到优先级最高值减到优先级初始值。

进一步地,预设次数为优先级最高值与优先级初始值的差值。

进一步地,在步骤s1之前还包括:

获取所有数据的唯一性标识,令数据的唯一性标识的优先级为数据的优先级。

进一步地,数据的唯一性标识为数据地址。

此外,本发明的目的是还提供一种读取控制器数据的系统,包括:

优先级初始化模块,用于对所有数据的优先级设置相同的优先级初始值,并令优先级最高值的初值为优先级初始值;

当前轮数据读取模块,用于在当前轮的读取中,读取优先级为优先级最高值的所有数据,根据当前轮读取的数据相较于上一轮读取时内容是否发生变化的判断执行操作,包括:

当至少一个数据的内容发生变化时,将发生变化的数据对应的优先级加1,且将优先级最高值加1;

下一轮读取触发模块,用于根据预设的触发条件执行下一轮的读取,执行当前轮数据读取模块的内容。

进一步地,在当前轮数据读取模块中,根据当前轮读取的数据相较于上一轮读取时内容是否发生变化的判断执行操作还包括:

当没有数据的内容发生变化时,判断当前轮读取的数据是否已读取预设次数,若是,则将数据的优先级更新为优先级初始值,且将优先级最高值减1,直到优先级最高值减到优先级初始值。

进一步地,预设次数为优先级最高值与优先级初始值的差值。

进一步地,在优先级初始化模块之前还包括xx模块,xx模块用于获取所有数据的唯一性标识,令数据的唯一性标识的优先级为数据的优先级。

进一步地,数据的唯一性标识为数据地址。

由上述可知,本发明采用的技术方案在每轮的读取过程中只针对上一轮读取过程中内容有变化的数据,对于上一轮读取过程中内容没有变化的数据认为该轮也没有变化,因而本轮并不需要读取。根据数据内容的变化频率对数据读取优先级进行划分,并根据数据读取优先级的不同对数据的读取频率进行划分,从而实现了数据快速读取、用户需求快速响应的技术效果。

附图说明

下面结合附图对本发明的具体实施方式作进一步说明:

图1是一个实施例中一种读取控制器数据的方法流程图;

图2是另一个实施例中一种读取控制器数据的方法流程图;

图3是一个实施例中一种读取控制器数据的系统结构示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

实际应用中,不是所有控制器数据都一直处于变化状态的,有不少数据间隔几分钟才发生变化甚至可能一直不变化,如果按时平均读取每个控制器数据的话,会大大影响读取效率。

鉴于此,本发明提供了一种读取控制器数据的方法,参见图1是一个实施例中一种读取控制器数据的方法流程图,包括:

s110、对所有数据的优先级设置相同的优先级初始值,并令优先级最高值的初值为优先级初始值。

为方便记录各控制器数据的优先级,可通过获取数据的唯一性标识,并将该数据的唯一性标识的优先级与该数据的优先级进行一一对应。优选地,数据的唯一性标识为数据地址。

具体地,可对所有控制器数据的地址进行编号,比如localword[0]、……、localword[i]、……、localword[n];其中,localword[i]表示第i个控制器数据的地址,n表示控制器数据的总量。

然后,根据数据变化频率对控制器数据对应的地址设置地址优先级。具体地,将上述控制器数据的地址优先级的初值p(i)均设置为优先级初始值p0,并令优先级最高值pmax的初值也为p0,num(m)用来记录第m轮读取中相较于第m-1轮读取中内容有变化的数据数目,令num(m)的初值为0。

s130、在当前轮的读取中,读取优先级为优先级最高值的所有数据,根据当前轮读取的数据相较于上一轮读取时内容是否发生变化的判断执行操作,包括:

当至少一个数据的内容发生变化时,将发生变化的数据对应的优先级加1,且将优先级最高值加1。

在第m轮的读取中,读取地址优先级为pmax的所有控制器数据。若第j个控制器数据的优先级为pmax,判断第j个控制器数据本轮读取时的内容相较于第m-1轮读取时的内容是否发生变化,若是,则将第j个控制器数据对应的地址优先级更新为p(j)=pmax+1,且令num(n)=num(n)+1;若否,则第j个控制器数据对应的地址优先级不变。

当本轮中地址优先级为优先级最高值pmax的所有控制器数据读取完成后,判断num(n)的值是否大于0,若是,说明在第m轮读取中至少有一个控制器数据的内容发生变化,则令pmax=pmax+1;若否,说明在第m轮读取中没有控制器数据的内容发生变化,则pmax的值不变。

s150、根据预设的触发条件执行下一轮的读取,返回步骤s130。

在本发明提出的技术方案中,每轮只读取上一轮内容发生变化的控制器数据,通过步骤s130和步骤s150的循环,不断过滤出内容变化最频繁的数据,直到当前一轮读取的数据内容不再变化为止,此时,认为获取到了当前具有最高优先级的控制器数据。

由于上述技术方案并不会在每轮读取时都对所有的控制器数据进行访问,而只处理内容变化最频繁、具有当前最高优先级的控制器数据,因而可减少每轮数据读取的时间,有效提高数据实时读取效率。

为了防止某些情况下,高优先级的控制器数据一直在变化导致低优先级的控制器数据一直不被读取。因此,在另一个实施例中,上述步骤s130中对当前轮读取的数据相较于上一轮读取时内容是否发生变化的判断处理还包括在高优先级的控制器数据若干轮读取中内容都不发生变化时,对其对应的优先级进行降级的过程。

具体地,本发明还提供了一种读取控制器数据的方法,参见图2是另一个实施例中一种读取控制器数据的方法流程图,包括:

s210、对所有数据的优先级设置相同的优先级初始值,并令优先级最高值的初值为优先级初始值。

s230、在当前轮的读取中,读取优先级为优先级最高值的所有数据,根据当前轮读取的数据相较于上一轮读取时内容是否发生变化的判断执行操作,包括:

当至少一个数据的内容发生变化时,将发生变化的数据对应的优先级加1,且将优先级最高值加1;

当没有数据的内容发生变化时,判断当前轮读取的数据是否已读取预设次数,若是,则将数据的优先级更新为优先级初始值,且将优先级最高值减1,直到优先级最高值减到优先级初始值。

具体地,预设次数为优先级当前值与优先级初始值之间的差值。

s250、根据预设的触发条件执行下一轮的读取,返回步骤s2。

以优先级最高值pmax为p0+3为例进行说明。如果在相邻的3轮读取中,都是读取的优先级为p0+3的控制器数据,也就是说,优先级为p0+3的控制器数据的内容在相邻的3轮读取中都没有发生变化,那么,在对优先级为p0+3的控制器数据完成第3轮读取后,则将优先级最高值pmax的值减1,即令pmax为p0+2;

然后,在下一轮的读取中,就只读取优先级为优先级最高值p0+2的控制器数据,如果在相邻的2轮读取中,都是读取的优先级为p0+2的控制器数据,那么,在对优先级为p0+2的控制器数据完成第2轮读取后,则将优先级最高值pmax的值再减1,即令pmax为p0+1;

依次类推,直到优先级最高值pmax被减到优先级初始值p0为止,这样就保证所有的数据都能全部重新读取到。

本技术方案通过采取动态监控控制器数据的内容变化并实时调整各控制器数据对应的优先级,从而获得一种更为可靠的读取控制器数据的方法。该技术方案不仅保证了内容变化频繁的控制器数据得到高优先级的读取,同时也保证了内容变化相对不那么频繁的控制器数据不会出现长时间的死等,使得具有各种变化特性的控制器数据都能得到及时有效地读取。

本发明提供了一种读取控制器数据的系统,参见图3是一个实施例中一种读取控制器数据的系统结构示意图,包括:

优先级初始化模块310,用于对所有数据的优先级设置相同的优先级初始值,并令优先级最高值的初值为优先级初始值。

为方便记录各控制器数据的优先级,可通过获取数据的唯一性标识,并将该数据的唯一性标识的优先级与该数据的优先级进行一一对应。一个实施例中,数据的唯一性标识为数据地址。

当前轮数据读取模块330,用于在当前轮的读取中,读取优先级为优先级最高值的所有数据,根据当前轮读取的数据相较于上一轮读取时内容是否发生变化的判断执行操作,包括:

当至少一个数据的内容发生变化时,将发生变化的数据对应的优先级加1,且将所述优先级最高值加1。

下一轮读取触发模块350,用于根据预设的触发条件执行下一轮的读取,执行当前轮数据读取模块330的内容。

在另一个实施例中,在当前轮数据读取模块330中,对当前轮读取的数据相较于上一轮读取时内容是否发生变化的判断处理还包括在高优先级的控制器数据若干轮读取中内容都不发生变化时,对其对应的优先级进行降级的过程。

具体地,在当前轮数据读取模块330中,根据当前轮读取的数据相较于上一轮读取时内容是否发生变化的判断执行操作还包括:

当没有数据的内容发生变化时,判断当前轮读取的数据是否已读取预设次数,若是,则将数据的优先级更新为优先级初始值,且将优先级最高值减1,直到优先级最高值减到优先级初始值。

一个实施例中,预设次数为优先级最高值与优先级初始值的差值。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

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