EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
虽然CAM系统在PCB业界中不断增加,但是为甚么还有很多厂商不愿意把工序自动化呢?
4 S1 k P9 D- v# g有些相信他们现有的CAM软件已可达到要求、并不需要自动化。其它的则缺乏重点,无法界, l( Z7 s. J. `8 s
定甚么工序需要自动化,或者无法产生他们所需要的自动化软件。 无可置疑,一些走在前端的厂商已正在享受工序自动化带来的极大的好处,包括提升产能、增进数据质量和缩短培训时间。 第一个问题要问的是:为甚么需要自动化?为甚么CAM系统就不能配备所有所需的自动化功能,而我只需要按正确的键钮来达到自动化?要答复这些问题是很容易的。世上没有一个人* g7 G' B8 i: X
是用同一样的方法来做同一件事的。每一个厂商都用很不同的方法来使用CAM系统。举个例
, h* O% V' T. W+ X" d/ H; m子:在排板的时候,每一个厂商都用很不同的符号、靶标、字符等,放在不同的板边位置。
. |/ k' }9 b7 `7 G a6 M5 g这就是为甚么CAM系统只能提供基本的功能,让用户加入这些数据而没有自动化的功能。
$ e6 c7 q3 J" n# Y7 R/ \9 {CAM工序自动化所带来的好处0 B- Q# M1 j, ^6 d! ?5 |/ K
• 提升产量:无论有多少层的排板,自动化可以把一小时的排板时间缩短到三分钟。& M% w) |5 [7 p. `* `
• 资料质量:所有数据都用同一种方法来处理。
2 k7 Y+ O- _( W0 t% X • 操作者的培训:当大部分的工序已经自动化时,培训一个新的操作人员是一件很容易的事4 n/ Z) c* `! q. p2 E8 F
情。工作流程和工序都已在软件内定义好,操作人员只要作出几项决定便可完成复杂的工
5 V6 u' Z/ n+ G. u8 k1 V序。 一个好的自动化需要甚么样的条件呢?明显的,如果CAM系统提供script 功能的话,我们便% v C& t9 o0 d/ M4 ~
能完成基本的自动化。自动化可以达到甚么样的程度,完全依赖CAM数据库内所能储存的资9 k) ?' |* O3 f( s! R
料质和量。例如要写出把某个钻孔层内的资料分为导通孔和非导通孔的话,只要数据库内已
5 d+ X. U5 [$ u' E- U+ |能把导通孔和非导通孔分类,这就变成易如反掌。只要把script 写成为把所有导通孔从该钻孔* u* R+ S* K/ `, H
层拷贝到新的导通孔层便可。这步骤可以重复用在产生非导通孔层上。 一个好的CAM系统可以让用户为钻孔和其它数据定义成不同的参数,好像孔径、坐标等。它更可根据不同的客户名称、操作人员或时限来区分不同的料号。这些都是一个好的自动化程8 N4 {/ y1 c) y
式必备的数据,自动化程序员可很容易从数据库内得到正确的数据。 Script是怎样工作的? 最容易的方法是用line-mode 指令;文字形式的指令已能代替CAM 系统内每一个鼠标的动' s6 r% J$ g5 g! s" D9 Y
作。 如要打开一个料号的话,可用COM open_job,job=12022 便成。第一部分内的 “COM
( h' S7 \ E5 G$ `5 a6 uopen_job” 告诉系统要怎么做(在这例子代表打开料号) 。第二部分内的告诉系统要处理甚么资
0 ~* Z9 c+ U7 Z- e# b/ _% ?料 (在这例子代表料号名称为12022) 。同样的道理,如要在坐标 (4.6; 4.4) 加上100mils 的圆
4 Y3 `! F" d4 |0 s% r3 ]盘,可用指令:COMadd_pad,x=4.6,y=4.4,symbol=r100,polarity=positive 来实现。为了帮助自
* c% f, [2 b: S1 o* Y6 U动化程序员从几千个CAM系统所提供的指令中找出所需的功能,指令记录功能可记录所有执
; ?: h: Z9 _, T4 }+ E! I行过的动作,继而把它们变成line-mode 格式,程序员就可以运用把它们 化为自动化的内容。7 y) i' p4 R0 g5 ^- M. `
图一、Genesis指令记录器
1 r9 h, f" `$ b2 [: i- Z 现在你已有指令可以在script 内执行。这个script 只有对这一个特定的料号有效;这时,你需要产生一个在每一个料号都可以用的script。# r: c3 D6 s& |, q
这就是script语言产生的原因。你需要建立一些变量、做一些计算、写一些if-then-else 的句子; 还有产生一些循环、目录、列阵种种。举一个简单的用C-Shell script 语言写的例子,可" h/ y% N8 B" M; c, l$ W0 G$ p5 L
让大家了解一下:
! w8 |6 e0 C$ w: d 图二中的程序可从数据库读进排板大小,然后在每一层的左下角和右上角距离0.5mil 板边的地方放一个100mil 的圆盘。, P4 V* V+ a+ }+ }2 O
DO_INFO -t step -e $JOB/$STEP ## 从数据库中读取有用的数据
) H, V# b. r6 L/ hMATH x1 = $gPROF_LIMITSxmin + 0.5 #### 计算X 和Y 坐标
& t4 W5 ]7 x# O3 z0 W' uMATH y1 = $gPROF_LIMITSymin + 0.5 #### 在Xmin 和Ymin 加上0.5 1 s8 S# u6 L# D7 S( q$ H
MATH x2 = $gPROF_LIMITSxmax - 0.5 #### 在Xmax 和Ymax 减去0.5
" n' Z- t ~) o/ h$ MMATH y2 = $gPROF_LIMITSymax - 0.5 #### 结果存在x1, y1, x2 和y2 变数中
! g1 N+ z6 U1 i2 {. |3 U### 显示每一层和在已计算的坐标上 $ ~% O( D. L \4 V: d
### 加上100 mils 的圆盘 ( X+ e# g- B" o
foreach layer ($gLAYERS_LIST) . P$ O# r0 A, U) Z' \( Z
COM display_layer,name=$layer,display=yes,number=1
8 q8 s3 \- C- y' fCOM work_layer,name=$layer 0 u+ C& e: H4 a9 N4 k/ E" t
COM add_pad,x=$x1,y=$y1,symbol=r100,polarity=positive
+ e$ O _) j: a5 X( A! oCOM add_pad,x=$x2,y=$y2,symbol=r100,polarity=positive
5 F3 Y# m$ @, ~end $ B5 ? ` H t
图二:C-shell Script 例子 1 Z7 U# v! ^8 A" H0 s5 d1 H
该用哪个script 语言?
; V4 t P; ]3 v/ h3 L0 R你可以用任何一种程序语言来作为script 语言。但最被普遍接受的是通译程序而不是需要被编9 D+ L& Z4 v. m: a1 G# D) l
译的程序。通译程序可直接被执行;但是编译程序(像C、C++、Java 等) 必须在被执行前先被翻译(编译)成机器语言。它们比较难学,没有line-mode 编辑器,故此是一种难以引起大家 兴; }4 s7 s$ [! J3 V; ^& D+ l9 X/ \ L# A
趣的script 语言。
6 M: E* R8 ?, A- S) T& c9 r市场上你可以考虑用不同的script 语言:C-shell,Tcl/Tk, Perl 和Python (还有很多其它的语! L: h0 ^! W* y4 I
言 ,在此不作探讨)。C-Shell 是被公认为最容易学的语言。它拥有非常简单而有限的指令,) G: x( u$ S% Z6 f; L5 u1 d4 F
足够 让你可以写出大部分的自动化程序。偶尔你需要其它的小工具awk 或sed 来帮忙,但整1 a6 L+ M) o$ e" A
体来说,C-Shell 的标准工具已能符合一般要求。你更可以用Genesis的表格功能和内含的6 H5 S1 G0 f1 E' v1 X3 B
GUI来设 计用户接口。6 d2 m! P% {: E; w
其它的程序语言,好像Perl, Python 和Tcl/Tk,具备更强大的功能,每一个都提供类似的工
. w- {( R! [6 Y% b# {3 i具 和能力。我可以再写十页来比较它们的优缺点,但这只会令我们迷路;在CAM自动化程
" j& ?' v4 R% ]! W3 J8 D式语言中,它们都是大同小异。这三种语言提供比较好的工具:好像列阵和子程序、还可产
1 l2 I. N* g0 _; [生用户接口,让用户预先输入参数和选择 (请参考图三)。
8 e7 D& c, m5 ?: p
: d9 G/ X( E7 x7 ~6 V甚么工作可被自动化?
$ i6 L4 S% X% u; X9 o理论上,你可以把CAM从输入到输出的每一步都可以自动化,问题是当中需要考虑的事情实5 q- r9 T5 z; u6 i4 e/ ?" {
在太多。制程常常在被改变、输入数据变化无常、更甚者常常会有特殊情况出现,而这一切
7 M( n/ q0 P% _' y都末在当初写程序时考虑到的。- ~; d! O# y/ U; g4 \
第一步最容易自动化的是重复的工序,它们可被定义成流程图,配上固定的步骤和怎样执行
! E( W. B! i. N1 Z' w5 W- M每一步便可。典型的步骤包括:, ^1 \7 N- D9 r0 Z& q
• 生成排板+ ~) U) A1 \ n1 n$ Y1 T9 f) J
• 计算铜面积
4 Z; }* B1 U2 h• 产生覆盖层# B% e3 C S( _
• 层内分析 (为报价或量产)
+ y! h' X' Y9 P• PCB编辑
& N7 \! J7 D/ J% b• 网络比较. K3 ]- x" z; Z( I4 [
• 输出至不同格式6 @" \5 W5 F. }9 o- X
• 数据库管理及其它 为了简化程序,你可以从CAM流程中的单一的script 开始。然后把每一个小script 连系在: F1 w) S" D; S
workflow上,CAM 工程师只需按正确的次序执行便可。你更可以防止他们在错误的时候按错
( Z& Q# u2 G+ B/ m/ G误的键。就算有些工序需要手动处理,script 也可以预先打开正确画面及显示相关层的数据。
' G4 C8 {" [# M/ \- R当手动处理完成后,script 只需要跑一个检查程序去确认手动处理没有造成新的设计和网络问
" f* \1 |" N3 b* u2 w$ K题。9 y9 M/ H; K5 p6 E$ X
以下例子(图四) 是典型的CAM料号输入流程。左边的按钮是操作人员必须执行的动作,这动7 z3 f/ l5 C, `4 C, f
作被连系到script 去执行所需的介入或非介入工序。当完成工序后,该按钮的底盘颜色会改4 K! k% k& C* f# @7 `" f% R9 y
变,操作人员的数据和执行时间都被自动记录在案。你可以用Genesis 的workform来设计用
, F2 c4 |- X5 R7 d, Z户接口或沿用Tcl/Tk 的接口设计工具亦可。 x* g8 {& M+ Y) L
2 B2 {( J. n) M/ @8 d图四:输入流程例子9 ]. f" X/ r b. p7 G& D
挂接程序
. e, G' |! d$ Y7 ?; K! oScript 可连系到每一个被执行的指令,这些小script 名为挂接程序。它们可被特殊指令激活
! Y; b9 I0 H9 R3 v7 Z& T/ \(好像:打开料号、加图盘或储存料号等) ,这些挂接程序可改变指令的行为。例如我们可以
|$ q& @ `) O$ @) X1 a1 P7 r把一个要求操作员输入密码的script 挂在打开料号指令上,这就可以控制操作员在打开料号时
+ W% d6 f L; h# z& d# _/ \的权限。
, v! J" v" e3 t0 l6 @3 Y4 \另举一例:一个跑网络检查的小script 可以挂接在储存料号指令上,这便可保障该料号在储存
- y7 m, h' O, ~2 j4 c6 Y! q7 b9 A7 w, R前网络是正确的。如果网络出现偏差,系统会拒绝储存指令,要求操作员去检查网络。* }! K" g8 E$ g. e5 t
总结: ~* I3 ~; m- g1 k
很多PCB制造商已经成功的完成了绝大部份CAM制程的自动化。每一天,他们还是继续投
# s0 a# _9 ], X; X5 U3 W& {资在自动化上。在程序人员的培训和自动化维护的投资,都已回报在显著增加的生产量,继4 w4 V' I8 ?. ?6 ^4 \4 t- l
而引发出更好、更快、更精确的CAM制程和产品。 2 S3 `) o4 m d& f! \ d u4 D& g
|