EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
虽然CAM系统在PCB业界中不断增加,但是为甚么还有很多厂商不愿意把工序自动化呢?6 ^$ m. ]& W, w8 Z9 T* _3 E( s" Y
有些相信他们现有的CAM软件已可达到要求、并不需要自动化。其它的则缺乏重点,无法界3 l" o9 n. s0 S( ]0 C2 Z Q
定甚么工序需要自动化,或者无法产生他们所需要的自动化软件。 无可置疑,一些走在前端的厂商已正在享受工序自动化带来的极大的好处,包括提升产能、增进数据质量和缩短培训时间。 第一个问题要问的是:为甚么需要自动化?为甚么CAM系统就不能配备所有所需的自动化功能,而我只需要按正确的键钮来达到自动化?要答复这些问题是很容易的。世上没有一个人
8 Z% o2 b2 y2 P! C- j" X是用同一样的方法来做同一件事的。每一个厂商都用很不同的方法来使用CAM系统。举个例+ O' g, P H3 b7 O
子:在排板的时候,每一个厂商都用很不同的符号、靶标、字符等,放在不同的板边位置。
h6 e; E4 v0 q8 u. W2 p1 X s% h这就是为甚么CAM系统只能提供基本的功能,让用户加入这些数据而没有自动化的功能。
# E+ P% t6 w* V5 y( h) `CAM工序自动化所带来的好处5 Y# j# ~' o& Y9 k# l
• 提升产量:无论有多少层的排板,自动化可以把一小时的排板时间缩短到三分钟。! B. @* @$ [8 h% G3 ?
• 资料质量:所有数据都用同一种方法来处理。
6 `, q n5 c6 o • 操作者的培训:当大部分的工序已经自动化时,培训一个新的操作人员是一件很容易的事
% j- l, ?& p$ o情。工作流程和工序都已在软件内定义好,操作人员只要作出几项决定便可完成复杂的工, q3 _. L" \/ i! v
序。 一个好的自动化需要甚么样的条件呢?明显的,如果CAM系统提供script 功能的话,我们便
) f V2 N7 a) N- G; p- o7 W; k能完成基本的自动化。自动化可以达到甚么样的程度,完全依赖CAM数据库内所能储存的资
$ x" T, O: _% r0 r# g料质和量。例如要写出把某个钻孔层内的资料分为导通孔和非导通孔的话,只要数据库内已
. x+ b0 R" D% p. u5 ?& E* B8 H能把导通孔和非导通孔分类,这就变成易如反掌。只要把script 写成为把所有导通孔从该钻孔
+ A6 D; O$ ^. A7 I5 w层拷贝到新的导通孔层便可。这步骤可以重复用在产生非导通孔层上。 一个好的CAM系统可以让用户为钻孔和其它数据定义成不同的参数,好像孔径、坐标等。它更可根据不同的客户名称、操作人员或时限来区分不同的料号。这些都是一个好的自动化程- I8 I& |/ _' a' K$ ^" E
式必备的数据,自动化程序员可很容易从数据库内得到正确的数据。 Script 是怎样工作的? 最容易的方法是用line-mode 指令;文字形式的指令已能代替CAM 系统内每一个鼠标的动
( A" e# W5 F" _1 s" @作。 如要打开一个料号的话,可用COM open_job,job=12022 便成。第一部分内的 “COM
! m( `' ~) d" n( k; p1 a7 b+ zopen_job” 告诉系统要怎么做(在这例子代表打开料号) 。第二部分内的告诉系统要处理甚么资; u3 b. ]: Z" D) [1 L
料 (在这例子代表料号名称为12022) 。同样的道理,如要在坐标 (4.6; 4.4) 加上100mils 的圆 k, B1 u- \8 M1 z, [, J: h
盘,可用指令:COM add_pad,x=4.6,y=4.4,symbol=r100,polarity=positive 来实现。为了帮助自6 |; x. B$ v ^ L
动化程序员从几千个CAM系统所提供的指令中找出所需的功能,指令记录功能可记录所有执* Z. e' Y/ X- y* r& n( x6 b, x
行过的动作,继而把它们变成line-mode 格式,程序员就可以运用把它们 化为自动化的内容。
5 E! V1 Q/ q5 | K6 h 图一、Genesis 指令记录器7 a! [% z& Y* P- i
现在你已有指令可以在script 内执行。这个script 只有对这一个特定的料号有效;这时,你需要产生一个在每一个料号都可以用的script。
+ o) D( B% b m/ G3 l) k 这就是script 语言产生的原因。你需要建立一些变量、做一些计算、写一些if-then-else 的句子; 还有产生一些循环、目录、列阵种种。举一个简单的用C-Shell script 语言写的例子,可
; C6 o" r1 D3 R: D, ^$ O让大家了解一下:# D" i3 V# Q) V8 X0 U$ I
图二中的程序可从数据库读进排板大小,然后在每一层的左下角和右上角距离0.5mil 板边的地方放一个100mil 的圆盘。, V, U' N3 @0 H; R w# j
DO_INFO -t step -e $JOB/$STEP ## 从数据库中读取有用的数据
6 e7 G$ a% y/ \# X3 SMATH x1 = $gPROF_LIMITSxmin + 0.5 #### 计算X 和Y 坐标 + S# V+ j0 c4 ]. W2 p; a q
MATH y1 = $gPROF_LIMITSymin + 0.5 #### 在Xmin 和Ymin 加上0.5
( n; ?+ ]/ _5 _8 P$ I1 mMATH x2 = $gPROF_LIMITSxmax - 0.5 #### 在Xmax 和Ymax 减去0.5
/ p, x' x- I+ ]0 |9 s4 h% F. y$ }MATH y2 = $gPROF_LIMITSymax - 0.5 #### 结果存在x1, y1, x2 和y2 变数中
) [0 U9 ?+ C3 W& x### 显示每一层和在已计算的坐标上
% b5 j! v7 `1 t; Q' M* `- T, j### 加上100 mils 的圆盘
6 R! J/ S1 e* p" W2 \/ J$ V [foreach layer ($gLAYERS_LIST)
& O9 D V. h* {; j8 d' D; Q( }COM display_layer,name=$layer,display=yes,number=1
# T4 j4 ]4 L& t' F! w! Y8 R+ B4 }# |3 tCOM work_layer,name=$layer
! Z- m8 W+ @/ y. x3 i& k* U4 _ ECOM add_pad,x=$x1,y=$y1,symbol=r100,polarity=positive & n! ?$ c% y8 I" x
COM add_pad,x=$x2,y=$y2,symbol=r100,polarity=positive 5 [* p0 p3 J0 k. l
end
% h' C1 Q# b/ \0 g图二:C-shell Script 例子 2 Q+ D$ n( B. _3 S: }* g
该用哪个script 语言?6 M9 n9 A* K! M# K% S. P7 w, ]
你可以用任何一种程序语言来作为script 语言。但最被普遍接受的是通译程序而不是需要被编2 [7 W' z1 U P' g$ Y+ b& m
译的程序。通译程序可直接被执行;但是编译程序(像C、C++、Java 等) 必须在被执行前 先被翻译(编译)成机器语言。它们比较难学,没有line-mode 编辑器,故此是一种难以引起大家 兴9 @% @) T% g+ O2 R9 D. ]
趣的script 语言。$ q Z, n' {0 Z; @% t: c
市场上你可以考虑用不同的script 语言:C-shell, Tcl/Tk, Perl 和Python (还有很多其它的语
& K, [' e: w. v( t, _言 ,在此不作探讨)。C-Shell 是被公认为最容易学的语言。它拥有非常简单而有限的指令,* J2 S2 j: u9 G# ^0 C& k
足够 让你可以写出大部分的自动化程序。偶尔你需要其它的小工具awk 或sed 来帮忙,但整) Y5 B4 J b& N8 }
体来说,C-Shell 的标准工具已能符合一般要求。你更可以用Genesis 的表格功能和内含的
4 x! R# n$ E: s# B; d' DGUI来设 计用户接口。, L+ d y B h1 {2 q! x+ p4 R; d
其它的程序语言,好像Perl, Python 和Tcl/Tk,具备更强大的功能,每一个都提供类似的工( X, F O+ Q* a3 ?+ d
具 和能力。我可以再写十页来比较它们的优缺点,但这只会令我们迷路;在CAM自动化程& X# n/ v0 m J( N- p/ F- @
式语言中,它们都是大同小异。这三种语言提供比较好的工具:好像列阵和子程序、还可产
9 q% O+ `/ b& k# i3 H" E生用户接口,让用户预先输入参数和选择 (请参考图三)。3 g! x* Y# U5 l6 Y( y z
) |6 N& N6 q7 P: O }) M( V甚么工作可被自动化?$ e2 t5 a4 Z6 E8 `) T
理论上,你可以把CAM从输入到输出的每一步都可以自动化,问题是当中需要考虑的事情实
4 ?+ V& E( @5 `/ O2 J6 \% X" X在太多。制程常常在被改变、输入数据变化无常、更甚者常常会有特殊情况出现,而这一切& l9 f; J* H& V
都末在当初写程序时考虑到的。
8 O, d, W5 O6 _. n; c0 Z第一步最容易自动化的是重复的工序,它们可被定义成流程图,配上固定的步骤和怎样执行9 s! {6 A0 M( J7 X. E
每一步便可。典型的步骤包括:- G4 Y$ K. R" }4 K5 S6 o8 h. ]) f- U
• 生成排板
# x6 e; \! R; b+ U: j/ \• 计算铜面积
2 q m) Z& b" `. s• 产生覆盖层+ X0 N* _- m/ v" t+ l$ z) l
• 层内分析 (为报价或量产)4 `# w. I( ~: d
• PCB编辑4 f2 K9 S7 `& M& ?
• 网络比较
' P! V9 ]* T$ I/ p• 输出至不同格式- G! j0 p! K% o. K
• 数据库管理及其它 为了简化程序,你可以从CAM流程中的单一的script 开始。然后把每一个小script 连系在8 `( J8 L- q" c, T/ W% O. ^
workflow上,CAM 工程师只需按正确的次序执行便可。你更可以防止他们在错误的时候按错; P" {7 r5 w* M
误的键。就算有些工序需要手动处理,script 也可以预先打开正确画面及显示相关层的数据。0 s' {2 r( v5 n! D+ s, g
当手动处理完成后,script 只需要跑一个检查程序去确认手动处理没有造成新的设计和网络问
6 _" R. Y( }: h0 j8 c& l& L# Y0 p) r( w题。
$ \ z$ z+ `5 B4 P以下例子(图四) 是典型的CAM料号输入流程。左边的按钮是操作人员必须执行的动作,这动0 W( c/ w. t2 I( r
作被连系到script 去执行所需的介入或非介入工序。当完成工序后,该按钮的底盘颜色会改
+ I: G* R$ r1 R y1 `变,操作人员的数据和执行时间都被自动记录在案。你可以用Genesis 的workform来设计用" }2 Z6 M5 }! ~8 X% D a S
户接口或沿用Tcl/Tk 的接口设计工具亦可。( l( ?. ^& I- r$ m! s" ]
" M; g% X+ n# C
图四:输入流程例子3 _4 t4 U L* ^3 x
挂接程序! B! ?1 t5 x/ p% C2 e+ J1 L1 K
Script 可连系到每一个被执行的指令,这些小script 名为挂接程序。它们可被特殊指令激活
, a* w. Y7 d1 D2 w9 {! a* o(好像:打开料号、加图盘或储存料号等) ,这些挂接程序可改变指令的行为。例如我们可以) X+ A3 O; s6 ~: P! e4 E* R1 W
把一个要求操作员输入密码的script 挂在打开料号指令上,这就可以控制操作员在打开料号时2 Q, ]( F: U- d, U! d4 ^' z
的权限。
0 n4 y' ]0 b6 x另举一例:一个跑网络检查的小script 可以挂接在储存料号指令上,这便可保障该料号在储存
, G+ G# s' y* r前网络是正确的。如果网络出现偏差,系统会拒绝储存指令,要求操作员去检查网络。; I! g& c1 L' }6 ?4 M0 e
总结) H; w2 F x% U0 L5 f
很多PCB制造商已经成功的完成了绝大部份CAM制程的自动化。每一天,他们还是继续投/ K7 F$ V- S. U: \+ l
资在自动化上。在程序人员的培训和自动化维护的投资,都已回报在显著增加的生产量,继
8 O- ]2 d8 I" {6 `而引发出更好、更快、更精确的CAM制程和产品。
! p1 P$ A4 R/ c8 M2 R% ?6 p8 I# M
|