2023年12月31日发(作者:莫名其妙近义词)
异构多核Zynq处理器的伺服控制系统设计 洪瑞,叶春生 (华中科技大学材料成形与模具技术国家重点实验室,武汉430074) 摘要:本文介绍了基于Zynq的伺服控制系统设计,以ZYBO板为核心,以基于Xilinx工具的软硬件协同设计为开发方 法,结合ARM和FPGA各自的优势,对软硬件进行了明确划分,Zynq片内FPGA端完成运动控制,ARM端完成视频监 控等功能,ARM和FPGA通过片内AXI总线完成数据快速交换,实现了伺服系统的精确、快速控制,并使运动过程具有 良好的可视性。 关键词:软硬件协同设计;ARM;FPGA;运动控制;视频监控 中图分类号:TP273 文献标识码:A Sever Control System Based on HeterOgeneOus Multi—core Zynq Processor Hong Rui,Ye Chunsheng (State Key Laboratory of Material Processing and Die&Mould Technology. Huazhong University of Science and Technology,Wuhan 430074,China) Abstract:The design of sever control system based on Zynq is designed.The system takes ZYBO as the key part and CO design of soft ware and hardware based on Xilinx's tool as the system design method.In the system,the software and hardware is clearly divided re— ferred tO the features of ARM and FPGA.The motor control is implemented on FPGA and the video monitoring is implemented on ARM.A high band-width communication between ARM and FPGA is implemented by utilizing AXI bus in Zynq.The precise and fast control of the servo system is realized,and the motion process is of good visibility. Key words:CO—design of software and hardware;ARM;FPGA;motor control;video monitoring 引 言 伺服压力机是利用滑块机构将电动机的旋转运动转 变为滑块的直线往复运动,对坯料进行成形加工的锻压设 备,在现有的锻压设备中,伺服压力机所占的比例达到 8O%以上 ]。伺服压力机的控制系统以快速、精确跟踪为 主要目标,实现对速度及位置精确有效的控制,是一种应 用十分广泛的控制系统。在较早的伺服控制系统设计中, 有采用PC+运动控制板卡、PC+PLC等模式,后发展到 采用DSP、单片机,或者ARM等 ],这些控制方案核心均 1 系统结构与控制系统设计方法 1.1 系统结构 伺服控制系统由核心控制板ZYBO(一款基于Zynq 系列Z一7O10芯片的嵌入式开发板)、ZYBO外围接口及 电平转换电路、开关电源、强电控制电路、伺服驱动器、伺 服电机组成。如图1所示,220 V市电经过空气开关QF 进入到开关电源和强电控制电路,开关电源完成从交流 220 V到直流24 V和5 V电压转换。强电控制电路由交 为单核控制器。单核控制器在追求更复杂、更高精度、更 快速时有一定局限,而Xilinx推出的异构多核Zynq系列 处理器,集成了ARM处理器的软件可编程性与FPGA的 流接触器KM和直流接触器KA,以及一个常闭开关和一 个常开开关组成。伺服驱动器接收来自ZYBO经过电平 转换后的方向控制信号和速度控制信号,并返回速度信号 至ZYBO。 硬件可编程性,不仅可实现重要分析与硬件加速,还在单 个器件上高度集成CPU、DSP、ASSP以及混合信号功能。 Xilinx提供的软硬件协同设计解决方案,最大限度地发挥 了多核异构处理器的优势,利用Zynq处理器不仅可以实 ZYBO的核心Zynq系列Z一7010芯片拥有双核 ARM Cortex—A9处理器核和可编程逻辑单元(FPGA), 其中ARM端移植嵌入式系统实现系统任务实时管理、人 机交互等功能,FPGA端实现运动控制,并通过动态重配 置可以实现不同外设接口的连接,高速片内AXI总线实 现基本的伺服控制,还能满足功能更加多样化的伺服控制 系统的设计需求。 6 0 Microcontrollers&Embedded Systems 20 16年第7期 wwW.mesnet.com.cr7
薯||誊誊l t l 誉| l 霉镪 新器件新技术 《| 强 |彝强 镰簦臻 豫 缍魏奢撂辫L .厂—] 一 一 N I一一I 1 . f — I开关电源 咩 I 、 9+I 24V 上 [=]I KM I接口及电平转换电路I 厂 图2 FPGA端运动控制框图 、 、 L \ 7 + z I I assign Cmd=slvreg0F1:o]; //读取控制命令 ven=slyassign SpeedGiregl1-31:O];//读取速度给定 //存放当前转速 KA ZYB0 slyreg2 ̄31:03<一Speed—FB 最后利用Xilinx Platform Studio工具将以上整个运 动控制部分封装成IP核,并添加到系统中,供ARM端 访问。 图1 系统结构 2.1 PID控制器 PID控制器的核心思想是针对控制对象的控制需求, 现ARM端和FPGA端数据传输。控制板ZYBO上有 USB 2.0接口,通过USB Hub对USB接口进行扩展,接 建立描述动态特性的数学模型,通过调整比例、积分、微分 三个方面的参数达到系统最佳响应和控制效果。本文采 入USB摄像头、鼠标和键盘,USB摄像头用来实时监控。 1.2控制系统设计方法 控制系统采用基于Xilinx工具的软硬件协同设计 ] 方法,即在整个控制系统及定义的基础上,同时对软硬件 用数字位置式PID,位置式PID计算公式如下: P(k):(K +K +K。)E(k)+ KI’∑E(k)+(一KD)E(k一1) 根据公式绘制示意图,如图3所示。 设计和协调,包括软硬件的划分、软硬件的开发和联合调 试。Xilinx Platform Studio完成硬件系统的设计搭建后, 最终在FPGA端完成运动控制,ARM端实现对电机的给 E 定读写和对伺服系统运动部分的视频监控。 2 FPGA端设计实现 FPGA端实现伺服电机的运动控制,如图2所示。 ARM通过片内AXI总线向FPGA传输速度给定和控制 命令,FPGA通过片内AXI总线向ARM返回电机当前速 度。PID控制器通过计算速度给定与反馈速度偏差来输 出控制量值至脉冲模块,通过脉冲频率控制电机速度,方 向信号电平高低控制转向,FPGA输出速度脉冲和方向 信号。 给定接口和返回接口利用Xilinx Platform Studio定 P(k】 图3数字增量式PlD示意图 制IP过程中申请的3个32位寄存器,slv—reg0用来存放 控制命令,slv_regl用来存放给定速度,sly—reg2用来存放 当前转速,部分关键代码如下: parameter CNUM图3中,Y(k)为控制器输出,R(k)为控制器给定,最后 利用Xilinx提供的System Generator实现数字PID调节器。 2.2脉冲模块 //设置寄存器数量 //设置寄存器位宽 REG=3; 脉冲模块产生方波信号部分Verilog代码如下(其中, 方向信号根据给定脉冲改变输出状态): parameter CSLV—DWIDTH=32; 敬请登录网站在线投稿 2016#-g 7期 《平 机 嵌入式条'乇应冈》 61
always@(posedge clk) begin 利用ioremap(res一>start,remap—size)完成从物理 地址到内核空间虚拟地址的映射,返回虚拟地址的首地址 为base addr。 if(i一一counter)//频率控制字counter begin i一0: p out一~pout:利用struct file—operations结构体将驱动程序里的功 能函数与系统调用关联起来。 static const struct fileoperations procmyctrloperations一{ end .open—proc—myctrlopen, else .read—procmyctrlread, —i—i+1: .write—procmyctrlwrite, end .release—singlerelease 2.3正交解码及速度计算模块 正交解码模块由方向解码电路、4倍频电路 和加减 计数器组成,伺服驱动器返回A、B两相正交脉冲,正转时 A相超前B相9O。,反之,B相超前A相90。。根据电机的 运行状态,运用计数器对A相和B相的上升沿和下降沿 进行加(正转)减(反转)计数。速度计算模块再根据编码 器值计算电机转速,根据给定转速和当前转速偏差,计算 转速偏差,最后将转速偏差送到PID控制器进行计算。 } 其中,proc—myctrl—read关键部分如下: static ssizet procmyctrlread(struct file*file,const charofttuser*bur,sizet count,l ppos){…… charvalue phrase[-161; ue—ioread32(baseaddr);speedval //读取速度 sprintf(valuephrase,” d”,speedvalue); //将整型数转换为字符串 count—strlen(valuephrase); 根据综合时序报告,FPGA端运动控制部分时钟频率设置 为90.9 MHz,给电机阶跃响应测试(空载),给定为电机 额定转速1500 r/min,FPGA调整控制周期约为6O s,电 机转速约在50 ms达到稳定,且响应过程无超调。 //求字符串长度 if(copytOuser(buf,valuephrase,count)) //将数据拷贝到用户区 ······、 利用proc_create(”myctrl”,0,NUI I一 ̄procmyetrl—— 3 ARM端设计实现 operations)函数完成slave_ip驱动的虚拟文件接口创建,实 现应用层与内核的交互,实现应用层对该设备文件的读 图像采集及显示,蒌 向\- 图 4 厂.1里 兰 I 写,设备文件名为“myctrl”。 令,并且读取FPGA塞返 l \大--电6 流程如图 所示。\ / lI 甲 L= 3.1 ARM和FPGA 3.1.2应用程序对myctrl文件的读写 部分关键代码如下: FII E*fp; //定义一个指向文件流的指针 //打开文件 fp=fopen(”/proc/myctrl”,”w”); fwrite(Bur,sizeof(BuD,1,fp); //用户程序写给定命令 数据交换 在FPGA端自定 图3.2系统运动部分视频监控 3.2.1 摄像头配置和采集流程 视频采集采用的是UVC(免驱)摄像头,在Linux 2.6.30以上的内核版本中均自带UVC驱动,但需要手动 4 ARM端程序主流程 义了运动控制IP——slave—ip,系统给slaveip在ARM端 分配的物理地址范围为0x 6220 0000~Ox 6220 FFFF,大 小为64 Kb,slave—ip将作为ARM的i/o内存。slave—ip 重新加载UVC驱动模块(UVC input events device sup— port)到内核中,Linux终端进入当前内核源码目录下,输 中定义的3个用于和ARM交换数据的寄存器sly—reg0、 slvregl、slvreg2,首地址为0x 6220 0000,每个寄存器间 入“make menuconfig”进入图形化内核配置界面,在De— vice Drivers一>Multimedia support一>Media USB Adapt— _偏移地址为4。 ers一>USB Video Class下选中“UVC input events device 3.1.1 编写slaveip驱动程序 —support”,然后保存退出内核图形化配置界面,重新进行 币U用request—mem—region(res一>start,remap—size, 交叉编译,最终生成内核镜像,下载到SD卡FAT32启动 分区中 ]。 pdev一 ̄name))申请资源,使用从res一>start开始的、大 小为remap—size的、名字为pdev一>name的I/0内存 资源。 UVC驱动是标准V4L2结构的驱动 ,V4L2是 Linux环境下开发视频采集设备驱动程序的一套规范 6 2 Microcontrollers&Embedded Systems 20 16年第7期 WWW.mesnet.com.cn
本文发布于:2023-12-31 05:24:01,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1703971442132124.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:异构多核Zynq处理器的伺服控制系统设计.doc
本文 PDF 下载地址:异构多核Zynq处理器的伺服控制系统设计.pdf
留言与评论(共有 0 条评论) |