• 开放式激光振镜运动控制器(四):ZMC408SCAN振镜控制光纤激光器加工


    上一节介绍了控制器的激光相关的接口与如何实现激光的控制。本节介绍ZMC408SCAN控制激光振镜的方法。

    01 激光与振镜功能简介

    ZMC408SCAN是正运动技术新推出的一款支持EtherCAT总线的开放式激光振镜运动控制器,集激光控制+振镜控制+轴控于一体。支持16路运动轴的复杂的连续轨迹控制需求,可实现振镜轴+脉冲轴+总线轴的混合插补。

    在这里插入图片描述

    ZMC408SCAN控制器上包含两个SCAN振镜接口,SCAN支持XY2-100振镜协议,支持振镜轴与运动轴联合插补运动,实现激光输出与运动的同步控制。

    支持激光振镜控制和振镜反馈,配合不带加减速的运动指令MOVESCAN,拐角处振镜加工自动延时,完成精准高效的激光控制,提高激光加工设备的产能。

    →激光器的接口可选LASER,EXIO扩展IO口或OP输出口。

    →LASER激光电源接口支持连接 IPG、YLR、YLS 等类型激光电源。

    →EXIO扩展接口目前可支持扩展标准的YGA、SPI、FIBER等激光器类型,通过EXIO扩展接口连接扩展板,转换TTL信号后控制激光器的激光使能、红光开关以及8位数字量输出口控制激光能量,接线完成还需使用指令配置EXIO扩展接口,配置连接扩展板的输入/输出信号。

    →输出口OUT0-7支持PWM功能,可灵活连接激光器。

    02 激光振镜控制原理

    1.什么是激光振镜

    激光振镜是一种专门用于激光加工领域的特殊的运动器件,2D激光振镜头包含的主要元件是激光发生器,两个电机和两个振镜片,它靠两个电机分别控制两个振镜片X和Y反射激光,形成XY平面的运动,这两个电机使用控制器上的振镜轴接口控制,示意图如下。

    激光振镜不同于一般的电机,激光振镜具有非常小的惯量,且在运动的过程中负载非常小,只需要带动反射镜片,系统的响应非常快。

    激光发生器的能量和开关可采用PWM控制或模拟量控制,根据激光器的类型选择接线方式和控制方式。

    在这里插入图片描述

    2.SCAN振镜接口

    使用ZMC408SCAN控制器的SCAN振镜轴接口连接激光振镜头,每个振镜轴接口内包含两路振镜通道信号,分别控制振镜片X、Y的偏转,从而控制了激光打到工件的位置,激光的开关一般通过OP口控制,部分OP口支持PWM功能,通过PWM控制激光的能量和开关。

    在这里插入图片描述

    SCAN振镜接口采用25针母头,针脚号说明参见下表:

    在这里插入图片描述

    在这里插入图片描述

    注意:

    (1)2D振镜默认情况下,SCAN0的对应2D振镜Axis4,Axis5,SCAN1的对应2D振镜Axis6,Axis7;

    (2)3D振镜默认情况下,SCAN0的对应3D振镜Axis4,Axis5,Axis8,SCAN1的对应3D振镜Axis6,Axis7,Axis9。

    3.XY2-100振镜协议

    ZMC408SCAN支持XY2-100振镜协议,刷新周期10us-50us,支持运动控制与振镜联合插补运动。上位机通过网口与控制器相连,通过XY2-100振镜协议进行控制振镜轴的运动,通过EtherCAT总线或者脉冲模式控制伺服轴运动。

    ZMC408SCAN同时支持XY2-100E振镜协议,支持瑞雷振镜闭环,振镜运动过程中会实施反馈MPOS的振镜位置,可通过读取的位置进行对应处理实现闭环,并且会对应报警。

    4.激光振镜控制过程

    振镜运动采用缓冲区运动方式,即用户需要向轴运动缓冲区传递运动及工艺数据,然后启动缓冲区运动,运动控制器则会依次连续执行用户所传递的运动数据,直到所有的运动数据全部运动完成。

    在激光振镜运动控制系统中不但有运动的控制,还有激光的控制。如何有效地处理振镜运动和激光开关的配合是一个很重要的问题,只有有效的协调了激光和运动的关系,才能运动出精确的轨迹。

    运动控制:打标运动时,激光会按照设定的打标速度沿着给定的打标轨迹运动,在执行打标相关指令时,激光振镜运动控制器会自动开启激光。如果下一条仍是打标指令,激光一直呈开启状态,直到最后一条打标指令结束,或缓存区指令执行完毕,中途在缓冲区若遇到跳转指令,则激光自动关闭,直到遇到打标指令,激光才重新开启。开始运动前为保证打标轨迹正确需调整振镜坐标,同时清空缓冲区。

    激光控制:主要包括控制激光的开关控制与发出激光的时长,控制激光的开断使用OP指令,激光能量的控制可根据激光器的不同,对应通过模拟量,数字量输出口,以及输出口PWM的占空比对应控制能量的大小。

    5.激光振镜控制架构

    ZMC408SCAN开放式激光振镜控制系统的参考架构如下图:

    实现激光加工包含运动控制与激光控制两大部分。

    激光振镜控制系统的控制过程可选正运动的API函数库通过常用上位机环境控制,或正运动自主研发的ZDevelop开发环境,或第三方用户程序。

    激光振镜用于直接控制激光的轨迹,选用支持标准XY2-100协议的产品。

    激光控制可通过LASER、支持PWM功能的OUT输出口或者EXIO扩展接口接标准的激光器。

    工件需要运动时可采用脉冲轴或EtherCAT总线轴控制,支持与激光振镜轴联合插补。

    在这里插入图片描述

    ZMC408SCAN上的SCAN0对应的2D振镜轴号为4和5,SCAN1对应的振镜轴号为6和7,ATYPE轴类型设为21(振镜的轴类型),振镜轴的运动控制与脉冲型驱动器的控制方法相同,可使用常用的MOVE等一系列运动控制指令。

    同时额外封装了MOVESCAN(MOVESCANABS绝对运动)振镜运动指令,MOVESCAN与MOVE指令区别是此指令不带加减速,支持微秒级别的时间控制,响应速度更快。

    03 激光振镜控制实例

    例程用ZDevelop软件开发,以ZMC408SCAN控制FIBER激光器为例,分为运动控制和激光控制两部分。

    运动控制部分采用SCAN0接口控制2D激光振镜,振镜轴对应轴号为4和5。

    激光控制部分采用EXIO扩展IO接口扩展,通过标准Fiber转接板连接激光器。

    1.控制器与激光振镜接线

    采用标准的配线完成控制器与激光振镜接线,接线参考图如下:

    在这里插入图片描述

    (1)SCAN振镜轴接口接线原理如上图所示,请使用差分接线标准,注意信号规格相互匹配;

    (2)请使用屏蔽双绞线接线,尤其是环境恶劣的场合,务必使屏蔽层充分接地。

    2.控制器与激光器接线参考

    控制器与转接板、激光器与转接板均采用标准DB25线直连,配线简单方便,转接板与激光器采用统一接口,采用专用线缆直连。接线参考图如下:

    在这里插入图片描述

    Fiber激光器转接板输出接口说明如下表,通过EXIO_DIR设置好IO方向后,便可通过右侧的IO编号控制激光器。

    在这里插入图片描述

    D0和D7一共8位组合设置激光器的功率,激光出光口为OUT8,激光出光前先设置好激光器的功率并打开激光使能开关OUT47,红光的开关为OUT48。

    →EXIO扩展IO配置

    说明:采用EXIO接口扩展后, 均需要使用EXIO_DIR指令对扩展IO进行方向配置才可正常使用。

    按上节接线完成后,配置好EXIO扩展IO接口的IO方向之后才能控制激光器,扩展IO功能设置EXIO_DIR(0, $8FFFF)。

    指令语法:

    EXIO_DIR(isel, dirbit)

    Isel:0(指定激光器类型)

    dirbit: 按位设置是否输出, 0- 输入, 1-输出 (自定义配置转接口对应的信号类型)

    控制器与激光器的接线参考图如下:

    在这里插入图片描述

    3.激光控制说明

    例如某激光器的控制端口针脚说明如下表,对比上表可知,Fiber-DB25头转接板输出接口采用与该激光器匹配的标准端口,针脚定义一致,可直接与该激光器相连,再通过OUT引脚控制激光器。

    在这里插入图片描述

    主要控制端子说明:

    功率信号定义:设置针 1~8 的 TTL 信号,通过 TTL 信号的组合来设置泵浦激光二极管的电流,从而控制激光器的输出功率。通过 1~8 针可以设置 0~255 范围内的编码,对应于 0~100%的功率输出。

    电源:针17和GND组成激光器控制端口的供电回路,采用5V直流供电。

    4.打标应用例程

    编程界面如下图,采用Basic和HMI混合编程,Basic完成控制过程,HMI编写界面。

    在这里插入图片描述

    初始化定义相关变量,初始化轴参数,配置好FIBER转接板的方向为输出,后续的激光加工控制由HMI界面的按钮触发。

    D0和D7一共8位组合设置激光器的功率,通过AOUT3配置激光功率;激光出光口为OUT8,激光出光前先设置好激光器的功率并打开激光使能开关OUT47,红光的开关为OUT48。

    (1)Basic程序如下

    '**********************************************************HMI初始化
    Global Sub Sub_HmiInit()
       Sub_VarDefine()      '定义变量
       Sub_AxisInit()       '初始轴参数
       Sub_SetExioFiber     'Fiber转化板参数设置
    End Sub
    '**********************************************************HMI刷新扫描
    Global Sub Sub_HmiScan()
    End Sub
    '**********************************************************变量定义初始化
    Global Sub Sub_VarDefine()
       Global Const Gc_AxisX = 4
       Global Const Gc_AxisY = 5
       Global Const Gc_Out_Laser = 8         '出光OUT口
       Global Const Gc_Out_LaserEnable = 47  '激光使能
       Global Const Gc_Out_Red = 48          '红灯
       Global Const Gc_Aout_Laser = 3        '激光能量模拟量输出口 
       Global  Gv_StartDelay            '开光延时us
       Gv_StartDelay = 1000  
       Global  Gv_LastDelay             '关光延时us
       Gv_LastDelay = 1000  
       Global  Gv_CorDelay              '拐角延时us
       Gv_CorDelay = 1000  
       Global  Gv_JumpDelay             '跳转延时us
       Gv_JumpDelay = 1000  
       Global  Gv_LaserPower            '激光功率0-2^8
       Gv_LaserPower = 128  
       Global  Gv_EmpSp                 '空移速度
       Gv_EmpSp = 10000  
       Global  Gv_WorkSp                '加工速度
       Gv_WorkSp = 5000  
       Global  Gv_WorkMode              '加工模式 0-红光 1-激光
       Gv_WorkMode = 0  
       Global  Gv_MarkSize              '标刻大小
       Gv_MarkSize = 80  
    End Sub
    '**********************************************************轴参数初始化
    Global Sub Sub_AxisInit()
       base(Gc_AxisX,Gc_AxisY)
       Atype = 21,21        '轴类型  振镜轴
       Units = 500,500      '脉冲当量
       speed = 100,100      '运动速度
       Accel = 10000,10000  '加速度
       AXIS_ZSET = 3,3      '开启精准输出
    End Sub
    '**********************************************************切换红光
    Global Sub Sub_Btn_Red()
       if op(Gc_Out_Red) THEN
          op(Gc_Out_Red,OFF) 
       ELSE
          op(Gc_Out_Red,ON)   
       endif
    End Sub
    '**********************************************************切换出光
    Global Sub Sub_Btn_Laser()
       if op(Gc_Out_Laser) THEN
          Aout(Gc_Aout_Laser) = 0        
          op(Gc_Out_Laser,OFF) 
          DELAY(100)
          op(Gc_Out_LaserEnable,OFF)
       ELSE    
          Aout(Gc_Aout_Laser) = Gv_LaserPower    '设置能量
          op(Gc_Out_LaserEnable,ON)              '打开激光使能
          DELAY(100)  
          op(Gc_Out_Laser,ON)                    '出光
       endif
    End Sub
    '**********************************************************fiber转换板处理
    GLOBAL SUB Sub_SetExioFiber()
       '修改扩展接口方向为输出
       EXIO_DIR(0, $FFFFF)  
    END SUB
    '**********************************************************空移到起点
    Global Sub Sub_MoveEmp(StartX,StartY)
       base(Gc_AxisX,Gc_AxisY)
       FORCE_SPEED = Gv_EmpSp
       MOVESCANABS(StartX,StartY)            '空移到起点
       MOVE_DELAY(Gv_JumpDelay/1000)         '跳转延时
       if Gv_WorkMode =1 then
          MOVE_OP(Gc_Out_Laser, ON)
       ELSE
          MOVE_OP(Gc_Out_Red, ON)  
       endif
       MOVE_DELAY(Gv_StartDelay/1000)          '开光延时
    End Sub
    '**********************************************************直线运动
    'XPos 运行结束点X坐标
    'YPos  运行结束点Y坐标
    'If_End  是否最后的结束点,是启动关光参数
    Global Sub Sub_MoveLine(XPos,YPos,If_End)
       FORCE_SPEED = Gv_WorkSp
       MOVESCANABS(XPos,YPos)              '运动到加工点
       if(If_End) then
          MOVE_DELAY(Gv_LastDelay/1000)    '关光延时
          if Gv_WorkMode =1 then
             MOVE_OP(Gc_Out_Laser, OFF)
          ELSE
             MOVE_OP(Gc_Out_Red, OFF)  
          endif
       endif
    End Sub
    '**********************************************************画矩形运动
    'XPos 运行结束点X坐标
    'YPos  运行结束点Y坐标
    'If_End  是否最后的结束点,是启动关光参数
    Global Sub Sub_MoveRect(StartX, StartY, EndX,EndY,If_End)
       FORCE_SPEED = Gv_WorkSp
       MOVESCANABS(StartX,EndY)
       MOVE_DELAY(Gv_CorDelay/1000)
       MOVESCANABS(EndX, EndY)
       MOVE_DELAY(Gv_CorDelay/1000)
       MOVESCANABS(EndX, StartX)
       MOVE_DELAY(Gv_CorDelay/1000)
       MOVESCANABS(StartX, StartY)
       if(If_End) then
          MOVE_DELAY(Gv_LastDelay/1000)          '关光延时
          if Gv_WorkMode =1 then
             MOVE_OP(Gc_Out_Laser, OFF)
          ELSE
             MOVE_OP(Gc_Out_Red, OFF)  
          endif
       endif
    End Sub
    '**********************************************************
    Global Sub Sub_Move9Point()
       Local dScanSize
       dScanSize = Gv_MarkSize
       MOVE_Aout(Gc_Aout_Laser,Gv_LaserPower)      '设置能量
       MOVE_op(Gc_Out_LaserEnable,ON)              '打开激光使能
       MOVE_DELAY(10)  
       
       TRIGGER
         
       '绘制横线
       Sub_MoveEmp((-dScanSize/2 - dScanSize/10), 0)
       Sub_MoveLine((dScanSize/2 + dScanSize/10), 0,TRUE)
       '绘制竖线
       Sub_MoveEmp(0, (-dScanSize/2 - dScanSize/10))
       Sub_MoveLine(0,(dScanSize/2 + dScanSize/10),TRUE)
       '矩形
       Sub_MoveEmp(-dScanSize/2, -dScanSize/2)
       Sub_MoveRect(-dScanSize/2, -dScanSize/2, dScanSize/2, dScanSize/2,TRUE)
       '绘制X
       Sub_MoveEmp((dScanSize/2-0.06*dScanSize), -0.02*dScanSize)
       Sub_MoveLine((dScanSize/2-0.02*dScanSize), -0.08*dScanSize,TRUE)
       Sub_MoveEmp((dScanSize/2-0.02*dScanSize), -0.02*dScanSize)
       Sub_MoveLine((dScanSize/2-0.06*dScanSize), -0.08*dScanSize,TRUE)
       '绘制Y
       Sub_MoveEmp(0.02*dScanSize, (dScanSize/2-0.02*dScanSize))
       Sub_MoveLine(0.04*dScanSize, (dScanSize/2-0.05*dScanSize),TRUE)
       Sub_MoveEmp(0.06*dScanSize, (dScanSize/2-0.02*dScanSize))
       Sub_MoveLine(0.04*dScanSize, (dScanSize/2-0.05*dScanSize),FALSE)
       Sub_MoveLine(0.04*dScanSize, (dScanSize/2-0.08*dScanSize),TRUE)
       '回原点
       FORCE_SPEED = Gv_EmpSp
       MOVESCANABS(0,0)                  '空移到原点
       MOVE_Aout(Gc_Aout_Laser,0)        '关闭能量
       MOVE_op(Gc_Out_LaserEnable,OFF)   '关闭激光使能
    End Sub
    '**********************************************************
    Global Sub Sub_Bnt_TaskRun()            '九点标定按钮
       STOPTASK 1
       RUNTASK 1,Sub_Move9Point
    End Sub
    '**********************************************************
    Global Sub Sub_Btn_TaskStop()            '停止按钮
       STOPTASK 1
       base(Gc_AxisX,Gc_AxisY)
       Cancel(2)
    End Sub
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170

    (2)HMI界面如下

    通过HMI界面可设置激光加工的参数,选择红光模式或者激光模式加工,并且能调整振镜轴的速度,标刻幅面的大小,标刻的轨迹如界面右侧所示。

    操作流程:基础参数设置-出光模式选择-点击”九点标定“按钮开始打标,运动时点击”停止 “按钮停止运动并关闭出光。

    在这里插入图片描述

    (3)运动效果

    通过示波器可采样振镜轴的运动波形,采样振镜轴4和轴5的位置,激光输出口OP(8)的状态,若为红光模式,采样OP(48)。
    在这里插入图片描述

    按上图的运动参数,XY模式下的两个振镜轴的插补轨迹如下,轨迹包含打标和空走两部分,打标轨迹为三部分,十字线+方框+XY字符。

    在这里插入图片描述

    XYZ模式下波形图如下,加入激光输出OP(8)的状态为Z轴参数,上半部分图形为打标轨迹,下半部分的图形为空走轨迹。

    在这里插入图片描述

    (4)视频演示

    ZMC408SCAN振镜控制光纤激光器加工

    本次,正运动技术开放式激光振镜运动控制器(四):ZMC408SCAN振镜控制光纤激光器加工,就分享到这里。

    本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

  • 相关阅读:
    Python数据分析入门与实践(学习路线,视频教程,源码资料)
    对登录过程进行Fiddler抓包实现jmeter登录
    c4d和blender哪个简单?哪个好用?
    【前端指南】session和token
    sora生成高质量视频的原理
    if _name_ == “__main__“:NameError: name ‘_name_‘ is not defined
    07-类文件结构
    NumPy数据分析基础:NumPy特性以及Python内置数据结构对比详解
    Tomcat(一) 系统架构
    ElasticSearch--解决集群健康状态是Red、Yellow的问题
  • 原文地址:https://blog.csdn.net/weixin_57350300/article/details/126849836