何 斌,王 鋒,張粵東,張永俊,黃志剛
(廣東工業(yè)大學(xué)機電工程學(xué)院,廣州市非傳統(tǒng)制造技術(shù)及裝備重點實驗室,廣東廣州 510006)
嵌入式系統(tǒng)適用于高精密數(shù)控系統(tǒng)的軟件運行環(huán)境,其驅(qū)動、控制、顯示一體的集成化系統(tǒng)是未來的發(fā)展方向。WinCE是常見的嵌入式系統(tǒng),擁有可定制性強、體積小、穩(wěn)定性好、實時性好等優(yōu)點,在工業(yè)控制方面應(yīng)用廣泛[1]。但是嵌入式系統(tǒng)本身的特點使其處理器性能和存儲內(nèi)存有限,對于大量數(shù)據(jù)計算而言存在局限性。C/S(客戶端/服務(wù)器)架構(gòu)是指基于服務(wù)器和客戶端的概念,利用一個服務(wù)器對多個用戶的客戶端軟件進行管理的架構(gòu)模式?;贑/S架構(gòu),將WinCE系統(tǒng)作為客戶端軟件的運行環(huán)境,能滿足高端數(shù)控系統(tǒng)的要求;將Linux系統(tǒng)作為服務(wù)器操作系統(tǒng),雖然其界面不友好,但該系統(tǒng)作為以內(nèi)核為核心的系統(tǒng),有助于發(fā)揮服務(wù)器的計算和數(shù)據(jù)管理能力。利用C/S架構(gòu)能有效地結(jié)合上述兩個系統(tǒng)的優(yōu)點。
目前國內(nèi)針對電火花線切割系統(tǒng)的研究大多數(shù)基于單機運行。陳浩[2]基于Linux系統(tǒng)對電火花線切割系統(tǒng)做了研究,開發(fā)了圖形、參數(shù)處理、插補計算一體化的電火花線切割集成軟件;沈桂旭[3]利用開源LibreCAD開發(fā)了CAM功能,并提出適用于處理大數(shù)據(jù)量實體搜索的記憶搜索算法,提高了DXF文件排序效率,實現(xiàn)了基于Linux系統(tǒng)的電火花線切割CAD/CAM軟件開發(fā);肖凱[4]開發(fā)了基于安卓系統(tǒng)的線切割系統(tǒng),實現(xiàn)了基于手勢的繪圖方式,其繪圖方式相比于傳統(tǒng)的線切割系統(tǒng)擁有更好的交互體驗。
上述基于嵌入式電火花線切割系統(tǒng)的研究取得了不錯的成果,能滿足當(dāng)前市場對電火花線切割系統(tǒng)的需求。但隨著AI技術(shù)的發(fā)展,研究者發(fā)現(xiàn)AI理論的預(yù)測性可改善電加工過程的不確定性,從而衍生出相關(guān)的自適應(yīng)控制、專家系統(tǒng)、神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)、機器學(xué)習(xí)等應(yīng)用研究。美國DPTechnology公司[5]基于嵌入式技術(shù)開發(fā)的ESPRIT軟件,利用專家系統(tǒng)、人工神經(jīng)網(wǎng)絡(luò)模型等對電火花線切割加工過程建立輸入、輸出關(guān)系,提高運動控制精度;Sanchez等[6]搭建深度學(xué)習(xí)框架,對工件厚度的變化實時檢測,實現(xiàn)變厚度加工過程中的參數(shù)調(diào)整,提高了變厚度零件加工的精度;Devarasiddappa等[7]提出了PBMOO-TLBO方法,加快了深度學(xué)習(xí)訓(xùn)練模型的收斂速度,有助于預(yù)測最佳加工工藝參數(shù)。AI理論在電火花線切割加工上的應(yīng)用能在一定程度提高加工精度,但在其工藝參數(shù)預(yù)測的過程中需通過大量模型訓(xùn)練運算,以單機模式運行的嵌入式電火花線切割系統(tǒng)難以同時適應(yīng)實際加工實時性和高性能計算需求。
基于以上觀點,本文采用C/S架構(gòu)構(gòu)建了嵌入式電火花線切割系統(tǒng),解決了可同時滿足實時性、高性能計算需求的硬件的高成本問題。在設(shè)計時,本文以服務(wù)器為核心,利用了分層管理的思想,采用一個服務(wù)器對多個客戶端的模型,分別利用WinCE系統(tǒng)和Linux系統(tǒng)的優(yōu)點,對電火花線切割系統(tǒng)進行整體設(shè)計,將客戶端用于實現(xiàn)電火花線切割加工的實時性控制,將服務(wù)器用于高并發(fā)性的邏輯處理,實現(xiàn)加工工藝參數(shù)回傳,同時可根據(jù)需求進行功能擴展,展現(xiàn)了C/S架構(gòu)良好的層次性及系統(tǒng)的可擴展性[8],有利于充分發(fā)掘加工工藝數(shù)據(jù)的價值,符合當(dāng)前線切割技術(shù)的發(fā)展趨勢。
Linux系統(tǒng)的界面交互性相對較差,不適用于新手,但該系統(tǒng)作為服務(wù)器擁有良好的生態(tài)環(huán)境。將Linux系統(tǒng)作為服務(wù)器具有以下優(yōu)點:
(1)支持性:當(dāng)前深度學(xué)習(xí)、機器學(xué)習(xí)框架以及相關(guān)工具軟件對Linux系統(tǒng)的支持性較好,有助于快速搭建環(huán)境。
(2)穩(wěn)定性:Linux系統(tǒng)相對于Windows系統(tǒng)的體積小、整體更輕便、運行速度和穩(wěn)定性更高。
(3)開源性:Linux系統(tǒng)完全開放源代碼,可根據(jù)開發(fā)者需求,實現(xiàn)開發(fā)者自主開發(fā)和功能定制。
服務(wù)器是運行在Linux系統(tǒng)上的后臺處理程序,可根據(jù)客戶端的請求選擇相應(yīng)的邏輯進行處理,其主要的特點是高并發(fā)性、時效性,對于多個客戶端的請求信息能夠有效、快速地處理。服務(wù)器的主要邏輯見圖1。
服務(wù)器通過主線程實現(xiàn)對多個客戶端的監(jiān)聽,主要實現(xiàn)定時器、數(shù)據(jù)庫訪問、邏輯解析、日志輸出四大功能。定時器功能主要用于計時,其作用有兩個:一是每隔一定時間啟動深度學(xué)習(xí)、機器學(xué)習(xí)的參數(shù)計算之類的框架并重置計時,實現(xiàn)訓(xùn)練模型數(shù)據(jù)更新;二是將當(dāng)前連接的客戶端按照操作時間以鏈表形式排列,當(dāng)連接較多、服務(wù)器負載較大時,先清理最長時間未操作的客戶端,降低服務(wù)器的負載。數(shù)據(jù)庫訪問功能主要用于訪問數(shù)據(jù)庫,包括訪問個人用戶信息和加工參數(shù)的添加、刪除、查找、修改等操作。邏輯解析功能是根據(jù)客戶端的請求,針對當(dāng)前客戶端的請求內(nèi)容分配相應(yīng)的線程,執(zhí)行對客戶端的響應(yīng)。日志輸出功能主要針對服務(wù)器運行過程或程序調(diào)試過程中出現(xiàn)的錯誤或當(dāng)前的運行狀態(tài),快速定位當(dāng)前的運行狀態(tài)或錯誤。
并發(fā)性是服務(wù)器在穩(wěn)定狀態(tài)下容納客戶端訪問數(shù)量的指標。提高并發(fā)性對于提高服務(wù)器穩(wěn)定性具有必要性。
客戶端通常在大多數(shù)時間處于加工運行狀態(tài),在CAM處理時才會對服務(wù)器進行數(shù)據(jù)請求。根據(jù)客戶端這一特性,選擇合適的并發(fā)處理模型對于系統(tǒng)的穩(wěn)定性至關(guān)重要。Epoll+線程池模式是常見的高并發(fā)處理模型,結(jié)合了Epoll的I(輸入)/O(輸出)復(fù)用和線程池的“以需定求”特性,可提高程序的并發(fā)性[9]。客戶端通過主線程實現(xiàn)監(jiān)聽,利用Epoll的事件驅(qū)動特性,當(dāng)某個電火花線切割客戶端有請求信息時,通過事件方式告知主線程,主線程將其控制權(quán)交由線程池,線程池通過邏輯解析分發(fā)到已創(chuàng)建的線程進行處理。服務(wù)器采用高效的半同步半反應(yīng)堆并發(fā)模型,其邏輯見圖2。
圖2 并發(fā)模型圖
在該并發(fā)模型下,主線程采用異步線程,只負責(zé)監(jiān)聽是否有客戶端連接。當(dāng)有新的連接時,主線程將管理權(quán)交給工作線程,由工作線程實現(xiàn)數(shù)據(jù)的傳輸和回傳,同時將Socket注冊到內(nèi)核,實現(xiàn)工作線程的多客戶端連接,這樣子線程可處理多個電火花線切割機床客戶端的請求信息。
定時器一主要用來對深度學(xué)習(xí)、機器學(xué)習(xí)等訓(xùn)練模型數(shù)據(jù)的更新計時,對每臺客戶端機床使用號碼進行標記。采用循環(huán)隊列將客戶端機床的標記號加入隊列中,定時器指針每隔一定時間指向循環(huán)隊列的下一個位置;每當(dāng)定時器指針切換指向位置時,根據(jù)當(dāng)前標記號啟動相應(yīng)機床號對應(yīng)的深度學(xué)習(xí)、機器學(xué)習(xí)等訓(xùn)練模型,這樣可以依次實現(xiàn)針對客戶端訓(xùn)練模型的數(shù)據(jù)定時更新。使用這種方式,可使服務(wù)器在低負載的情況下實現(xiàn)穩(wěn)定運行,避免多個模型同時訓(xùn)練帶來的高負載、服務(wù)器不穩(wěn)定的情況,同時降低了對服務(wù)器硬件性能的要求。定時器一的處理模式見圖3。
圖3 定時器一功能圖
定時器二主要用于定時清理一些長時間處于連接狀態(tài)但不進行數(shù)據(jù)請求的客戶端,以減輕服務(wù)器負載。采用編號形式對客戶端進行標記,利用鏈表將所有客戶端的標記號進行鏈接,每當(dāng)服務(wù)器收到某個客戶端的信息時,就將機床標記號從當(dāng)前位置刪除并鏈接到鏈表的頭部,實現(xiàn)前后位置的標記號鏈接,使處于鏈表尾部客戶端標記號對應(yīng)最長時間未進行操作的機床,當(dāng)服務(wù)器負載較大時,就對其進行及時清理,以便于減輕服務(wù)器負載。定時器二的邏輯示意見圖4。
圖4 定時器二功能圖
數(shù)據(jù)庫是整個系統(tǒng)的核心。選擇合適的數(shù)據(jù)庫連接方式對提高服務(wù)器的響應(yīng)性能和穩(wěn)定性至關(guān)重要。
電火花線切割客戶端經(jīng)常會進行上傳、查找數(shù)據(jù)以及利用服務(wù)器實現(xiàn)加工工藝預(yù)測等操作。數(shù)據(jù)庫頻繁地建立和釋放連接,會增加服務(wù)器資源的占用,因此通過建立數(shù)據(jù)庫連接池,對數(shù)據(jù)庫的連接和釋放進行管理,重復(fù)使用已建立的數(shù)據(jù)庫連接、解決頻繁建立連接的缺點,從而提高系統(tǒng)性能[10]。當(dāng)連接池中已有當(dāng)前請求連接,數(shù)據(jù)庫直接將其分配給連接線程使用;當(dāng)連接池中無連接,則新建連接給連接線程使用。相關(guān)邏輯見圖5。
圖5 數(shù)據(jù)庫連接池邏輯圖
客戶端與服務(wù)器端的通信要求其流量小、實時性高,同時要求其長時間運行穩(wěn)定。
客戶端和服務(wù)器端采用TCP/IP網(wǎng)絡(luò)傳輸協(xié)議實現(xiàn)雙向通信。TCP協(xié)議是可靠的傳輸協(xié)議,具有數(shù)據(jù)錯誤校正、負載小等特點[11]。在網(wǎng)絡(luò)傳輸過程中,數(shù)據(jù)包決定傳輸流量,對傳輸效率產(chǎn)生直接影響。Json是輕量級的文本數(shù)據(jù)交換格式,采用壓縮格式同時易于讀寫。將工藝數(shù)據(jù)包通過Json進行壓縮后傳輸,其傳輸流量小,使數(shù)據(jù)傳輸過程高效。
客戶端的本質(zhì)是WinCE系統(tǒng)上可獨立運行的電火花線切割系統(tǒng),其設(shè)計除了需考慮線切割的功能完善,同時還需考慮用戶的體驗。將WinCE系統(tǒng)作為客戶端的運行環(huán)境有以下優(yōu)點:
(1)實時性:實時性是對規(guī)定時間內(nèi)操作系統(tǒng)反應(yīng)能力的評價指標,與系統(tǒng)本身的處理機制有關(guān)。提高系統(tǒng)的實時性,有助于提高運動控制系統(tǒng)的定位、運動精度。WinCE系統(tǒng)是基于任務(wù)優(yōu)先級的處理方式,是實時性操作系統(tǒng),利用嵌套式的中斷方式使操作系統(tǒng)優(yōu)先運行當(dāng)前執(zhí)行的命令。
(2)可定制性:WinCE系統(tǒng)可根據(jù)開發(fā)者需求定制最小系統(tǒng)。以最小的系統(tǒng)運行有助于減少硬件資源占用、提高系統(tǒng)運行的穩(wěn)定性。
(3)友好交互性:WinCE系統(tǒng)支持GDI、GDI+、Opengl ES等多種圖形庫,為用戶提供友好的圖形體驗;同時支持觸摸屏和鼠標,為用戶提供多種界面操作方式,方便用戶快速上手。
CAD部分主要用于繪制電火花線切割加工零件的外形輪廓,以及進行編輯、修改等操作,是進行零件外形建模的首要手段,其設(shè)計方案直接影響用戶體驗和整體的程序代碼量。
提高代碼的利用率是降低程序整體代碼量的主要手段。對于電火花線切割加工而言,通常以一條軌跡表示平面加工、以兩條軌跡表示錐度加工,其基本圖元主要是點、直線、圓弧。圖元如是不規(guī)則曲線,則以圓弧進行擬合。利用C++語言的繼承特性,將圖元類的設(shè)計抽象化,利用子類繼承父類,從而使子類在不額外擴展的基礎(chǔ)上就可使用父類的特性。
設(shè)計圖元繪制的實體類,是將圖元的標注、捕捉信息、代碼輸出等信息進行聲明并定義。設(shè)計點類、直線類、圓弧類等繼承實體繪圖類,則所有的圖元都可利用實體類的變量實現(xiàn)標注、捕捉等功能。子類對父類進行補充,可實現(xiàn)對父類功能的擴展,這樣可實現(xiàn)最大程度的代碼復(fù)用。類的設(shè)計如圖6所示,箭頭的指向代表類的繼承關(guān)系。
圖6 CAD繪圖類結(jié)構(gòu)圖
CAM是實現(xiàn)電火花線切割自動編程的關(guān)鍵,其數(shù)據(jù)處理方式將會對加工的精度、效率產(chǎn)生直接的影響。
CAM主要對CAD繪制的圖元數(shù)據(jù)進行加工前的預(yù)處理,以便能更好地應(yīng)用于加工過程。按照功能,CAM分為軌跡存取、軌跡偏移、軌跡排序、軌跡仿真、代碼輸出等幾個方面,用于處理和生成電極絲的加工路徑信息。同時,客戶端不斷監(jiān)聽服務(wù)器的回傳信息,將接收的信息通過邏輯解析應(yīng)用于CAM功能的參數(shù)設(shè)置,有助于選擇最合適的零件加工參數(shù),從而提高零件的加工精度。CAM的主要功能見圖7。
圖7 CAM功能模塊圖
WinCE系統(tǒng)的線程分為界面線程和工作線程。二者的主要區(qū)別在于:界面線程有自己的消息循環(huán)機制,而工作線程沒有。客戶端接收多條服務(wù)器信息,這些信息大多數(shù)為加工參數(shù)信息且數(shù)量不會很多,采用多線程編程即可提高其響應(yīng)速度同時滿足性能要求。只要客戶端處于連接狀態(tài),就一直監(jiān)聽是否有服務(wù)器回傳信息,如果接收的信息需對界面操作,則需創(chuàng)建界面線程,否則會阻塞當(dāng)前程序的運行;如果與界面無關(guān),則使用工作線程進行相應(yīng)的邏輯處理。相關(guān)邏輯見圖8。
圖8 客戶端邏輯處理
客戶端發(fā)送數(shù)據(jù)包的大小是網(wǎng)絡(luò)傳輸流量大小的決定因素。采用分層解析的方式對客戶端數(shù)據(jù)進行設(shè)計,上一層是下一層的抽象描述,這樣有助于不用標記參數(shù)名就可對發(fā)送的參數(shù)打包,其主要分層信息見圖9。
圖9 數(shù)據(jù)包內(nèi)容圖
按照一組數(shù)組的順序定義對收發(fā)數(shù)據(jù)包的內(nèi)容進行定義,且數(shù)組的每一位用于標記傳輸?shù)臄?shù)據(jù)內(nèi)容。在客戶端和服務(wù)器使用相同的定義方式,這樣在發(fā)送數(shù)據(jù)時無需標記每個數(shù)據(jù)是表示什么內(nèi)容,減少了數(shù)據(jù)標記的內(nèi)存占用,有助于提高數(shù)據(jù)傳輸效率。相關(guān)的表示方法見圖10。
圖10 數(shù)據(jù)包定義圖
本文分析了電火花線切割系統(tǒng)的發(fā)展趨勢,并利用C/S架構(gòu)設(shè)計了適用于智能制造的嵌入式電火花線切割系統(tǒng),分別從不同角度分析了WinCE系統(tǒng)和Linux系統(tǒng)分別作為客戶端和服務(wù)器端的優(yōu)越性,并從功能和性能方面對其進行了分析與設(shè)計。研究認為,采用C/S架構(gòu)模式有助于降低整體系統(tǒng)的硬件成本,對于集成化制造、制造工廠的管理模式具有一定的借鑒意義。