融合运动

执行机械手臂移动、工件切割等需要连续性运动的任务时,需要融合各动作指令,才能使工具持续以稳定速度沿平滑路径移动,本节将介绍如何使用融合与转换模式来融合速度和路径。

融合模式

融合模式是一用来融合速度的方式。其中有四种融合速度的运动模式: BlendingLow, BlendingHigh, BlendingPrevious, BlendingNext

名称 意义
mcBlendingLow 速度以两个函式或功能块 (Function Block) 中较低的速度进行融合。
mcBlendingHigh 速度以两个函式或功能块中较高的速度进行融合。
mcBlendingPrevious 速度以第一个函式或功能块的速度进行融合。
mcBlendingNext 速度以第二个函式或功能块的速度进行融合。

以上可在 McBufferMode类型找到。在运动指令中,这些值用作 BufferMode 的参数。

上图展示在同样的指令组合下,不同的 BufferMode 参数所产生的速度-时间图。选择 Buffered 时,定位运动指令结束于其目标位置且结束速度为零。当运动指令融合后,可使用融合模式指定其结束速度,并以该速度通过前后指令的连接位置(即为前一个指令的目标位置)。若选择 BlendingHigh,则以前后指令速度较高者作为连接速度;若选择 BlendingLow,则以前后指令速度较低者作为连接速度。而 BlendingPreviousBlendNext 原理相同,唯改以选择前方指令速度或是后方指令速度作为连接速度。

 

在一系列的运动指令中,在第一个指令中设定的融合模式不会产生任何影响,因为融合主要作用为融合当前的动作与前一个动作;而既然第一次以前不会有任何指令,那么任何融合模式的设定将不影响。例如:MoveAxisAbsolute 为第一个运动指令,将 BufferMode 参数设置为 mcBlendingHighmcBlendingNextmcAborting 或任何其他值皆不影响 MoveAxisAbsolute,然而第一个指令将受融合模式设定的第二个指令所影响。若 MoveAxisRelative 为第二个指令,其融合模式为 mcBlendingNext,则融合速度将会是 MoveAxisRelative 的速度。

融合时,以下几点须注意:

  1. 第一个指令所设定的融合模式不会产生任何影响。
  2. 次一个指令的融合模式将会影响前一个指令。

预看

KINGSTAR 使用"预看"的概念连接速度和路径,表示在执行运动指令时,会同时考虑所有运动指令的速度和路径(路径适用于多个轴),以实现连续与稳定的动作。例如:若有五个运动指令,当第一个指令正在运行时,这五个运动指令的参数均会被评估,以生成在指令间具有速度和路径平滑转换的运动轮廓。

KINGSTAR 最多支援预看 511 个指令(功能块)。

转换模式

使用转换模式时,转换的曲线融合了两个运动的路径。

转换模式 意义
mcNone 无转换。
mcCornerDistance 以给定的转角距离转换。

以上类型可在 McTransitionMode 找到。在运动指令中,这些值用作 TransitionMode 的参数,而不同的转换模式使用不同的转换参数。

目前 KINGSTAR 仅支援 CornerDistance。

CornerDistance

CornerDistance 使用 n 度曲线来连结路径及两个运动。下图展示从 E1 开始至 S2 结束之融合路径。在未融合的状况下,E1 与 S2 位置相同,为使两路径连接,实际转换位置与原始位置之间需保留些许距离使轴从路径一转至路径二,此距离为 d,d 的长度将受使用的硬体、轴的运动曲线、切割材料的精密度、障碍物的位置、所开发的应用程式及许多其他因素所影响。所有因素皆须被纳入考量以得出适当的 d 值。使用 d 时,轴在行进一定距离后开始沿插入的曲线移动。例如:若轴移动的整个距离(一条路径)为 1000,而 d 为 50,则轴将在移动 950 个单位后开始在转换路径上移动。其中 d 值不可小于零或大于轴行径的整个距离。因此上述例子的 d 值不可大于 1000。

S1:起始点 1

S2:起始点 2

E1:终点 1

E2:终点 2

