基于多CPU架构伺服驱动控制器的研究

  • 格式:pdf
  • 大小:1.20 MB
  • 文档页数:4

电气传动2018年第48卷第1期基于多CPU 架构伺服驱动控制器的研究郭永新,蔡建军,曲晓伟,王春辉,汤士忠(天津电气科学研究院有限公司,天津300301)摘要:论述伺服驱动控制器的实现方法,对ARM+FPGA+DSP 架构的多CPU 控制器进行具体分析,将其原理和优势展现出来;这种架构控制器系统分工明确,提高了算法的实时性、提高了控制器对外接口EtherCAT 的实时性、提高了系统的稳定性。

这种架构方案在本公司的伺服驱动器产品中进行了实验,现场的应用取得了良好的效果,体现出这种技术的现实意义。

关键词:伺服驱动控制器;多CPU 架构;以太网控制自动化技术中图分类号:TP23文献标识码:ADOI :10.19457/j.1001-2095.20180110Research on Servo Drive Controller Based on Multi CPU Architecture GUO Yongxin ,CAI Jianjun ,QU Xiaowei ,WANG Chunhui ,TANG Shizhong(Tianjin Research Institute of Electric Science Co.,Ltd.,Tianjin 300301,China )Abstract:The servo drive controller of implementation method was discussed ,its principle and advantageswere showed by analyzing the multi -CPU cooperation of "ARM+FPGA+DSP".The system of a clear division of responsibilities was made ,the algorithm of real -time ability was improved ;the interface of the EtherCAT real -time was improved ;the stability of the system was improved.This method had been applied to a company in servo drive products ,the practical application has achieved good effect ,the results show that the technology has practicalsignificance.Key words:servo drive controller ;multi -CPU cooperation ;ethernet control automation technology (EtherCAT )作者简介:郭永新(1982-),男,本科,工程师,Email :gyxyaho@ELECTRIC DRIVE 2018Vol.48No.1伺服驱动器是用来控制伺服电机的一种控制器,一般是通过位置、速度和力矩3种方式对电机进行控制,实现高精度的系统定位。

目前,伺服控制器CPU 的架构主要有:1)单CPU 架构ARM (acorn RISC machine )控制器;2)单CPU 架构DSP (digital signal process )控制器;3)ARM+FPGA+DSP 架构的多CPU 控制器。

方法3)是目前最先进的架构,前2种方法都有局限性。

方法1)和方法2)采用单CPU 架构的控制器,一个CPU 集算法、采集控制、通讯、显示功能于一体,当算法复杂度和实时性要求高时往往会顾此失彼。

而方法3)的架构中各CPU 分工明确,ARM 负责通信和显示功能,DSP 负责算法运算,FPGA 负责采集和控制。

方法3)的技术瓶颈是满足伺服控制器的实时性要求需要几个CPU 之间的高速数据通信,因此,如果能够找到一个高速的通信方式完全可以发挥各个CPU 的特性,就像一个多核CPU 在工作一样。

本研究基于ARM+FPGA+DSP 架构,采用并口通信的方法用于几个CPU 之间的内部高速通信。

此外,伺服驱动器作为伺服系统的一部分还需要和主控器和编码器进行高速通信,来满足整个伺服系统的实时性要求。

本架构采用EtherCAT 和高速485接口用于控制器和其他设备进行高速通信,描述了系统的原理架构和软件设计架构。

1多CPU 架构控制器原理分析多CPU 架构的控制器中,ARM 负责通信和显示功能,DSP 负责算法运算,FPGA 负责采集和控制,如图1所示。

FPGA 采集相电压、相电流等物理量通过并口传给DSP ;ARM 通过EtherCAT 接收主控制器命令,通过高速485采集码盘的速度和位置等信息,通过并口传给FPGA 中转再传到DSP ;DSP 中执行伺服控制的算法,利用FPGA 和ARM 中采集的数据进行计算,把计算结果再47电气传动2018年第48卷第1期通过并口传给FPGA 和ARM ,由FPGA 和ARM 进行相关的控制操作。

多CPU 架构控制器中几个CPU 之间采用双口RAM 通信,双口RAM 中各位数据都是并行传送的,它通常是以字节(8位)的整数倍为单位进行数据传输,能完成数据的输入和输出。

双口RAM 通信原理如图2所示。

双口RAM 通信具有各数据位同时传输,传输速度快、效率高的特点,多用在实时、快速的场合。

多CPU 架构控制器的对外接口有EtherCAT 和高速485。

码盘接口一般采用485接口,所以本控制器也采用485接口,用DMA 来实现;伺服控制器与主控制之间的接口有EtherCAT 和PRO-FINET 等协议,本控制器采用应用比较广的EtherCAT 接口。

实时以太网EtherCAT 是由倍福开发的一种工业以太网技术。

它以高速率、高有效数据利用率、完全符合以太网标准、刷新周期短、同步性能好等优势,在伺服通讯领域中得到越来越多的应用。

