笔者最近在做一个运动控制器项目,其最核心的要求是实现24轴的EtherCAT控制。本文记录整个项目的制作过程,笔者才疏学浅,如有错误还请指正。
一、项目整体要求
通过 EtherCAT 总线实现多轴电机运动控制功能,具有功能如下:
- 最多达24轴运动控制,支持国内外主流厂家伺服电机EtherCAT接口控制;
- 支持点动、回零、速度、位置等控制模式;
- 支持各种插补运动算法,可实现多轴联动控制;
- 支特电子凸轮、电子齿轮、位置锁存、同步跟随、虚拟轴等功能。
对控制器底层程序进行封装,实现不同通讯接口与外部设备数据交互,功能如下:
- 通过 EtherCAT 接口实现与伺服电机驱动器通讯并具备多种应用功能调用接口;
- 通过 RS232 或 485 接口实现与触摸屏或其他设备通讯,支持 MODBUS RTU 协议:
- 通过以太网接口实现与示教器、上位机等设备通讯,支特 MODEUS TCP协议;
- 通过 CAN 总线,支持CANopen的IO控制功能。
二、硬件总体设计方案
2.1 最小系统设计
MCU选用STM32F429IGT6,芯片为LQFP-176封装,该芯片的详细介绍可查看以下链接:
STM32F429/439 - 意法半导体STMicroelectronics
考虑到STM32F429自带的2M FLASH不够使用,通过FSMC映射添加NAND FLASH和SDRAM。
NAND FLASH选用MT29F4G08,该芯片具有4GB的储存空间,详见介绍以下链接:
MT29F4G08ABADAH4 Datasheet(PDF) - Micron Technology (alldatasheet.com)
SDRAM选用W9825G6KH-6芯片,该芯片存储容量为256M(16M * 16)、速度为166MHz。详细介绍见以下链接:
W9825G6KH-6_(WINBOND(华邦))W9825G6KH-6中文资料_PDF手册
同时添加VBAT外围电路、复位电路、SWD调试接口;配置BOOT0和BOOT1为低电平,程序从FLASH启动。相关电路笔者参考了正点原子的设计,在此不展开赘述。
2.2 外围接口设计
以太网选用LAN8720A作为PHY芯片,芯片介绍如下:
LAN8720A-CP-TR_(MICROCHIP(美国微芯))LAN8720A-CP-TR中文资料_PDF手册
DAC使用DAC8532IDGKR,该芯片为双通道、16位轨到轨工作电压,芯片介绍如下:
DAC8532 datasheet (Rev. B) (ti.com.cn)
DAC使用ADS8684IDBT,该芯片为4 通道16 位、500kSPS,芯片介绍如下:
ADS868x datasheet (Rev. B) (ti.com.cn)
DI和DO使用STM32的GPIO口。通过使用不同的电路拓扑实现PNP、NPN、干触点信号输入。
通过SPI控制主站芯片ECM-XF,实现24轴的EtherCAT控制。该主站芯片最大可连接128个从站,最快循环周期125us,详细介绍可以查阅以下链接:
Master Chip & Module – 訊成科技股份有限公司 (nextw.com.tw)
RS485、RS232和CAN电路按常规搭建即可。
2.3 供电方案设计
电源供电满足芯片需求即可,这是本文制作的驱动器的供电方案:
- 外部输入24V电源
- 24V转12V供电
- 24V转±15V供电
- 24V转5V供电
- 5V转3.3V供电
三、可行性验证
为验证可行性,首先使用开发板搭建电路进行验证。使用正点原子的 STM32F429 阿波罗开发板通过 SPI 与 ECM-XFU-SK 开发板通讯,两块板子的介绍可以参考以下链接:
stm32f429阿波罗开发板 — 正点原子资料下载中心 1.0.0 文档
Master Chip & Module – 訊成科技股份有限公司 (nextw.com.tw)
伺服驱动器分别使用了1台英威腾DA200和2台台达A2-E,常规的环形拓扑结构,如下图所示:
四、软件系统框架
本运动控制器为裸奔系统,主要涉及以下几个内容:
- 实时操作系统(笔者基于定时器中断和轮询实现的裸奔系统)
- 基于 LWIP 协议的以太网通讯
- 基于 FreeModbus 实现 Modbus TCP 和 Modbus RTU
- 基于 CanFestival 实现 CanOpen 通讯
上位机使用C++语言编写函数库,并基于QT制作交互界面。
五、EtherCAT功能的实现
六、运动控制器功能演示
经过三个多月的加班加点研究,这个运动控制器已初具模型. 界面是简陋了些,不过已经实现了基本的功能。主要包括直线插补,圆弧插补,同步运动,电子齿轮,电子凸轮的功能。之后有时间的话我再细致展开运动控制器的实现过程。
运行控制器-案例展示