杨 博,范贤光,姚 斌,姚博世
(1.厦门大学 智能装备技术研究所,物理与机电工程学院,福建 厦门 361005;2.陕西省汉江机床有限公司,陕西 汉中 723003)
传统的线材加工在对待特定的线材成形时需要用专门的模具设备来实现,如果生产的产品批量大,品种少,这种加工方式具有一定的优势[1]。但是,对于中小批量,多品种,的生产方式,传统加工方法往往不具有优势[2]。为了解决上述问题,课题组基于对柔性制造技术研究,开发出了一台具有三个回转轴(Y 轴、A 轴、B 轴)和两个移动轴(X 轴、Z 轴)的五轴数控弯丝机器人,机械结构如图1 所示。机器人工作顺序为:盘圆过的线材→经载料机构展开→由校直机构校直→再经送丝机构送丝→到折弯机构折弯→最终由剪切机构剪断成品。对于线材中圆弧较多且半径变化较大的零件,设计了自动换模机构,采用折弯和推弯的加工工艺,通过不同加工模位间的切换,实现了对形状复杂的零件加工。
图1 弯丝机器人整体机械结构
控制系统的硬件结构如图2 所示,以GTS-800-PV-PCI 运动控制卡为控制核心,负责系统的实时性控制任务,包括轨迹插补运算,复杂曲线的加工;伺服系统的控制、运行状态信号的采集与实时监控;回零、限位及伺服报错等功能的实现。以ADVANTECH-610L 型工控机为人机交互平台,负责系统的非实时性任务,如系统信息的管理、加工过程的仿真、数控代码生成与指令发送以及实时加工状态监测显示等功能;伺服系统采用安川(YASKWA)Σ-Ⅱ型交流伺服驱动系统,该系统由交流伺服驱动器放大器,交流伺服电机和光电编码器组成闭环控制[3]。
图2 控制系统硬件结构图
深圳固高公司生产的GTS-800-PV 高性能伺服运动控制卡,是基于DSP+FPGA 技术的多轴运动控制卡[4],具有相应速度快、精度高、开发周期短、编程和操作简单的特点,已广泛的应用于机器人、数控机床等多轴联动控制的高精度伺服装置上。该型卡可以同步控制八个运动轴,具有梯形曲线、S 型曲线,JOG 模式点位运动规划及电子齿轮同步运动规划功能,并同时具有三维直线插补和两维圆弧插补运动规划功能,特别适用于既有点位运动控制亦有插补运动控制要求的场合[5]。
伺服驱动器的控制方式一般由电流环、速度环、位置环这三个反馈控制环构成:最内层电流环为电机提供转矩;中间速度环用来控制速度;最外层位置环用来控制负载位置[5]。速度控制环包含了电流环和速度环,速度环对应驱动器的速度控制模式,该模式的优点是电机运行平稳,速度不随外界负载的变化而剧烈变化,同时为了满足对精度的控制要求,将电动机编码器检测的位置信号提供给运动控制卡,利用上位机的控制算法进行闭环控制运算,这样位置环便由驱动器移到了运动控制卡上,这样控制卡与编码器之间便构成闭环控制系统,同时调节控制卡的PID 控制参数,进一步优化系统的性能。
数控系统能够正常工作,软件要包括:上位机端的CNC 用户程序、上下位机间通讯的通讯驱动程序[6]。GTS-PV 随卡提供了windows 系统下的设备驱动程序GT800.sys,同时提供了面向运动控制卡的高级函数库GTS.dll,该函数库中封装了GTS 卡的运动控制函数,用户只需通过调用相应的控制函数,便可以发出运动控制命令,控制器将根据控制命令的要求,自动完成轨迹规划、安全检测、伺服刷新等复杂运算,计算结果转换成模拟电压或脉冲控制电机运转。
弯丝机器人控制系统软件是一个多任务处理软件,既要负责数控代码的生成、校检、译码,又要负责机器人的运行控制,运动状态数字及图形显示,系统参数设置,调试诊断等任务。采用模块化编程原理,将软件任务整理归类并交由若干个功能模块承担,通过对各功能模块的操作便可以完成相应的软件任务。如图3 所示,将系统划分为人机界面、系统配置模块、译码模块、数控内核(主模块)四大功能模块以及若干辅助功能模块。
图3 软件结构
在本系统软件中,人机界面主要负责完成人机对话交互、运行参数设定、系统状态显示、文件管理等功能;系统配置模块用于配置运动控制卡参数和机器人参数,并将配置好的参数保存在硬盘中,系统开机后自动加载;译码模块负责完成数控加工程序的解释、语法检测、下载等;数控内核是整个系统的控制核心,负责协调其它模块的运行,实现对系统的流程控制,同时负责异常状态的处理。这四个主要模块负责了系统的绝大部分功能的实现,下面将着重讨论这四个模块。
(1)人机界面:系统的主要操作显示界面,系统的绝大部分信息交互都是在此界面上完成,主要负责设定系统工作模式,如自动、手动、点动、MDI(人工数据输入),回参考点、各运动轴参数的显示、初始化程序状态、文件管理等。具体功能由以下3 个类实现:
①CDlgMain。主对话框类,是系统的主界面对话框,承担人机交互功能,负责打开关闭其它功能模块窗口,并在系统第一次运行时加载配置文件,初始化程序状态。
②CDialogMonitor。监视界面类,利用运动控制卡提供的API 函数,监视机器人运行状态,并实时显示各运动轴位置参数、状态参数、I/O 传感器状态。
③CSystermDebug。系统测试类,测试机器人运行性能,速度调节、手动点位控制与回参考点运动。
在CDlgMain 类中,主要成员函数如下:
其次是CDialogMonitor 类,它继承自CDialog 类主要成员函数如下:
其中CDialogMonitor 类和CSystemDebug 类在实现中都应用了Windows 的定时器来周期性的读取控制卡的信息,并实时的显示到界面上。
(2)系统配置模块:该模块包括运动控制卡参数配置和机器人参数配置,前者包括控制卡的PID 参数、轴坐标映射、控制方式、限位、回零速度与回零方式、软限位位置、误差带大小等参数设置,这些参数直接决定了系统的性能。后者定义的是机器人的机械结构参数、加工模具参数、包含了机器人的全部特征,这部分参数主要影响了后续数控译码过程。
(3)译码模块:此模块负责根据用户的系统配置,以及运动程序的语法规则对用户编写的运动程序进行语法检查,并进行解释译码,将源代码指令中给出的各种信息进行分离提取,转换成计算机便于处理的内部数据形式,并将程序段的内容分成位置数据和控制指令,以一定的格式存放在相应的存储区域。在译码过程中还要完成程序段的语法检查,若发现错误便进行停机并做报警显示。
译码模块的基本结构是将要识别存储的变量存储在一个自定义的CCNCData 类中,该类中存储有G、M、T 代码类型,坐标轴信息、半径、进给速度等变量。因为数控程序不是定长的,所以要求用动态数组将变量信息动态的存储放在CCNCDate 类中,在这里使用了MFC 的CArray 类,它可以方便的管理操作数组元素,其类定义如下:typedef CArray <CCNCData,CCNCData& > CCncArray。系统利用译码函数Compile(CString SourPath,CCncArray* pAry,double* angle)对代码进行编译,译码结果利用宏命令动态的存放到CCNCDate 类中,供软件执行调用,其实现命令如下所示:
(4)主模块:主模块是整个系统的核心,该模块在系统启动阶段读取配置文件同时初始化控制卡。在执行状态下主模块调用译码、插补等功能模块形成数控信息流,最后转入运动函数调度循环,在这个循环中,主模块监视控制卡的指令缓冲区、坐标状态寄存器、命令状态寄存器。根据缓冲区状况将数控信息流程合成控制卡函数流不断的发送运动控制指令,经由实时FIFO 发送到插补模块执行,并反馈命令执行情况、系统坐标等状态信号供人机界面实时显示,该循环控制流程如图4 所示。
图4 程序循环控制流程图
本文介绍了弯丝机器人的工作原理,利用GTS800-PV 卡与伺服电机搭建了弯丝机器人的硬件系统,研究了电机伺服控制方式;分析了软件的总体结构层次,采用模块化编程手法编写了系统软件,并简要说明了软件各主要模块的功能以及实现的方法,基本上实现了弯丝机器人数控系统的功能。目前该数控系统已在课题组与厦门某机床厂联合开发的弯丝机器人上得到了良好的应用,如图5 所示。
图5 采用本数控系统的弯丝机器人
[1]王同海. 管材塑性加工技术[M]. 北京:机械工业出版社,1998.
[2]叶志坚. 基于PMAC 数控弯丝机的研发[D]. 厦门:厦门大学,2009.
[3]郑魁敬,高建设. 运动控制技术及工程实践[M]. 北京:中国电力出版社,2009.
[4]GTS 系列运动控制器用户手册(版本1.1). 固高科技(深圳)有限公司,2011.
[5]董正凯. 基于运动控制器的开放式数控平台的研究[D]. 深圳:哈尔滨工业大学深圳研究生院,2010.
[6]Lin Rongkun,Yao Bin,Chen Minghui,Li Fei. Application Analysis of Servo-Control System Based on PMAC with Feedforward Control[J]. 2010 3rdInternational Conference on Machine Vision,December 28-30,2010,Hong Kong:607-610.
[7]张剑,殷苏民. 基于运动控制卡的开放式数控系统研制[J]. 机床与液压,2003(3):170-173.