一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

基于 FANUC 機床數(shù)控系統(tǒng)界面軟件二次開發(fā)的研究

 阿明哥哥資料區(qū) 2023-09-17
引言 

數(shù)控系統(tǒng)及其人機界面的出現(xiàn)使機床加工操作變得便捷與高效,而隨著行業(yè)發(fā)展,對加工精度、加工效率和工藝柔性的要求越來越高,數(shù)控通用人機界面已無法滿足這些需求,因此對機床數(shù)控系統(tǒng)人機界面軟件的二次開發(fā)成了數(shù)控機床生產(chǎn)廠家的重要任務。


圖片

目前市場上的數(shù)控機床人機界面多為嵌入式,面板尺寸小,操作工行動受到場地的局限,無法遠距離實時進行工藝參數(shù)調(diào)整、監(jiān)控等操作,從生產(chǎn)效率和安全性來說都存在一定的缺陷,自動化、生產(chǎn)效率受到了限制。FANUC 和SIEMENS 等國外數(shù)控廠商進口的數(shù)控系統(tǒng),其隨系統(tǒng)提供的人機界面是面向通用數(shù)控操作場景的,無法方便地制定機床配套工藝,不能滿足用戶的定制化需求。數(shù)控廠商在其配套的通用人機界面的基礎上,提供了人機界面開發(fā)接口,機床制造廠家就可以對人機界面進行二次開發(fā),擴展人機界面功能,提高人機界面軟件的專用性、易用性,以更大限度地發(fā)揮機床的價值。

圖片

本文選取 FANUC Series 0i-MF 數(shù)控系統(tǒng)作為二次開發(fā)基礎平臺,采用面向?qū)ο蟮姆椒ㄟM行軟件框架設計,二次開發(fā)接口為 FOCAS 庫(即FANUC Open CNC API Specifications, 簡 稱FOCAS),利用 QT 提供基礎編程庫,確定程序達到的功能有顯示界面、軟硬件通訊、機床參數(shù)寫入、機床參數(shù)讀取以及系統(tǒng)報警監(jiān)視等,實現(xiàn)對數(shù)控系統(tǒng)的二次開發(fā)。


1、開發(fā)工具和總體框架 

圖片

1.1 開發(fā)環(huán)境的選擇

FANUC 0i-MF 數(shù)控系統(tǒng)提供了二次開發(fā)接口(即 FOCAS),包含了數(shù)控連接和數(shù)控數(shù)據(jù)、PMC 數(shù)據(jù)讀寫功能,以及界面開發(fā)接口,即意味著基于此數(shù)控系統(tǒng)的人機界面二次開發(fā)自由度很大,架構(gòu)選取自由??蛇\行 FOCAS 庫的操作系統(tǒng)目前主要是 Microsoft Windows,Windows操作系統(tǒng)使用簡單,系統(tǒng)穩(wěn)定,用戶群體大,開發(fā)工具豐富,所以是 FANUC 數(shù)控二次開發(fā)首選。

軟件功能與界面庫可選用 MFC、.NET 和 Qt,MFC 雖然由微軟開發(fā)功能強大,但已經(jīng)過時不再維護,所以不建議選用,.NET 是微軟主力開發(fā)庫,但性能遜色于 C++ 開發(fā)的應用程序,Qt作為 C++ 語言開發(fā)的功能界面庫,既能方便地進行界面開發(fā),又有 C++ 便捷的底層訪問能力,其可靠性和寬松的開源協(xié)議使得 Qt 庫在工業(yè)界得到了廣泛的應用。結(jié)合 Windows 操作系統(tǒng)、FOCAS 庫和 Qt 編程庫的選取,微軟的 VisualStudio 就是較合適的開發(fā)工具了,安裝有 Qt 插件的 Visual Studio 2015 可方便地創(chuàng)建 Qt 應用程序解決方案,借助開發(fā)工具強大的功能,可輕松開展 FANUC 機床數(shù)控系統(tǒng)界面軟件的二次開發(fā)工作。測試環(huán)境可選用 FANUC 數(shù)控系統(tǒng)實體機或 FANUC CNC Guide。開發(fā)環(huán)境及工具如表 1 所示。

