基于STM32 ARM+FPGA伺服控制系统总体设计方案(一)

news2024/11/26 0:26:40
设计需求
一套完整的伺服控制方案包括了上位机、驱控一体控制器和功率板三者。操作人员
通过上位机发送各种不同指令,然后控制器解析指令后执行相应的伺服功能,其次控
制器将驱动信号传输至功率板驱动电机,最后控制器采集反馈信息进行闭环控制并上
传数据。
结合国内外嵌入式伺服控制器的发展现状和功能需求,制定了本文伺服控制系统的
主要功能需求如下:
1 )开发一款驱控一体控制板卡。
(2)开发刚柔耦合平台伺服控制系统的同时兼顾对普通刚性平台的控制。
(3)兼容多种数字编码器反馈。
(4)能够驱动 1KW 功率以内的旋转电机和直线电机。
(5)能够驱动两路及以上的永磁同步电机。
(6)能够支持多种控制模式,如单闭环伺服或多闭环混合伺服。
(7)支持开发人员开发自定义控制算法。
(8)能够支持配套的上位机在线控制,包括控制电机启停、复位归零功能和设定
目标控制等功能。如设置目标位置、目标速度和目标电流等。
(9)采集反馈信息上传至上位机显示,如位置信息、转速信息和电流信息等。
控制效果的好坏涉及多方面影响因素,而本文着重于软硬件架构的基础开发,目的
在于开发一款功能完善的驱控一体控制器,基础控制算法采用了传统的 PID 算法,因
此更高级的控制算法不在本文做重点研究。
3.2 嵌入式系统概述
嵌入式系统在现今社会中运用的领域越来越多 [41] ,上至航天航空领域,下至穿戴式
设备,嵌入式产品都能随处可见。特别是其灵活性高,设计人员可以根据实际情况对
系统进行功能添加或删除,使得基于嵌入式的产品开发越来越多。
由于嵌入式系统并不像电脑系统一样要求功能强劲和通用性好,嵌入式系统主要是
根据用户功能需求而进行灵活组建而成的专用计算机系统。现实项目中往往受到环境、
成本、功耗和体积等要求限制,如此多因素的影响带来了差异性的设计,以至于很难
做到一套方案适配各种应用场合。因此根据项目实际需求的不同,灵活裁剪所需的软
硬件模块,组成最终符合生产要求的系统。
嵌入式系统可以概括为以下几个发展阶段:
第一阶段:该阶段的嵌入式系统主打价格低和功能简单领域。这种系统大部分应用
于低端场合,如简单的监测功能、指示功能以及精度要求低的工业控制领域。
第二阶段:以高性能嵌入式内核和嵌入式操作系统为标志。该阶段的低功耗高性能
的内核能够运行嵌入式系统,能够执行复杂的多任务事件。并且兼容性和扩展性得到
极大的提高,能够实现快速原型开发,缩短开发时间和降低成本。
第三阶段:该阶段主要特点芯片制造技术得到重要突破。越来越多功能都集成在单
片芯片中形成片上系统,该片上系统集成度越来越高,体积和功耗降低的同时功能却
越来越强。随着互联网的迅速发展,万物联网的时代已经快到了,工业控制等技术与
互联网的结合日益密切,嵌入式技术迎来快速发展时期。
制造业的核心在于工业控制,再加上现在工业互联网的快速发展以及 5G 通信的普
及,对于操作系统的实时性和快速响应性的要求也更高了。因此为了满足工程对实时
性的要求,需要移植合适的实时操作系统,同时安全性和可靠性要求也日益提高。
实时操作系统的工作原理大致为在一定的时间内完成设定的功能,因此有较高的可
靠性和实时性。当有外界突发事件或者系统内部中断事件产生时,能够快速响应及处
理。其通过任务调度器的工作方式决定多任务的执行顺序,判断各种任务的状态以及
其执行紧急性,尽可能地对某一事件做出快速响应。同时,使用实时操作系统可以可
以将工程分割为若干独立的子任务,在不需要大的改动情况下非常容易添加新的功能,
极大地简化了程序设计使得程序的设计和扩展变得容易。
3.3 总体硬件方案设计
3.3.1 硬件架构设计
当前电子制造行业的加工精度不断提高,无论是算法复杂程度还是加工复杂程度,
都给主控核心的计算、控制性能带来极大的挑战。以前的单控制核心如 ARM DSP
FPGA 都无法单独完全胜任工作需求。 ARM 的特长是事务管理功能,配合实时操作系
统能够进行多任务实时处理而互不影响; DSP 擅长于计算能力,能够快速对数据进行
处理、加密及调制等; FPGA 的优势在于灵活性强和并行处理能力,非常适用于数据加
速、硬实时性要求高和通信接口设计等场合。为适应工业控制行业的发展需求,现今
的主控解决方案通常是相互搭配取长补短。目前高端嵌入式伺服控制器的主控架构主
要有以下几种: ARM+DSP DSP+FPGA ARM+FPGA
1 ARM+DSP 架构。结合了事务管理功能和数据处理功能, CPU 承担了任务执
行压力而 DSP 则分担数据计算任务,保证了系统的实时性。但同时也带来了扩展能力
差的特点,一旦外设资源分配完成后,如果后续想添加新的功能则非常麻烦,甚至只
能用资源更多的芯片来替换。
2 DSP+FPGA 架构。 DSP 负责算法运算功能,而 FPGA 则承担数据采集和通信
接口功能,将采集的数据传输至 DSP 进行统一运算,最后 DSP 输出控制信号。但缺点
是任务管理能力差,对于功能越来越多的工控行业来说显然是有所欠缺的。
3 ARM+FPGA 架构。兼顾了事务管理功能和数字信号处理功能,不仅实时处
理能力强而且扩展性也提升了。现今出现了很多高级辅助型设计工具,通过高级语言
或者搭建模型进行 FPGA 开发,可以有效地简化 FPGA 的设计流程。因此该种方案中
FPGA 能够替代 DSP 的数据运算功能,经过优化后,运算时间还能更快,而且实时性
更强。
当然市面上还包括 ARM+DSP+FPGA SoC 等架构,这些更高级的解决方案毫无
疑问功能更加完善强大,但带来的缺点也十分明显。虽然兼顾了任务处理能力、数据
处理能力和接口扩展能力,但是系统的复杂程度也直线上升,不仅兼顾硬件设计,也
要考虑软件配合。另一方面,在人力成本和物料成本上考虑也是十分不划算的,开发
难度和维护性都比较差,所以这些架构不在本文考虑范围。
本文所设计的伺服控制系统目的是为了开发一款能够适配刚柔耦合平台特点的伺
服控制器,满足所需的功能设计和性能测试。通过对比多种架构的优缺点和结合多种
因素考虑,最终决定选用 ARM+FPGA 架构作为开发对象。具体原因如下:
(1) 本文所开发的伺服控制系统需要满足多任务处理功能,因此选用 ARM 主控核
心并配上实时操作系统,满足了控制系统的功能要求。
(2) 为了适配刚柔耦合平台控制算法,需要同步采样多路传感器数据,这要求了实
时性和并行性的重要性。由于 FPGA 结构特殊,决定了它在众多主控核心中的实时性
能是最强的,而且具备并行处理的优点,满足了系统的功能要求和扩展要求。
(3) 半导体的快速发展使得 ARM 内核的性能也越来越强,而且微处理器的出货量
也逐年递增,种类丰富可供选择。高级的 ARM 内核不仅工作主频得到极大提升,而且
也集成了硬核浮点计算单元,所以高级的 ARM 芯片有足够的性能处理数据,再配合
FPGA 强大的并行性和扩展性,满足了系统的性能要求。
(4) 最后一点是考虑性能与成本之间的关系,共性能带来了高成本,而低成本也限
制了控制性能。高性能和低成本犹如鱼与熊掌,两者不可兼得,因此需要选择一个折
中的方案。 ARM+FPGA 方案在一定的设计处理后,功能和性能方面能够媲美
ARM+DSP+FPGA 或者 SoC 等高级方案,但成本却降低了许多。
综上所述, ARM+FPGA 架构更加符合本文所设计的伺服控制系统。
3.3.2 主控芯片选型
主控核心是整个系统的大脑,占据着重要地位。一款合适的主控核心会使后续的开
发变得简单可靠,因此选择一款合适的主控核心非常重要。但由于微处理的种类层出
不穷,不同品牌不同系列的芯片种类高达上千种,因此给选型带来了极大挑战。那么
可以从通用性、性价比、可持续、可替代和采购方便等原则考虑。一款合适的处理器
不仅考虑自身的性能和资源问题,更需要考虑处理器的配套设施完善。处理器的配套
设施包括开发工具是否齐全,学习资源是否丰富以及是否有成功的实施例子。如图 *
示,各大半导体厂商的微处理器在国内的市场份额。
图中可知,份额最高的是 ST 公司,市场占有率高达 21% ,该公司旗下主打 STM32
系列微处理器。 STM32 芯片根据内核架构不同可分为不同系列 , 其中高性能 M4 M7
内核系列通用性较强,可以只需要改动小许地方即能够相互替代。
而且 STM32 芯片的开发环境比较完善和成熟,不仅有丰富的官方手册和开发例程,
而且也有很多移植好的嵌入式系统。所以经过多方面分析和总结,采用 STM32 微处理
器是一个较好的方案,能够满足挑选微控制器的五个原则。
结合设计需求考虑,最终选择型号为 STM32H743IIT6 芯片作为 ARM 端的主控核
心。该芯片是 Cortex-M7 内核的高性能系列产品,具有丰富的硬件外设资源,并且其
具备高频率工作时钟,能够快速有效执行各种指令。
FPGA 芯片的选型则相对比较简单,全球两大 FPGA 生产厂商 Intel Xilinx
生产对标的芯片性能都差不多,因此主要考虑逻辑资源是否足够和选择一款自己熟悉
的芯片开发即可。本文所选的 FPGA 芯片型号为 EP4CE22F17C8 。该芯片具有丰富的
片上资源、存储资源、以及多个全局时钟网络和锁相环。
3.3.3 硬件系统架构设计
硬件系统架构可以分为 ARM FPGA 部分,如图 3-2 所示。 FPGA 中主要集成了
主控制器、 FOC 模块和反馈模块三大模块。主控制器负责整个 FPGA 系统的控制,各
个模块的参数设置、驱动控制和数据交换都通过主控制器进行处理; FOC 模块是电机
控制的核心算法,分别对采样的电流进行坐标变换处理及脉宽调制处理,最后输出
PWM 波输出至智能功率模块中对电机进行控制;反馈模块则集成了所需的编码器种
类,分别有数字编码器和模拟编码器,通过设置编码器类型,然后经过滤波处理,最
后将数据回传到主控制器进行统一处理。
ARM 中主要由应用层、驱动层和系统层组成,外设通过高速总线与内核互联,主
要处理了控制算法、通信功能及任务管理。通信方式有串口、 RS485 CAN 和以太网
四种,与上位机进行指令和数据传输; SPI_FLASH EEPROM SDRAM 用于系统任
务管理,存储系统必要的配置信息和大量运算数据缓存;最后,所有任务事件由
FreeRTOS 操作系统进行统一调度。
ARM FPGA 之间通过总线进行互联通信,该总线称为灵活存储控制器(简称
FMC )。其具体的功能框图如图 3-3 所示,包含了常用的存储芯片的控制器。控制器
通过 AXI 总线和 AHB 总线实现了芯片对存储单元的读写操作。
FPGA 可以看作是 ARM
的一块外接 SRAM ,因此可以用 SRAM 的控制方式对 FPGA 进行读写操作。
FMC 综合了多种存储芯片的读写信号特点,根据不同存储芯片的性能参数,设置
主要的时间参数:地址建立时间、数据建立时间和地址保持时间。实际工程中利用芯
片性能指标,计算出所需的时间,最后设置对应的寄存器。在本文中选用了模式 A
时序模型,模式 A 支持独立的读写时序控制,其读写时序如图 3-4 3-5 所示。
结合本文硬件方案采用的主控核心是 STM32H743IIT6 ,因此最终选择更加合适的
FreeRTOS 作为本伺服控制器的操作系统。
FreeRTOS 顾名思义是一款免费的实时操作系统,这对于一款产品来说是非常友好
的,可以有效地降低了成本。 FreeRTOS 具有可裁剪、小巧和易用等优点,并且多种任
务调度模式,更重要的是用户可以根据任务的实时程度来人为给各个任务分配优先执
行等级,系统能够根据任务优先程度优先执行,因此非常适用于工业控制场合。
3.4.2 软件系统架构设计
如图 3-7 所示是本文所设计的驱动一体控制器的软件架构。该软件系统从低到高共
分为四大层次,各层之间不能夸层调用。而且各个模块之间耦合性低,同时模块提供
统一的 API 接口供上层调用。
硬件驱动层用于板卡硬件资源驱动,保证其能正常运行工作,并将 API 提供给功
能模块调用。该层主要由通信部分和事务管理部分组成,伺服控制器可以通过多种通
信方式与上位机进行数据交互,另一部分则用于系统文件管理,用于保存配置信息数
据和缓存运算过程中产生的中间变量。
功能模块层包含实现具体功能函数,主要有通信库模块、算法库模块、电机库模块
和升级模块。通信库用于解析上位机与控制器之间的通信数据帧,从而执行相应的操
作;升级模块则用于后续系统功能增加,通过远程升级伺服控制器的固件;算法库模
块和电机库模块包含了一些高级的运动控制算法,用于控制伺服电机,后续开发新的
控制算法可以直接添加到相应的库文件中而不会影响其他模块。
系统层采用的是 FreeRTOS 实时操作系统,其中任务调度机制是其核心技术。在
FreeRTOS 中的任务状态永远处于下图中四种状态中的的其中一种,其切换关系如图
3-8 所示。
应用层面向的对象是操作者,操作人员通过使用上层软件,经过实时操作系统进行
任务调度,然后调用对应的 API 函数,最终实现对底层硬件的调用和驱动。
整个软件系统的控制流程如图 3-9 所示。开始系统上电进行初始化配置, ARM
EEPROM SPI_FLASH 中的配置信息,
FPGA 芯片则可以通过 ARM 进行配置或者
通过 EPCS 芯片进行配置;然后通过与上位机进行连接,在上位机中进行一些参数设
置然后传输到 ARM 上;之后 ARM 通过 FMC 总线将电流控制指令传输给 FPGA 的寄
存器模块中,然后主控制器将所接收到的数据配置给 FPGA 中的各个模块;在载波同
步电路的控制下, FPGA 同步读取编码器位置信号和电流信号,然后进行坐标变换后,
最后调制输出 PWM 波;同时, FPGA 将收集到的数据放在寄存器模块中, ARM 再通
FMC 读取模块中的数据,用于进行高级的运动控制算法运算并且将数据回传到上位
机中用作数据分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/753821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为你带来全新的UGC体验!

