反向技术
研究中心

当前位置:首页 > 技术支持与下载 > 嵌入式开发

基于PCI总线的的多轴运动控制卡设计

更新时间:2015-11-06 17:13:42  点击次数:1006次 打印
本项目是设计一款基于PCI总线的,以DSP芯片TMS320F2812为核心的多轴运动控制卡。将PC机的信息处理能力和开放式的特点与运动控制器的运动轨迹控制能力有机地结合在一起,利用双口RAM作为公共存储单元实现上/下位机的通信。为实现对多电机的半闭环控制提供了一个良好的开发平台。

一、硬件电路总体设计

本项目是设计一款基于PCI总线的,以DSP芯片TMS320F2812为核心的多轴运动控制卡。将PC机的信息处理能力和开放式的特点与运动控制器的运动轨迹控制能力有机地结合在一起,利用双口RAM作为公共存储单元实现上/下位机的通信。为实现对多电机的半闭环控制提供了一个良好的开发平台。

系统中,PC机发送各种控制命令,经PC程序进行译码、预处理等处理后,通过PCI总线接口芯片传送到公共存储器——双口RAM中;DSP程序从双口RAM中读取指令或数据,并根据读入的指令或数据进行插补运算,然后产生位置控制脉冲输入到各个电机轴的伺服驱动器;伺服驱动器根据DSP发送的位置指令再进行插补,同时由插补运算计算的理论位置与位置反馈模块反馈的实际位置进行比较,得到跟随误差,经误差补偿后形成真正的电机实际位置,并由跟随误差算出速度指令值,最后产生PWM脉冲控制电机运行。在本系统中,TMS320F2812芯片作为总控制器,统筹协调数控系统中各个轴的运动,而伺服驱动器则作为执行元件控制每个电机的实际运行。运动控制卡与伺服驱动器各司其职,相互配合,都发挥了各自的长处。由此组成的数控系统开放性好,可靠性高,能够很好地满足现阶段大多数用户对多轴联动数控系统的要求。

系统硬件总体设计功能框图如图1所示。

设计功能框图

本系统的运动控制卡所选用的DSP芯片TMS320F2812有2个事件管理器(EVA、EVB),每个事件管理器可以产生5路独立的PWM信号,其中比较寄存器3路,通用定时器2路。理论上讲,1片TMS320F2812芯片最多可以控制10个伺服驱动器。而常见的数控系统有三轴联动、五轴联动等,运动控制卡可以控制的电机数目远大于一个数控系统中电机的数目。因此,本系统的“PC+运动控制卡”数控系统不仅能够满足多轴联动数控系统的基本要求,还具有很高的扩展性,甚至可以实现多个数控机床联合控制,极大地增强了多轴联动数控系统的功能。

二、双口RAM接口电路设计

1、 双口RAM与DSP和CH365的连接

本系统选用双口RAM芯片IDT7025作为DSP与CH365双向通信的缓冲芯片。IDT7025芯片是一款高速的8K×16位双口静态RAM,它提供2个独立的端口,允许两个(左、右)端口同时读/写数据,每个端口具有自己独立的控制信号线、地址线和数据线,可高速存取数据,可与大多数高速处理器配合使用,而无需插入等待状态。

双口RAM允许2个CPU同时读取任何存储单元(包括同时读同一地址单元),但不允许同时写或一读一写同一地址单元。利用双口RAM进行通信的关键是,如何处理好争用冲突现象,避免由此而产生的读/写错误。常用的双口RAM解决地址竞争的途径有:令牌传递法、基于邮箱机制的INT中断法以及插入等待周期的BUSY法等。本系统采用第2种方法。

下面简要介绍一下IDT7025中断的原理:当用户要用到中断功能时,内存中的1FFE和1FFF单元将作为中断标志邮箱传递命令信息。当左端口定义为写状态(CEL=R/WL=VIL),且在内存1FFF中进行写操作时,右端口的中断标志INTR为低电平,可以向右端口发出中断请求;当右端口对地址1FFF进行访问时(CER=OER=VIL),无论读写都可以清除右端口中断标志INTR。相反也是一样的,当右端口对内存1FFE进行写操作时,左端口可以发出中断请求;当左端口访问地址1FFE时,清除左端口中断标志。使用中断时,向1FFF和1FFE写的内容由用户自行定义,本系统中设定:申请中断时向邮箱写入1或其他大于O的整数,清除中断时向邮箱写入O。

