吳慧杰, 王 品
?
數(shù)控系統(tǒng)人機(jī)界面二次開發(fā)平臺(tái)的設(shè)計(jì)①
吳慧杰1,2, 王 品2,3
1(中國(guó)科學(xué)院大學(xué), 北京 100049)2(中國(guó)科學(xué)院沈陽(yáng)計(jì)算技術(shù)研究所, 沈陽(yáng) 110168)3(沈陽(yáng)高精數(shù)控智能技術(shù)股份有限公司, 沈陽(yáng) 110168)
數(shù)控系統(tǒng)自帶的標(biāo)準(zhǔn)化的人機(jī)界面, 展現(xiàn)給用戶大多是同一種形式, 不能滿足用戶特殊定制需求以及專用的數(shù)控系統(tǒng)的界面需求. 在分析用戶的界面定制需求的基礎(chǔ)上, 提出基于Qt的Graphics View Framework及model/view架構(gòu)的可視化數(shù)控系統(tǒng)人機(jī)界面二次開發(fā)平臺(tái)設(shè)計(jì)方法. 首先采用面向?qū)ο蟮亩伍_發(fā)方法將界面所需的組件注冊(cè)到平臺(tái)并綁定對(duì)應(yīng)的屬性對(duì)象, 然后采用參數(shù)化的二次開發(fā)方法完成界面的定制, 最后用XML文件作為配置文件描述定制的圖形界面, 在開發(fā)平臺(tái)與數(shù)控系統(tǒng)之間傳遞界面數(shù)據(jù). 二次開發(fā)平臺(tái)主要包括PC 端配置平臺(tái)以及NC端解析平臺(tái)兩個(gè)模塊. 實(shí)驗(yàn)結(jié)果表明平臺(tái)在數(shù)控系統(tǒng)人機(jī)界面的專項(xiàng)定制及復(fù)用方面取得良好的效果, 提高了數(shù)控系統(tǒng)的人機(jī)界面開發(fā)效率.
數(shù)控系統(tǒng); 人機(jī)界面; 二次開發(fā); XML配置文件
隨著工業(yè)化進(jìn)程的不斷推進(jìn), 一個(gè)國(guó)家的數(shù)控化率的高低已經(jīng)成為衡量其機(jī)械工業(yè)技術(shù)水平的一個(gè)重要指標(biāo). 開放式數(shù)控系統(tǒng)要求開發(fā)出方便擴(kuò)展、功能柔性并且對(duì)用戶開放的數(shù)控系統(tǒng), 便于用戶基于其開放平臺(tái)結(jié)合專有工藝進(jìn)行二次開發(fā). 人機(jī)界面(Human Machine Interface, 簡(jiǎn)稱HMI)是人與數(shù)控系統(tǒng)之間傳遞、交換信息的媒介和對(duì)話窗口, 是數(shù)控系統(tǒng)的重要組成部分. 數(shù)控系統(tǒng)的人機(jī)界面發(fā)展也集中在專用機(jī)床的應(yīng)用、特殊結(jié)構(gòu)的引用以及用戶操作簡(jiǎn)化等方面. 目前國(guó)內(nèi)的數(shù)控系統(tǒng)自帶的標(biāo)準(zhǔn)化的人機(jī)界面, 展現(xiàn)給用戶的大多是同一種形式[1], 這種標(biāo)準(zhǔn)化的人機(jī)界面對(duì)許多專用數(shù)控系統(tǒng)都不是最優(yōu)化的設(shè)計(jì)[2], 已經(jīng)不能滿足用戶的需求. 其一, 不能滿足用戶對(duì)特定加工工藝的個(gè)性化定制需求; 其二, 如果用戶在系統(tǒng)的使用過(guò)程中提出新的功能需求, 新功能的開發(fā)周期往往不能及時(shí)響應(yīng)市場(chǎng)需求. 而且隨著系統(tǒng)規(guī)模不斷擴(kuò)大、系統(tǒng)功能不斷增加完善, 重新編寫界面代碼的時(shí)間和成本都將成倍遞增. 因此, 需要開發(fā)一種數(shù)控系統(tǒng)人機(jī)界面二次開發(fā)平臺(tái), 用戶基于此平臺(tái)可以根據(jù)特定的功能需求快速便捷地開發(fā)定制人機(jī)界面, 降低開發(fā)和維護(hù)成本. 不僅滿足用戶對(duì)數(shù)控系統(tǒng)的專業(yè)化、個(gè)性化需求, 而且滿足開放式數(shù)控系統(tǒng)的便于擴(kuò)展、對(duì)用戶開放等需求.
本文提出的數(shù)控系統(tǒng)人機(jī)界面二次開發(fā)平臺(tái), 該平臺(tái)具有可視化、易擴(kuò)展、易復(fù)用、易維護(hù)等特性. 用戶基于平臺(tái)可以自己配置人機(jī)界面上傳到數(shù)控系統(tǒng)服務(wù)器, 用戶所見(jiàn)即所得, 不需要學(xué)習(xí)任何的編程語(yǔ)言. 開發(fā)人員也可以利用平臺(tái)進(jìn)行系統(tǒng)界面的修改、升級(jí), 不需要重新編寫代碼, 大大降低開發(fā)成本, 提高開發(fā)效率.
本文設(shè)計(jì)的數(shù)控系統(tǒng)人機(jī)界面二次開發(fā)平臺(tái)主要包括PC端配置平臺(tái)和NC端解析平臺(tái)兩個(gè)模塊. 下面對(duì)兩個(gè)模塊作具體的描述.
PC端配置平臺(tái)是基于Qt的圖形視圖架構(gòu)開發(fā)的可視化的界面配置軟件, 用于注冊(cè)并配置數(shù)控系統(tǒng)人機(jī)界面的組件及其屬性, 并自動(dòng)生成XML配置文件. 主要包括組件注冊(cè)層、界面定制層、文件生成層:
(1) 組件注冊(cè)層: 用于注冊(cè)配置人機(jī)界面需要的系統(tǒng)的組件, 主要分為三類: 顯示組件、編輯組件以及事件組件. 注冊(cè)各種類型的組件到系統(tǒng)的組件盒, 并且將各種組件對(duì)應(yīng)的不同的屬性對(duì)象綁定到組件中. 在該層提供用戶擴(kuò)展系統(tǒng)所需的二次開發(fā)接口框架,提高系統(tǒng)的可復(fù)用性與可擴(kuò)展性.
(2) 界面定制層: 用于定制用戶所需的個(gè)性化的、專用化的數(shù)控系統(tǒng)人機(jī)界面. 并且配置各個(gè)組件的屬性值, 存儲(chǔ)到組件綁定的屬性對(duì)象中.
(3) XML配置文件用于描述人機(jī)界面的圖形化數(shù)據(jù), 完成PC端配置平臺(tái)和NC端解析平臺(tái)的數(shù)據(jù)傳遞. XML是純數(shù)據(jù)描述, 與編程語(yǔ)言、操作系統(tǒng)或傳輸協(xié)議均無(wú)關(guān)系, 因此可以將數(shù)據(jù)從以代碼為中心的基礎(chǔ)結(jié)構(gòu)所產(chǎn)生的約束中解放出來(lái), 可以做到將圖形用戶界面與結(jié)構(gòu)化數(shù)據(jù)分割開來(lái)[3], 具有良好的可擴(kuò)展性和適用性, 是用來(lái)描述圖形用戶界面的最佳載體[4]. 基于XML的界面自動(dòng)生成比基于模型驅(qū)動(dòng)的軟件界面更加靈活多變, 可以同時(shí)運(yùn)行在不同的平臺(tái)上, 而且對(duì)于開發(fā)后用戶界面的控制也更加容易.
NC端解析平臺(tái)讀取并解析配置文件數(shù)據(jù), 完成數(shù)據(jù)與原數(shù)控系統(tǒng)的交互并顯示PC端配置的人機(jī)界面. 包括文件解析層、調(diào)度管理層、通信服務(wù)層、系統(tǒng)接口層.
如圖1所示, 為平臺(tái)總體框架圖. PC端配置平臺(tái)注冊(cè)組件、屬性、屬性編輯器, 然后從注冊(cè)的組件中選擇需要的組件在頁(yè)面中進(jìn)行定制, 根據(jù)不同的數(shù)控系統(tǒng)人機(jī)界面需求定制不同的人機(jī)界面, 然后配置各個(gè)組件的屬性值, 將配置完畢的人機(jī)界面信息保存到XML配置文件中; 通過(guò)以太網(wǎng)將配置文件發(fā)送到NC端解析平臺(tái); 數(shù)控系統(tǒng)解析配置文件, 根據(jù)屬性值顯示人機(jī)界面, 最終達(dá)到顯示用戶定制的人機(jī)界面的目的.
圖1 平臺(tái)總體框架圖
2.1 PC端配置平臺(tái)模塊
PC端配置平臺(tái)是基于Qt的圖形視圖框架開發(fā)的可視化的應(yīng)用程序, 工作在PC機(jī)上. 用戶只需要從組件盒選擇要添加的組件, 并且配置好組件的位置、名稱、文本、大小、字體、背景色等公共屬性信息, 然后根據(jù)組件的不同類型設(shè)置組件的特有屬性, 保存到配置文件中并利用系統(tǒng)集成的軟件將配置文件上傳到數(shù)控系統(tǒng)服務(wù)器.
為了滿足數(shù)控系統(tǒng)對(duì)精度、實(shí)時(shí)性等方面的高要求, PC端配置平臺(tái)允許用戶配置數(shù)控系統(tǒng)對(duì)應(yīng)的多個(gè)界面. 按照系統(tǒng)不同的功能需求以及各個(gè)界面不同的性質(zhì), 將界面設(shè)計(jì)成不同的模式, 并且可以在各個(gè)界面之間方便的切換[5]. 在新建工程時(shí)配置好系統(tǒng)的分辨率、頁(yè)面數(shù)量、過(guò)程數(shù)、每個(gè)過(guò)程的軸數(shù)、軸名及主軸數(shù)、以及系統(tǒng)上電首頁(yè)等系統(tǒng)屬性. 而且用戶可以隨時(shí)對(duì)上述屬性做反復(fù)的修改, 使用戶配置的信息便于復(fù)用, 提高系統(tǒng)可重用性.
2.1.1組件注冊(cè)層
組件是人機(jī)界面中最基本也是最重要的單元, 人機(jī)界面由一個(gè)個(gè)不同類型的組件組合而成[6]. 用戶利用二次開發(fā)平臺(tái)界面中的組件盒, 通過(guò)選擇拖拽一系列的操作以及屬性的配置, 生成滿足專用需求的人機(jī)界面. 組件注冊(cè)層充分利用了面向?qū)ο蟮脑O(shè)計(jì)思想, 采用基于面向?qū)ο蟮亩伍_發(fā)技術(shù), 充分發(fā)揮類的繼承性、封裝性、多態(tài)性等特點(diǎn), 實(shí)現(xiàn)平臺(tái)中組件注冊(cè)層的框架設(shè)計(jì). 將平臺(tái)中涉及到的組件、組件屬性、屬性編輯器等一切客觀的實(shí)體都看成對(duì)象, 復(fù)雜的對(duì)象可以由簡(jiǎn)單的對(duì)象經(jīng)過(guò)組合構(gòu)成[7], 例如組件的幾何形狀屬性是一個(gè)屬性對(duì)象, 它又是由X、Y、寬度、高度四個(gè)屬性對(duì)象組成. 每一個(gè)屬性對(duì)象都有各自綁定的屬性編輯器對(duì)象. 對(duì)象與對(duì)象之間通過(guò)統(tǒng)一的信號(hào)-槽的消息傳遞機(jī)制實(shí)現(xiàn)相互聯(lián)系.
為了支持平臺(tái)的可擴(kuò)展性和可移植性, 將各個(gè)對(duì)象的定義與實(shí)現(xiàn)分離, 通過(guò)繼承展現(xiàn)各個(gè)對(duì)象之間的關(guān)系, 再通過(guò)各個(gè)對(duì)象提供的重載和虛函數(shù)的特性以及實(shí)體的動(dòng)態(tài)性[8], 建立了面向?qū)ο蟮亩伍_發(fā)平臺(tái)接口框架, 提供了對(duì)于平臺(tái)進(jìn)行擴(kuò)展的面向應(yīng)用程序的二次開發(fā)接口API, 包括組件擴(kuò)展接口API、組件屬性擴(kuò)展接口API和屬性編輯器擴(kuò)展接口API等. 用戶基于平臺(tái)提供的API可以實(shí)現(xiàn)對(duì)組件、組件屬性、屬性編輯器等對(duì)象和行為的擴(kuò)展, 使平臺(tái)具有良好的可擴(kuò)展性.
在分析數(shù)控系統(tǒng)人機(jī)界面的顯示特點(diǎn)之后, 根據(jù)面向?qū)ο蟮脑O(shè)計(jì)方法, 組件的類層次結(jié)構(gòu)如圖2所示. 將平臺(tái)的組件歸納為以下幾類:
(1) 顯示組件: 用于顯示數(shù)控系統(tǒng)運(yùn)行過(guò)程中的各個(gè)參數(shù)值、表達(dá)式以及界面組成的一些靜態(tài)元素, 如圖片等.
(2) 編輯組件: 用于用戶的輸入.
(3) 事件組件: 用于對(duì)數(shù)控系統(tǒng)的各種控制事件, 如頁(yè)面跳轉(zhuǎn)、文件打開等事件操作.
各種組件根據(jù)用途分別擴(kuò)展上述三種組件類型, 每一個(gè)組件都有UUID號(hào)用作程序的唯一標(biāo)識(shí). 用戶可以根據(jù)需要擴(kuò)展多種類型的組件, 本系統(tǒng)中設(shè)計(jì)了最基本的標(biāo)簽、輸入框、按鈕組件.
用戶在擴(kuò)展組件類型時(shí), 需要定義繼承自組件基類的類, 在類中實(shí)現(xiàn)組件定義、綁定屬性等各種相關(guān)操作的接口, 下面對(duì)組件擴(kuò)展API主要的接口類型以及實(shí)現(xiàn)的功能進(jìn)行介紹.
(1) createObject(): 用于創(chuàng)建圖形視圖框架中顯示在QGraphicsProxyWidget上的控件, 比如有Label、LineEdit、Button等, 將定義的控件綁定到QGraphicsProxyWidget上. 該接口無(wú)返回值.
(2) initProperty(): 用于將屬性對(duì)象綁定到組件上. 該接口也沒(méi)有返回值.
(3) setDefault(): 將綁定到組件的每一個(gè)屬性對(duì)象賦初始值. 無(wú)返回值.
(4) setPropertyValue(const QString &name, const QVariant &value): 設(shè)置屬性對(duì)象的值. 參數(shù)name表示要設(shè)置的屬性名稱, value表示屬性值. 無(wú)返回值.
(5) dirtyChanged(): 表示屬性的變化, 在頁(yè)面上直接改變屬性的值時(shí), 要通過(guò)該接口發(fā)送信號(hào), 用于屬性編輯列表的更新.
通過(guò)分析數(shù)控系統(tǒng)的屬性對(duì)象, 歸納出各種類型對(duì)象的公有屬性以及各個(gè)組件對(duì)應(yīng)的特有屬性, 再將設(shè)計(jì)對(duì)象按照不同的特征結(jié)構(gòu)進(jìn)行分類設(shè)計(jì). 對(duì)于組件, 設(shè)計(jì)了所有組件共同的基類AbstractItem, 它的屬性可以分為兩類: 靜態(tài)屬性特征用于描述組件的數(shù)據(jù); 動(dòng)態(tài)屬性特征用于描述對(duì)組件的操作. 這些屬性都封裝在頂層的結(jié)構(gòu)中, 對(duì)于用戶來(lái)說(shuō)是不可見(jiàn)的, 體現(xiàn)面向?qū)ο蟮姆庋b性. 平臺(tái)注冊(cè)的屬性的層次圖如圖3所示.
圖3給出了平臺(tái)注冊(cè)的最基本的屬性, 其他的屬性都可以通過(guò)這些基本屬性組合而成. 例如, 組件最基本的GeometryProperty屬性, 用于描述組件的位置以及大小, 該屬性就可以由四個(gè)IntProperty組成. 其他的一些屬性構(gòu)成的方法類似, 可以在屬性中包含一個(gè)或者多個(gè)基本屬性為子屬性, 構(gòu)成組件所需的復(fù)雜屬性.
在將屬性綁定到組件的過(guò)程中, 公有的屬性放到結(jié)構(gòu)的頂層組件中, 特有的屬性放到結(jié)構(gòu)的底層組件中. 下面對(duì)將屬性注冊(cè)到系統(tǒng)以及綁定到組件的注冊(cè)綁定機(jī)制進(jìn)行詳細(xì)說(shuō)明.
屬性注冊(cè)綁定機(jī)制的設(shè)計(jì)要考慮到系統(tǒng)的可維護(hù)、可擴(kuò)展、靈活性等非功能需求. 考慮到用戶后續(xù)可能對(duì)組件屬性以及屬性編輯器進(jìn)行擴(kuò)展, 充分發(fā)揮了面向?qū)ο蟪绦蛟O(shè)計(jì)的封裝、繼承、多態(tài)等特性降低系統(tǒng)的耦合度. 用戶在對(duì)屬性進(jìn)行擴(kuò)展時(shí), 只需要編寫要擴(kuò)展的屬性對(duì)象并實(shí)現(xiàn)預(yù)留的接口即可, 不會(huì)對(duì)已有的屬性造成任何的影響. 本文采用最基本的簡(jiǎn)單工廠設(shè)計(jì)模式, 降低系統(tǒng)的耦合度, 完整封裝屬性對(duì)象. 屬性注冊(cè)機(jī)制的結(jié)構(gòu)圖如圖4所示.
圖4 屬性注冊(cè)機(jī)制的結(jié)構(gòu)圖
具體的注冊(cè)機(jī)制如下所述: 首先提供一個(gè)屬性基類AbstractProperty類, 它包含了value、attribute、property、children、parent、item等屬性, 還提供了用于文件生成層的toXML()、fromXML()等方法, 然后其他的各種基本屬性均繼承自該基類, 按需重寫基類的方法, 這樣就大大降低了系統(tǒng)的耦合度, 修改或者添加新的屬性類的時(shí)候不會(huì)影響到其他的屬性類.
然后給出一個(gè)工廠類PropertyFactory用于得到指定的屬性對(duì)象, 并將其綁定到組件上. PropertyFactory類提供了兩個(gè)主要的方法. 一個(gè)用于注冊(cè)屬性的registerProperty()方法, 該方法需要提供的參數(shù)包括屬性名稱name以及要注冊(cè)到的屬性的元數(shù)據(jù)結(jié)構(gòu)metaObject, 然后將該屬性注冊(cè)到metaObject結(jié)構(gòu)中, 用一個(gè)Map的二元集合存儲(chǔ)該屬性的名稱以及元數(shù)據(jù)結(jié)構(gòu). 另一個(gè)用于得到指定的屬性對(duì)象將其綁定到指定的組件上的createProperty()方法, 這個(gè)方法需要提供的參數(shù)為屬性的名稱name, 方法會(huì)根據(jù)名稱從Map結(jié)構(gòu)中查找對(duì)應(yīng)的屬性, 返回屬性對(duì)象, 將其綁定到組件上, 并將屬性的item屬性設(shè)置為需要綁定的組件對(duì)象.
在屬性注冊(cè)時(shí), 由于各種組件所需的屬性類型較多, 本文采用了帶參數(shù)的宏定義的方法來(lái)預(yù)處理注冊(cè)機(jī)制, 這樣在屬性類型較多時(shí), 不但可以很好的防止出錯(cuò), 提高代碼的可移植性, 而且可以更加順利的整合代碼規(guī)模提高運(yùn)行速度. 本文的宏定義方法只在平臺(tái)運(yùn)行時(shí)執(zhí)行一次, 將所有的屬性對(duì)象一次性的注冊(cè)到元對(duì)象metaObject結(jié)構(gòu)中, 存儲(chǔ)到Map集合, 避免多次調(diào)用宏產(chǎn)生的副作用所帶來(lái)的不可預(yù)估的后果. 宏定義如下:
#ifndef registerProperty
#define registerProperty(name,type)
PropertyFactory::registerProperty(name,
&type::metaObject)
#endif
然后提供一個(gè)用于注冊(cè)的registerBaseProperty()函數(shù), 該函數(shù)在平臺(tái)啟動(dòng)時(shí)執(zhí)行, 將所有的注冊(cè)函數(shù)包含在函數(shù)體中運(yùn)行一次即可將所有的屬性注冊(cè)到平臺(tái)的結(jié)構(gòu)中. 例如要注冊(cè)Bool類型的屬性, 只需要將registerProperty(“Bool”,BoolProperty)包含在registerBaseProperty()函數(shù)體, 就會(huì)調(diào)用PropertyFactory::registerProperty()方法注冊(cè)屬性對(duì)象.
將屬性綁定到組件的綁定機(jī)制具體過(guò)程為: 在組件基類AbstractItem類聲明有一個(gè)用于存儲(chǔ)描述組件的屬性的Map集合, 將屬性的名稱作為鍵值存儲(chǔ). 然后聲明一個(gè)InitProperty()方法, 將所有組件共有的屬性, 例如ObjectName、GeometryProperty等保存在Map集合中. 在底層組件也就是各個(gè)子類中重寫InitProperty()方法, 首先調(diào)用父類的該方法, 將共有的屬性先存儲(chǔ)到子類的Map集合中, 然后再創(chuàng)建子類自己的特有屬性. 然后就可以從Map集合中查找具體的屬性進(jìn)行配置. 將屬性編輯器注冊(cè)到屬性對(duì)象的注冊(cè)機(jī)制類似, 不再做詳細(xì)描述.
2.1.2界面定制層
界面定制層實(shí)現(xiàn)界面的定制功能, 完成各種組件的添加、組件屬性的設(shè)置; 界面定制層包括頁(yè)面視口、屬性編輯視口、組件列表視口三個(gè)視口以不同的形式展現(xiàn)用戶定置的人機(jī)界面, 三個(gè)視口數(shù)據(jù)統(tǒng)一; 屬性編輯視口以樹型結(jié)構(gòu)顯示組件的各個(gè)屬性; 組件列表視口以樹型結(jié)構(gòu)顯示系統(tǒng)添加的頁(yè)面以及每一個(gè)頁(yè)面添加的組件. 如圖5所示為三個(gè)視口實(shí)時(shí)變化交互方式.
圖5 三個(gè)視口實(shí)時(shí)變化交互方式圖
三個(gè)視口采用Qt特殊的信號(hào)-槽的消息傳遞機(jī)制實(shí)現(xiàn)數(shù)據(jù)的統(tǒng)一. Qt摒棄了傳統(tǒng)的消息驅(qū)動(dòng)的機(jī)制, 創(chuàng)新性的提出了一種在對(duì)象之間進(jìn)行通訊的非常先進(jìn)的MOC機(jī)制也就是信號(hào)-槽的消息傳遞機(jī)制[9]. 這種傳遞機(jī)制削弱了各個(gè)對(duì)象之間的耦合度, 信號(hào)發(fā)射的對(duì)象無(wú)需了解哪一個(gè)對(duì)象的槽函數(shù)對(duì)這個(gè)信號(hào)做出反應(yīng), 同樣對(duì)象的槽函數(shù)也無(wú)須知道是哪一個(gè)信號(hào)發(fā)射觸發(fā)自己[7], 只需要用connect()函數(shù)將信號(hào)槽關(guān)聯(lián), 那么信號(hào)在發(fā)射時(shí)槽函數(shù)一定會(huì)被調(diào)用, 這是Qt的機(jī)制保證的. 上述的三個(gè)視口均聲明了多個(gè)信號(hào)、槽函數(shù), 保證視口間數(shù)據(jù)的統(tǒng)一. 每個(gè)視口一旦有操作發(fā)生, 該操作對(duì)應(yīng)的信號(hào)就會(huì)發(fā)射, 其他的視口的槽函數(shù)做出響應(yīng)更新顯示.
頁(yè)面視口添加的組件包括顯示組件、編輯組件、事件組件三種. 添加組件后用戶可以通過(guò)拖拽、編輯、水平等距、垂直等距等快捷操作配置組件通用屬性. 除了通用屬性, 還要設(shè)置各種組件特有的屬性. 如圖6為各種組件的特有屬性設(shè)置流程圖.
頁(yè)面定制層的定制過(guò)程全部采用參數(shù)化的設(shè)計(jì)方法. 這種方法保持了各個(gè)組件結(jié)構(gòu)之間的拓?fù)潢P(guān)系不變[10], 組件的所有屬性一律采用參數(shù)來(lái)描述和控制, 某一個(gè)參數(shù)值的變化將會(huì)直接導(dǎo)致三個(gè)視口中顯示內(nèi)容的自動(dòng)變化, 提高了組件的修改重構(gòu)能力, 極大的提升平臺(tái)的柔性設(shè)計(jì)[10]. 參數(shù)化設(shè)計(jì)特別適合用于界面的組件結(jié)構(gòu)形式固定而結(jié)構(gòu)尺寸經(jīng)常變化的規(guī)格化、標(biāo)準(zhǔn)化、系列化的設(shè)計(jì), 利用參數(shù)化的設(shè)計(jì)來(lái)描述組件的形狀特征[11], 可以極大的提高界面的配置速度.
圖6 組件的特有屬性設(shè)置流程圖
2.1.3文件生成層
文件生成層讀取用戶配制的人機(jī)界面數(shù)據(jù), 將數(shù)據(jù)封裝到XML節(jié)點(diǎn)對(duì)象中, 自動(dòng)生成配置文件.
2.2 NC端解析平臺(tái)模塊
PC端將生成的配置文件通過(guò)以太網(wǎng)傳送到數(shù)控系統(tǒng)中由文件解析層解析并通過(guò)基于數(shù)控系統(tǒng)的統(tǒng)一消息庫(kù)和統(tǒng)一消息接口的模塊交互機(jī)制完成與數(shù)控系統(tǒng)的融合通信.
文件解析層讀取并解析XML配置文件數(shù)據(jù), 采用基于預(yù)處理的解析技術(shù)[12]. 如圖7所示.
圖7 文件解析流程圖
調(diào)度管理層實(shí)現(xiàn)模塊初始化、功能模塊調(diào)用、系統(tǒng)配置與模塊間交互等功能, 將中性語(yǔ)言描述的數(shù)控專用控制功能、圖形用戶界面定制等功能轉(zhuǎn)化成功能模塊調(diào)用. 通信服務(wù)層實(shí)現(xiàn)GUI二次開發(fā)接口與數(shù)控系統(tǒng)的HMI功能模塊的交互. 系統(tǒng)接口層調(diào)用基于試試控制系統(tǒng)庫(kù)的專用數(shù)控系統(tǒng)二次開發(fā)平臺(tái)的GUI二次開發(fā)接口, 將PC端配置的數(shù)據(jù)傳遞給接口, 實(shí)現(xiàn)與原有數(shù)控系統(tǒng)的融合通信.
3.1 功能測(cè)試
利用Qt Creator平臺(tái)開發(fā)本文的數(shù)控系統(tǒng)人機(jī)界面二次開發(fā)平臺(tái)的PC端配置平臺(tái), 藍(lán)天數(shù)控高精數(shù)控系統(tǒng)作為NC端解析平臺(tái), 可以實(shí)現(xiàn)對(duì)數(shù)控系統(tǒng)的人機(jī)界面進(jìn)行專項(xiàng)定制以及重復(fù)修改操作. 實(shí)驗(yàn)的PC端定制界面與數(shù)控系統(tǒng)的顯示界面相同, 并實(shí)現(xiàn)了相關(guān)參數(shù)的配置, 可以監(jiān)控機(jī)床狀態(tài), 編輯相應(yīng)變量, 對(duì)機(jī)床外部單元進(jìn)行控制, 如圖8所示.
(a)PC端配置平臺(tái)實(shí)驗(yàn)測(cè)試圖
(b)NC端解析平臺(tái)實(shí)驗(yàn)測(cè)試圖
圖8 實(shí)驗(yàn)測(cè)試圖
3.2 界面的重復(fù)定制方法
開發(fā)人員可以利用平臺(tái)進(jìn)行界面的修改、重復(fù)定制. 數(shù)控系統(tǒng)人機(jī)界面二次開發(fā)作為數(shù)控系統(tǒng)的可選功能, 提供一個(gè)參數(shù)控制該功能是否打開. 如果打開的話, 要想重新定制界面或者進(jìn)行修改操作, 只需要將原有界面的配置文件下載后在PC端打開, 然后重新定制需要修改的部分, 生成新的配置文件上傳到數(shù)控系統(tǒng)服務(wù)器, 替換原有的文件即可. 配置文件名稱固定為designer.xml, 數(shù)控系統(tǒng)會(huì)在指定的界面目錄下查找該文件, 上電后自動(dòng)加載顯示. 因此在修改時(shí)上傳到數(shù)控系統(tǒng)的配置文件名稱不可變, 必須是上述名稱. 修改界面的操作流程圖如圖9所示.
圖9 界面修改或重新定制流程圖
本文就數(shù)控系統(tǒng)人機(jī)界面不能滿足用戶個(gè)性化需求、開發(fā)維護(hù)周期長(zhǎng)等不足之處, 設(shè)計(jì)了用于數(shù)控系統(tǒng)人機(jī)界面的二次開發(fā)平臺(tái), 并對(duì)該平臺(tái)各個(gè)主要模塊設(shè)計(jì)方法進(jìn)行了詳細(xì)的描述.
利用本文提出的數(shù)控系統(tǒng)人機(jī)界面二次開發(fā)平臺(tái)對(duì)數(shù)控系統(tǒng)人機(jī)界面進(jìn)行可視化定制, 具有以下優(yōu)點(diǎn): ①支持可視化配置. 用戶在本平臺(tái)配置界面的過(guò)程中, 所見(jiàn)即所得, 對(duì)界面有直觀的把握, 用戶配置方便, 無(wú)需學(xué)習(xí)編程知識(shí). ②支持組件及組件屬性的擴(kuò)展. 用戶可以對(duì)平臺(tái)的組件、屬性等進(jìn)行特定的增加, 只需要實(shí)現(xiàn)預(yù)留的接口. ③提高人機(jī)界面開發(fā)與維護(hù)效率, 降低成本. 用戶和開發(fā)人員可以利用平臺(tái)隨時(shí)對(duì)人機(jī)界面進(jìn)行修改、定制, 縮短開發(fā)周期, 降低維護(hù)成本.
1 楊麗娜,馬躍,吳文江,田軍鋒,張建磊.可定制的數(shù)控系統(tǒng)人機(jī)界面設(shè)計(jì).組合機(jī)床與自動(dòng)化加工技術(shù),2011,1:57–60.
2 邴旭,林劍峰,徐兆成,化春雷.數(shù)控系統(tǒng)人機(jī)界面開發(fā)方法研究.制造技術(shù)與機(jī)床,2012,11:144–147.
3 王開麗.基于自動(dòng)生成XML的動(dòng)態(tài)圖形界面設(shè)計(jì)與實(shí)現(xiàn)[碩士學(xué)位論文].成都:電子科技大學(xué),2011.
4 黃洪,林輝,王奔.一種圖形用戶界面的XML描述方法與工具開發(fā).計(jì)算機(jī)應(yīng)用與軟件,2011,10:198–202.
5 金信琴,裴照輝.淺析數(shù)控系統(tǒng)的軟件人機(jī)界面研究.工業(yè)設(shè)計(jì),2013,1:61–63.
6 張瓊瓊,馬躍,王志成.組態(tài)式人機(jī)界面編輯與仿真技術(shù).計(jì)算機(jī)系統(tǒng)應(yīng)用,2015,24(4):26–31.
7 王哲.基于CAD二次開發(fā)技術(shù)的晉城市供水管網(wǎng)管理系統(tǒng)的研究[碩士學(xué)位論文].太原:太原理工大學(xué),2012.
8 李詠紅.CAD二次開發(fā)方法研究與實(shí)現(xiàn)[碩士學(xué)位論文].成都:電子科技大學(xué),2004.
9 鄭乃行.基于Qt_OSG的特征樹結(jié)構(gòu)的可復(fù)用式二次開發(fā)框架的研究和應(yīng)用[碩士學(xué)位論文].杭州:杭州電子科技大學(xué),2014.
10 方貴盛,王建軍.AutoCAD二次開發(fā)技術(shù)及其應(yīng)用研究. 機(jī)床與液壓,2007,6:185–187,212.
11 李詠紅,杜平安.面向?qū)ο蟮膮?shù)化CAD二次開發(fā)方法研究.電子科技大學(xué)學(xué)報(bào),2004,5:597–599,610.
12 馮進(jìn),丁博,史殿習(xí),張矚熹,許凱.XML解析技術(shù)研究.計(jì)算機(jī)工程與科學(xué),2009,2:120–124.
13 張中,馬國(guó)艷.FANUC數(shù)控系統(tǒng)人機(jī)界面的二次開發(fā).金屬加工(冷加工),2014,6:62–64.
14 張曙.數(shù)控系統(tǒng)及其人機(jī)界面的新進(jìn)展.機(jī)械設(shè)計(jì)與制造工程,2014,10:1–5.
15 朱曉娟.基于關(guān)系的XML數(shù)據(jù)存儲(chǔ)技術(shù)研究.計(jì)算機(jī)與現(xiàn)代化,2009,12:51–54.
Design of Secondary Development Platform for the CNC System Human Machine Interface
WU Hui-Jie1,2, WANG Pin2,3
1(University of Chinese Academy of Sciences, Beijing 100049, China)2(Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168, China)3(Shenyang Golding NC Intelligence Tech Co. Ltd., Shenyang 110168, China)
The CNC System with standardization HMI, mostly presents the same kind of form and cannot meet customer and dedicated CNC System’s special requirements. Based on the analysis of the user interface customization demand, this paper designs a visual secondary development platform for the CNC System HMI based on Qt Graphics View Framework and model/view architecture. Firstly it registers components to platform and binds the corresponding property objects by using the object oriented secondary development method then completes the interface customization through the parameterization. Finally it uses the XML file as the configuration file to describe the graphical interface and transfer data between platform and CNC System. The secondary development platform mainly includes two modules which are PC configuration platform and NC analytic platform. The experimental results show that the platform has achieved good results in the special customization and reuse of CNC System’s HMI, and the development efficiency of HMI is improved.
CNC System; HMI; secondary development; XML configuration file
“高檔數(shù)控機(jī)床與基礎(chǔ)制造裝備”國(guó)家科技重大專項(xiàng),航空發(fā)動(dòng)機(jī)微孔冷加工超快激光數(shù)控機(jī)床(2014ZX04001041)
2016-06-20;
2016-07-25
[10.15888/j.cnki.csa.005646]