d:融合路径的距离

1:路径一

2:路径二

单轴

在单轴的情况下,前后运动间速度需相连,若未有融合发生,可使用 MoveAxisContinuousAbsoluteMoveAxisContinuousRelative 加上另一个运动指令来连续移动轴,如:MoveAxisContinuousAbsolute + MoveAxisRelative,如此一来,融合速度将永远为 "BlendingNext",因速度的融合方式是无法自定的,若想要有弹性的融合速度,融合模式将是必要的。

支援速度融合的函式

下表列出 RT 与 Win32 支援融合速度的函式。在其他介面的函式亦为相同的运作方式。

名称 意义
MoveAxisAbsolute 下达一个目标为特定绝对位置之运动指令。
MoveAxisAdditive 下达一个目标为特定相对位置之运动指令。呼叫此命令时,给定之相对距离将添加于离散运动中最后一个指令位置。指令位置之定义请参考 McSource
MoveAxisRelative 下达一个目标为特定相对位置之运动指令。呼叫此命令时,给定之相对距离将添加于当前设置位置。
MoveAxisVelocity 下达一个永远照特定速度移动之运动指令。

使用融合模式

欲使用融合模式,请使用融合模式其中之一值填写 BufferMode。例如:

MoveAxisAbsolute(0, 360, 360, 360 * 10, 360 * 10, 360 * 1000, mcPositiveDirection, mcAborting);
MoveAxisAbsolute(0, 360 * 2, 360 * 2, 360 * 10, 360 * 10, 360 * 1000, mcPositiveDirection, mcBlendingLow);

第一个 MoveAxisAbsolute:请注意 BufferMode mcAborting。因其为第一个指令,所设定的 BufferMode 值不会影响指令本身或其他。可将此值设定为 mcAborting, mcBuffered, mcCancel, mcBlendingNext 或其他在 McBufferMode 的值。

第二个 MoveAxisAbsolute当第一个 MoveAxisAbsolute 转换到第二个 MoveAxisAbsolute 时,融合速度为 720。

欲了解其他融合模式的详细资讯,请看 MoveAxisAbsolute 中的范例。

多轴

在多轴的情况下,前后运动间的速度以及路径必需相连。其速度连接方式与单轴相同,而路径连接方法为路径融合,此法需使用转换模式与转换参数。

支援速度与路径融合的函式

下表列举支援速度与路径融合的 RT 及 Win32 函式。其他介面的函式运作方式相同。

请注意 KINGSTAR 4.5MoveCircular 函式仅支援速度融合。

名称 意义
MoveLinearAbsolute 命令轴组之工具中心点自当前位置进行直线插补运动至指定坐标系之绝对位置。
MoveLinearAdditive 命令轴组之工具中心点自最后一个指令位置进行直线插补运动至指定坐标系之添加位置。给定之距离会被添加到最后一个指令位置。
MoveLinearRelative 命令轴组之工具中心点自当前位置进行直线插补运动至指定坐标系之相对位置。给定之相对距离会被添加到当前设置位置。
MoveCircularAbsolute

命令轴组之工具中心点自当前位置进行圆轴插补运动。终点及辅助点为指定座标系中之绝对位置(此两点意义取决于所选择之 CircMode 模式)。

注意:KINGSTAR 4.5 中仅支援速度融合。

MoveCircularAdditive

命令轴组之工具中心点自当前位置进行圆轴插补运动。终点及辅助点为指定座标系中之相对位置(此两点意义取决于所选择之 CircMode 模式)。给定之相对距离会被添加到执行时之设置位置。指定的相对距离在执行时将被添加到所设定的位置。

注意:KINGSTAR 4.5 中仅支援速度融合。

MoveCircularRelative

命令轴组之工具中心点自当前位置进行圆轴插补运动。终点及辅助点为指定座标系中之相对位置(此两点意义取决于所选择之 CircMode 模式)。给定之相对距离为相对于起始点之距离。

注意:KINGSTAR 4.5 中仅支援速度融合。

MoveCircular 使用案例

