3. Simpack建模环境

Simpack 的建模环境并不是一个“画图窗口”,而是一套以模型树为骨架、以参考坐标系为空间基准、以单位系统为数值基准的数据库式建模框架。理解这三者的关系,比记住某个菜单在哪里更重要:模型树决定“对象放在哪里、谁依赖谁”,参考坐标系决定“位置和方向相对谁定义”,单位系统决定“输入的数字按什么物理量解释”。本节围绕这三条主线,给出可操作的设置方法。

一、模型树:模型的唯一权威结构

打开 Simpack 后,左侧的模型树(Model Tree)以层级方式列出整个模型。典型的一级节点包括:Model(模型根)、Bodies(体)、Joints(铰接/约束)、Force Elements(力元)、Subsystems(子系统)、Sensors(传感器)、Measurements(测量)等。每个节点下再挂具体对象,例如 Bodies 下可能有 Chassis、Wheel_Front_L 等。

模型树的关键规则有三条。第一,对象必须挂在正确的父节点下:体不能直接挂在 Joints 下,力元也不能挂在 Bodies 下。第二,名称即引用:力元、铰接、传感器在定义时通过对象名引用其他对象,因此重命名会触发引用更新,但手工在外部文本中改名字会导致引用断裂。第三,树中的顺序不代表求解顺序,Simpack 在生成方程时会根据拓扑关系自动排序,因此不要试图通过拖动节点来“调整计算顺序”。

实际操作中,建议在建模前先规划命名前缀,例如用 B_ 表示体、J_ 表示铰接、F_ 表示力元、S_ 表示传感器。这样在模型树中展开时,对象类型一目了然,也便于在力元表达式中快速找到目标对象。

二、子系统:把重复结构封装成可复用单元

子系统(Subsystem)是 Simpack 中实现“一次定义、多次实例化”的机制。它本质上是一个局部模型,拥有自己的体、铰接、力元和局部参考坐标系,然后作为一个整体被插入到上级模型中。典型应用包括:四分之一车辆悬架、单轮转向节总成、电机-减速器总成、机械臂的单个关节模块。

创建子系统的标准流程是:在模型树中右键 Subsystems → New,输入子系统名称;进入子系统编辑界面后,像建普通模型一样建立其内部对象;完成后返回上级模型,通过 Insert Subsystem 将其实例化。每个实例可以有自己的安装位置和安装方向,但内部拓扑保持不变。

需要特别注意两点。其一,子系统内部的局部参考坐标系是子系统的“安装接口”,实例化时就是把这个局部坐标系对齐到上级模型的某个参考坐标系。其二,子系统内部的参数如果需要在不同实例间变化,应将其提升为参数或使用参数集,而不是在每个实例中手工改数值,否则复用价值会大打折扣。

三、参考坐标系:位置与方向的共同基准

Simpack 中所有位置、方向、速度、力都必须在某个参考坐标系下定义。常见的参考坐标系类型包括:

  • 全局坐标系(Global / Ground):整个模型的绝对基准,通常取重力方向为 -Z 或 -Y,取决于单位系统与行业约定。
  • 体参考坐标系(Body Reference Frame):每个体自带的局部坐标系,体的质心位置、惯量张量通常相对它定义。
  • 标记点(Marker):挂在体上的局部点,用于定义铰接位置、力元作用点、传感器测点。
  • 参考坐标系(Reference Frame):独立于体的坐标系,常用于定义子系统安装接口、测量基准或中间变换。

设置参考坐标系时,必须同时明确原点位置和三轴方向。例如,定义一个悬架下摆臂的转动铰接,需要指定铰接点在全局坐标系下的位置,以及铰接轴的方向向量。如果方向向量写反,铰接的转动正方向就会相反,后续力元或传感器的符号也会整体反号。

方向约定提醒:在 Simpack 中,铰接的转动正方向通常按右手定则,绕铰接轴正向旋转为正。若在建模中把铰接轴定义为 (0,0,1),则绕 +Z 逆时针为正;若改为 (0,0,-1),正方向反转。全文和图示必须保持一致,切换参考系时要显式说明。

四、单位系统:数值的物理含义

Simpack 允许在模型级别设置单位系统,常见选项包括 SI(m、kg、s、N、rad)、mm-t-s(mm、t、s、N、rad)以及自定义单位。单位系统一旦设定,模型树中所有数值输入都按该单位解释,求解器内部通常统一转换为 SI 进行计算,输出时再转换回用户单位。

