homecomp - homing module template
Custom Homing module loaded with [EMCMOT]HOMEMOD=homecomp |
Example of a homing module buildable with halcompile. Demonstrates required code for #includes, function definitions, etc.
If HOMING_BASE is #defined and points to a valid homing.c file, an example of a customized homing module is built. This module creates input hal pins joint.n.request-custom-homing that enable an alternate joint homing state machine for requested joints. A hal output pin joint.N.is_custom-homing verifies selection"
The customized homing module utilizes many of the base homing api routines from homing.c without modification but augments other base functions to add support for custom hal pins and custom joint homing state machines. A user-built module will likely replace additional api functions or augment them with other customizations.
If HOMING_BASE Is not #defined, an actual homing scheme is not implemented but all necessary functions are included as skeleton code. (All joints are effectively homed at all times and cannot be unhomed).
See the source code file: src/emc/motion/homing.c for the baseline implementation that includes all functions for the default homemod module.
To avoid updates that overwrite homecomp.comp, best practice is to rename the file and its component name (example: user_homecomp.comp, user_homecomp).
The (renamed) component can be built and installed with halcompile and then substituted for the default homing module (homemod) using:
$ linuxcnc -m user_homecomp someconfig.ini
or by inifile setting: [EMCMOT]HOMEMOD=user_homecomp
Note:If using a deb install:
1) halcompile is provided by the package linuxcnc-dev
2) This source file for BRANCHNAME (master,2.9,etc) is downloadable from github:
https://github.com/LinuxCNC/linuxcnc/blob/BRANCHNAME/src/hal/components/homecomp.comp
homecomp.N.is-module bit out (default: 1)
Dewey Garrett
GPL