基于Java的数控冲床系统的研究与开发
2019-10-08谭朝琪龙毅宏
谭朝琪 龙毅宏
摘 要: 提出了一种基于Java语言的数控冲床控制系统的设计方案。方案采用Java SWT/Jface搭建操作系统界面,利用监听器对界面事件进行监听和处理;利用JNI在Java程序中调用运动控制卡中的库函数实现系统对机床加工的状态监视和运动控制。该系统可运行于普通PC上,PC机作为上位机对系统进行任务管理,而运动控制卡实时完成上位机发出的任务请求。利用Java作为开发工具,不仅能满足一般厂商对于数控冲床系统的要求,且系统具有开发周期短、稳定性好、易于拓展等优势。
关键词: 数控系统;Java;运动控制卡;数控冲床
中图分类号: TP311.52 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.05.041
本文著录格式:谭朝琪,龙毅宏. 基于Java的数控冲床系统的研究与开发[J]. 软件,2019,40(5):212215
【Abstract】: A design scheme of CNC punching control system based on Java language is proposed. The scheme uses Java SWT/Jface to build the operating system interface, and uses the listener to monitor and process the interface events. Using JNI to call the library function in the motion control card in the Java program to realize the state monitoring and motion control of the machine tool processing. The system can run on a normal PC, the PC acts as a host computer to perform task management on the system, and the motion control card completes the task request issued by the host computer in real time. Using Java as a development tool can not only meet the requirements of general manufacturers for CNC punching systems, but also has the advantages of short development cycle, good stability and easy expansion.
【Key words】: Numerical control system; Numerical control punch press; Java; Motion control card
0 引言
数控冲床是钣金加工设备之一,常用于薄板结构类零件的生产加工。通过特定的模具,可进行冲压、落料、拉深、成型等工艺加工,应用领域从传统的制造业到汽车、航空航天范围之大,几乎涵盖了当代制造业的全部行业[1]。数控系统作为设备的核心,影响着零件加工的质量和效率。但是传统的数控体系如 FANUC、SIEMENS、ABB,采用封闭式结构,使用专用的嵌入式硬件,人机界面不够友好,需要经过长期培训的的人员才能熟练操作,具有一定的操作难度,制造成本和培训成本较高[2]。而随着自动化需求的增长,数控系统向着领域普及化、操作简单化、设备智能化发展[3]。因此传统的数控冲床系统无法满足数控系统功能多样性的市场需求和适应快速变化的市场环境。新型的开放式数控体系大多采用PC嵌入NC或者NC嵌入PC[4]。PC嵌入NC,即将PC功能嵌入到NC专用主板中,虽然允许计算机部分的二次开发,但由于其主板仍是传统的封闭式,核心部分不够开放,且人机界面只能是基于NC提供的API进行开发,开发自由度低,难度高[5]。NC嵌入PC型数控系统是目前应用领域最为广泛的一种,由IPC和运动控制单元组成,用户可根据运动控制单元提供的API进行系统软件的开发。常用软件的开发语言C/C++,但由于其语言自身的缺陷性,开发难度高,且有存在着软件不够安全稳定的隐患,移植难度高,基本只能运行于单一平台。传统的运动控制器大多选用PLC,但随着运动控制卡的发展,运功控制卡在满足加工精度要求的同时,价格比PLC低廉,“运动控制卡+PC机”的体系结构开始受到设备生产厂商们的青睐。
本文针对某基于PLC的转塔数控冲床设备存在的成本较高、系统开发周期长、后期维护和升级难度大等问题,对操作和控制系统重新设计,提出了一种基于Java语言和运动控制卡的数控冲床系统的设计方案,成功开发了一套NC嵌入PC的开放式数控冲床系统。该系统成本更低,可用于普通PC,易于移植到不同的操作系統。在满足设备加工精度要求的同时,提升了操作的简易性、降低了后期维修及升级的难度和成本。
1 数控系统的开发工具的选择
理论上,任何一门高级语言都能开发出一套数控系统,目前市场上常见的基于PC的数控系统大多是采用C++开发的。但C++代码没有垃圾自动回收机制,容易内存泄漏,不够安全,语法和文法比较晦涩繁琐,开发周期长。Java作为一种完全面对对象的语言,运行于虚拟机而不依赖于平台,吸收了C++语言的许多优点,同时也摒弃了C++的多继承、指针等概念[6],相较之下具有很多优势:
(1)安全可靠。在Java语言中,内存的分配和回收都是自动进行的,程序员无须考虑内存碎片的问题,且Java提供了许多异常处理(Exception- Throw)方法,提升了了Java的可靠性和稳定性。
(2)简单直接。Java语言对通过底层进行封装,语法清晰,规模更小,而且Java SWT/Jface提供了许多控件(Control)、事件(Event)和监听器(Listener),可直接利用组件进行编程,开发简单直接[7]。
(3)易于移植。Java天生的优势便是方便跨平台,因此基于Java开发的数控系统更易于移植到其它平台上。
2 控制系统的硬件设计
转塔数控冲床系统硬件结构如图1所示,冲床具有5个伺服轴:X轴、Y轴、T轴、C轴和P轴。X、Y轴夹带板材做纵横运动,用于板材定位;T轴带动转塔旋转,用于模具选择;C轴为旋转轴,带动模具旋转以实现模具起始和加工时的方向控制;P轴为冲压轴。PC机机通过EtherCAT与控制卡连接,实现100 Mbps的数据传输速率。控制卡的32路数字输入量连接外部各种按钮开关、电磁信号,48路数字输出量连接电磁阀用于夹钳,定位销等外部组件的控制。本次实例所用控制卡最多可控制6轴伺服/步进电机,将X、Y、T、W轴的驱动器连接至控制卡轴接口用于实现电机的脉冲输入、伺服使能和检测伺服报警。主轴是直驱伺服电机,通过RS232接口实现PC机与主轴伺服的点对点数据通讯,用于上位机设置和查询伺服的冲压参数。伺服的位置信号、送料信号、应答信号连接到控制卡的32位输入口用于检测冲头的运行状态和位置,冲压信号、原点/预压位切换信号连接至控制卡的48位输出用于控制冲头的工作状态。
3 控制系统的软件设计
本转塔数控系统的软件用Java编写而成,因Java SWT/Jface结合了Java Swing和Java AWT,具有丰富的图形库和事件监听器,易于平台移植,运行稳定且速率快,所以被用做系统GUI的主要设计工具。
3.1 基于Java数控系统的设备驱动
本系统所使用的运动控制卡提供了动态链接库(DLL),通过调用库函数实现对轴的控制以及I/O信号读写,Java无法直接使用。JNI(Java Native Interface)提供了可让Java与其它语言的代码交互的若干API。为实现Java程序驱动设备,采用C++重新封装系统需要使用的库函数,使之符合JNI标准,生成新的动态链接库(DLL),Java通过加载该动态库,便可实现对动态库函数的使用。
主轴所用的是直驱伺服电机,需要通过RS232串口连接PC机实现上位机与伺服的通讯,以此来读取或写入主轴伺服驱动的参数[8]。对于Java驱动RS232串口有许多第三方jar包,本系统选用rxtx- 2.2.jar包,成功实现了PC机对伺服驱动数据读取和写入。
3.2 系统的软件体系结构
该系统是利用Java环境开发的。采用人机交互界面,在满足设备所需功能的同时,简单直观,易学易用。整個系统采用模块化设计,如图2所示,系统主要包含加工控制、模具库管理、参数设置、信号检测模块[9]。为提高运行效率且能实时检测设备状态采用了多线程技术[10]。由于需要存储模具参数、机床参数和用户参数,采用了Java dom4j创建XML文件对数据进行读写。
(1)信号检测:通过调用本地函数,实时检测控制卡的输入和输出信号并显示在界面上。主要起到四方面的作用:其一测试各个信号的完好性,用于机床的调试;其二保证加工步骤逻辑的合理性,如在控制T轴转动时,需检测T销出信号,必须保证T销先出来后才能使T轴运动,其三起保护作用,在运行中若检测到有损设备或者威胁人身安全的情况发生时,需要及时停止设备运行;其四通过输出信号对设备进行手动控制。
(2)参数设置:用来设置机床的各个参数,分为机床参数和用户参数。机床参数属于出厂时由设备生产厂商设定且不允许用户再次修改的参数,如脉冲当量、最大加速度、最大速度等。同时能通过修改部分机床参数,该系统便可适用于不同的转塔数控冲床,如16位转塔数控和32位转塔数控。用户参数属于用户可定义和修改的参数,如不同材料下的进给速度、不同型号的模具的冲压速度、冲压深度等。用户通过设定合理的参数使设备在不同的加工环境和加工要求下,能保证加工的精度和工作效率。
(3)模具库管理:转塔数控冲床的一大优势便多工位模具的自动更换,常见的有16位转塔数控和32位转塔数控。为了满足不同模具对加工要求的不同,同时起到保护摸具的作用,建立了模具库管理模具的参数信息,如模具是否属于旋转模、上下模具的高度、模具的保护值、模具间隙、模具最大承受冲压速度、模具形状、模具寿命等[11]。在设备加工更换模具时,载入模具参数,系统根据得到的模具信息调整相关运行参数值,避免模具遭到损坏,提高加工的精度和模具的使用寿命。
(4)加工模块:加工模块分为加工控制和界面显示两部分,作为整个控制系统的核心部分,充分考虑机床实际加工情况,将加工模式分为手动加工、半自动加工、自动加工。设计了G代码解释器,在设备加工前对加工程序进行预读处理,将程序转换成加工指令如轴运行位置、进给速读、辅助功能等,并进行语法和预加工位置检查,以防加工时位置超程或冲头冲到夹钳等情况的发生[12]。在进行加工的时,定期读取控制卡的位置寄存器、错误寄存器,以确定机床的当前的运行状态、位置、速度等,并实时显示在界面上。为了使用户能更直观的了解当前加工状态,添加了图像显示功能,在机床工作的同时,模拟显示出加工图形和当前工件所在位置[13]。
3.3 应用结果
按照上述方案搭建好硬件环境、完成软件设计后进行测试,经测试,由Java SWT/Jface编写的界面简洁美观、操作简单直接、实时反馈设备状态,用户体验较好。在长时间运行和高速运行测试中,系统运行稳定,精度高,能满足厂商对于设备加工的要求。
4 结论
本文针对当前数控系统开放度不够、系统界面不够美观、开发周期长的问题,提出了一种基于Java语言的数控冲床系统设计方案,按照该方案设计的系统在满足运行稳定,加工精度高,操作简单直观等设备基本要求的同时,具有以下优势:
(1)Java语言安全可靠,语法简单直接,对开发者要求低,基于Java开发的数控冲床系统开发周期短、开发成本低。
(2)由于Java可跨平台的优势,根据此方案设计的系统易于移植应用到其它平台,能为厂商提供更多的平台选择。
(3)基于Java开发的数控系统拓展性强,便于厂商的后期更新升级。
(4)采用NC嵌入PC的开放式结构,PC作为上位机,运动控制卡作为控制单元,易于后期设备的检修和维护。
参考文献
[1] 李静. 数控冲床在钣金加工中的应用[J]. 机械管理开发, 2012(2): 86-87.
[2] 王谦. 开放式数控系统的发展现状与展望[J]. 科技经济导刊, 2018(15).
[3] XU X W, NEWMAN S T. Making CNC machine tools more open, interoperable and intelligent: a review of the technologies[M]. Elsevier Science Publishers B. V. 2006.
[4] 赵春红, 秦现生, 唐虹. 基于PC的开放式数控系统研究[J]. 机械科學与技术, 2005, 24(9): 1108-1113.
[5] 杨笋. NC嵌入PC结构的开放式数控系统研究[J]. 自动化应用, 2011(4): 1-3.
[6] 郭克华. Java 语言程序设计[M]. 清华大学出版社, 2012.
[7] 赵姝菊. Java GUI 事件处理机制之探究[J]. 济南职业学院学报, 2010(2): 98-99.
[8] 李良, 朱善安. 基于Java的串口通信[J]. 电子器件, 2007, 30(2): 714-716.
[9] XU X M, LI Y, SUN J H, et al. Research and Development of Open CNC System Based on PC and Motion Controller[J]. Procedia Engineering, 2012, 29(4): 1845-1850.
[10] 路勇. Java多线程同步问题分析[J]. 软件, 2012, 33(4): 31-33
[11] 叶伟炳. 一种成套模具数据库构建方法及数据管理系统: CN 102663013 B[P]. 2014.
[12] 寇晓雨. CAXA数控车床自动编程注意要点及难点解析[J]. 软件, 2012, 33(5): 84-85
[13] 张小文. 基于PC的数控转塔冲床 CAM/CNC一体化系统研究开发[D]. 南京航空 航天大学, 2007.