Page 250 - 《振动工程学报》2025年第11期
P. 250
2708 振 动 工 程 学 报 第 38 卷
2.5
搭建Simulink/STM32开发环境
图形化配置CubeMX工程 1.5
电压 / V
改造CubeMX生成的代码 0.5
在Simulink导入CubeMX工程 −0.5 STM32自带ADC ADS8688
25 26 27 28 29 30
时间 / s
S-Function Builder 基于Simulink的图形化 图 7 ADS8688 与内置 ADC 在环监控波形对比图
调用外设芯片 编程编写算法
Fig. 7 Comparison of in-loop monitoring waveforms between
ADS8688 and built-in ADC
一键编译下载(硬件在环)
图 6 STM32CubeMX 与 Simulink 的联合编译流程
Fig. 6 Workflow of integrated code generation using
STM32CubeMX and Simulink
配 置为 HAL 库 , 其 他 外 设 则 可 配 置 为 效 率 更 高 的 图 8 Simulink 完整程序图
LL 库。 Fig. 8 Complete Simulink program diagram
完成上述步骤后,在 Simulink 中对 S-Function Builder
图 9 展示了在 Simulink 中通过串口进行硬件在
模块的代码进行相应修改后即可调用 ADS8688 模块
环 监 控 的 结 果, 包 括 ADS8688 采 集 的 电 压 信 号 ,
进行模拟信号采集。
以及 DAC80508 输 出 的 开 关 控 制 信 号 与 注 能 脉 冲
在运行模型仿真时,MATLAB 自动定义 MATLAB_
信号。
MEX_FILE 宏,条件编译块内的硬件相关代码被预
处理器排除,避免在仿真环境中引发错误。在生成 8
位移 开关信号(负向)
嵌入式代码时,MATLAB_MEX_FILE 宏未被定义,条 注能脉冲 开关信号(正向)
件编译块内的代码被包含。此时,必须确保目标硬 4
件所需的头文件(如 main.h)和驱动函数参与编译,
以生成可在目标 STM32 微控制器上正确运行的可 电压 / V 0
执行文件。
−4
完 成 上 述 步 骤 后, 用 于 在 Simulink 模 型 中 调 用
ADS8688 的 S-Function Builder 模块封装完成。 −8
将 ADS8688 模块与微控制器内置 ADC 在相同 100 101 102 103 104 105
时间 / s
幅值和频率的正弦信号采集任务中进行对比测试。
图 9 硬件在环监控输入、输出信号
在线监控的采集结果如图 7 所示,表明 ADS8688 模
Fig. 9 Hardware-in-the-loop monitoring of input and output
块采集的信号波形更平滑、噪声干扰更小、精度更高。
signals
DAC80508 模 块 经 S-Function Builder 封 装 后 , 可
实现 8 通道 0~5 V 模拟信号的输出,除驱动代码部分 STM32 与 Simulink 联合开发方法的优势在于:
不同以外,封装原理及步骤都与 ADS8688 相同。 (1)灵活扩展性,结合 MATLAB 硬件支持包与 S-
基于 S-Function Builder 构 建 的 ADS8688 模 块 能 Function Builder 构建的自定义外设模型,可便捷扩展
可靠地采集电压信号,并将数据无缝传递至后续控 平台支持的外设类型;
制算法。DAC80508 模块亦可稳定输出三通道模拟 (2)高效开发流程,支持 Simulink 内的一键式编
信号,精确控制回路中 MOSFET 的通断状态。二者 译与硬件在环仿真,加速算法验证与迭代;
协同工作,能有效适配 Simulink 的模型化开发环境。 (3)图形化配置,利用 STM32CubeMX 对 STM32
将这二者与半主动控制算法结合搭建的完整 Simulink 各类外设进行图形化初始化配置,显著减少了手动
程序如图 8 所示。 编写底层初始化代码的工作量。

