Configuration and FLASH Screen

Jump to channel selection description Jump to Axis Mode Description Jump to Microstepper Amplitude description Jump to Max Following Error description Jump to InvDistPerCycle description Jump to Lead Compensation description Jump to Input Channel description Jump to Output Channel description Jump to Limit Switch Options description Jump to Axis Parameters Utility Functions description Jump to Launch Threads description Jump to Flash memory description

(Click on above image to jump to relative topic)

The Configuration and FLASH Screen displays and allows changes to KMotion's configuration and allows the configuration, new firmware, or user programs to be FLASH'ed to non volatile memory.

Each axis channel is configured independently.  To view or make changes to a configuration first select the desired axis channel using the channel drop down.  Note that changing an axis on any screen switches the active channel on all other screens simultaneously.

The parameters for each axis's configuration are grouped into three classes:  Definitions, Tuning, and Filters.  Each class of parameters are displayed on three corresponding screens: 

The Configuration Screen contains definition parameters that should be set once and remain set unless a physical change to the hardware is made.  For example, a Stepper motor might be replaced with a Brushless Motor and Encoder. 

The Step Response Screen contains parameters that are tuning related and are located where the tuning response is most often adjusted and checked.  For example, PID (proportional, intparameters are located there. 

The IIR Filter Screen contains parameters related to servo filters.

 

Utilities

The buttons along the bottom of the Configuration Screen allow a set of axis parameters to be:

Note that these buttons operate on all parameters (for one axis) from all screens as a unit.

 

Axis Modes

Use the respective dropdown to set either the axis input or output mode.  The input mode defines the type of position measurement (if required) for the axis.  Closed loop control always requires some type of position measurement..  For open loop stepper motor control, position measurement is optional.  The output mode determines how the output command should be achieved.  Either by driving the on board PWMs and Full Bridge Drivers to control a specific type of motor, or by driving a DAC signal that will drive an external power amplifier.

 

 

 

Input Channels

The Input Channels section specifies which channels for the selected input device will be used.  This may be the channel of an Encoder input or an ADC input depending on the selected input mode.  Resolvers requires two ADC input channels (for sine and cosine), for all other modes the second channel number is not used.

The gain and offset parameters are applied to the respective input device.  The gain is applied before the offset, i.e. x' = ax+b, where a is the gain and b is the offset.. 

Incremental encoders only utilize the gain parameter which may be used to scale or reverse (using a negative gain) the measurement. 

A Resolver is a device that generates analog sine and cosine signals as it's shaft angle changes.  Either one or multiple sine and cosine waves may be produced per revolution of a resolver.  An encoder that generates analog sine and cosine signals may also be connected to a KMotion as though it was a resolver.  Resolver inputs may utilize both gains and offsets and be adjusted such that the sine and cosine ADC measurements are symmetrical about zero and have the same amplitude.  Gain and offset errors may be introduced by either the ADC input circuitry and/or the Resolver itself.  If one were to plot the sine vs. cosine signals as a resolver's position changes, the result should be circle.  KMotion computes the arctangent of the point on the circle (also keeping track of the number of rotations)  to obtain the current position.  An offset or elliptical "circle" will result in a distorted position measurement throughout the cycle.  Therefore note that adjusting the gains and offsets will result in changing the linearity of the position measurement, not the scale of the position measurement itself.  The scale of a resolver input will always be 2π radians per cycle.

An ADC input uses a single absolute ADC channel input to obtain the position measurement.  Gain0 and Offset0 may be used to modify the ADC counts from -2048 .. +2047 to and desired range.

 

Output Channels

The Output Channels section specifies which channels for the selected output device will be used.  This may be the channel of a  PWM connected to an on-board power amplifier, or a DAC that is used to drive an external power amplifier. 

Stepper mode and 4 phase brushless mode require two channels of PWM to be specified.   

DC Servo motor (Brush motor type) only require one PWM channel. 

3 Phase brushless motors require a consecutive pair of PWM channels.  In 3 Phase output mode, only the Output Channel 0 value is used and must be set to an even PWM number.

 

Microstepper Amplitude, Max Following Error, Inv Dist Per Cycle, Lead Compensation

Microstepper Amplitude is only applicable to configurations with output mode of Microstepper.  This parameter sets the amplitude (of the sine wave) in PWM counts (0 .. 255) that will be output to the sine and cosine PWM channels while moving slowly or at rest.  Note that at higher speeds KMotion has the ability to increase the amplitude to compensate for motor inductance effects and may actually be higher.  See Lead Compensation in this same section.

Max Following Error is applicable to all closed loop servo output modes (DC Servo, 3 Phase Brushless, 4 Phase brushless, and DAC Servo).  Whenever the commanded destination and the measured position differ by greater than this value, the axis will be disabled (if this axis is a member of the defined coordinate system, then any coordinated motion will also stop).  To disable following errors set this parameter to a large value.

Inv Dist Per Cycle applies to Stepper, 3 Phase, and 4 Phase motors.  For a stepper motor, the distance per cycle defines the distance that the commanded destination should change by for a motor coil to be driven through a complete sinusoidal cycle.  Parameter should be entered as the inverse (reciprocal) of the distance per cycle.  Stepper motors are most often characterized by shaft angle change per "Full Step".  A motor coil is driven through a complete cycle every four - "Full Steps".  See the following examples:

Example #1 : A mechanism moves 0.001" for each full step of a step motor  It is desired for commanded distance to be in inches.

Result: One Cycle = 4 full steps = 0.004",  Thus InvDistPerCycle = 1.0/0.004 = 250.0 (cycles/inch).  Commanding a move of 1.00 will generate 250 sine waves, or the equivalent of 1000 full steps, or one inch of movement..

 

Example #2 : InvDistPerCycle is left at the default value of 1.0

Result: Move units are in cycles.  Commanding a move of 50 will generate 50 sine waves, or the equivalent of 200 full steps, or one revolution of a 200 Step or 1.8 degree motor.

 

For 3 Phase or 4 Phase motors, Inv Dist Per Cycle represents the inverse of the distance for one complete commutation cycle.  See the example below.

 

Example #1 : A 3 phase motor/encoder has a 4096 count per revolution encoder which is used for position feedback and for motor commutation.  InputGain0 is set to 1.0 so position measurement remains as encoder counts.  The motor design is  such that the commutation goes through 3 complete cycles each motor revolution. 

Result: One Cycle = 4096 counts/3.0  Thus InvDistPerCycle = 3.0/4096 = 0.000732421875. 

 

Note that it is important to use a high degree of precision to avoid commutation errors after moving to very large positions (or at constant velocity for a long period of time).  KMotion maintains Inv Dist Per Cycle (as well as position) as a double precision (64 bit) floating point number for this reason (more than 70 years at 1 MHz would be required to have 1 count of error)

 

Lead Compensation may be used to compensate for motor inductance.  When a voltage is applied to a coil at a low frequencies, the current flow is dictated by the coil's resistance and is constant.  As the frequency increases at some point, where , the inductance, L,  begins to dominate and the current drops (see plot below).  KMotion's Lead Compensator has the opposite effect, it has a constant gain of 1 and at some point increases with frequency.  The Lead Compensation parameter sets (indirectly) the frequency where this occurs.  If the frequency is set to match the frequency of the motor, the effects will cancel, and the motor current (and torque) will remain constant to a much higher frequency. 

This assumes that the nominal drive voltage is lower than the available supply voltage.  For example, a 5V stepper motor might be driven with a 15V supply to allow head room for the applied voltage to be increased at high frequencies (speeds).

The simple formula that implements the Lead Compensation is:

v ' = v + Δv L

where v is the voltage before the compensation, v' is the voltage after the compensation, Δv is the change in output voltage from the last servo sample, and L is the Lead Compensation value.

The following formula will compute the "knee" frequency for a particular lead and servo sample rate (normally T=90 us).

or the inverse of this formula will provide the lead value to position the knee at a particular frequency.

The Following table generated from the above formula may also be used.  For most motors the Lead Compensation values will be within the range of 5 - 20. 

 

Freq, Hz Lead
50 35.37
60 29.47
70 25.26
80 22.11
90 19.65
100 17.69
120 14.74
140 12.63
160 11.06
180 9.83
200 8.85
220 8.04
240 7.37
260 6.81
280 6.32
300 5.90
350 5.06
400 4.43
450 3.94
500 3.55
550 3.23
600 2.96
650 2.74
700 2.54
750 2.38
800 2.23
850 2.10
900 1.99
950 1.88
1000 1.79

 

 

This plot above displays a simple 0.5 second motion with no Lead Compensation for a Microstepper Motor.  Position axis shown on the primary (left axis) for the red plot has units of cycles.  PWM output shown on the secondary (right axis) for the green plot has units of PWM counts.  Move parameters are: Vel=200 cycles/sec, Accel=200 cycles/sec2, Jerk=10000 cycles/sec3Note that regardless of velocity PWM amplitude is constant

This plot displays the same 0.5 second motion with Lead Compensation = 27.0.  All other parameters same as above.  Note how PWM amplitude increases with velocity

 

If motor parameters are unknown, a trial and error approach may be used to find the best lead compensation value.  The following procedure may be used:

  1. Set Lead Compensation to zero
  2. Increase motor speed until a drop in torque is first detected
  3. Increase Lead Compensation until normal torque is restored

Setting the Lead Compensation too high should be avoided, as it may cause over current in the motor at medium speeds or voltage distortion due to saturation (clipping).

 

 

Limit Switch Options

KMotion has the ability to monitor limit switch inputs for each axis and stop motion when a physical limit switch is detected.  The limit switch options allow this feature to be enabled or disabled for each limit (positive or negative), what specific bit to be monitored for each limit, what polarity of the bit indicates contact with the limit, and what action to perform when a limit is detected.

Select Watch Limit to enable limit switch monitoring. 

Select Stop when low to select negative true logic for the limit (motion will be stopped when a low level is detected). 

Specify a bit no. for which bit is to be monitored for the limit condition.  See the Digital IO Screen for current I/O bit status and a recommended bit assignment for limit switches (bits 12 through 19).  If in a particular application it isn't critical to determine which Limit Switch (either positive or negative, or even which axis) the number of digital I/O bits consumed by limit switches may be reduced by "wire ORing" (connecting in parallel) multiple switches together.  In this case, the same bit number may be specified more than one place.

The Action drop down specifies what action should be performed when a limit is encountered.

Kill Motor Drive - will completely disable the axis whenever the limit condition is present.  Note that it will not be possible to re-enable the axis (and move out of the limit) while the limit condition is still present and this mode remains to be selected.

Disallow drive into limit - will disable the axis whenever the limit condition is present and a motion is made into the direction of the limit.  This mode will allow the axis to be re-enabled while inside the limit and will allow a move away from the limit.

Stop Movement - this action will keep the axis enabled, but will freeze the commanded position as soon as the limit is detected, and stop any motion trajectory in progress for the axis.

Furthermore, in all the above cases and a limit condition is detected, if the axis belongs to the set of axis in the coordinated group, then any coordinated motion trajectory will be halted.

 

Launch on Power Up

The launch on power up configuration specifies which User Programs are to be automatically launched on power up for stand alone operation of KMotion.  See the C Program Screen for information on how to Edit, Compile, and Download a C program into KMotion for execution into one (or more) of the 7 Thread program spaces within KMotion.

 

 

 

 

To configure a program execute on power up, perform the following steps:

  1. Compile and Download a C Program to a particular Thread Space.

  2. Select Launch on Power Up for the same Thread.

  3. Flash the User Memory (see following section).

  4. Disconnect the Host USB cable

  5. Cycle Power on the KMotion

 

FLASH

The entire user memory space may be Flashed into nonvolatile memory by depressing the Flash - User Memory button.  This saves all of the axis configurations, all user program thread spaces, and the user persistent data section.  On all subsequent power up resets, KMotion will revert to that saved configuration. (note that it is preferred to have the host, or a user program, configure the board before each use rather than relying on the exact state of a KMotion set to a particular state at some point in the past).

To upgrade the system firmware in a KMotion use the Flash - New Version button.  The user will be prompted to select a DSPKMotion.out COFF file from within the KMotion Install Directory to download and Flash.  Note that all user programs and data will be deleted from KMotion when loading a new version. 

After the firmware has been flashed it is necessary to re-boot the KMotion in order for the new firmware to become active.

It is important that the <Install Directory>\DSP_KMotion\DSPKMotion.out file match the firmware that is flashed into KMotion.  User C programs are Linked using this file to make calls and to access data located within the KMotion firmware. Whenever a user program is compiled and linked using this file, the timestamp of this file is compared against the timestamp of the executing firmware (if a KMotion is currently connected).  If the timestamps differ, the following message will be displayed, and it is not recommended to continue.  The "Version" Console Script Command may also be used to check the firmware version.

 

In all cases while flashing firmware or user programs the process should not be interrupted or a corrupted flash image may result which renders the board un-bootable.  However if this occurs the Flash Recovery mode may be used to recover from the situation.  To perform the recovery, press the Flash Recovery button and follow the dialog prompts to:

  1. Select the firmware file to boot
  2. Turn off KMotion
  3. Turn on KMotion
  4. After KMotion boots, Flash the New Version