运动控制第三篇之直流电机参数辨识-程序员宅基地

技术标签: matlab  运动控制  直流电机  自动化  系统辨识  

前言

在博客<运动控制第一篇之直流电动机建模> 中,已经介绍了电机模型形式。但是在实际系统中,若电机添加负载或者其他应用中,电机的模型就会发生转变。仅仅通过电机厂家提供的参数建立模型在精度上是无法满足需求的。所以,我们要对电机进行系统辨识。

本文将忽略系统辨识的理论知识,直接介绍如何通过matlab实现电机参数辨识过程。
实验环境:

  • 直流电机以及支持的硬件设备
  • matlab 2012B

电机模型

若电机的负载是一个普通的惯性环节,则我们可以将其和电机建立在一个模型中。在博客<运动控制第一篇之直流电动机建模> 中,我们已经知道电机的模型如下图所示。
在这里插入图片描述
将负载和电机看做为一个整体,则可以忽略负责的作用。那么,可以将上图转化为传递函数为:

M ( s ) = K T l T m s + T m s + 1 M(s)=\frac{K}{T_lT_ms+T_ms+1} M(s)=TlTms+Tms+1K
其中,
{ K = 1 C e T l = L R T m = J R C m 2 \left\{ \begin{aligned} K&=\frac{1}{C_e}\\ T_l&=\frac{L}{R}\\ T_m&=\frac{JR}{C_m^2} \end{aligned} \right. KTlTm=Ce1=RL=Cm2JR

所以,我们可以知道 T l T_l Tl 是不会随着负载变化而变换的,且其一般很小。所以,一般可以直接根据电机参数计算得出。通过查询电机手册,可以获得
{ L = 6.7 m H R = 10.4 Ω \left\{ \begin{aligned} L&=6.7 \rm{mH} \\ R&=10.4 \rm \Omega \end{aligned} \right. { LR=6.7mH=10.4Ω

所以,可以计算出电磁常数
T l = L R = 0.00064423 s T_l=\frac{L}{R}=0.00064423s Tl=RL=0.00064423s

辨识死区与K

根据终值定理,开环电机的阶跃响应的终值为:
lim ⁡ t → + ∞ c ( t ) = lim ⁡ s → 0 s ⋅ 1 s ⋅ M ( s ) = K {\lim_{t \to +\infty} {c(t)}}={\lim_{s\to 0}s \cdot \frac1 s \cdot M(s)}=K t+limc(t)=s0limss1M(s)=K
所以,在理想的电机模型中, K K K 就是电机稳定速度与电压的斜率。因此,第一步,需要检测电机的稳定特性。
我采用的方法是,将电机由负额定电压逐渐增加到正额定电压。具体来说,就是将电机的占空比由-40%逐渐增加到40%,让电机在每个整数占空比稳定旋转1min,最后输出电机的稳定旋转的速度。得到的曲线如下图所示:
在这里插入图片描述
其中,横轴为占空比,纵轴为电机转速。
选取线性比较好的区域,拟合电机的特性线性曲线为:
在这里插入图片描述
则根据上文分析可知,电机的死区就是两条直线与坐标横轴的焦点,而K值就是两条直线的斜率。通过matlab拟合曲线,可以轻易求出电机的死区为[-8,8];K=46;

辨识机电惯性

通常在电机系统中, T m > > T l T_m>>T_l Tm>>Tl。因此,我们可以将电机传递函数近似改写成:
M ( s ) = K T l T m s + T m s + 1 = K T l T m s + ( T m + T l ) s + 1 = K ( T l s + 1 ) ( T m s + 1 ) M(s)=\frac{K}{T_lT_ms+T_ms+1}=\frac{K}{T_lT_ms+(T_m+T_l)s+1}=\frac{K}{(T_ls+1)(T_ms+1)} M(s)=TlTms+Tms+1K=TlTms+(Tm+Tl)s+1K=(Tls+1)(Tms+1)K
因此,本系统近似为:
M ( s ) = K ( T l s + 1 ) ( T m s + 1 ) = 46 ( 0.00064423 s + 1 ) ( T m s + 1 ) M(s)=\frac{K}{(T_ls+1)(T_ms+1)}=\frac{46}{(0.00064423s+1)(T_ms+1)} M(s)=(Tls+1)(Tms+1)K=(0.00064423s+1)(Tms+1)46

然后,通过Matlab中的系统辨识工具(System Identification Tool),即可以完成机电惯性 T m T_m Tm的辨识。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_17525633/article/details/106625818

智能推荐

httpd.conf_httpd-2.4.25-x86_conf/httpd.conf 2.4.52-程序员宅基地

文章浏览阅读1.2k次。## This is the main Apache HTTP server configuration file. It contains the# configuration directives that give the server its instructions.# See for detailed information.# In particular, see_conf/httpd.conf 2.4.52

狂神说Elastic search学习笔记_狂神说es笔记-程序员宅基地

文章浏览阅读1k次。狂神Elastic search笔记简介安装es安装安装可视化界面下载kibanaes核心概念理解分片(倒排索引)ik分词器插件安装视频链接:简介lucene是一套信息检索工具包!jar包,不包含搜索引擎系统包含:索引结构,读写索引的工具!排序,搜索规则工具类lucene和es的关系:es是基于lucene做的一些封装和增强es是一个开源的高扩展的分布式的全文检索引擎,它可以近乎实时的存储,检索数据,本身扩展性好,可以扩展到上百台服务器,处理pb(大数据时代)级别的数据,它通过简单的REST_狂神说es笔记

多维时序 | MATLAB实现SSA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制)_用gru进行多变量时序预测-程序员宅基地

文章浏览阅读671次。多维时序 | MATLAB实现SSA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制)_用gru进行多变量时序预测

python三菱modbus解密_Python_Modbus_RTU_通讯Demo-程序员宅基地

文章浏览阅读266次。importtimefrom datetime importdatetimeimportmodbus_tkimportmodbus_tk.defines as cstimportmodbus_tk.modbus_tcp as modbus_tcpfrom modbus_tk importmodbus_rtuimportserialimportjson#JSON 文件初始化defInitJSON()..._master baudrate

灯三段调光原理_「艾维科技」GT-BUS数字调光-程序员宅基地

文章浏览阅读687次。自从人类学会钻木取火以来,照明经历了从火、油到电的发展历程,照明工具经历过无数的变革。出现过火把、动物油灯、植物油灯、蜡烛、煤油灯、到白炽灯、日光灯,发展到现在琳琅满目的装饰灯、节能灯等,可以说照明的历史正是人类发展历史的见证。科技发展至21世纪,基础照明的技术以及产品发展的已经非常完善,人类已经不再局限于开关灯,而是把视野放在灯光的变化上——调光。众观市场,先前市面已存在的调光控制方式有五种:前..._三段调光

Vue.js -- 渐进式JavaScript框架(1)_1.vue是一套构建_______的渐进式框架-程序员宅基地

文章浏览阅读984次。1.Vue.js 是什么:Vue 是一套用于构建用户界面的渐进式框架(由易到难),也能够完成复杂的单页面应用;2.Vue.js 的安装使用:(1)使用 bower 下载安装 vue;(2)进行导入(路径在 vue 中的 dist 文件夹中)3.Vue.js 的指令(部分):&lt;body&gt; &lt;div id="view"&gt; ..._1.vue是一套构建_______的渐进式框架

随便推点

在 Linux 下搭建 Git 服务器_<div class="cnblogs_code"> <pre>-程序员宅基地

文章浏览阅读689次。在 Linux 下搭建 Git 服务器 环境:服务器 CentOS6.6 + git(version 1.7.1)客户端 Windows10 + git(version 2.8.4.windows.1) ① 安装 GitLinux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git服务器端:#yum install -y git安装完后_

js将一段文本复制到鼠标粘贴板_js copy到鼠标-程序员宅基地

文章浏览阅读418次。以下是代码我是在vue中使用的,searchInput为dom元素,document.execCommand(‘Copy’)为浏览器复制命令,select()方法直接调用。copyText() { let refs = this.$refs let searchInput = refs.searchInput searchInput.select() document.execCommand('Copy')}..._js copy到鼠标

Spring Boot入门(03): 从零开始学习配置文件:掌握YAML和Properties,轻松应对多环境配置管理_spring yaml properties file的file name patterns-程序员宅基地

文章浏览阅读3.8w次,点赞23次,收藏21次。在Spring Boot开发中,配置文件是非常重要的。本文将带领你从零开始学习配置文件,掌握YAML和Properties的语法,轻松应对多环境配置管理。无论是开发、测试还是生产环境,你都可以轻松切换不同的配置文件,并且能够灵活修改配置信息。_spring yaml properties file的file name patterns

Twister: 迭代MapReduce计算框架_mapreduce迭代算法-程序员宅基地

文章浏览阅读2.1k次。这篇文章中,我们提出了一种编程模型和Twister结构,这是一种增强的MapReduce runtime,它支持高效地迭代MapReduce计算。我们也展示了在大型数据并行应用上Twister与其它类似的runtimes的性能比较,如Hadoop和DryadLINQ。_mapreduce迭代算法

将string转换成inputstream_str转换成inputstream-程序员宅基地

文章浏览阅读5.7k次。String str = "";//add your string contentInputStream inputStream = new ByteArrayInputStream(str.getBytes()); 1 package org.kodejava.example.io; 2 3 import java.io.By_str转换成inputstream

区块链技术--区块链的生成和链接-程序员宅基地

文章浏览阅读876次。1、区块的生成(1)矿工在挖矿前要组建区块,将coinbase交易打包进区块(2)将交易池中高优先级的交易打包进区块  优先级=交易的额度 * UTXO的深度/交易的size (3) 创建区块的头部【版本号,父区块哈希,Merkle树根,时间戳,难度值,Nonce】 (4) 挖矿成功后,将计算出来的随机数nonce填入到区块头部,向邻近节点传播 2、区块的验证链接 (1)相邻节..._上链的数据会打包并生成区块是由什么节点