基于DSP和FPGA的编码器信号测量及处理的通用模块

[复制链接]
1277|21
手机看帖
扫描二维码
随时随地手机跟帖
Jasmines|  楼主 | 2018-10-10 16:51 | 显示全部楼层 |阅读模式
基于DSP和FPGA的编码器信号测量及处理的通用模块

           随着科学技术的飞速发展,自动控制系统在各领域中的应用越来越多,特别是计算机自动控制系统已成为现代科学技术、军事工程和现代工业等领域不可缺少的部分。因而,自动控制元件如作为动力装置的各种电动机、发电机和作为信号变换的各种控制电机在各种控制系统中得到广泛的应用。要对被控对象进行控制,不仅需要控制器和执行机构,还需要反馈装置。因此,编码器作为电机的角度、速度、方向的检测装置,也得到了广泛的应用。编码器又有旋转变压器、霍尔传感器和光电编码器。其中,光电编码器精度高,抗干扰能力强,接口简单,使用方便,因而获得了最广泛的应用。

光电编码器按编码方式又主要有增量式编码器和绝对式编码器两大类,前者具有分辨率高、价格较低、接口简单等优点,然而在当今工业中,无掉电**功能又对其应用构成了很大局限;后者结构紧凑、体积小、接口数字化、抗干扰能力强、具有掉电**功能,在应用中也越来越受重视。




1 编码器概述
1.1 高精度增量式编码器
        增量式编码器是经过光栅将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。其光栅由周期性刻线组成,通过计算自某点开始的增量数(测量步距数)获得位置信息。本模块要测量的高精度海德汉增量式编码器的光栅上还有刻有距离编码参考点的轨道,加快参考点回零。下图1为某带距离编码的圆光栅。

fpgadspheidenhain01.jpg


图1带距离编码参考点的圆光栅(ERA4480)

这些参考点彼此相距数学算法确定的距离。已过三个参考点的两个脉冲后,后续电子设备就能找到绝对参考点。


1.2 高精度绝对式编码器
       绝对式编码器利用自然二进制、循环二进制( 格雷码) 或PRC码对码盘上的物理刻线进行光电转换,将连接轴的转动角度量转换成相应的电脉冲序列并以数字量输出,其每一个位置对应一个确定的唯一的数字编码,因而具有掉电**功能。
有时,通过位置编码器获得位置值的数字驱动系统和反馈环还需要编码器提供一些附加值。为使系统具有更高可靠性,编码器还需具有错误检测和诊断功能。由于采用串行数据传输方式它只需要4条线。数据传输保持与后续电子设备时钟信号同步。传输的数据类型(位置值、参数或诊断信息等)通过后续电子设备发至编码器的模式指令选择。


2 硬件设计
本模块采用了DSPFPGA结合的工作方式。DSP主要用于数字信号处理领域,非常适合高密度、重复运算及大数据容量的信号处理。FPGA/CPLD器件一方面可实现硬件上的并行工作,非常适用于实时测控和高速应用领域,另一方面物理机制和纯硬件电路一样,十分可靠,尤其是抗强电磁干扰。两者结合,可实现宽带信号处理,速度快且可靠性好。
根据方案功能需求,设计模块结构图如图2所示:

fpgadspheidenhain02.jpg


图2 硬件结构图

图中,模块连接器为标准的DB15连接器,通过管脚配置,能相应地与增量式编码器和采用EnDat2.2接口的绝对式编码器进行信号交流。模块的收发单元支持的是RS-485形式,差分信号和单端信号通过接口芯片进行转换。为了提高对高精度增量式编码器数据测量精度,需在同一个增量编码器上安装4个读数头,各自测量增量式编码器数据,再合成得到位置值。这样,板卡上读取编码器信号的接口设置有4个。

