In the [TASK] section, you need to specify
TASK = bridgeporttask
this task controller sends auxilliary I/O (spindle, coolant, etc.) to routines that process it for controlling external hardware.
In the [EMCMOT] section, you need to specify
EMCMOT = univstepmod.o
this is the real-time kernel module that handles all motion control and digital I/O between EMC and the USC board.
Unless you are using a PCI plug-in parallel port card, you should probably
have this :
IO_BASE_ADDRESS = 0x378
Which specifies the standard parallel port address for communication with the UPC board.
Period should be commented out like this :
; PERIOD = 0.000016
The ";" prevents this setting from taking effect. The PERIOD interrupt is used for some software step generation programs, but has no use here.
In each [AXIS_n] section, (where n ranges from 0 to number of axes - 1) you should
have the following settings:
TYPE = either LINEAR or ANGULAR
UNITS = the size of a "user unit". If you want user units to be inches, make this
0.0393700787 (one mm expressed in inches); for mm use 1.0
MAX_VELOCITY = user_units per SECOND (not minute)
P = 1000 to start with, this is the main servo gain
I = 5.0 an integral term to improve accuracy over a period of time
D = 50.0 a differential term that damps the system response
FF0 = 0.0 a positioning offset, left for pedantic reasons
FF1 = 2.000 a velocity feedforward, helps reduce following error proportional to velocity
FF2 = 0.25 an acceleration feedforward, helps reduce foll. error when accelerating
BACKLASH = 0.0 you really don't want to use this, anyway
BIAS = 0.0 torque offset, might be useful with holding the knee up
CYCLE_TIME = 0.001 this is the servo update cycle, in seconds, set to 1 KHz here
INPUT_SCALE = the number of step pulses per user_unit. (Follow with a 0)
OUTPUT_SCALE = 1.0 0.0 This is an output gain setting, the sign reverses the motor direction.
MAX_LIMIT = distance from home to the + travel limit, expressed in user_units.
MIN_LIMIT = distance from home to the - travel limit, expressed in user_units.
MIN_OUTPUT = -100.0 Needed to get full range on the PWM duty cycle.
MAX_OUTPUT = 100.0 Needed to get full range on the PWM duty cycle.
SETUP_TIME = 10.0 sets delay between direction change and step pulses, in uS, valid from 0.1 to 25.5 uS.
HOLD_TIME = 5.5 sets width of step pulse, in uS, valid from 0.1 to 25.5 uS.
FERROR = 0.001 this sets the permitted following error (in user_units) proportional to velocity in user_units/second.
MIN_FERROR = 0.005 this sets the minimum permitted following error when velocity is zero.
It is simply added to the FERROR * velocity to get the acceptable error at each servo cycle.
HOMING_VEL = 0.25 sets the velocity (in user_units/sec) that homing is performed at.
HOME_OFFSET =0.0 the location of the system's home position from where the homne switch actually clicked.
SETUP_TIME (not currently implemented - I need to do this!)
HOLD_TIME (not currently implemented - I need to do this!)
In the [EMCIO] section, you need to specify :
EMCIO = ppmcio
ESTOP_SENSE_INDEX = 14
ESTOP_SENSE_POLARITY = 0
ESTOP_WRITE_INDEX = 7
ESTOP_WRITE_POLARITY = 0
You need to make sure none of the other xxx_WRITE_INDEX values are set to 7, as they must not interfere with the ESTOP function.