Unexpected Myxa behaviour at low voltages

Hey there,

during the latest test campaign, we ran into some weird behaviour with our Myxas.
The setup contained 6 Myxa ESCs with the latest telega v1.0 and the same settings on all of them. Power was provided by a 12S battery.
The ESCs were running smoothly for quite some time, but when the voltage dropped below ~36V the Q current of one of the Myxas started oscillating with an amplitude of several amperes, as can be seen in the following picture and soon after a second one did so, too. Visually a variation in velocity was noticeable as well.

A data snapshot to said test run can be found here.

This behaviour seems strange and undesired to us, especially since only two of the six behave like this. Also it was reproducible, as we first noticed this in an earlier test, where the same ESC (Node ID 5) started oscillating like this.

Any ideas what might cause this? If you need any further information, please let me know.

Kind regards

Please share the configuration parameters.

drive.current_brake_pu: 0.7
drive.flux_weakening.bemf_pid: [4.0, 2.0, 0.009999999776482582]
drive.flux_weakening.voltage_boost: 1.2
drive.observer.0_ekf.proc_noise: [1000000.0, 3000000.0, 100000000.0]
drive.observer.0_ekf.sched_factor: [0.800000011920929, 0.949999988079071]
drive.observer.1_mras.gain: 1000.0
drive.observer.type: 0
drive.pre_calibrate: false
drive.runner.0_ramp.spinup_current_pu: [0.3, 0.2]
drive.runner.0_ramp.spinup_duration: [0.1, 0.4, 0.4, 0.002, 0.1, 0.6]
drive.runner.0_ramp.velocity_stall_spinup: [5.0, 12.0]
drive.runner.type: 0
drive.stall_limit: 20
drive.velocity_ctl.2_indi.acceleration_pi: [30.0, 0.0]
drive.velocity_ctl.2_indi.mass: 7.e-05
drive.velocity_ctl.acceleration: [-1200.0, 1200.0]
drive.velocity_ctl.type: 2
drive.voltage_clipping: false
mns.deadman_timeout: 0.5
mns.local_timestamp: false
mns.pub_interval_min: 0.05
mns.ratiometric_setpoint_min: 0.0
mns.ratiometric_to_absolute_mul: 0.0
mns.setpoint_index: 0
mns.status_period: 1.0
motor.current_ctl_bwr: 0.05
motor.current_max: 40.0
motor.current_ramp: 5000.0
motor.flux_linkage: 0.002737685339525342
motor.inductance_dq: [3.69345216313377e-05, 3.69345216313377e-05]
motor.mechanical_ratio: 21
motor.resistance: 0.09874558448791504
motor.thermistor_v2k: [0.0, 0.0, 0.0]
motor.voltage_ramp: 20.0
servo.profile.acceleration: [-200.0, 100.0]
servo.profile.jerk: 2000.0
servo.profile.velocity: [-50.0, 50.0]
standby.brake_voltage: 0
sys.debug: false
sys.golden: sys.
vsi.activation_latency: 0.009999999776482582
vsi.bridge_resistance: [0.004000000189989805, 0.007000000216066837, 0.004000000189989805, 0.007000000216066837, 0.004000000189989805, 0.004000000189989805]
vsi.calibration_duration: 2.0
vsi.dc_voltage_gain: 18.799999237060547
vsi.hw_fault_latency: 0.10000000149011612
vsi.phase_current_gain: [33.33333206176758, 33.33333206176758, 8.333333015441895, 8.333333015441895]
vsi.phase_current_gain_attack_decay: [1.5, 0.36000001430511475]
vsi.phase_current_gain_decay_time: 0.10000000149011612
vsi.phase_current_sampling_window: 1.9000000293090125e-06
vsi.phase_current_stderr: [0.4472135901451111, 0.4472135901451111, 0.3162277638912201, 0.3162277638912201]
vsi.pwm_dead_time: 0.0
vsi.pwm_freq_mul_log2: 0
vsi.shortest_time_in_disabled_state: 1.9999999494757503e-05
vsi.swap_ab: true
vsi.thermistor_v2k: [223.14999389648438, 100.0, 0.0]
vsi.tick_freq: 29402.15625

Can you please share the values of the dq voltage vector and the DC voltage near the point where the problem appears? The DQ quantities are published via the dq topic.

To rule out the possibility that the problem is caused by the underperformance of the DQ current controller, please ensure that the problem is reproducible with motor.current_ctl_bwr set to 0.06.

The dc voltage and dq measurements are given in the link I provided above.
Here you can find a slightly altered version, with a bit more information about the dq voltages.

We will test the setting you suggested in the upcoming days. I will come back to you, once that is done.

Kind regards

I think the moment of inertia configured in the INDI controller is too high. The controller may operate normally in most conditions while on the verge of a self-induced oscillation. When the DC link voltage is reduced, the point of voltage saturation is approached, where the maximum magnitude of the voltage vector is |u_{dq}| = u_\text{max} = f_\text{util}\frac{u_\text{dc}}{\sqrt{3}}; f_\text{util} \approx 0.94. While the system is not yet continuously saturated, it enters the saturation state sporadically when the controller demands peak torque to compensate for external disturbances (we do not see this on the plots because the telemetry data is heavily downsampled by Telega); if the configured moment of inertia is high enough, this may be sufficient to cause self-induced oscillation to commence.

The drives that exhibit this behavior also happen to be those where the DC link voltage is the lowest; I suspect they may be located farthest from the battery than the other ones, so they are affected by this problem first.

Try reducing drive.velocity_ctl.2_indi.mass to 5.e-05.