一种确定数值变化速度的方法及装置与流程

文档序号:15636309发布日期:2018-10-12 21:31阅读:220来源:国知局

本发明涉及计算机技术领域,更具体的说,是涉及一种确定数值变化速度的方法及装置。



背景技术:

绝对值编码器具有广泛的工程应用,实际应用场景中,经常需要根据绝对值编码器来计算数值变化速度。

现有技术中,通常采用中断来读取并计算绝对值编码器的数值变化率。然而这种方法需要依赖cpu以较高频率执行中断才能够实现,对cpu的高占用率,严重影响了其他算法的正常稳定执行。



技术实现要素:

有鉴于此,本发明提供了一种确定数值变化速度的方法及装置,以克服现有技术中,确定绝对值编码器的数值变化速度需要占用大量cpu,影响其他算法正常稳定执行的问题。

为实现上述目的,本发明提供如下技术方案:

一种确定数值变化速度的方法,包括:

以预设周期采集绝对值编码器数值;

通过dma将采集的绝对值编码器数值进行存储;

根据存储的绝对值编码器数值确定绝对值编码器数值的改变时间差和改变量;

根据所述改变时间和所述改变量确定数值变化速度。

可选的,所述通过dma将采集的绝对值编码器数值进行存储,包括:

通过dma将采集的绝对值编码器数值进行双缓存存储。

可选的,所述通过dma将采集的绝对值编码器数值进行双缓存存储,包括:

通过dma将采集的绝对值编码器数值以双缓存方式存入固定长度的数组,其中,dma的数据计数器的记数个数与所述数组长度相同。

可选的,所述根据存储的绝对值编码器数值确定绝对值编码器数值的改变时间差和改变量,包括:

确定缓存的数据中,绝对值编码器数值改变时在所述数组中的存储位置;

根据绝对值编码器数值改变时的存储位置确定改变时间;

根据两次改变时间确定改变时间差;

根据所述两次改变时间对应的绝对值编码器数值确定改变量。

可选的,所述根据存储的绝对值编码器数值确定绝对值编码器数值的改变时间差和改变量,包括:

利用传输过半中断分析确定所述数组前半部分是否存在数值改变;

利用传输完成中断分析确定所述数组后半部分是否存在数值改变;

在存在数值改变时,确定并记录数值改变时间和改变前或后的绝对值编码器数值;

根据上一次记录的数值改变时间和本次记录的数值改变时间确定改变时间差;

根据上一次数值改变时记录的绝对值编码器数值和本次数值改变时记录的绝对值编码器数值确定改变量。

可选的,还包括:

在利用传输过半中断分析确定所述数组前半部分不存在数值改变和在利用传输完成中断分析确定所述数组后半部分不存在数值改变的情况下,上一次数值改变时记录的数值改变时间减一个计算周期,所述一个计算周期为所述数组从开始存储数值到数组存满数值的时间长度。

一种确定数值变化速度的装置,包括:

数值采集模块,用于以预设周期采集绝对值编码器数值;

数值存储模块,用于通过dma将采集的绝对值编码器数值进行存储;

变量确定模块,用于根据存储的绝对值编码器数值确定绝对值编码器数值的改变时间差和改变量;

速度确定模块,用于根据所述改变时间和所述改变量确定数值变化速度。

可选的,所述数据存储模块具体用于:通过dma将采集的绝对值编码器数值进行双缓存存储。

可选的,所述数据存储模块具体用于:通过dma将采集的绝对值编码器数值以双缓存方式存入固定长度的数组,其中,dma的数据计数器的记数个数与所述数组长度相同。

可选的,所述变量确定模块包括:

位置确定模块,用于确定缓存的数据中,绝对值编码器数值改变时在所述数组中的存储位置;

时间确定模块,用于根据绝对值编码器数值改变时的存储位置确定改变时间;

时间差确定模块,用于根据两次改变时间确定改变时间差;

改变量确定模块,用于根据所述两次改变时间对应的绝对值编码器数值确定改变量。

