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

Synchrophasor #112

Draft
wants to merge 12 commits into
base: main
Choose a base branch
from
Draft

Synchrophasor #112

wants to merge 12 commits into from

Conversation

edwardalee
Copy link
Contributor

@edwardalee edwardalee commented Jun 19, 2024

In the synchrophasors branch of the playground, I've pushed a first version of the synchrophasors example.
When consistency is enforced (which happens by default in LF), the data in the browser looks like this:

Screen.Recording.2024-06-18.at.2.35.34.PM.mov

When I simulate a physical connection with random delay, the data look like this:

Screen.Recording.2024-06-18.at.5.15.18.PM.mov

The next steps:

  • With the random delay, the web socket gets overwhelmed. Reduce the payload to include only the update.
  • Put both of these on the same web page. This means creating two Observers, each with a separate web socket port, and routing the PhaseMeasurementUnit output directly to the second observer to get the clean data.
  • (optional) Add the imaginary part of the phasor data as a second data set. I think this will make the plots much cooler.
  • Introduce a fault, where one of the PMUs starts malfunctioning. This will be easy to spot on the clean plot, but not on the messy one.
  • Measure the lag and display it on the web page for each version. This will be an indicator of how early a fault detection can be made. The messy version will have low lag (high availability), but low consistency, making the fault difficult to spot. The clean version will have higher lag (low availability) and high consistency, making the fault easy to spot, but at the cost of a delay.
  • Add a third version that also includes the random network delay, but instead of plotting new data with the most recently received other data, plots the new data with a prediction for each other datum. This illustrates a relaxation of consistency to improve availability, where availability in this case is the ability to see faults as soon as possible.
  • The network delay + physical connection is simulated with a RandomDelay reactor. I tried running the clean version federated with 51 federates, and, somewhat amazingly, it worked flawlessly. But the data remained clean. There isn't enough timing variability when I run all the federates on my laptop. This is why I resorted to simulating the network delays. But we should consider carefully whether there is a better way to do this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant