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

Address fuse limits redundancy in GridConnectionPoint and Fuse #246

Closed
tiyash-basu-frequenz opened this issue Sep 12, 2024 · 4 comments
Closed
Labels
part:❓ We need to figure out which part is affected priority:❓ We need to figure out how soon this should be addressed resolution:wontfix This will not be worked on type:enhancement New feature or enhancement visitble to users

Comments

@tiyash-basu-frequenz
Copy link
Contributor

What's needed?

The GridConnectionPoint message has a field rated_fuse_current to store the fuse limit at the grid connection point.

message GridConnectionPoint {
// This refers to the maximum amount of electrical current, in amperes, that a
// fuse at the grid connection point is designed to safely carry under normal
// operating conditions.
//
// This limit applies to currents both flowing in or out of each of the 3
// phases individually.
//
// In other words, a current _i_ A at one of the phases of the grid connection
// point must comply with the following constraint:
// `-rated_fuse_current <= i <= rated_fuse_current`
uint32 rated_fuse_current = 1;
}

However, we also have a dedicated message for fuses, called Fuse.

message GridConnectionPoint {
// This refers to the maximum amount of electrical current, in amperes, that a
// fuse at the grid connection point is designed to safely carry under normal
// operating conditions.
//
// This limit applies to currents both flowing in or out of each of the 3
// phases individually.
//
// In other words, a current _i_ A at one of the phases of the grid connection
// point must comply with the following constraint:
// `-rated_fuse_current <= i <= rated_fuse_current`
uint32 rated_fuse_current = 1;
}

This means that there are two different ways of specifying the fuse limit at the grid connection point -

  • using only a GridConnectionPoint entity, or
  • adding a Fuse entity as an immediate and only successor to a GridConnectionPoint entity

Proposed solution

Proposal 1

We keep things as they are. That way we statically ensure that a grid connection point always has specified fuse limit.

If a Fuse entity is the only successor to a GridConnectionPoint entity, then the effective fuse limit is the minimum of the two.

Proposal 2

We remove rated_fuse_current from GridConnectionPoint, and always add a following Fuse entity. This then needs to be checked by clients at runtime.

Use cases

No response

Alternatives and workarounds

No response

Additional context

No response

@tiyash-basu-frequenz tiyash-basu-frequenz added type:enhancement New feature or enhancement visitble to users part:❓ We need to figure out which part is affected priority:❓ We need to figure out how soon this should be addressed labels Sep 12, 2024
@tiyash-basu-frequenz tiyash-basu-frequenz added this to the v0.6.2 milestone Sep 12, 2024
@tiyash-basu-frequenz tiyash-basu-frequenz changed the title Extract fuse limit information from GridConnectionPoint Address fuse limits redundancy in GridConnectionPoint and Fuse Sep 12, 2024
@llucax
Copy link
Contributor

llucax commented Sep 13, 2024

I would say this is related to #242. It is also having metadata vs a component-graph based representation of some aspect of the microgrid.

I think we should be ideally consistent and if we go with metadata, then allow it for GridConnectionPoint, but if we lean towards having a more precise component graph, we should probably remove the rated_fuse_current from GridConnectionPoint and required people creating a Fuse in the component graph instead.

I think the UI could help here, if we can add some rules based on the component, we might add a way to automatically always showing both a GridConnectionPoint and Fuse in the creation form when a user wants to create a new GridConnectionPoint, so it is harder to make mistakes and forget about the fuse.

@tiyash-basu-frequenz
Copy link
Contributor Author

I think it is slightly different in concept to #242.

#242 is specifically about representing a separate branch in the circuit. It is not about a property of a meter.

This one is about our model for PCC (which we call GridConnectionPoint for better UX), and its properties. So far we have used the approach of clubbing data fields related to the PCC in GridConnectionPoint, and treating those as properties of GridConnectionPoint entities. This happens to include fuse limits as of now. This could contain more data fields in the future, e.g., max consumption and feed-in power limits.

In short, #242 is about representing electrical connections, whereas this issue is about the properties of GridConnectionPoint, and checking if splitting them up makes sense.

Note that we cannot represent every property via different components (e.g., max feed-in power). So the current approach is still a valid one.

I think the UI could help here, if we can add some rules based on the component, we might add a way to automatically always showing both a GridConnectionPoint and Fuse in the creation form when a user wants to create a new GridConnectionPoint, so it is harder to make mistakes and forget about the fuse.

That is independent of the API definition.

@llucax
Copy link
Contributor

llucax commented Sep 18, 2024

I think it is slightly different in concept to #242.

Yes, of course, this is why I said related :)

This one is about our model for PCC (which we call GridConnectionPoint for better UX), and its properties. So far we have used the approach of clubbing data fields related to the PCC in GridConnectionPoint, and treating those as properties of GridConnectionPoint entities. This happens to include fuse limits as of now. This could contain more data fields in the future, e.g., max consumption and feed-in power limits.

In short, #242 is about representing electrical connections, whereas this issue is about the properties of GridConnectionPoint, and checking if splitting them up makes sense.

Note that we cannot represent every property via different components (e.g., max feed-in power). So the current approach is still a valid one.

Yeah makes sense, of course if there are properties that are part of the grid connection point they should live as metadata/info of that component. If I understand correctly, this is sort of a virtual component, there is no grid connection point as a device, is just sort of 2 cabled being plug together, but there are regulations or contracts or requirements that put some restriction on how electricity can flow through that coupling right? For those, I think grid connection point metadata makes sense. If there is real physical device, like a fuse, just before the coupling, then from a "representing reality" perspective, it sounds like it makes more sense to have a fuse component in the component graph before the grid connection point, as we already have a fuse component.

That is independent of the API definition.

Yeah, but making it harder for users to make mistakes while configuring the microgrid was brought up as a reason for going with metadata instead of a separate component, so I just brought it up because usability issues might be addressed somewhere else.

@llucax llucax modified the milestones: v0.6.2, v0.6.3 Sep 18, 2024
@tiyash-basu-frequenz
Copy link
Contributor Author

We discussed this in a meeting. The conclusion was to keep the fuse limit field inside the GridConnectionPoint message now.

In addition to that, we also concluded that the Fuse component category will not be used internally, but will remain in the API for now.

This issue can be closed.

@tiyash-basu-frequenz tiyash-basu-frequenz added the resolution:wontfix This will not be worked on label Sep 20, 2024
@llucax llucax closed this as not planned Won't fix, can't repro, duplicate, stale Sep 23, 2024
@llucax llucax removed this from the v0.6.3 milestone Sep 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
part:❓ We need to figure out which part is affected priority:❓ We need to figure out how soon this should be addressed resolution:wontfix This will not be worked on type:enhancement New feature or enhancement visitble to users
Projects
None yet
Development

No branches or pull requests

2 participants