摘 要:实现了一种基于FPGA的绝对式码盘智能接口的设计,用以进行绝对式编码器和DSP处理器之间的通讯。此接口根据FPGA模块化设计的特点,把整个设计任务划分为若干功能模块,分别对这些模块进行设计,最后把各个功能模块进行综合,以完成整个设计。
关键词:绝对式编码器; 接口; FPGA
光电编码器是一种基本的位置、速度检测反馈单元,广泛应用于变频器、直流伺服、交流伺服等系统的闭环控制中[1]。为了减小编码器的体积, 绝对式光电编码器一般采用串行通讯方式输出绝对二进制编码,对于伺服电机控制等高端场合,为了满足快速的电流环、速度环以及位置环的控制速度需要,编码输出数据速度应该非常快,以上不利因素都对绝对式编码的接收增加了难度[2]。
世界各国的绝对式编码器生产厂家大多为其编码器配套了相应的接收芯片,自动完成串行编码到并行编码的转换,方便了控制器的读取操作。但是此类芯片通常价格比较昂贵,大约占绝对式编码器价格的四分之一。目前国内外高端交流伺服系统中普遍采用FPGA+DSP结构,DSP用来实现矢量变换和其他算法流程;FPGA用以实现译码、A、B、Z信号输出、I/O扩展等功能, FPGA中尚有很多资源没有得到充分利用。本文研制了一种用于交流伺服系统中的基于FPGA的绝对式编码器接口,实现与绝对式编码器的双工通讯,接收高速数据流,同时在FPGA内部开辟RAM空间,将收到的编码器数据存入RAM中,DSP可以以访问内存的方式读取数据,提高了工作速度。同时,该接口还具有CRC(循环冗余校验)校验等纠错功能,基本能够替代厂家提供的专用接收芯片,大幅度降低了产品成本。
1 RCN223型绝对式编码器
国内外绝对式编码器产品种类很多,如日本的多摩川精机、内密控、德国的海德汉、美国的丹纳赫、中国长春的三峰等[3]。其中海德汉的RCN223型绝对式编码器采用的是海德汉公司专用的EnDat2.2位置编码器双向数字接口,它传输的数据类型分为位置值及附加信息或参数[4]。发送的信息类型由模式指令选择。模式指令决定被发送信息内容。每个模式指令包括三位。为确保可靠发送信息,每位均采用冗余发送(反相或两次)。其发送位置值的模式指令为“000111”。
信号传输格式如图1所示。
数据包发送与数据传输同步。传输周期从第1个时钟下降沿开始。编码器保存测量值并计算位置值。
2个时钟周期后,后续电子设备发送模式指令。编码器发送位置值后,从起始位开始由编码器向后续电子设备传输数据。后续“错误位”(“错误1”和“错误2”)是检测类信号,用于监测故障。这两个信号相互独立地生成,它表示编码器发生可导致不正确位置值的故障。发生故障的确切原因保存在“工作状态”存储器中,并可被详细地查询。
然后编码器从最低有效位(LSB)开始发送绝对位置值。其长度取决于所用的编码器,RCN223的绝对位置值为23位。位置值的数据发送以循环冗余校验(CRC)结束。
在数据字结尾处,必须将时钟信号置为高电平。10~30 μs后或1.25~3.75 μs后(系统时钟大于1 MHz时)数据线返回低电平。然后,时钟信号启动另一次数据发送。
2 绝对式编码器接口的实现
全数字化交流伺服系统中采用TMS320X2812作为控制器,用以实现位置环、速度环和电流环以及SVPWM、电压和电流采样等功能。此外,采用Altera公司的型号为EP1C6的Cyclone系列FPGA实现与绝对式码盘接口、译码逻辑等功能。同时,在FPGA内部实现了128 B的双口RAM,通过总线实现与DSP之间的数据传输。FPGA部分的功能框图如图2所示[2,5]。
码盘接口部分分为时钟发生模块、发送模块、接收模块、双口RAM模块、发送使能模块5个部分。
首先由时钟发生模块产生周期为0.5 μs的方波信号,取名为CLOCK,此信号作为通讯同步时钟信号。在CLOCK的每个时钟上升沿计数变量COUNT自加1,变量COUNT的初始值为0。当发送使能模块检测到COUNT的值为3时,说明编码器已经将位置值保存完毕,发送使能模块使SENT_EN信号有效,发送模块开始发送6位模式指令。当检测到COUNT的值为9时,停止COUNT在每个时钟上升沿计数,停止发送数据并使接收使能信号RECEIVE_EN有效,从而使能接收模块。接收模块开始检测数据输入信号的上升沿,一旦上升沿到来说明收到数据起始位S,启动COUNT在每个时钟上升沿计数,以后在每个时钟信号的上升沿保存位置值,直到检测到COUNT的值为39时,停止接收数据,由接收模块向双口RAM模块的A口写入要保存的位置值,从而结束一次FPGA与编码器的通讯过程。
由于每次通讯时间是严格固定的,设系统时钟为2 MHz。FPGA为主叫,当时钟下降沿到来时,编码器保存位置值要2个时钟周期,向编码器发送“请求数据”控制字共6位,需时6个时钟周期,编码器向FPGA共发送1个起始位、2个“错误位”、23位位置值和5位CRC校验位要31个时钟周期,共39个时钟周期,所以每次通讯需要19.5 μs的时间,并且每个时刻具体需要传递哪一位数据也是严格确定的。因此采用基于时基的设计方法。
在FPGA内部实现了128 B的双口RAM空间,A口具有8位数据线,7位地址线,用于与编码器通讯,B口具有16位数据线,7位地址线,用于与DSP通讯,因为TMS320X2812为16位DSP,所以与FPGA中RAM的数据传递极为方便。
DSP在每个电流环周期发送一个有效的“begin”信号,19.5 μs之后,码盘信号接收模块将接收到数据存入FPGA内部双口RAM的A口中,并按顺序排列成16位数据的形式,然后向DSP发送end信号,表示一次通讯结束,DSP接收到中断之后从FPGA的双口RAM的B口中读取数据,完成一次通讯,DSP的连接如图3所示。
在该接口的研发过程中,对FPGA的开发采用Altera公司的Quartus II 5.0集成环境,硬件描述语言为VHDL语言。图4为主程序流程图。
图5为码盘与FPGA之间的通讯波形,从位置信号可以看出该接口工作正常。
本文设计了一种基于FPGA的绝对式码盘智能接口,用以进行绝对式编码器和伺服驱动器DSP处理器之间的通讯,并且具有CRC校验等纠错功能。该接口基本可以替代价格昂贵的专用接口芯片,降低产品的成本,促进伺服电机驱动器的国产化进程。
参考文献
[1] 朱孝立.新型缩微计量光栅传感器开发与应用[J].传感器世界,2005(10):47-49.
[2] 于泳,杨明,贵献国,等.基于FPGA的绝对式编码器智能接口设计[J].微特电机,2008(1):4-6.
[3] 约翰内斯·海德汉博士(中国)有限公司.ENDAT2.2-位置编码器双向数字接口.海德汉技术资料. 2007.
[4] Master Component for EnDat 2.2.http://www.MAZeT. de.
[5] 周志炜.基于FPGA的多路光电编码器数据采集系统[D].哈尔滨:哈尔滨工业大学,2006.