圖片

表 1 開發(fā)環(huán)境

與工具表

1.2  總體框架的確立

由于要實現(xiàn)的二次開發(fā)的功能較為明確,所以采用清晰的分層架構(gòu),分層架構(gòu)結(jié)構(gòu)簡單明了,各層職責分明。分層架構(gòu)主要分為通信層、功能層、界面層。通信層負責軟件功能層與數(shù)控系統(tǒng)的之間的數(shù)據(jù)交互,功能層負責軟件的功能實現(xiàn),向下與通信層交互數(shù)據(jù),向上給界面層提供功能接口,界面層向下負責對功能層的調(diào)用,向上負責與操作者的交互。二次開發(fā)的軟件總體框架圖如圖 1 所示。

圖片

圖 1 總體框架圖

二:開發(fā)過程及結(jié)果

圖片

2.1 硬件連接

首先進行硬件連接,把 FANUC 0i-MF 數(shù)控單元的以太網(wǎng)網(wǎng)口(ETHERNET)通過網(wǎng)線連接至 PC 屏,達成將人機操作界面屏幕放大、分離式操作的目的 ; 其次,建立與數(shù)控單元的通訊連接,如利用 Visual Studio 2015 導入 FOCAS動態(tài)鏈接庫,編寫程序調(diào)用功能函數(shù),與測試端 NC Guide 進行通訊 ; 再次,利用 FOCAS 庫函數(shù)設計機床參數(shù)數(shù)據(jù)寫入功能 ; 最后利用 QtDesigner 設計軟件界面。

2.2 界面分析

界面設計是整體框架的基礎,本文設計的人機界面采用多個窗口組合展示機床狀態(tài),展示程序號、三根軸四種坐標系的展示窗口、機床加工狀態(tài)以及通訊設置按鈕和界面切換按鈕。

人機界面利用單行文本框,采用統(tǒng)一格式,把數(shù)據(jù)名標注在文本框左側(cè),用于直觀地顯示讀取的信息。合理布局四個坐標顯示窗口的空隙和比例大小。為增加人機交互友好,下方控件按鈕分別對應調(diào)用通訊窗口和不同類型的坐標窗口切換,通過信號與槽的機制進行實現(xiàn)。

本文針對的數(shù)控系統(tǒng)是 FANUC 0i-MF 系列,僅支持以太網(wǎng)通訊,而在 FOCAS 控件庫中,已經(jīng)完成了對通訊協(xié)議的開發(fā)并將其封裝,作為開發(fā)者,需要做的是導入 FOCAS 控件庫,調(diào)用以太網(wǎng)通訊函數(shù),其會通過代理函數(shù),向功能函數(shù)發(fā)送請求,自動建立通訊。

體現(xiàn)面向?qū)ο蟮脑O計方法,將窗口封裝成單個類,通過在機床總界面依次創(chuàng)建窗口,在槽中利用枚舉類的邏輯判斷來刪除或插入窗口達到切換窗口坐標顯示的目的,實現(xiàn)人機交互。

2.3 人機界面框架設計

人機界面設計分為硬件連接和軟件設計兩部分,其中硬件連接用于實現(xiàn)人機界面的分離式設計,通過外部接口,將 FANUC 0i-MF 控制單元與上位機 PC 屏的網(wǎng)口相連。軟件部分負責實現(xiàn)數(shù)控機床監(jiān)控狀態(tài)的功能,見圖 2。

圖片

圖 2 軟硬件連接流程圖

人機界面模塊分為通訊層、功能層和界面層,見圖 3,通訊層負責建立通訊和斷開通訊。功能層主要負責對不同類型三軸坐標和加工狀態(tài)的讀寫。界面層分為通訊窗口、坐標顯示窗口和機床窗口這三部分。

圖片

圖 3 人機界面程序框架

