為機床工具企業提供深度(dù)市場分析                     

用戶名:   密碼:         免費注(zhù)冊  |   申請VIP  |  

English  |   German  |   Japanese  |   添加收(shōu)藏  |  
廣州數控
數控係統

車床 銑(xǐ)床 鑽床(chuáng) 數控係統 加工(gōng)中心 鍛(duàn)壓機床 刨插拉床 螺紋加工機床 齒(chǐ)輪加工機床
磨床 鏜床 刀具 功能部件 配件附件 檢驗測量 機床電器 特種加工 機器(qì)人

數(shù)控係統(tǒng)

電工電力 工程機械 航(háng)空航天 汽(qì)車(chē) 模具
儀器儀表(biǎo) 通用機械(xiè) 軌(guǐ)道交通 船舶

搜索
熱門關鍵字:

數控機(jī)床

 | 數控車床 | 數控係統 | 滾齒機 | 數控銑(xǐ)床 | 銑刀(dāo) | 主軸 | 立式加工中心 | 機器人
您現在的位置:數控(kòng)係統網> 加工(gōng)與維修>基於 FANUC 機床(chuáng)數控(kòng)係統界麵(miàn)軟件二次開發的研究(jiū)
基於 FANUC 機床(chuáng)數控(kòng)係統(tǒng)界麵軟件二次開發的研究
2023-9-15  來源: 上海機床(chuáng)廠(chǎng)有限公司  作者: 顧凱端

  
     1.引言(yán) 
 
     數控係統及其人機界麵的出現使機床加工操作變得便捷與高效,而隨著行業發展,對加工精度、加工效率和工藝柔(róu)性的要求越來越高,數控通用人機界麵已(yǐ)無法滿足這(zhè)些(xiē)需求,因此對機床數控係統人(rén)機界麵軟件的二次開發成了數控機(jī)床生產廠家的重要任務。
  
     目前市場上的數控機床人機界麵多(duō)為嵌入式(shì),麵板尺寸小,操作(zuò)工行動受到(dào)場地的局限,無法遠距離實時進行工藝參(cān)數調整(zhěng)、監控等操作,從生產效率和安全性來說都存在一定的缺陷,自動化、生產效率受到(dào)了限製。FANUC 和SIEMENS 等國(guó)外數控廠商進口的數控係統,其隨係統(tǒng)提供的人機界麵是麵向通用數控操作場景的,無法方便地製定機床配套工藝,不能滿足用(yòng)戶的定製化需求。數控廠商在其配套的通(tōng)用人機界(jiè)麵(miàn)的基礎上(shàng),提供了(le)人機界麵(miàn)開發接口,機床製造廠家就可以對人(rén)機界麵進行二次開發,擴展人機界麵功能,提高人機界麵(miàn)軟件的專用性、易用性(xìng),以更大限度地發揮(huī)機床的價值。
  
     本文選取 FANUC Series 0i-MF 數(shù)控係統作為二次開發基(jī)礎平台(tái),采用麵向對象的方(fāng)法進行軟(ruǎn)件框架設計,二次開發接口為 FOCAS 庫(即FANUC Open CNC API Specifications, 簡 稱FOCAS),利用 QT 提供基礎編程庫,確定程序達(dá)到的功能有(yǒu)顯(xiǎn)示界麵(miàn)、軟硬件通訊、機床參數寫入、機床參數讀取以(yǐ)及係統報警監視等,實現對數控係統(tǒng)的二次開發。
  
     2. 開發(fā)工具和總體框架 
  
     2.1 開發環境的選擇
  
     FANUC 0i-MF 數控係統提供了二次開發接(jiē)口(kǒu)(即 FOCAS),包含了數控連接和數控數據、PMC 數據讀寫功能,以及界麵開發接口,即意味著基(jī)於此數控(kòng)係統的人機界麵二(èr)次開發(fā)自由度很大(dà),架構選取自由。可運行 FOCAS 庫的操作係統目前主要是 Microsoft Windows,Windows操作係統使用簡單(dān),係統穩定(dìng),用戶群體大,開發工具豐富,所以是 FANUC 數控二次開發(fā)首選。
 
     軟件功能與界麵庫可選用 MFC、.NET 和 Qt,MFC 雖然由微軟開發功能強大,但已經(jīng)過時不再維護,所以不建議選用,.NET 是微軟(ruǎn)主力開(kāi)發庫,但性能遜色(sè)於 C++ 開發的應(yīng)用程序,Qt作為 C++ 語言開發的功能界麵庫,既能方便地進行界(jiè)麵開發,又有 C++ 便捷的底層訪問能力,其可靠性和寬鬆的開源協議使(shǐ)得 Qt 庫(kù)在工業界得到(dào)了廣泛的應用。結合 Windows 操作係統、FOCAS 庫和 Qt 編程庫的選取,微軟的 VisualStudio 就(jiù)是較合適的開發工具(jù)了,安裝有 Qt 插件的 Visual Studio 2015 可方便地(dì)創建 Qt 應用程序解決方(fāng)案,借助開發工具(jù)強大的功(gōng)能,可輕鬆開展 FANUC 機床數控係統界麵軟件的二次開發工作。測試環境可選用 FANUC 數控係統實體機或 FANUC CNC Guide。開發環境及工(gōng)具如表 1 所示。

