如何以编程方式配置模型参数的可调性?

时间:2017-12-12 10:52:54

标签: matlab parameters simulink

我从Simulink R2010a→R2017b移植大型Simulink模型。

主要模型基本上是许多交织reference models的胶水层。我的目标是使用Coder从此主模型生成独立的可执行文件。

此上下文中的参数可调性通过模型配置参数中 Optimization 选项卡上的信号和参数部分完成对话框(与独立模型中的情况一样),而是通过在基础工作空间中构建Simulink.Parameter对象,并在相应的引用模型中或在各自的模型工作空间中引用它们。

现在,AFAIK,在R2010a中就足以设置

new_parameter.RTWInfo.StorageClass       = 'Auto';
new_parameter.RTWInfo.CustomStorageClass = 'Define';

使参数不可调,并将其转换为生成代码中的#define。在R2017b中,不再允许这样做;如果您设置非空StorageClass'Custom' 必须CustomStorageClass

new_parameter.CoderInfo.StorageClass       = 'Custom'; % <- can't be 'Auto'
new_parameter.CoderInfo.CustomStorageClass = 'Define';

但显然,这不会使参数不可调:

  

警告:参数&#39; OutPortSampleTime&#39; &#39; [...] / Rate Transition1&#39;是不可调的,但是指可调参数(Simulation_compiletimeConstant(基础工作区))

我无法在R2017b文档中找到任何关于使参数不可调,编程的内容;我只能通过对话框找到如何在独立模型中完成它,但这不是我想要的。

有人能指出我正确的方向吗?

注意:当天,Simulink Coder 被称为 Real-Time Workshop (好吧,Real-time Workshop分为Coder和其他一些事情),因此差异RTWInfoCoderInfo。请注意,RTWInfo仍可在R2017b中使用,但会发出警告并自动转换为Coderinfo

1 个答案:

答案 0 :(得分:0)

在生成的代码中,它应以您指定的方式显示为#define。

https://www.mathworks.com/help/rtw/ug/choose-a-built-in-storage-class-for-controlling-data-representation-in-the-generated-code.html 顺便说一句,是的,这有点令人困惑,因为在m文件中,您指定CustomStorageClass =' Define ';;在GUI中,您将存储类指定为 Define(custom),但是在文档中,他们说存储类已定义。

我不确定为什么会出现关于可调性的警告。

相关问题