基于CPLD的开放式四轴运动控制器的硬件、软件设计

控制/MCU

1876人已加入

描述

  运动控制器是利用高性能微处理器(如DSP)及大规模可编程器件实现多个伺服电机的多轴协调控制。目前采用运动控制器的数控系统已成为新一代数控技术发展潮流,运动控制器将成为未来数控系统的核心。

  作为运动控制的核心部件,运动控制器普遍采用16位或32位微控制器,其灵活的系统集成方式和高速的指令执行速度提高了运动控制性能、改善了控制系统的精度、增强了系统构成的灵活性。如DeltaTau公司的PMAC系列、MEI公司的XMP系列的产品,均采用了高速数据信号处理器(DSP)和现场可编程门阵列(FPGA)技术,一般可以控制1~8个轴。

  这些基于PC机总线的运行控制器,虽然因采用高性能微处理器在信息处理速度方面有较大的提高,并在实际应用中提供了灵活的接口,但在使用以及系统集成的时候,仍然有很多不便,如价格比较高、应用非常复杂等。并且在结构上是封闭的,只能针对某一类型的应用,控制策略单一,很难同时满足控制系统在多种应用场合中的要求,实际定制应用。

  过去,受计算机处理能力的限制,高性能的运动控制技术需要在板处理器如单片机或DSP上实现,一般PC机中的微处理器很难同时完成如轨迹插补运算和伺服控制运算等任务。目前PC机微处理器已经采用了更先进的工艺技术,信息处理能力明显提高,可以满足高速实时运动控制的要求,硬件支持能力大在增强,并且PC机良好的软件开发环境使构造开放式运动控制平台成为功可能。本文提出了一种不采用在板处理器而以PC机微处理器为控制核心的开放式四轴运动控制器,该运动控制器采用ALTERA公司的复杂可编程门阵列(CPLD)EPF6016实现硬件管理功能,硬件的功能可以通过软件配置,而应用层的功能如运动轨迹规则和伺服控制等均由PC机完成。

  

  基于CPLD的开放式四轴运动控制器的硬件设计

  系统硬件结构