其原理如图3所示。

2多CPU 架构控制器硬件设计2.1控制器ARM 的设计主控制器ARM 通过STM32F407芯片完成上一节介绍的与FPGA 的并口通信、EtherCAT 通信、485通信。

STM32F407属于高端32位ARM 微控制器,其芯片内核为Cortex -M4。

本设计充分利用其资源,实现了并口通信、EtherCAT 通信、485通信。

并口通信。

STM32F407具有FSMC 功能,灵活的静态存储器控制器(FSMC )是内置大容量的外部存储器控制器,使用这个控制器,STM32可以与FPGA 或者存储器进行并口通信。

FSMC 产生所有驱动这些存储器(把FPGA 当做存储器来操作)的信号时序:16个数据线和16个地址线,原理如图4所示。

EtherCAT 通信和485通信。

EtherCAT 通信通过芯片ET1100来实现,ET1100是一款强大的EtherCAT 从站控制器ESC 专用芯片,ET1100与ARM 的接口采用SPI 的方式;485通信速度为2.5Mb/s ,采用DMA 的方式来实现。

2.2控制器FPGA 和DSP 的并口通信设计FPGA 采用Altera 的Cyclone ®IV 系列FP-GA ,具有低成本、低功耗的特点,高达532个用户I/O ,支持高达200MHz 的DDR2SDRAM 接口;DSP 采用TMS320C28346,通过XINTF 连接FP-GA ,实现双向并口通信。

DSP 的输入和输出采用中断控制,当FPGA 准备好数据后,向DSP 发送中断命令,DSP 响应中断后读取相应地址的数据并向另外一段地址写入数据,FPGA 等待60μs 开始读数据。

TMS320C28346型DSP 芯片有16位XINTF 数据总线,做为系统外部接口,它可以与各种外部存储器或者CPU 实现无缝连接,如图图1多CPU 架构控制器结构图Fig.1Multi -CPU controller cooperate blockdiagram图2用双口RAM 通信原理图Fig.2The principle diagram of the parallel dual RAMcommunication图3EtherCAT 报文Fig.3EtherCAT datagramprotocal图4FSMC 框图Fig.4FSMC blockdiagram郭永新,等:基于多CPU 架构伺服驱动控制器的研究48电气传动2018年第48卷第1期5所示。

在此系统中,将它与FPGA 的16个用户可定义I/O 管脚相连,用于实现16位并行数据的通信。

TMS320C28346芯片可编程通用输入/输出引脚,任选一个和FPGA 的用户I/O 管脚相连,作为DSP 的读写中断。

3多CPU 架构控制器软件设计3.1控制器ARM 的软件设计控制器中ARM 与FPGA 的并口通信用FSMC 来实现,采用非总线复用的异步NOR 闪存的方式来驱动,读时序如图6所示,写时序如图7所示。

并口通信的地址选择使用了FSMC 的BANK1的子板块2,具体程序代码如下:p.FSMC_AccessMode =FSMC_AccessMode_A ;FSMC_NORSRAMInitStructure.FSMC_Bank =FSMC_Bank1_NORSRAM2;FSMC_RSRAMCmdCFSMC_Bank1_NORSRAM2,ENABLE );ARM 与FPGA 通信触发由外部中断来触发,当FPGA 准备好数据后给ARM 一个中断,中断周期为120μs ,其中前60μs 用于ARM 从并口地址读取数据,并且把要传给FPGA 的数据写入相应地址,后60μs 用于FPGA 从并口地址读取数据,程序代码如下:pBuf =(s16*)EXT_SRAM_ADDR+31;for (i =31;i <91;i++)//read {FPGA_TO_ARM [i ]=*pBuf++;}pBuf =(s16*)EXT_SRAM_ADDR+41;for (i =41;i <61;i++)//write{*pBuf++=(FPGA_TO_ARM [i ]+1);}ARM 与码盘通信通过485来实现,通信速度为2.5Mb/s 。

由于速度快,采用一般的中断方式很难满足需求,本系统采用DMA 实现,程序代码如下:DMA_InitStructure.DMA_PeripheralBaseAddr =(uint 32_t )(&(USART3->DR ));//串口3接收DMADMA_InitStructure.DMA_Memory0BaseAddr =(uint 32_t )UART3_DMA_RxBuffer ;DMA_InitStructure.DMA_PeripheralBaseAddr =(uint 32_t )(&(USART3->DR ));//串口3发送DMADMA_InitStructure.DMA_Memory0BaseAddr =(uint 32_t )UART3_DMA_TxBuffer ;3.2控制器FPGA 的软件设计FPGA 与DSP 并行总线通讯模块用于FPGA与DSP 之间的并行总线数据交换,其中包含2段独立的地址空间,一个空间用于DSP 读FPGA 内部数据通道,另一个空间用于DSP 向FPGA 写数据通道。