文杰棱 韩震宇 王咏麒 田海林
(四川大学制造科学与工程学院,四川 成都610065)
桌面数控设备对小尺寸零件加工在成本、功耗和占地面积等方面有着巨大优势。桌面数控设备大致有3种实现方案:第一种为微型机床搭配传统数控系统,但是桌面数控设备对成本敏感;第二种为基于PC的数控系统软件及其相应接口卡控制微型机床[1],由于软件设置复杂,很难针对不同需求进行修改,结果表现为精度差、稳定性不高;第三种方案为在一定硬件平台下,自行完成数控系统设计。
方案三中,根据硬件平台的不同,可分为基于PC[2-3]和基于嵌入式芯片[4-7]。基于PC的数控系统可简化在任务调度和通信等方面的工作,实现仿真加工、轨迹显示等复杂的人机交互功能。但是引入PC不仅增大体积和成本,同时由于通用操作系统不满足数控系统实时性要求,需要增加实时性内核补丁或者使用硬件实现数控系统中高实时性任务[8-9]。嵌入式芯片在单个芯片上高度集成了CPU、RAM、ROM以及丰富的外设,在体积、功耗和成本上相对与PC有巨大的优势。STM32是基于Cortex©-M内核开发的一系列32位微处理器,主频从32 MHz到480 MHz,可以平衡嵌入式数控系统对CPU实时计算能力和成本的要求。因此本设计采用STM32完成数控系统设计,使用FPGA辅助STM32控制具体执行器,并设计桌面车床[10]进行验证。
传统数控系统模式边界模糊,易使初学者混淆。对这些模式的功能及其实现方式分析可概括为两种模式:手动加工和自动加工。
合理的功能分类有助于理清任务内容,降低使用门槛。在具体实现中,两模式存在实现方式的重叠,部分硬件和软件可以共用。依据客户机-服务器设计模式(Client-Server(C/S)),将数控车床控制系统划分为客户机和服务器两部分。客户机主要完成人机交互类工作,服务器主要完成参数修改、动作执行以及数控系统的核心功能,G代码执行。两部分主要通过自定的不对称通信协议实现服务器接收执行客户机指令,并返回执行结果,协同实现两种加工模式。
硬件是数控系统的基础,硬件设计要满足数控系统在数据处理能力、多轴联动同步性、存储能力和抗电磁干扰等方面的要求。限于篇幅,这里不对具体电路原理图展开,仅从需求角度对数控系统硬件部分进行分析设计。
客户机部分的主要任务是人机交互,而屏幕显示和虚拟按键是人机交互的主要设备。为了降低工作量,提高开发效率,许多嵌入式设计采用串口屏实现人机交互[4,11-12],但是设计受限且串口屏面向一般工业应用场景,不满足坐标显示等高实时要求。因此在客户机硬件设计中采用STM32F429+触摸屏自行进行人机交互开发。同时充分利用STM32丰富的外设,增加USB、SD接口用于U盘、键盘以及SD卡等外部G代码输入;使用Flash实现G代码板内存储;添加32MB的SDRAM拓展STM32F429内存,同时作为显示屏显存;拓展手轮接口用于外接电子手轮;预留以太网、RS485接口增加系统开放性以及功能可拓展性。
由于服务器承担自动加工中绝大部分任务,所以服务器硬件需要满足数控系统实时性、同步性以及稳定性要求。采用主频高达216 MHz、支持浮点运算的STM32F767以达到数控系统的实时性要求。采用EP4CE15F484同步发送各轴运动指令到电机驱动器。添加SDRAM拓展内存,提高最大G代码行数避免系统死机;使用FMC进行STM32和FPGA的主从通信;由于FPGA直接与执行器和传感器连接,增加光耦隔离避免外部信号干扰等。
虽然通过两个MCU完成客户机和服务器任务,但是考虑到体积和安装,将两部分集成在同一块PCB电路中,共用必需的电源、时钟、急停、指示灯等模块。数控系统整体的硬件架构如图1所示:
软件设计主要对客户机功能、服务器任务进行分析设计。限于篇幅,且有许多文献[13-16]对译码、刀补和插补等进行介绍,这里不对所有子功能模块详细阐述。
emWin是针对嵌入式平台开发的图形软件库。使用emWin控件可以如同搭积木一般完成界面编辑,再由STM32的LTDC控制器驱动显示屏实现界面显示。emWin支持触摸屏,周期性检测触摸交互,并获取屏幕坐标系下的点击位置坐标,通过点击位置与界面控件位置比较判断是否该控件被操作,在控件回调函数中编写响应函数实现虚拟按钮功能。通过对不同按钮类控件编码,在按钮控件回调函数中将对应编码写入内存即可完成标准G代码或者其他类型数据的虚拟按键输入。传统数控车床支持使用电子手轮,相对于按钮,电子手轮可以实现灵活微进给,根据摇动速度控制电机进给速度,为对刀等操作提供极大便利。FatFs是针对嵌入式系统设计的文件系统模块,FatFs根据扇区信息完成数据读写,并做必要的数据保护,对不同的存储介质提供泛型操作。客户机与服务器之间使用4Mbps串口通信,以满足大数据指令响应的实时性。服务器返回的结果类型较多,串口接收中断解析可能会导致客户机系统有较大的时间抖动,所以需要将除显示实时性要求高的(如坐标)结果使用FIFO缓冲区暂时存储,待其他任务完成后再对结果解析。触摸检测、屏幕显示和结果解析在宏观上是并行任务,因此借用嵌入式操作系统μC/OS-Ⅲ进行任务调度,同时emWin和FatFs亦可以使用操作系统提供的信号量等共享资源保护机制进行资源保护。
限于服务器内存大小需要将译码、刀补和插补等模块并行执行以降低对缓冲区需求,因此带来任务调度、共享资源管理问题。随着硬件的发展,MCU片上RAM大小增加,而且可以外扩RAM增加系统内存,因此许多并行任务可以转为串行执行,从而简化设计,降低系统耦合,增加系统鲁棒性。
由于服务器被动响应客户端指令,所以在服务器空暇时,应该不停查询是否存在指令通过数据通信送达,根据指令内容通过函数指针调用执行参数修改、动作执行、G代码执行等服务类任务。参数修改任务不仅提供对刀数据等自动加工时必需参数修改,也可以修改电机参数(最大速度、加速度等)以及机床参数(最大行程、前/后置刀架、螺距等),提高数控系统柔性。动作指令发送的先后必然破坏联动的同步性,所以动作执行任务仅需考虑同一时间下单轴动作,即对应手动加工模式。
G代码任务包括译码、刀补、速度规划、G代码解释等子任务[16]。通过FatFs读入系统的文本文件是以字符数组保存的,如果在G代码解释时再寻找指令,无法满足加工速度提出的实时性要求。因此,译码需要预先从字符数组中提取并检查指令及其数据。刀具长度补偿是指当刀具长度因为换刀、磨损导致切削不到工件时,补偿这部分缺失而不需要重新对刀,节省时间;速度控制主要指加减速控制,也有针对连续微小线段进行速度前瞻控制[17],G代码中描述的轨迹,都是从零速度开始,零速度结束。根据牛顿定律,必然存在加速和减速过程,对于步进电机,在启动频率之下,加工精度要求不高,可以不考虑加减速。频繁的启停影响加工效率,速度前瞻控制引入转接速度避免电机启停。G代码解释将G代码转换为具体指令驱动执行器运动。对于简单执行器,如冷却液、照明等,只需控制FPGA产生相应的高低电平;对于单个复杂执行器,如直流无刷电机,控制FPGA产生相应的使能、方向电平信号以及速度脉冲信号序列发送给直流无刷驱动器;对于多个复杂执行器联动,使用逐点比较插补分解出各轴位移,再控制FPGA产生相应的方向电平信号以及包含位移速度信息的脉冲序列发送给步进电机驱动器。
急停用于危急情况下机床的紧急停止,如果急停仅仅给主回路断电,存在急停复位后电机继续运动的可能性,所以急停信号同时需要提供给数控系统,用于控制停止电机,对于主轴这种大惯量部分,必要时适当反转电磁力矩或者增加机械抱死装置。综上所述,服务器部分的参考模型如图2所示。
客户机服务器模式下的系统本质上是主从系统,这决定了相互之间通信协议具有不对称性。客户机需要按照服务器协议调用服务器提供的服务,由于G代码数据具有不确定性,如果服务器采用不定长方式接收数据,时间抖动较大,为了实现定长接收需要客户机先发送一个指令告诉服务器G代码长度,然后在下一个指令发送对应长度G代码。
为了验证修改本嵌入式数控系统,分别采用了两台机床,其一为南京翼马ET100-ZT数控装调实训车床,选配电机和刀具后完成切削实验;其二为自设计机床。使用如图3所示零件图进行车削实验。
加工成果图如图4、图5所示,加工零件数据如表1所示。
表1 实验数据 mm
自设计机床X轴刚度较差,导致零件在X轴方向的尺寸精度相对较差且加工表面质量不如ET100-ZT。
传统数控系统使用PLC完成大部分输入输出信号处理,如数控面板编译、限位信号采集以及主轴换刀控制等,本系统通过FPGA和触摸屏替代PLC完成相关工作,使用STM32F4驱动触摸屏完成人机交互,使用STM32F7解释执行操作员指令。减少在PLC、数控面板以及PC等部分的开销,同时在A4大小的PCB板中集成所有硬件,满足桌面机床体积要求。实验证明本嵌入式数控系统满足一般自动化加工要求,达到桌面数控车床在成本和体积上的要求。但是,由于在设计阶段多方取舍,本数控系统必然存在许多不足:采用基于Cortex .-M内核的MCU牺牲了部分人机交互功能,如轨迹显示、仿真加工;同时在客户机端采集电子手轮脉冲必然存在电机执行滞后于手轮一个采集周期问题,这可能带来安全隐患,将在后续设计完善。