陳剛 羌鈴鈴
摘要:針對數(shù)控系統(tǒng)提出了一種以顯示圖片的方式介紹系統(tǒng)功能的Slide Show模塊設(shè)計方案。作者分析了圖片設(shè)計的要求與標(biāo)準(zhǔn),討論了Slide Show模塊的實現(xiàn)方法,并且提供了程序執(zhí)行的流程圖。文章分析了Slide Show模塊的性能,對目前還存在的問題提出改進的設(shè)想。實踐證明:使用Slide Show模塊提高了用戶對數(shù)控系統(tǒng)的使用效率。
關(guān)鍵詞:數(shù)控系統(tǒng) Quick Window操作系統(tǒng) Slide Show模塊
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2018)07-0192-03
Abstract: Based on numerical control system, the article issues the design solution of Slide Show module which uses pictures to introduce the function of numerical control system. The author analyzes the requirement and standard of the picture, discusses the Slide Show module implementations, and provides program execution flow diagrams. And analyzing the performance of the Slide Show module, the author issues some ideas on how to improve the deficiency existing at present. The practice proves that Slide Show module could increase the efficiency of operating numerical control system for operators.
Key words: Numerical control system; Quick Window OS; Slide Show module
1 引言
數(shù)控是數(shù)字控制[1](Numerical Control)的簡稱,是20世紀(jì)中葉發(fā)展起來的一種用數(shù)字化信息進行自動控制的方法。裝備了數(shù)控技術(shù)的機床,稱為數(shù)控機床系統(tǒng)。數(shù)控機床系統(tǒng)主要包括機器模塊、切削程序模塊、工具列表模塊、器件程序管理模塊、系統(tǒng)設(shè)置模塊和報警模塊等。這些模塊的功能涉及的操作流程與工業(yè)化機械術(shù)語都是很專業(yè)的。原則上來說,每個模塊內(nèi)部都有自己的操作使用說明文檔。如果能夠通過增加一個模塊從總體上來展現(xiàn)整個數(shù)控系統(tǒng)[2-4]的功能介紹,就能使得用戶更加全面認(rèn)識當(dāng)前系統(tǒng)。
本文目的就是介紹數(shù)控系統(tǒng)中Slide Show模塊的開發(fā)與設(shè)計,提出了以圖片的形式展示數(shù)控系統(tǒng)的功能。讓用戶能夠從這些圖片的信息中領(lǐng)略數(shù)控系統(tǒng)的功能。數(shù)控系統(tǒng)支持多種語言,Slide Show圖片在某種特定語言下,也要能夠遵循特定語言的顯示。啟動這樣一個Slide Show模塊的另外一個好處就是讓用戶在枯燥、繁雜的數(shù)控系統(tǒng)操作之余,通過欣賞圖片更能增強對系統(tǒng)使用的趣味性和友好性?;蛘唠x開操作位置時切換到Slide Show作為一種臨時的屏保功能。
2 數(shù)控系統(tǒng)結(jié)構(gòu)的總體介紹
整套數(shù)控機械設(shè)備包括人機操作界面以及相關(guān)鍵盤操作設(shè)備,車床、銑床的機器設(shè)備以及彼此之間連接的電纜線路等。整個數(shù)控系統(tǒng)是運行在Quick Window操作系統(tǒng)之上的應(yīng)用軟件。在數(shù)控系統(tǒng)內(nèi)部也包括HMI、PLC、NCK、OSAL等幾大組成部分[5]。HMI主要是負(fù)責(zé)用戶從操作界面輸入的數(shù)據(jù)信息如何轉(zhuǎn)化為車床、銑床能夠接受的數(shù)據(jù)信息。PLC[2](Pragramming Logical Controller)可編程邏輯控制器主要用于編制處理車床切削的高級程序。NCK是數(shù)控系統(tǒng)儲存數(shù)據(jù)的軟件,相當(dāng)于一個底層數(shù)據(jù)庫系統(tǒng),提供現(xiàn)成的接口供HMI等其他部分增加、刪除、查詢數(shù)控系統(tǒng)中的數(shù)據(jù)信息。OSAL主要用于底層封裝接口的調(diào)用。HMI采用Quick Window操作系統(tǒng)下VC++開發(fā)。Quick Window [6]具有很多類似Windows操作系統(tǒng)的功能,也提供了API接口調(diào)用(包括系統(tǒng)接口和用戶接口)和消息處理機制、消息循環(huán)[7];Quick Window以任務(wù)task形式來執(zhí)行具體某一個動作的響應(yīng),多任務(wù)之間存在task communication system的通信功能[6,8]。Slide Show是HMI中的一個模塊。
3 SLIDESHOW模塊的總體設(shè)計思路
根據(jù)市場調(diào)研,獲取用戶的基本需求。這里討論Slideshow模塊的概要設(shè)計,考慮研究設(shè)計中要解決的問題與關(guān)鍵技術(shù)。
3.1圖片的設(shè)計
Slide Show模塊通過顯示圖片來展示系統(tǒng)的功能特性。因此,首先必須準(zhǔn)備好圖片,這些圖片可以請專業(yè)美工人員根據(jù)系統(tǒng)特性制作。根據(jù)用戶要求,Slide Show支持兩種格式圖片:BMP和PNG。關(guān)于圖片的使用說明如下:
1)關(guān)于界面圖片的說明:
建議808DA產(chǎn)品小屏圖片大小為640*480,大屏圖片大小為800*600。這是為了和操作面板上的顯示屏窗口大小保持一致。如果圖片尺寸大于或小于這個標(biāo)準(zhǔn)大小,圖片會被拉伸或壓縮成屏幕尺寸大小,從而造成圖片的變形與失真。數(shù)控系統(tǒng)小屏要設(shè)置一套圖片,大屏也要設(shè)置一套圖片。
2)關(guān)于Slide Show界面顯示圖片的命名規(guī)則:
用戶可以在HMI Data/OEM Slide Show目錄下(如圖一所示)設(shè)置圖片,png圖片的命名規(guī)則是slide%u.png,其中u表示從1開始的序數(shù)。例如文件名為:slide1.png,slide2.png,slide3.png,等等。Bmp圖片的命名規(guī)則是slide%u.bmp,其中u表示從1開始的序數(shù)。例如文件名為:slide1.bmp,slide2.bmp,slide3.bmp,等等。說明:如果出現(xiàn)圖片編號的序數(shù)不連續(xù),將無法順利顯示所有圖片。
3)程序顯示圖片的規(guī)則:
如果用戶在HMI Data/OEM Slide Show目錄下已經(jīng)設(shè)置了符合要求當(dāng)前語言的圖片,程序運行時就依序調(diào)用這些圖片并顯示。先顯示bmp圖片,后顯示png圖片。如果該目錄下不存在相應(yīng)圖片,程序就顯示系統(tǒng)默認(rèn)圖片。系統(tǒng)默認(rèn)圖片在程序中寫死。
3.2系統(tǒng)默認(rèn)圖片與用戶自設(shè)置圖片
數(shù)控系統(tǒng)出廠時提供各種語言的一套系統(tǒng)默認(rèn)圖片。這些圖片對用戶來說是不透明的,無法修改。OEM用戶可以根據(jù)需要自己設(shè)計Slide Show圖片。系統(tǒng)先讀取用戶設(shè)計的圖片顯示,如果用戶沒有設(shè)置圖片,就顯示系統(tǒng)出廠自帶的圖片。所以Slide Show模塊開發(fā)設(shè)計時就要準(zhǔn)備一套系統(tǒng)顯示的Slide Show圖片。每一種語言系統(tǒng)都要設(shè)置一套系統(tǒng)默認(rèn)圖片。
3.3 多語言圖片的設(shè)計
數(shù)控系統(tǒng)遠銷海外,需要支持多個國家的語言。例如德語、英語、意大利語等。對應(yīng)于某一種系統(tǒng)操作語言,SlideShow模塊要顯示對應(yīng)語言的信息,才能讓用戶看懂。
這里可以采用兩種方案:1)第一種方案是提供中文原版圖片,圖片上可能含有一些漢語的文字。采用圖片翻譯技術(shù),對圖片的曲線與輪廓或線條不變動,但可以采用算法對圖片上的文本進行提取并由中文到各種語言的翻譯,并且根據(jù)文本內(nèi)容與長度來確定新的文本在最新圖片上的存放位置。這里涉及圖片的再創(chuàng)作與再生成。2)第二種方案是提供中文原版的圖片,對于其他語言圖片可以讓專業(yè)美工人員根據(jù)中文圖片再畫出特定語言的圖片以及圖片上的文本;中文有一套圖片,各種語言也要做對應(yīng)的一套圖片。這里考慮到第一種方案在軟件技術(shù)實現(xiàn)上有一定的難度,需要花費相當(dāng)多的精力和時間,所以采用了第二種方案。
根據(jù)需要多語言圖片在“OEM slideshow”目錄下可以創(chuàng)建各種語言的子文件夾(例如eng, chs, ptb, rus等),不同的語言文件夾下顯示那種語言的Slide Show圖片。根據(jù)當(dāng)前語言讀取對應(yīng)文件夾下面的圖片,如果讀取失敗就讀取系統(tǒng)默認(rèn)的圖片。
3.4恒定的時間間隔顯示圖片
讓圖片以幻燈片的形式依序顯示,確定顯示圖片之間的時間間隔。至于時間間隔應(yīng)該能夠讓用戶從界面輸入,由用戶指定具體的時間值。然后系統(tǒng)根據(jù)確定的時間值來依序顯示圖片,確保圖片有一定的時間顯示在界面上讓用戶閱讀??梢詮南到y(tǒng)模塊中確定一個NCK機器數(shù)據(jù)參數(shù)MD9001來存儲這個時間值,而且允許用戶修改、保存。如圖2所示英文系統(tǒng)下MD9001參數(shù)TIME_BTWEEN_SLDES。
3.5支持大圖片顯示
提高圖片顯示精度,最優(yōu)化地顯示圖片,支持大圖片。用戶設(shè)置的圖片有可能是用戶提供的各種拍攝設(shè)備提供的圖片,可能提供的拍攝圖片清晰度高,像素大,文件也很大。例如10M。目前是不論圖片有多大,盡量顯示出來,可能由于圖片比較大導(dǎo)致顯示的時間會很長。
4 SlideShow模塊的具體實現(xiàn)技術(shù)
4.1如何啟動、退出slide show模塊
在軟件設(shè)計時可以考慮通過某個按鍵或者組合鍵的形式(例如Ctrl+D)來啟動和退出Slide Show模塊。在系統(tǒng)的總控模塊gl.dll的Key Hook函數(shù)中,根據(jù)用戶按鍵進行判斷。如果按下的鍵是“Ctrl +D”就判斷是否已經(jīng)啟動Slide Show模塊。如果沒有啟動就創(chuàng)建;否則就釋放掉。Slide Show模塊通過一個SubDll的形式來運行。數(shù)據(jù)流程圖如圖3所示。
4.2 Slide Show模塊內(nèi)部邏輯
在Slide Show模塊內(nèi)首先讀取系統(tǒng)顯示圖片的間隔時間。使用系統(tǒng)程序提供的函數(shù)接口ReadNCVal讀取NCK參數(shù)MD9001,就能得到這個時間值。然后調(diào)用接口函數(shù)GetCurLang來獲取當(dāng)前是哪種語言,根據(jù)當(dāng)前語言到OEM用戶指定目錄下讀取圖片。如果讀取圖片成功,就依次顯示用戶圖片;否則提供相應(yīng)的報錯信息提示用戶。(1)這里根據(jù)事先約定的圖片名稱進行讀寫,先顯示BMP圖片再顯示PNG圖片,并用程序?qū)崿F(xiàn)一個循環(huán)周而復(fù)始地輪流顯示這些圖片。如果讀取用戶設(shè)置圖片失敗,就讀取系統(tǒng)默認(rèn)圖片。讀取系統(tǒng)默認(rèn)圖片并依次顯示的方法同顯示用戶設(shè)置圖片一樣。不論是BMP圖片還是PNG圖片,采用面向?qū)ο蟮某绦蛟O(shè)計思想實現(xiàn)[7]。將圖片抽象成一個類CBmpObject()[7],類中封裝了幾個關(guān)鍵的成員函數(shù):創(chuàng)建圖片CreateBitmap()、加載圖片LoadBitmap()或LoadPng()、展示圖片BitBlt()等等。系統(tǒng)針對大圖片例如10M,進行了特別處理:先調(diào)用GetBmpDim獲取圖形的像素區(qū)域,然后調(diào)用Scaled()接口進行圖形顯示區(qū)域濾化,再調(diào)用BitBltPng()按矩陣依序顯示圖形像素,達到優(yōu)化清晰顯示大數(shù)據(jù)圖片[9]。(2)程序中在對顯示圖片的時間間隔內(nèi)的處理有一定的技巧。例如,系統(tǒng)顯示圖片的間隔時間是3秒;3秒對一個高速運轉(zhuǎn)的計算機來說能執(zhí)行很多很多的程序指令[8]。程序中在這個時間段內(nèi),設(shè)置了若干個狀態(tài)m_eDrawState,每個狀態(tài)完成一種操作任務(wù)。例如,狀態(tài)E_DRAW_NEXT_SCREEN_BUFFER,狀態(tài)E_DRAW_SCREEN_BUFFER,狀態(tài)E_DRAW_LOAD_NEXT_S LIDE,或狀態(tài)E_DRAW_FILL_BUFFER等。并且能夠?qū)崿F(xiàn)在這些狀態(tài)之間進行切換,另外在這些狀態(tài)處于去激活時讓計算機處于短暫的休眠狀態(tài)SetSleep(3000)。這些狀態(tài)的設(shè)置是為了讓圖片顯示出來后能有一定時間停留在界面上讓用戶瀏覽。
如果最終讀取系統(tǒng)默認(rèn)圖片再次顯示失敗,Slide Show模塊就會退出;從用戶界面展示效果來看,按了Ctrl +D之后界面沒有任何變化。如果顯示圖片成功以后,由模塊內(nèi)部的Key Hook消息捕獲按鍵。在Key Hook消息處理中,考慮了各種用戶可能的按鍵,并響應(yīng)各自的按鍵程序。其中包括:操作用戶再次按Ctrl+D鍵即可退出模塊,或按了某些特定功能鍵時還要轉(zhuǎn)發(fā)特定消息進行深層次的程序內(nèi)部邏輯處理。關(guān)鍵流程的步驟如圖4所示。
5 性能分析
5.1分析Slide Show模塊目前可能還存在的缺點
1)顯示大數(shù)據(jù)圖片時比較慢,尤其是用戶自定義圖片。曾經(jīng)做過測試:30K~50K大小圖片瞬間就能顯示出來,但是對于大圖片例如10M~20M顯示需要三五秒時間,有的甚至更長。這個問題可能跟數(shù)控系統(tǒng)CF容量有關(guān),也可能與顯示圖片的函數(shù)效率有關(guān)。畢竟CF卡容量只有1G,所以性能提高較少。
2)當(dāng)前處于報警模塊,按Ctrl +D啟動Slide Show模塊,再去按操作面板下半部MCP[5]部件兩個旋轉(zhuǎn)按鈕左邊的上下按鈕時會出現(xiàn)報警按鈕與Slide Show圖片部分重疊。對于這個問題,底層硬件接口中并沒有提供諸如Open Event 或 Close Event消息事件來屏蔽[9],故無法解決。但由于這按鈕位于下半塊,與操作控制面板不屬一個功能區(qū)域,用戶也會理解。
3) 當(dāng)前處于Slide Show模塊運行時,拼命地猛按六大功能鍵[5]偶爾會出現(xiàn)系統(tǒng)重啟現(xiàn)象。我們認(rèn)真分析過這個問題,但是這個問題重現(xiàn)的概率很微小、而且很難摸索出重現(xiàn)規(guī)律。這是作者在單元自測試階段發(fā)現(xiàn)的,但是當(dāng)作者有意識故意去制造時也無法重現(xiàn)。集成測試時測試工程師沒有發(fā)現(xiàn)這個問題,不知道是不是作者個人機器存在某些不穩(wěn)定因素。因為沒有重現(xiàn)規(guī)律,該問題暫時遺留。
5.2對Slide Show模塊的改進方案的設(shè)想
鑒于Slide Show模塊對特定組合鍵關(guān)閉功能還存在極個別遺留問題,目前開發(fā)人員在考慮是否對Slide Show的關(guān)閉功能進行某種改進。例如,換個方式定制關(guān)閉功能;或者將Slide Show模塊做成模態(tài)窗體,模塊窗體可以將焦點設(shè)置在當(dāng)前窗體上,在當(dāng)前窗體運行時其他任何按鍵操作都會失效,除非Slide Show窗口自行退出。對于前一種方案,到底是換成哪種方式實現(xiàn),后來用戶還沒有提出更好的改進的方式;對于后一種方案的實現(xiàn)可能需要底層提供某個接口才能成功生效。
6 結(jié)束語
數(shù)控系統(tǒng)功能介紹的設(shè)計方法有很多種。Slide Show模塊以圖片形式展示功能介紹比較形象化,具備較高的界面友好性。文章全面介紹了Slide Show模塊的設(shè)計方法和流程分析,站在用戶角度進行需求分析,努力滿足用戶的要求。對Slide Show模塊可能存在的問題進行了評估分析,提出了改進方案的設(shè)想。經(jīng)過充分測試,Slide Show模塊能夠很好地滿足對數(shù)控系統(tǒng)功能的介紹。
參考文獻:
[1] 蔡銳龍,李曉棟,錢思思.國內(nèi)外數(shù)控系統(tǒng)技術(shù)研究現(xiàn)狀與發(fā)展趨勢[J].機械科學(xué)與技術(shù),2016,35(4).
[2] 王志學(xué),李茂月,劉獻禮,等.開放式數(shù)控軟PLC系統(tǒng)的研究[J].哈爾并理工大學(xué)學(xué)報,2017,22(6).
[3] Wen Zheng Ding, Xiao Diao Huang, Mu Lan Wang,et al. An approach to evalutate the effects of
nonlinear traveling joints on dynamic behavior of large machine tools[J],The International Journal of Advanced Manufacturing Technology, 2013(10):2025-2032.
[4] Mu Lan Wang, Jian Min Zuio, Kun Liu, et al. FPGA-Based Intelligent Software Hardening Chip for Computer Numerical Control System[J]. Applied Mechanics and Materials,2012(10):2217-2220.
[5] SINUMERIK 802D SL 車削、銑削、磨削和步?jīng)_操作說明[M].西門子(中國)有限公司北京出版社,2009.
[6] Quick Window操作簡介和說明.國防科技大學(xué)出版社,1995.
[7] 孫鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.
[8] 湯子贏,哲鳳屏,湯小丹.計算機操作系統(tǒng)[M].西安:西安電子科技大學(xué)出版社,2006.
[9] 侯捷.More Effective C++中文版[M].北京:電子工業(yè)出版社,2011.