经由上述的技术方案可知,与现有技术相比,本发明实施例公开了一种确定数值变化速度的方法及装置,首先以预设周期采集绝对值编码器数值,通过dma将采集的绝对值编码器数值进行存储,然后根据存储的绝对值编码器数值确定绝对值编码器数值的改变时间差和该变量,最后根据所述改变时间和所述该变量确定数值变化速度。该确定数值变化速度的方法及装置,利用dma实现对绝对值编码器数值的存储,有效降低了对cpu资源的占用率,保证系统其他算法的稳定执行。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种确定数值变化速度的方法流程图;

图2为本发明实施例公开的绝对值编码器数值存储过程示意图;

图3为本发明实施例公开的一种确定变量参数的流程图;

图4为本发明实施例公开的另一种确定变量参数的流程图;

图5为本发明实施例公开的dma中断执行对应的数组存储示意图;

图6公开了本申请的另一种确定数值变化速度的方法流程图;

图7为本发明实施例公开的确定数值变化速度的装置的结构示意图;

图8为本发明实施例公开的一种变量确定模块的结构示意图;

图9为本发明实施例公开的另一种变量确定模块的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例公开的一种确定数值变化速度的方法流程图,参见图1所示,所述方法可以包括:

步骤101:以预设周期采集绝对值编码器数值。

所述预设周期可以根据实际应用场景来确定,一般情况下,为了保证最终计算出的数值变化速度的准确率,所述预设周期不宜设置的太大。以预设周期采集绝对值编码器数值,即以固定频率采集绝对值编码器数值,该频率数据可以预先配置在控制采集绝对值编码器数值的设备中或处理器中,如dma控制器。当然,除了配置采集频率外,还需要配置dma控制器与绝对值编码器的通讯接口,以保证所述dma控制器能够以固定周期快速采集绝对值编码器数值。

步骤102:通过dma将采集的绝对值编码器数值进行存储。

本实施例中,可采用dma(directmemoryaccess,直接内存存取)采集绝对值编码器数值。具体的,可以通过dma控制器预先配置周期性的采集绝对值编码器数值。采用dma的方式将采集的绝对值编码器数值进行存储的过程,不需要通过cpu中断来实现,因此能够大大节省cpu的占用率,保证系统其他程序的顺利执行。

所述通过dma将采集的绝对值编码器数值进行存储,可以包括:通过dma将采集的绝对值编码器数值进行双缓存存储。具体的,所述通过dma将采集的绝对值编码器数值进行双缓存存储可以是:通过dma将采集的绝对值编码器数值以双缓存方式存入固定长度的数组,其中,dma的数据计数器的记数个数与所述数组长度相同,如所述计数器的记数个数为40,所述数组长度也为40。

图2为本发明实施例公开的绝对值编码器数值存储过程示意图。其中数组长度为40,编码器的采样间隔为tsam,即,每隔tsam采样一个绝对值编码器数值。dma存储过程为由上向下将采样数值存入数组,当整个数组都被存满后,数据将重新从上向下存储。参见图2所示左侧部分,在t=t0时刻,最新采样的绝对值编码器数值为8,将其存入数组的[29]地址内,参见图2所示中间部分,在t=t0+tsam时刻,最新采样的绝对值编码器数值为9,将存入数组的[30]地址内,参见图2所示右侧部分,在t=t0+2*tsam时刻,最新采样的绝对值编码器数值为9,将存入数组的[31]地址内。

步骤103:根据存储的绝对值编码器数值确定绝对值编码器数值的改变时间差和改变量。

图3为本发明实施例公开的一种确定变量参数的流程图,如图3所示,可以包括:

步骤301:确定缓存的数据中,绝对值编码器数值改变时在所述数组中的存储位置。

通过所述数组内存储的绝对值编码数值的变化,可以计算数值变化速度。由于数组长度是固定的,因此,当所述数组内存储的数值变化次数越多,证明数值的变化速度越快。当所述数组内存储的数值都相同时,说明在t=40*tsam的时间内绝对值编码器数值没有改变,当连续一段时间内数组内存储数值都没发生变化时,说明数值变化速度为0。

