二次开发应用案例 | NK260增加自动上下料功能
本文档以增加自动上下料功能为例,介绍如何使用维宏 NK260 进行功能的二次开发。供加工现场技术人员使用。
- 产品及型号:维宏 NK260 集成数控系统
- 目标:定制自动上下料功能
需求分析
进行功能定制前,建议先详细分析需求,可以从以下方面展开:
- 机床动作
- 端口定义
- 参数
以定制上下料功能为例,建议先整理绘制上下料完整动作流程图,并根据流程图定义所需输入输出端口及参数。
上下料流程图
详细的上下料动作流程图如下,示例仅供参考。
输入端口
基于上述上下料动作流程图分析,所需的输入端口见下表。
端口名称 | 含义 |
---|---|
吸板检测 | 吸板开始信号输入 |
定位桩气缸到位检测 | 定位桩气缸到位信号输入 |
后定位气缸到位检测 | 后定位气缸到位信号输入 |
右定位气缸到位检测 | 右定位气缸到位信号输入 |
推料检测 | 推料开始信号输入 |
吸盘气缸上到位信号 | 吸盘气缸上到位信号输入 |
吸盘气缸下到位信号 | 吸盘气缸下到位信号输入 |
推料气缸上到位信号 | 推料气缸上到位信号输入 |
推料气缸下到位信号 | 推料气缸下到位信号输入 |
后推料推出到位信号 | 后推料推出到位信号输入 |
后推料收回到位信号 | 后推料收回到位信号输入 |
侧推料推出到位信号 | 侧推料推出到位信号输入 |
侧推料收回到位信号 | 侧推料收回到位信号输入 |
上料台有料信号 | 上料台有料信号输入 |
推料气缸下位信号 | 推料气缸下位信号输入 |
输出端口
基于上述上下料动作流程,所需的输出端口见下表。
端口名称 | 含义 |
---|---|
真空吸附 | 真空吸附开闭输出 |
真空破坏 | 真空破坏开闭输出 |
推料气缸 | 推料气缸开闭输出 |
前定位气缸 | 前定位气缸开闭输出 |
侧定位气缸 | 侧定位气缸开闭输出 |
侧推料气缸 | 侧推料气缸开闭输出 |
后推料气缸 | 后推料气缸开闭输出 |
吸盘气缸 | 吸盘气缸开闭输出 |
推料气缸 | 推料气缸开闭输出 |
台面真空电磁阀 | 台面真空电磁阀开闭输出 |
吸盘真空电磁阀 | 吸盘真空电磁阀开闭输出 |
参数
基于上述上下料动作流程,所需的参数见下表。
参数名称 | 含义 |
---|---|
上料起始点Y | 上料起始点Y轴坐标 |
下料起始点Y | 下料起始点Y轴坐标 |
上料结束点Y | 上料结束点Y轴坐标 |
下料结束点Y | 下料结束点Y轴坐标 |
上料速度 | 上料时的速度 |
下料速度 | 下料时的速度 |
真空吸附延时 | 真空吸附开启的时间 |
真空破坏延时 | 真空破坏开启的时间 |
定位气缸延时 | 定位气缸开启的时间 |
加工结束后是否自动上料 | 是:加工结束后自动上料,否:加工结束后不执行自动上料 |
加工结束后是否自动下料 | 是:加工结束后自动下料,否:加工结束后不执行自动下料 |
操作步骤
完成需求分析后,可以开始具体的二次开发操作。以 NK260 增加 自动上下料 功能为例,主要操作步骤如下:
屏蔽端口
由于 NK260 输入输出端口有限,自动上下料 需要的端口较多,需要屏蔽一些不常用端口功能,自定义新的端口功能。
屏蔽端口的方式有两种:
- 推荐:修改端口映射
- 直接屏蔽
注意:直接屏蔽可能会出现屏蔽不全,导致软件不能运行或者是操作过程中出现严重问题。若不明确端口使用位置,不推荐使用。
以 修改端口映射 方式屏蔽端口为例,操作如下:
用文本工具打开 Config\xaml 文件夹下的 PortConfig.xaml 文件。
找到可以屏蔽的不常用输入/输出端口,修改相应的 text 端口描述信息,并记录该端口的 tag。
修改示例:
输入端口: <INFO Director="INPORT" Tag="GIVEMUL1" Name="GX01(EXTRA)" Polarity="1" Display="0" Text="上料台有料信号"/> 输出端口: <INFO Director="OUTPORT" Tag="OUT1" Name="GY13(OUT1)" Polarity="0" Display="1" Text="推料气缸"/>
用文本工具打开 config\luplc 文件夹下的 port.lua 文件。
使用步骤2中已记录的 tag,修改端口映射。操作如下:
将 tag 改成一个新的 tag 值。
一般在原有 tag 后加上 1 即可。
将原来端口的 index 改为无效地址。
可改为不常用端子板任意端口的 index。通常改为第五块端子板的 index,即113-128之间的值。
在程序行下方新建一行,要求如下:
- tag 等于原有的 tag。
- usage 等于新端口的 usage。
- index 等于原有的 index。
修改实例:
输入端口: {tag = "GIVEMUL11", usage = "nc_zplim", description = "无效端口", index = 114}, {tag = "GIVEMUL1", usage = "in_feed", description = "上料气缸有料信号", index = 55}, 输出端口: {tag = "OUT11", usage = "nc_fa", description = "无效端口", index=120}, {tag = "OUT1", usage = "out_pushCy", description = "推料气缸", index=61},
提示:usage跟tag一一对应,一般会修改usage的内容与端口功能相近,方便理解。为了后期修改方便,可添加 description 信息。
保存 PortConfig.xaml 文件和 port.lua 文件。
端口存放
完成端口屏蔽后,将新端口放入对应的 PLC 寄存器,端口就可以使用了。
端口存放操作如下:
用文本工具打开 config\luplc 文件夹下的 luplc.luplc 文件。
将新输入端口的 usage 加入 module mainplc 下的 I 寄存器。
将新输出端口的 usage 加入 module mainplc 下的 Q 寄存器。
操作示例:将 usage = "in_feed" 加入输入端口,usage = "out_pushCy" 加入输出端口。
module mainplc I:nc_fa, nc_fb, nc_fc, nc_fd,in_feed Q:out_Cylinder1, out_Cylinder2,out_Spindle1, out_Spindle2,out_pushCy
保存 luplc.luplc 文件。
其它端口的存放操作与此类似。
自定义参数
NK260 安装文件中提供了一个用户自定义参数配置文件,用户可在该文件中添加最多 20 个自定义参数。自定义参数可以在 public.dat 和 luui-main.lua 配置文件中进行读取,其值只能通过参数列表修改。
以添加参数 上料速度 为例,操作如下:
用文本工具打开 Config\xaml 文件夹下的 Userparam.xaml 文件。
添加自定义参数,格式要求如下:
<PARAM> <ITEM name="USERPARAM1" type="2" value="500" unit="mm/min" multiple="1" text="上料速度"/> </PARAM>
保存 Userparam.xaml 文件。
添加参数命令中,各字段含义如下:
name : 参数名称。必须严格为USERPARAMn,最后的n为序号。
type : 参数类型。0:布尔型(是或否),1:整数, 2:浮点数。
unit : 单位。用于在参数类表中进行显示。
multiple : 显示放大倍数。参数列表显示时会将参数的值乘于放大倍数。
Text : 参数描述信息。
public子程序编程
在 public.dat 文件中添加自动上下料子程序,实现自动上下料动作。
为方便书写自动上下料子程序,可将一些检测程序也写成子程序,再通过 M 代码对其进行调用。
编写自动上下料子程序,操作如下:
用文本工具打开 public.dat 文件。
- 中文系统在 CHN\files 文件夹中打开。
- 英文系统在 ENG\files 文件夹中打开。
编写相关检测子程序。
提示: 自定义子程序时,不要使用已经定义过的子程序,避免和已有的子程序冲突。
以添加“吸盘气缸上到位检测”为例,子程序书写格式如下:
'吸盘气缸上到位检测 O3001 G906 H=#PLC.in_ChunkCylUp P1 L20000 IF(#SYNTIMEOUT<0) M801 "|W|未检测到吸盘气缸上到位!"; M30; M17
使用 G 代码或通过调用 M 代码,完成自动上下料子程序。
保存 public.dat 文件。
编程时注意事项:
- 在编写子程序时,一定不要忘记 M17 结束子程序。
- 使用 M 代码编写刀路时,M 代码的范围限制在1~999或大于2000,子程序号O与M的关系为:M+200 = O。
- 0~999 系统级子程序,仅供系统使用,用户只可修改参数或进行调用,不可使用这些程序号自行编写子程序。
- 1000~9999 用户子程序,用户可以自由编写,自由调用。
绑定K键
可选步骤。
若实际使用过程中,运行M指令的方式不够便捷,可以将运行M代码的指令与 NK260 操作面板上的 K 键绑定。
绑定 K 键,操作如下:
用文本工具打开 config\luui 文件夹下的 luui-main.lua 文件。
在需要绑定的 K 功能键程序块中,写入运行 M 代码的语句。
以绑定 K1 功能键为例。
原 K1 功能键程序块:
--K1功能键 function nc_k1() if led_table[led_table.LED_FUNC_K1] == '1' then set_led_state(led_table.LED_FUNC_K1, false) else set_led_state(led_table.LED_FUNC_K1, true) end return end
修改后的 K1 功能键程序块:
--K1功能键 function nc_k1() if luui.is_kernel_idle() then luui.run_gcode("M200") return end
保存 luui-main.lua 文件即完成了K键绑定。
成功完成K键绑定后,按下K键,若系统为空闲状态,将运行 M200 子程序。
至此,您已完成二次开发中增加自动上下料功能的所有操作步骤,可成功在 NK260 中添加自动上下料功能。直接使用 M200 或者 按面板上 K1 键即可控制机床自动上下料。