-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Base for the SM excitation current #55
Comments
My quotation of IEEE 421.5-2005, in this ticket's description leaves some doubts on how to interpret 1 pu field current and voltage. What 421.5-2016 says clarifies that when we have 1 pu on the generator field current, we should have 1 p.u. on the no-load air-gap line (fig. B.1 of IEEE 421.5-2016). |
Yes. This is exactly what happens in test See also the documentation of the SM model.
Do I miss something? |
In my version in PowerGrids.Examples.ENTSOE.TestCase1 I have excitationPuType =nominalStatorVoltageNoLoad, so U=1p.u. with Uf=1 p.u., which is ok. But IEEE indicates that in steady-state when I have Uf=1 p.u. I should have also If=1 p.u, while here we have ifPu=0.540541. This is what this ticket is about (see its name). |
@ceraolo, I missed that you were worried about the excitation current, sorry about that.
The declarative equation-based approach makes it easy to find out, simply by reading the model's source code. That's why I strongly believe the Modelica approach to modelling is superior to traditional Fortran or C/C++ based codes 😄
The truth is, when we wrote this model in 2019, all we did care about was the base unit of the excitation voltage, because that is used by all AVR algorithms, and people are used to IEEE base unit for that. We didn't care much (in fact, we didn't care at all) about the corresponding excitation current, so we left it in Kundur's base units. |
Proposal: we can introduce a BTW, we could exploit the 1.0.2 -> 2.0.0 non-backwards compatibility to rename this option |
Now that OMEdit supports conditional connectors, we could also alternatively provide a physical DC port for the excitation voltage/current interface, as we discussed some time ago when I visited UniPi. But then I think we should use Volt and Ampere, not p.u., as with all other physical ports. Anyway, this is another story that does not belong to this ticket. @ceraolo feel free to open another one about this feature so we don't forget about it. |
yes, I think it is a popular reference, so this name change could make sense |
I remember well this discussion. I'll try to make some checks on this. It is a fact that the commonly used models in Power systems tend to reason in p.u. as the IEEE 421.5 story tells us. I think this is maybe a residual from the past, when physical simulators did not exist, but, on the other hand, I'm afraid it is not an easy task to go against this (so widespread) way of thinking. |
The excitation circuit has a DC interface and DC behaviour, we just need to multiply the p.u. variables for the appropriate base quantities. No big deal.
We could of course define p.u. DC ports. But then we need to basically re-do the whole Modelica.Electrical.Analog library with p.u. variables. And then we're back to square one, where one never knows what is the base quantity and it's very easy to mess up. Which is exactly what we did not want to do when we decided to use physical quantities (not p.u.) at the terminalAC connectors of PowerGrids. After almost five years playing around with these models, I am even more convinced that p.u. make sense locally (e.g. for a synchronous machine model), but not globally, where you eventually end up with questionable ideas as using 100 MW as base quantity for a whole power system (why 100 and not 200?) or, even worse, end up having p.u. variables with different bases all over the place. The transformer model of iPSL is one such example. Something as simple as a transformer becomes horribly complicated and totally obscure. I'd rather avoid that, if possible. I would therefore find it a bit odd if we introduced p.u. physical connectors for such excitation circuits. |
I would never want this.
When computer programs are concerned, I agree.
I would never want this. I would gladly welcome an electric port (of the type in MSL Electrical.basic) for excitation connection, given that we can do this using Park's model, and that all the needed variables (such as the excitation circuit resistance) are available from manufacturer's data. I mean an electric port where voltages are in volt, currents in ampere. |
Good. I must admit that I feel I've to check something to see how to infer base quantities for excitation voltage and current, from the nominal data of the machine. |
I re-read Kundur's book, Section 3.4. To make things more confusing, he uses peak current and voltage whereas we use RMS current and voltage, but I guess this only changes how you compute power (we have a factor 3, Kundur has a factor 3/2) and should be irrelevant for the topic of this ticket. As I understand, the power base for the rotor is the same as for the stator. The current base is Please double-check. |
what I wanted to say here is that all IEC and IEEE governors and AVRs mix the control part with the representation of turbines and exciters, and represent these mixes in terms of block diagrams. |
not only this. Presently the SM model is written in such a way that receives as input voltage and determines current. |
Absolutely. Modelica is a-causal. You just need to remove the input connector and put a DC pin with coupled voltage-current variables instead. Everything else remains untouched. |
Thank you for checking the SM code.
Not always: it depends on how you write the code. For instance, the IEEE control blocks in PowerGrids are written in a casual way. Since The SM model receives the excitation voltage as input, it is letigitimate to ask the question how it is internally written and how large the needed changes are to convert this in an a-causal way. |
We never write anything in a casual way, we're always highly professional 😄 Seriously, there is no such thing as causal models in Modelica. The semantics of
see Section 4.7 of the MLS for a thorough discussion. It is perfectly legitimate to take a model with an input and an output, assign the output, and compute the input backwards. You can find a short demo attached here: Causality.mo.txt The The Note that the equations of block sys are not changed, only the system boundaries are. Eventually, they will be solved in the opposite direction than the input and output connectors would imply. There (almost) no causality in Modelica 😎. The only exception is that Modelica cannot handle impulses. |
I understand all of your reasoning... Anyway. I don't see enough value for our time continuing discussing this. |
At the end of the discussion, I would propose that we implement what was proposed here, i.e.:
|
I see that PowerGrids library proposes examples from IEEE, so I expect it to be written having IEEE 421.5 in mind.
In Annex B of IEEE 421.5-2005 (IEEE 421.5-2016 says the same) I read:
one pu generator field current is that current required to produce rated synchronous machine terminal voltage on the air-gap line, and one pu field voltage is the corresponding field voltage.
This implies that in steady-state the ratio field voltage/field current must be always 1, for linear machines such as PowerGrid's.
In PowerGrid's ENTSOE-TestCase1 I see in the first times (when the machine has no load), ufPuIn=1.0000 and ifPu=0.540541, so the ratio is 1.85. Where does this value come from?
A correct pu value for field currents is important if one wants to use exciters requiring it. I'm currently working on ExcAC6A, which needs this current, but also IEEE_ST4B, included in PowerGrids, receives it as input.
Do I miss something?
The text was updated successfully, but these errors were encountered: