国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Perl語言的網(wǎng)絡(luò)編程在CAM中應(yīng)用

2014-05-31 02:52:06賴紅根何正興洪柏青王東生
印制電路信息 2014年6期
關(guān)鍵詞:服務(wù)程序服務(wù)端編程

賴紅根 何正興 洪柏青 王東生

(東莞美維電路有限公司,廣東 東莞 523128)

Perl語言的網(wǎng)絡(luò)編程在CAM中應(yīng)用

賴紅根 何正興 洪柏青 王東生

(東莞美維電路有限公司,廣東 東莞 523128)

文章主要介紹如何利用Perl語言的網(wǎng)絡(luò)編程,開發(fā)出能夠替代印制板CAM制程中AOI資料傳送和照相底版光繪申請這兩項(xiàng)日常工作的程序,以達(dá)到提高工作效率,降低工具發(fā)放出錯(cuò)率的目的。

網(wǎng)絡(luò)編程;Perl/TK語言;自動(dòng)光學(xué)檢測自動(dòng)傳輸;照相底版自動(dòng)光繪

1 現(xiàn)狀分析

眾所周知,在PCB廠中,CAM制程至關(guān)重要。它肩負(fù)著各類工具的制作和發(fā)放。如何提高工具的合格率和如何能夠快速,準(zhǔn)確的把生產(chǎn)所需的各類工具發(fā)放出去,是我們追求的目標(biāo)。本文重點(diǎn)討論在工具發(fā)放當(dāng)中存在問題,并就如何利用Perl語言的網(wǎng)絡(luò)編程,開發(fā)程序進(jìn)行改善做詳細(xì)論述。

1.1 AOI資料傳送

目前我廠AOI資料的需求。如圖1所示。

圖1 AOI資料的需求

AOI資料申請?jiān)敿?xì)流程:各工序電話申請CAM手工登記→CAM把資料手動(dòng)OUTPUT到指定共享目錄→申請者登錄共享目錄確認(rèn)資料是否輸出→申請者把資料導(dǎo)入Genesis2000系統(tǒng)

1.2 照相底版申請

目前我廠照相底版資料的需求。如圖2所示。

圖2 照相底版的需求

照相底版資料申請?jiān)敿?xì)流程:各工序出申請單給照相底版房→照相底版房根據(jù)申請單電話報(bào)給CAM小組CAM手動(dòng)登記到登記本上→CAM根據(jù)記錄逐一光繪→光繪完成,照相底版房拍留底,確認(rèn)OK,發(fā)放給相關(guān)工序。

2 存在問題分析

(1)在電話申請過程中,由于每個(gè)人的口音不一,容易聽錯(cuò),報(bào)錯(cuò),CAM在登記過程中字跡潦草也容易看錯(cuò),導(dǎo)致資料傳錯(cuò)或菲林光繪錯(cuò)誤,造成成本浪費(fèi)。

(2)CAM小組必須24小時(shí)有人值班接電話,來應(yīng)付這兩項(xiàng)需求,浪費(fèi)人力。

(3)由于資料需求較多,電話數(shù)量很多,往往讓人手忙腳亂。經(jīng)常是其他事做一半,又要接電話,容易導(dǎo)致分心,造成手頭工作做錯(cuò),也容易導(dǎo)致資料漏傳的情況。

(4)電話一多,聲音就吵,容易打擾到其他同事,很難有一個(gè)安靜的工作環(huán)境。

3 改善方案

針對上述問題,最核心的問題就是因?yàn)殡娫挏贤ㄋ斐?。為此,改變溝通方式,成為改善這些問題的突破口。通過比較,發(fā)現(xiàn)利用Perl的Socket模塊編寫服務(wù)端和客戶端程序,完全可以替代上述作業(yè)流程,并可避免上述問題。通俗的講就是在CAM工作站運(yùn)行服務(wù)端的程序,時(shí)刻準(zhǔn)備接受各個(gè)客戶端(各個(gè)生產(chǎn)工序)的數(shù)據(jù)請求,服務(wù)端根據(jù)接收到各種數(shù)據(jù)請求,觸發(fā)相關(guān)的程序,執(zhí)行不同的任務(wù),并把執(zhí)行結(jié)果反饋個(gè)相應(yīng)的客戶端。整個(gè)過程無需CAM人員參與,完全由程序自動(dòng)完成整個(gè)過程。

4 網(wǎng)絡(luò)編程實(shí)施

4.1 網(wǎng)絡(luò)編程說明

在目前的模式下,相互通信的網(wǎng)絡(luò)程序中,一方稱為客戶程序(Client),另一方稱為服務(wù)程序(Server),大多數(shù)操作系統(tǒng)都提供了編譯好的網(wǎng)絡(luò)程序,而應(yīng)用Socket編程接口可以編寫自己的網(wǎng)絡(luò)通信程序。通訊程序分為服務(wù)程序與客戶程序,他們的區(qū)別在于,服務(wù)程序總是被動(dòng)的等待連接,服務(wù)程序一啟動(dòng),初始化完畢就進(jìn)入等待連接狀態(tài);而客戶程序啟動(dòng)后,向遠(yuǎn)程服務(wù)程序發(fā)出連接請求,服務(wù)程序收到請求后,按照一定的規(guī)則建立連接,連接完成后,兩個(gè)程序就之間就建立了一個(gè)虛擬的數(shù)據(jù)通訊鏈路,這些程序可以直接從自己打開的套接口讀入和寫出數(shù)據(jù),而不用關(guān)心實(shí)際的數(shù)據(jù)鏈路。下來將介紹兩種基本編程模式:客戶程序和服務(wù)程序的編寫。

客戶程序編寫的基本方法。步驟:創(chuàng)建套接口→與遠(yuǎn)程服務(wù)程序連接→讀/寫數(shù)據(jù)→終止連接。創(chuàng)建套接口用socket函數(shù),與遠(yuǎn)程服務(wù)程序連接使用connect函數(shù)。Connect函數(shù)調(diào)用成功后,套接口描述字就與遠(yuǎn)程服務(wù)程序建立好了連接,可以開始讀/寫了。讀/寫數(shù)據(jù)使用read和write函數(shù)。讀寫完后可調(diào)用函數(shù)close關(guān)閉套接口,參數(shù)為套接口描述字。

服務(wù)程序編寫的基本方法。步驟:創(chuàng)建套接口→綁定套接口→設(shè)置套接口為監(jiān)聽模式,進(jìn)入被動(dòng)接受連接請求狀態(tài)→接受請求,建立連接→讀/寫數(shù)據(jù)→終止連接。綁定套接口是為本程序分配一個(gè)供使用的通信端口,使用bind函數(shù)。調(diào)用函數(shù)listen后套接口進(jìn)入監(jiān)聽狀態(tài),再調(diào)用accept函數(shù)接受連接請求,如果沒有連接請求,accept函數(shù)將使程序進(jìn)入睡眠狀態(tài),直到被遠(yuǎn)程客戶程序的請求所喚醒。連接一旦建立讀/寫與客戶程序相同。服務(wù)程序一般在設(shè)置為監(jiān)聽模式后處于不斷的接受請求、處理請求的循環(huán)中。

4.2 項(xiàng)目一:AOI資料自動(dòng)化輸出具體的實(shí)施過程

4.2.1 編程中的問題

(1)服務(wù)端在同一時(shí)間內(nèi)只能處理一個(gè)任務(wù),可現(xiàn)實(shí)情況并不是這樣。各個(gè)工序有可能在同一時(shí)間內(nèi)對服務(wù)端發(fā)出請求任務(wù),這樣服務(wù)端就可能滿足不了需求。因此我們引入多進(jìn)程方案,即服務(wù)端可在同一時(shí)間內(nèi)可以同時(shí)處理多個(gè)不同的任務(wù),且互不影響。Perl語言通過fork()函數(shù)可以實(shí)現(xiàn)派生多個(gè)子進(jìn)程,并可以定義相關(guān)的子程序?qū)ψ舆M(jìn)程執(zhí)行結(jié)束后的信號(hào)進(jìn)行回收處理。

(2)資料在輸出過程中,如何保證輸出的資料是完全正確且是最新的?我們是先從后臺(tái)Genesis2000 JOB庫的目錄中查找,是否存在匹配的JOB,如果存在就用tar命令直接從后臺(tái)壓縮打包到指定公共目錄,如果不存在,就轉(zhuǎn)到Genesis2000 JOB的各個(gè)備份盤查找,并直接復(fù)制備份的壓縮檔到指定公共目錄。所以在輸出過程中,無須開啟Genesis2000系統(tǒng)。

(3)客戶端如何查詢各個(gè)料號(hào)的型號(hào)名和版本號(hào)?客戶端在開始運(yùn)行前,首先向服務(wù)端發(fā)送一個(gè)指令,服務(wù)端接收指令并在Genesis2000 JOB 庫和各個(gè)備份盤中把所有的JOB生成一個(gè)Job 列表數(shù)據(jù)庫發(fā)送給客戶端??蛻舳私邮胀闖OB LIST 數(shù)據(jù)庫后就可以進(jìn)行JOB查詢和資料下載。

(4)由于客戶端下載資料頻繁,容易造成公共目錄硬盤空間不夠。通過對服務(wù)端每次執(zhí)行資料輸出過程中,派發(fā)生成另外一個(gè)子進(jìn)程,去專門對該目錄下的所有資料進(jìn)行搜索,如果資料創(chuàng)建時(shí)間超過8個(gè)小時(shí),就將其刪除。從而避免資料過多造成空間不足的問題。

4.2.2 服務(wù)端和客戶端詳細(xì)的互動(dòng)過程

服務(wù)端啟動(dòng)進(jìn)入等待狀態(tài)→客戶端啟動(dòng),發(fā)送update job list的信號(hào)給服務(wù)端→服務(wù)端收到請求,發(fā)送job list數(shù)據(jù)庫給客戶端→客戶端接收完成,進(jìn)入查詢狀態(tài)→在客戶端查詢相應(yīng)的型號(hào)并把正確的型號(hào)名發(fā)送給服務(wù)端,此時(shí)客戶端進(jìn)入等待狀態(tài)→服務(wù)端接收信息,把資料輸出到相應(yīng)的公共目錄下,并在資料傳輸完成后在公共目錄下生成一個(gè).log文件,此時(shí)服務(wù)端動(dòng)作全部完成,再次進(jìn)入等待狀態(tài) → 客戶端在等待過程中會(huì)不停的查看匹配的.log是否存在,如果存在就馬上提示資料下載成功,并刪除.log文件,此時(shí)客戶端也完成全部動(dòng)作,再次進(jìn)入查詢狀態(tài)。

4.2.3 服務(wù)端和客戶端的工作界面

由于服務(wù)端程序是在系統(tǒng)后臺(tái)運(yùn)行,所以無須設(shè)計(jì)界面,程序啟動(dòng)后就進(jìn)入后臺(tái)運(yùn)行,只要保證系統(tǒng)不關(guān)機(jī)和網(wǎng)絡(luò)暢通即可。

4.3 項(xiàng)目二:照相底版申請與自動(dòng)光繪的具體實(shí)施過程

4.3.1 照相底版申請自動(dòng)化實(shí)現(xiàn)過程

照相房運(yùn)行照相底版申請程序,將需要的照相底版發(fā)送到CAM主機(jī),CAM主機(jī)接收到申請后,首先檢測JOB是否在GENESIS Database存在, 如不存在就從備份庫中導(dǎo)入JOB資料到GENESIS Database, 然后打開JOB分析資料的類型,調(diào)用光繪程序?qū)⒄障嗟装婀饫L出去,最后寫如LOG文件。

照相底版申請與光繪流程見圖3。

照相底版申請系統(tǒng)界面簡潔直觀,操作簡單明了。照相房通過這個(gè)界面將要光繪的照相底版類型和要求準(zhǔn)確無誤快速地傳遞到CAM主機(jī)。

4.3.2 CAM主機(jī)接收及處理

圖3 照相底版申請與光繪流程