2.4 軟件二次開發(fā)設計

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

圖片

圖 4 機床界面監(jiān)控總體框架

2.4.1 通訊層

機床界面要能夠動態(tài)顯示機床數(shù)據(jù),則須使界面與 CNC 系統(tǒng)通訊。FANUC 提供了 FOCAS通訊協(xié)議 , 使 PC 端與 FANUC 系統(tǒng)建立了通訊。在用戶 PC 端的開發(fā)環(huán)境應用程序中,調(diào)取 FANUC 提供的 FWLIB32/64.DLL 動態(tài)鏈接庫,由于 HSSB 需額外購買硬件來建立連接,因此沒有采用 HSSB 庫,而是選擇以太網(wǎng)庫。

 FWLIB32/64.DLL 鏈接庫包含了 FOCAS 的控件庫,其目的是將目標包裝,通過句柄來獲取目標對象的屬性。在以太網(wǎng)庫中,通過將 CNC 的 IP地址參數(shù)傳遞給 CNC allclibhndl3 函數(shù)來創(chuàng)建TCP/IP 連接。

以太網(wǎng)板中的數(shù)據(jù)窗口函數(shù)會通過 TCP/IP棧數(shù)據(jù)傳輸與用戶 PC 端進行以太網(wǎng)連接。兩者在連接過程中用戶 PC 端會將數(shù)據(jù)窗口函數(shù)的代理函數(shù)向以太網(wǎng)板發(fā)送打包請求,包括獲取數(shù)據(jù)屬性、數(shù)據(jù)數(shù)量等,以太網(wǎng)板響應請求、反饋發(fā)送數(shù)據(jù)內(nèi)容、錯誤代碼等。CNC 與以太網(wǎng)板通過 OPEN CNC I/F 在局部網(wǎng)絡中進行數(shù)據(jù)傳輸。

以太網(wǎng)的通訊 功 能 在 基 類 為 QDialog 的 對話 框 窗 口 類 LoginDiolag 獲取參數(shù)和在機床界面 FanucFrm 類中對通訊的槽定義來實現(xiàn)。

根據(jù) FOCAS 庫的 FWLIB64.h 頭文件和文獻手冊,可以看到需要連接和斷開以太網(wǎng)連接要使用函數(shù) “cnc_allclibhndl3” 和 “cnc_freelibhnd”。

cnc_allclibhndl3 其功能是分配庫的句柄并使用指定 IP 地址或主機名連接 CNC,實現(xiàn)以太網(wǎng)通信,需要以下參數(shù) :

(1)輸入 :ipaddr,使用字符串方式來確定需要連接的 CNC 測試端的 IP 地址或者是主機名。

(2)輸入 :port,確定 TCP 需要連接的端口,通常固定為 8193.

(3)輸入 :timeout,設定超時的時間,若設為0則忽略超時,庫函數(shù)會一直等待。

(4)輸出 :FlibHndl,指定一個包含庫句柄信息的指針型或者整型變量。

 cnc_freelibhndl 其功能是當程序終止時需要釋放庫句柄,防止數(shù)據(jù)累積報錯,即為中斷通訊連接,該函數(shù)需要輸入 FlibHndl 參數(shù),當程序結(jié)束時,需要釋放的庫句柄。

由此可以看出,程序以建立以太網(wǎng)通訊算作開始,以中斷通訊連接、釋放庫函數(shù)作為結(jié)束,這兩者分別調(diào)用 cnc_allclibhndl3 與 cnc_freelibhndl 都在通訊層實現(xiàn)。

通訊函數(shù)需要庫句柄、CNC 測試端的 IP 地址、端口號等其他參數(shù)傳遞給 CNC 以太網(wǎng)通信函數(shù)進行連接。在 FWLIB64 庫文件中,查FANUC 樣例手冊 ,可找到以太網(wǎng)通訊對應的 cnc 函數(shù)cnc_allclibnd3。在該函數(shù)中輸入對應的參數(shù)即可建立連接。通過 cnc_freelibhndl 斷開連接、輸入 IP 地址、端口號、時間延時等,要得知通訊連接是否建立成功可通過接受返回值來判斷彈出何種類型的提示窗。

