1. 引言
运动控制器是开放式3D打印系统的核心部件,其多样化直接影响着开放式3D打印系统的设计难度。因此,现代3D打印系统的模块化和通用化发展对运动控制器控制程序的设计质量、成本和效率提出了越来越高的要求 [1] 。
本3D打印系统采用国际上较先进的开放式结构,以PMAC运动控制器为核心,通过设计用户控制程序实现对机床控制功能。结合以前其它类型运动控制器控制程序设计过程分析后发现:运动控制器无法识别G代码加工程序,需要设计人员设计专门转换程序;种类繁多且各个类型之间底层代码不具有通用性,即所设计的转换程序无法在不同运动控制器平台间移植;国内在运动控制器G代码转换程序方面研究有一定经验,但没有考虑不同运动控制器之间通用性,也未考虑不同编程平台之间可移植性 [2] 。因此,开发一套具有较高通用性的代码转换组件,可以提高开放式3D打印系统的开发效率与运行稳定性。
2. 组件体系及流程
2.1. 组件系统构成
本组件设计目的在于提高开放式3D打印系统的开发效率与运行稳定性。根据模块化设计思想及现代软件设计方法理论,结合运动控制器代码转换的特殊要求,将软件各个子功能按模块划分,即G代码输入接口、加工图形输入接口、G代码转换、底层词法数据库、G代码检错、仿真加工、应用参数设置、底层代码输出等几个主要模块,并由主程序进行统一管理和调度,如图1所示。
G代码输入与图形输入主要完成G代码文件或CAD图形文件读入、文件内容预处理;G代码转换将对正确的G代码文件或CAD图形文件按照转换规则转换成运动控制器底层加工程序;底层词法数据
Figure 1. System hardware structure diagram
图1. 系统硬件结构图
库建立G代码与运动控制器底层加工程序转换规则,不同运动控制器类型建立不同的转换单元,集成与同一数据库,以满足转换要求,转换单元可以增加、修改、删除;G代码检错用于对G代码词法、语法等正确性进行检查,可以知道G代码是否正确、是否需要进行修改等;仿真加工用于对加工程序模拟加工,可以知道加工过程是否正确、是否需要进行修改等;应用参数设置用于设置当前控制器类型,可以保证所调用的转换规则与控制器相对应等;底层代码输出完成转换后数控加工文件按照控制器要求的文件格式与语法生成并输出。
2.2. 组件工作流程
由于组件功能复杂,其其转换过程必须考虑在不同类型运动控制器兼容性 [2] ,这就决定了其数据处理过程的特殊性。结合基于开放式3D打印系统设计需要,对本组件进行了工作过程设计,如图2所示。
3. 组件软件实现
本组件的设计重点在与开放式3D打印系统设计思想保持高度一致,结合运动控制器特点设计加工文件格式,并能够输出正确的底层加工程序。因此该组件必须能够嵌入用不同编程语言设计3D打印系统中,作为一重要子模块。因此,本组件结构采用国际较为流行Microsoft COM组件模式,COM组件生成后可以在不同编程语言平台之间进行移植。图3所示为该组件嵌入3D打印3D打印系统实现G代码到PMAC运动控制器底层加工程序转换。
友好的用户界面能够提高系统的使用效率,方便操作,便于数控产品的推广。在Visual C++6.0的Microsoft Developer Studio环境中,使用应用程序向导(App Wizard)生成Windows GUI应用程序基本框架。
Figure 2. Component workflow flowchart
图2. 组件工作流程图
在资源编辑器中编辑对话框和控件,生成了一个非常友好的Windows风格的用户界面,利用VC 6.0中动态链接库技术完成各个子模块的设计 [3] 。最后,将该应用程序发布成Microsoft COM组件,以在不同编程语言平台之间进行移植,无需任何修改。限于篇幅,本文仅对组件中G代码转换和仿真加工两个模块进行简单介绍。
3.1. G代码转换
本模块集中基本参数配置、G代码显示、转换后底层程序显示、G代码修改与优化等功能于一体。基本参数设置正确后,当需要修改G代码时,根据组件G代码分析结果提示信息,对其中部分代码进行适当调整,并在显示中实时刷新显示,有利与提高代码修改、转换的效率。
3.2. 仿真加工
本模块是一个集NC数据处理和NC图形仿真于一体的图形仿真校验系统,由数控数据输入、数控程序数据处理、仿真计算和仿真显示等模块组成。
模块设计利用OpenGL技术和计算机动画技术,实现了数控加工过程的二维模拟仿真,可以观察零件加工过程,同时把一些重要的加工信息自动生成报表,其磨削仿真的用户界面,如图4所示。
(a) 输入G代码程序(b) 输出底层程序
Figure 3. Component display interface
图3. 组件显示界面
4. 总结
着重论述了面向运动控制器通用代码转换组件的设计方法和设计过程,给出在模型建立和软件设计上的设计模型。经过实际应用调试,该组件达到了设计目的,符合市场的要求。在运动控制技术迅速发展的今天,运动控制器的发展日新月异,因此,在以后的设计应用中,可以考虑用更先进的控制器底层兼容的办法以求得更高性能通用性。
基金项目
西南石油大学校重点开放项目支持。