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

相关推荐
晔子yy34 分钟前
【JAVA探索之路】从头开始讲透、实现单例模式
java·开发语言·单例模式
阿正的梦工坊6 小时前
JavaScript 微任务与宏任务完全指南
开发语言·javascript·ecmascript
知行合一。。。6 小时前
Python--05--面向对象(属性,方法)
android·开发语言·python
青梅橘子皮6 小时前
C语言---指针的应用以及一些面试题
c语言·开发语言·算法
浅时光_c7 小时前
3 shell脚本编程
linux·开发语言·bash
Evand J7 小时前
【三维轨迹目标定位,CKF+RTS,MATLAB程序】基于CKF与RTS平滑的三维非线性目标跟踪(距离+方位角+俯仰角)
开发语言·matlab·目标跟踪
今天又在写代码8 小时前
java-v2
java·开发语言
competes8 小时前
慈善基金投资底层逻辑应用 顶层代码低代码配置平台开发结构方式数据存储模块
java·开发语言·数据库·windows·sql
Ulyanov9 小时前
用Pyglet打造AI数字猎人:从零开始的Python游戏开发与强化学习实践
开发语言·人工智能·python
独自归家的兔9 小时前
OCPP 1.6 协议详解:StatusNotification 状态通知指令
开发语言·数据库·spring boot·物联网