西门子840D地铁车辆焊接程序设计与开发
摘 要:为满足地铁车辆不锈钢车体焊接工艺要求,车辆钢结构总组成焊接任务均由自动焊接机器人承担,要求生产高效可靠,自动挠度补偿、精确定位、最大限度控制焊接变形,保证产品焊接质量。因此对承担该焊接任务的西门子 840D 自动焊接机器人进行相关部分的程序设计与开发。
关键词: 焊接工艺、自动挠度补偿、精确定位、西门子840D
前言:地铁总组成焊接程序采用模块化、柔性化的设计理念进行开发。 改变以往利用绝对坐标系进行工件定位的单一模式,采用绝对坐标与相对坐标相结合,并使用“R”指令增加人工干预的复合定位模式,以达到焊点精确定位、自动挠度补偿的目的,极大提高车辆组对精度和焊接质量。
程序功能:精确定位、自动挠度补偿、断点续焊、工件误差补偿、迂回焊接等。
程序结构:
一、主程序:SP3_WELD_DK74_MAIN.MPF
对整个程序框架的构建和各个功能模块的整合, 设计实用的功能接口,对各个功能模块(子程序)的调用、数据传递。对焊接机器人的走行定位、焊接顺序、焊接过程、焊接姿态等方面进行控制,实现车体组对焊接的全过程。
对主程序关键部分进行详细描述:
-------------------------------------------
PROC SP3_WELD_DK74_MAIN (主程序名称)
-------------------------------------------
子程序声明过程:
EXTERN SP3_ABS_74 (REAL) (X 绝对坐标值定位子程序声明)
EXTERN SP3_WELD74_PREPARE (REAL) (Y 绝对坐标值、Z 增量子程序声明)
EXTERN SP3_WELD74_STEP (REAL) (X 增量、挠度获取子程序声明)
EXTERN SP3_WELD74_UP (INT) (焊接子程序声明)
- ------------------------------------------
主程序变量声明过程:
DEF REAL _Offset(X 绝对坐标偏移变量 ), FRIST (初始焊点序号)
DEF INT _NUM ( 焊点数量 ), _ACOUNT ( 计数器 ) ,_POINT(跳点次数)
--------------------------------------------
当工件摆放位置与程序 X 绝对位置存在偏差时,修正机器人内部参数 R3,并将 R3 值赋予变量 _Offset,保证机器人精确定位到工件实际焊接位置。
_Offset = R3
--------------------------------------------
偏差值>10mm 时,机器人暂停并做出提示,要求操作者检查焊接工件,防止错误焊接。
IF _Offset > 10
MSG ("Offset invalid ! R3 > 10 ! Please change it! ")
M_01: M0
GotoB M_01
ENDIF
--------------------------------------------
焊接定位过程:机器人以安全行走姿态走行至 X 绝对坐标值“49451.5 + _Offset”位置暂停,提示操作者检查焊接位置并确认操作。
SP3_WELD74_FREE (安全行走姿态子程序调用)
SP3_ABS_74(49451.5 + _Offset)
MSG ("please check the position of weld point") (屏幕提示)
M0 (暂停)
MSG("") (屏幕清空)
--------------------------------------------
SP3_WELD74_PREPARE(17.95) ( 机器人调整 Y 绝对坐标值并获取 Z 增量值 17.95,运行至焊接姿态)
--------------------------------------------
断点续焊功能判断: 在焊接过程中某个焊接位置出现错误,通过设置内部指令 R31,机器人会自动判断并走行至该位置重新焊接。
_NUM = 48 (焊点数量 48)
FOR _POINT = 1 TO _NUM-1 (循环判断 47 次)
IF (R31 == _POINT) (判断条件)
X3 = IC(-60*_POINT) (X 绝对坐标增量值为-60*R31,实现快速跳转)
ENDIF
ENDFOR
--------------------------------------------
焊接过程:通过循环语句控制,机器人依次焊接,直至焊接完成,关闭焊接电源、冷却水,以安全姿态行走至 X 绝对坐标“10000”。
FRIST = R31 (R31 将初始焊点序号赋值给变量 FRIST)
FOR _ACOUNT = FRIST TO _NUM-1 (焊接循环 “47-FRIST”次)
SP3_WELD74_STEP(-60) (每循环一次 X 增量值增加 “-60mm”)
SP3_WELD74_UP (2) (使用 2 号焊接参数进行焊接)
ENDFOR
SP3_WELD74_FINISH (焊接结束子程序调用)
SP3_WELD74_FREE (安全行走姿态子程序调用)
SP3_ABS_74(10000) (安全位置)
……
M30 (程序完成)
-------------------------------------------
二、焊接功能模块:SP3_WELD74_UP(INT).SPF
通过使用西门子 840D 数控系统内部“M”指令,控制焊接时机器人焊接动作全过程,包括焊接前准备:接通焊接电源、冷却水启动、空压机启动等;焊接中:调用焊接参数、执行焊接动作等;焊接后:关闭焊接电源、停止冷却、空压机关闭等,最终实现自动焊接。 子程序 SP3_WELD74_UP (INT _NUMBER)中,变量类型为整形,变量 _NUMBER 功能用于向机器人传递焊接参数类型。
三、自动挠度获取功能模块:GET_POS_Z3.SPF
此功能模块为核心部分,设计严密的科学算法,实现机器人通过 X 绝对坐标值自动计算挠度、获取挠度的功能,大大提高了机器人自动点焊的精度,增强程序的实用性。
对程序 GET_POS_Z3.SPF 关键部分进行详细描述:
--------------------------------------------
PROC GET_POS_Z3 (程序声明)
DEF REAL Z_0, Z_1 (变量声明;Z_0, Z_1 分别表示特定点挠度值)
DEF REAL dX_0, dX_1(变量声明;dX_0, dX_1 分别表示特定点 X 绝对坐标值)
Z_0= 7.22 dx_0= 16499-7795(为特定点赋予 X 绝对坐标值、挠度值)
Z_1= 10.77 dX_1= 16499-6625(为特定点赋予 X 绝对坐标值、挠度值)
-------------------------------------------
机器人获取当前位置 X 绝对坐标值在哪两个特定点之间,根据前后特定点挠度计算当前点挠度,并将其值赋予机器人内部参数 R10, 为子程序 SP3_WELD74_STEP.SPF 传递参数,最终计算当前点 Z 绝对坐标值。
IF ($AA_IW[X3] <= dX_1) AND ($AA_IW[X3] > dx_0)
R10 = Z_1 + ( (Z_0-Z_1)/(dX_0-dX_1) * ($AA_IW[X3]-dX_1) )
ENDIF
m17 (子程序结束)
--------------------------------------------
算法介绍:
假设:特定点 A0、A1;当前点 Ax;dx_0、Z_0、dx_1、Z_1 分别为特定点 A0、A1 的 X 绝对坐标值、挠度值。 如图所示:

四、工件绝对坐标系定位系统:SP3_ABS_77.SPF
该定位系统实现了机器人对工件的定位检测功能, 判断工件是否在合理的误差范围内, 将位置误差自动记录在主程序“R”参数内,自动调整机器人的自动点焊位置并进行报警提示。
五、焊接动作系统
SP3_WELD74_PREPARE.SPF、 SP3_WELD74_STEP.SPF
SP3_WELD74_FREE.SPF、 SP3_WELD74_FINISH.SPF
该系统通过整合调用 4 个功能模块, 实现了整个焊接过程。包括:焊前自由状态、焊前设备准备、焊接参数自动调用传递、焊接开始、焊接过程检测、焊接结束准备等。
该程序已经运用于地铁车辆的焊接生产制造中, 经过实际生产验证,该程序实用可靠、操作简单,真正实现了无人看管、自动焊接、迂回点焊等功能。大幅提高了生产效率,降低了工人劳动强度和生产成本。