2.4.2 功能層

需要實現(xiàn)的功能有顯示程序狀態(tài),顯示三軸的絕對坐標系、相對坐標系、剩余行程距離,顯示伺服軸轉(zhuǎn)速,顯示加工狀態(tài)。

根據(jù) FOCAS 提供的 FWLIB64.DLL 中,要實現(xiàn)上述機床狀態(tài)的監(jiān)控主要分為三部分 :

1)使用 FOCAS 庫函數(shù),從 CNC 測試端讀取機床參數(shù)。

(2)將從 CNC 測試端的機床參數(shù)數(shù)值賦值給變量,通過傳輸,利用程序中讀寫的變量在界面層顯示。

(3)將數(shù)據(jù)上傳。從機床數(shù)據(jù)讀取、機床數(shù)據(jù)用變量賦值寫入,數(shù)據(jù)動態(tài)更新依次進行。其中機床數(shù)據(jù)讀取使用 DataCollection 類,機床數(shù)據(jù)用變量賦值寫入用 MachinePosition 類。

要從 CNC 測試端讀取數(shù)據(jù),調(diào)用使用FOCAS 提供的 FWLIB64.h 頭文件中的 cnc 函數(shù)獲取參數(shù)數(shù)值 ; 其次,是要想辦法把儲存在該函數(shù)里變量中的數(shù)值傳遞給與界面顯示文本相關(guān)的函數(shù)。

以獲取絕對坐標系的 X,Y,Z 三軸數(shù)值為例,使用數(shù)據(jù)采集類的成員函數(shù) “voidabsolute(unsigned short h)” 作為讀取 cnc 測試端參數(shù)的指令,其參數(shù)句柄 h 就好比鑰匙,在調(diào)用 absolute 函數(shù)后把實參全局句柄 h 賦給absolute 函數(shù)的形參未定義的短句柄 h 后,解鎖指令,進行讀取。

在 absolute 函數(shù)中,需要讀取絕對坐標系的三軸坐標數(shù)值,根據(jù) FOCAS 庫函數(shù),應使用cnc 函 數(shù) “cnc_absolute”。

cnc_absolute: 讀 取 用 “ 軸 ” 指 定 軸 的 絕對位置數(shù)據(jù)。絕對位置存儲在 “ODBAXIS” 的“data[0]” 中。其參數(shù)有 :

(1)輸入 :FlibHndl,指定庫句柄。

(2)輸入 :axis,指定要讀取的軸數(shù),其中ALL_AXES 對 所 有 軸(ALL_AXES:-1),1,..,m 對單個軸(m: 控制軸數(shù))。

