我从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和其他一些事情),因此差异RTWInfo
与CoderInfo
。请注意,RTWInfo
仍可在R2017b中使用,但会发出警告并自动转换为Coderinfo
。
答案 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),但是在文档中,他们说存储类已定义。
我不确定为什么会出现关于可调性的警告。