P0-P1 初始化/基本设置P2 取件 (UP21)P3 → Synchron (禁背景, 直接控制焊钳)P4 焊接 (UP22)P5 → Synchron (再次禁背景)P6 → Asynchron (条件=F277, 使能背景修磨)P7 等待循环 (媒体/跳转)P8 放件 (UP23)P9 完工报告P10 → Synchron (禁背景, LPTK结束序列)MAKRO65 :激活F65--->带动激活MAKROSTEP9
启动Asynchron (异步)
MAKRO64 :关闭F65-->等待结束MAKROSTEP9,启动Synchron
makrostep9 控制焊钳的工作原理 PLC指的是软PLC
IO | 方向 | 含义 |
$OUT[3510] | PLC→Robot | Start Dress(修磨启动) |
$OUT[3511] | PLC→Robot | Start Spot(焊接启动) |
$OUT[3512] | PLC→Robot | StartAcknowledge(确认) |
$OUT[3513] | PLC→Robot | Start Init New |
$OUT[3514] | PLC→Robot | Start Init Same |
$OUT[3871] | PLC→Robot | ServoGun RZ1 schliessen(关钳/修磨就位) |
$OUT[3872] | PLC→Robot | ServoGun RZ1 oeffnen(开钳/修磨完成) |
$OUT[3505] | Robot→PLC | WeldReady(焊接就绪) |
$OUT[3506] | Robot→PLC | TipDressReady(修磨就绪) |
$OUT[3507] | Robot→PLC | BG Active(后台运行中) |
$OUT[3508] | Robot→PLC | BG Success(后台完成) |
$OUT[3509] | Robot→PLC | BG Error(后台错误) |
$OUT[4039] | 内部 | 步序使能 |
方案A:在SK1工位对固定夹具RZ1进行铣削加工,直至工序流程结束
此处需要注意:针对固定式夹具的铣削加工不得在程序段UP 101 — 102中编写。
在正常程序运行过程中,焊接控制系统会向机器人发送信号,告知机器人需要执行启动铣削或常规铣削。
摆动装置的驱动控制以及铣削循环由机器人步骤链在后台执行。
要运行该后台进程,必须将伺服夹具设置为异步模式。
外部夹具允许端盖铣削摆动机构摆动所需的最小张开尺寸,在宏程序50的计数器i60中进行定义。
焊接工序完成后、摆动装置外侧(通过步骤序列启动后台程序)
22: PTP VB=100% VE=0% ACC=100% RobWzg=1 Base=1 SPSTrig=5 [1/100s]
1: FB-PSPS = EIN
2: F79 = E786 & !E788 + !E788 & E130
3: F78 = E788 & !F79
4: F751 = F78 + F79 ~ Hilfs-Flag
5: Servozange - Nr - Asynchron – Bedingung = F751 ~ 开始异步
6: SPS MAKRO065 = F751 ~ 开始铣削
7: WARTE BIS E23
8: FB PSPS = M30
工序序列结束
33: PTP VB=100% VE=0% ACC=100% RobWzg=1 Base=1 SPSTrig=5 [1/100s]
1: FB-PSPS = EIN
2:-- Bereich für Freigaben / Verriegelungen / Grundstellungen --
3: SPS MAKRO064 = EIN ~ 铣削结束
4: Servozange - Nr - Synchron – Bedingung = EIN ~ 开始同步
5: WARTE BIS E23
6: A23 = EIN
7: FB PSPS = M30
如何实现Synchron,Asynchron功能的
核心:$ASYNC_AXIS 系统变量
$ASYNC_AXIS 转换外部轴到异步模式的位排列
如果这个位设定了,这个外部轴将被转到异步模式,如果它要复位,这个外部轴将被转回同步模式。
KRC内核通过 $ASYNC_AXIS(6位bit field,对应E1~E6)决定外部轴的控制归属:bit=0 → 同步轴:跟随机器人插补(PTP/LIN/CIRC一起运动) bit=1 → 异步轴:脱离插补,只能用ASYPTP独立运动.
SGL_AsyncOn / SGL_AsyncOff(SG_Lib)
; 切异步:置位对应bit
GLOBAL DEFFCT INT SGL_AsyncOn(iExAxisNum:IN)
SWITCH iExAxisNum
CASE 1: BIT_FIELD = $ASYNC_AXIS B_OR 'B000001' ; E1→异步
CASE 2: BIT_FIELD = $ASYNC_AXIS B_OR 'B000010' ; E2→异步
...
ENDSWITCH
RETURN(BIT_FIELD)
ENDFCT
; 切同步:清对应bit
GLOBAL DEFFCT INT SGL_AsyncOff(iExAxisNum:IN)
SWITCH iExAxisNum
CASE 1: BIT_FIELD = $ASYNC_AXIS B_AND 'B111110' ; E1→同步
CASE 2: BIT_FIELD = $ASYNC_AXIS B_AND 'B111101' ; E2→同步
...
ENDSWITCH
RETURN(BIT_FIELD)
ENDFCT
调用方式(SG_Background):
$ASYNC_AXIS = SGL_AsyncOn(1) ; Gun1 ExtAx=1, E1切异步
$ASYNC_AXIS = SGL_AsyncOff(1) ; E1切回同步
两种模式下焊钳如何运动
Synchronous($ASYNC_AXIS bit=0):
PTP P_Spot ← E1轴值包含在E6POS中,KRC将6轴+E1一起插补 LIN P_Weld ← 同上,E1与TCP协调运动
外部轴是机器人运动的一部分
用 $VEL_EXTAX[1]、$ACC_EXTAX[1] 控制速度/加速度
ACTIVATE_FORCE_MODE 在运动过程中启动力控
主程序ILF的SPOT/INIT/TIPDRESS都走这条路
Asynchronous($ASYNC_AXIS bit=1):
ASYPTP ExtAxPos ← 只运动E1,6轴完全不动
ASYCANCEL 1 ← 取消E1异步运动
外部轴从插补器解耦
机器人6轴可以完全静止(或做其他事)
背景进程用 SGB_MANUAL_MOTION 封装ASYPTP
CalcAsyPos 只填E1分量,其余轴=0(不动)
完整切换流程
Synchron → Asynchron
1. Condition检查 (F277=修磨请求?)
2. 读PreOpening位置 (PLC传入焊钳预开度)
3. SGB_ProcTipDress(TRUE, 1):
a. SGB_IsConfigured_BG → 校验所有IO/配置
b. $ASYNC_AXIS = SGL_AsyncOn(1) ← 【关键】E1脱离插补
c. SG_TD_Ready_BG = TRUE ← $OUT[3506]=1, PLC看到"修磨就绪"
4. SGB_ProcWeld(TRUE, 1):
a. $ASYNC_AXIS = SGL_AsyncOn(1) (已置位,幂等)
b. SG_Weld_Ready_BG = TRUE ← $OUT[3505]=1, PLC看到"焊接就绪"
此后PLC可通过背景IO触发修磨/焊接,Submit层周期调用 SGB_BackgroundProcess() 用ASYPTP驱动焊钳。
Asynchron → Synchron
1. SGB_ProcTipDress(FALSE, 1):
a. WAIT FOR NOT $OUT[3507] ← 等PLC撤回Active(背景完成)
b. WAIT FOR NOT $OUT[3508] ← 等PLC撤回Success
c. SG_TD_Ready_BG = FALSE ← $OUT[3506]=0
d. $ASYNC_AXIS = SGL_AsyncOff(1) ← 【关键】E1回归插补
2. SGB_ProcWeld(FALSE, 1):
a. 同上等待
b. SG_Weld_Ready_BG = FALSE ← $OUT[3505]=0
c. $ASYNC_AXIS = SGL_AsyncOff(1)
SG_Background 工作原理
背景进程 = 主程序运行时,PLC通过IO触发焊钳异步执行焊接/修磨/初始化,不占用主程序运动链。外部轴通过 $ASYNC_AXIS + ASYPTP 独立运动。
GB_ProcWeld(TRUE, 1) → 使能Gun1背景焊接 SGB_ProcTipDress(TRUE, 1) → 使能Gun1背景修磨
使能流程:
SGB_IsConfigured_BG 校验: MMGrad有效、ExtAx≠0、已校准、已耦合、BGProcessActive=TRUE、WeldTimer已配、所有IO已配置
$ASYNC_AXIS = SGL_AsyncOn(ExtAx) — 将外部轴切换为异步模式
置Ready标志 → PLC看到 $OUT[3505](焊接) 或 $OUT[3506](修磨) = TRUE
禁用时: WAIT FOR PLC撤回Active/Success → 清标志 → $ASYNC_AXIS = SGL_AsyncOff
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!