基于FPGA的步进电机伺服控制器通信系统设计

基于FPGA的步进电机伺服控制器通信系统设计
基于FPGA的步进电机伺服控制器通信系统设计

基于FPGA的步进电机伺服控制器通信系统设计

摘要

为实现某扫描机构伺服控制器与上位机的串行通信,提出了应用于该系统的专用异步串行通信和同步串行通信的FPGA设计方法。介绍了扫描机构伺服控制系统的构成;详述了异步串行通信各个功能模块及光电编码器脉冲计数值同步串行发送到上位机的FPGA设计与仿真实现。分析证明该设计时序正确,实现了功能指标,确保了伺服控制器与上位机的通信。

关键词:FPGA;异步串行通信;同步串行通信;伺服控制系统;步进电动机

O 引言

步进电机伺服控制器是扫描机构的核心,而通信系统是伺服控制器的关键。本系统采用霍尔传感器和光电编码器采集步进电机的速度和角度信息,伺服控制器传统的设计方法是利用单片机或DsP和上位机进行通信。本文采用FPGA作为下位机、采用硬件描述语言Verilog HDL,设计了扫描机构伺服控制器通信系统。FPGA可移植性强,只需要简单地修改硬件接口和串口通信格式即可实现FPGA和不同的上位机的高速串行通信。

在此感谢吴东升老师长达8周的细心讲解,因为本门课程理论性强。吴老师带来了很多器材设备、图片和大量影视资料,使本门课程的课堂变的生动。再次感谢吴老师的认真准备与细心讲解。

目录

l伺服控制系统构成 (1)

2 FPGA异步串行通信模块 (1)

2.1波特率发生器································2.2 Rs-485接收器

l伺服控制系统构成

某扫描机构系统框图如图l所示。本系统采用闭环控制方式驱动步进电机做变速的连续圆周扫描,带动扫描机构实现精确扫描定位。

根据不同时刻的速度,由FPGA设计的细分驱动模块(EP2c5T144c6)产生不同频率的脉冲。此脉冲控翩输出存储在FPGA内的细分数据,功率驱动芯片根据细分数据进行斩波控制步进电机转动,从而控制扫描机构按照预定方式转动【1】。霍尔传感器作为伺服控制器位置基准,输出的信号与光电编码器的零位信号来确定机械零点。配置芯片选用EPcS4,掉电后、上电时对FPGA进行配置。

FPGA对光电编码器输出的脉冲信号进行4细分计数,按照要求通过同步串口发送给Pc机。FPGA在接收到Pc机指令后通过异步串口返回遥测数据包。Pc 机根据返回的数据包和光电编码器计数值,通过异步串口向FPGA发出指令来控制步进电机。

本系统中异步串行通信的物理接口为RS485、半双工主从应答式,波特率为9 600 bps。采用Verilog语言编写程序,完成数据的接收与发送。电平转换采用MAⅪM公司生产的MAX3160。这是一款高性能的多协议收发器件,可编程控制半双工或全双工Rs一485/422,RS232模式。

2 FPGA异步串行通信模块

异步串行通信模块在FPGA芯片内部的硬件逻辑设计包括波特率发生器、Rs一485接收器和Rs一485发送器【3-5】,如图2所示。

2.1波特率发生器

波特率发生器产生的分频时钟,不是波特率时钟,而是波特率时钟频率的16倍,对输入rxd不断进行采样,保持接收器与Pc机同步,目的是为了在接收时进行精确地采样,以提取异步的串行数据。波特率发生器根据给定的系统时钟频率和要求的波特率计算出波特率分频因子,已算出的波特率分频因子作为分频器的分频数。计算公式为:分频数=全局时钟/(16×期望波特率)一1。

2.2 Rs-485接收器

RS一485接收器接收Pc机发送的指令,并将其转化为并行数据。FPGA控制单元根据此数据来控制步进电机的转动。Pc机发送信号字符格式为:1位起始位,8位数据位,1位可程控位(标识地址帧),1位停止位。

由于串行数据帧和接收时钟是异步的,由逻辑l转化为逻辑O可以被视为一个数据帧的起始位。为了避免毛刺影响,需要至少4个连续bclk的逻辑O被接收到,才认为起始位接收到。

Rs.485接收器的接收状态机流程图如图3(a)所示。状态机一共有6个状态:sO(等待起始位)、s1(求出位的中点)、s2(等待采样数据位和程控位)、s3(数据位采样)、s4(程控位采样)、s5(存储数据和停止位接收)。

sO状态:接收器异步复位后,接收状态机将处于这一状态,一旦确定起始位到来,状态机将转入sl状态。图4(a)中的rxd—syne O、Ⅸd—syncl、rxd—sync 信号是rxd的同步信号。为了排除干扰信号,检测经过同步后的rxd—sync信号。

s1状态:对于异步串行信号,在每位的中点检测位信号,能保证在较后的数据位检测的时累计误差较小。在本状态,就是由起始位求出每位的中点,通过对bclk的个数进行计数,要考虑过三次滤波,即经过了三个bclk周期,完成后,进入s2状态。

