So I have almost watched the entire series of Dave Wilsons "Teaching old motors new tricks" on youtube. It confirms that many things are done right in the openinverter firmware and some are not:
- P and I controller gains are sort of randomly tuned, transient response could be better by tuning them depending on real motor resistance and inductance
- Since IPM motors have different q and d axis inductances the two controllers would also end up with different gains
- There is no d/q decoupling term, so if the q-current is changed this will have a transient, unwanted effect on the d-current and vice versa
- il1, il2, resolver_sin and cos are not sampled simultaneously. That is of course a hardware limit as we only have one ADC
He also stressed again the danger of using field weakening. As soon as your field collapses the motor will just produce the voltage it naturally produces and that creates a current only limited by motor resistance, cable resistance, internal battery resistance and finally the pack fuse. So whenever testing high rpm it is advised to take it slowly. If 6000 rpm is base speed then take it to 7000 rpm (noting that "base speed" drops as your battery voltage decreases). Only if you're super comfortable, take it to 7500 rpm or so.
Don't go to 10000 rpm straight away!
The field weakening approach he introduces is pretty much identical to my last "alternative" field weakening branch where field weakening current depends on the remaining q-axis amplitude.
I think #4 is the most pressing issue as the other 3 "only" effect transient responses which are pretty much in check with all the ramping. I still have hopes that with the correct value of syncadv the ill effects of not sampling those quantities simultaneously can be compensated. So that's what the focus should be on.
So what we want to find is a value for syncadv so that commanding any magnitude of d-current, at any speed, will not generate ANY torque.
I wouldn't advise testing this on an idle motor as there is no natural speed limit when doing field weakening.
The most obvious and most dangerous way to find out is sitting in your car, put the inverter in manual mode, command some q-current to get moving, then when at speed at negative d-current and take away q-current. You should feel the car coasting down, not regenning and not drawing any significant current from the battery.
A better approach would be a small test stand with another motor that simulates the vehicle on the road, but whos got time to build that? A Prius transaxle with dual controller would be a neat way though.
Finally one could try simulating but I certainly don't have the knowledge to do that. Anyone?