Search found 6 matches: characteristic

Searched query: characteristic

by Pete9008
Sun Oct 23, 2022 1:09 pm
Forum: Drive trains (motors and inverters)
Topic: Halved current during field weakening
Replies: 151
Views: 49076

Re: Halved current during field weakening

LeonB wrote: Sun Apr 24, 2022 3:57 pm Here is another article which explains the topic of characteristic current, voltage ellipses and field weakening and also presents some formulas:
https://ieeexplore.ieee.org/document/6457462
Especially figure 8 and the related text are great for understanding what’s going on. They also come up with formulas and step by step explanations on how to calculate id and iq. The main difference being, that they are interested in constant torque and thus, have a torque as input which makes for some quite lengthy calculations. In our case, we command a current and thus, can save on a lot of the math.

So, in a perfect world, an id-iq diagram would look like that:
1.PNG
The current limit is given by our throttle input Is:
2.PNG
We can freely choose id and iq within this circle and in the best case, we would choose the intersection of the MTPA curve and current limit. However, there is also a voltage limit. Id and iq have to fulfill the following equation:
3.PNG
As the name suggests, it depends on the voltage Vs that is the peak value of the maximum phase voltage.
In the idiq diagram, this voltage limit is an ellipse with its center at the characteristic current:
4.PNG
Thus, the diagram would look like that:
5.PNG
Now id and iq have to lay within the current limit circle and the voltage limit ellipse (the red region). If one would hit the voltage limit and still keep requesting more and more current outside the allowed area, the resulting currents will not reach the requested values (ud maxes out..). One could just take back the throttle and reach the intersection between the MTPA curve, current circle and voltage ellipse (position A in the image below):
6.PNG
This probably explains celerons experience with lowering throtcur yielding more acceleration. However, this also decreases overall power. Instead, one could move along the voltage ellipse till one reaches the intersection between ellipse and current limit (position B). Not on the MTPA curve anymore and thus not as efficient, but more power and torque.

How could this be implemented in the software? One would need to check if the voltage limit condition is fulfilled and if not, increase id till the condition is fullfilled (while at the same time fulfilling the current limit). For that one needs the flux linkage as well as q and d inductance. At least for the prius gen 3 motor I could find these values rather easily. Sadly, both inductances depend on id and iq and thus, a lookup table would be required. In the article they also write about how they have got theirs, but at least for a start one could use some rather conservative numbers and just test if it does any difference at all (i.e., ud doesn’t maxes out).
Thanks for posting this. Reading it, and the paper Johannes posted in the simulation thread, finally made my understanding of motors click. Your analysis of what's going on is spot on :)
by LeonB
Sun Apr 24, 2022 3:57 pm
Forum: Drive trains (motors and inverters)
Topic: Halved current during field weakening
Replies: 151
Views: 49076

Re: Halved current during field weakening

Here is another article which explains the topic of characteristic current, voltage ellipses and field weakening and also presents some formulas:
https://ieeexplore.ieee.org/document/6457462
Especially figure 8 and the related text are great for understanding what’s going on. They also come up with formulas and step by step explanations on how to calculate id and iq. The main difference being, that they are interested in constant torque and thus, have a torque as input which makes for some quite lengthy calculations. In our case, we command a current and thus, can save on a lot of the math.

So, in a perfect world, an id-iq diagram would look like that:
6.PNG
The current limit is given by our throttle input Is:
5.PNG

We can freely choose id and iq within this circle and in the best case, we would choose the intersection of the MTPA curve and current limit. However, there is also a voltage limit. Id and iq have to fulfill the following equation:
4.PNG
4.PNG (1.99 KiB) Viewed 7553 times
As the name suggests, it depends on the voltage Vs that is the peak value of the maximum phase voltage.
In the idiq diagram, this voltage limit is an ellipse with its center at the characteristic current:
3.PNG
3.PNG (10.26 KiB) Viewed 7553 times
Thus, the diagram would look like that:
2.PNG
2.PNG (4.12 KiB) Viewed 7553 times
Now id and iq have to lay within the current limit circle and the voltage limit ellipse (the red region). If one would hit the voltage limit and still keep requesting more and more current outside the allowed area, the resulting currents will not reach the requested values (ud maxes out..). One could just take back the throttle and reach the intersection between the MTPA curve, current circle and voltage ellipse (position A in the image below):
1.PNG
This probably explains celerons experience with lowering throtcur yielding more acceleration. However, this also decreases overall power. Instead, one could move along the voltage ellipse till one reaches the intersection between ellipse and current limit (position B). Not on the MTPA curve anymore and thus not as efficient, but more power and torque.

How could this be implemented in the software? One would need to check if the voltage limit condition is fulfilled and if not, increase id till the condition is fullfilled (while at the same time fulfilling the current limit). For that one needs the flux linkage as well as q and d inductance. At least for the prius gen 3 motor I could find these values rather easily. Sadly, both inductances depend on id and iq and thus, a lookup table would be required. In the article they also write about how they have got theirs, but at least for a start one could use some rather conservative numbers and just test if it does any difference at all (i.e., ud doesn’t maxes out).
by celeron55
Wed Apr 06, 2022 7:32 am
Forum: Drive trains (motors and inverters)
Topic: Halved current during field weakening
Replies: 151
Views: 49076

Re: Halved current during field weakening

johu wrote: Tue Apr 05, 2022 5:34 pm Not sure if that helps the characteristic current issue, if I understand correctly at some point total motor current must be limited?
That's how it appears to me. I have too little motor control experience to actually try to figure out a working feedback loop that would do anything useful in achieving that.

