# 新手入门
半物理仿真接口工具(Hardware-in-the-Loop Export,简称 HIL Export),可以快速、高效地将 Modelica 物理模型转换为适用于实时环境的可执行代码(高效 C 代码或联合仿真代码)。本文介绍了使用 HIL Export 工具箱,将速度跟随物理模型转换为 C 代码并编译运行的方法。
# 分析模型
速度跟随模型内置于 Sysplorer 的车辆动力学模型库中,基于车辆动力学原理和控制理论,使车辆能够按照预定的速度跟随给定的参考速度。该模型通常应用于自动驾驶系统、巡航控制和交通流控制等。模型如下图所示:
速度跟随模型通常包括两个主要部分:速度控制器和车辆动力学模型。速度控制器根据参考速度和当前车辆速度之间的差异,计算出控制指令,如油门开度或制动力。车辆动力学模型根据控制指令和车辆动力学参数,模拟车辆的加速度和速度变化。速度跟随模型的设计同时考虑了车辆的动力学特性、惯性、摩擦力等因素,以实现平稳、精确的速度控制。速度跟随模型通过不断调整控制指令,能够使车辆逐渐接近并跟随参考速度,以保证车辆的稳定性和安全性。
通过本文,您将学习:
使用 HIL Export 工具箱生成速度跟随模型的 C 代码;
生成的代码文件的具体含义;
如何自动生成并使用 C 代码的主函数;
比较模型仿真结果和生成的 C 代码结果,以了解数值等效性。
# 环境配置
Windows 使用环境:
名称 详细说明 处理器 Intel(R) Core(TM) i7-8550U CPU @ 1.80 GHz 2.00 GHz 内存 8 G 硬盘 240 GB + 500 GB 操作系统 Windows 11 家庭中文版 用途 使用 HIL Export 工具箱生成源代码 Ubuntu 运行环境:
名称 详细说明 处理器 Intel Xeon(R) Silver 4210R CPU @ 2.40 GHz x 40 内存 62.5 GiB 硬盘 3.0 TB 操作系统 Ubuntu 20.04.6 LTS 用途 源代码编译运行平台
# 使用前准备
加载模型库
加载模型库 TADynamics1.2.5。
打开模型
单击
,加载模型。注意
ARM 系统暂不支持打开 ConstantSpeed_Test 示例模型。
打开半物理仿真接口工具
在 Sysplorer 顶部菜单栏,进入工具 > 半物理仿真接口工具,打开 HIL Export 工具箱。
提示
使用本工具箱需要先获取同元 License。
如下提示不影响新手入门的正常操作,请单击确定。如需获取内嵌编译器,可联系 Sysplorer 运维团队,详情参见如何操作。

# 生成 main 函数
当前版本支持由程序自动生成主函数。用户无需手动创建或拷贝 main_src.c,只需在导出页面勾选 是否生成主函数,工具会随代码一并生成 main_src.c 文件。
自动生成的主函数主要完成以下工作:
- 配置仿真的开始时间、停止时间和通信步长;
- 创建仿真实例并完成初始化;
- 预留输入、参数设置和输出读取的位置;
- 通过循环按时间步长推进仿真;
- 在命令行输出仿真时间及结果信息。
如需进一步定制,可在生成完成后按需修改代码目录中的 main_src.c。
# 设置参数
进入 HIL Export 工具箱,配置如下参数:
| 参数名 | 参数设置 | 说明 |
|---|---|---|
| 当前模型 | ConstantSpeed_TEST | 确认当前生成代码对应的模型 |
| 参数名 | 参数设置 | 说明 |
|---|---|---|
| 文件格式 | 勾选源代码(包含求解库) | / |
| 类型 | 定步长 | / |
| 算法 | Euler | 此处使用 Euler 算法 |
| 求解步长 | 0.001 | 仿真输出点之间的间隔长度 |
| 停止时间 | inf | 保持默认停止时间设置 |
| 参数名 | 参数设置 | 说明 |
|---|---|---|
| 目标系统 | Linux | 选择生成代码的目标部署系统 |
| 目标架构 | x86 | 选择生成代码的目标系统架构 |
| 系统位数 | 64 bits | 选择目标系统位数 |
| 参数名 | 参数设置 | 说明 |
|---|---|---|
| Output | 勾选 vehicle_speed | 输出车辆的行驶速度 |
| 参数名 | 参数设置 | 说明 |
|---|---|---|
| 生成主函数 | 勾选是否生成主函数 | 自动生成 main_src.c |
| 编译脚本 | 勾选是否生成目标平台编译脚本 | 生成 run_main.sh 脚本 |
| 保存路径 | F:/ | 自定义生成文件的保存路径 |
# 生成代码
参数配置完成后,单击生成。生成的代码文件会保存在自定义路径下,本例输出到
F:/Linux_x86_src/ConstantSpeed_TEST:
单击输出窗口中的代码生成地址,可打开文件夹查看生成的代码文件。生成结果中已包含程序自动生成的
main_src.c、run_main.sh、Simulator目录和模型相关源文件:
# 部署代码
当您的系统或集成开发环境中不包含 Sysplorer 产品时,您可以将生成的代码部署至目标平台中,本示例将代码部署至 x86 Linux 平台。
# 编译代码
在目标平台编译代码,通过终端输入 ./run_main.sh . 执行编译脚本。编译完成后会生成 main.out、fmu.o 以及各源文件对应的 .o 文件。
提示
若编译代码时提示无权限,请先为脚本添加相应执行权限后再进行编译。
# 运行代码
输入 ./main.out 命令查看运行结果。运行过程中,终端会打印当前时间和输出值,仿真结束后显示 Simulation finished。
# 对比结果
对比实时代码结果和 Sysplorer 仿真结果,以验证生成实时代码的正确性。
# 获取实时代码仿真结果
接下来使用测试框架模型和 Sysplorer 仿真来比较模型仿真和生成代码的结果。
运行实时代码后,仿真结果打印如下图所示:
# 获取 Sysplorer 的模型仿真结果
打开 Sysplorer,进入主页 > 仿真设置,设置步长、终止时间、算法的值为 HIL Export 工具箱配置的值,单击确定,如下所示:

单击仿真,仿真结束后,在结果查看器左侧的仿真浏览器中单击 vehicle_speed,查看生成的速度曲线;

如需查看某一时刻的速度,进入图表>曲线游标,左右移动曲线游标,在曲线窗口左上角查看某一时候的速度。
