How to Perform a Homing

The homing of an axis is a procedure which consists of up to two phases. For each phase there are different Function Blocks available. The available Function Blocks are according to PLCopen and belong to the application layer. Available Function Blocks for each phase are listed in the table below.

Overview of the available Homing Function Blocks
  Phase 1 Phase 2/Finish Homing
MC_StepAbsSwitch X  
MC_StepDirect   X
MC_StepLimitSwitch X  
MC_StepRefPulse   X

In order to create a complete homing sequence one Function Block of each phase can be used.

First phase

The used Function Blocks will change the axis state to Homing and will move the axis to approach installed limit switches or a dedicated absolute switch in the desired directions. No manipulation of a position value will be done in this phase. The use of Function Blocks of this phase is optional for a homing.

The signals of the installed limit switches have to be written to a variable of the data type CMC_AXIS_IO.

Second phase

Function Blocks from this phase will also change the axis state to Homing if this has not already happen and will finish the homing. Therefore a new position will be set to the axis. The axis state will then switch back to Standstill.

The use of a Function Block of the second phase is mandatory for a homing.

In general with AC500 Central Motion Control there are two position values: One position value will represent the encoder counts of a drive or the CD522 module which is connected to the input DRIVE_ACTUALPOSITION of the kernel Function Block. The other position is a user defined scaled unit which is used for PLCopen Function Blocks.

There are different ways to finish the homing by manipulate and adjust a position value. Which value should be manipulated depends on the used drive or module and its capabilities. See the following types A, B and C.

Type A

The user defined position unit will be changed only. The Function Block MC_StepDirect must be used here. This type of homing is less complex than the other types but also less precise.

../_images/197e358a9fa3a2b80a33139000d7846d

Homing Type A

Type B

The drive or the CD522 module will change its own position value, the encoder counts.

../_images/2b88fb569fa3a5a20a33139000cee53e

Homing Type B

The process will be started by the execution of the Function Block MC_StepRefPulse.

The axis will start to move.

The output DRIVE_SET_REF of the kernel Function Block will then set the drive to sense for a digital signal. At the same time the kernel Function Block outputs a preset value which will replace the actual encoder count value at the moment the digital signal occurs.

This signal can be a Z-pulse of an incremental encoder but also any other signal from a sensor. This functionality may require a configuration of the drive or the CD522 module in order to be used.

In the same cycle when the new position value is set there also has to be a boolean signal stating a new position value at the input DRIVE_REF_OK of the kernel Function Block. The user defined position value will then be shifted accordingly.

Example of type B for phase 2: Central Motion Control (PLC-Based)

Type C

The encoder count position value will not be changed but involves registration capabilities of a drive or the CD522 module.

../_images/7f1930939fa3a96e0a3313900086a764

Homing Type C

The process will be started by the execution of the Function Block ECAT_HomingOnTouchProbe_APP (ECAT_AC500_V12.lib).

The axis will start to move.

The output DRIVE_SET_REF of the kernel Function Block will then command the drive or the CD522 module to activate the Touch Probe functionality. This will configure the drive to latch a position at the moment a digital signal occurs. The digital signal can be a Z-pulse of an incremental encoder but also any other signal from a sensor. This functionality may require a configuration of the drive or the CD522 module in order to be used.

In combination with the latched position value there is a boolean signal which states that a new latch value has been received. In case of the module CD522 this encoder count position value has to be converted from encoder counts to equivalent user scaled units by the use of the function “CMC_GET_UNITS_FROM_INC” (CompactMotionContral_AC500_V12.lib) before it can be connected to the Function Block ECAT_HomingOnTouchProbe_APP.

To manage the Touch Probe objects of a drive within the CiA402 profile (e.g. Microflex e150) the Function Block ECAT_HomingOnTouchProbe_APP (ECAT_AC500_V12.lib) can be used. This will also cover the conversion from encoder counts to user scaled units.

At the end of the process the Function Block ECAT_HomingOnTouchProbe_APP will manipulate the user scaled position value according to the latched position from the drive and the users settings.

Example of type C for phase 2: Central Motion Control (PLC-Based)

For further information see: AN00220-001 - AC500 and MicroFlex e150 -