步骤302:根据绝对值编码器数值改变时的存储位置确定改变时间。

由于所述绝对值编码器数值是周期采集的,且所述数组是按顺序依次存储数值的,因此,所述数组内每一个存储位置上存储的数值都有对应的存储时间,根据绝对值编码器数值改变时的存储位置就可以确定数值改变时的改变时间。

步骤303:根据两次改变时间确定改变时间差。

例如,上一次数值改变时记录的改变时间为t1=t0+2*tsam,本次数值改变的改变时间为t2=t0+12*tsam,则改变时间差δt=t2-t1=10*tsam。需要说明的是,改变时间记录的可以是数值改变前的数值对应的时间,也可以是数值改变后的数值对应的时间,只需要保证一个算法里,记录时间的标准相同即可。

步骤304:根据所述两次改变时间对应的绝对值编码器数值确定改变量。

例如,上次数值改变前绝对值编码器数值为5,本次数值改变前数值为6,则改变量为6-5=1。当然,也可以都以数值改变后的绝对值编码器数值为基础计算。

图4为本发明实施例公开的另一种确定变量参数的流程图,如图3所示,可以包括:

步骤401:利用传输过半中断分析确定所述数组前半部分是否存在数值改变。

步骤402:利用传输完成中断分析确定所述数组后半部分是否存在数值改变。

图5为本发明实施例公开的dma中断执行对应的数组存储示意图,结合图5,当数组的第20个位置(记为[20])被写入数据后,系统将触发dma传输过半中断执行,dma传输过半中断对数据前半部分数据进行分析。当数组的第40个位置(记为[40])被写入数据后,系统将触发dma传输完成中断执行,dma传输完成中断对数据后半部分数据进行分析。

具体的,当[20]被写入数据后,触发dma传输过半中断执行,后边新采样的数值将写入所述数组的后半部分,数组的前半部分暂时不会被修改。如图5左侧内容所示,dma传输过半中断对前半部分数值进行分析,分析结果可以是:在索引[6]处数据有改变,由4变为5。当[40]被写入数据后,触发dma传输完成中断执行,以后新采样的数值将被写入所述数组的前半部分,所述数组的后半部分暂时不会被修改。dma传输完成中断对所述数组的后半部分进行分析,参见图5右侧内容,分析结果可以是:在索引[25]处数据有改变,由7变为8。

步骤403:在存在数值改变时,确定并记录数值改变时间和改变前或后的绝对值编码器数值。

若记录的是数值改变前的数值,则对应的改变时间为改变前的数值存入所述数组时对应的时间。若记录的是数值改变后的数值,则对应的改变时间为改变后的数值存入所述数组时对应的时间。计算时间差值和数值变量时,前后两次记录时间和改变数值的标准应当相同。

步骤404:根据上一次记录的数值改变时间和本次记录的数值改变时间确定改变时间差。

步骤405:根据上一次数值改变时记录的绝对值编码器数值和本次数值改变时记录的绝对值编码器数值确定改变量。

步骤103之后,进入步骤104。

步骤104:根据所述改变时间和所述改变量确定数值变化速度。

根据一定时间内绝对值编码器数值的该变量,或者绝对值编码器数值改变一定数值所用的时间,可以通过搜索数组中存储内容的改变来计算数值改变速度。改变速度的计算公式为:速度=变化量/时间差。

本实施例中,所述确定数值变化速度的方法利用dma实现对绝对值编码器数值的存储,有效降低了对cpu资源的占用率,保证系统其他算法的稳定执行。

在上述本发明公开的实施例的基础上,图6公开了本申请的另一种确定数值变化速度的方法流程图,如图6所示,可以包括:

步骤601:以预设周期采集绝对值编码器数值。

步骤602:通过dma将采集的绝对值编码器数值以双缓存方式存入固定长度的数组。

其中,dma的数据计数器的记数个数与所述数组长度相同。

