How to pass a string parameter to a Simulink S-function using the S-Function Builder

47 ビュー (過去 30 日間)
Hi all,
I've created a Simulink S function that calls a DLL file containing the model functions in C using the S-Function Builder in Simulink 2021a
However, during the initialization of this model, I need to pass a string that points to a JSON file containing all the model parameters. Currently, I've hard-coded the file path for testing, and it works. However, I would like to be able to pass this as a parameter.
// TODO: make params_file_path a parameter
const char* params_file_path = "default_parameters.json";
params = load_parameters(params_file_path);
When I click on the parameter data types in the S-Function Builder, I see options for double, single, int8, int16, int32, uint8, uint16, uint32, and boolean, but I do not see an option for strings or characters.
I assume that I will need to manually modify the autogenerated wrapper.c file, but I would appreciate some guidance on how to do this.
Regards,

採用された回答

Sarthak
Sarthak 2023 年 8 月 21 日
Hi Marco,
As per my understanding, the data type of the ports and parameters for the S-Function, can only be Simulink built-in numeric data types. You can try to create a character array and pass the parameter value as you have done since there is no direct option for a string datatype.
const char* params_file_path = "default_parameters.json";
params = load_parameters(params_file_path);
There can also be fixdt data types and bus types for ports. The "int64" and "uint64" data types are not supported for parameters as mentioned in the following documentation.
  1 件のコメント
Marco Furlan
Marco Furlan 2023 年 8 月 30 日
編集済み: Marco Furlan 2023 年 8 月 30 日
Hi Sarthak,
Thanks for your answer. I also found very useful the answer to this other question:
I was able to pass in the full path to the file using a uint8 array of characters. I just had to convert the string to uint8 usign the uint8 function.
Then, inside the S-Funcition Builder Editor for C code, I convert it back to a character array:
const char* params_file_path_char = params_file_path;

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by