s2状态:等待计满15个bclk,在第16个bclk进入s3状态进行数据位的采样检测,同时判断采集的数据位长度是否达到8位,如果到达,进入状态4。程控位计满15个bclk后,说明停止位来了,在第16个bclk进入s5状态。

s3状态:数据位采样检测,完成后状态机转入s2状态,等待下一位的到来。

s4状态:程控位采样检测,完成后进人s5状态。

s5状态:存储数据,判断接收到的第一帧中的数据是不是本控制器的地址,如果不是,进入s0状态,等待起始位,如果是,接收停止位后回到s1状态,接

收下一帧数据。本系统会连续接收Pc机发送的6帧数据,达到6帧后进入s0状态。如果小于6帧数据,则进入sl状态,继续接收。

由rxd接收到的数据先进入移位寄存器,锁存8位数据位和1位程控位,接收到停止位后,把数据锁存到数据寄存器。根据以上设计思想,用Verilog语言编程在quartusⅡ中仿真,仿真时序图如图4(a)所示。从结果可以看出,完成了6帧数据的接收,每一位数据都是在第9个bclk上升沿对数据采样检测,并且对rxd进行了三次滤波处理。2.3 RS一485发送器RS-485发送器发送遥测数据包到Pc机。此数据包包含步进电机速度和角度信息。RS一485发送器将准备输出的并行数据按照异步串行通信的帧格式转为txd信号串行输出。Rs-485发送信号字符格式和接收信号字符格式一样。

发送器状态机的流程图如图3(b)所示。此状态机一共有5个状态:st0(空闲位)、stl(起始位发送)、st2(移位等待)、st3(移位发送)、st4(停止位发送)。

stO状态:当使能信号de-re为1时,状态机立即进入这一状态,等待数据帧发送命令txdstart,接收到发送指令,立即进入到状态1。

stl:发送16个bclk时间宽度的逻辑0信号(起始位)至txd,完成后状态机进入st2状态。

st2状态:等待计满16个bclk后进入s3状态进行数据位的发送,同时检测数据位、程控位发送位数,发送完毕,进入状态st4状态。

st3状态:实现待发数据的并串转换,并发送数据。完成后立即回到st2也状态。

st4状态:发送16个blck周期的逻辑1号,即l位停止位。同时检测数据帧个数,如果达到14,状态机完成停止位后立即回到st0状态,并等待下一次的发送数据包命令。如果发送数据帧小于14,状态机完成停止位后回到stl状态,发送下一帧数据。

仿真时序图如图4(b)所示。从仿真结果可以看出,每一位数据都是连续发送16个bclk时间,且遵循字符发送格式,数据位由高位到低位发送,完全实现了技术要求功能。3 FPGA同步串行通信模块

FPcA同步串行通信模块发送光电编码器信号计数值到PC机。同步串行总线由门控、时钟、数据信号组成。门控频率是l kHz,时钟频率500kHz。通过外部开关对输出状态进行选择。同步串行通信模块中,FPGA芯片内部逻辑程序的编写主要分为光电编码器信号的采集处理过程(如细分,辨向,锁存,计数等)和最后所得数据的串行输出两个部分。FPGA同步串行模块图如图5所示。

本系统采用光电型增量轴角编码器,输出方波的光栅有A相、B相和z相三个电信号,A相信号为主信号,B相为副信号,两个信号周期相同,相位差90o。其中A、B两相对应扫描机构转角,z相为零位值输出,可以作为校准信号以消除累积误差。每转动一个角度单位,光电编码器都会发出一个周期的完整的方波A和B,通过对A和B信号的全部上升沿和下降沿进行计数,可实现4细分;并通过在每个跳变沿判断A与B的电平高低来实现辨向,A超前B为正向,进行加计数,B超前A为反向,进行减计数【2】。

当选择第一种状态时,角编码器值存储在计数值寄存器中,当门控信号上升沿到来时,锁存寄存器计数值,输出到缓冲寄存器,再通过移位寄存器串行化,一位一位输出,时钟频率500 kHz,每个时钟周期传送一位。当选择第二种状态时,扫描机构在进入指定区域起始点时,发出信号锁存角编码器值(16位),角度值前加区域标志(8位),共24位,输出到缓冲寄存器,再通过移位寄存器串行化,并立即发出,时钟频率500kHz。

仿真结果,可以看出,A超前B为正向,进行加计数,B超前A为反向,进行减计数。图(b)则实现了24位数据的发送,完全实现了技术要求功能。

4结束语

本文针对扫描机构伺服控制器通信系统的技术要求,采用FPGA设计了各个功能模块,并采用verilog语言编程,进行了功能仿真和时序仿真。结果表明,各个功能模块逻辑清晰、合理,能准确地收发数据。整个系统可移植性强,运行速度快,可靠,完全能实现扫描机构伺服控制器与Pc机的通信要求,保证扫描机构按严格的时间和空间扫描,并能精确定位。

相关主题
相关文档
最新文档