I used one evening in attempting to write something new, with absolutely no useful results. Well, the code compiles, I'm a programmer after all, but the feedback I set up didn't end up making any sense and in practice it's just a very silly oscillator. :D
by johu
Tue Apr 05, 2022 5:34 pm
Forum: Drive trains (motors and inverters)
Topic: Halved current during field weakening
Replies: 151
Views: 49076

Re: Halved current during field weakening

celeron55 wrote: Mon Mar 28, 2022 3:37 pm Less current = more acceleration? Sounds like characteristic current to me. Now I need to somehow understand what was happening with the iq-id vector and what that might tell me.
I have made some progress with the "other" FW controller, i.e. the one that tries to keep uq from saturating: viewtopic.php?p=38670#p38670

You can also set when it becomes active, so say maximum possible amplitude is 30000 and you set "qmargin" to 4000 then it will start adding extra id at 26000. Not sure if that helps the characteristic current issue, if I understand correctly at some point total motor current must be limited?
by celeron55
Mon Mar 28, 2022 3:37 pm
Forum: Drive trains (motors and inverters)
Topic: Halved current during field weakening
Replies: 151
Views: 49076

Re: Halved current during field weakening

@johu Can you provide the source for the Oct 17, 2021 firmware, please?

I went testing it, and it didn't really improve anything (didn't break anything either), but I think the idea is in the right direction. Here are two graphs that I took when driving using that firmware.

I should mention fwkp seemed to do basically nothing, but I played with throtcur. I would like to see the source to know what was actually happening.

Here throtcur was 3 for the entire drive. I think I might have changed fwkp from 1 to 10 halfway through, not sure. At the later portion I started testing whether varying the throttle would get me more speed, and I think it might have. Didn't plot the throttle though:
tscrot-2022-03-28_18-03-02.png
In the next drive fwkp was 5 or 1, whatever, it didn't really change anything, but I varied throtcur along the drive while keeping the throttle at 100%, and it changed the "high" speed performance (i.e. performance at around 40-50km/h or 150-200Hz). Near the end you can see the wiggly fstat line while potnom was maxed all the time. I was browsing throtcur values between 0 and 4 or so, and found out that about 0.7 gave me some acceleration, while values outside of that lost the acceleration. Of course once I stopped the car could barely move with throtcur=0.7 and I had to increase it again to something between 2 and 6.
tscrot-2022-03-28_18-17-57.png
Less current = more acceleration? Sounds like characteristic current to me. Now I need to somehow understand what was happening with the iq-id vector and what that might tell me.

EDIT: Placed the graphs the wrong way around. Fixed.

EDIT: Also, why doesn't openinverter provide any throttle mappings? I already added mine to one firmware, but keep losing it when switching firmwares.

Code: Select all

diff --git a/src/throttle.cpp b/src/throttle.cpp
index 9570c95..8ba975a 100644
--- a/src/throttle.cpp
+++ b/src/throttle.cpp
@@ -100,6 +100,11 @@ float Throttle::CalcThrottle(float potnom, float pot2nom, bool brkpedal)
    {
       potnom -= brknom;
       potnom = 100.0f * potnom / (100.0f - brknom);
+
+      // Apply throttle mapping
+      //potnom = potnom * potnom / 150.0f + potnom / 3.0f; // About ^1.4
+      potnom = potnom * potnom / 133.333f + potnom / 4.0f; // About ^1.5
+      //potnom = potnom * potnom / 100.0f; // ^2.0
    }
 
    return potnom;
by celeron55
Mon Mar 28, 2022 1:51 pm
Forum: Drive trains (motors and inverters)
Topic: Halved current during field weakening
Replies: 151
Views: 49076

Re: Halved current during field weakening

http://web.mit.edu/kirtley/kirtley/binl ... ontrol.pdf

"Since the current regulator loses control of the instantaneous machine phase currents under such conditions [4], the current vector command must be continually adjusted so that it always resides safely inside the voltage ellipse. However, it is desirable to approach the ellipse as closely as possible under heavy load conditions in order to deliver maximum power from the IPM machine"

This seems to match what I have seen in my previous tests that have included syncadv changes and where I have been trying to figure out the actual iq-id current vector that is happening.

I'm not sure if I get this, but how I understand it currently is that in practice before ud hits the floor, the iq-id vector has to be moved closer to the motor's characteristic current point. Moving the iq-id vector closer to the characteristic current point should always result in gaining more room in ud.

At the characteristic current point no torque is generated (due to iq=0A), so to generate meaningful torque, you have to maintain as much iq as you can.

The iq of the characteristic current point is always 0A, and the id varies between motors. The characteristic id is constant and it can be anything, from 0A to higher than the maximum current for the motor. When the characteristic id of the motor is higher than the maximum current of the motor, you can drive the motor without thinking too much about the characteristic id.

The Leaf motor and many others have a characteristic id higher than the maximum current. In such a motor, the way to get maximum field weakening is to point the iq-id vector increasingly towards -id using maximum current. Actually, what I said before was a lie - in these motors you cannot infinitely approach the characteristic current point, thus ud inevitably hits the floor at some point with increasing speed.

The MGR has a characteristic id much less than the maximum current, which is the source of our problems. In such a motor, if you point the iq-id vector increasingly towards -id using maximum current, you go way off from the characteristic current point and don't get field weakening.

So, before ud hits the floor, the iq-id vector has to be moved closer to the motor's characteristic current point. This generally involves decreasing iq, and either decreasing or increasing id so as to target the characteristic id. This can be done using a limiting mechanism with a ratio between iq and id, and a base offset for id, as the id limit has to be centered around the characteristic id. Basically: limit iq down, and limit id within a range of values around the characteristic id. The faster the speed, the smaller the allowed range will be. A reasonable ratio for the limiting seems to be something like 1 iq : 3 id but it of course depends on the motor.

It seems to me the field weakening controller could be set up to control a limit like this.