实现:①对增量信号的计数和参考信号的采集,在进行计数达到参考码道的数据后,进行增量信号的清零;②对Endat2.2绝对式编码器位置信号的采集;③在外同步时钟上升沿到来前,保存计数处理,把数据存储在双口RAM中,等待DSP读取。
本模块选用的DSP芯片为TI公司的TMS320F28335,主频可达150MHz。TMS320F28335增加了浮点运算单元,在保持了原有DSP芯片优点如强大控制和信号处理能力、C语言编程效率等优点的同时,节省了代码执行时间和存储空间。F28335通过GPIO端口与XC3S700An连接有4路地址线和16根数据线,可以接受16种编码器信号。模块中DSP部分开辟参数存储区,在中断信号到来的时候读取FPGA中数据,完成数据合成,通过SCI串口把数据发送给主控机箱,电器形式为RS422。
模块板卡由5V电源供电。

        
3 软件设计及实现
根据硬件架构,分别对DSP和FPGA进行软件功能分析和具体编程实现。

3.1 测量增量式编码器位置值
3.1.1 相关部分的FPGA设计
增量式编码器是一旋转式光电编码器,根据轴所转过的角度,输出一系列脉冲。一般来说编码器输出有三相信号:A、B、Z。A、B两相信号是相位相差90°的正交方波脉冲串,每个脉冲代表被测对象旋转了一定的角度,A、B之间的相位关系则反映了被测对象的旋转方向,即当A相超前B相,转动方向为正转;当B相超前A相,转动方向为反转。Z信号是一个代表参考码道的脉冲信号,可用于调零、对位。对象每旋转一定角度时,A、B两者的脉冲发生变化,根据AB相位变化方向和脉冲个数来计算角位移。当AB相位变化为00 10 11 01 00时,为输出正转计数脉冲,脉冲计数P加1;当AB相位变化为00 01 11 10 00时,为输出反转计数脉冲,脉冲计数P减1。相位变化几次计数操作几次。需要指出的是,相位的状态变化只有严格按照上面8中方式改变时,FPGA才进行计数操作。在Verilog编程时,可以把前一个AB相电平状态和后一个AB相电平状态组成一个散转地址向量,然后把这个向量作为条件语句,进行计数操作。比如,当AB从00变为10时,向量就为0010,P=P+1。相反,若AB从10变为00,这个向量就为1000,P=P-1。下面为FPGA读取TTL数据并组成散转地址向量的Verilog代码:
always @(posedgeinClk)
begin
regUa1a2State

  
3.2 数据输出
模块通过RS422异步串行接口与上位机进行通信,串行接口通过DSP的SCI口实现,设计的模块同时需要上位机发送的同步采样频率信号,将其与DSP相连,作为中断信号启动ISR功能。同时,该信号管脚通过跳针把该外同步时钟分给FPGA。这样,保证两者的时钟源是统一的,然后DSP访问FPGA的双口就能实现正确读取所需数据。过程时序示意图如图3所示:


fpgadspheidenhain04.jpg


图3   整体过程时序示意图


如上图所示,在t_1时,FPGA即启动与编码器的通信,在t_2时,FPGA把增量式编码器脉冲计数或者绝对式编码器信息存入双口,在t_3时,外同步时钟上升沿启动DSP中断程序,读取已经存储在FPGA双口中的数据并合成位置值,合成量纲后通过RS422接口把绝对位置值传递给主控机箱。这样,主控得到的数据是上一帧的数据,即有一帧的延迟,时钟频率越大,延迟越小。因此,对采样频率有一定要求,不能太低。


4 实验及数据分析
模块设计好以后,需搭建平台检测是否实现功能。实验平台如图4所示:

fpgadspheidenhain05.jpg


图4 实验平台


如图4所示:打开电源控制开关,然后从PC机把DSP和FPGA程序分别通过仿真器加载到F28335和XC3S700AN芯片中,打开主控机箱。最后,点击CCS上的运行键,拨动编码器,可在CCS软件界面右上方的变量观察窗口观察编码器位置值。界面如下图5所示:

fpgadspheidenhain06.jpg
图5 实验时,观察位置值的CCS界面


