基于 STM32+FPGA 的多轴运动控制器的设计

news2024/9/23 1:38:39
运动控制器是数控机床 高端机器人等自动化设备控制系统的核心 为保证控制器的实用性 实时性和稳定 性, 提出一种以 STM32 为主控制器 FPGA 为辅助控制器的多轴运动控制器设计方案 给出了运动控制器的硬件电路设计 , 将 S 形加减速算法融入运动控制器 提高了控制精度 可有效避免过冲 振荡等现象的发生 在三维点胶机平台上对运动 控制器的性能进行了测试, 结果表明 : 点胶机各轴能按照设定的轨迹运动 运行平稳且实时性高 具备良好的应用前景
运动控制器性能的好坏直接对自动化系统整体性能的 发 挥 起 决 定 性 作 用[1-2] 克 莱 斯 勒 西 门 子 、 FANUC、 MAZAK 占据我国 90% 左右的工业用运动控 制器市场。 随着运动控制技术的发展 FPGA ARM 、 DSP、 专用芯片等逐渐成为运动控制器的核心部件 , 并日益朝着开放式方向发展[3-4] 以单片机为核心的运动控制器运算速度慢、 控制精度低 一般用于低 速、 运动轨迹简单的场合 ; 以专用芯片为核心的运动 控制器只是发出脉冲信号, 无法接收反馈信号 处于开环状态, 不能满足多轴联动和高速 高精度的轨迹 插补要求[5-7] 基于 PC 的以 FPGA ARM DSP 为核心处理器的运动控制器, 如固高科技 GH-800 数据处理速度快、 实时性高 可完成多轴协同控制 复杂轨迹运动和加减速。 以 STM32 为主控器 FPGA 为辅助控制器 ,搭建硬件平台及进行外围电路设计。利用 STM32 丰富的外设资源,完成运动轨迹规划、人机交互、数据存储、数据交互等控制; 利用 FPGA 丰富的逻辑资源,实现各个运动轴脉冲并行输出、输入信号和原点位置的检测、输出开关量控制等功能。控制器设计中引入S 形加减速算法,可有效避免实际运行过程中的过冲、失步及振荡等现象。该运动控制器硬件结构简单,在保证精度、实时性、可靠性的前提下,能有效缩短研发周期。
1 运动控制器结构
运动控制器采用 STM32+FPGA 的硬件结构形式 ,主控制芯片选用 ST 公司的 STM32F4xx 辅助控制芯片选择 Altera 公司的 EP2 系列芯片 主要模块包括数据存储 模 块、 外部输入检测模块 电 机 驱 动 模块、 接口模块 人机交互模块等 其结构框图如图1 所示

主控制器以 STM32 为核心 将电机运行过程中的数据存入外部存储器, 使用触摸屏和按键相结合的方式实现人机交互; 触摸屏作为上位机 通过串口与 STM32 通信 可对整个系统进行调试 按键通过 I/O 接口与 FPGA 相连 主控制器处理外部数据存储器的插补信息后, 经总线发送给 FPGA FPGA 接到控制指令或插补数据后进行插补运算, 然后通过隔离电路将信号发送到各个电机驱动器, 对各轴电机进行驱动, 完成目标运动轨迹.
STM32 FPGA 的通信接口
STM32 FPGA 之间可以通过可变静态存储控制器 ( Flexible Static Memory Controller FSMC ) 进行通信, 如图 4 所 示 根 据 FSMC 的 功 能 特 性 设 定STM32 的地址线和数据线宽度为 16 STM32 片选选中 FPGA 进行数据读写 FPGA 通过中断反馈数据处理情况。
STM32 芯片的配置
STM32 芯片外围硬件看门狗能有效监控 CPU 的运行情况。 STM32 需要配置 2 个外部晶振 : 一个频率为 32. 768 kHz 主要给芯片内部时钟部件提供低速 、 高精度的时钟; 另一个频率为 25 MHz 产生主时钟 ,通过分频、 倍频模块后供给各个模块 [4,6]
2. 2
FPGA 模块电路设计
FPGA 主要负责插补算法信息的处理 脉冲信号的输出、 开关量的输入和输出 接收编码器的差分信 号等。
( 1 ) 差分输入接口电路
U6 为四路差动信号接收器 用来接收编码器输出的差分信号, 将电机的位置信息反馈给 FPGA 接口电路如图 5 所示

