由于DSP将超强的高速实时处理能力和丰富的外设功能集于一身,目前,以DSP为核心的嵌入式运动控制器已经成为开放式运动控制器的发展主流,并获得广泛的应用。本文通过对运动控制器基本功能的研究,在分析、消化已有的基于DSP的运动控制器硬件资源基础上,开发了运动控制器的软件系统,详细介绍了运动控制器的软件设计。
1 运动控制器硬件结构
本运动控制器的硬件结构主要分为如下几个模块:DSP+CPLD 主控模块,包括 DSP 核心 模块和 CPLD 驱动与扩展模块;通信接口模块,包括 PCI 总线、USB 总线和串口;I/O 输入输 出接口模块以及外围存储器模块,包括 SRAM 和 FLASH。本运动控制器的硬件结构如图 1 所示。
图1 运动控制器硬件结构图
1.1 DSP+CPLD 主控模块
本系统采用了 TI 公司的 TMS320F2812 DSP 为控制核心,这是工业界首批 32 位的控制 专用、内含 FLASH 以及高达 150MHz 主频的数字信号处理器,专门为工业自动化、光学网络及自动化控制等应用而设计的。TMS320F2812 采用哈佛总线结构,有独立的程序和数据空间;具有很强的运算能力,能够实时地处理许多复杂的控制算法;片上内存丰富,可支持45 个外设级中断和 3 个外部中断,提取中断向量和保存现场只需 9 个时钟周期,响应迅速; 片上集成了多种先进的外设,包括两个事件管理器(EV)、12 位 A/D、两个串行通信接口(SCI)、一个串行外围接口(SPI)以及一个多通道缓冲串行接口(McBSP)等;其通用输 入/输出多路复用器(GPIO)拥有多达 56 个 I/O 口,在系统的软件开发中正是利用了这些丰富的内外设资源,才实现了系统要求的各种功能。
本系统中选用的 CPLD 是 Altera 公司 MAX3000A 系列的 EPM3128,这是一款高性能、 低功耗的基于 EEPROM 的 PLD。由于本系统的控制对象是步进电机,所以设计中主要利用TMS320F2812 的 GPIO 口进行电机控制接口与 I/O 接口的输入输出,但是由于 TMS320F2812是低功耗处理器,其 GPIO 引脚的输出驱动能力有限,而且由于 DSP 是主控核心,负载比 较多,所以将所有输出信号都经过 CPLD 驱动后输出,提高信号的驱动能力。此外,CPLD还用于系统电路的译码,增加系统设计的灵活性和可扩展性。
1.2 通信接口模块
本系统在用作插卡式运动控制时利用 PCI 总线实现 DSP 与 PC 的通信。PCI(PeripheralComponent Interconnect 外围部件互联)总线是 Intel 公司联合其他 100 多家公司于 1992 年推 出的基于新一代处理器的一种局部总线,是一种高性能 32/64 位数据/地址复用总线,能为 CPU 及外设提供高性能数据。PCI 总线具有严格的规范,目前已经发布了 PCI V1.0 和 V2.1规范,保证了其良好的兼容性;PCI 总线与 CPU 无关,与时钟频率也无关,可适用于各种平台,支持多处理器和并发工作;PCI 总线可以提供极高的数据传输速率,还具有良好的扩 展性。因此,PCI 总线在基于计算机总线的运动控制系统,即“PC+运动控制器”的结构中应用十分广泛。
本系统选用 CYPRESS 公司的 CY7C68001 芯片实现 PC 机和 DSP 之间的 USB 通信。CY7C68001 是通用 USB2.0 接口控制器,它是基于应用层编程的接口器件,相对于其它基于 链路层编程的接口器件,使用和开发都很方便。本系统采用 DSP 片上的 SCI 串行通信模块以及 MAX232 芯片转换成标准 RS-232 的通 信信号,实现正常的串口通信。
1.3 I/O 输入输出接口模块
本系统的输入/输出是通过 CPLD 的逻辑控制来实现的,以提高系统的工作可靠性和设 计柔性。考虑到运动控制器的可扩展性以及 DSP 的 GPIO 引脚的数量,共设计了 16 路数字量输出通道和 16 路数字量输入通道。数字量输出通道主要用于各轴方向、脉冲信号的输出以及一些外部设备的启停控制,如主轴及冷却液的开关控制等;数字量输入通道可根据用户 具体要求来定义其用途,如作为传感器接口,用于零点、限位信号的输入等。为提高系统应用的灵活性,系统输出采用了普通输出和差分输出两种方式,具体使用可由用户自行设定。
1.4 外围存储器模块
TMS320F2812 芯片内部包括 128KB 的 FLASH 和 18KB 的 SARAM,其中 128KB 的FLASH 用来存储系统软件程序已经足够,但是在实际使用中,考虑到运动控制指令和加工程序需要通过 USB 总线或 PCI 总线下载到运动控制器中,且 DSP 在工作过程中需要处理大 量的数据,仅依靠 DSP 芯片内部的存储空间远远不够,所以考虑外扩一片 FLASH 和一片SRAM 作为用户加工程序存储器和系统的工作存储器,它们通过 CPLD 完成与 DSP 之间的读写操作。
本系统选用了 Intel 公司的 E28F128 FLASH 和 ISSI 公司的 IS61LV51216SRAM。E28F128 是一种采用 CMOS 工艺制成的 8MB FLASH,其读写访问时间为 150ns,此读写周期已经 大于 DSP 对外部端口的读写周期,为了能够和 DSP 的读写周期进行匹配,在对 FLASH 进 行读写操作过程中必须插入等待周期。IS61LV51216 是一种高速异步静态 512KB 的 SRAM, 其读写周期为 10ns,与 DSP 之间可以无需插入等待周期便可以进行读写操作,并可以直接映射到 DSP 外部存储接口的 Zone2 或者 Zone6 区域。
2 运动控制器软件结构
2.1 系统软件功能设计
运动控制器通常作为一个独立的过程控制单元用于工业自动化生产中,它的功能是由硬件和软件共同实现的硬件为软件运,行提供了支撑环境,软件负责实现系统要求的所有功能。本系统软件需要完成控制和管理两大任务,图 2 表示的是其软件功能结构。
图2 运动控制器软件功能结构图
其中,系统的控制包括位置控制、插补、速度处理和开关量 I/O 控制等,这类任务的实 时性很强,所以软件程序的优先级也较高;系统的管理包括人机界面显示、参数设置和程序 下载等,这类任务的实时性要求不高,所以软件程序的优先级也相对较低。可以说,一个运 动控制系统的基本功能均由上述功能的子程序实现,通过增加子程序可进一步增加系统的功 能。
要实现这些功能,必须做好运动控制器的软件规划,划分各个功能模块,才能在 DSP 芯片上设计运行程序。本系统软件主要分为两个层次,包括 PC 层软件和 DSP 层软件,其中PC 层软件在单板式运动控制中主要实现加工程序的传输和下载等功能;在插卡式运动控制中,除此之外,还需实现加工情况显示、加工命令发送等人机交互界面的功能。 运动控制器的主要功能由 DSP 层完成,本课题的主要任务也是 DSP 层软件的程序实现,具体包括:
1.运动控制 运动控制功能是运动控制器的主要功能,包括位置控制、插补和辅助功能的输入输出I/O 控制。本系统基本功能是实现 XYZ 三轴的运动控制,包括三轴联动的直线插补运动和任意两轴圆弧插补运动,可以实现步进电机的运动控制,提供单脉冲(即脉冲+方向)和双脉 冲(即脉冲+脉冲)两种控制方式。
2.速度控制 速度控制即调速,利用加减速算法,实现系统的平稳运动。系统设计空行程时的运动速度不小于 100KHz,加工过程中的插补运动速度不小于 40KHz;当脉冲当量为 2.5 微米时可达到的空行程和加工的最高速度分别为 15m/min 和 6m/min。
3.通信功能 运动控制器不是一个孤立封闭的系统,它必须和外界交换数据,主机通信主要完成两个 任务:一个是程序的下载,另一个是控制指令的发送和加工状态的反馈。根据单板式控制和插卡式控制两种不同的应用,分别有不同的通信方式。其中,在单板式控制中,通过 USB总线进行程序下载而通过串口进行控制指令的发送和加工状态的反馈;在插卡式控制中,两种任务都是由 PCI 总线来完成。本系统的多用性特点主要体现在通信方式的不同上,支持PCI 总线方式、USB 总线方式以及异步串行总线方式,供用户自由选择。
4.参数设置 作为开放式运动控制器,应该允许用户对控制系统的各运动参数进行实时调整与修改。
本系统设计将各参数存放在 FLASH 中,允许用户通过人机界面对参数进行修改,修改后的参数将在下次操作中起作用。
2.2 系统软件层次设计
DSP软件采用模块化和层次化的设计思路,为使结构清晰,整个系统软件按功能群分割为多个文件分别处理和完成相应的任务,主要分为三个层次:
1 主控层:不涉及具体操作,只负责各个任务调度、中断安排、时间和优先级处理等, 主控层只有一个文件 main.c,包括主函数和中断函数,在主函数和中断函数中调用算法层的函数来实现系统的各个功能。
2 算法层:负责具体任务执行,控制算法实现,系统的主要功能都在算法层实现,包 含的模块由系统要求的各个功能来决定,算法层主要用以实现运动控制、速度控制和系统管理等功能,各模块之间通过标志位来联系,不互相调用。
3 接口层:负责与硬件的接口,所有与外设有关的操作都在该层进行处理,接口层中 包括 DSP 硬件资源的定义、系统硬件的驱动等。除接口层外,系统其它层的程序禁止直接对外设进行操作,接口层直接对外设进行操作的函数尽可能做到功能完善。 综上所述,本系统根据以上功能和层次进行软件设计并遵循以下原则:
(1)全局性:尽量保证系统各模块负载均衡;
(2)正确性:数学推导严密,尽可能利用试验验证;
(3)结构化:软件设计做到层次化、模块化、封装化;
(4)规范性:保证程序的易读性、移植性和可维护性。
3 小结:
本文作者创新点是运动控制是数控技术的核心,近年来,随着开放式数控系统的发展, 开放式运动控制器也得到了前所未有的发展。运动控制器作为一个独立的工业自动化控制类标准部件,已经被越来越多的产业领域接受,并形成了令人瞩目的市场规模。本文介绍了运动控制器的总体设计方案,包括运动控制器的硬件平台以及软件设计思路。