[模型生成]如何生成Veristand使用的动态文件模型

软件信息:Matlab 2016b
Veristand 2017

1 本文的目的

记录使用Simulink建模生成动态连接库的需要注意的地方及遇到问题的解决方法。

2 检查步骤

2.1 环境搭建

具体请看另一章节的内容,详细介绍了软件版本及安装过程

2.2 模型建好后,按照一下的步骤进行逐项检查

2.2.1 模型解算器

Veristand中只能运行离散型模型,故需将解算器设置为固定步长(Fixed-step)

2.2.2 模型运行速率

根据模型需求设定合适的运行速率

2.2.3 代码生成中 目标程序生成文件选择

System target file选择NIVeriStand.tlc,语言选择C

2.2.4 目标代码编译标准数学运算库

首先,可先获取当前模型的参数值。(一般编译出现问题都是此参数配置有问题导致)
get_param(ModelName,Pre_get_param)
%ModelName:需要配置的模型名称,如'test'
Pre_get_param: 获取变量名,'TargetLangStandard'
其中通过查询Simulink中help文档,获知TargetLangStandard是Standard Math Library的配置,表格如下
Library Name Language Support Standard
C89/C90 (ANSI) C, C++ ISO®/IEC 9899:1990
C99 (ISO) C, C++ ISO/IEC 9899:1999
C++03 (ISO) C++ ISO/IEC 14882:2003

    同时帮助文档中提到修改此参数有两种:

To change the library:

  1. In the project build settings, on the Custom Code tab, set the Standard math library parameter.
  2. In a code configuration object, set the TargetLangStandard parameter.

    Verify that your compiler supports the library that you want to use. If you select a library that your compiler does not support, compiler errors can occur.

其中第一种方法在模型设置中未找到,第二种即本文提到的设定方式

————————————————————————————————————————————————

注:Simulink在进行适合Veristand动态链接库生成时,会调用标准运算库函数,猜测可能是由于tlc文件中不支持C99(ISO)的数学库,导致编译出错,目前的现象是,通过修改此参数的数值,可以让模型正常编译
注:目前通过Simulink生成Veristand只能使用C89/C90(ANSI),且此变量无法通过模型设定界面进行设定

2.3 生成代码并导入

总结

暂时遇到生成dll文件的问题都解决了,如后期遇到新的问题,会同步更新到文中。
                                                                        -20180917

你可能感兴趣的:(Matlab编程)