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 baseline supervisory hybrid plant controller #36

Merged
merged 31 commits into from
Jul 26, 2024
Merged
Show file tree
Hide file tree
Changes from 23 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
795ba83
Skeleton hybrid supervisory controller.
misi9170 May 7, 2024
42e4994
passthrough controllers for solar and battery.
misi9170 May 7, 2024
5b02526
hybrid interface added; bugfixes.
misi9170 May 7, 2024
b6324df
print statements, bug fixes.
misi9170 May 7, 2024
761346f
Solar now runs as expected, with some mods on hercules.
misi9170 May 7, 2024
b173cf1
Add example files.
misi9170 May 7, 2024
5d58a19
Ruff.
misi9170 May 7, 2024
ca3b10e
Add other necessary measurements for supervisory control.
misi9170 May 7, 2024
295ef7a
Add interface test.
misi9170 May 13, 2024
1e50219
Full tests for interface; basic test for contorller.
misi9170 May 13, 2024
7492e1b
Get reference in supervisory_control stand in.
misi9170 May 13, 2024
f65ae8c
Fix copy-paste error.
misi9170 May 13, 2024
537ffd9
Add documentation.
misi9170 May 13, 2024
40da443
Add simple hybrid controller
genevievestarke May 14, 2024
e25722a
Updating basic hybrid controller
genevievestarke May 16, 2024
2a4bc1c
Fix Ruff formatting
genevievestarke May 16, 2024
cbcd6af
Fix Ruff lines that are too long
genevievestarke May 16, 2024
d8ca92f
Fix Ruff take 3
genevievestarke May 16, 2024
3c377f0
Removing farm capacity definition from WHOC
genevievestarke May 16, 2024
eef9d2d
Fixing bug for when SOC is maxed out
genevievestarke May 16, 2024
a767a53
Merge pull request #1 from genevievestarke/feature/simple_hybrid_cont…
misi9170 Jun 12, 2024
4b41285
Remove rate setpoint from interface and instead pass directly to inst…
misi9170 Jun 12, 2024
f27dc41
Rename skeleton controller to baseline.
misi9170 Jun 12, 2024
84113c6
Update baseline controller description
genevievestarke Jun 12, 2024
71a80a9
Adding working hybrid plant example
genevievestarke Jul 15, 2024
593817c
Fixing ruff call from update
genevievestarke Jul 16, 2024
f1c8612
Fix ruff formatting
genevievestarke Jul 16, 2024
fc2c100
Clean up output notebook
genevievestarke Jul 24, 2024
74fbbeb
Add headings to example.
misi9170 Jul 25, 2024
73aab54
Import sorting.
misi9170 Jul 25, 2024
d91c41e
Update controller description
genevievestarke Jul 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions docs/controllers.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,12 @@ Integral action, as well as gain scheduling based on turbine saturation, has bee
simple proportional control appears sufficient currently. However, these may be enabled at a
later date if needed. The `proportional_gain` for the controller may be provided on instantiation,
and defaults to `proportional_gain = 1`.

### HybridSupervisoryControllerBaseline
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@genevievestarke could you check the documentation below and see if I've accurately portrayed the HybridSupervisoryControllerBaseline?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated the description, let me know if it makes sense!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@genevievestarke , just bumping this, are you OK with the description I've written for the HybridSupervisoryControllerBaseline? Feel free to update the description if you'd like.


Simple closed-loop supervisory controller for a hybrid wind/solar/battery plant.
Reads in current power production from wind, solar, and battery, as well as a plant power reference. Contains logic to increase the power references sent to wind, solar, and battery if the power reference is not met, and to charge the battery if there is a power surplus from wind and solar. Those references are then handled by the
operational controllers for wind, solar, and battery, which are assigned to the
`HybridSupervisoryControllerBaseline` on instantiation to distribute the bulk references to each
asset amongst the individual generators. Currently, only wind actually distributes the power.
Intended as a baseline for comparison by a more advanced supervisory controller.
8 changes: 8 additions & 0 deletions docs/interfaces.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,14 @@ the WHOC controllers submodule; and that `controller` should be passed to the
Hercules `Emulator` upon its instantiation. Support transmitting yaw angles
and power setpoints to wind turbines.

### HerculesHybridADInterface
For direct python communication with Hercules, when simulating a hybrid
wind/solar/battery plant. Currently, intended for use with the
`HybridSupervisoryControllerBaseline`, while full closed-loop supervisory
controllers for hybrid power plants are built out. Supports sending power
reference signals to each wind turbine in a wind farm, as well as a bulk power
signal to the solar farm and a bulk power signal to the battery.

### ROSCO_ZMQInterface
For sending and receiving communications from one or more ROSCO instances
(which are likely connected to OpenFAST and FAST.Farm). Uses ZeroMQ to pass
Expand Down
Loading
Loading