表 1 開發環境與工具表(biǎo)


     2.2 總體框架的確立
 
     由於要實現的二次開發的(de)功能較為(wéi)明確,所以采用清晰的分層(céng)架構,分(fèn)層架構結構簡單明了(le),各層(céng)職責分明。分層架構主(zhǔ)要分為通(tōng)信層、功(gōng)能層、界麵層。通信層負責軟件功能層與數控係統的之間(jiān)的數據交互,功(gōng)能層負責軟(ruǎn)件的功能實現,向(xiàng)下與通信層交互數據,向上給界麵層提(tí)供功能接口,界麵層向下負責對功能層的調用,向上負責與操(cāo)作者的交互。二次開發的軟件總體框架圖如圖 1 所示。


圖 1 總體框(kuàng)架圖

     3. 開發過程(chéng)及結果(guǒ) 
  
     3.1 硬件連接
  
     首先進行(háng)硬(yìng)件連接,把 FANUC 0i-MF 數控單元的以太網網口(ETHERNET)通過網(wǎng)線連(lián)接至 PC 屏,達成將人機操作界麵屏幕放大、分離式操作的目的 ; 其次,建立與數控單元的通訊(xùn)連接,如利用 Visual Studio 2015 導(dǎo)入 FOCAS動態鏈接(jiē)庫,編(biān)寫程序(xù)調用(yòng)功能函數,與(yǔ)測試端 NC Guide 進行通訊 ; 再次,利用 FOCAS 庫函數設計機床參數數據寫入功能 ; 最後利用 QtDesigner 設計軟件界麵。
  
     3.2 界麵分析
  
     界麵設計是整體框架(jià)的基礎(chǔ),本文設計的人機(jī)界麵采用多個窗(chuāng)口組合展示機床狀態,展示程(chéng)序號、三根軸四種坐(zuò)標(biāo)係的展示窗口、機床加工狀(zhuàng)態以及通訊設置(zhì)按鈕和界麵切換(huàn)按(àn)鈕。
  
     人機(jī)界麵利用單行文本框,采用(yòng)統一(yī)格式,把數據名標(biāo)注在(zài)文本框左側,用於直觀地顯示讀取(qǔ)的信息。合理布局四個坐標顯示(shì)窗口的空隙和比例大小。為增加人機交互友好,下方控(kòng)件按鈕(niǔ)分別對應調用(yòng)通訊窗口和不同類(lèi)型的坐標窗口切換,通過信號(hào)與槽的機製進行實現。
  
     本文針對的數控係統(tǒng)是(shì) FANUC 0i-MF 係列,僅支持以太網通訊,而在(zài) FOCAS 控件庫中,已經完成了對通訊協議的開發並將其封裝,作為(wéi)開發者,需要做(zuò)的是導入 FOCAS 控件庫,調用以太網通訊函數,其會通過代理函數(shù),向功能函數(shù)發(fā)送請(qǐng)求,自動建立(lì)通訊。
 
     為體現麵(miàn)向對象(xiàng)的設計方法,將窗口封裝成單個類,通過在機床總界麵(miàn)依次創建窗口,在槽中利用枚舉類的邏輯判斷來刪除或插入窗口達到切(qiē)換窗口坐標顯(xiǎn)示的目的,實現人機交互。
  
     3.3 人機界麵框架(jià)設計
  
     人(rén)機界麵設計分為硬(yìng)件連接和軟件設計兩部分,其中硬件連接用於實現人機界麵的分離式設計,通過外部(bù)接口,將(jiāng) FANUC 0i-MF 控製單元與上位機 PC 屏的網口相連。軟件部分負責實現數控機床(chuáng)監控狀態的功(gōng)能,見圖 2。