步骤603:判断是否已触发dma传输过半中断,若是,进入步骤604,若否,进入步骤605。

步骤604:在数组前半部分中搜索任意一次绝对值编码器数值的改变索引,进入步骤606。

步骤605:在数组后半部分中搜索任意一次绝对值编码器数值的改变索引,进入步骤606。

由于绝对值编码器数值在所述数组中是循环存储的,即存储满了自动从开头继续存储,因此,若数组存储触发dma传输过半中断,证明所述数组前半部分已经存满,可以对数组前半部分数值进行分析;若数组存储没有触发dma传输过半中断,证明所述数组前半部分还没有存满,此时可以对数组后半部分数值进行分析。

步骤606:判断是否存在编码器数值改变,若是,进入步骤607,若否,进入步骤609。

步骤607:根据所述改变索引确定绝对值编码器数值的改变时间和改变数值,并结合记录的上一次绝对值编码器数值的改变时间和改变数值确定改变时间差和改变量。

具体根据索引(存储位置)确定绝对值编码器数值的改变时间的内容,可参见上面介绍的实施例中相关部分的介绍。

步骤608:根据所述改变时间和所述改变量确定数值变化速度。

步骤609:上一次数值改变时记录的数值改变时间减一个计算周期,返回步骤603。

其中,所述一个计算周期为所述数组从开始存储数值到数组存满数值的时间长度。

在其他的实施例中,在所述:上一次数值改变时记录的数值改变时间减一个计算周期后,还可以进一步包括判断是否连续一定次数绝对值编码器数值不变的步骤,在判断结果为是的情况下,可以直接确定绝对值编码器数值变化速度为0。

本实施例中,所述确定数值变化速度的方法dma实现对绝对值编码器数值进行快速双缓存存储,能够有效降低对cpu资源的占用率,保证系统其他程序的有效执行。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

上述本发明公开的实施例中详细描述了方法,对于本发明的方法可采用多种形式的装置实现,因此本发明还公开了一种装置,下面给出具体的实施例进行详细说明。

图7为本发明实施例公开的确定数值变化速度的装置的结构示意图,如图7所示,所述确定数值变化速度的装置70可以包括:

数值采集模块701,用于以预设周期采集绝对值编码器数值。

所述预设周期可以根据实际应用场景来确定,一般情况下,为了保证最终计算出的数值变化速度的准确率,所述预设周期不宜设置的太大。以预设周期采集绝对值编码器数值,即以固定频率采集绝对值编码器数值,该频率数据可以预先配置在控制采集绝对值编码器数值的设备中或处理器中,如dma控制器。当然,除了配置采集频率外,还需要配置dma控制器与绝对值编码器的通讯接口,以保证所述dma控制器能够以固定周期快速采集绝对值编码器数值。

数值存储模块702,用于通过dma将采集的绝对值编码器数值进行存储。

本实施例中,可采用dma(directmemoryaccess,直接内存存取)采集绝对值编码器数值。具体的,可以通过dma控制器预先配置周期性的采集绝对值编码器数值。采用dma的方式将采集的绝对值编码器数值进行存储的过程,不需要通过cpu中断来实现,因此能够大大节省cpu的占用率,保证系统其他程序的顺利执行。

所述数值存储模块702具体可以用于:通过dma将采集的绝对值编码器数值进行双缓存存储。进一步的,所述数值存储模块702可以用于:通过dma将采集的绝对值编码器数值以双缓存方式存入固定长度的数组,其中,dma的数据计数器的记数个数与所述数组长度相同,如所述计数器的记数个数为40,所述数组长度也为40。

变量确定模块703,用于根据存储的绝对值编码器数值确定绝对值编码器数值的改变时间差和改变量。

图8为本发明实施例公开的一种变量确定模块的结构示意图,如图8所示,所述变量确定模块703可以包括:

位置确定模块801,用于确定缓存的数据中,绝对值编码器数值改变时在所述数组中的存储位置。

