陳剛 羌鈴鈴
摘要:針對(duì)數(shù)控系統(tǒng)提出了一種以顯示圖片的方式介紹系統(tǒng)功能的Slide Show模塊設(shè)計(jì)方案。作者分析了圖片設(shè)計(jì)的要求與標(biāo)準(zhǔn),討論了Slide Show模塊的實(shí)現(xiàn)方法,并且提供了程序執(zhí)行的流程圖。文章分析了Slide Show模塊的性能,對(duì)目前還存在的問題提出改進(jìn)的設(shè)想。實(shí)踐證明:使用Slide Show模塊提高了用戶對(duì)數(shù)控系統(tǒng)的使用效率。
關(guān)鍵詞:數(shù)控系統(tǒng) Quick Window操作系統(tǒng) Slide Show模塊
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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ù)字化信息進(jìn)行自動(dòng)控制的方法。裝備了數(shù)控技術(shù)的機(jī)床,稱為數(shù)控機(jī)床系統(tǒng)。數(shù)控機(jī)床系統(tǒng)主要包括機(jī)器模塊、切削程序模塊、工具列表模塊、器件程序管理模塊、系統(tǒng)設(shè)置模塊和報(bào)警模塊等。這些模塊的功能涉及的操作流程與工業(yè)化機(jī)械術(shù)語都是很專業(yè)的。原則上來說,每個(gè)模塊內(nèi)部都有自己的操作使用說明文檔。如果能夠通過增加一個(gè)模塊從總體上來展現(xiàn)整個(gè)數(shù)控系統(tǒng)[2-4]的功能介紹,就能使得用戶更加全面認(rèn)識(shí)當(dāng)前系統(tǒng)。
本文目的就是介紹數(shù)控系統(tǒng)中Slide Show模塊的開發(fā)與設(shè)計(jì),提出了以圖片的形式展示數(shù)控系統(tǒng)的功能。讓用戶能夠從這些圖片的信息中領(lǐng)略數(shù)控系統(tǒng)的功能。數(shù)控系統(tǒng)支持多種語言,Slide Show圖片在某種特定語言下,也要能夠遵循特定語言的顯示。啟動(dòng)這樣一個(gè)Slide Show模塊的另外一個(gè)好處就是讓用戶在枯燥、繁雜的數(shù)控系統(tǒng)操作之余,通過欣賞圖片更能增強(qiáng)對(duì)系統(tǒng)使用的趣味性和友好性?;蛘唠x開操作位置時(shí)切換到Slide Show作為一種臨時(shí)的屏保功能。
2 數(shù)控系統(tǒng)結(jié)構(gòu)的總體介紹
整套數(shù)控機(jī)械設(shè)備包括人機(jī)操作界面以及相關(guān)鍵盤操作設(shè)備,車床、銑床的機(jī)器設(shè)備以及彼此之間連接的電纜線路等。整個(gè)數(shù)控系統(tǒng)是運(yùn)行在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)可編程邏輯控制器主要用于編制處理車床切削的高級(jí)程序。NCK是數(shù)控系統(tǒng)儲(chǔ)存數(shù)據(jù)的軟件,相當(dāng)于一個(gè)底層數(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)接口和用戶接口)和消息處理機(jī)制、消息循環(huán)[7];Quick Window以任務(wù)task形式來執(zhí)行具體某一個(gè)動(dòng)作的響應(yīng),多任務(wù)之間存在task communication system的通信功能[6,8]。Slide Show是HMI中的一個(gè)模塊。
3 SLIDESHOW模塊的總體設(shè)計(jì)思路
根據(jù)市場(chǎng)調(diào)研,獲取用戶的基本需求。這里討論Slideshow模塊的概要設(shè)計(jì),考慮研究設(shè)計(jì)中要解決的問題與關(guān)鍵技術(shù)。
3.1圖片的設(shè)計(jì)
Slide Show模塊通過顯示圖片來展示系統(tǒng)的功能特性。因此,首先必須準(zhǔn)備好圖片,這些圖片可以請(qǐng)專業(yè)美工人員根據(jù)系統(tǒng)特性制作。根據(jù)用戶要求,Slide Show支持兩種格式圖片:BMP和PNG。關(guān)于圖片的使用說明如下:
1)關(guān)于界面圖片的說明:
建議808DA產(chǎn)品小屏圖片大小為640*480,大屏圖片大小為800*600。這是為了和操作面板上的顯示屏窗口大小保持一致。如果圖片尺寸大于或小于這個(gè)標(biāo)準(zhǔn)大小,圖片會(huì)被拉伸或壓縮成屏幕尺寸大小,從而造成圖片的變形與失真。數(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)圖片編號(hào)的序數(shù)不連續(xù),將無法順利顯示所有圖片。
3)程序顯示圖片的規(guī)則:
如果用戶在HMI Data/OEM Slide Show目錄下已經(jīng)設(shè)置了符合要求當(dāng)前語言的圖片,程序運(yùn)行時(shí)就依序調(diào)用這些圖片并顯示。先顯示bmp圖片,后顯示png圖片。如果該目錄下不存在相應(yīng)圖片,程序就顯示系統(tǒng)默認(rèn)圖片。系統(tǒng)默認(rèn)圖片在程序中寫死。
3.2系統(tǒng)默認(rèn)圖片與用戶自設(shè)置圖片
數(shù)控系統(tǒng)出廠時(shí)提供各種語言的一套系統(tǒng)默認(rèn)圖片。這些圖片對(duì)用戶來說是不透明的,無法修改。OEM用戶可以根據(jù)需要自己設(shè)計(jì)Slide Show圖片。系統(tǒng)先讀取用戶設(shè)計(jì)的圖片顯示,如果用戶沒有設(shè)置圖片,就顯示系統(tǒng)出廠自帶的圖片。所以Slide Show模塊開發(fā)設(shè)計(jì)時(shí)就要準(zhǔn)備一套系統(tǒng)顯示的Slide Show圖片。每一種語言系統(tǒng)都要設(shè)置一套系統(tǒng)默認(rèn)圖片。
3.3 多語言圖片的設(shè)計(jì)
數(shù)控系統(tǒng)遠(yuǎn)銷海外,需要支持多個(gè)國家的語言。例如德語、英語、意大利語等。對(duì)應(yīng)于某一種系統(tǒng)操作語言,SlideShow模塊要顯示對(duì)應(yīng)語言的信息,才能讓用戶看懂。
這里可以采用兩種方案:1)第一種方案是提供中文原版圖片,圖片上可能含有一些漢語的文字。采用圖片翻譯技術(shù),對(duì)圖片的曲線與輪廓或線條不變動(dòng),但可以采用算法對(duì)圖片上的文本進(jìn)行提取并由中文到各種語言的翻譯,并且根據(jù)文本內(nèi)容與長度來確定新的文本在最新圖片上的存放位置。這里涉及圖片的再創(chuàng)作與再生成。2)第二種方案是提供中文原版的圖片,對(duì)于其他語言圖片可以讓專業(yè)美工人員根據(jù)中文圖片再畫出特定語言的圖片以及圖片上的文本;中文有一套圖片,各種語言也要做對(duì)應(yīng)的一套圖片。這里考慮到第一種方案在軟件技術(shù)實(shí)現(xiàn)上有一定的難度,需要花費(fèi)相當(dāng)多的精力和時(shí)間,所以采用了第二種方案。
根據(jù)需要多語言圖片在“OEM slideshow”目錄下可以創(chuàng)建各種語言的子文件夾(例如eng, chs, ptb, rus等),不同的語言文件夾下顯示那種語言的Slide Show圖片。根據(jù)當(dāng)前語言讀取對(duì)應(yīng)文件夾下面的圖片,如果讀取失敗就讀取系統(tǒng)默認(rèn)的圖片。
3.4恒定的時(shí)間間隔顯示圖片
讓圖片以幻燈片的形式依序顯示,確定顯示圖片之間的時(shí)間間隔。至于時(shí)間間隔應(yīng)該能夠讓用戶從界面輸入,由用戶指定具體的時(shí)間值。然后系統(tǒng)根據(jù)確定的時(shí)間值來依序顯示圖片,確保圖片有一定的時(shí)間顯示在界面上讓用戶閱讀。可以從系統(tǒng)模塊中確定一個(gè)NCK機(jī)器數(shù)據(jù)參數(shù)MD9001來存儲(chǔ)這個(gè)時(shí)間值,而且允許用戶修改、保存。如圖2所示英文系統(tǒng)下MD9001參數(shù)TIME_BTWEEN_SLDES。
3.5支持大圖片顯示
提高圖片顯示精度,最優(yōu)化地顯示圖片,支持大圖片。用戶設(shè)置的圖片有可能是用戶提供的各種拍攝設(shè)備提供的圖片,可能提供的拍攝圖片清晰度高,像素大,文件也很大。例如10M。目前是不論圖片有多大,盡量顯示出來,可能由于圖片比較大導(dǎo)致顯示的時(shí)間會(huì)很長。
4 SlideShow模塊的具體實(shí)現(xiàn)技術(shù)
4.1如何啟動(dòng)、退出slide show模塊
在軟件設(shè)計(jì)時(shí)可以考慮通過某個(gè)按鍵或者組合鍵的形式(例如Ctrl+D)來啟動(dòng)和退出Slide Show模塊。在系統(tǒng)的總控模塊gl.dll的Key Hook函數(shù)中,根據(jù)用戶按鍵進(jìn)行判斷。如果按下的鍵是“Ctrl +D”就判斷是否已經(jīng)啟動(dòng)Slide Show模塊。如果沒有啟動(dòng)就創(chuàng)建;否則就釋放掉。Slide Show模塊通過一個(gè)SubDll的形式來運(yùn)行。數(shù)據(jù)流程圖如圖3所示。
4.2 Slide Show模塊內(nèi)部邏輯
在Slide Show模塊內(nèi)首先讀取系統(tǒng)顯示圖片的間隔時(shí)間。使用系統(tǒng)程序提供的函數(shù)接口ReadNCVal讀取NCK參數(shù)MD9001,就能得到這個(gè)時(shí)間值。然后調(diào)用接口函數(shù)GetCurLang來獲取當(dāng)前是哪種語言,根據(jù)當(dāng)前語言到OEM用戶指定目錄下讀取圖片。如果讀取圖片成功,就依次顯示用戶圖片;否則提供相應(yīng)的報(bào)錯(cuò)信息提示用戶。(1)這里根據(jù)事先約定的圖片名稱進(jìn)行讀寫,先顯示BMP圖片再顯示PNG圖片,并用程序?qū)崿F(xiàn)一個(gè)循環(huán)周而復(fù)始地輪流顯示這些圖片。如果讀取用戶設(shè)置圖片失敗,就讀取系統(tǒng)默認(rèn)圖片。讀取系統(tǒng)默認(rèn)圖片并依次顯示的方法同顯示用戶設(shè)置圖片一樣。不論是BMP圖片還是PNG圖片,采用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想實(shí)現(xiàn)[7]。將圖片抽象成一個(gè)類CBmpObject()[7],類中封裝了幾個(gè)關(guān)鍵的成員函數(shù):創(chuàng)建圖片CreateBitmap()、加載圖片LoadBitmap()或LoadPng()、展示圖片BitBlt()等等。系統(tǒng)針對(duì)大圖片例如10M,進(jìn)行了特別處理:先調(diào)用GetBmpDim獲取圖形的像素區(qū)域,然后調(diào)用Scaled()接口進(jìn)行圖形顯示區(qū)域?yàn)V化,再調(diào)用BitBltPng()按矩陣依序顯示圖形像素,達(dá)到優(yōu)化清晰顯示大數(shù)據(jù)圖片[9]。(2)程序中在對(duì)顯示圖片的時(shí)間間隔內(nèi)的處理有一定的技巧。例如,系統(tǒng)顯示圖片的間隔時(shí)間是3秒;3秒對(duì)一個(gè)高速運(yùn)轉(zhuǎn)的計(jì)算機(jī)來說能執(zhí)行很多很多的程序指令[8]。程序中在這個(gè)時(shí)間段內(nèi),設(shè)置了若干個(gè)狀態(tài)m_eDrawState,每個(gè)狀態(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)之間進(jìn)行切換,另外在這些狀態(tài)處于去激活時(shí)讓計(jì)算機(jī)處于短暫的休眠狀態(tài)SetSleep(3000)。這些狀態(tài)的設(shè)置是為了讓圖片顯示出來后能有一定時(shí)間停留在界面上讓用戶瀏覽。
如果最終讀取系統(tǒng)默認(rèn)圖片再次顯示失敗,Slide Show模塊就會(huì)退出;從用戶界面展示效果來看,按了Ctrl +D之后界面沒有任何變化。如果顯示圖片成功以后,由模塊內(nèi)部的Key Hook消息捕獲按鍵。在Key Hook消息處理中,考慮了各種用戶可能的按鍵,并響應(yīng)各自的按鍵程序。其中包括:操作用戶再次按Ctrl+D鍵即可退出模塊,或按了某些特定功能鍵時(shí)還要轉(zhuǎn)發(fā)特定消息進(jìn)行深層次的程序內(nèi)部邏輯處理。關(guān)鍵流程的步驟如圖4所示。
5 性能分析
5.1分析Slide Show模塊目前可能還存在的缺點(diǎn)
1)顯示大數(shù)據(jù)圖片時(shí)比較慢,尤其是用戶自定義圖片。曾經(jīng)做過測(cè)試:30K~50K大小圖片瞬間就能顯示出來,但是對(duì)于大圖片例如10M~20M顯示需要三五秒時(shí)間,有的甚至更長。這個(gè)問題可能跟數(shù)控系統(tǒng)CF容量有關(guān),也可能與顯示圖片的函數(shù)效率有關(guān)。畢竟CF卡容量只有1G,所以性能提高較少。
2)當(dāng)前處于報(bào)警模塊,按Ctrl +D啟動(dòng)Slide Show模塊,再去按操作面板下半部MCP[5]部件兩個(gè)旋轉(zhuǎn)按鈕左邊的上下按鈕時(shí)會(huì)出現(xiàn)報(bào)警按鈕與Slide Show圖片部分重疊。對(duì)于這個(gè)問題,底層硬件接口中并沒有提供諸如Open Event 或 Close Event消息事件來屏蔽[9],故無法解決。但由于這按鈕位于下半塊,與操作控制面板不屬一個(gè)功能區(qū)域,用戶也會(huì)理解。
3) 當(dāng)前處于Slide Show模塊運(yùn)行時(shí),拼命地猛按六大功能鍵[5]偶爾會(huì)出現(xiàn)系統(tǒng)重啟現(xiàn)象。我們認(rèn)真分析過這個(gè)問題,但是這個(gè)問題重現(xiàn)的概率很微小、而且很難摸索出重現(xiàn)規(guī)律。這是作者在單元自測(cè)試階段發(fā)現(xiàn)的,但是當(dāng)作者有意識(shí)故意去制造時(shí)也無法重現(xiàn)。集成測(cè)試時(shí)測(cè)試工程師沒有發(fā)現(xiàn)這個(gè)問題,不知道是不是作者個(gè)人機(jī)器存在某些不穩(wěn)定因素。因?yàn)闆]有重現(xiàn)規(guī)律,該問題暫時(shí)遺留。
5.2對(duì)Slide Show模塊的改進(jìn)方案的設(shè)想
鑒于Slide Show模塊對(duì)特定組合鍵關(guān)閉功能還存在極個(gè)別遺留問題,目前開發(fā)人員在考慮是否對(duì)Slide Show的關(guān)閉功能進(jìn)行某種改進(jìn)。例如,換個(gè)方式定制關(guān)閉功能;或者將Slide Show模塊做成模態(tài)窗體,模塊窗體可以將焦點(diǎn)設(shè)置在當(dāng)前窗體上,在當(dāng)前窗體運(yùn)行時(shí)其他任何按鍵操作都會(huì)失效,除非Slide Show窗口自行退出。對(duì)于前一種方案,到底是換成哪種方式實(shí)現(xiàn),后來用戶還沒有提出更好的改進(jìn)的方式;對(duì)于后一種方案的實(shí)現(xiàn)可能需要底層提供某個(gè)接口才能成功生效。
6 結(jié)束語
數(shù)控系統(tǒng)功能介紹的設(shè)計(jì)方法有很多種。Slide Show模塊以圖片形式展示功能介紹比較形象化,具備較高的界面友好性。文章全面介紹了Slide Show模塊的設(shè)計(jì)方法和流程分析,站在用戶角度進(jìn)行需求分析,努力滿足用戶的要求。對(duì)Slide Show模塊可能存在的問題進(jìn)行了評(píng)估分析,提出了改進(jìn)方案的設(shè)想。經(jīng)過充分測(cè)試,Slide Show模塊能夠很好地滿足對(duì)數(shù)控系統(tǒng)功能的介紹。
參考文獻(xiàn):
[1] 蔡銳龍,李曉棟,錢思思.國內(nèi)外數(shù)控系統(tǒng)技術(shù)研究現(xiàn)狀與發(fā)展趨勢(shì)[J].機(jī)械科學(xué)與技術(shù),2016,35(4).
[2] 王志學(xué),李茂月,劉獻(xiàn)禮,等.開放式數(shù)控軟PLC系統(tǒng)的研究[J].哈爾并理工大學(xué)學(xué)報(bào),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] 湯子贏,哲鳳屏,湯小丹.計(jì)算機(jī)操作系統(tǒng)[M].西安:西安電子科技大學(xué)出版社,2006.
[9] 侯捷.More Effective C++中文版[M].北京:電子工業(yè)出版社,2011.