(3)輸 入 : length ,指 定 數(shù) 據(jù) 塊 的 長度(ODBAXIS 結(jié)構(gòu)的大?。?。

(4)輸出 : 指向 ODBAXIS 結(jié)構(gòu)的指針,包括控制軸的絕對位置數(shù)據(jù)。

參照手冊提供的 cnc_absolute 參數(shù),在調(diào)用時,可以一次獲取一系列數(shù)控軸的坐標數(shù)值,最后只讀取需要的目標軸的數(shù)值即可。

使用ret儲存返回值,用于判斷輸入的參數(shù)是否報錯,若無錯誤,應為 EW_OK。之后, 用 浮 點 型 變 量 absoluteXf、absoluteYf、absoluteZf 分別儲存從 CNC 測試端獲取的 X,Y,Z 軸的數(shù)值,使用 Data[0] 讀取單個軸的數(shù)值,從而避免了 Y 軸和 Z 軸出現(xiàn)重復讀取的問題。最后,獲取的數(shù)據(jù)成功儲存在變量 absoluteXf、absoluteYf、absoluteZf 中。

如此就能實現(xiàn)對機床三軸絕對坐標系的監(jiān)控功能,而接下來的相對坐標系、機床坐標系、剩余行程距離、進給速率、循環(huán)時間等數(shù)據(jù)的讀取邏輯和讀取絕對坐標系的流程相同

2.4.3 界面層

通過 Qt 特有的信號與槽機制,采取通過對槽進行默認命名格式自動將控件信號與槽關(guān)聯(lián) ;也可以利用 connect 函數(shù),手動建立信號與槽的連接,一個信號可指定一個或者多個槽函數(shù)接收。首先針對通訊窗口界面進行設計,利用QT Designer 編輯窗口界面 ui,根據(jù) cnc_allclibhndl3 函數(shù)的對應參數(shù),分別添加單行編輯框 QLineEdit,并在左側(cè)添加標簽,注釋對應需要輸入的內(nèi)容,分別為 IP 地址、端口號和延時,使用水平布局和空格調(diào)整布局 ; 其次,要實現(xiàn)參數(shù)與文本連接的第一步首先是要獲取編輯框輸入的數(shù)值,設計一個函數(shù)專門用來讀取編輯框數(shù)值,其中通過不同編輯框?qū)闹羔樧兞棵謩e指向?qū)庉嬁虻奈谋精@取函數(shù) “text”,從而獲取用戶輸入的內(nèi)容。

之后利用 getIPStr 函數(shù)作為 cnc_allclibhndl3的參數(shù),即可實現(xiàn)將輸入的數(shù)值傳遞給 cnc 函數(shù)。要能夠讓 cnc 函數(shù)讀取到用戶輸入的數(shù)值,需要利用 connect 機制,在 cnc_allclibhndl3 前添加條件。設計 “連接” 和 “斷開” 按鈕,同時以太網(wǎng)通訊的槽 onslot_Connect 的定義中,添加前置條件和調(diào)用 cnc 函數(shù)。

接下來是三軸坐標系顯示窗口,包括 :

1)利用 QT Designer 編輯 GUI。

(2)根據(jù)需求,創(chuàng)建四個坐標界面,分別用對象名 absolute_frm、relative_frm、machine_frm、left_frm,依次對應絕對、相對、機床和綜合坐標系窗口。需要標明對象窗口所顯示的坐標系的類型是什么。利用 TextLable 的對象名調(diào)用文本設置函數(shù),使得設計命名函數(shù) SetPosName有命名文本的功能。

3)將文本框的數(shù)值同功能層獲取函數(shù)進行關(guān)聯(lián),分為兩步,通過對象調(diào)用命令函數(shù),以及調(diào)用獲取函數(shù)。

以絕對坐標系為例,定義數(shù)據(jù)采集對象,使用指針 dcThread 指向采集對象,并分配起始地址,如此可以通過調(diào)用 dcThread 指針達到等同于調(diào)用 DataCollection 的效果。

利用 dcThread 調(diào)用命令函數(shù) ,如void absolute(h),將全局句柄放入作為參數(shù),即開始讀取 CNC 測試端的絕對坐標系數(shù)值,并將數(shù)值賦值給中間函數(shù) setAbs 的變量,再由中間函數(shù)的變量賦值給獲取函數(shù) getAbs 的參數(shù)。若直接將儲存 cnc_absolute 讀取數(shù)值的變量作為文本內(nèi)容,則會因為類的不同而無法讀取。

想要將編輯框數(shù)據(jù)與 cnc 函數(shù)獲取的數(shù)值同步,定義變量 ax,ay,az,調(diào)用 getAbs 函數(shù),并將 ax,ay,az 代入?yún)?shù),并由 getAbs 的默認參數(shù)賦值給變量。由此,可以通過 “setText”函數(shù)設置默認文本,將變量作為參數(shù)放入其中,實現(xiàn)動態(tài)讀取數(shù)據(jù)、界面更新的效果。而相對坐標系、機床坐標系、剩余行程距離的三軸坐標顯示原理和絕對坐標系相同。

2.5 結(jié)果顯示

機床顯示界面是一個總體界面,它集合了機床狀態(tài)監(jiān)控的各種內(nèi)容。其主要目的有兩種 :