通过所述数组内存储的绝对值编码数值的变化,可以计算数值变化速度。由于数组长度是固定的,因此,当所述数组内存储的数值变化次数越多,证明数值的变化速度越快。当所述数组内存储的数值都相同时,说明在t=40*tsam的时间内绝对值编码器数值没有改变,当连续一段时间内数组内存储数值都没发生变化时,说明数值变化速度为0。

时间确定模块802,用于根据绝对值编码器数值改变时的存储位置确定改变时间。

由于所述绝对值编码器数值是周期采集的,且所述数组是按顺序依次存储数值的,因此,所述数组内每一个存储位置上存储的数值都有对应的存储时间,根据绝对值编码器数值改变时的存储位置就可以确定数值改变时的改变时间。

时间差确定模块803,用于根据两次改变时间确定改变时间差。

例如,上一次数值改变时记录的改变时间为t1=t0+2*tsam,本次数值改变的改变时间为t2=t0+12*tsam,则改变时间差δt=t2-t1=10*tsam。需要说明的是,改变时间记录的可以是数值改变前的数值对应的时间,也可以是数值改变后的数值对应的时间,只需要保证一个算法里,记录时间的标准相同即可。

改变量确定模块804,用于根据所述两次改变时间对应的绝对值编码器数值确定改变量。

例如,上次数值改变前绝对值编码器数值为5,本次数值改变前数值为6,则改变量为6-5=1。当然,也可以都以数值改变后的绝对值编码器数值为基础计算。

图9为本发明实施例公开的另一种变量确定模块的结构示意图,如图8所示,所述变量确定模块703可以包括:

dma中断模块901,用于利用传输过半中断分析确定所述数组前半部分是否存在数值改变,和/或利用传输完成中断分析确定所述数组后半部分是否存在数值改变。

结合图5,当[20]被写入数据后,触发dma传输过半中断执行,后边新采样的数值将写入所述数组的后半部分,数组的前半部分暂时不会被修改。如图5左侧内容所示,dma传输过半中断对前半部分数值进行分析,分析结果可以是:在索引[6]处数据有改变,由4变为5。当[40]被写入数据后,触发dma传输完成中断执行,以后新采样的数值将被写入所述数组的前半部分,所述数组的后半部分暂时不会被修改。dma传输完成中断对所述数组的后半部分进行分析,参见图5右侧内容,分析结果可以是:在索引[25]处数据有改变,由7变为8。

记录模块902,用于在存在数值改变时,确定并记录数值改变时间和改变前或后的绝对值编码器数值。

若记录的是数值改变前的数值,则对应的改变时间为改变前的数值存入所述数组时对应的时间。若记录的是数值改变后的数值,则对应的改变时间为改变后的数值存入所述数组时对应的时间。计算时间差值和数值变量时,前后两次记录时间和改变数值的标准应当相同。

时间差确定模块903,用于根据上一次记录的数值改变时间和本次记录的数值改变时间确定改变时间差。

改变量确定模块904,用于根据上一次数值改变时记录的绝对值编码器数值和本次数值改变时记录的绝对值编码器数值确定改变量。

除了上述数值采集模块701、数值存储模块702和变量确定模块703外,所述确定数值变化速度的装置70还包括:

速度确定模块704,用于根据所述改变时间和所述改变量确定数值变化速度。

根据一定时间内绝对值编码器数值的该变量,或者绝对值编码器数值改变一定数值所用的时间,可以通过搜索数组中存储内容的改变来计算数值改变速度。改变速度的计算公式为:速度=变化量/时间差。

本实施例中,所述确定数值变化速度的装置利用dma实现对绝对值编码器数值的存储,有效降低了对cpu资源的占用率,保证系统其他算法的稳定执行。

在其他的实施例中,确定数值变化速度的装置还可以包括时间处理模块,用于在利用传输过半中断分析确定所述数组前半部分不存在数值改变和在利用传输完成中断分析确定所述数组后半部分不存在数值改变的情况下,将上一次数值改变时记录的数值改变时间减一个计算周期,其中,所述一个计算周期为所述数组从开始存储数值到数组存满数值的时间长度。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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