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