3 运动控制器软件设计
通过触摸屏 ( HMI ) 发送指令给 STM32 STM32 接收到指令后通过动态链表的形式将指令存储于外部存储器; 实时读取存储器 将运动轴的位置信息 速度信息返回给触摸屏显示, 同时将指令信息和插补算法数据, FSMC 传到 FPGA 处理 ; 最后由脉冲发生器产生脉冲指令给电机驱动器, 驱动电机转动 运动控制器软件设计框图如图 8 所示
4
S 形速度规划算法的实现
S 形加减速可充分发挥电机性能 因其在加减速阶段速度曲线呈 S 形而得名 令加速度的导数为常 数, 改变其 大 小 可最大限度减小系统冲击 [10-11] 。 整个加减速过程由 7 个部分构成 [12-13] 如图 9 所示 。 图中: l 为运动的位移 v 为速度 a 为加速度,j 为
加加速度 A 表示匀加速阶段的加速度值 M 表示匀减速阶段的加速度值, T i ( i = 1 2 3 ,......, 7 ) 为各阶段的运行时间, τ i ( i = 1 2 3
...... 7 ) 为以各个起点作为 0 点的时刻 t i ( i = 1 2 3
...... 7 ) 为各个过渡点时刻。 实际应用时 m 1 m 4 的各阶段
都需要判断减速点 一般情况下 0 加速到最大速度和从最大速度减速到 0 所用的时间相同 T 1 = T3 T 5 = T 7

 

结合图 10 所示的流程 算法实现过程如下 :
步骤 1 初始化相关的参数 包括初始速度 目标速度 ( 最大运行速度 ) 加加速度 j 最大加速度 A
步骤 2 计算减速距离 d ec d ec 与剩余距离 L s 比较, 其中 L s = L e L c L e 表示指定目标位置值 L c 表示当前位置值。
步骤 3 L s d ec 则减速 否则加速或者匀 速 ( 此时如果到达最大速度则匀速 未到达则加速 )
步骤 4 根据步骤 3 的判断 重新计算 a v v v 、jv 并输出。
步骤 5 L c = L e 到达终点 运动停止 否则重复步骤 2~ 5

6 结束语
本文作者提出了一种以 STM32 为主控制器 FPGA 为辅助控制器的运动控制器设计方案 完成了控制器硬件平台及外围电路设计, S 形加减速控制算法融入到运动控制器中, 有效避免了运动时由于速度突变引起的过冲、 抖动等现象 提高了控制精度 对运动控制器进行测试, 结果表明 : STM32+FPGA 为硬件架构的运动控制器实时性好、 可靠性高 能满足工业运动控制的要求。
信迈支持STM+FPGA运动控制器、ethercat总线定制。

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

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

相关文章

【Git】合并多条 commit 注释信息

文章目录1、查看 commit 记录2、合并 commit 注释1、查看 commit 记录 # 3 指的是查看最近 3 次的 commit 记录,如果要查看多次的可以修改数字 # -3 不加,则表示查看所有 commit 记录,一般还是用数字去指定 git log -32、合并 commit 注释 …

【图像分类】基于PyTorch搭建LSTM实现MNIST手写数字体识别(单向LSTM,附完整代码和数据集)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 提起LSTM大家第一反应是在NLP的数据集上比较常见,不过在图片分类中,它同样也可以使用。我们以比较熟悉的 mnist…

软件测试面试自我介绍/项目介绍居然还有模板?我要是早点发现就好了

