李 凡 王德成 李 伟 程 鹏
(机械科学研究总院,北京 100044)
弹簧类零件种类繁多,已有螺旋弹簧、板类弹簧、杆类弹簧和弹性元件等4大类近1 800个品种[1],广泛应用于汽车、船舶、航天以及轻工等多个领域。传统卷簧机难以适应中小批量、多品种的生产方式,因此多工位弹簧成型机以其出色的成型能力得到了广泛应用。多工位弹簧成型机又称八爪机、万能机,能够非常方便地成形压簧、拉簧、扭簧和各种异形线C成型弹性件。传统凸轮式多工位弹簧机依赖于凸轮实现多轴进给,凸轮位置和滑座行程的精确调整相对困难,特殊弹簧生产中的专用凸轮磨制也很费时间,因此无凸轮弹簧成型机应运而生。无凸轮弹簧成型机各轴均由独立伺服系统驱动,由于其轴数多、运动复杂度高,目前我国弹簧成型设备制造企业尚未很好地掌握无凸轮弹簧机数控技术,多数企业的数控系统长期依赖于台湾或进口。
本文针对无凸轮弹簧成型机功能特点,基于IPC和PMAC运动控制卡搭建开放式、主从式双CPU数控系统硬件平台,IPC作上位机完成后台管理等非实时任务,PMAC作下位机完成运动控制等前台实时任务。基于QT图形界面开发工具,在Windows平台上开发数控系统软件,实现了手动控制、数控编程、输入输出控制、生产控制、状态监控、文件管理、系统设置和人机交互等功能集成。
多工位弹簧成型机能够非常方便的成型压簧、拉簧、扭簧、平面涡卷弹簧和形状结构复杂的异形线成型弹性件。多工位弹簧成型机由校直机构、送线机构、转线机构、转芯机构和成型机构组成。校直机构用以消除钢丝原有的弯曲变形;送线机构实现钢丝精确进给;转线机构控制钢丝旋转,用于空间复杂弹簧成型;转芯机构控制轴芯旋转,以避免成型过程中钢丝、轴芯和刀具之间发生干涉,同时还起到控制螺旋弹簧节距的作用。成型机构包含8个成型工位,负责完成弹簧成型。送线、转线、转芯机构由3台伺服电动机分别驱动,定义为FEED、RW、RQ轴;成型机构8个成型工位各由一台伺服电动机驱动,定义为A~H轴;有时为方便弹簧成形,可在成型工位安装卷曲轴SP。多工位弹簧成型机结构如图1所示,机床本体如图2所示。
数控系统硬件系统采用NC嵌入PC型开放式数控系统体系结构,基于工控机和运动控制器搭建了IPC+PMAC运动控制卡的主从式数控系统硬件平台。工控机作为数控系统上位机,负责运动信息设置、人机界面交互以及数据管理与存储等非实时性任务。PMAC运动控制卡作为系统下位机,完成插补运动控制、输入输出控制以及数据采集等实时性控制任务。
Turbo PMAC Clipper是由Delta Tau公司设计制造的多轴运动控制卡。Clipper在保持低价、整合的同时,提供了强大的控制性能。采用Turbo PMAC2 CPU,基板提供4轴伺服控制,通过两块ACC-1P轴扩展卡可扩展至12轴伺服控制。运动控制卡不占用主CPU线程,处理速度快,提高了加工精度与效率。工控机与运动控制卡之间采用通用的以太网通讯方式,运动控制卡接收上位机指令,在运动控制卡内部进行复杂精确运算,向伺服系统和I/O系统发出相应控制信号,控制系统完成要求的各种复杂动作。同时对系统运动执行状态、输入输出状态进行实时监测,并将监测数据及时反馈至上位机,以协调完成数控系统各控制任务。数控系统硬件系统结构如图3所示。
数控系统软件采用前后台式分层设计,包括前台控制层、后台管理层以及前后台通讯层3部分,前后台程序进一步进行模块化设计。前台控制程序由下位机PMAC运动控制卡实现,主要完成各轴插补运动控制、开关量输入输出控制等实时性任务,包括前台系统设置模块、PLC模块和运动控制模块。后台管理程序在上位机中实现,主要完成运动信息设置、人机界面交互以及数据管理与存储等非实时性任务,包括手动控制模块、数控编程模块、输入输出模块、生产控制模块、状态监控模块、文件管理模块和系统设置模块。通讯层负责完成前台控制程序与后台管理程序之间通讯。数控系统软件系统结构如图4所示。
前台控制层由PMAC运动控制卡负责完成,实现运动控制、PLC控制以及系统参数配置功能。
PMAC运动控制卡是一款功能强大的通用型多轴运动控制卡,应用于不同控制系统时需要对系统进行相应的参数配置,包括伺服芯片参数设置、电动机参数设置、坐标系参数设置、输入输出参数设置以及M变量地址设置等。
运动控制是整个数控系统的核心部分,根据多工位弹簧成型机实际加工过程以及PMAC运动控制卡运动程序规范,所设计的数控系统运动程序由运动参数设定、运动程序初始化和工步运动程序三部分组成。定义PMAC变量Pxx01~Pxx15存储各工序运动参数,其中Pxx02~Pxx13存储当前工步各轴位置绝对坐标参数,Pxx01存储当前工步气缸输出设定参数,Pxx14存储当前工步单步速度参数,Pxx15存储当前工步完成后延时时间参数。运动程序初始化过程中需要对坐标系、运动轴、运动插补模式、进给量模式、加减速时间以及矢量进给轴进行设定。各工步运动程序采用程序块方式用“BLOCKSTART”和“BLOCKSTOP”指令操作符进行隔离,各程序块中定义当前工步气缸输出状态、各轴进给量、进给速度和延时时间,定义同步M变量“M8000==xxx”用以在程序自动运行过程中跟踪当前工步。运动程序结构设计如下所示:
Open Program 1 Clear
…
N1
BLOCKSTART
M8000= =1 X(P102) Y(P103) F(P114)
BLOCKSTOP
…
Close
PMAC提供64个可异步操作并快速重复执行PLC 程序,用以完成板卡初始化配置、输入输出设备控制、回零、退刀以及自动剪线等操作。本数控系统各PLC程序对应功能如表1所示。
表1 数控系统PLC程序功能对照表
PLC程序功能PLC程序功能PLC1PMAC板卡初始化配置PLC24自动剪线PLC2~PLC1716路输出控制PLC25输入输出设备状态复位PLC18~PLC214路探针输入信号响应PLC26系统参数初始化配置PLC22回零PLCC0~PLCC11各轴单轴回零程序PLC23退刀
基于以太网接口通讯方式和PMAC运动控制卡PcommServer封装库函数组件,实现数控系统上位机应用程序软件与PMAC运动控制卡通讯。PcommServer动态链接库基于COM组件形式提供给用户,为在Windows操作系统下开发应用程序提供了丰富的函数接口。QT提供的QAxContainer模块允许程序调用COM组件,在开发过程中采用生成命名空间的方式调用COM对象接口函数。利用QT提供的dumpcpp工具,为PcommServer类型库生成一个名为PCOMMSERVERLib的C++命名空间:在Windows操作系统命令提示符界面下运行“dumpcpp -n PCOMMSERVERLib {50ECCF67-B73C-431B-A53D-9EDDAF3CE611}”命令,生成pcommserverlib.cpp和pcommserverlib.h两个文件。
QT应用程序开发过程中,首先在工程文件.pro中配置QAxContainer模块:“CONFIG += qaxcontainer”,并导入pcommserverlib.cpp和pcommserverlib.h文件。在需要与PMAC通讯的文件开头包含pcommserverlib.h头文件,并调用using编译指令使用PCOMMSERVERLib命名空间。最后定义“PCOMMSERVERLib::PmacDevice *Pmac”对象指针,通过Pmac对象指针即可实现对所有库函数的调用。在应用程序开发过程中,常用库函数主要有SelectDevice()、DownLoad()和GetResponse(),分别用以运动控制卡驱动、程序下载和发送在线指令并获取返回值。
后台管理层由工控机负责完成,实现运动信息设置、人机界面交互以及数据管理与存储等非实时性任务,包括手动控制、数控编程、输入输出控制、生产控制、状态监控、文件管理、系统设置和人机交互八大功能模块。其中人机交互界面由标题栏、工具栏、主控区和状态栏组成,主控区分别包括生产界面、手动界面、I/O界面和编程界面,如图5所示。后台管理模块在QT开发环境中利用C++语言实现。QT是一个跨平台的C++图形用户界面应用程序开发框架,支持Windows、Linux、Max OSX以及iOS、Android、WP等平台开发,拥有丰富的API,具有跨平台、面向对象、易于扩展等特点。
手动控制模块负责完成系统调试过程中的单轴运动、程序单步/单件运动以及回零、退刀和自动剪线等快捷操作任务。单轴运动包括鼠标/键盘点动控制、手轮控制和输入指定位置自动运动3种控制方式,分别通过发送在线指令“#nJ+”、“#nJ+”和“#nJ=xxx”实现。程序单步/单件运动分别通过发送在线指令“S”、“R”进行控制。回零、退刀和自动剪线等快捷操作通过发送在线指令“ENABLE PLC n”由相应的PLC程序实现。
数控编程模块负责完成程序输入、编译和下载任务。数控程序输入由QT表单控件QTableWidget实现,可执行程序插入、删除和修改操作,用户上位机数控程序包含15个字段,分别为12轴位移量、输出设备控制、速度控制和延时时间控制。用户输入的矩阵式数控程序必须进行编译才能下载至PMAC运动控制卡,编译操作由编译函数MakeFile()完成。程序依次读取各行参数,写入相应P变量,然后写入运动初始化程序,进而根据当前工步各轴运动状态动态写入运动程序块。最后通过调用PcommServer库函数DownLoad(),将编译完成的运动程序下载至PMAC运动控制卡中执行。
输入输出模块负责完成对气缸、探针、料架等输入输出设备的测试、监测和控制任务。系统采用ACC-34AT输入输出接口板,在PLC程序1中进行ACC-34AT初始化配置,并定义M0~M31变量地址分别指向AI0~AI15、BO0~BO15,用以实现对相应输入输出接口状态的监控。系统输入设备包括:探针#1~探针#4、料架报警、安全门报警、伺服系统动力电源报警、伺服系统控制电源报警以及8路备用接口;输出设备包括:气缸#1~气缸#4、料架启动、报警信号输出、液压剪以及9路备用接口。在I/O界面中,可通过触发相应按钮,对输入输出设备进行测试、监测和控制操作。
生产控制模块负责完成实际生产过程中产量设置、生产状态显示和生产过程控制任务。用户完成数控程序调试工作后,将程序下载至PMAC运动控制卡,在生产界面中设置目标产量,并启动自动连续生产模式。生产控制模块可在不停机状态下,实时控制全局速度与送线轴状态,并对剩余产量、生产进度以及平均生产速度等信息进行实时监测。
状态监控模块负责对数控系统上下位机通讯状态、I/O状态以及伺服系统状态(使能、限位以及各轴当前位置)的监测、故障诊断与报警。在QT中新开一个线程GetDataThread对PMAC状态进行实时监控,并将监测数据保存至PublicElement类的成员变量中。重载GetDataThread类的run()函数,在函数中,每隔采样周期发送MachineDataUpdate()信号,利用QT的信号与槽机制,调用状态监控类StateView中的成员函数UpdateMachineData(),利用PMAC库函数GetResponse()实现对系统状态监控。监控模块在每个查询周期内查询所有状态值,刷新人机界面显示状态,并对异常情况做出报警处理。
文件管理模块主要负责完成用户数控加工程序文件的保存和读取操作。用户可将当前用户界面中的数控加工程序,经过编译后保存至系统物理硬盘当中,在下次加工过程中,可直接从系统硬盘中读取数控加工代码,经逆编译后写入用户界面。
系统设置模块负责完成电动机参数设置、限位设置、用户管理、轴位选择、切刀选择、编程方式设置以及系统速度设置等操作,增加系统柔性,能够使系统经过简单的参数调整后,直接应用于不同型号的弹簧成型设备。
在分析无凸轮多工位弹簧成型机工作原理与功能特点的基础上,基于IPC和PMAC运动控制卡搭建了开放式、主从式数控系统硬件平台,工控机负责处理运动信息设置、人机界面交互以及数据管理与存储等非实时性任务。PMAC运动控制卡完成插补运动控制、输入输出控制以及数据采集等实时性控制任务。基于QT图形界面开发工具,在Windows操作系统上开发了一套弹簧成型机数控软件,软件采用前后台式分层设计,包括前台控制层、后台管理层以及前后台通讯层三部分,前后台程序进一步进行模块化设计,实现了手动控制、数控编程、输入输出控制、生产控制、状态监控、文件管理和系统设置等功能。最后经过实际绕簧测试证明,系统界面友好,功能齐全,操作方便,能够很好地满足弹簧成型机实际生产需要。
[1]程建中. 合力打造中国弹簧行业腾飞的新篇章[J]. 机械工业标准化与质量,2012(增刊):4-8.
[2]任小中,杨旭,吴孜越,等. 开放式弹簧机数控系统开发[J]. 制造技术与机床,2017(8):139-143.
[3]庞文卓. 基于PMAC的卷簧机数控系统[D]. 洛阳:河南科技大学,2011.
[4]丁许,何宁,李亮,等. 基于PMAC的微细铣床数控系统软件开发[J]. 制造技术与机床,2016(8):176-180.
[5]王彩芳,刘建群,高伟强,等. 基于QT+PMAC的V沟机数控软件的开发[J]. 组合机床与自动化加工技术,2014(2):98-101.
[6]兰文宝. 基于PMAC的工业机器人控制系统研究与实现[D]. 哈尔滨:哈尔滨工业大学,2013.
[7]庞文卓,库祥臣,李济顺. 基于运动控制器的卷簧机数控系统研究[J]. 制造技术与机床,2011(6):56-58.
[8]张耀,黄广文,程文峰,等. 卷簧机数控系统的开发[J]. 制造技术与机床,2007(12):37-42.
[9]Turbo PMAC2-Eth-Lite Hardware Reference.Delta Tau Inc,2008.
[10]Turbo PMAC2-Eth-Lite Software Reference. Delta Tau Inc,2008.