'**********************************************************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