Hardware-in-the-loop

Hi everybody!

I am trying to make a setup using Hardware-In-the-Loop (HIL) with FAST and a Tuned Liquid Damper (TLD) mounted on a motion base. So far I am just getting familiar with FAST and looking into possible solutions to realtime computing with FAST. What I have found so far from forum and documentation is that I have two possibilities: 1) Using Simulink interface (either with FAST7 or FAST8) or 2) Using LabVIEW interface in FAST7. I have somewhat experience with both types of platforms, but my concern is how to input the sloshing force into the WT model. In FAST8 a TMD model is available under ServoDyn, which interaction I wish to replicate. How could this be done?

In Simulink S-Function Parameters are inputted which is “an array of size 8 + NumAdditionalInputs”, but it does not specify what “NumAdditionalInputs” could be. Could “NumAdditionalInputs” be a way to input sloshing forces into FAST? And If so, how?

In LabVIEW a list of parameters is inputted into FAST. Is it possible to add more parameters and where do I find the ones I need? Furthermore will it require a recompiling of FAST in order to do so?

Best,
Thomas

Dear Thomas,

My guess is the easiest way would be to do what you want to do is to modify FAST v8 so that instead of using the TMD reaction force on the nacelle or tower as calculated from the TMD submodule of ServoDyn, you use an externally generated input (from your TMD hardware). This will require a change to the FAST source code and a recompile of FAST.

The FAST S-Function input parameter NumAdditionalInputs is just a way to allow one to pass additional data from Simulink to FAST without recompiling the FAST S-Function. But using NumAdditionalInputs will require a recompile of the FAST library called by Simulink.

I hope that helps.

Best regards,

Jason thank you for your response.

It makes sense that using the existing interface between TMD and ServoDyn should be the easiest to manipulate, but how this is actually achieved in the code is beyond me so far. Do you have any hints that could point me in the right direction?

When I look in TMD_Registry.txt it only contains the following under outputs:

[code]# … Outputs …

Define outputs that are contained on the mesh here:

typedef ^ OutputType MeshType Mesh - - - “Loads at the TMD reference point in the inertial frame” -

Define outputs that are not on this mesh here:

#typedef ^ OutputType ReKi WriteOutput {:} - - “Data to be written to an output file: see WriteOutputHdr for names of each variable” “see WriteOutputUnt”
[/code]
Which is referring me to “WriteOutputHdr” (that I am unable to locate)?

I am not quite sure I understand your comment regarding NumAdditionalInputs. Is NumAdditionalInputs not the only way to pass information to FAST and ServoDyn incl. my TLD? Furthermore when conducting HIL experiments I need to control the timesteps exactly in order to run the model in realtime. Do you know if this have been accomplished before?

Dear Thomas,

Sorry, but I have not worked out the details myself either, so, I can’t really offer detailed guidance.

Regarding the TMD_Registry.txt file, you shouldn’t need to touch the WriteOutput output (or WriteOutputHdr). Instead, the Mesh output is what contains the reaction load applied to the nacelle or tower. Regardless, the FAST driver does not call the TMD module directly. Instead, the FAST driver calls the ServoDyn module, which in turn calls TMD. So, the TMD reaction loads are also an output of ServoDyn. But in the end, you likely won’t need to change ServoDyn at all. Instead, you’ll need to change the FAST driver so that instead of using the TMD reaction load output from ServoDyn, you use the TMD load commanded by the HIL.

NumAdditionalInputs is just a way to pass data from Simulink to the FAST dynamic library without modification of the FAST S-Function (but using NumAdditionalInputs still requires you to change and recompile the FAST dynamic library). Without using NumAdditionalInputs, you can pass other data from Simulink to the FAST dynamic library if you change and recompile the FAST S-Function (and the FAST dynamic library).

I’m not familiar with any work to run FAST v8 in realtime, but I’m sure its possible.

Best regards,