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

悬臂梁挠度仿真技术问题:载荷无响应及连接报错求解

问题排查与解决方案

原始Modelica代码

model FlexibleBeam_Deflection
  extends Modelica.Icons.Example;
  parameter Integer N = 2 ;
  inner Modelica.Mechanics.MultiBody.World world(label2 = "z", g = 9.81, n = {0, 0, -1}, animateGravity = true, animateGround = true, gravityArrowDiameter = 0.008, gravityArrowColor = {255, 100, 255}) annotation(Placement(transformation(origin = {0, 10}, extent = {{-80, -10}, {-60, 10}})));
  
  Components.EMBS_Body eMBS_Body(numModes = 10, SIDfileName = Modelica.Utilities.Files.loadResource("modelica://EMBSlib/tt4.SID_FEM"), numNodes = 3, d = 0.1) annotation(Placement(transformation(origin = {2, 10}, extent = {{-10, -10}, {10, 10}})));
  
  Modelica.Mechanics.MultiBody.Parts.Fixed fixed annotation(Placement(transformation(origin = {-66, 34}, extent = {{10, -5}, {21, 12}})));
  
  Modelica.Mechanics.MultiBody.Forces.WorldForce tipForce(diameter = 0.008, color = {255, 0, 0})  annotation(Placement(transformation(origin = {-6, 10}, extent = {{40, -10}, {60, 10}}), iconTransformation(extent = {{40, -10}, {60, 10}})));
  //Modelica.Blocks.Sources.Constant Fz(k = -900.81);      // in Newton
  //Modelica.Blocks.Sources.Step Fz(startTime = 1, height = -400, offset = 0);
  Modelica.Blocks.Interfaces.RealOutput tipDeflection annotation(Placement(transformation(origin = {14, -18}, extent = {{28, -28}, {35, 7}}), iconTransformation(extent = {{40, -10}, {60, 10}})));
  

equation
  //connect(fixed.frame_b, eMBS_Body.frame_node[1]) annotation(Line(points = {{-45, 37.5}, {-40, 37.5}, {-40, 10}, {12, 10}}, color = {95, 95, 95}));
  connect(world.frame_b, eMBS_Body.frame_ref);
  connect(tipForce.frame_b, eMBS_Body.frame_node[N]);
  tipDeflection = eMBS_Body.frame_node[N].r_0[3] - eMBS_Body.frame_node[1].r_0[3];
  tipForce.force[3] = -900;//Fz.y; // z-component
  tipForce.force[1] = 0; // x-component
  tipForce.force[2] = 0; // y-component
  annotation(experiment(StopTime = 500, Interval = 1e-3), Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}})));
end FlexibleBeam_Deflection;

问题1:变更载荷值后挠度无变化

根因分析

  1. 悬臂梁未固定:代码注释掉了根节点的固定连接,导致梁处于自由悬浮状态,载荷作用下整体平移而非弯曲,节点z坐标差值保持不变。
  2. 载荷作用位置错误:梁设置了3个节点,但载荷作用在中间节点(N=2),无法正确反映末端挠度变化。
  3. 挠度计算逻辑失效:自由状态下梁整体位移,节点坐标差值无变化,无法体现弯曲变形。

修复方案

  • 取消注释,固定悬臂梁根节点:
    connect(fixed.frame_b, eMBS_Body.frame_node[1]) annotation(Line(points = {{-45, 37.5}, {-40, 37.5}, {-40, 10}, {12, 10}}, color = {95, 95, 95}));
    
  • 修改参数N=3,将载荷作用在梁末端节点:
    parameter Integer N = 3 ;
    
  • 保持现有挠度计算逻辑,固定根节点后,末端与根节点的z坐标差即为弯曲挠度。

问题2:同时固定根节点与连接参考系时报错

根因分析

Fixed部件默认将frame_b固定到World,同时将eMBS_Body.frame_ref连接到World会造成约束冲突:根节点已被固定,参考系又强制绑定World,形成冗余约束导致仿真器无法求解。

修复方案

  • 方案1:移除参考系与World的连接,仅保留根节点固定:
    // 注释或删除该行
    // connect(world.frame_b, eMBS_Body.frame_ref);
    
  • 方案2:将参考系连接到fixed.frame_b,确保参考系与根节点坐标系一致,避免冲突:
    connect(fixed.frame_b, eMBS_Body.frame_ref);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 12:14:51