(1) 動態(tài)顯示機床進給速率、轉(zhuǎn)速、加工件數(shù)、循環(huán)時間、運行時間,將功能層與界面層關(guān)聯(lián)。

(2) 將三軸坐標顯示窗口嵌入機床顯示界面,通訊窗口利用按鈕與機床顯示界面關(guān)聯(lián)。

機床進給速率、轉(zhuǎn)速、加工件數(shù)、循環(huán)時間、運行時間動態(tài)讀取原理和三軸坐標系顯示窗口中絕對坐標系的原理相同。

三軸坐標顯示窗口嵌入機床顯示界面需要實現(xiàn)界面層分析中所述要求,能夠全部顯示以及能夠單獨顯示。為此,可以通過點擊不同按鈕作為觸發(fā)條件,并集 “和” 進行判斷,由此來切換顯示窗口。經(jīng)過調(diào)試,動態(tài)顯示的機床界面如圖 5 所示。

圖片

圖 4 動態(tài)顯示的機床界面

結(jié)語  

使用 VS2015 和 Qt 跨平臺開發(fā),以 FANUC0i-F 為具體測試對象,進行了基于 FANUC 數(shù)控系統(tǒng)機床軟件的二次開發(fā)工作,結(jié)論如下 :在硬件方面,通過硬件外部接口與 PC 端的連接,達成了遠程操作顯示界面、分離操作的目的。目前 CNC 側(cè)和 PC 屏電腦間采用局域網(wǎng)傳輸,今后可以考慮使用廣域網(wǎng)傳輸,進一步增加通訊距離 , 豐富應用場景。

在軟件方面,使用 C++ 編程語言、DLL 動態(tài)鏈接庫調(diào)用、FOCAS 庫函數(shù)、QT 庫框架編程實現(xiàn)了以太網(wǎng)通訊的功能,成功通過內(nèi)部接口完成通訊 ; 實現(xiàn)了機床坐標動態(tài)讀取、進給速率、轉(zhuǎn)速的實時讀取 ; 能夠?qū)\行時間、加工件數(shù)、循環(huán)時間進行計數(shù) ; 實現(xiàn)了對機床基本功能狀態(tài)的監(jiān)控 ; 實現(xiàn)了通過按鈕關(guān)聯(lián)通訊窗口、彈出隱藏以及嵌入式等操作,簡化了機床界面。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产又粗又长又大高潮视频| 国产成人亚洲精品青草天美| 高清国产日韩欧美熟女| 一个人的久久精彩视频| 久久国产精品热爱视频| 蜜桃av人妻精品一区二区三区| 久久99精品日韩人妻| 黄片免费在线观看日韩| 日韩偷拍精品一区二区三区 | 欧美精品二区中文乱码字幕高清| 成人免费观看视频免费| 欧美日韩国产福利在线观看| 国产爆操白丝美女在线观看| 亚洲国产精品无遮挡羞羞| 欧美一区二区三区99| 欧美一区二区三区喷汁尤物 | 老熟女露脸一二三四区| 欧美国产在线观看精品| 欧美一区日韩二区亚洲三区| 99久久精品午夜一区| 视频一区二区黄色线观看| 日本一区二区三区黄色| 五月激情五月天综合网| 99日韩在线视频精品免费| 韩国激情野战视频在线播放| 免费国产成人性生活生活片| 久久热这里只有精品视频| 男人把女人操得嗷嗷叫| 不卡视频在线一区二区三区| 一本色道久久综合狠狠躁| 亚洲精品中文字幕欧美| 国产真人无遮挡免费视频一区| 91日韩欧美国产视频| 国产精品不卡一区二区三区四区 | 中文字幕在线区中文色 | 国产又粗又猛又爽又黄的文字| 99国产高清不卡视频| 亚洲一区二区三区福利视频| 丰满少妇被粗大猛烈进出视频| 久久精品国产熟女精品| 亚洲国产成人久久一区二区三区|