圖 2 軟硬件連接流程圖

     人機界麵(miàn)模(mó)塊分為通(tōng)訊層、功能層和界(jiè)麵層,見(jiàn)圖 3,通訊層負責建立通訊和斷開通(tōng)訊。功能層主要負責對(duì)不(bú)同類型三軸坐標和加工狀(zhuàng)態的讀寫。界麵層分(fèn)為通訊窗(chuāng)口、坐標顯示窗口和機床窗口這三(sān)部分。

  

圖 3 人機界麵程(chéng)序框架

 
     3.4 軟(ruǎn)件(jiàn)二次開發設計
 
     在 VS2015 開發環(huán)境下,使用 Qt5 作為開發庫,使用(yòng) VS 中的 QT GUI 框架開發機床人機界麵,利用 FOCAS 1/2 Library 提供的函數作(zuò)為接口,首先利用以太網(wǎng)建立通訊連接,然後建立數(shù)據寫入的接口連接(jiē),實現對機床狀態(tài)的讀(dú)取(qǔ),最後完成界麵層(céng)的布局,使用多對話框窗口水平或垂直布局,參照 FANUC 係統原始操作界麵(miàn),能夠來回切換坐標顯示窗口,完成(chéng)對數據的顯示(即可視化)。接下來參考圖 4 所示的機床界麵監控總體框架從通訊層、功能層(céng)和界麵層逐一分析。
  

