你有没有遇到过这种情况:Adams里建好的机械系统模型,想加个PID控制,但Adams自带的控制功能太简陋?别硬扛了,用Adams/Matlab联合仿真吧。我踩过无数坑,今天把6个实操步骤写清楚,照着做,30分钟就能跑通。
2026版Adams和Matlab R2026a的接口又优化了,但是基本流程没变。下面直接开干。
把Adams安装目录下的ball_beam示例文件(通常在/examples/ball_beam/)整个复制到你自己的工程文件夹,比如D:\co_sim\ball_beam。然后做两件事:
为什么要这么折腾?因为Adams导出的.m文件会写入当前目录,Matlab找adams_sub模块也按相对路径。我有一回没改路径,结果Adams死活找不到plant_export.m,折腾了40分钟才发现路径里有中文。2026年了,Adams还是不太认中文路径,老老实实用英文。
小技巧:在文件夹里新建一个startup.m文件,里面写cd('D:\co_sim\ball_beam'),这样每次打开Matlab自动切过去。
用Adams/View(aview)打开ball_beam.cmd。先别急着联合仿真,单独跑一下看看:点击Simulation,时长设10秒,步数200。你会看到小球在横梁上来回滚动,受一个脉冲力矩驱动。
注意:仿真时间最好≥8秒,因为横梁摆动需要几个周期才能看出规律。我一开始设了3秒,还以为模型坏了,后来把时间拉长才看到完整运动。
如果跑不通,检查重力方向(应该是-Y)和接触设置。ball_beam示例用了接触力,有时候电脑卡顿会报错。实在不行,重启Adams。
在Adams里点Tools→Plugin Manager,勾上Adams/Controls(不是Control,是完整的Controls)。2026版默认可能没加载,第一次用需要手动勾一下。
然后点Control→Plant Export。弹出对话框,按下面的填:
点OK。Adams会在当前目录生成三个文件:myball.m、myball.cmd、myball.adm。其中.m文件是给Matlab读的。
常见报错:如果Guess不出来,说明模型里没设置输入输出变量。回到ball_beam模型,检查Build→Controls Toolkit里有没有定义PINPUT和POUTPUT。没有的话,手动建两个Plant Input/Output。
打开Matlab,当前目录切到刚才的文件夹。在命令行输入:
myball这会加载Adams导出的参数。然后再输入:
adams_sys弹出一个Simulink框图,名字叫adams_sys。里面有一个adams_sub模块,就是这个模型的联合仿真接口。
偷懒技巧:原示例里本来有个ball_beam.mdl(旧版是.mdl,2026版可能是.slx)。你可以直接打开它,把里面的adams_sub删除,然后把你刚生成的adams_sub拖进去,最后另存为my_ball.slx。这样不用重新连输入输出线,省5分钟。
打开你刚建好的my_ball.slx。点Simulation→Model Configuration Parameters:
双击adams_sub模块,弹出一个Adams Parameters窗口:
注意:2026版中,Adams Subsystem模块的图标变了,但参数位置差不多。找不到就右键点Mask→Look Under Mask。
点Simulink的Run按钮(绿色三角形)。Matlab会调用Adams求解器,弹出一个黑色的asolver命令行窗口——别关,它后台在跑。
仿真速度取决于你的电脑。我实测:Intel i7-12700H,16G内存,跑10秒大概需要45秒到1分钟。如果你看到小球在横梁上往复滚动,最后稳定在某个位置,说明成功了。
判断标准:原版ball_beam是开环不稳定系统。不加控制的话,给一个脉冲,小球会滚来滚去最后掉下横梁。加了PID控制(示例里自带了一个简易PID),小球会在横梁中间来回震荡几次,然后停在中心附近。位置曲线应该像衰减振荡。
常见失败现象:


| 错误提示 | 可能原因 | 解决方法 |
|---|---|---|
License error: Cannot find Adams control license | 没启用Control模块 | 检查Plugin Manager,重启Adams |
Error evaluating 'InitFcn' | .m文件没执行 | 在Matlab里手动运行myball再adams_sys |
ADAMS execution error: Unable to open .adm file | 文件路径有空格或中文 | 文件夹移到D盘根目录,全英文 |
| 仿真完结果全是NaN | 输入输出变量不匹配 | 重新Guess Plant Input/Output |
最后说句大实话:联合仿真的稳定性很大程度取决于步长和求解器。别迷信高阶算法,Adams的接触和摩擦用固定步长ode1最稳。2026版虽然改了底层通信协议,但这个经验依然有效。跑通一次后,你就可以把PID换成模糊控制或者自适应控制,玩点高级的了。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。