Current Loop Gain Scheduling

Current Loop Gain Scheduling is an advanced feature which allows the current loop gain to be adjusted for motors with varying inductance. A 256-element lookup table is used to select a gain adjustment scale factor based on current.

This feature is needed when the motor inductance is saturated during normal operation. As the current loop gain is calculated using the motor inductance, if the inductance changes, the current loop is at risk of becoming unstable.

If a motor is being used under high loads, the inductance is probably saturated if one or more of the following occurs:

  • Audible chirping

  • Chirping gets louder with higher commanded current.

  • Instability occurs under high current loads (at or near motor peak current AXIS#.MOTOR.IPEAK )

To fix this problem, Gain Scheduling is used to change the current loop gain as a function of the current.

Using the Gain Scheduling View in WorkBench

To use this feature effectively, you should have either an inductance chart of motor inductance as a function of current, or you must have an idea of how the current loop is performing.

If a chart of motor inductance versus current command is available, it is possible to calculate the required current loop gain values over the range of motor currents.

Current Loop Gain = 2000 * 2π* Motor Inductance (H)

Example

Motor Inductance is 3.19 mH, current loop gain would be 40.01

Current Loop Gain = 2000 * 2 π * 0.00319 = 40.01

Once suitable values have been identified, you can enter these values into WorkBench in the Gain Scheduling view. The Import and Export buttons at the bottom of the view allow you to import and export data as .csv files.

 

By default, the current loop value will be what is defined in ILClosed "Instruction List" This is a low-level language and resembles assembly.KP across the whole range of currents. To change the value of IL.KP over a range of values, simply enter a scaling term: 0 - 100% of the current value.

Example

If the current loop gain entered on IL.KP was 40.124 (shown above) and a current loop gain of 36 was desired, a scaling term of 90% should be entered for the desired current ranges.

40.124 * 0.90 = 36.112

Using the Terminal View for Gains Scheduling

You can also use the Terminal to set up the Gains Scheduling Table. If you use the Terminal, then two parameters are required for each lookup table point: IL.KPLOOKUPINDEX and IL.KPLOOKUPVALUE. IL.KPLOOKUPINDEX specifies the lookup table index (0 – 255), and IL.KPLOOKUPVALUE specifies the scaling term (0 – 100%) to scale IL.KP.

The current to which a lookup index refers can be calculated as follows:

IL.CMD Range = DRV.IPEAK/157 * IL.KPLOOKUPINDEX

A full list of table values can also be retrieved using IL.KPLOOKUPVALUES, which returns a comma delimited table as follows:

-->IL.KPLOOKUPVALUES
Index Value
0, 100.000
1, 100.000
2, 100.000
3, 100.000
4, 100.000
5, 100.000
6, 100.000
7, 100.000
8, 100.000
9, 100.000
10, 100.000

Rules for Populating Gain Scheduling Table

The gain scheduling table is populated according to the following rules:

  1. When the drive powers up:
    a. If MOTOR.AUTOSET=1 and FB1.MEMVER >= 0.03, the table is read-only. The entries are calculated and set based on the value of MOTOR.LISAT.
    b. Otherwise, if table entries have been stored as non-volatile parameters, the values are restored.
    c. Otherwise, the table entries are set to default values.
  2. When DRV.RSTVAR is commanded:
    a. Rule 1a is applied.
    b. Otherwise, rule 1c is applied.
  3. When MOTOR.AUTOSET is set to 1, rules 1a to 1c are applied in order.
  4. When the lookup table is imported from a parameter file:
    a. Rule 1a is applied (a read-only table cannot be updated).
    b. Otherwise, table entries are set to the imported values.