圖 4 機床界(jiè)麵監控總體框架

     3.4.1 通訊層
  
     機床界麵要能夠動態顯示機床數據,則須使界麵與 CNC 係統通訊。FANUC 提供了 FOCAS通訊協議 , 使(shǐ) PC 端與 FANUC 係統建立了通訊。在用戶 PC 端(duān)的開發環境應用程序中,調取 FANUC 提供的(de) FWLIB32/64.DLL 動態鏈接庫,由於 HSSB 需額外購買硬件(jiàn)來建立連接,因此沒有采用 HSSB 庫,而是選(xuǎn)擇以太網庫。
  
     FWLIB32/64.DLL 鏈接庫包含了 FOCAS 的控件庫,其目的是將目標包(bāo)裝(zhuāng),通(tōng)過(guò)句(jù)柄來獲取(qǔ)目標對象的屬性。在以太網庫中,通過將 CNC 的 IP地址參數(shù)傳遞給 CNC allclibhndl3 函數來創(chuàng)建TCP/IP 連接。
  
     以太網板(bǎn)中的數據窗口(kǒu)函數會通過(guò) TCP/IP棧數據傳輸與用戶 PC 端進行以太網連接。兩者在連接過程中用戶 PC 端會(huì)將數據窗口函數的代理函數向以太網板發送打包請求,包括獲取(qǔ)數據屬性、數據數量(liàng)等,以太網板響應請求、反饋發送(sòng)數據內容、錯誤代碼等。CNC 與以(yǐ)太(tài)網板通過 OPEN CNC I/F 在局部(bù)網絡中進行數據傳輸(shū)。
  
     以太網的通訊 功 能 在 基 類 為 QDialog 的 對話 框 窗 口 類 LoginDiolag 獲取參數和在(zài)機床界麵 FanucFrm 類中對通訊的(de)槽定義來實現。
 
     根據 FOCAS 庫的 FWLIB64.h 頭(tóu)文件和文獻手冊,可以看(kàn)到需要連(lián)接和斷開以太網連接要使用函數(shù) “cnc_allclibhndl3” 和 “cnc_freelibhnd”。
  
      cnc_allclibhndl3 其功能是分配庫的句柄(bǐng)並使用指定 IP 地址或主機名連(lián)接 CNC,實(shí)現以太網通信,需(xū)要以(yǐ)下參數 :
  
     (1)輸入 :ipadsdr,使(shǐ)用字符串方式來確定(dìng)需要連接的 CNC 測(cè)試端的 IP 地址或者是(shì)主機名。
     (2)輸入(rù) :port,確定 TCP 需要連接的(de)端口,通常固(gù)定為 8193.
     (3)輸入 :timeout,設定超時的時間,若設為0則忽略超時(shí),庫函(hán)數會一直等(děng)待。
     (4)輸(shū)出 :FlibHndl,指定一(yī)個包含庫句柄信息的指針(zhēn)型或者整型變量。
  
     cnc_freelibhndl 其功能是當程序終止時需要釋放庫句柄,防止數據累積報錯,即為中斷通訊連接,該函數(shù)需(xū)要輸入 FlibHndl 參數,當程序結束時,需要釋放的庫句柄。
  
     由此可以看(kàn)出,程序以建立以太網通訊算作開始,以中(zhōng)斷通訊連接、釋放庫函數作為結束,這兩者分別調用 cnc_allclibhndl3 與 cnc_freelibhndl 都在通訊層實現(xiàn)。
  
     通訊函數需要庫句柄、CNC 測試端的 IP 地址、端口(kǒu)號等其他參數傳遞給 CNC 以太網通信函數進行連接。在 FWLIB64 庫文件中,查FANUC 樣例手冊 ,可找到以太網通訊對應的 cnc 函數cnc_allclibnd3。在該函(hán)數中輸入對應的參數即可建立連接。通過 cnc_freelibhndl 斷開(kāi)連接、輸入 IP 地址(zhǐ)、端口號、時間延(yán)時等,要得知通訊連接是否建立(lì)成功可(kě)通過(guò)接受返回值(zhí)來判斷彈出何(hé)種類型的提示窗。
  
     3.4.2 功能層
  
     需要實現的功能有顯示程序狀態,顯示三軸的絕對坐(zuò)標係、相對坐標係、剩餘行程距離,顯示伺服軸轉速(sù),顯示加工狀態(tài)。
  
     根據 FOCAS 提供的 FWLIB64.DLL 中,要實現上述機床狀態的監(jiān)控主要分為三(sān)部分 :
  
    (1)使用 FOCAS 庫函(hán)數,從 CNC 測試端讀取(qǔ)機床參數(shù)。
    (2)將從 CNC 測試端的機床參數數(shù)值賦值給變量,通過傳輸,利用程序中讀寫的變量在(zài)界麵層顯示。
    (3)將數據上(shàng)傳。從機床數據讀取、機床(chuáng)數據(jù)用變量賦值寫入,數據動態更新依次進行。其中機床數據讀取使(shǐ)用(yòng) DataCollection 類(lèi),機床數據用變量賦值寫(xiě)入用 MachinePosition 類。
  
    要從 CNC 測試端讀取數據,調用使用FOCAS 提供的 FWLIB64.h 頭文件中的 cnc 函數獲取參數數值 ; 其次,是要(yào)想辦法把儲存在該函數裏變量中(zhōng)的數值傳遞給與界麵顯示文本相關的函數(shù)。
 
    以獲取絕對坐標係(xì)的 X,Y,Z 三軸數值為例,使用數據采集類的(de)成員函數 “voidabsolute(unsigned short h)” 作(zuò)為讀(dú)取 cnc 測試端參數的指令,其參(cān)數句柄 h 就好(hǎo)比鑰(yào)匙,在(zài)調用 absolute 函數後把(bǎ)實參全局句柄 h 賦給absolute 函數的(de)形參(cān)未定(dìng)義的短句柄 h 後,解(jiě)鎖指令,進行讀取。
  
     在 absolute 函數中(zhōng),需要讀取絕對坐標係的三軸坐標數值,根據 FOCAS 庫函數,應(yīng)使用cnc 函 數 “cnc_absolute”。
  
    cnc_absolute: 讀(dú) 取 用 “ 軸(zhóu) ” 指 定 軸 的 絕(jué)對位置數據(jù)。絕對位置存(cún)儲在 “ODBAXIS” 的“data[0]” 中。其參數有 :
  
   (1)輸入 :FlibHndl,指定庫句柄。
   (2)輸入 :axis,指定要讀取(qǔ)的軸數,其中ALL_AXES 對(duì) 所 有 軸(ALL_AXES:-1),1,..,m 對(duì)單個軸(m: 控製軸數)。
   ( 3 )輸 入 : length ,指 定 數 據 塊 的(de) 長度(ODBAXIS 結構的大小)。
   (4)輸出 : 指向(xiàng) ODBAXIS 結構的指針,包括控製軸的絕對(duì)位置數據。
  
    參照手冊提供的 cnc_absolute 參(cān)數,在調用時,可(kě)以一次獲取一係列數控軸的坐標數值,最(zuì)後隻讀取需要的目標(biāo)軸的數值即可。
 
    使用ret儲存返回值,用於判斷輸入的參數是否報錯,若無錯誤,應(yīng)為 EW_OK。之後, 用 浮 點 型 變 量 absoluteXf、absoluteYf、absoluteZf 分別儲存從(cóng) CNC 測試端獲取的 X,Y,Z 軸的數值,使用 Data[0] 讀取(qǔ)單個軸的(de)數值,從而避免了 Y 軸和 Z 軸出現重複讀取的(de)問題。最後,獲取的數據成功儲存在變量(liàng) absoluteXf、absoluteYf、absoluteZf 中。
 
     如此就能(néng)實現對機床三軸絕對坐(zuò)標(biāo)係的監控功能(néng),而接下來的相對坐(zuò)標係、機床坐標係、剩餘行(háng)程距(jù)離、進給速率(lǜ)、循環時間等(děng)數據的讀(dú)取邏輯和(hé)讀取絕對坐標(biāo)係的流程相同。
  
     3.4.3 界麵層
  
     通過 Qt 特(tè)有的信號與槽機製,采取通過對槽進行默(mò)認命名格式自動將(jiāng)控件信號與槽關聯 ;也可以利用 connect 函數(shù),手動建立信號與槽的連接,一個信號(hào)可指定(dìng)一個或者多個槽函數接收。首先針對通訊窗口界麵進行設計,利用QT Designer 編輯窗口界麵(miàn) ui,根據 cnc_allclibhndl3 函數的對應參數,分別添加單(dān)行編輯框 QLineEdit,並在左側添加標簽,注釋對應需要輸入的內容,分別為 IP 地(dì)址、端口號和延時,使用水平布局和(hé)空格調整布(bù)局 ; 其次,要實現(xiàn)參數與文本連接的第一步首先是要獲取編(biān)輯框輸入的數值,設計一個函數專(zhuān)門用來讀取(qǔ)編輯框數值,其(qí)中通過(guò)不同編輯框對應的指針變量名分別指向對應(yīng)編輯框的文本獲取函數 “text”,從而獲取用戶(hù)輸入的內容。

     之(zhī)後利用(yòng) getIPStr 函數作為 cnc_allclibhndl3的參數,即可實現將輸入的數值傳遞給 cnc 函數。要能夠讓 cnc 函數(shù)讀取到用戶輸入的數值,需要利用 connect 機製,在 cnc_allclibhndl3 前添加條件。設計 “連接” 和 “斷開” 按鈕,同時以太網通訊的槽(cáo) onslot_Connect 的定義中,添加(jiā)前置條件(jiàn)和調用 cnc 函數。
 
     接下來是三軸坐(zuò)標係顯示窗口,包括 :
  
    (1)利用 QT Designer 編輯 GUI。
    (2)根據需求,創建(jiàn)四個坐標界麵,分別(bié)用對象名 absolute_frm、relative_frm、machine_frm、left_frm,依次對應絕對、相對、機床和綜合坐標係窗(chuāng)口(kǒu)。需要標明對象(xiàng)窗口所顯示的(de)坐(zuò)標係的類型是什麽。利用 TextLable 的對象名調用文本設置函數,使得設計命名函數 SetPosName有命名文本的功能。
    (3)將文本框的數值同(tóng)功能層獲取函數進行關聯,分為(wéi)兩步,通過(guò)對象調用命令函(hán)數,以及調用獲取函數。
  
     以絕(jué)對坐標係為例,定義數據采集對(duì)象(xiàng),使(shǐ)用指針(zhēn) dcThread 指(zhǐ)向采(cǎi)集對(duì)象,並分配起始地址,如此可以通過調用(yòng) dcThread 指針(zhēn)達到等同於調用 DataCollection 的效果。
  
     利用 dcThread 調用命令函(hán)數 ,如void absolute(h),將全局句柄放入作為參數,即開始(shǐ)讀(dú)取 CNC 測試端的絕對坐標係數值(zhí),並將(jiāng)數值賦值給(gěi)中間函數 setAbs 的(de)變量,再由中間函數的變量賦值給獲取函數 getAbs 的參數(shù)。若直接將儲存 cnc_absolute 讀取數值的變量作為(wéi)文本內容,則會因為類(lèi)的(de)不同(tóng)而無法讀取。
  
     想要將編輯框數據與(yǔ) cnc 函數獲取的數值(zhí)同步,定義變量 ax,ay,az,調用 getAbs 函數,並將 ax,ay,az 代入參數,並(bìng)由 getAbs 的默認參數賦值給變量。由此,可(kě)以通(tōng)過 “setText”函數設置默認文本,將變量作為(wéi)參數放入其中,實現動態讀取數據、界麵更新的效(xiào)果。而相對坐標係、機床坐(zuò)標係、剩餘行(háng)程距離(lí)的三軸坐標顯示原理和絕對坐標係相同。
  
     3.5 結果顯示
  
     機床顯示界麵(miàn)是一個總體界(jiè)麵,它集合了機床狀態監控的各(gè)種內容。其主要目的有兩種(zhǒng) :

    (1) 動態顯示機床進給速率(lǜ)、轉速、加工件數、循環時間、運行時間(jiān),將功能層與界麵層關聯。
    (2) 將三軸坐標顯示窗口(kǒu)嵌入機床顯示界麵,通訊窗(chuāng)口利用按鈕與機床顯示界麵關聯。
  
     機床進給速率、轉速、加工(gōng)件(jiàn)數、循環時間、運行(háng)時間(jiān)動態讀取原理和三軸坐標係(xì)顯示窗口中(zhōng)絕對坐標係的原理(lǐ)相同(tóng)。
  
     三軸坐標顯示窗口嵌入機床顯示界麵需要(yào)實現界(jiè)麵層(céng)分析中(zhōng)所述要求,能夠全(quán)部顯示以及能夠單獨顯示。為此,可以通過點擊不(bú)同按鈕作為觸發條件,並集(jí) “和” 進行判斷,由此來切(qiē)換顯示窗(chuāng)口。經過調(diào)試,動態顯示的機床界麵如圖 5 所示。

  

