Difference between revisions of "Error Compensation/zh-hans"
Line 1: | Line 1: | ||
− | {{Languages}} | + | {{Languages|Error_Compensation}} |
== 介绍 == | == 介绍 == | ||
组允许您将多个轴作为单个机构进行控制。对于组,位置命令和反馈信号不再是单个值,而是具有两个或三个元素的向量。 速度和加速度不再适用于单个电机,而是应用于两个或三个电动机的组合。 | 组允许您将多个轴作为单个机构进行控制。对于组,位置命令和反馈信号不再是单个值,而是具有两个或三个元素的向量。 速度和加速度不再适用于单个电机,而是应用于两个或三个电动机的组合。 | ||
Line 92: | Line 92: | ||
补偿表处于活动状态时,表的值不能更改。 创建表后,只能更改“目标”值。 | 补偿表处于活动状态时,表的值不能更改。 创建表后,只能更改“目标”值。 | ||
− | == | + | == 访问数据 == |
− | + | 补偿表数据按照每个单独轴的点的跟随目标数据的形式进行排列。 如果有三个轴(A1, A3, A3), 则定义了三个(''N''1, ''N''2, ''N''3) 补偿点。 计算索引以访问具有A1,A2,A3的索引i,j,k的表,请使用: | |
<pre> | <pre> | ||
index = i + j*N1 + k*N1*N2 . | index = i + j*N1 + k*N1*N2 . | ||
</pre> | </pre> | ||
− | == | + | == 定义 == |
− | + | 补偿表被定义为全局变量。 | |
<pre> | <pre> | ||
Common shared comp1 as comp | Common shared comp1 as comp | ||
Line 109: | Line 109: | ||
</pre> | </pre> | ||
− | + | 为补偿表中的每个轴设置表的最大和最小位置以及乘数: | |
<pre> | <pre> | ||
<nowiki>Comp1.minposition[2] </nowiki><nowiki>= 1.32</nowiki> | <nowiki>Comp1.minposition[2] </nowiki><nowiki>= 1.32</nowiki> | ||
Line 115: | Line 115: | ||
</pre> | </pre> | ||
− | == | + | == 从文件加载/保存 == |
− | + | 创建补偿表的另一种方法是直接从存储在闪存盘上的二进制文件加载它。 补偿文件的结构是: | |
'''Header''' – <nowiki><</nowiki>''number of axes''<nowiki>> <</nowiki>''number of points axis1''<nowiki>> ….<number of points axisn> (integer 4 bytes)</nowiki> | '''Header''' – <nowiki><</nowiki>''number of axes''<nowiki>> <</nowiki>''number of points axis1''<nowiki>> ….<number of points axisn> (integer 4 bytes)</nowiki> | ||
Line 124: | Line 124: | ||
'''Target data''' – target values for axis1,…….target values for axis''n''. (double 8 bytes) | '''Target data''' – target values for axis1,…….target values for axis''n''. (double 8 bytes) | ||
− | + | 该文件可以直接从基本移动创建文件,通过将.CSV格式的值列表(如上所述排列)以CMP扩展名加载到softMC flash中(请参见''MC Referenc''手册中的'''LOADCOMPDATA'''和'''STORECOMPDATA''')。 | |
− | == | + | == 设置和查询值 == |
− | + | 补偿表不活动时,您可以更改特定的目标值。 | |
<pre> | <pre> | ||
<nowiki>Comp1.targetdata[1][23] = 3</nowiki> | <nowiki>Comp1.targetdata[1][23] = 3</nowiki> | ||
Line 135: | Line 135: | ||
</pre> | </pre> | ||
− | == | + | == 激活 == |
− | + | 定义校正表后,用'''COMPACTIVE'''将其打开/关闭。在激活之前,执行一个检查以确保该表是有效的(这些点是均匀间隔和增加的)。 在确认并启用目标轴之后,使用从补偿表计算的值来校正目标轴的位置。如果目标轴被禁用,校正仅在轴启用后才会生效。 | |
− | {{Note| | + | {{Note|当补偿程序从表的起始点开始时,可能会发生跳转。 如果补偿过程在到达表结束之前被禁用,也可能发生跳转。}} |
− | == | + | == 查询实际位置 == |
− | + | '''COMPPCMD''' and '''COMPPFB'''返回实际位置. 这些属性可以作为从站的主源进行操作–齿轮或凸轮. '''PCMD''' and '''PFB'''返回''无''补偿的位置命令和反馈命令。 | |
− | == | + | == 多维校正 == |
− | + | 在下面的示例中,在几个轴上进行校正。 在所描述的系统中,有三个轴(X,Y,Z)。 根据X,Y,Z轴的位置确定X,Y,Z位置校正。 | |
− | + | 该表分别由X,Y,Z轴的4,9,3个条目组成。 | |
{| style="border-spacing:0;" | {| style="border-spacing:0;" | ||
Line 197: | Line 197: | ||
|} | |} | ||
− | + | 从现在开始,表中任何轴上的任何运动都会产生补偿。 | |
[[Category:Motion Control|Error Compensation]] | [[Category:Motion Control|Error Compensation]] |
Latest revision as of 07:42, 15 May 2017
语言: | English • 中文(简体) |
---|
介绍
组允许您将多个轴作为单个机构进行控制。对于组,位置命令和反馈信号不再是单个值,而是具有两个或三个元素的向量。 速度和加速度不再适用于单个电机,而是应用于两个或三个电动机的组合。
一些应用需要高精度的位置,因此需要补偿系统中的机械不准确性。softMC允许您定义一个或多个轴的校正表。根据该轴的位置或其他轴的位置,该表定义给轴的位置命令的校正。 每个运动总线循环都实现了这种校正。 补偿表通常由高精度工具创建,然后由softMC使用来校正小的不准确性。 当目标轴是组的一部分时,校正也可以生效。
规范
补偿表由N轴构成,用于定义补偿。表中的行数将为k1*k2*….*kn,其中k1至kn分别是为轴A1至kn定义的校正点数。“源”位置(源轴位置单位)必须相等间隔且单调增加,而“补偿”(在目标用户位置单位)是添加到“目标”轴的校正。
补偿表3轴目标上的3轴源显示如下。
| |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
根据源轴 PCMD锁定并计算表中的值,并进行线性变换。 “源”轴根据位置确定校正值。 “目标”轴被校正。
该表有一个“标题”,它由表中的轴数组成,后面是为每个轴定义的补偿点数。 该表可以使用TARGETDATA,SOURCEDATA和CREATECOMP创建softMC,也可以从具有.CMP扩展名的二进制文件加载。
当“源”轴位置反馈达到表中的第一(即最小)值时,校正将起作用。校正值添加到目标轴,并将表中的值计算为其当前的 PCMD 和 PFB。
“源”列中的值为绝对值单位,“目标”值为相对单位(即,将表中指定的值添加到轴的当前位置,无论它是齿轮,凸轮或常规轴)。 每当源轴达到表中指定的最小值时,与表开始处的值不同的值将导致目标轴上的跳转。
校正位置(COMPPCMD)与实际反馈位置之间的差异决定了目标轴的位置误差。 PCMD返回校正之前发生器的位置。
在表中搜索源PFB(例如source1.pcmd = 1,source2.pcmd = 3.2,source3.pcmd = 4.5),并从表中的先前点线性变换以给出目标位置的校正。
当源轴沿着指定的区域继续移动时,目标轴根据该表改变其位置。 当其中一个源超过最大值时,表中的任何轴都不再添加校正(校正= 0)。 可能会发生跳跃。
假定校正值非常小,不会导致目标轴的大跳跃。 VOSPD和PEMAX受到修正后的位置的影响。 相应更改这些值以避免超过最大值。
补偿表处于活动状态时,表的值不能更改。 创建表后,只能更改“目标”值。
访问数据
补偿表数据按照每个单独轴的点的跟随目标数据的形式进行排列。 如果有三个轴(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中(请参见MC Referenc手册中的LOADCOMPDATA和STORECOMPDATA)。
设置和查询值
补偿表不活动时,您可以更改特定的目标值。
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 | |
当补偿程序从表的起始点开始时,可能会发生跳转。 如果补偿过程在到达表结束之前被禁用,也可能发生跳转。 |
查询实际位置
COMPPCMD and COMPPFB返回实际位置. 这些属性可以作为从站的主源进行操作–齿轮或凸轮. PCMD and 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 |
从现在开始,表中任何轴上的任何运动都会产生补偿。