发明内容
本发明的目的在于提供一种快速高效的大功率厚板数控激光切割机的CAM***,以达到切割厚板的工艺要求。
本方案是通过如下技术措施来实现的:一种大功率厚板数控激光切割机CAM***,其特征是包括如下模块:零件库创建模块:零件库创建模块读取零件图的所有图素,从中筛选出与零件库创建有关的图素,进行分层处理,放入相应厚度的零件库中,以便排料套料模块读取;排料套料模块:排料套料模块读取零件库创建模块建立的零件库的零件,读取排料套料任务窗体中设置的数量、优先级、材料等内容,放入排料套料任务数组,根据排料套料的算法进行排料套料处理,并把排样结果以零件集合的形式回写到排样可视化图形数据库中,以便进行人工调整和零件优化模块读取;零件优化模块:零件优化模块从排样可视化图形数据库读取零件的排样图形放入零件数组,进行零件切割算法优化,并把优化结果放入优化数组,供切割处理模块读取;切割处理模块:切割处理模块从零件优化模块中获取优化数组的数据,进行切割算法处理、常规切割处理、共边切割处理,并把切割处理后的结果传递给NC程序创建模块;NC程序创建模块:NC程序创建模块根据切割处理模块输出的数据;转换为大功率厚板数控激光切割机可以识别、符合指定机床配置的G代码、M代码、产生大功率厚板数控激光切割程序,并把程序输出给程序执行对象-大功率厚板数控激光切割的数控***或模拟仿真模块。
本方案的具体特点还有,模拟仿真模块:模拟仿真模块对NC程序创建模块输出的程序进行仿真校验,以可视化的方式模拟整个程序执行的切割路径顺序及各个零件的嵌套关系图形;
所述零件库创建模块还包括:CAD图形读取子模块:CAD图形读取子模块读取零件图的所有图素,从中筛选出与零件库创建有关的图素:直线、弧、圆、矩形、多段线,进行分层处理,放入相应厚度的零件库中,以便排料套料模块读取;零件处理子模块:零件处理模块包括单零件和组合零件;对于单个零件分层处理内层放入LASERIN层,外轮廓放入LASEROUT层;组合零件是为了简化排料套料的算法采用的最小包络矩形设计方法,实际上就是将不同形状的零件图形组合成近似矩形,凸凹对件,三角形对件,从而将不同形状零件的排样问题转化为面积不同的矩形排样优化问题,该方法要求排样零件图形上所有的点都包含在矩形内,且图形的某些边与矩形接触;通过对实际的生产企业的调查发现,实际生产所需的厚板零件有很大一部分是矩形件。特别是船舶用的机箱机柜类产品的板料零件或其展开件95%以上都是矩形零件。我们所说的矩形零件事实上并不是绝对的矩形,只是由于这些零件的缺口缺角尺寸相对外形尺寸较小,把它们处理成矩形显然是合理的,另外我们也发现实际生产中很多形状的零件在经过一些组合后可以形成一个近似矩形零件;零件库:零件库是一个目录结构,按不同材质、不同厚度建立多个子目录以便存放各种材质和厚度的零件。
所述排料套料模块还包括:数据定义子模块:数据定义子模块定义排样数组、切割数组、优化数组、CAM层、模拟层以及公共变量,并把数组和公共变量传递给零件形成零件库模块、排料套料模块、零件优化模块、切割处理模块、NC程序创建模块各个功能模块,每个模块调用这里定义的数组和公共变量;工艺参数设置子模块:工艺参数设置子模块读取设置窗体的参数,存放到数据定义模块定义的公共变量中,这些设置包括大中小内外轮廓设置、优选类型选择、引入线的样式、引入线长度、引出线的样式、引出线长度、边框设置、微连接设置、穿孔类型,共边套料选择,并把这些设置传递给排料套料模块、零件优化模块、切割处理模块、NC程序创建模块各个功能模块;
板材库:板材库进行板材的整料和余料管理,根据排料任务数据库中的内容选取最合适的板材,板材参数有程序号、板材长度、板材宽度、X行程、Y行程,并把这些参数传递给排料套料模块、零件优化模块、切割处理模块、NC程序创建模块各个功能模块;
定制排料任务子模块:定制排料任务子模块根据用户选择的零件名称、数量、优先级,从零件库中调出图形,取出外面域和各个内面域的面积、最大值点、最小值点、凸点、凹点,形成定制排料任务单并放入任务数据库中,以供任务数据库进行管理和排料套料算法子模块调用;
任务数据库:任务数据库管理定制排料任务子模块形成的定制排料任务单为载体的界面,具有编辑修改、删除某一项、全部删除、完成的操作功能形成定制排料任务单中的数据并放回任务数据库中以排料数组的形式存放,供排料套料算法子模块调用;
排料套料算法子模块:排料套料算法子模块从定制排料任务子模块或任务数据库中形成的排料数组中获取数据,并把包括零件名称,数量,外形和各个内切区域的面积、最大值点、最小值点、凸点、凹点在内的排料数组数据放入零件数组,结合板材和工艺参数进行排料套料计算,把排样结果放入排样可视化图形数据库中,以供零件优化模块读取;排料套料算法采用容器法,第一步:把板材看作为一个大的外部容器,所排的零件按面积由大到小排序,先取面积最大的零件按近似矩形进行排样,从板材的左下角即(10,10)点开始,按列放置,当一列不能放下一个零件时在下一列排放零件,并把本列剩余空间增加一个外部容器,以便对较小的零件排样;如果本张板材存放不下,其余零件放入下一张板材,对于每个最大的零件,其内部孔的面积大于最小零件的面积的内部孔作为一个内部容器增加到容器组中,以便对较小的零件套料;第二步:面积最大的零件排样完成后,对已有的内部容器按面积由大到小排序,外部容器按***点的位置排序;第三步:取面积较大的零件,先放置在能容纳该零件的内部容器中按列放置,当一列不能放下一个零件时在下一列排放零件,当内部容器的剩余面积放不下最小零件时,该容器标记已满,剩余零件放入另外的内部容器中,对于该零件所有内部容器都排不下时,把该零件排在外部容器中,对于每个已排序的零件其内部孔的面积大于最小零件的面积的内部孔作为一个内部容器增加到容器组中,以便对较小的零件套料;第四步:面积较大的零件排样完成后,对已有的内部容器按面积由大到小排序,外部容器按***点的位置排序。再取另一个要排序的零件,重复第三步和第四步,直到把所有零件排完为止;
板材利用率优化模块:板材利用率优化模块是以提高材料的利用率作为目标函数,使材料利用率最大;材料利用率是零件的实际面积Fa与原材料面积F的百分比;即η=Fa/F。由于排样区域可以是板材,也可以是条料,也可以是余料,而且根据排样方式的不同,材料利用率的公式即目标优化函数可以进一步的转化;由于采用了多重套料的算法,材料利用率有可能大于1,这主要是用容器法在大的零件中内部闭合区域形成的废料中可以切割数个较小的零件;只有排料无套料的情况材料利用率总是小于1的。
所述零件优化模块还包括:排样图形读取模块:排样图形读取模块读取排样可视化图形数据库中的零件数据及有关的位置数据放入排料零件数组,并把排料零件数组传递给排样零件优化子模块;排样零件优化子模块:排样零件优化子模块对排料零件数组进行优化处理,首先求各个零件的嵌套层,利用质点属性,找出离板材零点(或切割头)最近距离的嵌套层为0层的零件,其他嵌套层为0层的零件按到前一零件最短距离为原则确定顺序,嵌套层为1层的零件分别放在各自0层的前面并按到前一零件最短距离为原则确定顺序,嵌套层为2层的零件分别放在各自1层的前面并按相同原则确定顺序,依次类推,形成一个冒泡式零件数组,零件在冒泡式零件数组中的位置决定了零件的切割顺序;
所述切割处理模块还包括:切割算法处理子模块:切割算法处理子模块接受排样零件优化子模块形成的冒泡式零件数组,根据工艺设置参数,有两种切割处理方式,其一为常规切割,其二为共边切割;常规切割方式是:取一个或多个相同嵌套层的零件,如果是单个零件,首先把该零件形成多个内部面域(内部闭合区间)和一个外部面域(外部闭合区间),该零件的所有内部面域按最近点排序,逆时针切割内部面域,再切割该零件的外轮面域;如果是多个零件,找出离前一个切割结束点最近的零件,先切割内部再切割外部,再找离本切割结束点最近的下一个相同嵌套层的零件,先切割内部再切割外部,依次类推,即可切割相同嵌套层的所有零件;共边切割处理方式为:为了节省材料,把多个零件的外部轮廓组成共边路径,先切所有零件的内部区域,然后再用共边处理切割外部区域;所述共边切割处理方式还包括:把共边路径上的全部图素放入共边图素数组;把共边路径上的全部不重复的顶点放入顶点数组,把经过顶点的边进行切分处理并更新共边图素数组,定义邻接矩阵及邻接矩阵初始化,把顶点与边及关联关系放入邻接矩阵,求奇数度顶点放入奇数度顶点数组,求奇数度顶点个数,若奇数度顶点个数为0或2.直接进行顶点配对;若奇数度顶点个数大于等于4时,构造奇数度顶点的完全图,进行奇数度顶点匹配算法,增加增广路径,用佛罗来算法求欧拉回路的行遍,优化欧拉回路或欧拉通路,按欧拉回路进行切割,每条增广路径的起点为切割的终点,每条增广路径的终点为另一条切割的始点。
名词解释:图形数据库是指CAD部分的总称,它包括零件图、排样可视化图形数据库、模拟可视化图形数据库,本专利在不同阶段图形数据库所指的内容不同,在零件库建立阶段,它指的是零件的各种图素的集合;在套料排料阶段,它指的是各种零件的集合;在模拟阶段,它指的是各种零件及其组成零件的图素的集合。
本发明还提供一种使用大功率厚板数控激光切割机CAM***的方法,其特征是包括如下步骤:零件库创建步骤:零件库创建步骤读取零件图的所有图素,从中筛选出与零件库创建有关的图素,进行分层处理,放入相应厚度的零件库中,以便排料套料步骤读取;排料套料步骤:排料套料步骤读取零件库创建步骤建立的零件库的零件,读取排料套料任务窗体中设置的数量、优先级、材料等内容,放入排料套料任务数组,根据排料套料的算法进行排料套料处理,并把排样结果以零件集合的形式回写到排样可视化图形数据库中,以便进行人工调整和零件优化步骤读取;零件优化步骤:零件优化步骤从排样可视化图形数据库读取零件的排样图形放入零件数组,进行零件切割算法优化,并把优化结果放入优化数组,供切割处理步骤读取;切割处理步骤:切割处理步骤从零件优化步骤中获取优化数组的数据,进行切割算法处理、常规切割处理、共边切割处理,并把切割处理后的结果传递给NC程序创建步骤;NC程序创建步骤:NC程序创建步骤根据切割处理步骤输出的数据;转换为大功率厚板数控激光切割机可以识别、符合指定机床配置的G代码、M代码、产生大功率厚板数控激光切割程序,并把程序输出给程序执行对象-大功率厚板数控激光切割的数控***或模拟仿真步骤。
本方案的具体特点还有,所述零件库创建步骤还包括:CAD图形读取子步骤:CAD图形读取子步骤读取零件图的所有图素,从中筛选出与零件库创建有关的图素:直线、弧、圆、矩形、多段线,进行分层处理,放入相应厚度的零件库中,以便排料套料步骤读取;零件处理子步骤:零件处理步骤包括单零件和组合零件;对于单个零件分层处理内层放入LASERIN层,外轮廓放入LASEROUT层;组合零件是为了简化排料套料的算法采用的最小包络矩形设计方法,实际上就是将不同形状的零件图形组合成近似矩形,凸凹对件,三角形对件,从而将不同形状零件的排样问题转化为面积不同的矩形排样优化问题,该方法要求排样零件图形上所有的点都包含在矩形内,且图形的某些边与矩形接触;零件库:零件库是一个目录结构,按不同材质、不同厚度建立多个子目录以便存放各种材质和厚度的零件。
所述排料套料步骤还包括:数据定义子步骤:数据定义子步骤定义排样数组、切割数组、优化数组、CAM层、模拟层以及公共变量,并把数组和公共变量传递给零件形成零件库步骤、排料套料步骤、零件优化步骤、切割处理步骤、NC程序创建步骤各个功能步骤,每个步骤调用这里定义的数组和公共变量;工艺参数设置子步骤:工艺参数设置子步骤读取设置窗体的参数,存放到数据定义步骤定义的公共变量中,这些设置包括大中小内外轮廓设置、优选类型选择、引入线的样式、引入线长度、引出线的样式、引出线长度、边框设置、微连接设置、穿孔类型,共边套料选择,并把这些设置传递给排料套料步骤、零件优化步骤、切割处理步骤、NC程序创建步骤各个功能步骤;板材库:板材库进行板材的整料和余料管理,根据排料任务数据库中的内容选取最合适的板材,板材参数有程序号、板材长度、板材宽度、X行程、Y行程,并把这些参数传递给排料套料步骤、零件优化步骤、切割处理步骤、NC程序创建步骤各个功能步骤;定制排料任务子步骤:定制排料任务子步骤根据用户选择的零件名称、数量、优先级,从零件库中调出图形,取出外面域和各个内面域的面积、最大值点、最小值点、凸点、凹点,形成定制排料任务单并放入任务数据库中,以供任务数据库进行管理和排料套料算法子步骤调用;任务数据库:任务数据库管理定制排料任务子步骤形成的定制排料任务单为载体的界面,具有编辑修改、删除某一项、全部删除、完成的操作功能形成定制排料任务单中的数据并放回任务数据库中以排料数组的形式存放,供排料套料算法子步骤调用;排料套料算法子步骤:排料套料算法子步骤从定制排料任务子步骤或任务数据库中形成的排料数组中获取数据,并把包括零件名称,数量,外形和各个内切区域的面积、最大值点、最小值点、凸点、凹点在内的排料数组数据放入零件数组,结合板材和工艺参数进行排料套料计算,把排样结果放入排样可视化图形数据库中,以供零件优化步骤读取;排料套料算法采用容器法,第一步:把板材看作为一个大的外部容器,所排的零件按面积由大到小排序,先取面积最大的零件按近似矩形进行排样,从板材的左下角即(10,10)点开始,按列放置,当一列不能放下一个零件时在下一列排放零件,并把本列剩余空间增加一个外部容器,以便对较小的零件排样;如果本张板材存放不下,其余零件放入下一张板材,对于每个最大的零件,其内部孔的面积大于最小零件的面积的内部孔作为一个内部容器增加到容器组中,以便对较小的零件套料;第二步:面积最大的零件排样完成后,对已有的内部容器按面积由大到小排序,外部容器按***点的位置排序;第三步:取面积较大的零件,先放置在能容纳该零件的内部容器中按列放置,当一列不能放下一个零件时在下一列排放零件,当内部容器的剩余面积放不下最小零件时,该容器标记已满,剩余零件放入另外的内部容器中,对于该零件所有内部容器都排不下时,把该零件排在外部容器中,对于每个已排序的零件其内部孔的面积大于最小零件的面积的内部孔作为一个内部容器增加到容器组中,以便对较小的零件套料;第四步:面积较大的零件排样完成后,对已有的内部容器按面积由大到小排序,外部容器按***点的位置排序。再取另一个要排序的零件,重复第三步和第四步,直到把所有零件排完为止;
板材利用率优化步骤:板材利用率优化步骤是以提高材料的利用率作为目标函数,使材料利用率最大;材料利用率是零件的实际面积Fa与原材料面积F的百分比;即η=Fa/F。
所述零件优化步骤还包括:排样图形读取步骤:排样图形读取步骤读取排样可视化图形数据库中的零件数据及有关的位置数据放入排料零件数组,并把排料零件数组传递给排样零件优化子步骤;排样零件优化子步骤:排样零件优化子步骤对排料零件数组进行优化处理,首先求各个零件的嵌套层,利用质点属性,找出离板材零点(或切割头)最近距离的嵌套层为0层的零件,其他嵌套层为0层的零件按到前一零件最短距离为原则确定顺序,嵌套层为1层的零件分别放在各自0层的前面并按到前一零件最短距离为原则确定顺序,嵌套层为2层的零件分别放在各自1层的前面并按相同原则确定顺序,依次类推,形成一个冒泡式零件数组,零件在冒泡式零件数组中的位置决定了零件的切割顺序;
所述切割处理步骤还包括:切割算法处理子步骤:切割算法处理子步骤接受排样零件优化子步骤形成的冒泡式零件数组,根据工艺设置参数,有两种切割处理方式,其一为常规切割,其二为共边切割;常规切割方式是:取一个或多个相同嵌套层的零件,如果是单个零件,首先把该零件形成多个内部面域(内部闭合区间)和一个外部面域(外部闭合区间),该零件的所有内部面域按最近点排序,逆时针切割内部面域,再切割该零件的外轮面域;如果是多个零件,找出离前一个切割结束点最近的零件,先切割内部再切割外部,再找离本切割结束点最近的下一个相同嵌套层的零件,先切割内部再切割外部,依次类推,即可切割相同嵌套层的所有零件;共边切割处理方式为:为了节省材料,把多个零件的外部轮廓组成共边路径,先切所有零件的内部区域,然后再用共边处理切割外部区域;所述共边切割处理方式还包括:把共边路径上的全部图素放入共边图素数组;把共边路径上的全部不重复的顶点放入顶点数组,把经过顶点的边进行切分处理并更新共边图素数组,定义邻接矩阵及邻接矩阵初始化,把顶点与边及关联关系放入邻接矩阵,求奇数度顶点放入奇数度顶点数组,求奇数度顶点个数,若奇数度顶点个数为0或2.直接进行顶点配对;若奇数度顶点个数大于等于4时,构造奇数度顶点的完全图,进行奇数度顶点匹配算法,增加增广路径,用佛罗来算法求欧拉回路的行遍,优化欧拉回路或欧拉通路,按欧拉回路进行切割,每条增广路径的起点为切割的终点,每条增广路径的终点为另一条切割的始点。
本发明的有益效果是:它适用于大功率厚板切割的工况,融合了穿孔典型工艺,对冲孔、切割状态适时检测闭环控制;提高了厚板切割的加工精度;提高板材的利用率。所述激光切割机的CAM***创建的NC程序短,占用内存少,操作简单,实现容易。在厚板激光切割机中进行了验证,在切割的精度方面也有所提高。因此本发明与现有技术相比,实现了技术目的。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照辅图并举实施例,对本发明作进一步详细说明。
图1是大功率厚板数控激光切割机的CAM***的***框图。包括三大部分,CAD部分是绘制零件的图形;CAM部分是核心内容,功能是读取零件图形数据库图纸进行处理,创建零件库,定制排料任务,设置板材和工艺参数,进行排料套料计算,生成可视化排样图形;排样零件优化以确定所有零件的切割顺序,然后进行零件的切割处理(包括传统切割和共边切割);创建NC程序,对NC程序进行模拟仿真可视化处理,传送到大功率厚板激光切割机数控***中;第三部分程序执行对象——大功率厚板激光切割机;
CAM部分包括:
步骤1:零件库创建模块:包括CAD图形读取子模块、零件处理子模块和零件库管理子模块,
―――CAD图形读取子模块:首先建立CAD与CAM的连接,读取零件图的所有图素,放入图素数组;图素数组的结构
TypeTusuZt'用户定义类型图素及其状态
TusuAsAcadEntity'图素
LayerAsDouble'图素的层外层0内层1
CutAsLong'初始状态0:未切割,1:已切割
WSAsBoolean'顺时针false逆时针true
SortAsBoolean'已排序true未排序false
MinxAsDouble'图素绑定框的最小x
MinyAsDouble'图素绑定框的最小y
MaxxAsDouble'图素绑定框的最大x
MaxyAsDouble'图素绑定框的最大y
AreaAsDouble'面积
PnTAsVariant'图素的质点
BnumAsLong'闭合区间的边数
EndType
―――零件处理子模块:从图素数组中筛选出与零件库创建有关的图素(直线、弧、圆、矩形、多段线),建立内层"LASERIN"和外层"LASEROUT"并用两种不同的颜色标识,判断图素的内外层,是内层放入"LASERIN"中并形成多个内层面域,求出各个内层面域的面积、最大值点、最小值点、凸点、凹点,是外层放入"LASEROUT"中,形成一个外层面域,求出外层面域的面积、最大值点、最小值点、凸点、凹点;
―――零件库管理子模块:各种材质和厚度组成的目录结构,把零件处理子模块中处理后的零件放入相应材质和厚度的零件库中,以便排料套料模块读取;
点击图标零件
写入外部块:文件→输出→文件类型选块(*.dwg)→给快名(应根据板厚建立各种板厚的目录)→保存→
屏幕提示:输入现有块名或[=(块=输出文件)/*(整个图形)]<定义新图形>:按enter键即回车键→
指定***基点:选零件的左下角点→选择对象:选部分获全部图形→点击鼠标右键或回车键
零件库中的零件带有内外层的属性,内外闭合区间(内外面域)的属性及零件的材料和厚度的属性。
步骤2:排料套料模块:包括数据定义子模块、工艺参数设置子模块、板材库子模块、定制排料任务子模块、任务数据库、排料套料算法子模块和板材利用率优化子模块;
数据定义模块:数据定义模块定义定制排料任务数组、板材数组、工艺参数数组、CAM层、模拟层以及公共变量,并把数组和公共变量传递给排料套料算法子模块,零件库读取子模块、零件优化处理模块、切割处理模块、模拟仿真模块、NC程序创建模块等各个功能模块;
TypeParts'用户定义类型零件排料套料
NameAsString'零件名称
DirAsString'目录
numAsLong'零件个数
PriAsLong'排序的优先级
MemtyAsString'材料
ThickAsDouble'厚度
AreaAsDouble'面积
LenthAsDouble'长度
widthAsDouble'宽度
'Vout()AsDouble'顶点
'Enge()AsAcadEntity'边
EndType
TypeContainer'用户定义类型容器Container(0,0)板材
xAsDouble'容器的左下角点的X值
yAsDouble'容器的左下角点的Y值
HightAsDouble'容器的高度
LenthAsDouble'容器的长度
AreaAsDouble'容器的面积
yyAsDouble'容器的左下角点的Y值用于多行y赋初值
Hight1AsDouble'容器的高度用于多行排列零件判断
IOAsLong'容器的类型1:外部容器2:零件的内部闭合曲线套料用
EndType
TypeBlockA'用户定义类型图素及其状态
JBAsString'块句柄
NameAsString'块的文件名
LayerAsLong'块的层外层0内层1
CutAsLong'初始状态0:未切割,1:已切割
MinxAsDouble'块绑定框的最小x
MinyAsDouble'块绑定框的最小y
MaxxAsDouble'块绑定框的最大x
MaxyAsDouble'块绑定框的最大y
AngAsDouble'旋转角度
AreaAsDouble'面积
InP(2)AsDouble'***点
PnT(2)AsDouble'块的中心点
BzAsString'备注上一层和上二层
GBAsLong'共边标记0不共边1共边
Enge()AsAcadEntity'边
EndType
公共变量:PublicPROGNUMAsString'程序号
PublicBANLENTHAsString'板材长度
PublicBANWIDTHAsString'板材宽度
PublicHOUDUAsString'厚度
PublicCLQDAsDouble'材料强度等100多个,分别用于各个功能模块。
工艺参数设置子模块:参数设置模块读取设置窗体的参数,存放在数据定义模块定义的公共变量中,参数有程序号、梁长度、腹面宽度、厚度、X行程、Y行程、共边切割等并把这些公共变量传递零件优化模块、模拟仿真模块、NC程序创建模块等各个功能模块;
定制排料任务子模块:定制排料任务子模块根据用户选择的零件名称,数量,从零件库中调出图形,取出外面域和各个内面域的面积、最大值点、最小值点、凸点、凹点等参数,放入定制排料任务数据库中,以备排料套料算法子模块调用;
排料套料算法子模块:排料套料算法采用容器法,第一步:把板材看作为一个大的外部容器,所排的零件按面积由大到小排序,先取面积最大的零件按近似矩形进行排样,从板材的左下角即(10,10)点开始,按列放置,当一列不能放下一个零件时在下一列排放零件,并把本列剩余空间增加一个外部容器,以便对较小的零件排样;如果本张板材存放不下,其余零件放入下一张板材,对于每个最大的零件,其内部孔的面积大于最小零件的面积的内部孔最为一个内部容器增加到容器组中,以便对较小的零件套料;第二步:面积最大的零件排样完成后,对已有的内部容器按面积由大到小排序,外部容器按***点的位置排序;第三步:取面积较大的零件,先放置在能容纳该零件的内部容器中按列放置,当一列不能放下一个零件时在下一列排放零件,当内部容器的剩余面积放不下最小零件时,该容易标记已满,剩余零件放入另外的内部容器中,对于该零件所有内部容器都排不下是,把该零件排在外部容器中,对于每个已排序的零件其内部孔的面积大于最小零件的面积的内部孔最为一个内部容器增加到容器组中,以便对较小的零件套料;第四步:面积较大的零件排样完成后,对已有的内部容器按面积由大到小排序,外部容器按***点的位置排序。再取另一个要排序的零件,重复第三步和第四步,直到把所有零件排完为止;
材料利用率优化子模块;对各种排样和套料图形数据库可视化进行材料利用率计算、优化,求出材料利用率最高的套排料方式。
步骤3:零件优化模块:优化的编程能提高切割质量,使生产更安全、更省时,因此编程过程考虑最优化的编程是非常重要,引入线位置使定位路径避免经过己加工表面,切割路径最短化,设置引入线要节约材料,引入线不能加轮廓上受热集中的部位,外轮廓引线要尽可能设在距离上一个轮廓引线位置最近的地方;
步骤4:切割处理模块:切割处理模块从零件优化模块中获取数据,进行切割算法处理、常规切割处理、共边切割处理,并把切割处理后的结构传递给NC程序创建模块;
步骤5:NC程序创建模块:程序创建模块根据切割处理模块输出的数据;转换为大功率厚板数控激光切割机可以识别、符合指定机床配置的G代码、M代码、产生大功率厚板数控激光切割程序,NC程序创建模块。并把程序输出给程序执行对象-大功率厚板数控激光切割的数控***或模拟仿真模块;
步骤6:模拟仿真模块:模拟仿真模块对NC程序创建模块输出的程序进行仿真校验,以可视化的方式模拟整个程序执行的切割路径顺序及各个零件的嵌套布局;
图2是大功率厚板数控激光切割机的CAM***数据流图;主要有三个数据流,第一个数据流从零件图形到形成零件库,一个零件图形经过CAD图形读取模块读取图形成为图素集合(包括圆、线、尺寸标注、多边形、矩形、圆弧、椭圆等),图素集合经过筛选、过滤成为切割图素(转化为基本图素圆、线、点、圆弧)的集合,切割图素的集合获取内外层属性值、内外面域属性值(包括长、宽、直径、面积、角度、最大值点、最小值点、凸点、凹点等)、材料材质(碳钢板、有色金属、)和厚度(15-30mm)等属性放入到零件库中,供第二个数据流读取;
第二个数据流是从板材设置、参数设置和定制排料任务形成排料任务单,根据排料任务单中所需要的零件从第一个数据流中形成的零件库中获取,零件数据包括每种零件外形尺寸如长、宽、直径、面积、角度、最大值点、最小值点、凸点、凹点等和每种零件的内部孔数据包括长、宽、直径、面积、角度、最大值点、最小值点、凸点、凹点等,每种零件的个数,材质,厚度;先把排料任务单中的零件放入排料任务数组然后按外形尺寸和面积由大到小排序,取最大面积的零件在板材上(板材看作是外部容器)进行排料,最大面积的零件个数从排料任务单中获取,排料的起点由参数设置中排料起点位置确定,有四种起始位置(左下,左上,由下,右上),缺省方式为左下,即从板材的左下角开始排样(以下以该缺省方式为参考),零件之间的间隙由参数设置中的X向间距Y向间距确定,共边切割时间距为0;排满一行,y方向增加一个零件宽度+Y向间距再排一行,依次类推,直到满足零件个数或板材无法放置零件为至,每排样一个零件,板材的参数(长,宽,高,面积、最大值点、最小值点、凸点、凹点)都随之改变,零件的内部孔(大于排料任务单中最小零件面积)增加内部容器,以便套料时用;最大面积的零件排样完成后,其他零件,先测试能否在内部容器中放置,若能容纳,则进行套料,若不能容纳,则取其他内部容器测试,若内部容器都容纳不下,则放在外部容器中排料,依次类推,直到排料任务单中的零件全部套排完成,通过排料套料算法和板材利用率算法,形成排样图形库,回写到排样可视化图形数据库中,以便可视化操作,供第三个数据流读取;排料套料算法的数学模型:套料排样问题是指激光切割加工生产中的零件在给定板材上的优化布局方式;选择合理的套料排样布局方法,是提高板材利用率、降低激光切割生产成本和保证切割零件质量的有效措施;套料排样数学模型:对于激光切割加工中零件的套料排样问题,实际上就是非确定性多项式完备问题;这类问题一般是通过模拟方法,将优化布局转化为弹性势能函数来描述,求解函数的极值,即获得最优布局;排样问题一般表述为寻找平面最优布局的优化问题;即将一系列由同一种材料制成的n个零件k1,k2,…kn分别放置在宽度为W、长度为L的矩形板材P上,尽量减少板材的废料率,从而提高板材利用率,达到节约板材、提高经济效益的目的;零件在排样过程中,求两个相邻的零件之间不重叠、零件必须排放在矩形板材范围内,同时满足一定的工艺要求。用数学表达式表示为:
其中,W为零件包络矩形的宽度,L为零件包络矩形的长度,(X1,Y1)为零件包络矩形左下角点的坐标,(Xi,Yj)为零件包络矩形右下角点的坐标,λ为零件放置系数,当λ=1时,包络矩形长度方向与X方向一致,当λ=0时包络矩形长度方向与Y方向一致,在零件加工过程中,总会产生一些无法再利用的边角料,从而降低了板材的利用率;材料利用率的影响因素有很多,总结归纳起来主要有以下两个方面:
(1)板材具体形状或是否有孔洞等板材自身特性;
(2)零件加工方法和排样方式。
而排样优化设计的目标是提高板材利用率。对于规则的矩形件排样来说,其材料利用率的数学表达式如下:
对于任意不规则的n个多边形排样来说,假设第j个多边形有m个顶点,(Xi,Yj)为该多边形上第i个顶点坐标,则该多边形的面积为
则n个多边形的面积之和S为
若板材的长度为L,宽度为W,则板材的利用率η为
第三个数据流是从第二个数据流回写的排样图形到创建NC程序,通过读取图形数据库的排样图形成为零件集合,零件集合通过零件切割优化形成零件切割顺序表,根据切割工艺参数中选择的是否共边切割,分别进行共边切割和传统切割处理,形成切割序列,通过共边切割创建NC算法或传统切割创建NC算法,输出NC程序,该程序可以传送到激光切割机中进行零件加工,也可进行模拟仿真,模拟仿真是在图形数据库中可视化显示。
共边切割用到的算法:
欧拉回路:图G的一个回路,若它恰通过G中每条边一次,则称该回路为欧拉(Euler)回路。具有欧拉回路的图称为欧拉图(简称E图);欧拉回路:每个顶点度数都是偶数;欧拉通路:所有点度数为偶数,或者只有2个点度数为奇数;
图论〔GraphTheory〕是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系;图G是图论中的图,其属性多个边和多个顶点。
佛罗来算法:从图的带权邻接矩阵A=[a(i,j)]n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又用同样地公式由D(1)构造出D(2);……;最后又用同样的公式由D(n-1)构造出矩阵D(n)。矩阵D(n)的i行j列元素便是i号顶点到j号顶点的最短路径长度,称D(n)为图的距离矩阵,同时还可引入一个后继节点矩阵path来记录两点间的最短路径。
奇数度顶点匹配算法:最小权最大匹配采用匈牙利算法(匈牙利数学家Edmonds)该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法,若P是图G中一条连通两个未匹配顶点的路径,并且属于M的边和不属于M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径;由增广路的定义可以推出下述三个结论:
1-P的路径个数必定为奇数,第一条边和最后一条边都不属于M。
2-将M和P进行取反操作可以得到一个更大的匹配M’。
3-M为G的最大匹配当且仅当不存在M的增广路径。
算***廓:
⑴置M为空;
⑵找出一条增广路径P,通过异或操作获得更大的匹配M’代替M;
⑶重复⑵操作直到找不出增广路径为止。
由于共边切割的算法非常复杂,在数据流图中简单描述了该算法,把共边路径上的全部图素放入共边图素数组;把共边路径上的全部不重复的顶点放入顶点数组,把经过顶点的边进行切分处理并更新共边图素数组,定义邻接矩阵及邻接矩阵初始化,把顶点与边及关联关系放入邻接矩阵,求奇数度顶点放入奇数度顶点数组,求奇数度顶点个数,若奇数度顶点个数为0或2.直接进行顶点配对;若奇数度顶点个数大于等于4时,构造奇数度顶点的完全图,进行奇数度顶点匹配算法,增加增广路径,用佛罗来算法求欧拉回路的行遍,优化欧拉回路或欧拉通路,按欧拉回路进行切割,每条增广路径的起点为切割的终点,每条增广路径的终点为另一条切割的始点。
图3是大功率厚板数控激光切割机的CAM***程序流程图;主要有下列步骤:步骤1:***的初始化:数据定义模块:由301实现,数据定义模块定义零件数组、容器数组、图素数组、零件优化数组、模拟层以及公共变量PROGNUM程序号,BANLENTH板材长度,BANWIDTH板材宽度,HOUDU厚度,CLQD材料强度,PNum有效孔计数等100多个,分别用于各个功能模块。
步骤2:零件库创建模块:302到307实现,首先建立CAD与CAM的连接,读取零件图的所有图素,放入图素数组并筛选出与零件库创建有关的图素(直线、弧、圆、矩形、多段线),建立内层"LASERIN"和外层"LASEROUT"并用两种不同的颜色标识,判断图素的内外层,是内层放入"LASERIN"中并形成多个内层面域,求出各个内层面域的面积、最大值点、最小值点、凸点、凹点,是外层放入"LASEROUT"中,形成一个外层面域,求出外层面域的面积、最大值点、最小值点、凸点、凹点;还包括各种材质和厚度,把处理后的零件放入相应材质和厚度的零件库中,以便排料套料模块读取。
步骤3:排料套料模块:307到314实现读取零件库创建模块建立的零件库的零件,读取排料套料任务窗体中设置的数量、优先级、材料等内容,放入排料套料任务数组,根据排料套料的算法进行排料套料处理,并把排样结果回写到排样可视化图形数据库中,以便进行调整和零件切割算法优化模块读取。
步骤4:零件优化模块:315实现;零件优化模块从排样图形数据库读取零件放入零件数组,进行零件切割算法优化,并把优化结果放入优化数组,供切割处理模块读取,优化的编程能提高切割质量,使生产更安全、更省时,因此编程过程考虑最优化的编程是非常重要,引入线位置使定位路径避免经过己加工表面,切割路径最短化,设置引入线要节约材料,引入线不能加轮廓上受热集中的部位,外轮廓引线要尽可能设在距离上一个轮廓引线位置最近的地方。
步骤5:切割处理模块:316到319实现,切割处理模块从零件优化模块中获取数据,进行切割算法处理、常规切割处理、共边切割处理,并把切割处理后的结构传递给NC程序创建模块。
步骤6:NC程序创建模块 320实现程序创建模块根据切割处理模块输出的数据;转换为大功率厚板数控激光切割机可以识别、符合指定机床配置的G代码、M代码、产生大功率厚板数控激光切割程序,NC程序创建模块。并把程序输出给程序执行对象-大功率厚板数控激光切割的数控***或模拟仿真模块。
步骤7:模拟仿真模块321实现模拟仿真模块对NC程序创建模块输出的程序进行仿真校验,以可视化的方式模拟整个程序执行的切割路径顺序及各个零件的嵌套。
图4是零件形成零件库的程序流程图。401实现数据定义:图素数组ENTS(),内层REGIONIN,外层REGIONOUT,公共变量等,402实现连接图形数据库,403到409实现把零件的切割图素放入图素数组ents,除去非切割图素,410实现把图素数组中的切割图素形成面域,记录面域总数ie,求出各个面域的面积、最大值点、最小值点、凸点、凹点等,411到422用三重循环实现判断零件的内外层,把内层放入REGIONIN,把外层放入REGIONOUT,并用不同的颜色显示各层,423到426实现写入零件库,根据不同的材质和不同的厚度分别写入对应的目录;重复403到426各步,把多个零件写入对应的目录,形成零件库。
图5是排料套料的程序流程图;501实现零件数组定义parts包括零件名称、个数、面积、优先级,内面域的面积等,定义各种公共变量;502调用排料套料任务窗体;503到512读取零件库创建模块建立的零件库的零件,读取排料套料任务窗体中设置的数量、优先级、材料等内容,放入排料套料任务数组;513实现调用板材设置窗体,设置与板材有关的各种信息如激光切割机的行程、板材长度、宽度、材质、厚度,夹钳位置,零件放置位置等;514实现工艺参数的设置,包括大中小内外轮廓设置、优选类型选择、引入线的样式、引入线长度、引出线的样式、引出线长度、边框设置、微连接设置、穿孔类型,共边套料选择等;515到517实现传统套料和共边套料的零件间距设置;518到535实现容器法排料套料的算法进行排料套料处理,536实现把排样结果回写到排样可视化图形数据库中,以便进行零件的移动、旋转、复制、删除等调整和零件切割算法优化模块读取。
图6是零件优化算法的程序流程图;601实现初始化零件数组,602实现读取排样可视化图形数据库、板材参数、工艺参数等数据,603实现把排样可视化图形数据库中的零件参数(名称、面积、嵌套、序号等)放入零件数组,604实现零件数组按面积由大到小排序,605实现求出每个零件的嵌套层数,无嵌套为0层,零件中有套料零件时,套料零件为1层,依次类推,606实现利用质点属性,找出离板材零点最近距离的0层零件,607实现其他0层按最近点排序,由此确定0层零件的切割顺序,608到618用三重循环实现1层零件分别放在各自0层零件的前面(冒泡算法),619到624实现2层零件分别放在各自1层零件的前面,625实现其他层(3层以上)的零件依次类推分别放在各自母层的前面,同层有多个零件时,按切割零件的起始点距离最近排序,至此确定了所有零件的切割顺序;零件优化模块从排样图形库读取零件放入零件数组,进行零件切割算法优化,并把优化结果放入优化数组,供切割处理模块读取,优化的编程能提高切割质量,使生产更安全、更省时,因此编程过程考虑最优化的编程是非常重要,引入线位置使定位路径避免经过己加工表面,切割路径最短化,设置引入线要节约材料,引入线不能加轮廓上受热集中的部位,外轮廓引线要尽可能设在距离上一个轮廓引线位置最近的地方。
图7是常规切割处理的程序流程图:701实现从零件优化数组中获取一个零件,702实现把零件分解成多个面域,内部面域放入内部面域数组,外轮廓放入外部面域数组(由于可能有组合零件,外轮廓可能有多个),703到728实现切割内部面域,创建NC代码,内切时加入穿孔点和内引入引出线,729到743实现切割外部面域,创建NC代码,外切时加入穿孔点和外引入引出线。
图8是共边切割的程序流程图:共边切割从零件优化数组中获取同层共边的一组零件,把零件组分解成多个面域,内部面域放入内部面域数组,外轮廓放入外部面域数组,零件组的所有内部面域按最近引入引出位置排序,进行生成切割的NC代码,切完该零件组的所有内部面域后,再切零件组共边的外部轮廓,图8只是0层共边切割的程序框图,其他层共边切割的过程与0层类似,801到808取共边零件组的外轮廓的图素放入图素数组,809到819实现从图素数组中取出顶点建立顶点数组,820到822实现顶点排序和标记特征顶点,823实现把经过顶点的边进行切分处理,824到825实现顶点与边及关联关系放入邻接矩阵,826实现从邻接矩阵中求出奇数度顶点放入奇数度顶点数组,827实现判断奇数度顶点的个数(是偶数),828实现若奇数度顶点的个数为0或2直接匹配奇数度顶点,829到831实现奇数度顶点的个数若大于4个则需要构造奇数度顶点的完全图,奇数度顶点匹配算法,增加增广路径,832实现佛罗来算法求欧拉回路的行遍,833实现优化欧拉回路或欧拉通路(去除增广路径),834到839切割欧拉回路或欧拉通路,840到847实现切割完成后的NC程序结束处理。