控制耦合 — CAE术语解说
控制耦合
老师,控制耦合(Control Coupling)是什么意思?是将控制系统和CAE组合在一起吗?
控制耦合的理论基础
基本概念与支配方程
控制耦合具体是把什么和什么进行耦合?
控制耦合(Control Co-Simulation)是将结构或流体等物理仿真(CAE)与控制这些物理过程的控制器仿真(控制模型)在时间轴上联动求解的技术。例如分析汽车悬挂系统的振动(结构力学)和抑制振动的主动悬挂控制算法(控制工程)时,需要同时求解两者。
我认为两个领域使用的方程完全不同,那怎么进行\"耦合\"呢?
问得好。核心是\"数据交换\"和\"时间同步\"。CAE端通常用二阶微分方程表示的运动方程求解。例如:
FMI是什么?为什么需要它?
FMI是"功能模拟接口"的缩写,是模型交换(FMU)和耦合仿真(Co-Simulation)的国际标准。Dassault Systèmes、西门子、Ansys等主要软件厂商都支持这一标准。没有这个标准的时代,需要在各软件间开发专用的定制接口,成本非常高。有了FMI/FMU,就可以相对容易地将用Simulink开发的控制模型与Abaqus或ANSYS Mechanical进行耦合。
控制耦合的数值计算方法
离散化与求解器设置
在耦合仿真中,CAE端和控制端使用的时间步长(Δt)必须相同吗?
不必非要相同,但需要适当设置。一般来说,控制端(例如Simulink/Stateflow)响应速度更快,需要更细的时间步长。即使CAE端结构分析的步长为10ms,控制循环也常以1ms步长运行。此时可以在主仿真协议(例如FMI for Co-Simulation)中设置控制端为\"主\",每10个控制计算周期向CAE求解器发送一次位移并获取力反馈,这样的通信间隔(通信步长大小)。
如果加粗通信步长,计算会加快,但精度会降低吗?
正是这样。尤其当控制力变化剧烈,或结构系高频分量参与控制时,通信步长过粗容易导致不稳定(发散)。经验规则是:如果控制系统带宽为
耦合计算\"发散\"时,应该怀疑CAE求解器还是控制求解器的设置?
首先考虑\"全局能量收支\"。CAE端的阻尼设置不足,控制输入的能量全部积累在结构系统中导致发散,这种情况最常见。具体来说,在ANSYS Mechanical中设置结构比例阻尼(Rayleigh Damping)时,要检查质量矩阵系数α和刚度矩阵系数β。而控制端则常因比例增益(P增益)过大而发散。基本做法是先将控制增益设极小(或为零)确认CAE单独的衰减振动,然后逐步增大增益进行\"调试\"。
控制耦合的实务应用
工作流程与检查清单
首次进行控制耦合分析,按什么顺序进行失败风险最小?
有成熟的工作流程。1) **单体验证**:分别独立验证CAE模型(无控制力)和控制模型(虚拟输入)。2) **开环耦合**:将控制增益设为零,仅将传感器信号(位移等)从CAE传到控制端,监视控制输出,确认通信成功。3) **闭环耦合(极小增益)**:从极小的P增益开始。4) **调试**:逐步增大增益观察响应。5) **严苛条件测试**:加入扰动和噪声验证鲁棒性。跳过这些步骤会导致突然发散,很难查找原因。
单体验证中,CAE模型端特别要确认的要点有哪些?
主要三点。第一,控制力作用的\"输入点\"和读取传感器信号的\"输出点\"自由度定义是否正确。例如执行器仅在Z方向施力,就只应将该节点的Z方向自由度注册为输入点。第二,模型的固有振动数。控制带宽10倍以上的高频模态应在求解器设置中过滤(模态截断)或增大阻尼。第三,质量矩阵和刚度矩阵的量纲。不统一单位系统(N、mm、ton)会导致控制增益量级错误。
控制端(Simulink等)的模型中,为了耦合需要注意什么设置?
首先,求解器种类必须设为\"固定步长\"。可变步长求解器基本无法用于耦合。其次,离散化模块的采样时间要与前述通信步长一致或为其整数分之一。还要预料CAE信号上存在数值噪声,必要时加入一阶延迟滤波器(时常数1~5ms)。最后,必须为控制力输出设置\"饱和(限幅器)\"。计算暴走时非现实的巨大力施加到CAE模型会\"破坏\"模型。
控制耦合软件比较
主要软件的实现方法
请教一下将Ansys与Simulink进行耦合的具体方法。
Ansys 2020R1以后,标准的耦合平台是\"Ansys Twin Builder\"。步骤是:1) 在ANSYS Mechanical中创建分析系统,定义输入力和输出位移。2) 在Workbench中加入\"Twin Builder\"系统并连接到Mechanical系统。3) 在Twin Builder中以FMI/FMU格式导入导出的Simulink控制模型,用信号线连接。4) 进行耦合设置(通信步长=0.001秒等)后运行。或者采用更直接的\"MATLAB ACT扩展\"方法,在Mechanical APDL脚本中调用MATLAB引擎,但设置较复杂。
Abaqus如何实现与Simulink的耦合?简单吗?
Abaqus标准配备\"共耦合仿真\"功能。Abaqus/Standard或Explicit作为CAE求解器,Simulink作为控制求解器。在Abaqus CAE的\"交互\"模块创建\"共耦合仿真\",指定控制模型(.dll或FMU)即可。Dassault Systèmes还提供\"SIMULIA耦合引擎\"工具,可管理更复杂的耦合(3个以上求解器)。但将Simulink模型导出为FMU需要Simulink Coder许可,要注意。
COMSOL Multiphysics以\"多物理场\"见长,在控制耦合方面也很擅长吗?
COMSOL的方法有所不同。虽然也支持与外部软件的耦合(FMI),但COMSOL本身拥有\"ODE/DAE接口\"和\"事件\"功能,可在单一环境中直接编写并耦合控制方程。例如,可在\"系数型偏微分方程\"接口中定义PID控制器微分方程,直接与结构力学接口耦合。这样无须数据交换开销,耦合更紧密。但如需复杂状态机(Stateflow)或利用现有控制库,则需选择外部耦合(FMI)。
控制耦合故障排除
常见错误与对策
耦合计算在某个特定时间步突然停止,报错\"求解器不收敛\"。如何处理?
这是典型的耦合不稳定问题。首先让错误发生前的时间步数据输出。Ansys检查\"Restart\"文件,Abaqus检查\".sta\"或\".msg\"文件。查看控制力或位移是否出现物理上不可能的值(NaN或1e10)。对策是:1) 将通信步长减半。2) 临时放宽CAE求解器收敛判定(允许误差)。3) 在控制输出加低域通过滤波器,截断高频分量。根本上,控制增益通常过大。
计算到底能跑完,但结果振动呈现\"卡卡的\"不自然阶梯状。为什么?
这是\"混叠\"或\"通信步长过粗\"现象。控制输出在通信步间保持(零阶保持),力值以阶梯状更新。CAE作为输入接收这种不连续的力,所以响应也无法平滑。对策有二。第一,细化通信步长。第二,启用控制端\"输出插值\"选项。FMI for Co-Simulation 2.0支持FMU在通信步间插值输出值的功能。确认所用FMU支持此功能并启用,效果显著。
将Simulink模型导出为FMU,与Abaqus耦合时出现\"版本不兼容\"错误。
FMI/FMU版本管理至关重要。首先确认导出的FMI版本(1.0、2.0、3.0)与Abaqus支持的版本。Abaqus 2022及以前标准支持FMI 2.0。在Simulink\"FMU导出\"设置中明确指定目标版本为2.0。还要检查\"平台\"设置(win64、linux64)一致。32/64位不匹配也常见。如Abaqus为64位,则需导出64位FMU。跨厂商耦合时,选择兼容性最高的FMI 2.0 for Co-Simulation为稳妥之举。
相关主题
内容
举报