Skip to main content

Rotary Joints and Modulo Axes

Note

Modulo axes within axis groups are supported as of SoftMotion 4.12.0.0.

Modulo axes are only allowed for rotary joints of kinematics. These are rotary joints for which SMKinematicWithInfo.GetAxisProperties returns the value props.eType = Axis_Type.Rotary. If a modulo axis is used for a linear joint or for a kinematic which does not implement ISMKinematicWithInfo, then MC_GroupEnable returns the SMC_MODULO_AXIS_FOR_NON_ROTARY_JOINT error. If a modulo axis is used and the kinematics limit the range of a rotary joint, then MC_GroupEnable returns the SMC_MODULO_AXIS_FOR_LIMITED_ROTARY_JOINT error.

Modulo axes are supported only if the modulo period is 360°. The reason for this is that axes connected to rotary joints have to be configured is such a way that one technical unit [u] corresponds to one angular degree [°]. One period has to correspond to one full rotation. If a modulo axis with a period other than 360° is used, then MC_GroupEnable returns the SMC_MODULO_AXIS_PERIOD_NOT_360 error.

As of version 4.12.0.0, SoftMotion supports only the shortest mode (MC_DIRECTION). This means that the distance and direction of a modulo axis are selected is such a way that they are as close as possible to the start position of the axis. For example, if the orientation axis is at a2 = 30° at the beginning of the movement and at a2 = 290° at the target position, then the position a2 = 290° – 360° = –70° is selected and the axis moves 100° in the negative direction instead of moving 260° in the positive direction.