运动方法解说

描述

此页说明了 Motion86 上不同种种运动方法的解说。

运动方法参考表

运动方法
直线运动
弧线运动
划圆运动
螺旋运动

直线运动:

当使用直线运动方法控制 Machine 时,机器将会直线前往目标位置,如附图一:

zero_size

附图一

其路径可用以下 G-Code 达成:

1

2

3

4

5

6

machine.gcode("G1 X0 Y0 Z0 F600");

machine.gcode("G1 X2 Y2 Z4 F600");

machine.gcode("G1 X4 Y4 Z2 F600");

machine.gcode("G1 X6 Y6 Z8 F600");

machine.gcode("G1 X8 Y8 Z6 F600");

machine.gcode("G1 X10 Y10 Z10 F600");

亦或者直接使用 line 函式控制:

1

2

3

4

5

6

machine.line(0, 0, 0, 600);

machine.line(2, 2, 4, 600);

machine.line(4, 4, 2, 600);

machine.line(6, 6, 8, 600);

machine.line(8, 8, 6, 600);

machine.line(10, 10, 10, 600);

弧线运动:

当使用弧线运动方法控制 Machine 时,您可以使用两种不同的方式来控制弧线路径: 1. 圆心模式 即给予圆心与终点位置来计算该弧线之路径。 2. 半径模式 即给予半径与终点位置来计算该弧线之路径。 3. 径度模式 即给予径度来计算该弧线之路径。 而不论使用哪一种模式,都将会需要选择顺时针与逆时针之方向,如附图二、附图三:

zero_size

附图二
zero_size
附图三

在 G-Code 中可以直接使用 G2(CW) 与 G3(CCW) 做为指令区别方向。
如附图二可用以下 G-Code 达成:

1

machine.gcode("G2 X0 Y20 I0 J10 F600");

而附图三可用以下 G-Code 达成:

1

machine.gcode("G3 X0 Y20 I0 J10 F600");

亦或者直接使用 arcXY、arcYZ、arcXZ 函式,附图二使用:

1

machine.arcXY(0, 10, 0, 20, false, 600);

附图三:

1

machine.arcXY(0, 10, 0, 20, true, 600);

当使用半径模式时,当角度不等于 180 度时将会产生 4 种不同的路径,如附图四:

zero_size

附图四

附图四的上下四个弧的半径皆为 10,且目标位置相同,在此需要使用半径的正负号来决定路径。
若要选择角度小于 180 度的弧线,则半径为正值;若要选择角度大于 180 度的弧线,则半径为负值。

如附图四的黄线为顺时针且弧线的角度小于 180 度,可用以下 G-Code 达成:

 

1

machine.gcode("G2 X10 Y0 R10 F600");

亦或者直接使用 arcXY、arcYZ、arcXZ函式的多载方法:

 

1

machine.arcXY(10, 10, 0, false, 600);

橘線為順時針且弧線的角度大於 180 度,可用以下 G-Code 達成:

1

machine.gcode("G2 X10 Y0 R-10 F600");

亦或者直接使用 arcXY、arcYZ、arcXZ 函式的多載方法:

1

machine.arcXY(-10, 10, 0, false, 600);

藍線為逆時針且弧線的角度小於 180 度,可用以下 G-Code 達成:

1

machine.gcode("G3 X10 Y0 R10 F600");

亦或者直接使用 arcXY、arcYZ、arcXZ 函式的多載方法,並利用參數 revDir 控制方向:

1

machine.arcXY(10, 10, 0, true, 600);

紫線為逆時針且弧線的角度大於 180 度,可用以下 G-Code 達成:

1

machine.gcode("G3 X10 Y0 R-10 F600");

亦或者直接使用 arcXY、arcYZ、arcXZ 函式的多載方法,並利用參數 revDir 控制方向:

1

machine.arcXY(-10, 10, 0, true, 600)

※注意,不管是哪一种弧线运动方式都有可能会因为参数设定错误导致目标位置不在圆上,这将导致机器出现非预期运动。

在徑度模式下可以直接使用 arcXY_Theta、arcXZ_Theta、arcYZ_Theta 來控制 Machine 移動,並用徑度正負號決定方向,如下例:

1

2

3

4

5

// 以 600 的進給速率,圓心 (10, 0),順時針劃 90 度的圓

machine.arcXY_Theta(10, 0, HALF_PI, 600);

 

// 以 600 的進給速率,圓心 (10, 0),逆時針劃 90 度的圓

machine.arcXY_Theta(10, 0, -HALF_PI, 600);

划圆运动:

當使用劃圓運動方法控制 Machine 時,機器將會劃圓運動抵達目標位置:

弧線運動的當前位置與目標位置重疊時,將會使 Machine 視為要劃一整圈的圓,
若再加入 G-Code 參數 P 可以亦可表示要繞幾圈,如下例:

1

2

// 以 600 的進給速率,圓心 (10, 0),繞兩圈前往目標位置 (0, 0)

machine.gcode("G2 X0 Y0 I10 J0 P2 F600");

逆時針運動則使用 G3,同弧線運動。

亦或者直接使用 circleXY、circleYZ、circleXZ 函式直接劃一個圓到當前位置,並利用參數 revDir 控制方向:

1

2

// 以 600 的進給速率,圓心 (10, 0),繞一圈前往當前位置

machine.circleXY(10, 0, false, 600);

※ 在圓心與半徑模式下,當原點與目標位置相同將會有無限組解,在該情況下將不做任何運動。

螺旋运动:

当使用螺旋运动方法控制机器时,机器将会在 XY、YZ、XZ 三个平面上以螺旋运动消防目标位置,如附图五、六、七:

zero_size

附图五

zero_size

附图六

zero_size

附图七

螺旋运动可直接使用helicalXY、helicalYZ、helicalXZ函式决定平面,并用径度正负号方向决定: 

1

2

3

4

5

6

7

8

//以600的进给速率,圆心(0, 0),往Z10的位置绕两圈

machine.helicalXY(0, 0, 10, 4 * PI, 600);

 

//以600的进给速度,圆心(0, 0),往X10的位置绕两圈

machine.helicalYZ(0,0, 10, 4 * PI, 600);

 

// 600 个随机变量,位于 (0, 0) 处,Y10 个随机变量。

machine.helicalXZ(0,0,10,4*PI,600);

See Also

gcode()
arcXY()
arcXZ()
arcYZ()
arcXY_Theta()
arcXZ_Theta()
arcYZ_Theta()
circleXY()
circleXZ()
circleYZ()
helicalXY()
helicalXZ()
helicalYZ()


函式庫參考主頁面

86Duino 参考资料的文本遵循 知识共享署名-相同方式共享 3.0 许可证。参考资料中的代码示例已发布到公共领域。