基於 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
如果您(nín)有機床行業、企業相(xiàng)關新聞(wén)稿(gǎo)件發表,或進行資訊合作,歡迎聯係本網(wǎng)編輯部, 郵箱:skjcsc@vip.sina.com
更多相關(guān)信息
業界視點(diǎn)
| 更多
行業數據
| 更多
- 2024年11月 金屬切削機床產量數據
- 2024年11月 分地區金屬切削機(jī)床(chuáng)產(chǎn)量數據
- 2024年11月 軸承出口情況
- 2024年11月 基本型乘用車(轎車)產量數(shù)據
- 2024年11月 新能源汽車產量數據
- 2024年11月 新能源汽車銷量情況
- 2024年10月(yuè) 新能源汽車產量數據
- 2024年10月(yuè) 軸承出口情況
- 2024年10月(yuè) 分地區金屬切削機床產量數據
- 2024年10月 金屬切(qiē)削機床產量數(shù)據(jù)
- 2024年9月 新能源汽(qì)車銷量情況
- 2024年8月 新能源汽車產量數據
- 2028年8月(yuè) 基本型乘用車(轎車)產量數據
博文選萃
| 更多(duō)