系统中双口RAM IDT7025作为DSP与PC机之间的共享数据空间,右端口与CH365相连,映射到CH365的存储空间;左端口与DSP相连,映射到TMS320F2812的区域0。由于IDT7025的供电电压为5 V,因此,在DSP芯片与双口RAM芯片之间加入了一个电压转换芯片SN74LVTHl6245,硬件连接将双口RAM划为2个存储空间,即PC通过写高4 KB空间向DSP发送指令,DSP通过写低4KB空间向PC机反馈数据。

2、数据总线扩展电路设计

由于系统采用了双口RAM作为DSP和CH365之间数据传输的缓冲芯片,而TMS320F2812的地址总线为19位,IDT7025为13位,CH365为16位,因此,把IDT7025的13位地址线A[O..12]分别与DSP的地址线XA[O..12]和CH365的地址线A[O..12]相连,并将CH365的地址线A0用作数据总线扩展的使能信号。

TMS320F2812与IDT7025的数据宽度皆为16位,由于TMS320F2812的I/O电源为3.3 V,IDT7025的电源为5 V,因此二者数据线之间需要连接一个电压转化芯片SN74LVTHl6245,并通过XR/W信号控制数据传递的方向;而CH365的数据宽度为8位,为使其与16位双口RAM正常通信,系统利用CPLD对CH365的数据总线进行了扩展。CPLD芯片选用A1tera公司生产的EPM7064,通过CH365地址线A0的使能对16位数据进行分时读/写,从而解决了数据总线的扩展问题。其内部逻辑电路如图3所示,其中主要包括2个锁存器(74373b),和2个三态门缓冲器(74541b)。

内部逻辑电路

CH365支持PC机以单字节、双字节(字)、四字节(双字)为单位对I/O端口或存储器进行读/写。在多字节连续读/写操作期间,CH365每读完一个字节数据后,就会自动将偏移地址加1,以指向下一字节的偏移地址。在本系统中,将16位数据的读/写转化为8位数据(1字节)的分时读/写。CH365读取双口RAM数据时,首先CH365_A0为低电平,低8位数据通过三态门U3直接读入到CH365中,高8位数据锁存到锁存器U4中;然后偏移地址自动加1,CH365_A0为高电平,高8位数据由锁存器U4读入CH365。CH365向双口RAM写入数据时,首先CH365_A0为低电平,锁存器U1使能信号G高电平有效,三态门U2无效(GN2为高电平),低8位写入锁存器;然后偏移地址加1,CH365_A0为高电平,三态门U2使能信号有效,高8位数据直接写入双口RAM,同时低8位数据通过锁存器U1写入双口RAM(OEN为低电平)。

对上述逻辑关系用“MAX+PLUS”进行仿真后,得到图4所示的时序。图中RAM_DD和CH365_DD表示仿真结果,从图中可知仿真结果完全符合设计要求。由此可见,利用最低地址位CH365_A0的不同电平,CH365通过两次连续的读或写操作,成功地实现了对双口RAM中16位数据的读/写,并且数据的读/写时序完全符合CH365的读/写时序,可以方便地进行软件编程。

仿真时序

二、上/下位机通信软件设计

在硬件电路实现之后,把完成的板卡插于PC机的PCI插槽,上电后根据系统提示安装CH365驱动程序,在正确安装好硬件之后,利用API函数,就可以在VC环境下编写和调试PCI和DSP的通信软件了。

由上述可知,双口RAM的高4 KB空间用于PC机向DSP下载数据,如果数据大于4 KB,则存在着一次不能够把全部数据下载到DSP中的问题。因此,采取了向双口RAM中循环写入数据的办法,即PC机向双口RAM一次只写入4 KB数据,接着向DSP申请中断。DSP响应中断一次性将4 KB数据复制到DSP其他大容量存储空间(如扩展SRAM)中,然后释放双口RAM空间。此时PC机便可再写入4 KB数据,

如此循环往复,直到将所有数据都写入DSP中。部分代码如下:

部分代码

数据反馈功能主要是通过CH365响应DSP中断来实现的。DSP程序将数据写入双口RAM低4 KB空间后向CH365申请中断,CH365响应中断将数据反馈到PC并显示到人机界面。中断函数部分代码如下:

中断函数部分代码
(编辑:admin)