蘇春燕,孟祥懿,崔建輝
(1.天津中德應用技術(shù)大學 軟件與通信學院,天津 300350; 2.天津中德應用技術(shù)大學 機械工程學院,天津 300350; 3.天津市鑫聯(lián)建輝金屬制品有限公司 經(jīng)理辦公室,天津 301505)
制造業(yè)是國民經(jīng)濟的主體,信息化和工業(yè)化兩化融合將帶動制造業(yè)發(fā)展。信息物理系統(tǒng)(簡稱CPS)被視為支撐兩化融合的綜合技術(shù)體系,是一個綜合計算、網(wǎng)絡和物理環(huán)境的多維復雜系統(tǒng)。目前基于CPS的智能制造系統(tǒng)已經(jīng)成為國內(nèi)外這一領域的研究熱點[1]。而數(shù)控機床是制造過程的基本單位,是智能化、信息化制造不可或缺的一部分[2],圍繞CPS技術(shù)體系,結(jié)合我國數(shù)控機床企業(yè)的實際需求,探索研究“數(shù)控機床的遠程運行監(jiān)控和信息管理系統(tǒng)開發(fā)”變得緊迫和具有現(xiàn)實意義。目前已有不少論文涉及對數(shù)控機床基本運行數(shù)據(jù)的遠程監(jiān)控系統(tǒng),本文的技術(shù)特點有:
(1)實現(xiàn)數(shù)控機床基本運行數(shù)據(jù)遠程監(jiān)控,數(shù)據(jù)的呈現(xiàn)方式有所創(chuàng)新;
(2)研究數(shù)控企業(yè)需求,建立了符合3個范式的較合理的數(shù)據(jù)模型,對企業(yè)的基礎信息和生產(chǎn)過程信息進行了有效管理;
(3)改進實現(xiàn)數(shù)控機床批量加工“產(chǎn)品-工序”時間、數(shù)量信息的遠程實時自動記錄,文章詳細探討了其改進實現(xiàn)的算法;
(4)實現(xiàn)數(shù)控企業(yè)的基本信息和產(chǎn)品批量加工信息的綜合管理,包括數(shù)據(jù)維護、信息查詢和統(tǒng)計等。
作為科技特派員所去數(shù)控企業(yè)“天津市鑫聯(lián)建輝金屬制品有限公司”有多個數(shù)控機床車間,這些機床一般本身帶有網(wǎng)絡接口,或可通過連接外部設備添加網(wǎng)絡接口。企業(yè)管理層希望在與計算機聯(lián)網(wǎng)數(shù)控機床基礎上開發(fā)軟件系統(tǒng),實現(xiàn)在系統(tǒng)平臺遠程監(jiān)控數(shù)控機床的運行狀態(tài);查看不同型號、廠家的機床數(shù)量;且自動遠程記錄每個聯(lián)網(wǎng)機床批量加工產(chǎn)品的數(shù)量和時間,并提供相關信息的查詢和統(tǒng)計。
根據(jù)企業(yè)引入信息技術(shù)改進生產(chǎn)和管理的設想和文獻[3]中介紹的提取問題域中事物方法,確定出系統(tǒng)需處理的事物實體有:機床基本信息、機床加工產(chǎn)品記錄信息、工人信息、產(chǎn)品信息、產(chǎn)品工序信息、系統(tǒng)用戶信息、機床廠家信息、機床類型信息、機床系統(tǒng)類型信息和工人級別信息。
由文獻[4]可知目前數(shù)據(jù)計算與信息處理方面軟件有瀏覽器/服務器(B/S)和客戶端/服務器(C/S) 兩種架構(gòu),基于監(jiān)控的數(shù)控機床往往在企業(yè)內(nèi)部的車間這樣的較小范圍內(nèi),負責監(jiān)控的計算機數(shù)量比較有限,且用戶界面要求豐富和容易實現(xiàn),因此,本文系統(tǒng)采用C/S開發(fā)框架,具體使用了這一架構(gòu)中較成熟系統(tǒng)開發(fā)語言Visual C#,配合SQL Server數(shù)據(jù)庫管理系統(tǒng)開發(fā)。這種架構(gòu)只有在企業(yè)內(nèi)安裝了客戶端程序的計算機才能監(jiān)控機床運行,運行和數(shù)據(jù)的安全性較好,軟件更新時需要維護的計算機數(shù)量也有限。
結(jié)合前一節(jié)對企業(yè)生產(chǎn)的實際情況和對信息系統(tǒng)需求調(diào)研的基礎上,這里介紹的所開發(fā)系統(tǒng)包括6個功能模塊,具體有基礎數(shù)據(jù)設置、機床管理、機床運行監(jiān)控、加工產(chǎn)品信息管理、工人管理和系統(tǒng)管理。具體功能如圖1所示。其中①所標注功能只有超級用戶有權(quán)限使用,即處于可用狀態(tài),而②所標注功能只有對管理用戶處于可用狀態(tài)。其它功能對所有級別用戶均有使用權(quán)限。
圖1中“基礎數(shù)據(jù)設置”模塊允許使用的廠家根據(jù)實際情況事先定制一些基礎數(shù)據(jù),如:設置企業(yè)所有機床系統(tǒng)類型、生產(chǎn)廠家以及所有工人級別等信息,這樣在其它 功能窗口的數(shù)據(jù)輸入部分就可以將某個基礎數(shù)據(jù)的值綁定到下拉組合框中,方便操作人員選擇使用,此設計使系統(tǒng)更具靈活和開放性。
圖1 系統(tǒng)功能設計結(jié)構(gòu)
由于數(shù)控企業(yè)有多個數(shù)控機床車間,系統(tǒng)需要遠程實時采集、記錄和處理各數(shù)控機床加工信息,這就要求系統(tǒng)運行時盡量減少讀寫數(shù)據(jù)庫數(shù)據(jù)的延遲時間,因此系統(tǒng)運行平臺的設計是,在每個車間建立車間數(shù)據(jù)庫服務器,負責存儲本車間的運行數(shù)據(jù),并設置企業(yè)級系統(tǒng)數(shù)據(jù)庫主服務器,對整個企業(yè)的運行數(shù)據(jù)進行維護、查詢和統(tǒng)計。這個數(shù)據(jù)處理的需求參考文獻[5]采用數(shù)據(jù)復制和分割技術(shù)實現(xiàn),即將工人信息、產(chǎn)品信息、產(chǎn)品工序信息、機床廠家信息、機床類型信息、機床系統(tǒng)類型信息、工人級別信息這些數(shù)據(jù)表從主數(shù)據(jù)庫服務器復制到各個車間的數(shù)據(jù)庫服務器,并定期將主服務器中的這些數(shù)據(jù)表信息更新復制到各個車間數(shù)據(jù)庫服務器。將包含機床網(wǎng)址和端口號的“機床基本信息數(shù)據(jù)表”和“機床加工產(chǎn)品記錄信息數(shù)據(jù)表”中各個車間的數(shù)據(jù)記錄分割到車間數(shù)據(jù)庫服務器,定期用這兩個分割到車間數(shù)據(jù)庫服務器的數(shù)據(jù)表的數(shù)據(jù)更新主服務器中對應數(shù)據(jù)表的數(shù)據(jù)。在各個車間和企業(yè)級信息管理部門分別安裝、配置系統(tǒng)。整個平臺的網(wǎng)絡分布拓撲結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)網(wǎng)絡分布拓撲結(jié)構(gòu)
本系統(tǒng)使用SQL Server數(shù)據(jù)庫管理系統(tǒng)存儲和處理數(shù)據(jù)。建立符合1-3范式[6]、能存儲企業(yè)基礎生產(chǎn)信息和生產(chǎn)過程信息的合理數(shù)據(jù)模型是文中系統(tǒng)的一個創(chuàng)新點。系統(tǒng)設計的數(shù)據(jù)表與事物之間的對應關系是:cncInfo-機床基本信息、history-機床加工的產(chǎn)品工序記錄信息、makerInfo-工人信息、proInfo-產(chǎn)品信息、proProcedure-產(chǎn)品工序信息、userInfo-系統(tǒng)用戶信息、CNCFactory-機床廠家信息、machineModel-機床型號信息、operateType-機床系統(tǒng)類型信息、popeModel-工人級別信息。
根據(jù)文獻[7]引用完整性設置方式,系統(tǒng)通過外鍵建立各個表之間的關系,并且設置關系表的“級聯(lián)”更新和“設置Null”刪除規(guī)則。此系統(tǒng)的數(shù)據(jù)表及相互關系如圖3所示。其建立關系的方式是:表makerInfo的主鍵makerID在其關聯(lián)表history中作為外鍵makerID;表proProcedure的主鍵ID在其關聯(lián)表history中作為外鍵proProcedID;表cncInfo的主鍵ID在其關聯(lián)表history中作為外鍵cncID;表proInfo的主鍵ID在其關聯(lián)表proProcedure中作為外鍵proID;表machineModel的主鍵machineTypeID在其關聯(lián)表cncInfo中作為外鍵machineTypeID。
系統(tǒng)實現(xiàn)了數(shù)控機床基本運行數(shù)據(jù)遠程監(jiān)控,在各類數(shù)據(jù)呈現(xiàn)方面做了一些創(chuàng)新。下面介紹其實現(xiàn)的主要關鍵技術(shù)和運行測試效果。
3.1.1 關鍵技術(shù)-數(shù)控機床的聯(lián)網(wǎng)與數(shù)據(jù)讀寫
由文獻[8]~文獻[11]得到目前已有的數(shù)據(jù)采集方 式主要有PLC采集、宏程序輸出、外加傳感器采集和開放式數(shù)控系統(tǒng)接口采集。其中只有開放式數(shù)控系統(tǒng)接口采集不需要附加硬件設備,具有能夠?qū)崟r采集多種類型機床信息、實現(xiàn)技術(shù)難度低、實施成本低的優(yōu)點。因此本系統(tǒng)調(diào)用數(shù)控機床本身提供的開放函數(shù)實現(xiàn)對數(shù)控機床的聯(lián)網(wǎng)和數(shù)據(jù)讀取。
圖3 系統(tǒng)數(shù)據(jù)模式設計
以FANUC系統(tǒng)數(shù)控機床為例,其提供了Focas開發(fā)包,其中豐富的函數(shù)允許PC機與數(shù)控系統(tǒng)聯(lián)網(wǎng)并實現(xiàn)數(shù)據(jù)讀寫。這些函數(shù)可以用C++或C#程序調(diào)用。FANUC公司給出了Focas的開放接口函數(shù)的使用說明。如果程序中要使用Focas開發(fā)包提供的函數(shù)訪問數(shù)控機床,需要將該開發(fā)包提供的一組類庫文檔(如:Fwlib.dll)復制到項目存放其生成可執(zhí)行文件的文件夾“……/debug”下,并在項目的根目錄中添加其提供的fwlib32.cs文件[12],這個文件給出了Focas1類的定義聲明,其中包含該類用到的符號常量和其它類的定義,以及這個類包含的操作數(shù)控機床函數(shù)定義的首部,這些函數(shù)通常都定義為靜態(tài)、公有的,可以通過類名直接調(diào)用。
如下面這段代碼是用Focas1類提供的函數(shù)連接指定網(wǎng)址和端口機床的程序段。
ret=Focas1.cnc_allclibhndl3(Convert.ToString(txtIp.Text) Convert.ToUInt16(txtPort.Text),Convert.ToUInt16
(txtTimeOut.Text),out CncComCtrlProd.module Class.
MyModule.Flibhndl);
if (ret== Focas1.EW_OK)
…… // 顯示聯(lián)網(wǎng)成功
else
…… // 顯示聯(lián)網(wǎng)失敗
上面程序段中首先調(diào)用了Focas1類的cnc_allclibhndl3()函數(shù)來實現(xiàn)與數(shù)控機床連接,返回值存入ret變量。函數(shù)第1個參數(shù)是從文本框txtIp中讀取的機床IP地址,并轉(zhuǎn)化為字符串類型,第2個參數(shù)是從文本框txtPort讀取的機床端口號,并轉(zhuǎn)化為整數(shù)類型,第3個參數(shù)是從文本框txtTimeOut讀取的延遲時間,并轉(zhuǎn)化為整數(shù)類型,第4個參數(shù)是帶回的表示此機床連接的庫句柄變量Flibhndl,此變量定義在項目CncComCtrlProd的moduleClass文件夾的MyModule類中,并設為公有、靜態(tài)類型變量,因此可以直接通過類名調(diào)用。如果函數(shù)返回變量ret等于Focas1.EW_OK,則表示這個連接操作成功,否則表示失敗。
而語句“ret=Focas1.cnc_freelibhndl(CncComCtrlProd.moduleClass.MyModule.Flibhndl);”表示斷開前面建立的 操作庫函數(shù)的句柄為CncComCtrlProd.moduleClass.MyModule.
Flibhndl的連接,返回值賦給變量ret,同樣如果ret等于Focas1.EW_OK,表示斷開連接操作成功。
3.1.2 運行測試效果-基本運行數(shù)據(jù)遠程監(jiān)控
圖4顯示了“機床選擇與聯(lián)網(wǎng)”功能的系統(tǒng)運行測試效果,可以手動在文本框輸入機床IP地址等,也可以從下方的信息列表中雙擊某個機床信息,其IP地址和端口號等信息則自動寫入上方對應文本框中,然后單擊“連接”按鈕,就實現(xiàn)與指定機床的連接,并用消息框顯示連接是否成功。
圖4 “特定機床聯(lián)網(wǎng)”運行效果
圖5顯示了“機床使用與報警情況”功能的系統(tǒng)運行測試效果,其展示了遠程監(jiān)測所聯(lián)網(wǎng)的特定機床的使用數(shù)據(jù)。而“機床坐標與運行監(jiān)測”功能則能顯示機床的運行狀態(tài)、坐標、主軸轉(zhuǎn)速和單次加工時間等信息。
圖5 “機床使用與報警情況”運行效果
圖6是“所有機床基本加工運行情況瀏覽”的運行測試效果,其以列表形式展示了聯(lián)網(wǎng)的所有遠程機床的IP地址、當前加工零件的程序名-程序段和已加工數(shù)量等信息。
圖6 “所有機床基本加工運行情況瀏覽”運行效果
當在“機床信息管理與連通顯示”窗口單擊“顯示機床狀態(tài)”按鈕時,其變?yōu)椤巴V範顟B(tài)掃描”,同時掃描、試聯(lián)網(wǎng)所有機床基本信息表中的機床,以不同的圖標顯示其是否成功聯(lián)網(wǎng)。效果如圖7所示,這里有兩臺顯示圖標為淺色的機床成功聯(lián)網(wǎng)。
運行系統(tǒng)的“聯(lián)網(wǎng)所有機床”功能時系統(tǒng)循環(huán)重復掃描、聯(lián)網(wǎng)所有機床,讀取當前聯(lián)網(wǎng)機床的“產(chǎn)品-工序”批量加工信息存入history數(shù)據(jù)表,直到人為選擇停止這一功能。對于這些信息通過遠程聯(lián)網(wǎng)的準確提取和記錄是本系統(tǒng)的一個創(chuàng)新點。
3.2.1 關鍵技術(shù)-“自動記錄機床批量加工‘產(chǎn)品-工序’信息”改進算法
系統(tǒng)此功能的整體設計思路是建立一個獨立的線程,在其中實現(xiàn)依據(jù)數(shù)控機床數(shù)據(jù)表中記錄的機床IP地址和端口循環(huán)掃描聯(lián)網(wǎng)每個數(shù)控機床,再將聯(lián)網(wǎng)機床的批量加工信息存入數(shù)據(jù)表。線程的建立方式在程序設計中已經(jīng)成熟,聯(lián)網(wǎng)機床技術(shù)在前一節(jié)中已經(jīng)介紹,而數(shù)據(jù)表的設計在前面系統(tǒng)數(shù)據(jù)模式中也已經(jīng)介紹。因此這里只解釋根據(jù)數(shù)控機床加工產(chǎn)品的特點,確定并保存特定機床批量加工“產(chǎn)品-工序”信息的改進算法。項目初期我們已對這個算法進行研究和實現(xiàn),這里又進行了更精確改進研究和建模。
圖7 “顯示機床連接狀態(tài)”運行效果
機床加工的產(chǎn)品常通過多道工序完成,數(shù)控機床的一個CNC程序負責一道工序。由于數(shù)控加工的工序相對集中[13],即數(shù)控機床上產(chǎn)品(工件)一次裝夾所完成的工序中,可加工完成鉆、擴、絞和銑等這些普通機床的多道工序,所以這里說的工序可能包括普通機床的多道工序。數(shù)控機床每運行一次CNC程序即可完成產(chǎn)品某道工序的加工,這里的加工產(chǎn)品數(shù)是指產(chǎn)品的某個工序完成的加工數(shù)量。機床通常是讓某個工序?qū)腃NC程序重復運行,來完成此“產(chǎn)品-工序”的批量加工。每個數(shù)控機床都有一個累加計數(shù)器,記錄該機床加工“產(chǎn)品-工序”累計數(shù)量。這里開發(fā)的系統(tǒng)假設的工作流程是一個人在一個工作日內(nèi)的一臺機床完成一批“產(chǎn)品-工序”的加工任務后記錄下在這個機床已批量加工此“產(chǎn)品-工序”數(shù)量,然后將累加計數(shù)器人為清零為下一次批量加工的計數(shù)做準備。即當變更了工作機床、操作人員、工作日或加工“產(chǎn)品-工序”編號(即CNC程序)時,就確定開始了一次新的批量加工。系統(tǒng)被設計成能自動采集保存某次批量加工產(chǎn)品的機床號、產(chǎn)品-工序編號、時間和累加計數(shù)器的數(shù)量等信息,這些“機床批量加工產(chǎn)品-工序”的相關信息被自動保存在“產(chǎn)品工序生產(chǎn)記錄信息表”history數(shù)據(jù)表,此表中還設置了批量加工產(chǎn)品的工人編號(makerID)字段,其需要在“工人操作機床加工產(chǎn)品記錄信息管理”功能中手工輸入。
算法還提供了智能判斷和提示機床新的批量加工前計數(shù)器未清零的情況,在項目初期的算法實現(xiàn)中,考慮到服務企業(yè)是將加工工件手工裝夾,時間較長,而每個工序單次加工時間也多于2 min~3 min,因此,假設系統(tǒng)每掃描一遍所有機床的時間小于機床任意工序的裝夾與單次加工處理時間之和,在記錄開始一次新的批量時以“當前加工數(shù)>0”作為提示沒有將計數(shù)器清零的條件。但是考慮到將來有可能實現(xiàn)機械手的自動裝夾,使裝夾時間大大減少,且有些工序時間較短,因此工序的每次裝夾時間和單次加工處理時間之和可能小于系統(tǒng)的每掃描一遍所有機床的時間,因此為了提高系統(tǒng)對未來變化的適應能力,這個改進算法的設計是讀取、計算每臺機床兩次掃描的時間間隔disTime和機床工序的單次加工時間proTime,在記錄開始一次新的批量時以“當前加工數(shù)>disTime/proTime”作為提示沒有將計數(shù)器清零的條件,在提示中進一步給出此機床號、CNC程序名、可能的多出加工量和批量加工初始時間。當disTime≥proTime且計數(shù)器的原計數(shù)值≤disTime/proTime時可能會出現(xiàn)智能提示失效或提示的多出加工量出現(xiàn)誤差。這個誤差的上線是disTime/proTime,這取決于機床開始加工時系統(tǒng)的掃描位置。但這個誤差會在極個別情況下出現(xiàn),且很少在裝夾時間加上單次加工時間小于掃描間隔時間的情況。
另外此提示正確實現(xiàn)的前提是在所有機床工作前系統(tǒng)已經(jīng)啟動并開始掃描機床。系統(tǒng)還允許根據(jù)實際機床加工情況對這些數(shù)據(jù)進行修改、插入等管理。這些信息也可以用于查詢、統(tǒng)計機床的使用情況,并為統(tǒng)計工人工作量提供了參考數(shù)據(jù)。
對于記錄一臺機床在一個時間段內(nèi)、批量加工某產(chǎn)品工序的加工數(shù)此改進算法的實現(xiàn)邏輯比較復雜,這里用圖8的流程說明。該圖的算法大致流程是:當“產(chǎn)品工序信息表(proProcedure)”中不存在“當前CNC工序名”,顯示“CNC程序不存在”錯誤提示并結(jié)束這個處理,否則繼續(xù)。讀取此產(chǎn)品-工序的編號(IP)和工序名(procedureName)分別存入變量proProcedID和procedureName,讀取history表記錄個數(shù)存入變量hisID,從history表讀取當前機床的最后一個批量加工記錄時間,如果沒有此機床的加工記錄,則智能判斷累加計數(shù)器是否清零后,在history表添加新的加工記錄并結(jié)束這個處理,否則繼續(xù),從是否是同已CNC程序、是否是同一天和以前的加工數(shù)是否大于當前讀取的加工數(shù)等條件判定是否是同一批次的加工,以決定是添加新的批量加工記錄,還是修改history表中對應記錄的加工數(shù)量。
3.2.2 運行測試效果-“自動記錄所有聯(lián)網(wǎng)機床批量加工產(chǎn)品信息”系統(tǒng)實現(xiàn)
選擇系統(tǒng)的“聯(lián)網(wǎng)所有機床”功能,此時系統(tǒng)以圖9所示的列表形式顯示所有聯(lián)網(wǎng)機床的基本信息,窗口下方的文本區(qū)可顯示新的批量加工時計數(shù)器未清零的智能提示或機床CNC程序信息不存在等信息。列表的具體內(nèi)容會隨著每次循環(huán)掃描機床聯(lián)網(wǎng)狀況而變化,另外,機床批量加工產(chǎn)品-工序信息會被存入history數(shù)據(jù)表,后面是這一測試結(jié)果。而當單擊此圖窗口中的“停止掃描聯(lián)網(wǎng)所有機床”按鈕,即可停止這一循環(huán)掃描。
假設這一功能的測試前,系統(tǒng)中“產(chǎn)品工序信息數(shù)據(jù)表proProcedure”的具體內(nèi)容見表1,而history數(shù)據(jù)表的記錄為空。
這一算法邏輯功能的測試環(huán)境是“機床基本信息數(shù)據(jù)表cncInfo”所列機床中只有編號為2和3的兩臺機床處于開機聯(lián)網(wǎng)狀態(tài),運行此系統(tǒng)并選擇“聯(lián)網(wǎng)所有機床”功能。
算法邏輯測試1:將兩臺數(shù)控機床加工產(chǎn)品工序的程序名均指定為“O1000”,設定該工序單次加工時間為3 min,而測試時系統(tǒng)掃描所有機床的時間為2 min,累加計數(shù)器的 值清零,分別啟動兩臺機床這個加工工序,此時觀察系統(tǒng)的history數(shù)據(jù)表的內(nèi)容首先變?yōu)楸?所示。這是由于從表1提供的表可知CNC程序名為“O1000”的“產(chǎn)品工序序號”是“1”,因此表2中proProcedID字段的值為“1”。由于系統(tǒng)不能自動采集操作工人信息,這里makerID的值設置為默認值“0000”,可使用此軟件系統(tǒng)手動輸入真正的操作機床的工人編號,而系統(tǒng)掃描時間間隔為2 min,其小于系統(tǒng)單次加工時間3 min,所以第1次掃描到這兩臺機床時累加計數(shù)器的值為0,quantity字段的值也為0,且2除以3取整為0,當前加工數(shù)0不大于這個值,因此在圖9的下方提示區(qū)中沒有給出提示信息。
圖8 “記錄特定機床批量加工某個產(chǎn)品的生產(chǎn)信息”算法
圖9 “聯(lián)網(wǎng)所有機床”功能運行效果
表1 系統(tǒng)產(chǎn)品工序信息數(shù)據(jù)表proProcedure內(nèi)容
表2 運行測試1后history數(shù)據(jù)表內(nèi)容
繼續(xù)運行機床,并刷新history數(shù)據(jù)表的內(nèi)容,發(fā)現(xiàn)隨著累加計數(shù)器的值依次增加,quantity數(shù)據(jù)表的內(nèi)容依次變?yōu)?、2、3,此時停止3號機床,獨自運行2號機床,直到其累加計數(shù)器和quantity字段的值都為6,停止2號機床運行。這是由于在同一工作日,機床的CNC程序沒有變化,且累加計數(shù)器的數(shù)值不斷遞增,系統(tǒng)判定這是同一次的批量加工,所以表2中記錄的quantity字段值由“0”分別變?yōu)榱恕?”和“3”。這一變化表現(xiàn)在表3中。
算法邏輯測試2:在前面測試1的基礎上,將兩臺數(shù)控機床加工產(chǎn)品工序的程序名均指定為“O1001”,設定該工序單次加工時間為4 min,而測試時系統(tǒng)掃描所有機床的時間還為2 min,將2號機床的計數(shù)器清零,而3號機床不清零,分別啟動兩臺機床,此時觀察系統(tǒng)的history數(shù)據(jù)表的內(nèi)容首先變?yōu)楸?所示,在圖9的下方的文本區(qū)中給出“3號機床沒有將前次加工計數(shù)器清零”的智能提示,表3中多出了兩條分別表示這兩臺機床批量加工產(chǎn)品信息的記錄。這是由于工序名改變,表示機床加工工序改變,系統(tǒng)確定一次新的批量加工開始。從表1可知程序名為“O1001”的“產(chǎn)品工序序號”是“2”,因此表3中新增記錄的proProcedID字段值為“2”。由于3號機床計數(shù)器值沒有清零,所以最初提取的兩臺機床加工數(shù)量分別為0和3,3大于2除以4的整除值0,系統(tǒng)給出3號機床沒有將累加器清零的提示。
表3 運行測試2后history數(shù)據(jù)表內(nèi)容
繼續(xù)運行機床,當計數(shù)器的值依次增加時,可以觀察到history數(shù)據(jù)表的值也會隨之增加。當計數(shù)器的值依次變?yōu)?和5時停止機床,表3的第3、第4條記錄中quantity字段的值也隨之變?yōu)檎{(diào)整后的值2和5,這一變化反映在表4中。后期可以手動將4號記錄的5減去原來計數(shù)器值3變?yōu)?。
算法邏輯測試3:在前面測試2的基礎上,將兩臺機床的累加計數(shù)器的值都清零,重新啟動機床,此時觀察history數(shù)據(jù)表,得到表4所示的運行效果,在其中又多出兩行表示新的批量加工的記錄。由于累加計數(shù)器清零,在沒有改變運行的CNC程序名和同一天的情況下,以前的加工數(shù)量2和5大于當前從計數(shù)器提取的加工數(shù)值0,系統(tǒng)就判定已經(jīng)開始了一次新的批量加工,在history數(shù)據(jù)表中添加了兩條新記錄表示,其quantity字段最初值就為計數(shù)器值0,當計數(shù)器值變?yōu)?時,停止機床運行,此時數(shù)據(jù)表中5、6行的quantity字段的內(nèi)容也隨之變?yōu)?,這一變化反映在表5中。
表4 運行測試3后history數(shù)據(jù)表內(nèi)容
算法邏輯測試4:在前面測試3的基礎上,修改計算機的系統(tǒng)時間為后面新的1天,將2號機床加工產(chǎn)品工序的CNC程序名指定為“O1002”,其加工時間設置為1.5 min,小于系統(tǒng)掃描所有機床的時間2 min,3號機床加工產(chǎn)品工序程序名不變。注意這里沒有將兩臺機床的計數(shù)器值清零,其值均為1。然后啟動兩臺數(shù)控機床。重復多次設置這個測試4的初始運行條件并反復測試。多數(shù)測試結(jié)果是運行軟件系統(tǒng)的圖9所示窗口下方文本區(qū)會多出兩個分別提示2號和3號機床計數(shù)器沒有清零的提示信息,有時個別只有一個3號機床計數(shù)器沒有清零的提示信息。而每次觀察history數(shù)據(jù)表會多出兩行表示新的批量加工信息的記錄。這是由于2號機床的CNC程序名變化確定了一次新的批量加工,而3號機床與以前的批量加工記錄不在同一天確定了新批量加工。第1次掃描聯(lián)網(wǎng)2號機床時,其可能已經(jīng)完成一次加工任務也可能還沒有完成,這要看機床開始加工時的計算機掃描位置,從其累加計數(shù)器讀取的當前加工數(shù)為2或1,這個數(shù)可能大于2整除1.5的值,也可能不大于,而且原計數(shù)器中的值1也等于2整除1.5的值。而第1次掃描聯(lián)網(wǎng)3號機床時,其一定沒有完成一次加工任務,從其累加器讀取的當前加工數(shù)為1,這個數(shù)大于2整除4的值,一定會有未清零的智能提示。另外從表1可知2號機床程序名為“O1002”的“產(chǎn)品工序序號”是“3”,因此history數(shù)據(jù)表中其新增2號機床記錄的proProcedID字段值為3,3號機床新增記錄的此字段值還為“2”。如果每臺機床計數(shù)器值為3時停止其運行,此時history數(shù)據(jù)表內(nèi)容見表5。后期可以手動將表5中7、8號記錄的quantity字段的值復查修改。
表5 運行測試4后history數(shù)據(jù)表內(nèi)容
算法邏輯測試5:在前面測試5的基礎上,2號機床加工產(chǎn)品工序的工序名指定為“O1003”,其加工時間設置為1.5 min,累加器不清零,只啟動此2號機床,多次重復這個測試5的初始條件并測試。會發(fā)現(xiàn)每次圖9所示窗口下方文本區(qū)會多出1個提示2號機床計數(shù)器沒有清零的信息。這是由于原來沒有清零計數(shù)器的值3大于掃描間隔時間2整除工序單次加工時間1.5,此時一定會有沒有清零的提示出現(xiàn)。
算法邏輯測試6:在前面測試5的基礎上,將兩臺機床加工產(chǎn)品工序的工序名指定為“O1007”,再啟動機床加工運行,此時系統(tǒng)的如圖9所示界面的下方的文本區(qū)給出“該工序CNC程序不存在”的提示信息。這是由于從表1可知系統(tǒng)沒有工序名為“O1007”的產(chǎn)品工序。
這里的綜合管理是指信息的基本維護、查詢和統(tǒng)計。在信息基本維護功能中此系統(tǒng)在技術(shù)實現(xiàn)中充分利用數(shù)據(jù)表的多表關聯(lián),避免數(shù)據(jù)重復輸入,這既減少錄入信息又避免重復錄入引起的錯誤。
3.3.1 關鍵技術(shù)-復雜數(shù)據(jù)查詢和統(tǒng)計技術(shù)
參考文獻[14]中的SQL查詢相關技術(shù),系統(tǒng)用SQL語言實現(xiàn)了復雜的跨越多表的數(shù)據(jù)查詢和統(tǒng)計處理,下面就以“工人加工產(chǎn)品-工序信息統(tǒng)計”功能的部分語句為例,對其使用方式進行注釋說明。
后面的3段代碼組合完成了用select語句實現(xiàn)跨多表查詢統(tǒng)計功能,第一段是存入變量Sut_SQL的SQL代碼,其表示數(shù)據(jù)表history通過關鍵字段分別連接makerInfo、cncInfo和proProcedure表聯(lián)合查詢統(tǒng)計history數(shù)據(jù)表的quantity字段匯總值,這一字段名顯示為“加工數(shù)量匯總”,并顯示作為分類統(tǒng)計依據(jù)的各個字段,如:以“制造人姓名”為字段名顯示makerInfo數(shù)據(jù)表的makerName字段值。
Sut_SQL="select m.makerName as 制造人姓名,p.proID as 產(chǎn)品序號,p.procedureName as 工序名,c.cncName as 機床名稱,sum(h.quantity) as 加工數(shù)量匯總 from history h inner join makerInfo m on h.makerID=m.makerID inner join cncInfo c on h.cncID=c.ID inner join proProcedure p on h.proProcedID=p.ID";
下面是第二段存入變量Static_SQL1的SQL代碼,其表示分類統(tǒng)計依據(jù)的字段依次是makerInfo數(shù)據(jù)表的makerName、proProcedure數(shù)據(jù)表的proID和cncInfo數(shù)據(jù)表的cncName。
Static_SQL1="group by m.makerName, p.proID,p.procedureName,c.cncName WITH ROLLUP";
下面是第三段存入變量Static_SQL的代碼,其假設“where”后面變量StaticValue中存儲著由用戶界面選擇決定的統(tǒng)計條件,用連接符“+”將其與前面賦值的兩個變量連接成一個完整的滿足指定條件的多表聯(lián)合的查詢統(tǒng)計語句。
Static_SQL=Sut_SQL+"where"+StaticValue+Static_SQL1;
3.3.2 運行測試效果-“信息綜合管理功能”系統(tǒng)實現(xiàn)
單擊前面圖7所示窗口中“列表模式”按鈕,則會出現(xiàn)圖10所示的以列表形式展示機床基本信息的管理界面。單擊前面圖7中“添加機床”按鈕或這里圖10的“添加”按鈕都可進入圖11所示的添加機床信息窗口。
圖10 列表形式的機床信息管理
圖11 “添加機床信息”運行窗口
圖11展示了“添加機床信息”功能,是系統(tǒng)基本維護功能的示例。當單擊“機床型號編碼:”旁的下拉組合框時,系統(tǒng)會給出所有機床類型編碼和名稱的列表供使用者選擇,當選擇某種類型機床時,該類型機床的操作系統(tǒng)、主軸速度、生產(chǎn)廠家等基本信息會根據(jù)“機床型號信息”數(shù)據(jù)表的內(nèi)容自動填充,因此這些文本框都設置為只讀狀態(tài),不允許用戶自己添加。
圖12展示了在指定的時間段在2號機床批量加工的所有“產(chǎn)品-工序”的制造人、機床、制造時間、產(chǎn)品編號、工序名和加工數(shù)量等產(chǎn)品工序的批量加工查詢信息。
圖13展示了在指定時間段內(nèi),對于1號機床,以機床為主序的機床批量加工數(shù)量的分類匯總。其說明在設定時間段內(nèi)這臺機床只加工了1號產(chǎn)品,加工的工序有數(shù)控車二序、數(shù)控車三序和數(shù)控車一序其中數(shù)控車一序有兩個人在這臺機床完成,總計為11臺,設定時間段內(nèi)這臺機床總計加工零件數(shù)為15。
本文所構(gòu)建的數(shù)控機床遠程運行監(jiān)控與信息管理系統(tǒng)從數(shù)控企業(yè)實際需求出發(fā),改進了將現(xiàn)場批量加工產(chǎn)品的機床、工序、工人、時間和數(shù)量信息完整記錄的算法,并就算法的邏輯進行了系統(tǒng)測試,說明該算法具有科學性、準確性和實用性。其建立了完整的數(shù)據(jù)模型,整個系統(tǒng)架構(gòu)設計科學合理,能部分滿足企業(yè)根據(jù)自身情況定制系統(tǒng)基礎數(shù)據(jù)的要求,系統(tǒng)實現(xiàn)了企業(yè)基本數(shù)據(jù)和生產(chǎn)過程數(shù)據(jù)的維護、查詢和統(tǒng)計等綜合功能??紤]到系統(tǒng)信息通信安全和企業(yè)目前的主要需求,此系統(tǒng)暫時只實現(xiàn)了遠程監(jiān)測功能而沒有涉及遠程控制功能,下一步的工作,將考慮利用數(shù)控機床系統(tǒng)提供的開放接口中包含的一系列寫入機床信息的函數(shù),探索真正實現(xiàn)數(shù)控機床的遠程控制功能。
圖12 “查詢工人操作機床批量加工產(chǎn)品信息”運行效果
圖13 “統(tǒng)計工人操作機床批量加工產(chǎn)品信息”運行效果