为S-Functions生成行代码
您可以生成包含S-functions行代码模型。默认情况下,代码生成器生成列为主的代码。更多地了解行代码生成代码生成的矩阵和数组。
为现有的模型,该模型包含S-functions,当你设置配置参数阵列布局作为行
的配置参数行代码生成的外部功能兼容性启用和设置错误
默认情况下。当你试图构建现有的模型,你得到一个错误,因为S-functions默认不支持行代码生成。你可以测试你的s函数的兼容性行通过使用生成代码行代码生成的外部功能兼容性配置参数。
这个工作流也适用于C调用块模型。
例子
1。打开示例模型ex_sfcn_rowmajor_unset
。模型需要这些额外的文件:
薄层色谱:
ex_sfcn_rowmajor.tlc
。
这些文件保存到您的本地文件夹。
open_system (“ex_sfcn_rowmajor_unset”);
2。模型配置了阵列布局设置为列为主
。要启用行代码生成,集阵列布局来行
。
3所示。当您构建模型,代码生成器构建和终止你看到这个错误信息:
4所示。继续,做以下之一:
如果你想测试你的现有S-functions行代码模型,改变配置参数的设置行代码生成的外部功能兼容性来
警告
或没有一个
。代码生成器完成构建S-functions没有生成行代码。如果你想更新你的S-functions兼容行阵列布局、使用功能API使行代码生成的功能。
来测试您的模型与未指定的数组S-functions布局,您也可以运行模型顾问检查模型。选择TLC S-functions认同设置阵列布局检查并单击运行这个检查按钮。如果模型包括S-functions不明阵列布局,你看到一个警告,例如:
指定用户定义的函数的数组布局,使用ssSetArrayLayoutForCodeGenSimStruct API的函数。你可以设置枚举类型SSArrayLayout
:
SS_UNSET
这个设置是默认设置,禁用行代码生成的块。SS_COLUMN_MAJOR
——指定列为主的代码生成的块。SS_ROW_MAJOR
——指定行代码生成的块。SS_ALL——指定块允许代码生成无论阵列布局。
5。更新ex_sfcn_rowmajor.c
通过添加的文件ssSetArrayLayoutForCodeGen
在mdlInitializeSizes
方法:
静态孔隙mdlInitializeSizes (SimStruct * S){/ *指定阵列布局功能* / ssSetArrayLayoutForCodeGen(年代,SS_ROW_MAJOR);。}
如果你的功能不受阵列布局,影响集SSArrayLayout
来SS_ALL
。
6。使用这个命令编译功能的MATLAB®命令窗口:
墨西哥人ex_sfcn_rowmajor.c
建筑与gcc。墨西哥人成功完成。
7所示。构建模型和生成代码,出版社Ctrl + B。
如果您生成S-functions利用s函数生成器,使用参数阵列布局指定的大部分功能。有关更多信息,请参见使用功能Builder构建S-Functions自动。如果你使用遗留代码工具整合C函数,使用convertNDArrayToRowMajor
选项legacy_code
。s函数构建器和遗留代码工具应用前转置功能时将行阵列布局在正常模式模拟。