Releases: NREL/ROSCO
ROSCO v2.9.4
Compatibility and documentation updates
ROSCO v2.9.3
Fixes to the documentation and file I/O
ROSCO v2.9.2
ROSCO v2.9.1
Minor update from v2.9.0 with better error handling around the Cp surface reading.
ROSCO v2.9.0
ROSCO reorganization:
- We have reorganized the ROSCO repository to follow recommended python packaging processes.
- The former
ROSCO_Toolbox
has been moved into therosco/toolbox
directory and can be imported usingimport rosco.toolbox
. - The controller fortran source code has been moved from
ROSCO/ROSCO/src
toROSCO/controller/src
All API changes can be found in here, along with a summary of how to use the new inputs. Here is a script for updating DISCON inputs.
The floating feedback gain can now be gain scheduled versus wind speed. During wave basin testing of the ROSCO controller with a scale model, we found that in some metocean conditions, the floating feedback controller may require different tuning.
A rotor position controller for tracking the azimuth location of a given rotor position using the generator torque. This feature was used to validate aeroelastic models with given SCADA data.
A new torque control mode, which is less reliant on a wind speed estimate, based on feedback from certification bodies.
An initial power reference control, which changes the rated rotor speed based on the estimated wind speed. Further power control features are planned in future releases.
Tower resonance avoidance has been added, which will skip a given rotor speed using the generator torque control.
The wind farm control interface using ZeroMQ has been expanded with a more robust python interface for more turbines. The interface has been tested using FAST.Farm.
Pre-release for v2.9.0
Pre-release to test conda installation of v2.9.0
RAAW v1.4
This control library will be used in the RAAW validation campaign. It includes the rotor position control (RPC) used in the modeling studies.
By setting OL_Mode
to 2 and including the open loop input (OL_Filename
), the controller will track the rotor position (Azimuth) using the generator torque. Blade pitch will follow the prescribed open loop input exactly. The nacelle yaw position will be controlled in the open loop if Ind_YawRate
is non-zero.
Setting OL_Mode
to 0 will run ROSCO normally as a reference controller.
Version 2.8.0
Major Updates:
- Optional inputs: users do not have to set all inputs to ROSCO. Whether an input is optional is determined by the control flags.
- Cable control: users can control OpenFAST cables in MoorDyn and SubDyn using ROSCO. Open loop and user-defined control schemes are available.
Examples/22_cable_control.py
sets up a floating turbine with cable control and applies an open loop mooring control to move the turbine near the (0,0) (surge, sway) location. In the DISCON or tuning yaml, users specify the indices of the cable length control in the avrSWAP; these indices can be found in the ServoDyn summary file. - Structural control: users can control OpenFAST structural controllers (tuned mass dampers and added forces) via ROSCO. Open loop and user-defined control schemes are available.
Examples/23_structural_control
sets up the IEA-15MW semi-submersible floating platform with structural controls as added forces to emulate ballast control for even keel; it relies on the current develop branch of OpenFAST (to be released in v3.5.0) to apply the added force. Users specify the indices to the avrSWAP in the DISCON or tuning yaml, as specified by the ServoDyn summary file. - Active wake control: users have two methods, detailed here, for adding pitch offsets, e.g., the helix method, to the collective pitch angle for better wake dissipation.
Examples/20_active_wake_control.py
runs several different active wake control modes.
Minor Updates:
- The NREL 2.8 MW reference turbine has been added to the set of tuned turbine inputs. Pitch control gains were determined using WEIS control optimization to minimize tower DELs with a constraint on the maximum generator speed in DLC 1.2. IPC is also tuned for this model.
Examples/12_tune_ipc.py
was updated to test all the IPC saturation modes. - File I/O and plotting: an updated plotting notebook is available to users. The
output_processing.py
script was parallelized.
Version 2.7.0
Added Features:
- IPC saturation modes (IPC_SatMode)
- Pitch actuator faults: simulate constant blade pitch offsets. More is possible in future releases.
- Ability to initialize filters with specific values
- Support for latest OpenFAST version (v3.4.0)
- Add a tool for updating DISCONs from older ROSCO versions
Bug Fixes:
- Initialize
NacIMU_FA_Acc
andFA_Acc
to 0. Initial conditions would result in offset of floating feedback pitch command - Fix cases where debug outputs ***********
- Add nacelle heading (NacHeading) input to ROSCO
- Add method for closing dll in control interface on Windows
- Fix units in sim.py
Software Changes:
- Support for the latest numpy version (1.24)
- Re-named examples to represent the features they demonstrate
- Refactored ratelimit function to store it's own previous signal value
- Features that rely on collective blade pitch signal now use average of 3 current blade pitch values (useful in IPC cases)
- Clean up file readers/writers to sync with WEIS analogues
- Update features that rely on latest version of pyFAST
- Enable use of runFAST when
python setup.py install
is used. - Add tune.py for specifically translating tuning yaml to controller objects and updating discon files
- When reading turbine model from openfast, only read necessary input module files
RAAW v1.3
This controller contains individual pitch control updates for the RAAW project
What's Changed
- Add OpenFAST channels that Simulink reads by @dzalkind in #135
- ROSCO 2.6.0 by @dzalkind in #162
- Adding pitch actuator fault by @mayankchetan in #163
- Various Bug Fixes by @dzalkind in #167
New Contributors
- @mayankchetan made their first contribution in #163
Full Changelog: raaw1.2...raaw1.3