圖 5 動(dòng)態顯示的機(jī)床界麵

     4. 結語 
  
     使用 VS2015 和 Qt 跨平台開發,以 FANUC0i-F 為具體測試對象,進行了基於 FANUC 數控係統機床軟件的二(èr)次開發工作,結論如(rú)下 :在硬件方麵,通過硬件(jiàn)外部接口與 PC 端的(de)連接,達成了遠程(chéng)操作顯示界麵、分離操(cāo)作的目的。目前(qián) CNC 側和 PC 屏電腦間采用局域網傳輸,今後可以考慮使用廣域網傳輸,進一(yī)步增加通訊距離 , 豐富(fù)應用場景。


     在軟件方麵,使用 C++ 編程(chéng)語言、DLL 動態鏈接庫調用、FOCAS 庫函數、QT 庫框(kuàng)架(jià)編程實現了以太網通訊的功能,成功通過內部接口(kǒu)完(wán)成通訊 ; 實(shí)現了機床坐標動態讀取、進給速率、轉速的實時讀取 ; 能夠對運行時間、加工件數(shù)、循環時(shí)間進行計數 ; 實(shí)現了對(duì)機床基本功能狀態的監控 ; 實(shí)現了通過按鈕關聯通訊窗口(kǒu)、彈出隱藏以及嵌入式等操作,簡化了機床(chuáng)界麵。

    投稿箱(xiāng):
        如果您(nín)有機床行業、企業相(xiàng)關新聞(wén)稿(gǎo)件發表,或進行資訊合作,歡迎聯係本網(wǎng)編輯部, 郵箱:skjcsc@vip.sina.com
国产999精品2卡3卡4卡丨日韩欧美视频一区二区在线观看丨一区二区三区日韩免费播放丨九色91精品国产网站丨XX性欧美肥妇精品久久久久久丨久久久久国产精品嫩草影院丨成人免费a级毛片丨五月婷婷六月丁香综合