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小时内删除。

相关推荐
leaves falling8 小时前
C语言内存函数-
c语言·开发语言
英英_9 小时前
MATLAB数值计算基础教程
数据结构·算法·matlab
至为芯10 小时前
IP6537至为芯支持双C口快充输出的45W降压SOC芯片
c语言·开发语言
小羊羊Python10 小时前
SoundMaze v1.0.1正式发布!
开发语言·c++
浩瀚地学10 小时前
【Java】JDK8的一些新特性
java·开发语言·经验分享·笔记·学习
l1t10 小时前
利用DeepSeek将python DLX求解数独程序格式化并改成3.x版本
开发语言·python·算法·数独
jllllyuz10 小时前
基于子集模拟的系统与静态可靠性分析及Matlab优化算法实现
算法·matlab·概率论
yugi98783812 小时前
基于遗传算法优化主动悬架模糊控制的Matlab实现
开发语言·matlab
moxiaoran575312 小时前
Go语言的错误处理
开发语言·后端·golang
yugi98783813 小时前
MATLAB的多层感知器(MLP)与极限学习机(ELM)实现
开发语言·matlab