Simulink的SIL软件在环测试

以基于模型的设计(MBD)的软件开发时,需要进行SIL(Software in the Loop,软件在环测试)。 SIL测试就是在PC上验证模型是否与代码功能一致。在项目开展中,用在需要将控制器生成移植到硬件前,把控制器的模块生成代码,与对应的控制器模块做等效性测试。


1.Simulink的SIL软件在环测试

MBD开发是将Simulink中开发的算法自动生成为c代码。但是代码自动生成工具本身的原因或者代码生成工具没有正确设置或者其他未知原因,自动生成代码过程可能会引入一些错误。所以我们需要验证自动生成的代码与算法模型的一致性。

方法:SIL测试使用与MIL(模型在环测试)相同的测试用例,查看对于相同的测试用例,其输出是否与MIL阶段一致。为了测试的高效性,有时甚至不接入被控对象模型,而是对算法模型和生成代码进行相同的输入,查看输出是否一致。

1.新建一个文件夹,建立一个简单算法的Simulink模型。

子系统内部逻辑


2.配置模型参数设置

(1)设定固定步长,将求解器设置为离散,固定步长为0.01。

(2)在Code Generation中选代码生成系统文件(ert.tlc选嵌入式(Embedder Coder),不选嵌入式的那个会报错,Generate code only不要勾选,因为要生成SIL。

(3)在Code Generation的子选项Verification中选择生成SIL模型。

(4)设置代码生成的文件存储路径,点击主页菜单中的预设,在预设项中选择Simulink,然后选择Open Simulink Preference。

(5)在Simulink Preference中选择模型自动生成嵌入式c代码以及相关文件的路径。

在此之前,需要先查看电脑的MATLAB是否安装了编译器

在命令窗口输入

复制代码
mex -setup -v

如果显示没有安装MinGW-w64 C/C++编译器,需要安装好。

编译器网址,登录账号或者注册一个账号登录

复制代码
https://ww2.mathworks.cn/support/requirements/supported-compilers.html

下载之后获得mingw.mlpkginstall文件,在MATLAB的环境下打开,登录注册的账号开始在附加功能管理器中下载MinGW-w64编译器。

编译 yprime.c 示例

可以通过编译 yprime.c 示例来测试 MinGW编译器。将源文件复制到可写文件夹。

复制代码
copyfile(fullfile(matlabroot,'extern','examples','mex','yprime.c'),'.','f')

如果在系统中仅安装了 MinGW 编译器,则 mex 命令会自动选择 MinGW。继续下一步。但如果有多个 C 或 C++ 编译器,请使用 mex -setup 选择 MinGW。

复制代码
mex -setup

编译该 MEX 文件。

复制代码
mex yprime.c

MATLAB 将显示"编译工具"消息,其中显示了用于编译 MEX 文件的编译器。

运行函数。

复制代码
yprime(1,1:4)

3.生成SIL模块

右击选择子系统,选择C/C++ Code,选择Build this Subsystem。

在弹出的窗口中,选择Build。

如果没有安装MinGW-w64 C/C++编译器,就会报错。

正常安装了编译器之后就可以生成SIL文件。

会在当前文件夹下生成模型的代码相关的文件。


4.测试

把SIL模块复制到自建模型中,进行等效性测试,看MIL和SIL测试结果是否相同:

从结果可以看出,两者结果是一致的。


5.可能会遇到的问题

(1)在上述操作结束后,自动代码生成过程中会出现一个slprj文件,在使用过程中有时候第一次可以生成SIL,后面生成会出现这个错误"引用了不存在的字段 'Version'",在matlab官方网站论坛找到的解决答案,把slprj文件删除了就行了。

(2)在删除slprj文件会遇到只能管理员才能删除的问题,可以在Win10弹出需要管理员权限才能删除文件夹。

Win键+R(就是开始-运行),弹出的输入框输入gpedit.msc回车。

绿色圈内是正解,设置为已禁用、已禁用、已禁用。记着重启才生效。


6.参考内容

1\]https://ww2.mathworks.cn/matlabcentral/answers/256606-simulink-modell-terminates-with-reference-to-non-existent-field-accessinfomap-when-a-matlab-f \[2\] https://jingyan.baidu.com/article/09ea3ede48a525c0aede39c3.html \[3\] CSDN博主控制工程师小赵的文章《SIL软件在环学习笔记》,文章链接为:https://blog.csdn.net/xbridge/article/details/124869894 本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。

相关推荐
csbysj20202 小时前
SVG 椭圆详解
开发语言
oioihoii2 小时前
C++数据竞争与无锁编程
java·开发语言·c++
资生算法程序员_畅想家_剑魔2 小时前
Java常见技术分享-16-多线程安全-并发编程的核心问题
java·开发语言
We....2 小时前
Java SPI 机制
java·开发语言
Macbethad3 小时前
区块链技术在分布式系统中的应用实践技术报告
开发语言·c#
零雲3 小时前
Java面试:@Component和@Bean的区别是什么
java·开发语言·面试
机器学习之心3 小时前
MATLAB基于BP神经网络-多模态多目标优化的喷墨打印纳米银导线工艺参数优化
神经网络·matlab·工艺参数优化
Jerry404_NotFound3 小时前
工厂方法模式
java·开发语言·jvm·工厂方法模式
微风欲寻竹影3 小时前
深入理解Java中的String
java·开发语言