本实验中,所使用的编码器为23位海德汉绝对式编码器ECN1023,外同步时钟源为500HZ。FPGA内部频率为10MHz,向Endat2.2输入的频率为64MHz的32分频。观察到该界面中位置值为359.8117303848267度。在实验中通过real-time与自动刷新功能还观察到,界面上数据的变化与编码器的转动几乎同步,编码器停止转动后,数据小数点后前3位之前的数据非常稳定,第3、4、5位数据比较稳定。由此可见,本模块满足了一定的测量速度和测量精度,能够很好工作。
通过实验对本模块的性能有了一定了解后,还需对精度进行检测。通过模块与标准检测仪同时测量一台海德汉绝对式编码器,360度测量正反相各测24组值。结果,正测RMS值为0.67角秒,极差为1.9角秒;反测RMS值为0.76角秒,极差为2.2角秒。两组误差曲线图如下图6所示:

fpgadspheidenhain07.jpg


图6 正反转检测两组误差数据曲线


从图中观察到,从0到23的24组数据皆是从0度到36度变化时测量得到的。如图所示,两组误差曲线基本重合,可在最大误差点加个修正值减小误差。


结语
    编码器应用广泛。本文详细介绍了一个测量各类海德汉编码器的数据的通用且实用的模块。该模块基于Xilinx FPGA平台和TI DSP平台,使用和调试方便,使用者可快速掌握;通过了实验和精度的检测,实现了设计目的,工作可靠;模块小巧,可以与上位机通信,可以很好的被结合到嵌入式系统中。目前,本模块已用于实验转台用的增量式和绝对式编码器数据的处理,拟结合到实验室驱动控制机箱中,正进一步开发它对海德汉绝对式编码器Endat2.2附加信息的测量和处理。


相关帖子

Jasmines|  楼主 | 2018-10-10 16:51 | 显示全部楼层
基于DSP和FPGA的编码器信号测量及处理的通用模块

文档1.pdf

180.84 KB

使用特权

评论回复
pixhw| | 2018-10-12 22:35 | 显示全部楼层
要用dsp加cpld控制开关

使用特权

评论回复
sdlls| | 2018-10-12 22:35 | 显示全部楼层
DSP是处理器,它的作用是高速执行串行算法,数字信号处理常用。

使用特权

评论回复
febgxu| | 2018-10-12 22:35 | 显示全部楼层
控制电路以DSP+CPLD作为控制核心

使用特权

评论回复
xiaoyaodz| | 2018-10-12 22:36 | 显示全部楼层
DSP以寄存器的方式来控制

使用特权

评论回复
fentianyou| | 2018-10-12 22:36 | 显示全部楼层
优势的话FPGA是并行处理,处理多任务会比较在行

使用特权

评论回复
selongli| | 2018-10-12 22:36 | 显示全部楼层
DSP 和 FPGA 是嵌入式开发处理器的三大巨头之二

使用特权

评论回复
minzisc| | 2018-10-12 22:37 | 显示全部楼层
DSP与FPGA采用EMIF接口通信

使用特权

评论回复
lzmm| | 2018-10-12 22:37 | 显示全部楼层
DSP+CPLD系统优越性

使用特权

评论回复
hudi008| | 2018-10-12 22:38 | 显示全部楼层
DSP是数字信号处理

使用特权

评论回复
kkzz| | 2018-10-12 22:39 | 显示全部楼层
DSP + FPGA 系统最大优点是结构灵活

使用特权

评论回复
hudi008| | 2018-10-12 22:39 | 显示全部楼层
FPGA并不是万能的。

使用特权

评论回复
pixhw| | 2018-10-12 22:39 | 显示全部楼层
一般可以在板子上同时利用DSP和FPGA。

使用特权

评论回复
lzmm| | 2018-10-12 22:39 | 显示全部楼层
体现了DSP高效性和灵活性。

使用特权

评论回复
sdlls| | 2018-10-12 22:39 | 显示全部楼层
FPGA是一块逻辑门电路阵列,通过改变其内部逻辑单元的链接

使用特权

评论回复
minzisc| | 2018-10-12 22:39 | 显示全部楼层
将FPGA作为DSP的外部SRAM

使用特权

评论回复
febgxu| | 2018-10-12 22:39 | 显示全部楼层
                                             

使用特权

评论回复
selongli| | 2018-10-12 22:39 | 显示全部楼层
也可以使用ARM做处理的。

使用特权

评论回复
xiaoyaodz| | 2018-10-12 22:39 | 显示全部楼层
IO口的对应DSP里面的寄存器

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

745

主题

1077

帖子

10

粉丝