本发明属于印刷电路板技术领域,具体涉及基于电子行业刀具的印刷电路板的排板方法。
背景技术:
v-cut刀,即电子行业刀具,又名pcb板v-cut微刻刀、vcut刀、微刻刀,也有把它叫v坑刀或v槽刀等名称的,主要用于pcb线路板v-cut机上面对多元线路板进行vcut作业的硬质合金刀具;基于v-cut的pcb排板时,不但要求v-cut在一条线上,而且要求工作板的利用率最大。
技术实现要素:
针对现有技术的以上需求,本发明提供了一种基于v-cut的pcb排板方法,其目的在于找到工作板利用率最高的排列方式。
为实现上述目的,按照本发明的一个方面,提供了一种基于v-cut的pcb排板方法,包括如下步骤:
s1:全v-cut排列,按照v-cut方向,依次排列pcb板;
s2:计算出v-cut参数;
s3:判断pcb板按照v-cut进行折叠;
s4:排板,找到工作板利用率最高的排列方式;
s4.1:set集合
s4.2:set数据整理
s4.3:计算长与宽的比例,并记录最大值max及最大值的位置sit;
s4.4:判断max大于等于10,且sit是1;
s4.5:所述步骤s4.4的判断为是,则下一步骤是:
(1)更新第一个set
set长:不变
set宽:set宽乘以数量
set数量:变为1;
(2)计算长倍数multiple_longth:第一个set长除以所有set的长,并保存数据;
(3)计算折叠数:folding_number:set数量除以multiple_longth,再四舍五入向下取整存到:one_folding_number;
(4)循环:folding_number更新set集合,并对set集合数据整理;
(5)工作板的寻找算法;
(6)输出利用率最大的工作板,及工作板的尺寸。
所述步骤s4.4的判断为否,则分成1折、2折、3折三种情况对pcb排板。
s4.6:进行比较,得到利用率最高工作板。
根据本发明实施例,1折时,pcb排板步骤如下:
(1)set集合更新,并保存到set_a
set长:set长乘以set数量
set宽:不变
set数量:为1;
(2)采用工作板的寻找算法排板
(3)求set_a长的最大值value_length_new,并求其位position_length_new
(4)输出利用率最大的工作板,及工作板的尺寸。
根据本发明实施例,2折时,pcb排板步骤如下:
(1)2折时,新排板算法;
更新set集合;新set集合用set_a表示,set_a=set,把set原始数据,保存下,方便再用
(a)set_a中position_length_new位置
set的长:old_length
set的宽:old_width
set的数量:old_number
(b)position_length_new位置set的更新
set的长:new_length
set的宽:new_width
set的数量:new_number
如果:new_number>=2(else:只要一折处理结果)
求参数:parameter
parameter=四舍五入(new_number除以2)
更新new_length=new_length乘以parameter
更新new_number=1;
折后的剩余处理:
set折后剩余数量:
left_number=old_number-parameter
如果:left_number=parameter(完全封装)
更新new_width=new_width
set集合的更新如下:
set集合中的长:set集合中的长乘以set集合中的数量
set集合中的宽:不变
set集合中的数量:1
其它:(不能完全封装)(增加一行set)
add_set_length=old_length
add_set_width=old_width
add_set_number=left_number
set集合的更新如下:
set集合中的长:set集合中的长乘以set集合中的数量
set集合中的宽:不变
set集合中的数量:1
(c)把position_length_new位置的set放在第一位置:
如果,有增加的set,把增加的set放在第二位置:
(d)求set长的最大值,max_length,其位置sit_length
refer_folding=第一个set长+set宽的最小值
if(sit_length==1)(意思是:如果长的最大值正好是第一个set)
采用工作板的寻找算法进行排板
elseif(sit_length~=1且max_length<=refer_folding)
采用工作板的寻找算法进行排板
else
sit_length位置的set进行2折,折叠,折叠方式:与上边一样
采用工作板的寻找算法进行排板
(2)输出利用率最大的工作板,及工作板的尺寸。
根据本发明实施例,3折时,pcb排板步骤如下:
(1)3折时,新排板算法;
更新set集合;新set集合用set_a表示,set_a=set,把set原始数据,保存下,方便再用
(a)set_a中position_length_new位置
set的长:old_length
set的宽:old_width
set的数量:old_number
(b)position_length_new位置set的更新
set的长:new_length
set的宽:new_width
set的数量:new_number
如果:new_number>=3(前两折的处理)
(else:只要一折处理结果)
求参数:parameter
parameter=四舍五入(new_number除以3)
更新new_length=new_length乘以parameter
更新new_number=1;
折后的剩余处理:
set折后剩余数量:
left_number=old_number-2*parameter
如果:left_number=parameter(完全封装)
更新new_width=new_width乘以3
set集合的更新如下:
set集合中的长:set集合中的长乘以set集合中的数量
set集合中的宽:不变
set集合中的数量:1
其它:(不能完全封装)(增加一行set)
add_set_length=old_length
add_set_width=old_width
add_set_number=left_number
set集合的更新如下:
set集合中的长:set集合中的长乘以set集合中的数量
set集合中的宽:不变
set集合中的数量:1
(c)把position_length_new位置的set放在第一位置:
如果,有增加的set,把增加的set放在第二位置:
(d)求set长的最大值,max_length,其位置sit_length
refer_folding=第一个set长+set宽的最小值
if(sit_length==1)(意思是:如果长的最大值正好是第一个set)
采用工作板的寻找算法进行排板
elseif(sit_length~=1且max_length<=refer_folding)
采用工作板的寻找算法进行排板
else
sit_length位置的set进行2折,折叠,折叠方式:与上边一样
采用工作板的寻找算法进行排板
(2)输出利用率最大的工作板,及工作板的尺寸。
根据本发明实施例,工作板的寻找算法是:
(a)value_min:set集合中宽的最小值;
(b)工作板的高设置为1000;
(c)循环工作板的宽i+set_1_longth(i的值从0到value_min);
(d)左积累算法的修改:
第一块排set集合中的第一块,其余不变
(e)记录工作板的利用率及工作板的大小,
并返回最大的利用率,及相应的工作板大小
返回封装后的set集合、原始set集合
总体而言,通过本发明所构思的以上技术方案与现有技术相比,由于提供了基于v-cut的pcb排板方法,能够提高工作效率,使得工作板的利用率最大化。
附图说明
图1是基于v-cut的pcb排板方法流程图;
图2是实施例1排板效果图。
图3是实施例2排板效果图。
图4是实施例3排板效果图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
pcb板生产过程中的限制条件
(1)、不同id的pcb板,构成不同的set;
(2)、不同id的pcb板,可以有相同的厚度;
(3)、不相同厚度的set可一定不能排在同一个panel上;
(4)、相同层数相同厚度的set可以考虑排在同一个panel上;
(5)、不同层数但具有相同厚度的set,可以考虑排在同一个panel上;
(6)、相同厚度的set,不同油墨,可以排在panel上,但需要间隙分开;
(7)、相同厚度的set,不同表面处理,可以排在panel上,但需要间隙分开;
(8)、相同厚度的set,不同油墨,不同表面处理时,先考虑油墨,再考虑表面处理,但必须需要间隙分开;
(9)、相同set的v-cut方向必须保持一致(沿x方向或者沿y方向)。
pcb板的制作过程如下:
step1:把相同id的pcb板制作成set;
step2:把厚度不同的set分组(菲林数大于等于组数);
step3:对相同厚度的set,利用左积累智能排板算法,把set排到panel上;
step4:对每一组set,重复上一步骤,得到panel集合。
左积累智能排板算法,把set排到panel上的步骤是:
1、定义,包括
(1)pro_process:油墨集合,
aft_process:处理后的油墨集合;
(2)panel的宽width、高length、panel的左下角坐标为(0,0);
(3)panel在底部y=0即x轴,从点(0,0)出发,假设向y轴逐渐延伸,最长不超过length的长度;
(4)序列i={π1,π2,…πn}表示n个相同厚度set的某个装入序列,πi是set编号,
i(i)={x,y,w,h,θ}分别表示该set装入后,其左下角的横、纵坐标、矩形的宽度、高度和旋转角度;
(5)序列e={e1,e2,…en}表示装入过程中产生的轮廓线集合,元素ek表示水平线线段,它由三个元素组成,即ek={x,y,w}分别表示第k个水平线段的左端点坐标及线段的宽度;
2、每组set数据的处理,包括如下步骤:
(1)循环pro_process中每种油墨,或者表面处理,
计算油墨中,set长的和(sum_length),
找到油墨中,最宽的set(max_width),
并记住油墨的编号i,
把:i、sum_length、max_width存放在aft_process中;
(2)把油墨分为两类
panel的长:length
panel的宽:width
sum_length大于等于length的油墨在:pro_process_1
aft_process_1
其它的放在:pro_process_2
aft_process_2
3、左积累排板算法
n1:pro_process_1油墨的个数
n2:pro_process_2油墨的个数
while循环(n1)
左积累排列算法,排pro_process_1中的第一种油墨
最高水平线:y
最低水平线:yi
最高、低水平线的差:高度差eh
最低水平线的宽度:ex
while循环(n2)
如果:max_width小于eh
如果:sum_length小于ex
ex=ex-sum_lengt
记录n2的值
n2=n2+1;
直至:pro_process_1为空
如果pro_process_2非空;
最后把剩余pro_process_2中的油墨直接排在工作板上。
一、如果max大于等于10,且set是1时的处理,对set集合特除排列算法。
1、set数据整理:
(1)每种set按照长,从大到小排列;
(2)每种set的长必须大于宽。
2、计算set长与宽的比例:
ratio_length_width:
取ratio_length_width的最大值max_ratio,
及其最大值的位置:position_max_ration。
3、特殊化处理:
如果:max_ratio>=10并且position_max_ration==1
其余:返回(5)工作板的寻找算法
(此种set如果是长细条)
(且此种set的长,是set集合中最长的,按照宽进行封装)
更新set集合
把位置position_max_ration的set:
set_1_longth:不变
set_1_width:set_1_width乘以set_1_number
set_1_number:变为1(即:封装为1块新的set)
(1)、求multiple_longth
set_1_longth除以set集合中所有长的集合:
(2)、求:folding_number
循环所有set的数量除以相对应的multiple_longth,
四舍五入;存放到集合folding_number中
向下取整,存到集合one_folding_number中;
folding_number的个数为n
(3)、循环每一个folding_number
(4)对更新后的set集合,整理
set集合中:长必须大于宽、长按照从大到小排列
(5)工作板的寻找算法;
(a)value_min:set集合中宽的最小值;
(b)工作板的高设置为1000;
(c)循环工作板的宽i+set_1_longth(i的值从0到value_min);
(d)左积累算法的修改:第一块排set集合中的第一块,其余不变;
(e)记录工作板的利用率及工作板的大小;
并返回最大的利用率,及相应的工作板大小;
返回封装后的set集合、原始set集合。
(6)输出利用率最大的工作板,及工作板的尺寸。
二、一折时pcb排板算法
一折时新pcb排板
(1)更新set集合;新set集合用set_a表示
set集合中的长:原set长乘以原set的数量
set集合中的宽:不变
set集合中的数量:1
(2)返回:(一中的(5)工作板的寻找算法)排板
(3)求set_a长的最大值value_length_new,并求其位置position_length_new。
三、二折时新pcb排板(set集合)
set_a=set(把set原始数据,保存下,方便再用)
(1)set_a中position_length_new位置
set的长:old_length
set的宽:old_width
set的数量:old_number
(2)position_length_new位置set的更新
set的长:new_length
set的宽:new_width
set的数量:new_number
如果:new_number>=2(else:只要一折处理结果)
求参数:parameter
parameter=四舍五入(new_number除以2)
更新new_length=new_length乘以parameter
更新new_number=1;
折后的剩余处理:
set折后剩余数量:
left_number=old_number-parameter
如果:left_number=parameter(完全封装)
更新new_width=new_width
set集合的更新如下:
set集合中的长:set集合中的长乘以set集合中的数量
set集合中的宽:不变
set集合中的数量:1
其它:(不能完全封装)(增加一行set)
add_set_length=old_length
add_set_width=old_width
add_set_number=left_number
set集合的更新如下:
set集合中的长:set集合中的长乘以set集合中的数量
set集合中的宽:不变
set集合中的数量:1
(3)把position_length_new位置的set放在第一位置:
如果,有增加的set,把增加的set放在第二位置:
(4)求set长的最大值,max_length,其位置sit_length
refer_folding=第一个set长+set宽的最小值
if(sit_length==1)
(意思是:如果长的最大值正好是第一个set)
返回:(一中的(5)工作板的寻找算法)进行排板
elseif(sit_length~=1且max_length<=refer_folding)
返回:(一中的(5)工作板的寻找算法)进行排板
else
sit_length位置的set进行2折,折叠,折叠方式:与上边一样
返回:(一中的(5)工作板的寻找算法)进行排板
四、三折时新pcb排板(set集合)
set_a=set(把set原始数据,保存下,方便再用)
(1)set_a中position_length_new位置
set的长:old_length
set的宽:old_width
set的数量:old_number
(2)position_length_new位置set的更新
set的长:new_length
set的宽:new_width
set的数量:new_number
如果:new_number>=3(前两折的处理)(else:只要一折处理结果)
求参数:parameter
parameter=四舍五入(new_number除以3)
更新new_length=new_length乘以parameter
更新new_number=1;
折后的剩余处理:
set折后剩余数量:
left_number=old_number-2*parameter
如果:left_number=parameter(完全封装)
更新new_width=new_width乘以3
set集合的更新如下:
set集合中的长:set集合中的长乘以set集合中的数量
set集合中的宽:不变
set集合中的数量:1
其它:(不能完全封装)(增加一行set)
add_set_length=old_length
add_set_width=old_width
add_set_number=left_number
set集合的更新如下:
set集合中的长:set集合中的长乘以set集合中的数量
set集合中的宽:不变
set集合中的数量:1
(3)把position_length_new位置的set放在第一位置:
如果,有增加的set,把增加的set放在第二位置:
(4)求set长的最大值,max_length,其位置sit_length
refer_folding=第一个set长+set宽的最小值
if(sit_length==1)
(意思是:如果长的最大值正好是第一个set)
返回:(一中的(5)工作板的寻找算法)进行排板
elseif(sit_length~=1且max_length<=refer_folding)
返回:(一中的(5)工作板的寻找算法)进行排板
else
sit_length位置的set进行2折,折叠,折叠方式:与上边一样
返回:(一中的(5)工作板的寻找算法)进行排板。
最后1折、2折、3折进行比较,得到利用率最高的工作板。
实施例1
0455一块set
0456三块set
0457三块set
排列结果如图2,交叉是v-cut方向。
实施例2
20462八块set
4776三块set
20459一块set
排列结果如图3,交叉是v-cut方向。
实施例3
4800四块set
4777八块set
4779四块set
排列结果如图4,交叉是v-cut方向。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。