Perl语言的网络编程在CAM中应用

2014-05-31 02:52:06赖红根何正兴洪柏青王东生
印制电路信息 2014年6期
关键词:服务程序服务端编程

赖红根 何正兴 洪柏青 王东生

(东莞美维电路有限公司,广东 东莞 523128)

Perl语言的网络编程在CAM中应用

赖红根 何正兴 洪柏青 王东生

(东莞美维电路有限公司,广东 东莞 523128)

文章主要介绍如何利用Perl语言的网络编程,开发出能够替代印制板CAM制程中AOI资料传送和照相底版光绘申请这两项日常工作的程序,以达到提高工作效率,降低工具发放出错率的目的。

网络编程;Perl/TK语言;自动光学检测自动传输;照相底版自动光绘

1 现状分析

众所周知,在PCB厂中,CAM制程至关重要。它肩负着各类工具的制作和发放。如何提高工具的合格率和如何能够快速,准确的把生产所需的各类工具发放出去,是我们追求的目标。本文重点讨论在工具发放当中存在问题,并就如何利用Perl语言的网络编程,开发程序进行改善做详细论述。

1.1 AOI资料传送

目前我厂AOI资料的需求。如图1所示。

图1 AOI资料的需求

AOI资料申请详细流程:各工序电话申请CAM手工登记→CAM把资料手动OUTPUT到指定共享目录→申请者登录共享目录确认资料是否输出→申请者把资料导入Genesis2000系统

1.2 照相底版申请

目前我厂照相底版资料的需求。如图2所示。

图2 照相底版的需求

照相底版资料申请详细流程:各工序出申请单给照相底版房→照相底版房根据申请单电话报给CAM小组CAM手动登记到登记本上→CAM根据记录逐一光绘→光绘完成,照相底版房拍留底,确认OK,发放给相关工序。

2 存在问题分析

(1)在电话申请过程中,由于每个人的口音不一,容易听错,报错,CAM在登记过程中字迹潦草也容易看错,导致资料传错或菲林光绘错误,造成成本浪费。

(2)CAM小组必须24小时有人值班接电话,来应付这两项需求,浪费人力。

(3)由于资料需求较多,电话数量很多,往往让人手忙脚乱。经常是其他事做一半,又要接电话,容易导致分心,造成手头工作做错,也容易导致资料漏传的情况。

(4)电话一多,声音就吵,容易打扰到其他同事,很难有一个安静的工作环境。

3 改善方案

针对上述问题,最核心的问题就是因为电话沟通所造成。为此,改变沟通方式,成为改善这些问题的突破口。通过比较,发现利用Perl的Socket模块编写服务端和客户端程序,完全可以替代上述作业流程,并可避免上述问题。通俗的讲就是在CAM工作站运行服务端的程序,时刻准备接受各个客户端(各个生产工序)的数据请求,服务端根据接收到各种数据请求,触发相关的程序,执行不同的任务,并把执行结果反馈个相应的客户端。整个过程无需CAM人员参与,完全由程序自动完成整个过程。

4 网络编程实施

4.1 网络编程说明

在目前的模式下,相互通信的网络程序中,一方称为客户程序(Client),另一方称为服务程序(Server),大多数操作系统都提供了编译好的网络程序,而应用Socket编程接口可以编写自己的网络通信程序。通讯程序分为服务程序与客户程序,他们的区别在于,服务程序总是被动的等待连接,服务程序一启动,初始化完毕就进入等待连接状态;而客户程序启动后,向远程服务程序发出连接请求,服务程序收到请求后,按照一定的规则建立连接,连接完成后,两个程序就之间就建立了一个虚拟的数据通讯链路,这些程序可以直接从自己打开的套接口读入和写出数据,而不用关心实际的数据链路。下来将介绍两种基本编程模式:客户程序和服务程序的编写。

客户程序编写的基本方法。步骤:创建套接口→与远程服务程序连接→读/写数据→终止连接。创建套接口用socket函数,与远程服务程序连接使用connect函数。Connect函数调用成功后,套接口描述字就与远程服务程序建立好了连接,可以开始读/写了。读/写数据使用read和write函数。读写完后可调用函数close关闭套接口,参数为套接口描述字。

服务程序编写的基本方法。步骤:创建套接口→绑定套接口→设置套接口为监听模式,进入被动接受连接请求状态→接受请求,建立连接→读/写数据→终止连接。绑定套接口是为本程序分配一个供使用的通信端口,使用bind函数。调用函数listen后套接口进入监听状态,再调用accept函数接受连接请求,如果没有连接请求,accept函数将使程序进入睡眠状态,直到被远程客户程序的请求所唤醒。连接一旦建立读/写与客户程序相同。服务程序一般在设置为监听模式后处于不断的接受请求、处理请求的循环中。

4.2 项目一:AOI资料自动化输出具体的实施过程

4.2.1 编程中的问题

(1)服务端在同一时间内只能处理一个任务,可现实情况并不是这样。各个工序有可能在同一时间内对服务端发出请求任务,这样服务端就可能满足不了需求。因此我们引入多进程方案,即服务端可在同一时间内可以同时处理多个不同的任务,且互不影响。Perl语言通过fork()函数可以实现派生多个子进程,并可以定义相关的子程序对子进程执行结束后的信号进行回收处理。

(2)资料在输出过程中,如何保证输出的资料是完全正确且是最新的?我们是先从后台Genesis2000 JOB库的目录中查找,是否存在匹配的JOB,如果存在就用tar命令直接从后台压缩打包到指定公共目录,如果不存在,就转到Genesis2000 JOB的各个备份盘查找,并直接复制备份的压缩档到指定公共目录。所以在输出过程中,无须开启Genesis2000系统。

