陈刚 羌铃铃
摘要:针对数控系统提出了一种以显示图片的方式介绍系统功能的Slide Show模块设计方案。作者分析了图片设计的要求与标准,讨论了Slide Show模块的实现方法,并且提供了程序执行的流程图。文章分析了Slide Show模块的性能,对目前还存在的问题提出改进的设想。实践证明:使用Slide Show模块提高了用户对数控系统的使用效率。
关键词:数控系统 Quick Window操作系统 Slide Show模块
中图分类号:TP311 文献标识码: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 引言
数控是数字控制[1](Numerical Control)的简称,是20世纪中叶发展起来的一种用数字化信息进行自动控制的方法。装备了数控技术的机床,称为数控机床系统。数控机床系统主要包括机器模块、切削程序模块、工具列表模块、器件程序管理模块、系统设置模块和报警模块等。这些模块的功能涉及的操作流程与工业化机械术语都是很专业的。原则上来说,每个模块内部都有自己的操作使用说明文档。如果能够通过增加一个模块从总体上来展现整个数控系统[2-4]的功能介绍,就能使得用户更加全面认识当前系统。
本文目的就是介绍数控系统中Slide Show模块的开发与设计,提出了以图片的形式展示数控系统的功能。让用户能够从这些图片的信息中领略数控系统的功能。数控系统支持多种语言,Slide Show图片在某种特定语言下,也要能够遵循特定语言的显示。启动这样一个Slide Show模块的另外一个好处就是让用户在枯燥、繁杂的数控系统操作之余,通过欣赏图片更能增强对系统使用的趣味性和友好性。或者离开操作位置时切换到Slide Show作为一种临时的屏保功能。
2 数控系统结构的总体介绍
整套数控机械设备包括人机操作界面以及相关键盘操作设备,车床、铣床的机器设备以及彼此之间连接的电缆线路等。整个数控系统是运行在Quick Window操作系统之上的应用软件。在数控系统内部也包括HMI、PLC、NCK、OSAL等几大组成部分[5]。HMI主要是负责用户从操作界面输入的数据信息如何转化为车床、铣床能够接受的数据信息。PLC[2](Pragramming Logical Controller)可编程逻辑控制器主要用于编制处理车床切削的高级程序。NCK是数控系统储存数据的软件,相当于一个底层数据库系统,提供现成的接口供HMI等其他部分增加、删除、查询数控系统中的数据信息。OSAL主要用于底層封装接口的调用。HMI采用Quick Window操作系统下VC++开发。Quick Window [6]具有很多类似Windows操作系统的功能,也提供了API接口调用(包括系统接口和用户接口)和消息处理机制、消息循环[7];Quick Window以任务task形式来执行具体某一个动作的响应,多任务之间存在task communication system的通信功能[6,8]。Slide Show是HMI中的一个模块。
3 SLIDESHOW模块的总体设计思路
根据市场调研,获取用户的基本需求。这里讨论Slideshow模块的概要设计,考虑研究设计中要解决的问题与关键技术。
3.1图片的设计
Slide Show模块通过显示图片来展示系统的功能特性。因此,首先必须准备好图片,这些图片可以请专业美工人员根据系统特性制作。根据用户要求,Slide Show支持两种格式图片:BMP和PNG。关于图片的使用说明如下:
1)关于界面图片的说明:
建议808DA产品小屏图片大小为640*480,大屏图片大小为800*600。这是为了和操作面板上的显示屏窗口大小保持一致。如果图片尺寸大于或小于这个标准大小,图片会被拉伸或压缩成屏幕尺寸大小,从而造成图片的变形与失真。数控系统小屏要设置一套图片,大屏也要设置一套图片。
2)关于Slide Show界面显示图片的命名规则:
用户可以在HMI Data/OEM Slide Show目录下(如图一所示)设置图片,png图片的命名规则是slide%u.png,其中u表示从1开始的序数。例如文件名为:slide1.png,slide2.png,slide3.png,等等。Bmp图片的命名规则是slide%u.bmp,其中u表示从1开始的序数。例如文件名为:slide1.bmp,slide2.bmp,slide3.bmp,等等。说明:如果出现图片编号的序数不连续,将无法顺利显示所有图片。
3)程序显示图片的规则:
如果用户在HMI Data/OEM Slide Show目录下已经设置了符合要求当前语言的图片,程序运行时就依序调用这些图片并显示。先显示bmp图片,后显示png图片。如果该目录下不存在相应图片,程序就显示系统默认图片。系统默认图片在程序中写死。
3.2系统默认图片与用户自设置图片
数控系统出厂时提供各种语言的一套系统默认图片。这些图片对用户来说是不透明的,无法修改。OEM用户可以根据需要自己设计Slide Show图片。系统先读取用户设计的图片显示,如果用户没有设置图片,就显示系统出厂自带的图片。所以Slide Show模块开发设计时就要准备一套系统显示的Slide Show图片。每一种语言系统都要设置一套系统默认图片。
3.3 多语言图片的设计
数控系统远销海外,需要支持多个国家的语言。例如德语、英语、意大利语等。对应于某一种系统操作语言,SlideShow模块要显示对应语言的信息,才能让用户看懂。
这里可以采用两种方案:1)第一种方案是提供中文原版图片,图片上可能含有一些汉语的文字。采用图片翻译技术,对图片的曲线与轮廓或线条不变动,但可以采用算法对图片上的文本进行提取并由中文到各种语言的翻译,并且根据文本内容与长度来确定新的文本在最新图片上的存放位置。这里涉及图片的再创作与再生成。2)第二种方案是提供中文原版的图片,对于其他语言图片可以让专业美工人员根据中文图片再画出特定语言的图片以及图片上的文本;中文有一套图片,各种语言也要做对应的一套图片。这里考虑到第一种方案在软件技术实现上有一定的难度,需要花费相当多的精力和时间,所以采用了第二种方案。
根据需要多语言图片在“OEM slideshow”目录下可以创建各种语言的子文件夹(例如eng, chs, ptb, rus等),不同的语言文件夹下显示那种语言的Slide Show图片。根据当前语言读取对应文件夹下面的图片,如果读取失败就读取系统默认的图片。
3.4恒定的时间间隔显示图片
让图片以幻灯片的形式依序显示,确定显示图片之间的时间间隔。至于时间间隔应该能够让用户从界面输入,由用户指定具体的时间值。然后系统根据确定的时间值来依序显示图片,确保图片有一定的时间显示在界面上让用户阅读。可以从系统模块中确定一个NCK机器数据参数MD9001来存储这个时间值,而且允许用户修改、保存。如图2所示英文系统下MD9001参数TIME_BTWEEN_SLDES。
3.5支持大图片显示
提高图片显示精度,最优化地显示图片,支持大图片。用户设置的图片有可能是用户提供的各种拍摄设备提供的图片,可能提供的拍摄图片清晰度高,像素大,文件也很大。例如10M。目前是不论图片有多大,尽量显示出来,可能由于图片比较大导致显示的时间会很长。
4 SlideShow模块的具体实现技术
4.1如何启动、退出slide show模块
在软件设计时可以考虑通过某个按键或者组合键的形式(例如Ctrl+D)来启动和退出Slide Show模块。在系统的总控模块gl.dll的Key Hook函数中,根据用户按键进行判断。如果按下的键是“Ctrl +D”就判断是否已经启动Slide Show模块。如果没有启动就创建;否则就释放掉。Slide Show模块通过一个SubDll的形式来运行。数据流程图如图3所示。
4.2 Slide Show模块内部逻辑
在Slide Show模块内首先读取系统显示图片的间隔时间。使用系统程序提供的函数接口ReadNCVal读取NCK参数MD9001,就能得到这个时间值。然后调用接口函数GetCurLang来获取当前是哪种语言,根据当前语言到OEM用户指定目录下读取图片。如果读取图片成功,就依次显示用户图片;否则提供相应的报错信息提示用户。(1)这里根据事先约定的图片名称进行读写,先显示BMP图片再显示PNG图片,并用程序實现一个循环周而复始地轮流显示这些图片。如果读取用户设置图片失败,就读取系统默认图片。读取系统默认图片并依次显示的方法同显示用户设置图片一样。不论是BMP图片还是PNG图片,采用面向对象的程序设计思想实现[7]。将图片抽象成一个类CBmpObject()[7],类中封装了几个关键的成员函数:创建图片CreateBitmap()、加载图片LoadBitmap()或LoadPng()、展示图片BitBlt()等等。系统针对大图片例如10M,进行了特别处理:先调用GetBmpDim获取图形的像素区域,然后调用Scaled()接口进行图形显示区域滤化,再调用BitBltPng()按矩阵依序显示图形像素,达到优化清晰显示大数据图片[9]。(2)程序中在对显示图片的时间间隔内的处理有一定的技巧。例如,系统显示图片的间隔时间是3秒;3秒对一个高速运转的计算机来说能执行很多很多的程序指令[8]。程序中在这个时间段内,设置了若干个状态m_eDrawState,每个状态完成一种操作任务。例如,状态E_DRAW_NEXT_SCREEN_BUFFER,状态E_DRAW_SCREEN_BUFFER,状态E_DRAW_LOAD_NEXT_S LIDE,或状态E_DRAW_FILL_BUFFER等。并且能够实现在这些状态之间进行切换,另外在这些状态处于去激活时让计算机处于短暂的休眠状态SetSleep(3000)。这些状态的设置是为了让图片显示出来后能有一定时间停留在界面上让用户浏览。
如果最终读取系统默认图片再次显示失败,Slide Show模块就会退出;从用户界面展示效果来看,按了Ctrl +D之后界面没有任何变化。如果显示图片成功以后,由模块内部的Key Hook消息捕获按键。在Key Hook消息处理中,考虑了各种用户可能的按键,并响应各自的按键程序。其中包括:操作用户再次按Ctrl+D键即可退出模块,或按了某些特定功能键时还要转发特定消息进行深层次的程序内部逻辑处理。关键流程的步骤如图4所示。
5 性能分析
5.1分析Slide Show模块目前可能还存在的缺点
1)顯示大数据图片时比较慢,尤其是用户自定义图片。曾经做过测试:30K~50K大小图片瞬间就能显示出来,但是对于大图片例如10M~20M显示需要三五秒时间,有的甚至更长。这个问题可能跟数控系统CF容量有关,也可能与显示图片的函数效率有关。毕竟CF卡容量只有1G,所以性能提高较少。
2)当前处于报警模块,按Ctrl +D启动Slide Show模块,再去按操作面板下半部MCP[5]部件两个旋转按钮左边的上下按钮时会出现报警按钮与Slide Show图片部分重叠。对于这个问题,底层硬件接口中并没有提供诸如Open Event 或 Close Event消息事件来屏蔽[9],故无法解决。但由于这按钮位于下半块,与操作控制面板不属一个功能区域,用户也会理解。
3) 当前处于Slide Show模块运行时,拼命地猛按六大功能键[5]偶尔会出现系统重启现象。我们认真分析过这个问题,但是这个问题重现的概率很微小、而且很难摸索出重现规律。这是作者在单元自测试阶段发现的,但是当作者有意识故意去制造时也无法重现。集成测试时测试工程师没有发现这个问题,不知道是不是作者个人机器存在某些不稳定因素。因为没有重现规律,该问题暂时遗留。
5.2对Slide Show模块的改进方案的设想
鉴于Slide Show模块对特定组合键关闭功能还存在极个别遗留问题,目前开发人员在考虑是否对Slide Show的关闭功能进行某种改进。例如,换个方式定制关闭功能;或者将Slide Show模块做成模态窗体,模块窗体可以将焦点设置在当前窗体上,在当前窗体运行时其他任何按键操作都会失效,除非Slide Show窗口自行退出。对于前一种方案,到底是换成哪种方式实现,后来用户还没有提出更好的改进的方式;对于后一种方案的实现可能需要底层提供某个接口才能成功生效。
6 结束语
数控系统功能介绍的设计方法有很多种。Slide Show模块以图片形式展示功能介绍比较形象化,具备较高的界面友好性。文章全面介绍了Slide Show模块的设计方法和流程分析,站在用户角度进行需求分析,努力满足用户的要求。对Slide Show模块可能存在的问题进行了评估分析,提出了改进方案的设想。经过充分测试,Slide Show模块能够很好地满足对数控系统功能的介绍。
参考文献:
[1] 蔡锐龙,李晓栋,钱思思.国内外数控系统技术研究现状与发展趋势[J].机械科学与技术,2016,35(4).
[2] 王志学,李茂月,刘献礼,等.开放式数控软PLC系统的研究[J].哈尔并理工大学学报,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 车削、铣削、磨削和步冲操作说明[M].西门子(中国)有限公司北京出版社,2009.
[6] Quick Window操作简介和说明.国防科技大学出版社,1995.
[7] 孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.
[8] 汤子赢,哲凤屏,汤小丹.计算机操作系统[M].西安:西安电子科技大学出版社,2006.
[9] 侯捷.More Effective C++中文版[M].北京:电子工业出版社,2011.