3. 镁合金车门内板冲压成形工艺模拟

镁合金车门内板冲压成形工艺模拟 学习卡片

任务说明

本案例针对镁合金车门内板冲压成形中常见的开裂与起皱缺陷,建立有限元仿真模型,通过对比不同工艺参数组合下的成形质量,确定最佳工艺窗口。镁合金在室温下塑性差,需采用温热成形工艺,因此重点考察坯料温度、冲压速度与压边力三个关键参数。

仿真模型建立

采用ABAQUS/Explicit建立车门内板冲压模型。板料为AZ31B镁合金,厚度1.5mm,本构关系采用温度相关的各向同性硬化模型,屈服准则选用Hill48以反映轧制板材的各向异性。模具设为刚体,板料与模具间摩擦系数取0.12。板料网格采用S4R壳单元,网格尺寸3mm,共生成约8500个单元。

镁合金车门内板温热冲压仿真模型 凸模 (刚体) 速度: 10~50 mm/s AZ31B 板料 1.5mm 温度: 150~300°C 压边圈 (刚体) 压边力: 50~200 kN 凹模 (刚体) 材料流入 材料流入 起皱区 开裂区 工艺参数 坯料温度 冲压速度 压边力

材料模型与参数

AZ31B镁合金在不同温度下的应力-应变关系采用如下Swift硬化方程描述:

σ = K(T) · (ε₀ + ε̄ᵖ)ⁿ⁽ᵀ⁾

其中K(T)和n(T)为温度相关参数,具体取值如下表(表中数据为公开文献中AZ31B的典型值):

温度 (°C)K (MPa)nε₀
1504200.160.005
2003500.200.008
2502800.250.010
3002200.300.012

仿真代码实现

以下为ABAQUS Python脚本的核心部分,用于参数化建模与批量仿真:

# 文件名: door_inner_stamping.py
# 功能: 镁合金车门内板温热冲压参数化仿真
from abaqus import *
from abaqusConstants import *
from caeModules import *
import numpy as np

# ========== 参数定义 ==========
# 工艺参数组合 (温度, 速度mm/s, 压边力kN)
param_sets = [
    (200, 20, 100),
    (250, 20, 100),
    (250, 30, 150),
    (300, 30, 150),
    (250, 20, 200),
]

def create_model(temp, velocity, blank_holder_force):
    """创建单个仿真模型"""
    model_name = f'DoorInner_T{temp}_V{velocity}_F{blank_holder_force}'
    mdb.Model(name=model_name)
    model = mdb.models[model_name]
    
    # --- 创建材料 ---
    mat = model.Material('AZ31B')
    mat.Elastic(table=((45000, 0.35),))  # 弹性模量MPa, 泊松比
    
    # 塑性: 温度相关 (Swift硬化)
    # 数据来自上表, 插值使用
    K = {150:420, 200:350, 250:280, 300:220}
    n = {150:0.16, 200:0.20, 250:0.25, 300:0.30}
    eps0 = {150:0.005, 200:0.008, 250:0.010, 300:0.012}
    
    # 在指定温度下计算屈服应力-塑性应变数据点
    yield_data = []
    for eps_p in np.linspace(0, 0.35, 20):
        sigma = K[temp] * (eps0[temp] + eps_p)**n[temp]
        yield_data.append((sigma, eps_p))
    
    mat.Plastic(table=yield_data)
    
    # 密度与热属性
    mat.Density(table=((1.77e-9,)))  # 密度 t/mm³
    mat.Conductivity(table=((96,)))   # 热导率 W/(m·K)
    mat.SpecificHeat(table=((1050,))) # 比热 J/(kg·K)
    
    # --- 创建部件 ---
    # 板料: 车门内板简化几何 (实际为复杂曲面)
    s = model.ConstrainedSketch(name='blank', sheetSize=1000)
    s.rectangle(point1=(-300, -400), point2=(300, 400))
    p = model.Part(name='Blank', dimensionality=TWO_D_PLANAR, type=DEFORMABLE_BODY)
    p.BaseShell(sketch=s)
    
    # 模具: 简化为解析刚体曲面 (实际需导入CAD)
    # 此处用离散刚体近似凹模形状
    # ... (模具几何创建代码省略, 实际工程中从IGES/STEP导入)
    
    # --- 装配 ---
    a = model.rootAssembly
    a.Instance(name='Blank-1', part=p, dependent=ON)
    # 定位模具与板料相对位置
    # ...
    
    # --- 分析步 ---
    model.ExplicitDynamicsStep(name='Stamping', timePeriod=0.1)
    
    # --- 接触定义 ---
    model.SurfaceToSurfaceContactExp(name='Punch-Blank', 
        createStepName='Stamping', 
        master='Punch.Surf', slave='Blank.Surf',
        mechanicalConstraint=KINEMATIC)
    
    # --- 边界条件 ---
    # 凸模速度 (沿Z负方向)
    model.Velocity(name='PunchVel', region='Punch.RefPt',
                   field='Z', magnitude=-velocity)
    # 压边力
    model.ConcentratedForce(name='BHF', region='Binder.RefPt',
                            cf2=-blank_holder_force*1000)  # N
    
    # --- 温度场 ---
    model.Temperature(name='PreHeat', createStepName='Initial',
                      region='Blank.Surf', distribution=UNIFORM,
                      crossSectionDistribution=temp)
    
    # --- 网格 ---
    p.seedPart(size=3.0, deviationFactor=0.1)
    p.generateMesh()
    
    # --- 作业提交 ---
    job = mdb.Job(name=model_name, model=model_name)
    job.submit()
    job.waitForCompletion()
    
    return model_name