当我们开始向更多 UGC 开放元宇宙,你们将有机会发现我们社区在 The Sandbox 中创造的一些令人惊叹的体验。 需要从你们自己的体验中获得灵感,或者只是想玩一些新东西?以下是我们的一些建造者几个月来的工作成果——现在就可以玩! …

JVM学习

文章目录 1 JVM与Java体系结构1.0 Java发展重大事件1.1 虚拟机和Java虚拟机1.3 JVM整体结构1.4 Java代码执行流程1.5 JVM架构模型1.6 JVM的生命周期1.7 JVM发展历程 2 类加载子系统2.1 ClassLoader2.2 用户自定义类加载器2.2.1 为什么需要自定义类加载器2.2.2 自定义类加载器的…

Kong 服务和路由的添加

管理服务 这里参考DB-less-Mode,因为使用的是yaml配置文件的形式,所以所有的相关配置只需要往初始化的kong.yml文件中添加就可以了,就像nginx的配置文件 DB-less-Mode 创建服务 vim /etc/kong/kong.yml services: - name: my-service #…

排查思路----CPU占用过高

1、top查看cpu占用情况 %Cpu(s): 29.4 us, 24.1 sy, 0.0 ni, 10.1 id, 20.4 wa, 0.0 hi, 16.0 si, 0.0 st 发现wa和si都比较高 2、查wa高的问题 iostat -x 1 10%util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘存在瓶颈。…

