为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 优秀毕业设计_基于FPGA+MCU的伺服电机控制器设计

优秀毕业设计_基于FPGA+MCU的伺服电机控制器设计

2017-10-01 50页 doc 524KB 58阅读

用户头像

is_014457

暂无简介

举报
优秀毕业设计_基于FPGA+MCU的伺服电机控制器设计优秀毕业设计_基于FPGA+MCU的伺服电机控制器设计 2010届本科生毕业设计 摘 要 本文首先对通用伺服控制平台项目做了整体的设计规划,并着重分析了基于FPGA的 电机接口模块的设计和核心算法,给出相应的接口电路,并对等精度算法和设计思路在 ALTERA QUARTUS 9.0的环境下进行了仿真,在实验电路上进行了测试。主要目的在于研 究出一款高性能的基于FPGA的伺服电机接口模块。 关键词:伺服控制平台 FPGA 等精度算法 电机接口模块 I 2010届本科生毕业设计 THE DESIGN OF FPGA+M...
优秀毕业设计_基于FPGA+MCU的伺服电机控制器设计
优秀毕业设计_基于FPGA+MCU的伺服电机控制器设计 2010届本科生毕业设计 摘 要 本文首先对通用伺服控制平台项目做了整体的设计规划,并着重了基于FPGA的 电机接口模块的设计和核心算法,给出相应的接口电路,并对等精度算法和设计思路在 ALTERA QUARTUS 9.0的环境下进行了仿真,在实验电路上进行了测试。主要目的在于研 究出一款高性能的基于FPGA的伺服电机接口模块。 关键词:伺服控制平台 FPGA 等精度算法 电机接口模块 I 2010届本科生毕业设计 THE DESIGN OF FPGA+MCU BASED SERVO MOTOR CONTROLLER ABSTRACT This first general-purpose of this dissertation is the overall project design and planning for the servo control platform, and also it analyzed the core algorithms for the FPGA based interface design. Given a appropriate interface circuit ,An equal precision algorithms designed with FPGA is introduced.It adopts Verilog Hardware Description Language to implement in servo motor interface modules ,and adds pulse width measurement on the base of traditional frequency measurement, and the HDL was simulated in the ALTERA QUARTUS 9.0 environment. Intended to design a high-performance FPGA-based servo motor interface module. Keywordsservo control platform FPGA equal precision algorithm servo motor interface module II 2010届本科生毕业设计 目 录 摘要 ABSTRACT 1引言 „„„„„„„„„„„„„„„„„„„„„„„„„„1 1.1项目背景 „„„„„„„„„„„„„„„„„„„„„„„1 1.2研究意义 1 2 系统组成 2.1 运动控制器 2.1.1 MCU功能 2.1.2 FPGA功能 2.1.3光电隔离模块功能 2.2伺服驱动器 2.2.1常用伺服驱动器简介 2.3伺服电机 2.3.1伺服电机简介 2.3.2伺服电机工作原理 2.3.3伺服电机的控制 2.4HMI 2.5控制器上位机部分 2.5.1上位机功能 2.6以太网模块 2.6.1以太网模块功能 3 FPGA接口模块详细介绍 3.1实现功能 3.1.1 速度控制模块 3.1.2 位置控制模块 3.1.3 CPU接口模块 III 2010届本科生毕业设计 3.2速度与位置检测算法讨论 3.2.1M法 3.2.2T法 3.2.3等精度测频算法 3.2.4高精度数字测速算法 3.3速度与位置控制算法 3.4硬件部分 3.4.1ALTERA FPGA介绍 3.4.2FPGA硬件部分 3.4.2.1电源及晶振部分 3.4.2.2内存及FLASH 3.4.2.3主芯片 3.4.2.4JTAG下载 3.4.3输入输出光电隔离 3.4.3.1输入光电隔离模块 3.4.3.2输出光电隔离模块 3.5软件部分 3.5.1 verilog HDL编程语言介绍 3.5.2输入输出端子定义 3.5.3寄存器定义 3.5.4FPGA架构 3.5.5主要模块介绍 4 仿真实验结果 5 应用案例 6 结论 谢辞 参考文献 附录 IV 2010届本科生毕业设计 1 引 言 1.1项目背景 此项目为待开发项目《基于RABBIT5700+FPGA的伺服电机控制器》的前期规划, 目的在于帮助研发人员了解伺服电机控制器的有关知识和给出基于FPGA的接口模块的设计概要说明。 1.2研究意义 目前国内主力通用的伺服电机生产厂商主要有:众为兴、雷赛、固高、中达电通、摩 森达等,趋于研发成本的考虑,大多数厂家在电机编码器接口芯片选择上,倾向于采用集 成芯片如MX314,PCL6045等,但是随着控制要求的如见复杂,在一个ASIC上实现多轴的控制越来越吃力,这就刺激着我们回归基于MCU+FPGA的架构,把所有的多轴运算全都放 到MCU里。本次设计着重对接口FPGA的架构和主要检测算法进行讨论,对接口FPGA的设计,具有一定参考意义。 1 2010届本科生毕业设计 2 系统组成 HMI终端 运动控制 器上位机 100M实时以太网 以太网模块运动控制 器 6M总线 电机驱动 器„„ IOIO 模块模块 12M 电机 2.1 运动控制器 主要实现对增量编码器信号的采集,以及对电机驱动器的控制,通过上位机发送过来 的指令,在控制器里进行插补运算,再通过FPGA接口模块传递给驱动器。 2.1.1 MCU功能 a.通过自身的以太网模块,接受上位控制机的指令 b.多轴插补运算 c.通过与FPGA的借口,控制FPGA发出控制脉冲 2.1.2 FPGA功能 a.采集增量编码器的信号 b.通过与MCU的接口,把速度,位置等信息传给MCU c.通过与MCU的接口,接受MCU命令,实现单轴操作。 2.1.3光电隔离模块构成 实现输入输出光电隔离 2.2伺服驱动器 应用于伺服电机的专用伺服驱动单元被称为伺服驱动器。 2.2.1常用伺服驱动器简介 2 2010届本科生毕业设计 SIMODRIVE 611U的简介: 西门子SIMODRIVE 611是一种模块化晶体管脉冲变频器,可以实现多轴及组合驱动的 解决方案。基于其模块化的设计,使用SIMODRIVE可以根据具体的驱动任务来制定灵活多变的解决方案。 驱动器的各模块从功能上分为6个部分: 1)电源模块 2)变频模块 3)反馈模块 4)监控模块 5)功率模块 6)控制模块 611U 伺服驱动器各模块组成示意图 2.3伺服电机 2.3.1伺服电机简介 一个伺服电机内部一般包括一个直流电机、一组变速齿轮组、一个反馈可调电位器以 及一块电子控制板。其中,高速转动的电机提供了原始动力,带动变速(减速)齿轮组, 使之产生高扭力的输出。齿轮组的变速比越大,伺服电机的输出扭力也越大,也就是说越 3 2010届本科生毕业设计 能承受更高的负载,但转动的速度也相应越低。 2.3.2伺服电机工作原理 伺服电机是一个典型闭环反馈系统,减速齿轮组由电机驱动,其终端(输出端)带动 一个线性的比例电位器作位置检测,该电位器把转角坐标转换为一比例电压反馈给控制线 路板,控制线路板将其与输入的控制脉冲信号比较,产生纠正脉冲,并驱动电机正向或反 向地转动,使齿轮组的输出位置与期望值相符,令纠正脉冲趋于为0,从而达到使伺服电 机精确定位的目的。 2.3.3伺服电机的控制 标准的伺服电机有三条控制线,分别为电源线、地线及控制线。电源线与地线用于提 供内部的电机及控制线路所需的能源,电压通常介于4V-6V之间,该电源应尽可能与处理系统的电源隔离(因为伺服电机会产生噪音)。甚至小伺服电机在重负载时也会拉低放大 器的电压,所以整个系统的电源供应的比例必须合理。输入一个周期性的正向脉冲信号, 这个周期性脉冲信号的高电平时间通常在1ms到2ms之间,而低电平时间应在5ms到20ms 之间。 2.4 HMI 远程显示控制器上位机的操作界面,实现交互控制。 2.5控制器上位机部分 2.5.1上位机功能 a.参数配置 b.逻辑控制 c.运动控制 d实时通信 e.绘制实时曲线等功能 2.6以太网模块 2.6.1以太网模块功能 完成系统数据的转发通讯工作与运动控制平台部分之间通过RT-TCP/IP协议进行通讯, 而与伺服结构模块之间通过西门子标准总线背板总线进行通讯,通讯的数据主要包括系统 的参数配置数据、实时运行数据和计算输出控制数据。 4 2010届本科生毕业设计 3 FPGA模块详细介绍 MCU FPGA 光电隔离 电平转换 增量编码器电机驱动器 3.1实现功能 伺服电机3.1.1 速度控制 a.方向检测 b.速度检测 c.速度设定 初始 预置 加减速度点设定 实时改变 d.加速减速方式规划 线型 S型 e.脉冲发生 3.1.2 位置控制 a.方向检测 b位置检测 c.绝对位置设定 初始 预置 实时改变 短距离运动优化 d.相对位置设定 5 2010届本科生毕业设计 初始 预置 实时改变 短距离运动优化 e.脉冲发生 3.1.3 CPU接口模块 可实现与16位8086、16位H8、16位6800的标准接口。 3.2速度与位置检测算法讨论 全数字交流伺服系统广泛采用增量式光栅编码器作为位置和速度传感器,编码器分辨 率直接影响伺服系统的控制精度,为此,高性能伺服系统往往选用高分辨率或者对编码器 信号进行倍频细分等,这样不可避免的增加了反馈环节的成本和复杂性。因而多数通用私 服系统往往采用分辨率适中的编码器以寻求性能与成本的平衡,然而有限的分辨率就成为 保证和提高伺服系统性能的主要瓶颈。幸运的是增量光栅编码器的反馈脉冲信号中不仅包 含景区的位置信息,也包含着丰富的时间信息,妥善利用这一特征可以保证和提高全数字 交流伺服系统的速度以及位置分辨率,以提高伺服控制性能。以下将着重讨论4种速度采 集的算法,M法、T法为常用方法,但是往往只能在其频率段内达到很好的效果,等精度 方法是现在比较通用的高效算法。而高精度数字测速算法主要依靠于32位的DSP进行快 速的数据运算,因以后想再用FPGA板载NIOSII软核CPU,固介绍一下这种算法。 3.2.1 M法 M法是直接计取给定采样周期内的反馈脉冲数来测量速度,其特点是高速时测速精度 高,低速时测速精度低,而如果在低速时把采样周期加长,那么在会对系统实时性有影响。 确定的闸门时间Tw内,记录被测信号的变化周期数(或脉冲个数)Nx,则被测信号的频率为:fx=Nx/Tw 3.2.2.T法 T法是通过测量两个相邻反馈脉冲的间隔时间来测量速度,其特点是低速时测速精度 高,高速时测速精度低,恰恰与M法相反,如果想提高其在高速时的精度,必须大大提高 系统时钟频率,实现比较麻烦,成本高。 测周期法需要有标准信号的频率fs,在待测信号的一个周期Tx内,记录标准频率的周期数Ns,则被测信号的频率为:fx=fs/Ns 3.2.3等精度测频算法 等精度测频算法是在直接测频方法的基础上发展起来的。它的闸门时间不是固定的 值,而是被测信号周期的整数倍,即与被测信号同步,因此,测除了对被测信号计数所产 生?1个字误差,并且达到了在整个测试频段的等精度测量。 6 2010届本科生毕业设计 系统时钟 待测信号 预置闸门 实际闸门 , 在测量过程中,有两个计数器分别对标准信号和被测信号同时计数。 , 首先给出闸门开启信号(预置闸门上升沿),此时计数器并不开始计数,而是等到 被测信号的上升沿到来时,计数器才真正开始计数。 , 然后预置闸门关闭信号(下降沿)到时,计数器并不立即停止计数,而是等到被测 信号的上升沿到来时才结束计数,完成一次测量过程。可以看出,实际闸门时间τ 与预置闸门时间τ1并不严格相等,但差值不超过被测信号的一个周期 , 设在一次实际闸门时间τ中计数器对被测信号的计数值为Nx,对标准信号的计数值 为Ns。 , 标准信号的频率为fs,则被测信号的频率为 Nxfx = fs (1) Ns , 由式(1)可知,若忽略标频fs的误差,则等精度测频可能产生的相对误差为 , δ=(|fxc-fx|/fxe)×100% (2) , 其中fxe为被测信号频率的准确值。 , 在测量中,由于fx计数的起停时间都是由该信号的上升测触发的,在闸门时间τ 内对fx的计数Nx无误差(τ=NxTx); , 对fs的计数Ns最多相差一个数的误差,即|ΔNs|?1,其测量频率为 , fxe=[Nx/(Ns+ΔNs)]/fs (3) , 将式(1)和(3)代入式(2),并整理得: , δ=|ΔNs|/Ns?1/Ns=1/(τ?fs) , δ=|ΔNs|/Ns?1/Ns=1/(τ?fs) , 由上式可以看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间 和标准信号频率有关,即实现了整个测试频段的等精度测量。 , 闸门时间越长,标准频率越高,测频的相对误差就越小。 , 标准频率可由稳定度好、精度高的高频率晶体振荡器产生,在保证测量精度不变的 前提下,提高标准信号频率,可使闸门时间缩短,即提高测试速度。 7 2010届本科生毕业设计 , CNT1和CNT2是两个可控计数器,标准频率(fs)信号从CNT1的时钟输入端CLK输 入;经整形后的被测信号(fx)从CNT2的时钟输入端CLK输入。 , 每个计数器中的CEN输入端为时钟使能端控制时钟输入。 , 当预置门信号为高电平(预置时间开始)时,被测信号的上升沿通过D触发器的输 出端,同时启动两个计数器计数;同样,当预置门信号为低电平(预置时间结束) 时,被测信号的上升沿通过D触发器的输出端,同时关闭计数器的计数。 , 系统由分频器、计数器1、计数器2、D触发器等组成。 , 分频器出来的信号作为等精度测频原理的预置闸门信号。 , 其中D触发器,计数器2和计数器1的作用与前2页图中所示相同。 , 运算模块就是完成公式(1)的运算。 , 复位主要对分频、计数器1和计数器2进行清零操作。 8 2010届本科生毕业设计 3.2.4 高精度数字测速算法 M/T法是在大致相等的采样间隔内,计取C个反馈脉冲,并同时计取这C个反馈脉冲mm间隔内插入的高频时标信号数C,以测量速度。其速度公式为: t V = kfCC R0m/t (1) 其中:k为反馈信号脉冲当量,f为高频时标频率,C为采样周期内计取的反馈脉冲R0m数,C为C个反馈脉冲间隔内插入的高频时标信号数。 tm M/T法结合了M法和T法优点,同时也克服了各自的缺点,可以在整个测速范围内保 持测速精度的一致性。因此M/T法最适于构建针对增量式光栅编码器反馈脉冲信号的高精 度数字测速算法。但是,经典的M/T也存在不足之处,即采样时机的不确定性给定周期采 样的数字伺服控制系统带来很大的不方便,为此又出现了变M/T法、双缓冲法等方法以进一步改善M/T法的性能和实用性。 本算法以改进的M/T法为基础,利用32位浮点运算的计算能力,充分发掘增量式光栅 编码器反馈脉冲信号的位置信息和时间信息,以构建高精度数字测速及位置检测算法,提 高数字交流伺服系统的反馈分辨率。 基于32位浮点运算和改进的M/T法的高精度数字测速算法的硬件原理参见图1,主要 由32位浮点型数字信号处理器(DsP)和改进的M/T法测速逻辑电路组成。改进的M/T法测 速逻辑电路由反馈脉冲计数器及其数据锁存器C,以及高频时标计数器及其两级数据锁存m 器C和C构成,用于对反馈脉冲信号及高频时标信号进行计数和定周期采样;其中锁存器ft C和C由定周期采样信号触发,锁存器C由反馈脉冲信号f触发。32位浮点DsP则用于对上mtfp述采样值进行实时处理和运算,实现高精度数字测速算法。 9 2010届本科生毕业设计 图1 高精度数字测速算法的相关时序如图2所示。由于反馈脉冲信号f的边沿和定时采样周p期T的边沿在时间上不可能总是保持一致,因此任一采样周期的实际采样点T与该周期的固k定采样点T之间必然存在一个不确定的时间差?T,其大小随反馈脉冲的变化而变化。图1nn 中改进的M/T法的测速逻辑可以确保实际采样点T总是领先于定周期采样点T,因而可以kn保证从确定的采样点获得可靠的数据,这样就解决了传统M/T法由于实际采样点T滞后k+1于定周期采样点T的时间?T不确定所带来的采样时机不确定的问题。 nn 10 2010届本科生毕业设计 高精度数字测速算法定周期采样计数序列C(n)和C(n),通过相应的差分处理获得mT 当前实际采样间隔内的反馈脉冲增量值C和高频时标增量值C: mt 然后按式(1)以32位浮点运算获得高精度速度信息,这样得到的速度是当前实际采样 间隔内的平均速度: 在实际采样点T处高频时标信号f的边沿不可能总是和反馈脉冲信号f的边沿保持一K0p致,因而会产生?1个高频时标当量的计数误差,从而影响高精度数字测速算法的测速精 度。因此高精度数字测速算法的测速相对误差为: 当被测对象的速度稳定,且C个反馈脉冲所经历的时间恰好等于采样周期时,C=fT,mtO0此时高精度数字测速算法的相对误差为恒定值,与被测速度和反馈脉冲分辨率无关,即 然而多数情况下被测对象的速度都不能满足上述关系,C会在一个有限的范围内发生t 变化。C变大时,相对误差ε减小;C变小时,相对误差ε扩大;但是无论如何C都不会tvtvt小于C的50%,因此高精度数字测速算法在整个测速范围内的相对误差不会大于2εt0v0 分析式(1)可知,计数值Cm正比于被测速度,当反馈脉冲建个大于一个采样周期时, 会造成Cm= 0及测速值为。因此,Cm的最小有效值等于1,也就是说Cm =1对应着高精度数字测速算法的测速下限Vmin;另一方面,Cm的最大有效值对应着被测速度的最大值。于是高 精度测速算法的测速范围D恰好等于Cm的最大有效值和最小有效值之比;另外考虑到大多 11 2010届本科生毕业设计 数情况下Ct?f0T ,因而可以推到出以下式: 分析式(3)(4)(5)可以得到有关参数对高精度数字测速算法性能的影响,见表1 可见,反馈脉冲分辨率和采样周期的改变都可以影响高精度数字测速算法的测速范围 和测速下限,但是提高反馈分辨率就意味着增加的成本,而延长采样周期就等于降低速度 反馈环节的响应特性。 为解决上述矛盾,一方面,可以保持高速段和长速段的采样频率不变,以保证较高的 速度环频特性;另一方面,根据低速段速度的具体情况,有限地自动倍增低速段的有效采 样周期,一伙的更宽的测速范围和更平稳的低速性能。这一措施的采用有效地提高了高精 度数字测速算法的性能,同时又兼顾了反馈环节的成本。因此,高精度数字测速算法可以 依靠有限的反馈分辨率来保证和提高速度反馈环节的 、频响测速范围以及低速平稳性。 由增量式光栅编码器测量被测对象位置信息的传统方法是将反馈脉冲的个数累加起来 作为位置信息。但是用这种方法获取的位置信息的分辨率取决与反馈信号的脉冲当量,就 是说,测得的位置信息只能是反馈脉冲当量的整数倍,因而限制了这种方法的精度。 分析增量式光栅编码器反馈脉冲信号在时间和空间两个方面的意义和联系可知,在空 间上,反馈脉冲信号是对被测对象所处量化位置区间的反应;在时间上,则是对被测对象 到达人意量化位置区间的发生时刻的反应。也就是说,利用增量式光栅编码器的反馈脉冲 信号既可以测量被测对象在确定的时间到达了什么位置,也可以测量被测对象到达确定位 置时的准确时间。因而增量式光栅编码器的反馈脉冲信号具有对被测对象的运动状态进行 动态连续测量的能力。利用这一特性可以构造出一种高精度的动态位置检测算法。、 参考图2可知,由于反馈脉冲信号fp的边沿和定时采样周期T的边沿在时间上不可能总 是保持一致,所以任意采样周期的采样点Tk与该周期的固定采样点Tn之间必然存在一个不确定的时间差?Tn。正式这个是检查中包含着比一个脉冲当量的量化位置分辨率更为精确 的位置信息,因此高精度动态位置检测算法的关键就是获取和处理这一时间差?T,并从n中获得高精度的动态位置信息。 12 2010届本科生毕业设计 与高精度数字测速算法类似的是,高精度动态位置检测算法不仅关注已经发生的反馈 脉冲的数量,也关注反馈脉冲的发生时刻,因此其软硬件原理也基本类似,部分软硬件功 能可以共用。再图1所示的高精度数字测速算法中改进的M/T法测速逻辑电路的基础上, 再增加一个由定周期采样信号T触发的高频时标计数值锁存器CT(图中阴影所示部分),就构成了高精度动态位置检测算法的硬件基础。高精度动态位置检测算法的时序同样可以参 考图2,图中的阴影部分表示由定周期采样信号T触发的高频时标计数值的锁存值 。 高精度动态位置检测算法以定周期T采样技术序列Ct(n)和,然后将通过相应的处理获得当前有效采样周期采样点Tn和实际采样点之间的计数差与时间差?Tn 另外,从高精度数字测速算法中可以得到当前实际采样间隔内的反馈脉冲数增量值Cm以及被测对象的平均速度V;由V和?T相乘就可以计算出时间差?T中所包含的高精度动nnnn态位置信息,因此当前有效采样周期内的增量式高精度动态位置信息可以由式(7)所示的高精度动态位置检测算法得出: 其中v和?T为上一有效采样周期的测量结果,且v=0和?T= 0。高精度动态位n-1n-100置检测算法得到的位置信息P由整数和分数v?T-vT 两部分组成,其中分数部分vnnnn-1n-1n?T。可进一步整理为 n 可见高频时标脉冲频率f确定时v?T只受v和的影响。式中:v是被测对象的速度, 是 0nnnn 当前有效采样周期的定周期采样点和实际采样点之间高频时标脉冲的计数差,其最小有效 值等于1。因此,v?T所表达的动态位置信息的分辨率可以表示为: nn 其中f是与被测对象速度相对应的反馈脉冲频率。由此可见,高精度动态位置检测Pn 算法的测量分辨率与高频时标脉冲的频率成反比,与被测对象的速度成正比,即:低速段 13 2010届本科生毕业设计 分辨率较高,而高速段分辨率较低。 因此,高精度动态位置检测算法可以利用高频时标信号f的内插作用,从具有动态连0续测量能力的增量式光栅编码器的反馈脉冲信号中获取比单位脉冲当量更加精细的动态 位置信息,避免了传统方法因简单累计反馈脉冲的个数所造成的截尾效应,提高了位置反 馈的动态测量分辨率。 总之,高精度动态位置检测算法可以提高增量式光栅编码器位置反馈的动态测量分辨 率,使伺服控制的位置环获得更加精细的反馈输入,降低调节输出的波动,提高位置伺服 的控制性能。 3.3速度与位置控制算法讨论 主要拟讨论如何在单位时间内可准确发送脉冲个数,而且发送的脉冲个数可调。 3.4硬件部分 3.4.1 ALTERA FPGA介绍 FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、 CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数 有限的缺点。 Altera 的主流FPGA分为两大类,一种侧重低成本应用,容量中等,性能可以满 足一般的逻辑设计要求,如Cyclone,CycloneII;还有一种侧重于高性能应用,容 量大,性能能满足各类高端应用,如Startix,StratixII等,用户可以根据自己实际应用要求进行选择。在性能可以满足的情况下,优先选择低成本器件。 本次设计暂时使用Cyclone系列,进行实验验证。 3.4.2 FPGA硬件 3.4.2.1 电源接入&滤波&晶振部分 14 2010届本科生毕业设计 3.4.2.2 内存及FLASH 3.4.2.3主芯片 15 2010届本科生毕业设计 3.4.2.4 JTAG下载 3.4.2.5 端口扩展部分 16 2010届本科生毕业设计 3.4.3输入输出光电隔离模块 3.4.3.1输入光电隔离模块 17 2010届本科生毕业设计 3.4.3.2输出光电隔离模块 3.5软件部分 3.5.1verilog HDL编程语言介绍 Verilog HDL是目前应用最为广泛的硬件描述语言.Verilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。 Verilog HDL适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描 述. Verilog HDL进行设计最大的优点是其工艺无关性.这使得工程师在功能设计,逻辑 验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不 同的约束条件,即可设计出实际电路. 3.5.2输入输出端子定义 EAx in x轴编码器A相输入 EBx in x轴编码器B相输入 EZx in x轴编码器索引输入 OUTx out x轴输出控制电机的指令脉冲 DIRx out x轴输出控制电机转动方向的信号 ELLx in 指定+-EL信号输入逻辑 in +ELx in x轴正方向限位信号 -ELx in x轴负方向限位信号 SDx in x轴限位减速信号 ORGx in x轴原点输入信号 ALMx in x轴报警输入,当有效时,立即停机,或减速停机。 PCSx in x轴重新设定目标位置信号,当有效时,重新设定目标位置 18 2010届本科生毕业设计 ERCx in 偏差计数器清零信号 INPx in x轴到位信号 CLRx in 复位4个计数器中指定寄存器的信号 LTCx in 锁存4个计数器中指定寄存器的信号 BSYx in 判断X轴是否在运动的信号 3.5.3寄存器定义: 普通寄存器: RMV R\W 运动距离、目标位置 RFL R\W 初始速度 RFH R\W 运动速度 RUR R\W 加速度 RDR R\W 减速度 RDP R\W 减速点 RMD R\W S曲线加速区段 RUS R\W S曲线减速区段 RCUN1 R\W COUNTER1 指令位置计数器 RCUN2 R\W COUNTER2 机械位置计数器 RCUN3 R\W COUNTER3偏差计数器 RCUN4 R\W COUNTER4 通用计数器 RCMP1 R\W 比较器1数据 RCMP2 R\W 比较器2数据 RCMP3 R\W 比较器3数据 RCMP4 R\W 比较器4数据 RCMP5 R\W 比较器5数据 RIRQ R\W INT设置 RLTC1 R COUNTER1锁存数据 RLTC2 R COUNTER2锁存数据 RLTC3 R COUNTER3锁存数据 RLTC4 R COUNTER4锁存数据 RPLS R 定位计数器 RSPD R EZ计数器、速度监控器 RSDC R 自动计算减速点 预置寄存器 PRMV R\W 运动距离、目标位置 PRFL R\W 初始速度 PRFH R\W 运动速度 19 2010届本科生毕业设计 PRUR R\W 加速度 PRDR R\W 减速度 PRDP R\W 减速点 PRMD R\W S曲线加速区段 PRUS R\W S曲线减速区段 3.5.4FPGA架构: RFL,RFH,RUR,RDR OUTx,DIRx加减速脉冲控制电路 RUS,RDS,RFA ELLx 指令位置计数器选ALMx比较器1择器PCSx编码器接口电路EAx,EBx ERCx选比较器2择INPx机器位置计数器器 CLPx选LTCx寄比较器3择存器 BSYx器偏差计数器及选控比较器4择 制器CPU电接通用计数器路口选控比较器5择 制器电定位控制计数器路比较器F 当前速度EZx,+Elx,-Elx,SDx,ORGx, 3.5.5主要模块介绍: a. 编码器接口电路 主要实现脉冲的精确测量,与方向测量,从而实现机器位置计数器,偏差计数器,通 用计数器,定位控制计数器对EAx,EBx的精确计数。 b. 指令位置计数器 对加减速脉冲控制电路的输出脉冲进行测量,把数传递给寄存器控制电路,以用来告 知执行指令的状态。 c. 机器位置计数器 对编码器接口电路的输入脉冲进行测量,用以测量机械位置。 d. 偏差计数器 监视指令位置与当前机械位置之间的偏差,通过寄存器控制电路,对加减速脉冲控制 电路进行速度或位置补偿。 e. 定位控制计数器 对加减速脉冲控制电路的输出进行监视测量,和RMV寄存器比较,已判断是否到达目 标位置。 20 2010届本科生毕业设计 f. 比较器 把计数器里的值与比较器里装载的值相比较,来判断此事此刻的运动状态,再把信息 反馈给寄存器控制电路 g. 加减速控制电路 通过装载速度信息,从而发出脉冲驱动 预置功能实现框图: 第2预置寄 存器 第1预置寄 存器 寄存器控制当前操作寄电路存器 指令位置计加减速控制数器电路 OUTx,DIRx 21 2010届本科生毕业设计 4 仿真实验结果 4.1等精度频率计仿真图—5tclk=clk 4.2等精度频率计仿真图—80tclk=clk 22 2010届本科生毕业设计 4.3等精度频率计仿真图—5000tclk=clk 23 2010届本科生毕业设计 5 应用案例 基于FPGA+MCU的伺服电机控制器: 5.1固高GUC-400-TPX-M0X-L2 GUC-400-TPV/TPG-M0X-L2 是固高科技GUC 系列运动控制器的成员之一,是嵌入式PC 与运动控制器结合为一体的产品,与“工业计算机+运动控制器”结构的运动控制系统相 比,具有更高的可靠性、稳定性、抗干扰能力和更好的性价比。该产品具有优越的运动控 制功能和性能,丰富的运动控制功能等特别适用于高速、高精度精确位置控制要求的场合,强大的同步控制功能更是满足许多行业的同步控制功能需求。如,PCB 加工,半导体封装,印染,包装,剪切,服装加工等行业。该运动控制器还提供高速IO 现场总线扩展接口,可进行IO 的扩展,能满足多IO 点控制的要求。用户可选用固高科技现场网络IO 扩展模块及人机界面(HMI),获得一站式控制系统解决方案。 5.2雷赛SMC6480 24 2010届本科生毕业设计 SMC6480控制器是雷泰公司自主研发的基于10/100M以太网的通用型独立式运动控制器,可支持多个控制器和PC组成控制网络,网络中控制器的数量没有限制;也可应用于各种需要脱 机运行的场合。 本控制器可控制4个步进或伺服电机,具有最高5MHz脉冲频率、四轴直线插补、两轴圆弧插补、连续曲线插补、S形曲线速度控制等高级功能。 SMC6480基于嵌入式处理器和FPGA的硬件结构,插补算法、脉冲方向信号的输出、自动升 降速的处理、原点及限位等信号的检测处理,均由硬件实现,确保了高性能运动控制的高速、 高精度及系统的稳定。通过简单的编程设定即可开发出稳定可靠的高性能高速连续轨迹运动控 制系统。 SMC6480系统结构框图如1-1所示。除了4个电机控制端口外,还提供了丰富的I/O接口和通 讯接口:双路高精度DA输出,双路PWM控制输出,16路隔离输入口,8路隔离输出口,其中有两路电流增强输出,并可通过扩展接口扩展更多的IO接口;一个10/100M网络接口、两个RS232, 可通过网络或RS232直接与PC机通信;同时还可以通过RS232连接其它设备,如:文本屏、触摸屏,作为输入输出界面。 25 2010届本科生毕业设计 6 结论 通过本次毕业设计,了解并理解了整个伺服平台研发项目每个功能模块的意义,也 学习到了很多和伺服电机控制相关的知识,在FPGA模块设计中,提出了一种合理的设计 思路,定义了输入输出端口,寄存器,并成功的将主要算法进行了验证。完成绘制了FPGA硬件原理图,高速光耦输入输出原理图,相信对下一研发项目基于FPGA的运动控制模块的研发具有很大意义。 26 2010届本科生毕业设计 参考文献 [1]李谋.位置检测与数显技术[M].北京:机械工业出版社,1993.I.I Mou. Position Measurement and Digital Display Technology[M].Beijing:China Machine Press,1 993. (in Chinese) [2]孙和平,白晶.M/T法高精度数字测速器参数选择及设计[J].电气传动自动化,1998,20(4):82—85.SUN Heping,BAI Jing. 1998,20(4):82—85. (in Chinese) [3]PALN ITKAR S. Verilog HDL数字设计与综合[M ]. 二版.夏宇闻,胡燕祥,刁岚松,等译. 北京: 电子工业出版社,2004. [4] 王永良.基于FPGA的同步测周期高精度数字频率计的设计[J].电子设计应用,2004,(12):74-76. [5]叶佩青 张辉 PCL6045B运动控制与数控应用 北京 清华大学出版社 27 2010届本科生毕业设计 谢 辞 在此完成之际,我要对赵慧园老师致以衷心的感谢,感谢他给我的细心指导, 以及提供必要的实验环境。他多次提醒我,毕业设计一定要按照真正的项目需求去写,不 要拘泥于制作,要把想法真真正正的表达出来,因此,我在此次毕业设计当中学到了很多 关于伺服电机的背景知识。 同时感谢深圳联诚自动化的所有同事,在我缺乏相关背景知识时是他们不吝赐教, 让我懂得了伺服平台的实际架构及使用需求,尤其是饶仲海先生,让我真实的体验到了项 目研发的工作,让我懂得怎样做事,懂得怎样思考。 感谢何嘉琳师兄,在伺服电机测速算法上给了我很多的建议。 最后,感谢在百忙之中参与论文评审的各位专家老师们,感谢他们在论文评审中所 付出的辛劳,以及提出的宝贵意见。 28 2010届本科生毕业设计 附 录 用M法对输入脉冲进行实时测量,并把测量结果显示在LED数码管上。 module cnt_led(clk,rst,dataout,wei,iMotor_Pulse_A, motor_i,cnt_1ms_f) ; input clk,rst,iMotor_Pulse_A; output[7:0] dataout;//数码管显示数据 output[3:0] wei;//数码管显示使能 output motor_i,cnt_1ms_f; reg[7:0] dataout; reg[25:0] cnt;//扫描频率计数器 reg cnt_1ms_f; reg[15:0] cnt_1ms; always@(posedge clk or negedge rst) begin if(!rst) cnt_1ms<=0; else if(cnt_1ms==16'hc350) 29 2010届本科生毕业设计 begin cnt_1ms<=0; cnt_1ms_f<=~cnt_1ms_f; end else cnt_1ms<=cnt_1ms+1; end reg motor_i; reg[7:0] cnt_s500; always@(posedge clk or negedge rst) begin if(!rst) cnt_s500<=0; else if(cnt_s500==7'h32) begin cnt_s500<=0; motor_i<=~motor_i; end else cnt_s500<=cnt_s500+1; end reg[15:0] num; always@(posedge iMotor_Pulse_A) begin if(!cnt_1ms_f) num<=num+1; else num<=0; end reg[15:0] dis; always@(posedge cnt_1ms_f or negedge rst) begin if(!rst) dis<=0; 30 2010届本科生毕业设计 else dis<=num; end /* always@(posedge clk or negedge rst) begin if(!rst) begin cnt<=0; end else begin cnt<=cnt+1; if(cnt==26'h2625a0)// begin cnt_f<=~cnt_f; cnt<=0; end end end reg[15:0] num; always@(posedge cnt_f or negedge rst) begin if(!rst) num<=0; else begin if(num<16'h270f) num<=num+1; else num<=0; end end */ reg[13:0] cnt_wei; always@(posedge clk) 31 2010届本科生毕业设计 begin if(!rst) begin cnt_wei<=0; end else begin cnt_wei<=cnt_wei+1; end end always@(cnt_wei) begin case(cnt_wei[13:12]) 2'b00: wei<=4'b1110; 2'b01: wei<=4'b1101; 2'b10: wei<=4'b1011; 2'b11: wei<=4'b0111; default:wei<=4'b1110; endcase end wire[3:0] bai,shi,ge,qian; assign qian=dis/1000; assign bai=dis%1000/100; assign shi=dis%100/10; assign ge=dis%10; reg[3:0] wei; always@(wei) begin case(wei) 4'b0111: case(ge) 32 2010届本科生毕业设计 4'b0000: dataout=8'hc0; 4'b0001: dataout=8'hf9; 4'b0010: dataout=8'ha4; 4'b0011: dataout=8'hb0; 4'b0100: dataout=8'h99; 4'b0101: dataout=8'h92; 4'b0110: dataout=8'h82; 4'b0111: dataout=8'hf8; 4'b1000: dataout=8'h80; 4'b1001: dataout=8'h90; endcase 4'b1011: case(shi) 4'b0000: dataout=8'hc0; 4'b0001: dataout=8'hf9; 4'b0010: dataout=8'ha4; 4'b0011: dataout=8'hb0; 4'b0100: dataout=8'h99; 4'b0101: dataout=8'h92; 4'b0110: 33 2010届本科生毕业设计 dataout=8'h82; 4'b0111: dataout=8'hf8; 4'b1000: dataout=8'h80; 4'b1001: dataout=8'h90; endcase 4'b1101: case(bai) 4'b0000: dataout=8'hc0; 4'b0001: dataout=8'hf9; 4'b0010: dataout=8'ha4; 4'b0011: dataout=8'hb0; 4'b0100: dataout=8'h99; 4'b0101: dataout=8'h92; 4'b0110: dataout=8'h82; 4'b0111: dataout=8'hf8; 4'b1000: dataout=8'h80; 4'b1001: dataout=8'h90; endcase 4'b1110: case(qian) 4'b0000: dataout=8'hc0; 4'b0001: 34 2010届本科生毕业设计 dataout=8'hf9; 4'b0010: dataout=8'ha4; 4'b0011: dataout=8'hb0; 4'b0100: dataout=8'h99; 4'b0101: dataout=8'h92; 4'b0110: dataout=8'h82; 4'b0111: dataout=8'hf8; 4'b1000: dataout=8'h80; 4'b1001: dataout=8'h90; endcase default:dataout<=8'h99; endcase end endmodule 等精度频率算法: module PLJ (clk, tclk, start, alarm0, alarm1, dian, data1); input clk; input tclk; input start; output alarm0; reg alarm0; output alarm1; reg alarm1; output[3:0] dian; reg[3:0] dian; output[13:0] data1; 35 2010届本科生毕业设计 reg[13:0] data1; reg[13:0] q; reg[13:0] q1; reg[14:0] q2; reg en; reg en1; reg[27:0] qq; reg[27:0] qqq; reg[13:0] data0; always @(clk) begin if (clk == 1'b1) begin if (start == 1'b1) begin q <= 0 ; en <= 1'b0 ; end else if (q == 9999) begin q <= 9999 ; en <= 1'b0 ; end else begin q <= q + 1 ; en <= 1'b1 ; end end end always @(tclk) begin if (tclk == 1'b1) 36 2010届本科生毕业设计 begin if (start == 1'b1) begin q1 <= 0 ; en1 <= 1'b0 ; end else if (en == 1'b1) begin q1 <= q1 + 1 ; en1 <= 1'b1 ; end else begin en1 <= 1'b0 ; end end end always @(tclk) begin if (tclk == 1'b1) begin if (start == 1'b1) begin q1 <= 0 ; en1 <= 1'b0 ; end else if (en == 1'b1) begin q1 <= q1 + 1 ; en1 <= 1'b1 ; end else begin en1 <= 1'b0 ; end 37 2010届本科生毕业设计 end end always @(clk) begin if (clk == 1'b1) begin if (start == 1'b1) begin q2 <= 0 ; end else if (en1 == 1'b1) begin if (q2 == 20000) begin q2 <= 20000 ; end else begin q2 <= q2 + 1 ; end end end end always @(clk) begin if (clk == 1'b1) begin if (start == 1'b1) begin data0 <= 0 ; dian <= 4'b0000 ; alarm0 <= 1'b0 ; alarm1 <= 1'b0 ; qqq <= 0 ; 38 2010届本科生毕业设计 qq <= 00 ; end else if (en1 == 1'b0) begin if (q1 >= 1000) begin qq <= q1 * 10000 ; if (qqq < qq) begin qqq <= qqq + q2 ; data0 <= data0 + 1 ; dian <= 4'b0000 ; end else if (data0 >= 10000) begin alarm0 <= 1'b1 ; end else begin data1 <= data0 ; end end else if (q1 >= 100) begin qq <= q1 * 100000 ; if (qqq < qq) begin qqq <= qqq + q2 ; data0 <= data0 + 1 ; end else if (data0 >= 10000) begin data1 <= 1000 ; dian <= 4'b0000 ; end else 39 2010届本科生毕业设计 begin data1 <= data0 ; dian <= 4'b0010 ; end end else if (q1 >= 10) begin qq <= q1 * 1000000 ; if (qqq < qq) begin qqq <= qqq + q2 ; data0 <= data0 + 1 ; end else if (data0 >= 10000) begin data1 <= 1000 ; dian <= 4'b0010 ; end else begin data1 <= data0 ; dian <= 4'b0100 ; end end else if (q1 >= 1) begin qq <= q1 * 10000000 ; if (qqq < qq) begin qqq <= qqq + q2 ; data0 <= data0 + 1 ; end else if (data0 >= 10000) begin data1 <= 1000 ; dian <= 4'b0100 ; 40 2010届本科生毕业设计 end else begin data1 <= data0 ; dian <= 4'b1000 ; end end end else begin alarm1 <= 1'b0 ; end end end endmodule 41
/
本文档为【优秀毕业设计_基于FPGA+MCU的伺服电机控制器设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索