专栏
标签
Sysblock案例-模型在环测试与软件在环测试简单案例
技术分享
发布于 2025-08-06 16:55:50
查看 11过去300天

内容概述

本篇FAQ为利用Sysblock软件搭建模型,对模型结果进行观测记录。然后针对模型进行代码生成,编写主函数与模型生成代码的集成为工程。运行相应的工程,输出结果。代码运行结果与模型运行的结果进行对比,作为软件在环验证,证明模型仿真运行与代码运行结果的一致性。

模型搭建并仿真验证

准备搭建一个小球自由落体的案例进行相关验证。利用状态机构建模型,小球状态设置为三种,下落状态、反弹状态、静止状态。将每次下落和回弹过程中的能量损耗记为0.2,在每次反弹时速度变为原速度的0.8进行能量损失的描述。最终,小球高度为0,同时小球速度趋近于0时,视作小球已经进入静止状态。
按照上述信息在状态机中构建如下几个变量:代表小球高度的变量Height;代表小球速度的V;代表重力加速度的G取为9.8;代表状态机步长的stepSize;

状态机变量表

从起始高度Height高度处,静止做自由落体运动,初始高度记为10,速度初值为0,每次反弹时速度记为原速度的0.8;
1.png

下落状态

在下落时,Height = Height - G * t ; V =V + G * t ;
2.png

反弹状态

反弹时,计算下落过程的能量消耗,且速度方向相反,V= - V *0.8。
3.png

静止状态

静止时,高度为0,速度为0。
4.png

转移条件

高度小于0.01且速度大于0.01时,记为接触地面但是尚未静止,此时由下落状态转移至反弹状态。
高度小于0.01且速度小于0.01时,几位接触地面且达到静止条件。
综合上述信息构建如图状态机。
5.png

仿真验证

仿真结果如下,随着能量损耗,小球自由落体后的最大回弹高度逐渐降低,能达到的最大速度也在逐渐减小,直至最终趋于0。
6.png

构建数据字典并管理输出变量

在“建模”中点击“数据字典”调出数据字典界面,在数据字典界面中点击按键“新建数据字典并与模型绑定”(鼠标悬停在数据字典按键上,可以观测按键功能)。
在数据字典中新增变量,有两种方法。
一、将输出端口的信号线命名,然后在数据字典中新增相同名称的信号。
7.png
二、命名输出端口信号线,右击信号线点击“绑定信号名称到数据字典”。
8.png
在数据字典的“存储类型”设置为"ExportedGlobal",代表变量在生成代码时会以全局变量的形式生成代码。

生成代码

点击导航栏中的“代码生成”,可以看到代码生成的相关选项包含代码配置、代码生成、查看代码。
代码配置选项帮助文档中有相关说明,可以直接使用默认设置,直接点击“代码生成”即可。
9.png
代码生成后会自动弹出生成代码的路径
10.png

构建C代码工程

以使用Visual Studio搭建工程为例,将生成代码中的mwb_main.c添加至源文件,其余生成的代码封装至头文件中。
在mwc_main.c的主函数中添加输出端口的打印代码,从而观测生成代码中的输出端口变量值。
11.png
添加打印代码
printf("height = %f\n", height);
printf("v = %f\n", v);
printf("%d\n", i + 1);
printf("~~~~~~~~\n");

结果对比

代码工程软件控制台中会打印相应变量的值,将该值与MWORKS.Sysblock仿真结果值进行对比,即可完成一次生成代码与代码运行的代码在环结果对比。经过观察对比,发现两者结果一致,则说明测试无误。
12.png
Sysblock仿真结果有两种观察方式
①通过游标卡尺直接在仿真结果曲线中观测仿真结果。
13.png
②将仿真结果导出为CSV文件进行观察。
14.png
15.png

所属专栏:Sysblock基础平台
产品信息:Sysblock 嵌入式代码生成工具
其他

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天