Skip to content
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

Add ideal transformers to impedances #260

Open
WinfriedL opened this issue Jan 8, 2019 · 4 comments
Open

Add ideal transformers to impedances #260

WinfriedL opened this issue Jan 8, 2019 · 4 comments
Assignees
Labels
enhancement New feature or request powerflow

Comments

@WinfriedL
Copy link
Contributor

I have impedances with ideal transformers at the end in my data. I have added this to pandapower by adding the columns 'ur1_kv' and 'ur2_kv' to the impedance table and calculate an off nominal tap ratio from these. Would you be interested in adding such functionality? In that case I am going to open a pull request.
The column names are of course open for discussion, one could also add a single columns for the tap ratio.

I have tested/compared this with Integral. I would be interested if other tools like powerfactory have this kind of impedance as well?

@WinfriedL
Copy link
Contributor Author

I have created the pull request, with this it might be clearer what I have in mind.

If you consider this addition there are some open points which have to be discussed before merging:

  • Integral does not allow setting an off nominal tap ratio for an asymmetric impedance. This might make sense, but I don't know if this should also be enforced by pandapower
  • I am not totally sure about the impedance pu conversion with this addition. Integral uses Ohm for R and X. Usually when I convert this to pu I would just divide by vn1_kv ** 2 / sn_mva where vn1_kv is the nominal voltage of the from_bus. But with an additional voltage converter I have to correct the impedance values for the off nominal tap ratio (squared). Currently the user has to take care of this, but I am not sure if this is the right approach.
  • Currenty I calculate the taps only if there are any ur1_kv or ur2_kv set, but in that case for all impedances, using the nominal voltages for missing values. This might be bad if there are lots of impedances, but only few have an off nomial ratio because in that case there are lots of ones calculated. I don't know what the best numpy approach would be.
  • Also in the current implementation the missing ur in the impedance dataframe would be filled with the nominal bus voltages after the powerflow. This might be considered bad, since the powerflow should not modify the pandapower net.

@lthurner
Copy link
Collaborator

I have tested/compared this with Integral. I would be interested if other tools like powerfactory have this kind of impedance as well?

Yes this exists in PowerFactory as well. In PowerFactory it is a tap ratio, not vn1_kv & vn2_kv.

I am not totally sure about the impedance pu conversion with this addition. Integral uses Ohm for R and X. Usually when I convert this to pu I would just divide by vn1_kv ** 2 / sn_mva where vn1_kv is the nominal voltage of the from_bus. But with an additional voltage converter I have to correct the impedance values for the off nominal tap ratio (squared). Currently the user has to take care of this, but I am not sure if this is the right approach.

Not sure also, would have to look into it. Is there a reason it is from_bus and not to_bus or just by convention?

Also in the current implementation the missing ur in the impedance dataframe would be filled with the nominal bus voltages after the powerflow. This might be considered bad, since the powerflow should not modify the pandapower net.

Yes it should also be possible to read the voltage value directly from the ppc, so that the pandas table ist not changed and it is also more performant (using numpy instead of pandas).

Currenty I calculate the taps only if there are any ur1_kv or ur2_kv set, but in that case for all impedances, using the nominal voltages for missing values. This might be bad if there are lots of impedances, but only few have an off nomial ratio because in that case there are lots of ones calculated. I don't know what the best numpy approach would be.

If we decide to use a tap_ratio instead of vn1/vn2 it could just default to 1, whereas having vn1/v2 doesn't really have a logical default. If there is no significant advantage in specifically definining vn1/vn2, I would preferr this over having some case by case distinction.

@WinfriedL
Copy link
Contributor Author

Not sure also, would have to look into it. Is there a reason it is from_bus and not to_bus or just by convention?

I think it is just by convention, but I don't know.
I am still not sure if I get it all right, but the problem for the conversion is that it depends on the placement of the transformer. It does make a difference if the voltage is transformed before the impedance or after the impedance (Integral has it at the end).
At the moment I tend to think that is the users problem to correctly convert to pu and know how the network element is defined in the original data, maybe with some hints in the documentation...

Yes it should also be possible to read the voltage value directly from the ppc, so that the pandas table ist not changed and it is also more performant (using numpy instead of pandas).

I am sure it is possible and I will change that.

If we decide to use a tap_ratio instead of vn1/vn2 it could just default to 1, whereas having vn1/v2 doesn't really have a logical default. If there is no significant advantage in specifically definining vn1/vn2, I would preferr this over having some case by case distinction.

I think the only reason for vn1/vn2 is to have it consistent with real transformers. That does not seem to be a significant advantage, so I will use tap_ratio instead.

@WinfriedL
Copy link
Contributor Author

I have updated the implementation to use tap_ratio as parameter.

One still open question is, on which side of the branch the voltage converter should be. This does not matter for tap_ratio=1.

  • At the from side (current implementation)
  • At the to side (Integral implementation)
  • Configurable (like for transformers)

I have no idea if there is a convention or if most tools use one specific side, or if it is more or less random.
I would recommend one of the first two options (along with clear documentation) and avoid the complexity of the third.

@pawellytaev pawellytaev added the enhancement New feature or request label Nov 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request powerflow
Projects
None yet
Development

No branches or pull requests

3 participants