(3)客户端如何查询各个料号的型号名和版本号?客户端在开始运行前,首先向服务端发送一个指令,服务端接收指令并在Genesis2000 JOB 库和各个备份盘中把所有的JOB生成一个Job 列表数据库发送给客户端。客户端接收完JOB LIST 数据库后就可以进行JOB查询和资料下载。

(4)由于客户端下载资料频繁,容易造成公共目录硬盘空间不够。通过对服务端每次执行资料输出过程中,派发生成另外一个子进程,去专门对该目录下的所有资料进行搜索,如果资料创建时间超过8个小时,就将其删除。从而避免资料过多造成空间不足的问题。

4.2.2 服务端和客户端详细的互动过程

服务端启动进入等待状态→客户端启动,发送update job list的信号给服务端→服务端收到请求,发送job list数据库给客户端→客户端接收完成,进入查询状态→在客户端查询相应的型号并把正确的型号名发送给服务端,此时客户端进入等待状态→服务端接收信息,把资料输出到相应的公共目录下,并在资料传输完成后在公共目录下生成一个.log文件,此时服务端动作全部完成,再次进入等待状态 → 客户端在等待过程中会不停的查看匹配的.log是否存在,如果存在就马上提示资料下载成功,并删除.log文件,此时客户端也完成全部动作,再次进入查询状态。

4.2.3 服务端和客户端的工作界面

由于服务端程序是在系统后台运行,所以无须设计界面,程序启动后就进入后台运行,只要保证系统不关机和网络畅通即可。

4.3 项目二:照相底版申请与自动光绘的具体实施过程

4.3.1 照相底版申请自动化实现过程

照相房运行照相底版申请程序,将需要的照相底版发送到CAM主机,CAM主机接收到申请后,首先检测JOB是否在GENESIS Database存在, 如不存在就从备份库中导入JOB资料到GENESIS Database, 然后打开JOB分析资料的类型,调用光绘程序将照相底版光绘出去,最后写如LOG文件。

照相底版申请与光绘流程见图3。

照相底版申请系统界面简洁直观,操作简单明了。照相房通过这个界面将要光绘的照相底版类型和要求准确无误快速地传递到CAM主机。

4.3.2 CAM主机接收及处理

图3 照相底版申请与光绘流程

(1)接收来自照相房主机的申请。此窗口处于顶端。一旦接收到照相房发过来信息就会显示收到的详细资料,并处于待光绘状态。

(2)从备份库导入资料。检查JOB在GENESIS Database是否存在,如不存在调用Import Job程序,从库文件搜索JOB,如找到对应的JOB名,就自动将资料Import到GENESIS Database。

(3)分析JOB的类型。打开JOB,检测板边标记和钻带,判定普通板、HDI板、减成法板等,读取经纬文件,将伸缩系数相同的层,生成一个待光绘的文件。

(4)调用光绘程序。读取待光绘的文件,计算伸缩系数,根据板的类型来区分菲林的药膜面、正负片等。

(5)写入LOG文件。写入已光绘日志文件,作为追溯用,方便日后查询和统计。

4 总结

通过以上两个项目的运用,可以看出,Perl的网络编程在CAM工作中具有重要的作用和价值,有着广阔的使用前景和开发空间。也为我们开发Genesis2000系统自动化程序开辟了一条崭新的途径。上述两个项目的运行,对降低沟通的成本,减少错误发生机率,和提高CAM的工作效率方面效果显著,为公司节省了大量的人工和物料成本。

[1]Sriram Srinivasan著, Perlisb译. 高级Perl编程[美].中国电力出版社, 2001,2.

[2]Eric C.Herrmann著. 丘仲潘等译. Perl5从入门到精通[美]. 电子工业出版社, 1999,10.

何正兴,高级工程师,10多年的PCB从业经验,主要从事CAM工作,精通Genesis2000, 及使用C-Shell 和 Perl 语言开发自动化脚本。

洪柏青,高级工程师,工作职责是Linux系统维护和Genesis2000系统管理及程序开发,精通Genesis2000,及使用C-Shell 和 Perl语言开发自动化脚本。

王东生,工程师,10多年的PCB从业经验,主要从事CAM工作,精通Genesis2000, 及使用C-Shell 语言开发自动化脚本。

The perl language of net programming have application in CAM

LAI Hong-gen HE Zheng-xing HONG Bo-qing WANG Dong-sheng

This article describes how to use Perl language network programming, and to develop alternative CAM system which can pass AOI data and fi lm plotter application of these two procedures for daily work in order to achieve improved eff i ciency, lower error rate in tools for the purpose.

Net Program; Perl/TK Language; AOI Transferring; Film Plotting

TN41 < class="emphasis_bold">文献标识码:A文章编号:

1009-0096(2014)06-0042-03

赖红根,主任工程师,主要从事工程技术管理工作,cam标准的制定,实施和品质控制。精通Genesis2000和系统管理。

猜你喜欢
服务程序服务端编程
基于移动终端的人事信息员工自助服务系统设计
基于移动终端的人事信息员工自助服务系统设计
编程,是一种态度
少先队活动(2021年2期)2021-03-29 05:41:04
元征X-431实测:奔驰发动机编程
编程小能手
学生天地(2020年17期)2020-08-25 09:28:48
基于C#的进程守护程序的设计
视听(2020年3期)2020-06-11 14:28:18
纺织机上诞生的编程
云存储中基于相似性的客户-服务端双端数据去重方法
新时期《移动Web服务端开发》课程教学改革的研究
消费导刊(2018年8期)2018-05-25 13:19:48
在Windows Server 2008上创建应用