模數軸

模數軸 (Modulo Axis) 定位是一種用於旋轉軸的運動控制方法,當軸完成一個完整循環後,其位置會重複。例如,在模數範圍為 0° 到 360° 的旋轉軸中,若軸移動超過 360°,則位置會重置為 0°,而不會變為 361°。同樣地,若軸向後移動超過 0°,則位置會繞回至 359°,而不會變為 -1°。

注意:從 KS 4.5.2 版本開始,支援模數軸。

KINGSTAR 模數軸範例

複製
// MoveAxisAbsolute, shortest path

KsCommandStatus moveCommand{};
KsCommandStatus setParaCmd{};
KsCommandStatus setPosOffsetCmd{};
 
setParaCmd = SetAxisParameter(TargetAxis, McAxisParameter::mcModuloAxisValue, 360, McExecutionMode::mcImmediately);
setParaCmd = WaitForCommand(10, true, setParaCmd);
 
setParaCmd = SetAxisParameter(TargetAxis, McAxisParameter::mcEnableModuloAxis, TRUE, McExecutionMode::mcImmediately);
setParaCmd = WaitForCommand(10, true, setParaCmd);
 
setPosOffsetCmd = SetAxisPositionOffset(TargetAxis, 0, FALSE, McExecutionMode::mcImmediately);
setPosOffsetCmd = WaitForCommand(10, true, setPosOffsetCmd)
 
moveCommand = MoveAxisAbsolute(TargetAxis, 360, 360, 3600, 3600, 360000, McDirection::mcShortestWay, McBufferMode::mcBuffered); // A
moveCommand = MoveAxisAbsolute(TargetAxis, 720, 360, 3600, 3600, 360000, McDirection::mcShortestWay, McBufferMode::mcBuffered); // B
moveCommand = MoveAxisAbsolute(TargetAxis, 60,  360, 3600, 3600, 360000, McDirection::mcShortestWay, McBufferMode::mcBuffered); // C
moveCommand = MoveAxisAbsolute(TargetAxis, 340, 360, 3600, 3600, 360000, McDirection::mcShortestWay, McBufferMode::mcBuffered); // D
moveCommand = MoveAxisAbsolute(TargetAxis, 90,  360, 3600, 3600, 360000, McDirection::mcShortestWay, McBufferMode::mcBuffered); // E

 

此範例包含以下設定:

上圖表示了在各指令下,軸的移動狀況:

指令 開始位置 目標位置 移動距離 (方向) 模數結果

A

360°

360 % 360 = 0

由於軸目前位於 0°,因此不會移動。

B

720°

720 % 360 = 0

由於軸目前位於 0°,因此不會移動。

C

60°

60°

(正方向)

60 % 360 = 60

軸目前位於 0°,前往 60° 的最短路徑是朝正方向移動 60°。若朝負方向移動,則需移動 300°,移動距離較長。

D

60°

340°

80°

(負方向)

340 % 360 = 340

軸目前位於 60°,前往 340° 的最短路徑是朝負方向移動 80°。若朝正方向移動,則需移動 280°,移動距離較長。

E

340°

90°

110°

(正方向)

90 % 360 = 90

軸目前位於 340°,前往 90° 的最短路徑是朝正方向移動 110°。若朝負方向移動,則需移動 250°,移動距離較長。

KINGSTAR 模數軸

本節內容包含了 KINGSTAR 模數軸的相關資訊。