NK260二次开发常用修改说明(二)
《NK260二次开发常用修改说明》系列文档共有三篇,主要针对版本号为NK260_XXX_WOOD的维宏木工产品线软件,指导在NK260二次开发过程中常见的修改和功能定制。
本文将指导您完成以下NK260二次开发任务:
- 进行状态检测
- 配置一键对刀页面
- 配置阀门控制页面
- 配置排钻页面
- 自定义圆盘换刀
进行状态检测
使用状态寄存器
状态寄存器
目前开放3个状态,M802指令对应M寄存器,以便在luui-main中使用。
换刀状态
- M802P=(16*65536+1)
使用换刀行程。 - M802P=(16*65536+0)
使用机床行程。 - luui.get_m_reg("m_toolchange")
是否是换刀行程。
状态1
- M802P=(17*65536+1)
进入状态1。 - M802P=(17*65536+0)
退出状态1。 - luui.get_m_reg("m_m802state1")
是否在状态1过程中。
状态2
- M802P=(18*65536+1)
进入状态2。 - M802P=(18*65536+0)
退出状态2。 - luui.get_m_reg("m_m802state2")
是否在状态2过程中。
说明:
- public中可以使用M802进入或者退出状态
- luui-main中可以通过luui.get_m_reg()获取状态
- 在运行状态过程中异常终止时,需要复位状态。
使用示例
以换刀状态为例,各文件修改说明与示例。
public文件
'圆盘换刀子程序
o2067
....
M802 P=(8*65536+1) '禁止暂停抬刀
M802 P=(16*65536+1) '使用换刀行程,进入换刀状态
M901 H=#PLC.out_Dustcover P0 '防尘罩上抬并检测上抬到位信号
G65 P2063 L3
M5
G65 P2069 L3 '检测主轴零速信号
IF(#USERPARAM2=0)G65 P20671 '圆盘刀库固定
IF(#USERPARAM2=1 && #USERPARAM3=1)G65 P20672 '圆盘刀库不固定
M802 P=(16*65536+0) '使用机床行程,退出换刀状态
M802 P=(8*65536+0) '恢复暂停抬刀
M801 "|M|换刀完毕"
....
M17
luui-main文件
--K1功能键
function nc_k1()
--换刀过程中禁止吸尘罩操作
if luui.get_m_reg("m_toolchange") then
luui.prompt_message
(s_szChange_Tool[luui.get_language_version()]);
return
end
if luui.get_outport("out_Dustcover") then
luui.set_outport("out_Dustcover", false)
else
luui.set_outport("out_Dustcover", true)
end
end
常见问题
**问题:**换刀过程中异常停止。
**解决方法:**luplc文件中复位换刀状态寄存器
network
true -> MOV(d_state, `get_state()`)
(d_state ~= RUN_STATE) -> RST(M[LuKernel.m_ignoreLimit])
(`is_kernel_idle()` == true)->RST(M[LuKernel.m_toolchange])
End
使用#变量
使用须知
需确保某个#负变量未被使用过。
进入状态时给该#负变量赋值为1;离开状态时赋值0;异常结束状态时,自动赋值0。
在检测过程中通过#负变量值判断状态。
使用示例
以换刀状态为例,请先确保#-51未被使用过。各文件修改说明和示例如下。
public文件
'圆盘换刀子程序
o2067
....
M802 P=(8*65536+1) '禁止暂停抬刀
G906
#-51=1 '进入换刀过程
M901 H=#PLC.out_Dustcover P0 '防尘罩上抬并检测上抬到位信号
G65 P2063 L3
M5
G65 P2069 L3 '检测主轴零速信号
IF(#USERPARAM2=0)G65 P20671 '圆盘刀库固定
IF(#USERPARAM2=1 && #USERPARAM3=1)G65 P20672 '圆盘刀库不固定
G906
#-51=0 '离开换刀过程
M802 P=(8*65536+0) '恢复暂停抬刀
M801 "|M|换刀完毕"
....
M17
luui-main文件
--定时检查更新运行标志 复位
function nc_run_state()
if luui.get_sys_state() ~= IDLE_STATE then
return
end
if luui.get_rparam(-51) == 1 then
luui.set_rparam(-51,0)
end
end
function nc_100ms_timer()
......
nc_run_state()
end
--K1功能键
function nc_k1()
--换刀过程中禁止吸尘罩操作
if luui.get_rparam(-51) == 1 then
luui.prompt_message
(s_szChange_Tool[luui.get_language_version()]);
return
end
if luui.get_outport("out_Dustcover") then
luui.set_outport("out_Dustcover", false)
else
luui.set_outport("out_Dustcover", true)
end
end
配置一键对刀页面
页面说明
一键对刀页面刀具数量随刀库容量而改变。
一键对刀时先进行换刀T指令(O206子程序)操作,再执行固定对刀(O19子程序)操作。
对于多气缸、排钻软件,固定对刀子程序中固定对刀仪XY位置还需要加上当前刀具XY偏置#CTOFFSETx。
编程示例
'先快速到固定对刀块上方#-18位置,然后以粗对刀速度进行对刀
G905 G903 G53 G90 G00 X=#-9+#CTOFFSET0 Y=#-10+#CTOFFSET1 Z=#-18
配置阀门控制页面
页面说明
阀门控制页面最多可以配置20个圆形按钮和24个方形按钮,如图所示。
- 圆形按钮序号从1到20,用作排钻端口。
- 方形按钮序号从21到44,用于其他端口。
**注意:**考虑到目前圆形按钮主要用作9排钻,因此圆形按钮10~20(未使用)是任意放置的。
修改说明
配置阀门页面需修改文件包括:
- Vavle.xaml:默认阀门端口配置界面,可以调整按钮位置。
- luui-cfg.lua:阀门端口配置文件,配置端口对应的按钮。
- luui-main.lua:阀门界面的显示,阀门端口的操作。
Vavle.xaml修改示例
<Button x:Name="at_bore8" FontSize="18" FontFamily="SimSun" Height="40"
Canvas.Left="238" Canvas.Top="275" Width="40" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
Style="{DynamicResource EllipseButton}" Background="#FF808081" Content="8"/>
说明:
- 红色部分x:Name="at_bore8"和Content="8"的数字8是对应关系。
- 按钮位置通过MicrosoftExpressionBlend4工具调整。
luui-cfg.lua修改示例
--阀门页面控制端口
--排钻序号1~20
--其他端口序号21~44
--序号用来控制上下左右移动时的位置
at_icon1 = "T21:T21:out_bore1:(0,0,22,2)"
……
说明:
- at_icon序号和按钮序号为对应关系。
- at_icon序号="中文端口名称:English名称:端口usage:(左,上,右,下)"。
- 端口名称在阀门页面显示,括号内的序号分别表示左边、上边、右边、下边的按钮序号,用于上下左右移动按钮焦点的位置。
luui-main.lua修改示例
--显示阀门页面
luui.display(VALVE_PAGE, true)
--自定义阀门端口功能
function ControlPort(usage_, flag_)
……
end
--阀门端口列表
drill =
{
["out_bore1"] = {21, ControlPort},
……
}
说明:
ControlPort为操作端口。每一个端口都可以有不同的操作,可按需重新定义。
drill端口列表格式:[usage]={usage对应的刀具号,端口操作},例如:
["out_bore1"] = {21, ControlPort},
端口usage是"out_bore1";{21,ControlPort},排钻刀具号为21,用于在界面显示;ControlPort是"out_bore1"对应的端口操作。
可配置下方F3~F7按钮。
CMD_FUN_BTN3 = 2
CMD_FUN_BTN4 = 3
CMD_FUN_BTN5 = 4
CMD_FUN_BTN6 = 5
CMD_FUN_BTN7 = 6
--阀门页面F3~F7端口控制 修改同时需要修改阀门页面Vavle.xaml按钮描述
function ControlValveBtn(Btn)
end
配置排钻页面
页面说明
以9排钻为例,排钻刀具号从21开始,界面效果如图所示。
需要修改的文件包括:
Vavle.xaml:用来调整按钮位置。
luui-cfg.lua:用来配置端口和按钮的一一对应关系,以及面板按键上下左右移动时按钮焦点的位置。
luui-main.lua:主要配置按键F1到F7端口行为。
public:子程序O206中,用#TOOLx表示当前刀具号。
Vavle.xaml修改示例
通过Blend工具可以根据需求将任意按钮(包括方形按钮)放置到任意位置。
将序号1~9的圆形按钮按L形状放置,如图所示。
方形按钮位置放置按如图所示。
luui-cfg.lua修改示例
--阀门页面控制端口
--排钻序号1~20
--其他端口序号21~44
--序号用来控制上下左右移动时的位置
--格式:at_icon序号="中文端口名称:english:端口usage:(左边端口的序号,上,右,下)"
--排钻
at_icon1 = "T21:T21:out_bore1:(0,0,22,2)"
at_icon2 = "T22:T22:out_bore2:(0,1,24,3)"
at_icon3 = "T23:T23:out_bore3:(0,2,25,4)"
at_icon4 = "T24:T24:out_bore4:(0,3,27,5)"
at_icon5 = "T25:T25:out_bore5:(0,4,6,29)"
at_icon6 = "T26:T26:out_bore6:(5,4,7,29)"
at_icon7 = "T27:T27:out_bore7:(6,4,8,29)"
at_icon8 = "T28:T28:out_bore8:(7,4,9,29)"
at_icon9 = "T29:T29:out_bore9:(8,4,28,29)"
--其他端口
at_icon21 = "排钻1:Bore1:out_bore1:(1,0,33,22)"
at_icon22 = "排钻2:Bore2:out_bore2:(1,21,34,23)"
at_icon23 = "排钻3:Bore3:out_bore3:(1,22,35,24)"
at_icon24 = "排钻4:Bore4:out_bore4:(2,23,36,25)"
at_icon25 = "排钻5:Bore5:out_bore5:(3,24,37,26)"
at_icon26 = "排钻6:Bore6:out_bore6:(3,25,39,27)"
at_icon27 = "排钻7:Bore7:out_bore7:(4,26,39,28)"
at_icon28 = "排钻8:Bore8:out_bore8:(9,27,40,29)"
at_icon29 = "排钻9:Bore9:out_bore9:(9,28,41,0)"
说明:
没有配置的按钮自动隐藏。
at_icon序号与按钮序号一一对应。
--阀门页面控制端口
at_icon8 = "T28:T28:out_bore8:(7,4,9,29)"
其中:
8表示按钮序号。
第一个T28表示中文显示,第二T28表示英文显示。
out_bore8是端口usage。
(7,4,9,29)分别代表向左、向上、向右、向下移动时焦点所在按钮.
luui-main.lua修改示例
--自定义阀门端口功能
function ControlPort(usage_, flag_)
if not luui.is_kernel_idle() then
luui.prompt_message
(s_szILLEGAL_OPER[luui.get_language_version()])
return
end
luui.set_outport(usage_, flag_)
if flag_ then
luui.set_tool_no(drill[usage_][1])
end
end
drill =
{
["out_bore1"] = {21, ControlPort},
["out_bore2"] = {22, ControlPort},
["out_bore3"] = {23, ControlPort},
["out_bore4"] = {24, ControlPort},
["out_bore5"] = {25, ControlPort},
["out_bore6"] = {26, ControlPort},
["out_bore7"] = {27, ControlPort},
["out_bore8"] = {28, ControlPort},
["out_bore9"] = {29, ControlPort},
}
---------------------------------------------------------------------------------------
--阀门页面
--阀门页面调用接口 端口打开 关闭
function ControlValvePort(usage_, flag_)
drill[usage_][2](usage_, flag_)
end
---------------------------------------
CMD_FUN_BTN3 = 2
CMD_FUN_BTN4 = 3
CMD_FUN_BTN5 = 4
CMD_FUN_BTN6 = 5
CMD_FUN_BTN7 = 6
--阀门页面F3~F7端口控制 修改同时需要修改阀门页面Vavle.xaml按钮描述
function ControlValveBtn(Btn)
end
public文件修改说明
刀路中写:T11 T12 T3,则#TOOL11=11,#TOOLS12=12,#TOOLS13=13,其他刀具号为0。特殊情况T0,#TOOLS0=-1。
'打下相应的排钻
M901 H=#PLC.out_bore1 P=#TOOLS11 Q0
M901 H=#PLC.out_bore2 P=#TOOLS12 Q0
M901 H=#PLC.out_bore3 P=#TOOLS13 Q0
M901 H=#PLC.out_bore4 P=#TOOLS14 Q0
M901 H=#PLC.out_bore5 P=#TOOLS15 Q0
M901 H=#PLC.out_bore6 P=#TOOLS16 Q0
M901 H=#PLC.out_bore7 P=#TOOLS17 Q0
M901 H=#PLC.out_bore8 P=#TOOLS18 Q0
M901 H=#PLC.out_bore9 P=#TOOLS19 Q0
说明:
- M901之后的Q0表示执行M901不需要同步,所有排钻端口打开都是并行操作.
- 若不加Q0则表示需要同步。
自定义圆盘换刀
public修改说明
圆盘换刀需要处理public换刀子程序,具体流程按实际需求。
刀盘正转、刀盘反转参照通用圆盘换刀软件。
主界面可能还需要增加刀盘刀具号和主轴刀具号显示。
luui-main.lua修改示例
按照如下修改luui-main.lua文件。
--显示刀盘刀具号
luui.display(PANNO, true)
--显示主轴刀盘刀具号
luui.display(SPINTOOLNO, true)