由于 MoveCircular 函式仅支援速度融合,建议仅在圆形路径与另一条路径相切时才使用融合模式。以下表格说明循环路径的两种使用案例:

使用案例一 使用案例二

路径一:MoveLinearAbsolute

路径二:MoveCircularAbsolute

S1:起始点 1

S2:起始点 2

E1:终点 1

E2:终点 2

路径一:MoveCircularAbsolute

路径二:MoveLinearAbsolute

S1:起始点 1

S2:起始点 2

E1:终点 1

E2:终点 2

使用融合与转换模式

欲使用融合与转换模式,请使用融合模式其中之一值填写 BufferMode ;使用 mcCornerDistance 填写 TransitionMode。例如:

PositionArray[0] = 1000;
PositionArray[1] = 0;
PositionArray[2] = 0;
MoveLinearAbsolute(1, 3, PositionArray, 5000, 5000 * 10, 5000 * 10, 5000 * 1000,
   mcAxisCoordSystem, mcAborting, mcNone, NULL);

PositionArray[0] = 1000;
PositionArray[1] = 1000;
PositionArray[2] = 0;
TransitionParam = 200;
MoveLinearAbsolute(1, 3, PositionArray, 3000, 5000 * 10, 5000 * 10, 5000 * 1000,
   mcAxisCoordSystem, mcBlendingLow, mcCornerDistance, &TransitionParam);

第一个 MoveLinearAbsolute:请注意 BufferMode mcAborting。因其为第一个指令,所设定的 BufferMode 值不会影响指令本身。可将此值设定为 mcAborting, mcBuffered, mcCancel, mcBlendingNext 或其他在 McBufferMode 类型的值。TransitionMode 运作方式相同。TransitionParameter 可以是任何值。

第二个 MoveLinearAbsoluteBufferModemcBlendingLowTransitionModemcCornerDistance,其 TransitionParameter 为 200。当第一个 MoveLinearAbsolute 转换到第二个 MoveLinearAbsolute 时,融合速度为 3000。转换路径的长度为 200。

欲了解如何使用融合与转换模式的更多详细资讯,请看 MoveLinearAbsolute 中的范例。

参见

RT 与 Win32-KINGSTAR 运动 - 轴 PTP 运动

MoveAxisAbsolute

MoveAxisAdditive

MoveAxisRelative

RT 与 Win32-KINGSTAR 运动 - 轴组运动

MoveLinearAbsolute

MoveLinearAdditive

MoveLinearRelative

MoveCircularAbsolute

MoveCircularAdditive

MoveCircularRelative

MoveHelicalAbsolute

MoveHelicalAdditive

MoveHelicalRelative

.NET API-运动类别 - 轴 PTP 运动

MoveAxisAbsolute

MoveAxisAdditive

MoveAxisRelative

.NET API-运动类别 - 轴组运动

MoveLinearAbsolute

MoveLinearAdditive

MoveLinearRelative

MoveCircularAbsolute

MoveCircularAdditive

MoveCircularRelative

MoveHelicalAbsolute

MoveHelicalAdditive

MoveHelicalRelative

.NET Class-IAxis 介面 - 方法

IAxis.MoveAbsolute

IAxis.MoveAdditive

IAxis.MoveRelative

.NET Class-IGroup 介面 - 方法

IGroup.MoveLinearAbsolute

IGroup.MoveLinearAdditive

IGroup.MoveLinearRelative

IGroup.MoveCircularAbsolute

IGroup.MoveCircularAdditive

IGroup.MoveCircularRelative

IGroup.MoveHelicalAbsolute

IGroup.MoveHelicalAdditive

IGroup.MoveHelicalRelative

PLC 功能块 – 单轴 – 单轴运动

MC_MoveAbsolute

MC_MoveAdditive

MC_MoveRelative

PLC 功能块 – 多轴 – 轴组运动

MC_MoveLinearAbsolute

MC_MoveLinearAdditive

MC_MoveLinearRelative

MC_MoveCircularAbsolute

MC_MoveCircularAdditive

MC_MoveCircularRelative