杜洪勋
(同济大学 中德学院,上海 200092)
刀具管理模块在工程数据库中的设计与实现
杜洪勋
(同济大学 中德学院,上海 200092)
以立铣刀为例,从数据建模、数据依赖性分析以及约束条件的实现、用户界面编制等方面论述了刀具管理模块在工程数据库中的具体设计与实现方法。分析问题的思路以及采用的方法对于工程数据库的设计与实现具有参考意义。
工程数据库;刀具管理;数据依赖性;约束条件
工程数据库是一种特殊类型的数据库,其主要功能是对工程实际中大量、无序的工程数据进行统一存储与管理。凭借现有成熟的数据库技术可以建立功能十分丰富的工程数据库系统[1]。本文论述的工程数据库主要指面向多轴铣削加工的数据库管理系统,其管理的主要对象包括刀具、铣削工艺以及工件与材料等。其中,刀具管理模块是该系统的核心组成部分之一,其性能直接影响工程数据库系统的质量[2]。本文将以常见的立铣刀为例,从刀具的建模、数据依赖性分析以及软件实现等几个层面,具体论述刀具管理模块在工程数据库系统中的设计与实现。
建立刀具模块的首要任务就是对铣刀进行数据建模。这一过程的核心问题是挑选合适的参数来代表铣刀。参照刀具供应商提供的参数列表以及铣刀在选用时所涉及到的重要参数,本文抽取如下信息对铣刀进行建模。
a.几何信息:几何信息是代表铣刀的最基本的信息,这些信息包括刀具的基本尺寸、几何角度等参数。比较典型的几何信息来源于刀具供应商所提供的参数。图1展示的是一种常见的立铣刀(LMT Fette刀具技术公司生产),其中d1,d2,l1,l2,l3,z等参数概括了铣刀(刀具本体)的基本几何信息,所以命名为“刀具宏观几何信息”。而诸如前角、后角等参数描述了跟切削刃有关的几何特征,相比于“刀具宏观几何信息”而言,它们在数值上较小,因此被称为“刀具微观几何信息”。
b.刀柄信息:由于本文主要研究应用于铣削加工的工程数据库,因此跟刀柄有关的一些几何信息如莫氏锥度等不在考虑范围之内,只选取最基本的长度与宽度等基本信息。
图1 DHC PREMIUM系列双螺旋角圆柱立铣刀
c.附加信息:跟刀具有关的附加信息有刀具编号、固定类型、旋转方向、装配形式以及磨损形式等。
至此,铣刀的实体关系模型已基本建立,刀具模块的实体关系模型如图2所示。但是,从管理复杂的铣刀工程数据这一角度来考虑,仅仅有实体以及相关属性是不够的,还需要引入主键用来唯一标识一条工程数据。基于这些考虑,本文引入刀具编号这一属性来充当刀具这一元组的主键。值得注意的是,这里的“刀具编号”与机床中刀具的编号不是一个概念,该编号的主要作用是区分不同的刀具。
在实际加工开始之前,刀具及其附件都完成了组装,并且已经装入刀库进行统一编码。在加工过程中这一装配体也是作为一个整体投入使用,加工完成后又由机械手等换刀装置放入刀库备用。由此可以看出,在整个加工前后,刀具及其附件都作为一个整体使用,因而一把刀具只对应一根刀柄(刀杆),相应地刀具这一实体与刀杆的关系也就变成了1∶1。同理可知,一把刀具所对应的宏观、微观几何参数也是唯一的。所以刀具这一实体与宏观、微观几何参数的关系都是1∶1。
在以上工作完成后,运用数据库技术的相关知识,可以将图2所示的实体关系模型转化为相应的SQL语句,依托数据库开发软件MySQL,可以利用这些SQL语句将实体关系模型转化为相应的数据表。与模型相关的各种参数以及图片、CAD模型信息就存储在数据表内。各实体之间按照1∶1,1∶n,m∶n的对应关系在各个数据表内设置相应的主键与外键,从而在数据库层面实现这些关联[3]。
图2 刀具模块的实体关系模型
现实世界中的事物之间存在着普遍的联系,这种联系反映在数据库中就表现为数据之间的依赖性,并且这种依赖性普遍存在[4]。对于刀具而言,这种依赖性主要表现在各几何参数之间的相互联系、相互制约的关系。立铣刀常用于加工槽与直线轮廓、型腔、型芯、曲面外形/轮廓,其结构及相关参数如图3所示。这些重要参数分别是:刀具直径Do、螺旋股数Nf、前角a、螺旋角c、后角b、倒角r1、公称长度GL、刀具长度TL、螺旋长度FL以及中心直径Dc。
按照刀具几何学中的相关规定[5],前角a、后角b以及楔角β之间存在以下数值关系:
(1)
图3 立铣刀结构示意图
由于楔角β不等于0°,因而前角、后角必须满足下面的数学关系:
(2)
考虑到刀具强度以及铣削加工的实际情况,立铣刀的前角、后角以及螺旋角还需满足如下关系:
(3)
(4)
(5)
由于刀具几何结构本身存在的特点,刀具的直径以及长度参数还需满足以下关系:
(6)
(7)
(8)
对于立铣刀而言,每个切削刃都对应一股螺旋,所以螺旋股数与刀具齿数相等。而刀具齿数是按照被加工平面的面积以及机床的功率来选择的。在粗铣过程中最好使用低齿数的铣刀,而精铣过程中最好采用高齿数的铣刀。通用的刀具齿数在1~5之间,多于5齿的刀具也被广泛使用[6]。因此刀具齿数不应被限定在某一确定数值范围内,而只需满足最基本的条件即可:
(9)
式中:N为整数。
本文用户界面采用具有C++代码编译、实现功能的软件Qt实现,并且利用C++代码实现约束条件。接下来要解决的是代码如何发挥作用的问题。按照前面的分析可知,当用户通过界面进行一项或几项操作时,该代码就应该被激活,并且对所有操作进行判断与过滤,从而对数据库进行操作。这种运作机制十分类似于Qt中自带的信号-槽(Signal-Slot)机制。所谓的信号(Signal)指的是一种操作,如双击鼠标、输入字符等。而槽(Slot)指的是一种或几种特定的功能,如打开对话框、关闭页面等。信号通过界面的元素(如按钮、文本框等)把槽激活,从而进行一系列动作。这种机制完全满足约束条件的实现要求[7]。根据式(2)~(9)的数学关系式可以总结出针对立铣刀的约束条件。这些条件在转化成代码以前需要确定程序流程图(如图4所示),以确保代码在逻辑上的正确性。
在实现了约束条件以后还需要输入一些具有代表性的测试数据(即不符合约束条件的数据)以检测该约束的正确性。测试数据见表1。在输入了这些测试数据后,系统会自动弹出提示信息,如图5所示(由于提示信息内容类似,本文仅展示其中的两种提示信息)。由图可见,这些提示信息与期望的反馈完全一致,从而验证了约束条件实现代码的正确性。
图4 立铣刀约束条件程序流程图
表1测试数据以及期望反馈的信息