matlab离散系统仿真分析——电机

news/2024/12/5 12:52:41/

目录

1.电机模型

2.数字PID控制

3.MATLAB数字仿真分析 

3.1matlab程序

3.2 仿真结果 

4. SIMULINK仿真分析

4.1simulink模型

4.2仿真结果 

4.3 小结


1.电机模型

G(s)=\frac{1}{Js^{2}+Bs}

即:

x^{''}=-\frac{B}{J}x'+\frac{u}{J}

其中:J = 0.0067;B = 0.10

2.数字PID控制

首先我们来看一下连续PID:

简单说来,PID控制器各校正环节的作用如下:
(1)比例环节:成比例地反映控制系统的偏差信号error(t),偏差一旦产生,控制器立即产生控制作用,以减少偏差。
(2)积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数T,T越大,积分作用越弱,反之则越强。
(3)微分环节:反映偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。

按模拟PID控制算法,以一系列的采样时刻点kT代表连续时间t,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,即:

3.MATLAB数字仿真分析 

3.1matlab程序

主程序:

clear all
clc;
xk = zeros(2,1);%定义初始状态
ts = 0.001;
e_1 = 0;
u_1 = 0;
for k = 1:2000 %仿真时间=k*tstime(k)= k*ts;xd(k) = 0.5*sin(2*pi*k*ts);%跟踪位移信号,即x1跟踪xdtspan = [(k-1)*ts k*ts];%当前时刻求解的积分区间para = u_1;%控制输入[tt,x] = ode45('Plant',tspan,xk,[],para);xk = x(length(x),:);%取求解向量的最后一行,且作为下一时刻的初始状态x1(k) = xk(1);%选位移信息作为输出向量e(k) = xd(k)-x1(k);%误差比例 de(k) = (e(k)-e_1)/ts;%误差微分P = 20;D = 0.5;u(k) = P*e(k)+D*de(k);u_1 = u(k);%更新当前时刻的控制输入e_1 = e(k);%更新当前时刻的跟踪误差
end
figure(1)
plot(time,x1,'k',time,xd,'r','linewidth',1)
legend('x1','xd')
xlabel('t');ylabel('x1(转速)')
figure(2)
plot(time,u,'k','linewidth',1)
xlabel('t');ylabel('PD控制输入')
figure(3)
plot(time,e,'k','linewidth',1)
xlabel('t');ylabel('跟踪误差e')
figure(4)
plot(time,de,'k','linewidth',1)
xlabel('t');ylabel('跟踪误差变化率de')
% function dx = Plant(tspan,x,flag,para)
% u = para;
% J = 0.0067;B = 0.1;
% dx = zeros(2,1);%注意要将状态变量定位列向量,否则系统默认为行向量
% dx(1) = x(2);
% dx(2) = -(B/J)*x(2)+u/J;
% end

电机模型:

function dx = Plant(tspan,x,flag,para)
% tspan:积分时间段、x当前求解微分方程时刻的初始状态、para:当前时刻的控制输入
u = para;
J = 0.0067;B = 0.1;
dx = zeros(2,1);%注意要将状态变量定位列向量,否则系统默认为行向量
dx(1) = x(2);
dx(2) = -(B/J)*x(2)+u/J;
end

3.2 仿真结果 

4. SIMULINK仿真分析

对比一下纯数字仿真和simulink建模仿真:连续PID、离散PID模块、离散PID S函数3种仿真效果对比:

4.1simulink模型

4.2仿真结果 

4.3 小结

可以看到还是有细小的差异,但是离散PD模块为什么和离散s函数编写的PD控制器控制输入有差异呢?是因为内部离散PD模块的原因么?


http://www.ppmy.cn/news/26223.html

相关文章

Object.defineProperty 和 Proxy 的区别

区别:Object.defineProperty是一个用来定义对象的属性或者修改对象现有的属性的函数,,而 Proxy 是一个用来包装普通对象的对象的对象。Object.defineProperty是vue2响应式的原理, Proxy 是vue3响应式的原理1)参数不同Object.defineProperty参数obj: 要定…

C++类基础(十七)

类的继承——补充知识 ● public 与 private 继承(C Public, Protected and Private Inheritance) 改变了类所继承的成员的访问权限 //公有继承 struct Base { public:int x; private:int y; protected:int z; }; struct Derive : public Base //公有继承…

Git常用命令以及如何在IDEA中使用Git

前言Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等)。Git在管理文件过程中会记录日志,方便回退到历史版本;Git存在分支的概念,一个项目可以有多个分支&…

华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】

最近更新的博客 华为OD机试题 - 最短耗时(JavaScript) 华为OD机试题 - 机器人走迷宫(JavaScript) 华为OD机试 - 新员工座位安排系统(Python) | 机试题算法思路 华为OD机试 - 能力组队(Python) | 机试题算法思路 华为OD机试 - 内存池(Python) | 机试题算法思路 使用…

卷积神经网络(CNN)经典模型分析(一)

CNN经典模型分析🐬 目录: 一、CNN概论二、model分析LeNet5AlexNetVggNetGoogleNetResNet 三、参考资料 一、CNN概论 如图所示:人工智能最大,此概念也最先问世;然后是机器学习,出现的稍晚;最后才是深度学习…

智慧工地安全着装识别检测算法 python

智慧工地安全着装识别检测算法通过pythonopencv网络模型AI视频分析技术,人员安全着装识别检测算法对现场物体的不安全状态以及人员的不安全行为(不按要求着装)进行自动实时分析。由于Python 较为简单,一般无法进行复杂的后端搭建&…

【Linux】进程状态

文章目录1. 阻塞1. 举例2. 为什么要阻塞?3.操作系统层面上如何理解进程等待某种资源就绪呢?资源进程4. 总结2.挂起3.Linux进程状态1. R状态进程只要是R状态,就一定是在CPU运行吗?证明当前进程运行状态生成程序查看进程2. S休眠状态…

常用聚类算法分析

1. 什么是聚类 1.1. 聚类的定义 聚类(Clustering)是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。也即聚类后同一类的数据尽可能聚集到一起…