模数轴

模数轴 (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 模数轴的相关资讯。