Compensation Table/zh-hans

From SoftMC-Wiki
Jump to: navigation, search
语言: English  • 中文(简体)‎

介绍

组允许您将多个轴作为单个机构进行控制。对于组,位置命令和反馈信号不再是单个值,而是具有两个或三个元素的向量。 速度和加速度不再适用于单个电机,而是应用于两个或三个电动机的组合。 一些应用需要高精度的位置,因此需要补偿系统中机械的不准确性。softMC允许您定义一个或多个轴的补偿表。根据该轴的位置或其他轴的位置,该表定义了给到轴的位置命令的补偿。 补偿在每个运动总线的循环中实现。 补偿表通常由高精度工具创建,然后由softMC使用来纠正小的不准确性。当目标轴是组的一部分时,补偿也可以生效。

规范

补偿表由N轴构成,用于定义补偿。表中的行数将为:
k1*k2*….*kn
其中 k1 到 kn 分别是为轴A1至An定义的补偿点数。“源”位置(源轴位置单位)必须相等间隔且单调增加,而“补偿”(在目标用户位置单位)是添加到“目标”轴的补偿。

补偿表3轴目标上的3轴源显示如下。

The Header
3 10 2
Source - axis location Target - axis compensation
1 3.1 4.5 0 0.5 0.9
2 3.1 4.5 0.9 0.51 0.2
6 3.1 4.5 2.0 0.5 0.9
1 3.2 4.5 0 0.1 0.9
2 3.2 4.5 0.65 0.01 0.9
6 3.2 4.5 3.0 0.22 0.9
6 4 4.5 2.0 0.2 0.9
1 3.1 5.0 0 0.1 0.87
6 4 5.0 1 1 1.2

根据源轴PCMD锁定并计算表中的值,并进行线性变换。 源轴根据位置确定补偿值。目标轴被补偿。

该表有一个标题,其中包括表中的轴数,后面是为每个轴定义的补偿点数。 该表由softMC使用TargetData , SourceDataCreateComp也可以从具有.CMP扩展名的二进制文件加载。

当“源”轴位置反馈达到表中的第一(即最小)值时,补偿将起作用。补偿值添加到目标轴,并将表中的值计算为其当前的PCMD和PFB。

“源”列中的值为绝对值单位,“目标”值为相对单位(即,将表中指定的值添加到轴的当前位置,无论它是齿轮,凸轮或常规轴)。 每当源轴达到表中指定的最小值时,与表开始处的值不同的值将导致目标轴上的跳转。


补偿位置(COMPPCMD)与实际反馈位置之间的差异决定了目标轴的位置误差。PCMD返回补偿之前发生器的位置。

在表中搜索源PFB(例如source1.pcmd = 1,source2.pcmd = 3.2,source3.pcmd = 4.5),并从表中的先前点线性变换以给出目标位置的补偿。

当源轴沿着指定的区域继续移动时,目标轴根据该表改变其位置。 当其中一个源超过最大值时,表中的任何轴都不再添加补偿(补偿= 0)。 可能会发生跳跃。

假定补偿值非常小,不会导致目标轴的大跳跃。 VOSPDPEMAX受到修正后的位置的影响。 相应更改这些值以避免超过最大值。

补偿表处于活动状态时,表的值不能更改。 创建表后,只能更改“目标”值。

访问数据

补偿表数据按照每个单独轴的点的跟随目标数据的形式进行排列。 如果有三个轴(A1, A3, A3), 则定义了三个(N1, N2, N3) 补偿点。 计算索引以访问具有A1,A2,A3的索引i,j,k的表,请使用:
index = i + j*N1 + k*N1*N2

定义

补偿表被定义为全局变量

Common shared comp1 as comp
CreateComp Comp1 3 ,4, 8
Creates a table with 3*4*8 number of rows and 
6 number of columns – 3 for the source & 3 for the target.
CompSet Comp1 A1 ,A3, A4 on A2, A6, A5
Sources A1 A3 A4 and targets A2 A6 A5 respectively.

为补偿表中的每个轴设置表的最大和最小位置以及乘数:

Comp1.minposition[2] = 1.32
Comp1.maxposition[2] = 4.5
Set the maximum value for the second axis in the table

从文件加载/保存

创建补偿表的另一种方法是直接从存储在闪存盘上的二进制文件加载它。 补偿文件的结构是:

  • Header – <number of axes> <number of points axis1> ….<number of points axisn> (integer 4 bytes)
  • Source data – <min axis1> <max axis1>…..<min axisn><max axisn> (double 8 bytes)
  • Target data – target values for axis1,…….target values for axisn. (double 8 bytes)

该文件可以直接从基本移动创建文件,通过将.CSV格式的值列表(如上所述排列)以CMP扩展名加载到softMC flash中(参考LoadCompDataStoreCompData).

设置和查询值

补偿表不活动时,您可以更改特定的目标值。

Comp1.targetdata[1][23] = 3
Set a new compensation value of index 23 of Axis1
?Comp1.sourcedata[2][24]
Read the source value index 23 of Axis1

激活

定义补偿表后,使用CompActive将其打开/关闭。在激活之前,执行一个检查以确保该表是有效的(这些点是均匀间隔和增加的)。 在确认并启用目标轴之后,使用从补偿表计算的值来补偿目标轴的位置。如果目标轴被禁用,补偿仅在轴启用后才会生效。

NOTE-Info.svgNOTE
当补偿程序从表的起始点开始时,可能会发生跳转。 如果补偿过程在到达表结束之前被禁用,也可能发生跳转。


查询实际位置

CompPcmdCompPfb返回实际位置.这些属性可以作为主轴从轴的操作–齿轮或凸轮。 PCMD和PFB返回无补偿的位置命令和反馈命令。

多维补偿

在下面的示例中,在几个轴上进行补偿。 在所描述的系统中,有三个轴(X,Y,Z)。 根据X,Y,Z轴的位置确定X,Y,Z位置补偿。

该表分别由X,Y,Z轴的4,9,3个条目组成。

Common shared comp1 as comp ‘This declares a table in the system.
CreateComp comp1 4 ,9, 3
Comp1.minposition[1] = 0.1 ‘Setting min for the X
Comp1.maxposition[1] = 9 ‘Setting max for the X
Comp1.minposition[2] = 1.1 ‘Setting min for the Y
Comp1.maxposition[2] = 2 ‘Setting max for the Y
Comp1.minposition[3] = 3 ‘Setting min for the Z
Comp1.maxposition[3] = 3.12 ‘Setting max for the Z
CompSet comp1 ax1 ,ax2, ax3 on ax1 ,ax2, ax3 ‘Declare before target data definition
Comp1.TargetData[1][1] = 0.01 ‘Setting the target
Comp1.TargetData[3][3*9*4] = 0.02 ‘Setting the target
Comp1.CompActive=1

从现在开始,表中任何轴上的任何运动都会产生补偿。

示例

See: Application_Note_Compensation_Example.PDF