设置单位系统的位置一般在 Model → Properties → Units 或全局首选项中。需要重点检查的物理量包括:长度、质量、时间、力、力矩、角度、频率。例如,若选择 mm-t-s,则长度输入 500 表示 500 mm,质量输入 1.2 表示 1.2 t,力输入 1000 表示 1000 N。若误把 mm 当 m 输入,模型尺寸会放大 1000 倍,重力、惯量和接触刚度都会严重失真。

一个实用的检查方法是:建模完成后,查看模型树中关键体的质量属性,确认总质量与工程估算一致;再查看重力加速度的数值,确认其单位与长度单位匹配。例如在 mm-t-s 下,重力加速度应输入 9810(mm/s²),而不是 9.81。

五、四者协同:一次完整的设置示例

下面以一个简化的单轮悬架模型为例,说明模型树、子系统、参考坐标系和单位系统如何协同工作。假设采用 mm-t-s 单位制,全局坐标系 Z 轴向上,重力沿 -Z。

Model: Suspension_Demo
  Units: mm-t-s, angle = rad
  Gravity: (0, 0, -9810) mm/s^2

  Subsystems:
    Sub_WheelAssembly
      Local Ref Frame: origin at wheel center, X forward, Z up
      Bodies: B_Hub, B_Rim, B_Tire
      Joints: J_Spindle (revolute about local Y)
      Force Elements: F_TireRadial, F_TireLateral

  Bodies:
    B_Chassis
      Marker: M_LowerArmFront  at (0, -750, 350) mm
      Marker: M_LowerArmRear   at (0,  750, 350) mm

  Joints:
    J_LowerArmFront: revolute, axis (1,0,0), between B_Chassis.M_LowerArmFront and Sub_WheelAssembly.LocalRef

  Sensors:
    S_WheelTravel: relative Z displacement between B_Chassis and Sub_WheelAssembly

在这个示例中,子系统 Sub_WheelAssembly 的局部参考坐标系原点设在轮心,方向为 X 向前、Z 向上。实例化时,把这个局部坐标系安装到 B_Chassis 的 M_LowerArmFront 附近,并通过铰接 J_LowerArmFront 约束相对运动。传感器 S_WheelTravel 测量轮心相对车身的 Z 向位移,用于观察悬架跳动。

判断设置是否正确,可以按以下顺序检查:单位系统下重力数值是否为 9810;模型树中体、铰接、力元是否挂在正确父节点;子系统实例的安装位置是否与设计值一致;铰接轴方向是否与预期正方向一致;传感器读数在静平衡时是否接近设计载荷下的理论值。若其中任一项异常,优先回到参考坐标系和单位系统排查,而不是直接修改力元参数。

Simpack 建模环境四要素协同关系 模型树 Model Tree Model: Suspension_Demo Bodies B_Chassis Joints J_LowerArmFront Subsystems Sub_WheelAssembly Force Elements F_TireRadial Sensors S_WheelTravel 对象必须挂在正确父节点下 名称即引用,重命名触发更新 子系统 Subsystem Sub_WheelAssembly B_Hub / B_Rim / B_Tire J_Spindle (revolute about Y) F_TireRadial / F_TireLateral Local Ref: 轮心, X前 Z上 参考坐标系 Reference Frame 全局坐标系: Z 向上, 重力 -Z 体参考坐标系: 质心/惯量基准 Marker: 铰接/力元/传感器测点 局部参考系: 子系统安装接口 原点位置 + 三轴方向必须同时明确 铰接轴方向决定转动正方向 单位系统 Unit System mm-t-s, angle = rad 长度: mm 质量: t 力: N 重力: 9810 mm/s² 设置检查清单 1. 单位制下重力数值是否正确 2. 对象是否挂在正确父节点 3. 子系统安装位置是否一致 4. 铰接轴方向是否与预期一致 5. 静平衡传感器读数是否合理 6. 总质量与工程估算是否吻合 异常时优先排查坐标系与单位 模型树定义结构,子系统实现复用,参考坐标系定义空间基准,单位系统定义数值基准

最后强调一个常见误区:很多初学者在模型报错时第一反应是修改力元参数或求解器设置,但实际问题往往出在参考坐标系的方向或单位系统的量纲上。建议养成“先查树、再查系、后查单位、最后查参数”的排查顺序,这样能显著减少无效调试时间。