基于双 STM32+FPGA 的桌面数控车床控制系统设计
桌面数控设备对小尺寸零件加工在成本、功耗和
占地面积等方面有着巨大优势。桌面数控设备大致有
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]进行验证。
1 数控车床控制系统模式分类
传统数控系统模式边界模糊,易使初学者混淆。
对这些模式的功能及其实现方式分析可概括为两种模
式: 手动加工和自动加工。
合理的功能分类有助于理清任务内容,降低使用
门槛。在具体实现中,两模式存在实现方式的重叠,部
分硬件和软件可以共用。依据客户机-服务器设计模
式( Client-Server( C /S) ) ,将数控车床控制系统划分为
客户机和服务器两部分。客户机主要完成人机交互类
工作,服务器主要完成参数修改、动作执行以及数控系
统的核心功能,G 代码执行。两部分主要通过自定的
不对称通信协议实现服务器接收执行客户机指令,并
返回执行结果,协同实现两种加工模式。
2 硬件设计
硬件是数控系统的基础,硬件设计要满足数控系
统在数据处理能力、多轴联动同步性、存储能力和抗电
磁干扰等方面的要求。限于篇幅,这里不对具体电路
原理图展开,仅从需求角度对数控系统硬件部分进行
分析设计。
2.1 客户机部分硬件设计
客户机部分的主要任务是人机交互,而屏幕显
示和虚拟按键是人机交互的主要设备。为了降低工
作量,提高开发效率,许多嵌入式设计采用串口屏实
现人机交互[4,
11-12],但是设计受限且串口屏面向一
般工业应用场景,不满足坐标显示等高实时要求。
因此在客户机硬件设计中采用 STM32F429 +触摸屏
自行进行人机交互开发。同时充分利用 STM32 丰富
的外设,增加 USB、
SD 接口用于 U 盘、键盘以及 SD
卡等外部 G 代码输入; 使用 Flash 实现 G 代码板内存
储; 添加 32MB 的 SDRAM 拓展 STM32F429 内存,同
时作为显示屏显存; 拓展手轮接口用于外接电子手
轮; 预留以太网、RS485 接口增加系统开放性以及功
能可拓展性。
2.2
服务器部分硬件设计
由于服务器承担自动加工中绝大部分任务,所以
服务器硬件需要满足数控系统实时性、同步性以及稳
定性要求。采用主频高达 216 MHz、支持浮点运算的
STM32F767 以达到数控系统的实时性要求。采用
EP4CE15F484 同步发送各轴运动指令到电机驱动器。
添加 SDRAM 拓展内存,提高最大 G 代码行数避免系
统死机; 使用 FMC 进行 STM32 和 FPGA 的主从通信;
由于 FPGA 直接与执行器和传感器连接,增加光耦隔
离避免外部信号干扰等。
2.3
总体硬件设计
虽然通过两个 MCU 完成客户机和服务器任务,但
是考虑到体积和安装,将两部分集成在同一块 PCB 电
路中,共用必需的电源、时钟、急停、指示灯等模块。数
控系统整体的硬件架构如图 1 所示:
3
软件设计
软件设计主要对客户机功能、服务器任务进行分
析设计。限于篇幅,且有许多文献[
13-16]对译码、刀补
和插补等进行介绍,这里不对所有子功能模块详细阐述。

3.1 客户机软件设计
emWin 是针对嵌入式平台开发的图形软件库。
使用 emWin 控件可以如同搭积木一般完成界面编辑,
再由 STM32 的 LTDC 控制器驱动显示屏实现界面显
示。emWin 支持触摸屏,周期性检测触摸交互,并获
取屏幕坐标系下的点击位置坐标,通过点击位置与界
面控件位置比较判断是否该控件被操作,在控件回调
函数中编写响应函数实现虚拟按钮功能。通过对不同
按钮类控件编码,在按钮控件回调函数中将对应编码
写入内存即可完成标准 G 代码或者其他类型数据的
虚拟按键输入。传统数控车床支持使用电子手轮,相
对于按钮,电子手轮可以实现灵活微进给,根据摇动速
度控制电机进给速度,为对刀等操作提供极大便利。
FatFs 是针对嵌入式系统设计的文件系统模块,
FatFs
根据扇区信息完成数据读写,并做必要的数据保护,对
不同的存储介质提供泛型操作。客户机与服务器之间
使用 4Mbps 串口通信,以满足大数据指令响应的实时
性。服务器返回的结果类型较多,串口接收中断解析
可能会导致客户机系统有较大的时间抖动,所以需要
将除显示实时性要求高的( 如坐标) 结果使用 FIFO 缓
冲区暂时存储,待其他任务完成后再对结果解析。触
摸检测、屏幕显示和结果解析在宏观上是并行任务,因
此借用嵌入式操作系统 μC /OS-Ⅲ进行任务调度,同
时 emWin 和 FatFs 亦可以使用操作系统提供的信号量
等共享资源保护机制进行资源保护。
3.2
服务器软件设计
限于服务器内存大小需要将译码、刀补和插补等
模块并行执行以降低对缓冲区需求,因此带来任务调
度、共享资源管理问题。随着硬件的发展,MCU 片上
RAM 大小增加,而且可以外扩 RAM 增加系统内存,因
此许多并行任务可以转为串行执行,从而简化设计,降
低系统耦合,增加系统鲁棒性。
由于服务器被动响应客户端指令,所以在服务器
空暇时,应该不停查询是否存在指令通过数据通信送
达,根据指令内容通过函数指针调用执行参数修改、动
作执行、G 代码执行等服务类任务。参数修改任务不
仅提供对刀数据等自动加工时必需参数修改,也可以
修改电机参数( 最大速度、加速度等) 以及机床参数
( 最大行程、前/后置刀架、螺距等) ,提高数控系统柔
性。动作指令发送的先后必然破坏联动的同步性,所
以动作执行任务仅需考虑同一时间下单轴动作,即对
应手动加工模式。
G 代码任务包括译码、刀补、速度规划、G 代码解
释等子任务[16]。通过 FatFs 读入系统的文本文件是
以字符数组保存的,如果在 G 代码解释时再寻找指
令,无法满足加工速度提出的实时性要求。因此,译码
需要预先从字符数组中提取并检查指令及其数据。刀
具长度补偿是指当刀具长度因为换刀、磨损导致切削
不到工件时,补偿这部分缺失而不需要重新对刀,节省
时间; 速度控制主要指加减速控制,也有针对连续微小
线段进行速度前瞻控制[
17],G 代码中描述的轨迹,都
是从零速度开始,零速度结束。根据牛顿定律,必然存
在加速和减速过程,对于步进电机,在启动频率之下,
加工精度要求不高,可以不考虑加减速。频繁的启停
影响加工效率,速度前瞻控制引入转接速度避免电机
启停。G 代码解释将 G 代码转换为具体指令驱动执
行器运动。对于简单执行器,如冷却液、照明等,只需
控制 FPGA 产生相应的高低电平; 对于单个复杂执行
器,如直流无刷电机,控制 FPGA 产生相应的使能、方
向电平信号以及速度脉冲信号序列发送给直流无刷驱
动器; 对于多个复杂执行器联动,使用逐点比较插补分
解出各轴位移,再控制 FPGA 产生相应的方向电平信
号以及包含位移速度信息的脉冲序列发送给步进电机
驱动器。
急停用于危急情况下机床的紧急停止,如果急停
仅仅给主回路断电,存在急停复位后电机继续运动的
可能性,所以急停信号同时需要提供给数控系统,用于
控制停止电机,对于主轴这种大惯量部分,必要时适当
反转电磁力矩或者增加机械抱死装置。综上所述,服
务器部分的参考模型如图 2 所示。
客户机服务器模式下的系统本质上是主从系统,
这决定了相互之间通信协议具有不对称性。客户机需
要按照服务器协议调用服务器提供的服务,由于 G 代
码数据具有不确定性,如果服务器采用不定长方式接
收数据,时间抖动较大,为了实现定长接收需要客户机
先发送一个指令告诉服务器 G 代码长度,然后在下一
个指令发送对应长度 G 代码。
4
实验验证
为了验证修改本嵌入式数控系统,分别采用了两
台机床,其一为南京翼马 ET100-ZT 数控装调实训车
床,选配电机和刀具后完成切削实验; 其二为自设计机
床。使用如图 3 所示零件图进行车削实验。

加工成果图如图 4、图 5 所示,加工零件数据如表
1 所示。
自设计机床 X 轴刚度较差,导致零件在 X 轴方向
的尺寸精度相对较差且加工表面质量不如 ET100-ZT。