You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Simulink生成的exe文件传递可调常量参数?

解决Simulink生成EXE后无需重编译修改常量的问题

核心原因

GRT目标生成的EXE默认会把Constant模块的数值硬编码进程序,哪怕你在设置里改了默认参数行为为“Tunable”也没用——这个选项只对可调参数对象生效,硬编码的常量无法被外部文件或命令行覆盖。


方法一:替换为可调参数对象(推荐)

这是最稳定的解决方案,只需最后一次编译:

  • 把原来的Constant模块换成Gain模块,或者直接用Simulink.Parameter对象定义参数:
    myConstantValue = Simulink.Parameter;
    myConstantValue.Value = 初始值; % 比如10
    myConstantValue.CoderInfo.StorageClass = 'ExportedGlobal'; % 关键:设为导出全局变量
    
  • 将Gain模块的参数设置为myConstantValue,确保模块的“可调”选项勾选(右键模块→参数→确认Tunable选项为勾选状态)。
  • 重新生成EXE后,即可通过两种方式传参:
    1. MAT文件传参:
      把新值保存到.mat文件,比如new_params.mat,然后调用:
      system('MyModel.exe -p new_params.mat')
      
    2. 命令行直接传参:
      直接在命令行指定新值:
      system('MyModel.exe myConstantValue=20')
      

方法二:开启命令行参数覆盖(快速测试)

  • 在Simulink代码生成设置中,找到Code Generation > Interface > Parameter set,勾选“Allow parameter override via the command line”。
  • 确保myConstantValue是在基础工作区定义的变量(不是直接写在Constant模块里的数值)。
  • 重新生成EXE后,直接用命令行指定新值即可:
    system('MyModel.exe myConstantValue=新数值')
    

内容的提问来源于stack exchange,提问作者superweizen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:32:03