数据库性能优化中的表结构优化

数据库性能优化中的表结构优化 在数据库应用中,表结构的设计直接影响着数据库的性能。合理的表结构设计可以提高数据库的查询效率和性能,而不合理的表结构设计则可能导致查询效率低下、数据冗余、数据不一致等问题。因此,表结构优化是数据库…

智慧园区如何搭乘数字孪生这列快车?

无论是2022年的火爆的元宇宙还是今年出圈的ChatGPT,都体现着数字技术嵌入社会生活是大趋势,数字孪生作为智能技术的一大亮点,它在智慧园区中的应用会是怎样呢?今天我们就来聊一聊! (全文3000字,…

Star CCM+ 202206 (17.04) 详细安装步骤

首先下载win系统的安装包 阿里云盘: https://www.aliyundrive.com/s/WFfyvFhGxwK 提取码: x57w 百度云盘:https://pan.baidu.com/s/1qKgxYf2DGURCTW0rga8Xkw?pwdeiqi 提取码:eiqi (资源来自网络,仅供个人学习交流&…

电脑提示找不到MSVCR120.dll 简单解决方法,亲测有效!

msvcr120.dll是windows系统的一部分,它是Windows操作系统中的一个动态链接库文件。该文件包含了一些在运行使用了C语言编写的程序时所需的函数和资源。当系统无法找到或加载msvcr120.dll文件时,会导致相关程序无法正常运行。 msvcr120.dll文件它提供了一…

25个高级SQL查询-基于特定排序标准对行进行排序

本专栏中的许多示例将基于以下员工表(employee)。只有少数例子将以其他表格为基础;在这些情况下,表格将与示例一起进行说明。 一、RANK 函数 RANK()函数是SQL中的窗口函数之一。窗口函数查看部分数据并计算该部分的结果。 RANK()函数根据提供的列为每一行指定一个等级…

C语言自定义类型详解(保姆级教学)

目录 1.结构体 1.1结构体的介绍 1.2结构体的声明 1.3特殊声明(匿名结构体类型) 1.4结构体自引用 1.5结构体变量的定义和初始化 1.6结构体内存对齐 1.7修改默认对其数 2.位段 2.1什么是位段 2.2位段的内存分配 3.枚举 3.1枚举的定义 3.2枚举…

第G1周:生成对抗网络(GAN)入门

目录 一、课题背景和开发环境二、理论基础1.生成器2. 判别器3. 基本原理 三、前期准备工作1. 定义超参数2.下载数据3. 配置数据 四、定义模型1. 定义鉴别器2. 定义生成器 五、训练模型1. 创建实例2. 训练模型3. 保存模型 🍨 本文为🔗365天深度学习训练营…

检测到目标Content-Security-Policy响应头缺失

详细描述 HTTP 响应头Content-Security-Policy允许站点管理者控制用户代理能够为指定的页面加载哪些资源。除了少数例外情况,设置的政策主要涉及指定服务器的源和脚本结束点。 Content-Security-Policy响应头的缺失使得目标URL更易遭受跨站脚本攻击。 解决办法 …

浅谈炼钢厂能源计量管理系统的设计与应用

安科瑞 华楠 摘要: 从能源计量和管理的角度,论述了炼钢厂的能源计量管理系统的基本组成及功能。该系统的建立,将使炼钢厂能源介质的计量管理工作实现自动采集、瞬时监测、故障报警、能流监视;完成报表统计、离线输入、成本分析、预测参考等功…

【正点原子STM32连载】 第五十五章 录音机实验摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 第五…

大学生用一周时间给麦当劳做了个App(Flutter版)

背景 有个大学生粉丝最近私信联系我,说基于我之前开源的多语言项目做了个仿麦当劳的项目,虽然只是个样子货,但是收获颇多,希望把自己写的代码开源出来供大家一起学习进度。这个小伙伴确实是非常积极上进,很多大学生&a…

Django admin管理工具TabularInline表格内联

详解 TabularInline 是 Django Admin 中的一个内联模型选项,用于在父模型的编辑页面中以表格形式显示关联的子模型对象。下面是对 TabularInline 的一些详解: 显示方式:TabularInline 以表格的形式显示子模型对象。每个子模型对象将以一行的…

12.0、Java_IO流 - 字节数组输入输出流

12.0、Java_IO流 - 字节数组输入输出流 字节数组流: ByteArrayInputStream 和 byteArrayOutputStream 经常用在需要流和数组之间转化的情况; 字节数组输入流: 说白了,FileInputStream 是把文件当做数据源;ByteArrayInp…

变动率ROC指标详解及改进版选股公式

ROC指标(变动率指标)是一种基于动量的技术指标,衡量当前价格与一定天数前价格之间变化的百分比。ROC指标围绕零轴上下波动,如果价格变化向上,指标会移动到零轴之上;如果价格变动向下,则指标会移…

NestJS 编写 SSE 接口推送数据

做项目的时候遇到了顺便就记一下相关的内容。 SSE Server-Sent Events(SSE)技术,它是一种用于实现服务器向客户端实时推送数据的Web技术。SSE基于HTTP协议,允许服务器将数据以事件流(Event Stream)的形式…

深度学习(29)—— DETR

深度学习(29)—— DETR DETR代码欢迎光临Jane的GitHub:在这里等你 看完YOLO 之后,紧接着看了DETR。作为Transformer在物体检测上的开山之作,虽然他的性能或许不及其他的模型,但是想法是OK的。里面还有一些…