一种自动测量PCB图档元器件距离的方法技术领域
本发明涉及印刷电路板领域,特别是涉及一种自动测量PCB图档元器件距离的方
法。
背景技术
印刷电路板(Printed Circuit Boards)是电子零件彼此连接沟通的支撑物,它质
量的好坏直接影响电子产品的正常工作,所以对PCB的检测是必要的。PCB从图档到成品,涉
及到多道工序,任何一道工序出现问题,都会对产品的质量造成影响。出于元件之间在电气
和物理上的要求,以及工业生产上的经验,在画PCB图档时,对元件之间的距离有所限定。大
部分的厂家对距离要求上形成一份自己的距离规范。但工作人员在画PCB图时,在距离布局
上只是一个大概的概念,无法准确地符合距离规范上的条条例例。而且这些规范繁多而杂,
人工逐一确认需要花上大量的时间。
发明内容
有鉴于此,本发明的目的是提供一种自动测量PCB图档零件距离的方法,通过结合
K象限—最近邻的算法,对PCB图档上的元器件进行测距和判断,减少人工检测所带来的耗
时耗力现象,以及提供检测的准确度。
本发明采用以下方案实现:一种自动测量PCB图档元器件距离的方法,包括以下步
骤:
步骤S1:根据绘制的一PCB图档,生成一份相对应的格式为Excel的坐标文件;
步骤S2:导入SQLite数据库,包括元件封装参数库和元件距离规范库;
步骤S3:建立一客户端系统,将所述坐标文档与SQLite数据库导入所述客户端系
统,从而获取坐标文件中的元件名、封装名和坐标;
步骤S4:客户端系统设置模块的选择设置,包括板子类型和测试类型的设置;
步骤S5:客户端系统进行元件距离测算,判断其是否符合元件距离规范;
步骤S6:客户端系统对测试结果以Excel格式进行导出,测试结果包括元件点位名
1、元件点位名2、测算出的元件1和元件2的实际距离以及是否符合安全距离规范要求。
进一步地,所述步骤S1中,PCB图档通过PADS软件生成坐标文件为excel格式,该文
件包含PCB上所有元件的元件名、元件点位名、元件封装名、管脚数、层次、旋转角度、元件坐
标。
进一步地,所述元件点位名在一份PCB图档中是唯一的;相同的元件有相同的元件
名以及封装名,不同的元件存在相同的封装,即元件名和元件封装名不唯一;层次代表该元
件是在Top层或者是Bottom层;旋转角度是以画元件封装时当前角度状态为参考,绘制PCB
图档时摆放元件出于布局的考虑旋转元件,从而产生旋转角度;坐标文件中的元件坐标是
元件原点在PCB图档上的位置,该原点是元件的中心点或元件的某一个pin脚。
进一步地,所述步骤S2中,所述元件封装参数数据库,根据距离测算的算法,规定
四个参数分别为x1、x2、y1、y2,单位为mm,这四个参数按照元件封装设定,x1、x2、y1、y2分别
是元件原点到元件封装所有焊盘的最小外接矩形框四条边的距离。
进一步地,所述步骤S2中,所述元件距离规范数据库中规定了元件之间焊盘的水
平及垂直距离、贴片元件之间的距离、立式元件之间的距离以及贴片-立式元件之间的距
离。
进一步地,所述步骤S3中,在Qt SDK平台4.7.4版本环境下建立所述客户端系统。
进一步地,所述步骤S3中,所述客户端系统根据读取坐标文件中的元件封装名,对
应元件封装参数库中的元件封装名提取参数x1、x2、y1、y2,由于元件封装库的参数对应的
是元件0°时的状态,需要根据坐标文件中的角度θ调整从元件封装库提取出来的参数,具体
为:
当角度为0°时,90°、180°、270°时,参数的调整如下所示:
当θ=0°时,X1=x1,Y1=y1,X2=x2,Y2=y2;
当θ=90°时,X1=-y2,Y1=x1,X2=-y1,Y2=x2;
当θ=180°时,X1=-x2,Y1=-y2,X2=-x1,Y2=-y1;
当θ=270°时,X1=y1,Y1=-x2,X2=y2,Y2=-x1;
当角度不是0°、90°、180°、270°时,参数的调整还需考虑元件封装原点坐标的设
置,参数调整如下所示:
当0°<θ<90°时
其中a=|y2|/sinθ;
其中b=y1/cosθ;
其中c=y1/sinθ;
其中d=|y2|/cosθ;
当90°<θ<180°时
其中a=y1/sinθ;
其中b=y1/cosθ;
其中c=|y2|/sinθ;
其中d=|y2|/cosθ;
当180°<θ<270°时
其中a=y1/sinθ;
其中b=|y2|/cosθ;
其中c=|y2|/sinθ;
其中d=y1/cosθ;
当270°<θ<360°时
其中a=y1/sinθ;
其中b=y1/cosθ;
其中c=|y2|/sinθ;
其中d=|y2|/cosθ;
将获得的处理过的元件封装参数结合获得的元件原点坐标(x0,y0),得到元件封装
的外接矩形框在PCB图档上的位置坐标(x0+X1,y0)、(x0+X2,y0)、(x0,y0+Y1)、(x0,y0+Y2)。
进一步地,所述步骤S4中,所述板子类型包括双面板和单面板;测试类型包括贴片
元件之间、立式元件之间以及贴片-立式元件之间。
进一步地,所述步骤S5中,进行元件距离测算时,采用K象限-最近邻算法找出中心
元件邻近元件,具体为:
步骤S51:任意选择一个元件作为中心元件,以其原点坐标(x0,y0)
作为平面中心,将平面分为K个象限,每个象限角度为360°/k;
步骤S52:判断其余元件原点坐标(x'0,y'0)落在哪一个象限;
步骤S53:计算该元件与中心元件原点坐标之间的欧氏距离d:
步骤S54:比较同一个象限内欧氏距离,得到与中心元件欧氏距离最短即在该象限
内与中心元件最近邻的元件;
中心元件与邻近元件安全距离的测量,从元件封装参数库中提取到的中心元件及
邻近元件的四个参数分别为(x0+X1,y0)、(x0+X2,y0)、(x0,y0+Y1)、(x0,y0+Y2)以及(x'0+X'1,
y'0)、(x'0+X'2,y'0)、(x'0,y'0+Y1')、(x'0,y'0+Y2'),按照k象限-最近邻法得到绕中心元件
的k个邻近元件,判断k个邻近元件与中心元件的相对位置,根据相对位置,计算它们之间的
安全距离,其中,安全距离包括水平距离Hdis与垂直距离Vdis,判断相对位置规则如下:
若y0+Y1<y'0+Y2',则Vdis=(y'0+Y2')-(y0+Y1);
若y0+Y2<y'0+Y1',则Vdis=(y0+Y2)-(y'0+Y1');
若y0+Y1≥y'0+Y2'且y0+Y2≤y'0+Y1'且x0+X1≤x'0+X2',则Hdis=(x'0+X'2)-(x0+X1);
若y0+Y1≥y'0+Y2'且y0+Y2≤y'0+Y1'且x0+X2≥x'0+X1',则Hdis=(x0+X2)-(x'0+X1')。
进一步地,所述步骤S6的测试结果中,是否符合安全距离规范要求具体为:将实际
测算出来的距离与所述元件距离规范数据库中的数据进行一一比对,若是符合规范则给出
Pass的结果,若是不符合规范给出Check的结果,若是规范中没有的则给出NULL的结果,并
以Excel文档导出结果。
相较于现有技术,本发明通过结合K象限—最近邻的算法,对PCB图档上的元器件
进行测距和判断,减少人工检测所带来的耗时耗力现象,以及提供检测的准确度。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的元件封装旋转角度图。
图3是本发明的元件封装参数设定示意图。
图4是本发明的参数调整表。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
本实施例提供一种自动测量PCB图档元器件距离的方法,如图1所示,包括以下步
骤:
步骤S1:根据绘制的一PCB图档,生成一份相对应的格式为Excel的坐标文件;
步骤S2:导入SQLite数据库,包括元件封装参数库和元件距离规范库;
步骤S3:建立一客户端系统,将所述坐标文档与SQLite数据库导入所述客户端系
统,从而获取坐标文件中的元件名、封装名和坐标;
步骤S4:客户端系统设置模块的选择设置,包括板子类型和测试类型的设置;
步骤S5:客户端系统进行元件距离测算,判断其是否符合元件距离规范;
步骤S6:客户端系统对测试结果以Excel格式进行导出,测试结果包括元件点位名
1、元件点位名2、测算出的元件1和元件2的实际距离以及是否符合安全距离规范要求。
在本实施例中,所述步骤S1中,PCB图档通过PADS软件生成坐标文件为excel格式,
该文件包含PCB上所有元件的元件名、元件点位名、元件封装名、管脚数、层次、旋转角度、元
件坐标。
在本实施例中,所述元件点位名在一份PCB图档中是唯一的;相同的元件有相同的
元件名以及封装名,不同的元件存在相同的封装,即元件名和元件封装名不唯一;层次代表
该元件是在Top层或者是Bottom层;旋转角度是以画元件封装时当前角度状态为参考,绘制
PCB图档时摆放元件出于布局的考虑旋转元件,从而产生旋转角度;坐标文件中的元件坐标
是元件原点在PCB图档上的位置,该原点是元件的中心点或元件的某一个pin脚。
在本实施例中,如图2所示,做元件封装时,会为每一个元件封装规定原点,该原点
有可能是元件的中心点,也有可能是元件的某一个pin脚,在坐标文件上元件坐标即是元件
原点在PCB图档上的位置。
在本实施例中,所述步骤S2中,所述元件封装参数数据库,根据距离测算的算法,
规定四个参数分别为x1、x2、y1、y2,单位为mm,这四个参数按照元件封装设定,x1、x2、y1、y2
分别是元件原点到元件封装所有焊盘的最小外接矩形框四条边的距离。
在本实施例中,如图3所示,假设元件坐标原点为几何中心点,所述步骤S2中,所述
元件距离规范数据库中规定了元件之间焊盘的水平及垂直距离、贴片元件之间的距离、立
式元件之间的距离以及贴片-立式元件之间的距离。
在本实施例中,所述步骤S3中,在Qt SDK平台4.7.4版本环境下建立所述客户端系
统。
在本实施例中,所述步骤S3中,将坐标文档导入客户端系统,进行坐标文件的读
取:坐标文件为Excel文件,Qt平台中操作Excel文件的方式主要有两种,一种是把Excel看
作一种ODBC驱动的数据库,调用微软的ODBC接口进行读取;另一种是利用Qt的AxtiveX机
制,用QAxObject来操作Excel。前者的优点是速度快,但是缺点也很明显,那就是可控制能
力弱;QAxObject的方法优点是可控制能力强,可以实现Office Excel界面中所有的功能
(实际上相当于在程序中嵌入了一个Excel控件),因此本客户端系统中采用的是第二种方
法。根据读取坐标文件中的元件封装名,对应元件封装参数库中的元件封装名提取参数x1、
x2、y1、y2。由于元件封装库的参数对应的是元件0°时的状态,因此需要根据坐标文件中的
角度θ调整从元件封装库提取出来的参数。
当角度为0°时,90°、180°、270°时,参数的调整图4所示,具体如下所示:
当θ=0°时,X1=x1,Y1=y1,X2=x2,Y2=y2;
当θ=90°时,X1=-y2,Y1=x1,X2=-y1,Y2=x2;
当θ=180°时,X1=-x2,Y1=-y2,X2=-x1,Y2=-y1;
当θ=270°时,X1=y1,Y1=-x2,X2=y2,Y2=-x1;
当角度不是0°、90°、180°、270°时,参数的调整还需考虑元件封装原点坐标的设
置,参数调整如下所示:
当0°<θ<90°时
其中a=|y2|/sinθ;
其中b=y1/cosθ;
其中c=y1/sinθ;
其中d=|y2|/cosθ;
当90°<θ<180°时
其中a=y1/sinθ;
其中b=y1/cosθ;
其中c=|y2|/sinθ;
其中d=|y2|/cosθ;
当180°<θ<270°时
其中a=y1/sinθ;
其中b=|y2|/cosθ;
其中c=|y2|/sinθ;
其中d=y1/cosθ;
当270°<θ<360°时
其中a=y1/sinθ;
其中b=y1/cosθ;
其中c=|y2|/sinθ;
其中d=|y2|/cosθ;
将获得的处理过的元件封装参数结合获得的元件原点坐标(x0,y0),得到元件封装
的外接矩形框在PCB图档上的位置坐标(x0+X1,y0)、(x0+X2,y0)、(x0,y0+Y1)、(x0,y0+Y2)。
在本实施例中,所述步骤S4中,所述板子类型包括双面板和单面板,双面板和单面
板在距离测算上有所区别;测试类型包括贴片元件之间、立式元件之间以及贴片-立式元件
之间,用户根据需求进行选择;
在本实施例中,所述步骤S5中,进行元件距离测算时,采用K象限-最近邻算法找出
中心元件邻近元件,具体为:
步骤S51:任意选择一个元件作为中心元件,以其原点坐标(x0,y0)
作为平面中心,将平面分为K个象限,每个象限角度为360°/k;
步骤S52:判断其余元件原点坐标(x'0,y'0)落在哪一个象限;
步骤S53:计算该元件与中心元件原点坐标之间的欧氏距离d:
步骤S54:比较同一个象限内欧氏距离,得到与中心元件欧氏距离最短即在该象限
内与中心元件最近邻的元件;
中心元件与邻近元件安全距离的测量,从元件封装参数库中提取到的中心元件及
邻近元件的四个参数分别为(x0+X1,y0)、(x0+X2,y0)、(x0,y0+Y1)、(x0,y0+Y2)以及(x'0+X'1,
y'0)、(x'0+X'2,y'0)、(x'0,y'0+Y1')、(x'0,y'0+Y2'),按照k象限-最近邻法得到绕中心元件
的k个邻近元件,判断k个邻近元件与中心元件的相对位置,根据相对位置,计算它们之间的
安全距离,其中,安全距离包括水平距离Hdis与垂直距离Vdis,判断相对位置规则如下:
若y0+Y1<y'0+Y2',则Vdis=(y'0+Y2')-(y0+Y1);
若y0+Y2<y'0+Y1',则Vdis=(y0+Y2)-(y'0+Y1');
若y0+Y1≥y'0+Y2'且y0+Y2≤y'0+Y1'且x0+X1≤x'0+X2',则Hdis=(x'0+X'2)-(x0+X1);
若y0+Y1≥y'0+Y2'且y0+Y2≤y'0+Y1'且x0+X2≥x'0+X1',则Hdis=(x0+X2)-(x'0+X1')。
在本实施例中,所述步骤S6的测试结果中,是否符合安全距离规范要求具体为:将
实际测算出来的距离与所述元件距离规范数据库中的数据进行一一比对,若是符合规范则
给出Pass的结果,若是不符合规范给出Check的结果,若是规范中没有的则给出NULL的结
果,并以Excel文档导出结果。
在本实施例中,该测试结果的文档包括元件点位名1、元件点位名2、测算出的元件
1和元件2的实际距离以及是否符合安全距离规范要求,则测试结果既让用户找出不符合安
全距离的元件,也方便开发者评估系统的可靠性。
由上述实施例可以看出,本申请实现一种自动测量PCB图档零件距离的方法,在Qt
SDK平台4.7.4版本环境下建立客户端系统,向系统导入PCB图档的坐标文件和SQLite数据
库,以获取元件名、封装名及坐标。通过设置模块进行检测条件设置,以获取元件距离及测
试结果;该方法能够准确测量出元件之间的安全距离,并准确找出不符合规范的元件,还可
根据元件封装参数的不同、安全距离规范的不同,更新数据库数据,具有良好的扩展性和移
植性。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与
修饰,皆应属本发明的涵盖范围。