# ========== 批量执行 ==========
for params in param_sets:
    create_model(*params)
    print(f'完成: 温度{params[0]}°C, 速度{params[1]}mm/s, 压边力{params[2]}kN')

# ========== 后处理与缺陷判定 ==========
def evaluate_results(job_name):
    """读取ODB, 计算成形极限与起皱指标"""
    from odbAccess import openOdb
    odb = openOdb(f'{job_name}.odb')
    
    # 提取最后一帧
    frame = odb.steps['Stamping'].frames[-1]
    
    # 获取厚度应变与主应变
    # ... (后处理代码)
    
    # 开裂判定: 主应变超过成形极限曲线
    # 起皱判定: 厚度应变异常增大或压应力失稳
    
    odb.close()

# 对每个作业执行后处理
for params in param_sets:
    job_name = f'DoorInner_T{params[0]}_V{params[1]}_F{params[2]}'
    evaluate_results(job_name)

工艺参数优化策略

采用正交试验法安排仿真方案,以最大减薄率(开裂指标)和最大增厚率(起皱指标)作为评价标准。判定准则为:

  • 开裂判据:最大减薄率 > 25% 判定为开裂风险(AZ31B在温热态下的极限减薄率)
  • 起皱判据:最大增厚率 > 15% 或出现负主应力失稳区判定为起皱
  • 合格标准:同时满足减薄率 ≤ 25% 且增厚率 ≤ 15%

结果分析与最佳参数确定

通过五组仿真对比,可获得如下规律性结论(以下为基于仿真逻辑的预期趋势,实际数值需运行后确认):

  • 温度影响:200°C时材料塑性差,侧壁与凸模圆角处主应变接近FLC,存在开裂风险;300°C时材料软化明显,法兰区压应力增大导致起皱趋势上升。
  • 速度影响:速度从20mm/s提升至30mm/s时,应变率效应使流动应力略增,对减薄率影响不显著,但过高速度会加剧局部升温不均。
  • 压边力影响:压边力从100kN增至200kN时,法兰区材料流入阻力增大,减薄率上升约5~8%,但起皱趋势明显下降。

推荐最佳工艺窗口:坯料温度 250°C、冲压速度 20~25 mm/s、压边力 120~150 kN。此窗口内材料塑性充分且流动可控,减薄率与增厚率均处于安全范围。

验证方法与判定标准

完成仿真后,按以下步骤验证结果有效性:

  1. 运行仿真:执行 abaqus cae noGUI=door_inner_stamping.py 批量运行五组参数仿真。
  2. 提取结果:在后处理中读取每个作业的最大减薄率与最大增厚率,记录于结果汇总表。
  3. 判定合格:若某组参数下最大减薄率 ≤ 25% 且最大增厚率 ≤ 15%,则该组参数判定为合格工艺。
  4. 对比选优:在合格参数组中,选择减薄率与增厚率均衡且安全裕度最大者作为最佳工艺参数。
  5. 可视化检查:观察厚度云图中是否存在局部突变区域,确认无厚度小于0.9mm(减薄40%)的极端危险点。

预期输出示例(基于代码逻辑与材料模型的确定性推导):当温度250°C、速度20mm/s、压边力150kN时,由于该温度下材料延伸率约40%,且压边力适中,仿真结果应显示最大减薄率约18~22%,最大增厚率约8~12%,处于安全窗口内。实际数值以运行结果为准。