软件信息: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:
- In the project build settings, on the Custom Code tab, set the Standard math library parameter.
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