(1)接收來自照相房主機(jī)的申請。此窗口處于頂端。一旦接收到照相房發(fā)過來信息就會(huì)顯示收到的詳細(xì)資料,并處于待光繪狀態(tài)。

(2)從備份庫導(dǎo)入資料。檢查JOB在GENESIS Database是否存在,如不存在調(diào)用Import Job程序,從庫文件搜索JOB,如找到對應(yīng)的JOB名,就自動(dòng)將資料Import到GENESIS Database。

(3)分析JOB的類型。打開JOB,檢測板邊標(biāo)記和鉆帶,判定普通板、HDI板、減成法板等,讀取經(jīng)緯文件,將伸縮系數(shù)相同的層,生成一個(gè)待光繪的文件。

(4)調(diào)用光繪程序。讀取待光繪的文件,計(jì)算伸縮系數(shù),根據(jù)板的類型來區(qū)分菲林的藥膜面、正負(fù)片等。

(5)寫入LOG文件。寫入已光繪日志文件,作為追溯用,方便日后查詢和統(tǒng)計(jì)。

4 總結(jié)

通過以上兩個(gè)項(xiàng)目的運(yùn)用,可以看出,Perl的網(wǎng)絡(luò)編程在CAM工作中具有重要的作用和價(jià)值,有著廣闊的使用前景和開發(fā)空間。也為我們開發(fā)Genesis2000系統(tǒng)自動(dòng)化程序開辟了一條嶄新的途徑。上述兩個(gè)項(xiàng)目的運(yùn)行,對降低溝通的成本,減少錯(cuò)誤發(fā)生機(jī)率,和提高CAM的工作效率方面效果顯著,為公司節(jié)省了大量的人工和物料成本。

[1]Sriram Srinivasan著, Perlisb譯. 高級Perl編程[美].中國電力出版社, 2001,2.

[2]Eric C.Herrmann著. 丘仲潘等譯. Perl5從入門到精通[美]. 電子工業(yè)出版社, 1999,10.

何正興,高級工程師,10多年的PCB從業(yè)經(jīng)驗(yàn),主要從事CAM工作,精通Genesis2000, 及使用C-Shell 和 Perl 語言開發(fā)自動(dòng)化腳本。

洪柏青,高級工程師,工作職責(zé)是Linux系統(tǒng)維護(hù)和Genesis2000系統(tǒng)管理及程序開發(fā),精通Genesis2000,及使用C-Shell 和 Perl語言開發(fā)自動(dòng)化腳本。

王東生,工程師,10多年的PCB從業(yè)經(jīng)驗(yàn),主要從事CAM工作,精通Genesis2000, 及使用C-Shell 語言開發(fā)自動(dòng)化腳本。

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">文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):

1009-0096(2014)06-0042-03

賴紅根,主任工程師,主要從事工程技術(shù)管理工作,cam標(biāo)準(zhǔn)的制定,實(shí)施和品質(zhì)控制。精通Genesis2000和系統(tǒng)管理。

猜你喜歡
服務(wù)程序服務(wù)端編程
基于移動(dòng)終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計(jì)
基于移動(dòng)終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計(jì)
編程,是一種態(tài)度
元征X-431實(shí)測:奔馳發(fā)動(dòng)機(jī)編程
編程小能手
基于C#的進(jìn)程守護(hù)程序的設(shè)計(jì)
視聽(2020年3期)2020-06-11 14:28:18
紡織機(jī)上誕生的編程
云存儲(chǔ)中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
新時(shí)期《移動(dòng)Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
在Windows Server 2008上創(chuàng)建應(yīng)用
麻城市| 兰西县| 德阳市| 会东县| 长泰县| 台中县| 丰顺县| 辛集市| 天门市| 通渭县| 南宫市| 宝山区| 伽师县| 鄂托克前旗| 南华县| 临泽县| 巴塘县| 新乐市| 海晏县| 凤冈县| 太湖县| 乌鲁木齐市| 景泰县| 名山县| 晋江市| 平安县| 公安县| 庄河市| 望谟县| 东山县| 平塘县| 定南县| 延川县| 嘉兴市| 汶川县| 堆龙德庆县| 缙云县| 宁安市| 饶河县| 文登市| 集贤县|