目录 1、自我介绍 2、项目介绍 2.1、最全电商项目介绍 2.2、电商项目介绍 2.3、在线教育项目介绍 2.4、互联网金融项目介绍 总结 1、自我介绍 以XXX简历来举例(参照下面的案例,编写你的自我介绍,框架就是:我是谁&#xff0…

深入Kafka核心设计与实践原理读书笔记第三章消费者

消费者 消费者与消费组 消费者Consumer负责定于kafka中的主题Topic,并且从订阅的主题上拉取消息。与其他消息中间件不同的在于它有一个消费组。每个消费者对应一个消费组,当消息发布到主题后,只会被投递给订阅它的消费组的一个消费者。 如…

go gin学习记录1

环境: MAC M1,Go 1.17.2,GoLand 默认执行指令的终端,如果没有特别说明,指的都是goland->Terminal 创建项目 Goland中新建项目,在$GOPATH/src/目录下建立t_gin项目。 进入项目,在goland的T…

spark04-文件读取分区数据分配原理

接 https://blog.csdn.net/oracle8090/article/details/129013345?spm1001.2014.3001.5502通过上一节知道 总字节数为7 每个分区字节数为3代码val conf: SparkConf new SparkConf().setMaster("local").setAppName("wordcount")val sc: SparkContext ne…

日日顺供应链|想要看清供应链发展趋势,先回答这三个问题

技术变革如何支撑供应链及管理服务的发展? 数字化与科技化开始承托供应链管理能力的升级与变革? 如何从客户需求的纬度反推供应链及管理服务的模式变革?在过去的三年中,我国的供应链企业经受了最为极端的挑战,但当下&a…

论文写作——公式编辑器、latex表格、颜色搭配器

1、公式编辑器(网页版mathtype可用于latex公式编辑): MathType demo - For DevelopersLive demonstration about the features of Mathtype which allows edition equations and formulas (PNG, flash, SVG, PDF, EPS), based on MathML and compatible with LaTeX.https:/…

C++之可调用对象、bind绑定器和function包装器

可调用对象在C中,可以像函数一样调用的有:普通函数、类的静态成员函数、仿函数、lambda函数、类的非静态成员函数、可被转换为函数的类的对象,统称可调用对象或函数对象。可调用对象有类型,可以用指针存储它们的地址,可…

孙子兵法-36计

目录 04、攻其无备,出其不意。——《孙子兵法始计篇》 08、不战而屈人之兵,善之善者也。——《孙子兵法谋攻篇》 09、上兵伐谋,其次伐交,其次伐兵,其下攻城。 01、兵者,国之大事,死生之地&…

想要的古风女生头像让你快速get

如今我看到很多人都喜欢用古风女生当作头像,那么今天我就来教大家如何快速得到一张超美的古风女生头像~ 上图就是我使用 APISpace 的 AI作画(图像生成)服务 快速生成的古风女生头像,不仅可以限定颜色,还可以选择『宝石镶嵌』或『花卉造型』这…

【HAL库】STM32CubeMX开发----STM32F407----Uart串口接收空闲中断

一、Uart串口接收空闲中断----详解 首先介绍串口通信的数据传输方式,这样后面的Uart串口空闲中断能更好的理解。 Uart串口通信----数据传输方式 串口通信的数据由发送设备通过自身的TXD接口传输到接收设备得RXD接口。 一个字符一个字符地传输,每个字符…

设计模式C++实现11:观察者模式

参考大话设计模式; 详细内容参见大话设计模式一书第十四章,该书使用C#实现,本实验通过C语言实现。 观察者模式又叫做发布-订阅(Publish/Subscribe)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察…

Windows安装Gradle(IDEA兼容版)

IDEA兼容版本 IDEA安装目录下查看兼容Gradle版本:D:\win11\program\idea_2022.2.3\plugins\gradle\lib Gradle下载环境变量 1.创建仓库目录 D:\win11\program\gradle-7.4-bin\gradle-7.4\repository2.添加环境变量 GRADLE_HOME:D:\win11\program\gradle…

Java连接Redis

Jedis是Redis官方推荐的Java连接开发工具。api&#xff1a;https://tool.oschina.net/apidocs/apidoc?apijedis-2.1.0一、 导入包<!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency><groupId>redis.clients</groupId><…

在职阿里6年,一个29岁女软件测试工程师的心声

简单的先说一下&#xff0c;坐标杭州&#xff0c;14届本科毕业&#xff0c;算上年前在阿里巴巴的面试&#xff0c;一共有面试了有6家公司&#xff08;因为不想请假&#xff0c;因此只是每个晚上去其他公司面试&#xff0c;所以面试的公司比较少&#xff09;其中成功的有4家&…

新版bing(集成ChatGPT)的申请方法

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

redis知识汇总(部署、高可用、集群)

文章目录一、redis知识汇总什么是redisredis的优缺点&#xff1a;为什么要用redis做缓存redis为什么这么快什么是持久化redis持久化机制是什么&#xff1f;各自优缺点&#xff1f;AOF和RDB怎么选择redis持久化数据和缓存怎么做扩容什么是事务redis事务的概念ACID概念主从复制re…

03 OpenCV图像运算

文章目录1 普通加法1 加号相加2 add函数2 加权相加3 按位运算1 按位与运算2 按位或运算、非运算4 掩膜1 普通加法 1 加号相加 在 OpenCV 中&#xff0c;图像加法可以使用加号运算符&#xff08;&#xff09;来实现。例如&#xff0c;如果要将两幅图像相加&#xff0c;可以使用…

JVM - 类加载,连接和初始化

目录 类加载和类加载器 概述 类加载要完成的功能 加载类的方式 类加载器 类加载器的关系 类加载器说明 双亲委派模型 工作过程如下&#xff1a; 双亲委派模型说明&#xff1a; 破坏双亲委派模型&#xff1a; 类连接和初始化 类连接主要验证的内容 类连接中的解析…