运动控制器

  开放式四轴运动控制器的硬件结构如图1所示。其中,虚线框内的部分由ALTERA公司的复杂可编程门阵列EPF6016实现。FLEX6000系列器件 EPF6016是ALTERA公司为大容量设计提供的一种低成本可编程交织式门阵列,共有16000个可用门,1320个逻辑单元,117个I/O引脚,每个I/O引脚都有独立的三态输出使能控制。该器件采用OPEFLEX结构,能在最小的芯片尺寸上保持高性能和高布线率。

  器件的基本组成是逻辑单元(LE)。每个逻辑单元由一个4输入查找表、一个寄存器以及作为进位链和级连链功能的专用通道。每十个逻辑单元组成一个逻辑阵列块(LAB)。器件采用 SRAM构造,可以通过外部EEPROM或控制器实现在线配置,能使设计者在设计初期以及设计测试过程中对设计作灵活的修改,同时也能够通过在线重新配置来改变其内部功能。运动控制器的硬件功能编程由ALTERA公司提供的MAX+PLUSII开发系统支持,设计采用了原理图输入方式,设计和调试比较直观、简便。

  运动控制器

  该运动控制器的硬件结构分为以下几部分:

  (1)主机接口电路:运动控制器采用了ISA-AT总线接口,同时设计了PC-104接口。数据总线宽度为16位,接口功能在EPF6016内部实现,其中包括总线地址译码、数据和命令锁存、中断及复位等功能。

  (2)光电编码器接口电路:运动控制器接收四路光电编码器差分输入信号作为位置反馈,最高输入频率为1MHz,输入的A、B相信号经过差动接收后,在 EPF6016内部经过数字滤处理后进行倍频和辨向,产生的方向信号和脉冲信号进入16位加减计数器。系统软件可以计数而获得实际的位置变化。

  (3)模拟量输出电路:高性能的运动控制器应采用高分辨率的D/A转换器。为了保证模拟量控制信号的精度,并考虑到模拟量信号在线上传输引起的漂移和电压降落,运动控制器和伺服驱动器之间的模拟控制接口信号至少应有12位以上的精度。本文中的运动控制器采用了低成本、小封装体积的双16位串行输入D/A转换器 AD1866,构成双极性电压输出方式。在EPF6016内部设计了控制4路并发式并行/串行数据转换以及4路D/A地址选择电路,运动控制器的模拟量电压输出范围为±10V。

  (4)数字量输入输出电路:运动控制的所有I/O信号均采用光电隔离处理,考虑到I/O并关信号可能产生的信号抖动现象,对每一路I/O信号都进行了相应的数字滤波处理以消除噪声信号。控制器设计了40路I/O信号,其中包括16路专用输入信号、2中特殊开关输入信号(用于坐标测量或定位的接触式测头信号和急停开关信号),另外还设计了16路可编程通用I/O信号(8路输入/8路输出)。实际上,所有的I/O信号除个别信号具有独特的功能外,都是开放的,可以根据I/O信号除个别信号具有独特功能外,都是开放的,可以根据应用的特点设计具体的功能。

  (5)模拟量输入电路:对于一些控制场合,需要检测或控制外部状态量的变化,运动控制器也设计了相应的单端或差动式模拟量反馈输入通道。系统采用MAXIM公司的8通道、12位转换精度、150kHz采样频率的A/D转换器MAX197。各模拟量通道可以独立编程选择输入范围:±10V、±5V、0~10V、 0~5V,A/D转换器的转换基准采用内部基准。

  (6)可编程定时器:由于在开放式运动控制系统中,插被运算和伺服控制都由PC机完成,这两个控制任务通常不在一个任务循环中处理。一般而言,插补运算的周期要比伺服控制的周期长,因此两个任务需要占用不同的系统资源。由于插补运算通常占用PC机的定时中断资源,而伺服控制也是一个需要精确定时的任务,因此在EPF6016内部设计了可编程16位定时器。该定时器可采用不同的时钟源,定时范围为0~300ms,最小分辨率为70ns,定时器产生的溢出动作可以向PC机申请中断。

  (7)同步工作电路:在运动控制系统中,各控制轴同步运行是一个很重要的要求,因此在EPF6016内部设计了同步控制电路的和专门的控制字,支持多块运动控制器控制输出同步刷新、反馈计数值同步读取等操作。

  (8)硬件看门狗电路:在运动控制器中采用了DALLAS公司的看门狗复位及电压监控芯片DS1232,以监测系统的软硬件运行情况。当系统软件运行死机的时候,看门狗电路产生信号复位系统,保证整个系统的可靠性。看门狗定时时间可以编程设置为300ms、600ms、1.2s。

  从硬件结构的组成特点可以看出,系统的组成核心是其有可重新配置特点的CPLD EPF6016,它实现了几乎所有外围电路管理功能,而其它的电路都属于标准的辅助电路。因此系统在结构上具有典型的开放性,这对实现软件的开放是一个很好的支持。

  运动控制器

  基于CPLD的开放式四轴运动控制器的软件设计

  运动控制器软件设计

  运动控制器的软件采用Borland C++语言编写,可以按照库函数的方式调用。根据实时运动控制的特点硬件资源的结构,函数库分为两类:

  (1)控制运动控制器硬件操作的函数库。包括针对运动控制器硬件基本操作的函数,通过调用这些函数可以充分利用硬件资源,实现定制的应用。运动控制器上的各个硬件功能的存取操作是通过一组读写控制命令实现的,每一个控制命令占用一个PC机I/O空间地址,对每一个地址分别进行读或写操作将产生不同的功能。硬件操作函数库按照C++语言类的方式构造,每个命令都是以运动控制器硬件操作类的公有成员函数形式存在。这些命令主要实现以下功能:

  ①控制光电编码器脉冲计数器,读取或清除计数值;

  ②设置运动控制器的工作方式以及配置系统的各个硬件资源;

  ③开关量输入输出操作,实现包括通用I/O和专用I/O的查询和设置、控制器硬件资源工作状态查询等功能;

  ④模拟量控制命令,用于控制D/A转换器和A/D转换器实现模拟量输出和模拟信号采集等。

  (2)定制应用算法函数库。根据实际应用的要求,以控制运动控制器硬件操作的函数库为基础,可以有针对性地设计应用算法函数。本文以运动控制为例设计了针对运动控制的算法函数库,实现运动规划、伺服控制等功能。其它控制算法和功能也可以在此基础上进一步扩展。运动控制算法函数库的各命令也采用C++语言类的方式进行封装,控制算法类是运动控制器硬件操作类的继承,调用和修改都十分方便,因而在结构上具有很好的开放性。

  运动控制器

  在伺服运动控制算法上,控制器将当前规划的运动位置、进给速度送入伺服控制器与反馈的实际位置进行比较,得到位置跟踪误差,经过位置控制器后,送到D/A转换器,输出伺服驱动器的控制信号。位置控制算法可根据实际的要求采用多种控制策略。

  运动控制器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分