So tonight I started reading about field oriented control, and I came across the following scary looking equation:
- Screenshot at 2023-01-27 00-12-23.png (4.62 KiB) Viewed 5305 times
With a lot of help from CollinK I now understand the basics of this. It's a means of calculating the angle of the rotor magnetic field by integrating current (specifically Iq/Id) and adding that to rotor position, which would be needed to do field oriented control.
However, more fundamentally, it says that the rate of change in the difference between rotor angle and rotor flux angle (ie slip) is proportional to torque current divided by magnetizing current. This is important!
It means that for every Hz of slip, we should increase or decrease the torque current proportionally, but keep the magnetizing current the same!
Example:
Torque current (Q) = 20A
Magnetizing current(D) = 2A
Rotor constant = 0.5
Slip = 0.5 x 20A / 2A = 5Hz
Total current = 22A (or maybe it's 20.1A because of the triangle formed by the 2 vectors, it's not really important for today)
My algorithm assumes that slip and current should be proportional, but this isn't quite true. Most importantly, this falls apart them we reach zero torque:
Torque current (Q) = 0A
Magnetizing current(D) = 2A
Slip = 0.5 x 0A / 2A = 0Hz
Total current: 2A (!)
Regardless of the exact numbers, it seems clear that a major problem with my algorithm is that at zero torque request, I am trying to pull the current down to zero, which is:
1) Unnecessary, hopefully the energy cost is negligible, but really at this point i'm more interested in making it respond properly
2) Slow, the rotor doesn't want to instantly demagnetize, so we see lags in current changes, which are much more noticeable at very low slip values when al current is going into the rotor
3) Unpleasant, by forcing voltage below the back EMF, we are causing unexpected current spikes.
In summary, I now think current should be calculated as:
Current = Magnetizing current + Torque current
Current = Id + Iq
Current = [new parameter] + throtcur * slip
and NOT just: Current = throtcur * slip
By maintaining this ratio better, I should be able to obtain even better control at low speed and *maybe* solve the regen problem. That is if I've actually understood correctly...
johu wrote: ↑Sat Jan 21, 2023 10:00 pm
Indeed the rotor current is circulating at 3 Hz and therefor it takes some time for the field to build up. That's why some FOC implementations keep id (=current circulating in the rotor) at a constant value to speed up transient response. That is at the expense of loosing efficiency to rotor heating. I'd think in EV applications id is always dynamic much like the feed-forward "V/Hz" variant.
It turns out Johannes already mentioned this but I didn't understand the implications at the time!
This all also explains how field weakening works in the induction motor. Once we run out of voltage, we can increase slip. This increases the ratio of torque current and decreases the ratio of magnetizing current, which I assume in turn reduces back EMF and allows us more speed.
A couple of things to add to this that I need to confirm, which may mean this isn't as simple as I'm hoping:
1) At zero Hz slip, the rotor in fact can't be magnetized because there's nothing to induce current in it. This makes me a little more confused about what's happening here. Perhaps it's not the rotor that we're magnetizing at all but just the space around it.
2) Am I sure the current in the rotor doesn't reverse direction when we enter regen. This question is closely related to (1) and I'm really not sure of the answer.