维宏LOGO
搜索结果

    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)
    

    相关文章

    NK260二次开发常用修改说明(一)

    NK260二次开发常用修改说明(三)

    本文内容
    回到顶端 Shanghai Weihong Electronic Technology Co., Ltd.