Cause of difference between simulation results using libdiscon.dll and Simulink

Hello,

I am a newbie on windmills.
I installed ROSCO v2.9.0 following these steps.
ROSCO Documentation

I performed simulations with PCMode, VSContrl, and YCMode in ServoDyn at 4 and 5, respectively.
(4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL)

However, when the results were output to a graph using Igor, a large difference in standard deviation was observed. (Particularly for generator power. )
The red line in the figure shows the results for mode 4 using libdiscon.dll, and the blue line shows the results for mode 5 using Simulink.

What could be the cause of this difference?

The following is a description of the conditions used in the simulation
Simulated time: 3000 s
Wind condition: 18 m/s steady wind
Wave conditions: still water

!------- CONTROLLER FLAGS -------------------------------------------------
2                   ! F_LPFType			  - (1: first-order low-pass filter, 2: second-order low-pass filter), [rad/s] (currently filters generator speed and pitch control signals
0                   ! IPC_ControlMode	- Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions}
2                   ! VS_ControlMode	- Generator torque control mode in above rated conditions (0- no torque control, 1- k*omega^2 with PI transitions, 2- WSE TSR Tracking, 3- Power-based TSR Tracking)}
0                   ! VS_ConstPower  	- Do constant power torque control, where above rated torque varies, 0 for constant torque}
1                   ! PC_ControlMode  - Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control}
0                   ! Y_ControlMode   - Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC}
1                   ! SS_Mode         - Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing}
0                   ! PRC_Mode        - Power reference tracking mode{0: use standard rotor speed set points, 1: use PRC rotor speed setpoints}
2                   ! WE_Mode         - Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Immersion and Invariance Estimator, 2: Extended Kalman Filter}
1                   ! PS_Mode         - Pitch saturation mode {0: no pitch saturation, 1: implement pitch saturation}
0                   ! SD_Mode         - Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown}
2                   ! Fl_Mode         - Floating specific feedback mode {0: no nacelle velocity feedback, 1: feed back translational velocity, 2: feed back rotational veloicty}
0                   ! TD_Mode         - Tower damper mode (0- no tower damper, 1- feed back translational nacelle accelleration to pitch angle
0                   ! TRA_Mode        - Tower resonance avoidance mode (0- no tower resonsnace avoidance, 1- use torque control setpoints to avoid a specific frequency
0                   ! Flp_Mode        - Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control, 2: Cyclic (1P) flap control}
0                   ! OL_Mode         - Open loop control mode {0: no open loop control, 1: open loop control vs. time, 2: rotor position control}
2                   ! PA_Mode         - Pitch actuator mode {0 - not used, 1 - first order filter, 2 - second order filter}
0                   ! PF_Mode         - Pitch fault mode {0 - not used, 1 - constant offset on one or more blades}
0                   ! AWC_Mode        - Active wake control {0 - not used, 1 - complex number method, 2 - Coleman transform method}
0                   ! Ext_Mode        - External control mode {0 - not used, 1 - call external dynamic library}
0                   ! ZMQ_Mode        - Fuse ZeroMQ interface {0: unused, 1: Yaw Control}
0                   ! CC_Mode         - Cable control mode [0- unused, 1- User defined, 2- Open loop control]
0                   ! StC_Mode        - Structural control mode [0- unused, 1- User defined, 2- Open loop control]

Thank you for your help.
Sincerely,

Hi Yuki,

I’m not sure what controller you used in Simulink, but it’s likely not a perfect replica of the ROSCO Bladed-style DLL.

Either way, I would consider the difference in generator power you see to be okay. The variations are quite small compared to those you would see in turbulence.

Best, Dan

Hi Dan,

I used ROSCO.mdl which can be downloaded here ROSCO\Matlab_Toolbox\Simulink

Is it common for measurement errors to occur when running simulations under the same conditions?
And to what extent is the error negligible?

Best regards,
Yuki

Hi Yuki,

There is no measurement error. In this case, you are modeling two different controllers under the same conditions. The Simulink version of ROSCO you referenced is not an official version of the controller. For now, I have left it on the repository as a learning tool. Only the dynamic library (libdiscon.dll) version of ROSCO is maintained and updated regularly.

I’m not sure how to answer your second question. Compared to the absolute power output, the difference in variation is a fraction of a percent. If either was simulated in turbulence, the variation would be much larger.

Best, Dan

Hi Dan,

I’m sorry if my question was difficult to understand.
Your kind and polite reply helped me to understand.

Best,