在ACM中添加用户自定义的属性
本文将介绍针对Gleason的滚齿机和磨齿机,如何在ACM操作列表中添加自定义的属性。
面临的问题
ACM在新一代的软件中采用全自动的学习和优化方式,不修改任何NC代码,不手动添加启停指令。它根据程序名称自动创建不同的项目数据库,再根据刀具名称和主轴转速来命名每个工序。这样既能实现免人工修改NC代码,又能够自动区分不同的工序,使每条程序的每个工序的优化数据都是独一无二的,不会产生零件、工序、刀具数据匹配的混淆。
但是,对于Gleason的滚齿机和铣齿机而言,它的NC程序是用户界面自动生成的,它的程序名是恒定不变的。同时,它没有刀库,需要人工更换不同的刀具,在SINUMERIK刀具列表中没有对应的刀具,甚至刀具列表页面都不存在。
在这种情况下,ACM无法通过程序名称、刀具名称来区分不同零件的不同工序。例如,无论加工什么产品,程序名都是GP_DIALOG_840D,刀具名都是MILL,那么所有零件的数据都会学习到同一个操作号当中,这就产生了【操作】数据与零件、刀具无法自动匹配的问题。

之前的解决方案
(1)为每个零件都分配独一无二的转速
以滚齿为例,通常分粗加工和精加工两个工序,这两个工序的主轴转速通常是不同的。为了让学习到的数据自动匹配零件和工序,我们给每个零件的每个工序都分配一个独一无二的转速,就像这样:
A零件包含两个操作,<MILL,129rpm>,<MILL,106rpm>,B零件包含两个操作,<MILL,128rpm>,<MILL,105rpm>,
……
这样虽然可以做到每个操作号都是独一无二的,不会混淆,但极其麻烦,也存在误操作风险,并且强行修改转速对工艺而言也是不合理的。
(2)每次换型之前都重新学习
这个方案可以保证不会用到错误的优化数据,但反复学习的次数多,软件操作量大,机床操作者是不会满意这个方案的。
新方案的设想
我们回到Gleason的人机对话编程逻辑,可以看到它是支持设置零件名称的,同时在生成的NC代码中也包含这些信息。如果我们可以使用这个零件名称来代替NC程序名称,那么每个零件都可以完美的区分开来,学习到的操作数据也将是独一无二的,不会产生任何混淆。

如何在ACM中添加自定义的属性
这个齿轮的名称是可以做为一个自定义属性添加到操作列表中的。操作步骤如下:
(1)添加必要的子程序
打开软件安装包中的service routines文件夹,把里边的所有子程序文件都复制粘贴到机床的“子程序”文件夹中。

(2)申明自定义变量ACM_ACTION
这些子程序当中会用到新变量ACM_ACTION,我们可以在MGUD文件中申明它,以免系统不认识这个变量。如下图所示:

(3)在NC程序中调用ACM_SET_ATTR子程序
Gleason的NC程序结构为一个主程序呼叫很多个子程序,这些子程序是机床编程界面自动生成的,机床会变化,所以ACM_SET_ATTR子程序的呼叫不能放在任何一个NC子程序中。但主程序是固定的,所以我们可以按下图所示插入ACM_SET_ATTR子程序的呼叫指令:

请注意,我们把ACM_SET_ATTR放在了EXTERN ReadDbWord(INT,INT, var INT)下面,即系统读取了外部数据(零件名称、工序名称、刀具名称等数据)后,再启动ACM的自定义属性添加动作。
(4)配置omative_install.ini文件
这里需要解开一个ATTR_1变量,作为操作列表中新的自定义变量名称。而ATTR_1赋值的an_strGear,等于Gleason初始化数据子程序GEAR_SET.SPF中零件名称对应的变量,见下图。
同时在[USER_COMM]区域中,把所有的USER变量都解开,见下图。

(5)使用自定义属性
在Gleason编程界面中,我们需要输入正确的零件编号,例如W510110100R1

正常加工零件,可以看到在ACM操作列表中多了一个AN_STRGEAR的自定义属性,并在其中显示了不同的零件名称。我们可以用这个零件名称来区分不同的零件,使每一条操作数据精准的自动匹配到正确的零件中。
