《机电传动控制》第四周作业

2023-11-02 21:59

本文主要是介绍《机电传动控制》第四周作业,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、题目要求:

结合本周学习的交流电机原理及启动、调速、制动特性,用Modelica设计和仿真一个用三相交流异步电机带动起重机起升机构运行。具体要求如下:

1)实现如下机械运动周期:

控制电机带重物上升,从静止加速到800r/min

保持800r/min匀速运动0.5s,

减速到静止,保持静止状态0.5s,

带重物下降,从静止达到600r/min

保持600r/min匀速运动0.6s,

减速到静止。
(为了便于仿真,匀速和静止持续时间较短)

2) 升降机构和重物折算到到电机转子轴上的等效负载惯量为1Kg.m^2,折算到到电机转子轴上的等效负载转矩是15N.m。

3)使用统一的电机模型,如果控制策略中用到转子串电阻,允许将该电机的转子改为绕线式转子(参数不变)。

4)参照教材中给出的交流电机启动、调速和制动方法,设计控制策略,用Modelica实现控制策略并与电机模型实现联合仿真。

5)可以采用定子串电阻、转子串电阻、定子调压、定子调频等手段,但必须具备工程上的可实施性。

6)评价指标:快速启动、制动,冲击转矩和冲击电流小,能耗小,兼顾实施的经济性。

二、仿真分析:

由于转速n与fs存在正比例的关系,所以采用改变fs来控制n的方法。在老师所给程序案例中,fs为50Hz时对应电机转速n为1500r/min,所以认为n=30fs。以下程序编写,均以控制不同时间段的fs为基础,来完成相应的转速要求,具体内容参考郑君政同学的参数设置。

三、仿真代码及结果:

model SACIM "A Simple AC Induction Motor Model"

type Voltage=Real(unit="V");

type Current=Real(unit="A");

type Resistance=Real(unit="Ohm");

type Inductance=Real(unit="H");

type Speed=Real(unit="r/min");

type Torque=Real(unit="N.m");

type Inertia=Real(unit="kg.m^2");

type Frequency=Real(unit="Hz");

type Flux=Real(unit="Wb");

type Angle=Real(unit="rad");

type AngularVelocity=Real(unit="rad/s");

 

constant Real Pi = 3.1415926;

 

Current i_A"A Phase Current of Stator";

Current i_B"B Phase Current of Stator";

Current i_C"C Phase Current of Stator";

Voltage u_A"A Phase Voltage of Stator";

Voltage u_B"B Phase Voltage of Stator";

Voltage u_C"C Phase Voltage of Stator";

Current i_a"A Phase Current of Rotor";

Current i_b"B Phase Current of Rotor";

Current i_c"C Phase Current of Rotor";

Frequency f_s"Frequency of Stator";

Torque Tm"Torque of the Motor";

Speed n"Speed of the Motor";

 

Flux Psi_A"A Phase Flux-Linkage of Stator";

Flux Psi_B"B Phase Flux-Linkage of Stator";

Flux Psi_C"C Phase Flux-Linkage of Stator";

Flux Psi_a"a Phase Flux-Linkage of Rotor";

Flux Psi_b"b Phase Flux-Linkage of Rotor";

Flux Psi_c"c Phase Flux-Linkage of Rotor";

 

Angle phi"Electrical Angle of Rotor";

Angle phi_m"Mechnical Angle of Rotor";

AngularVelocity w"Angular Velocity of Rotor";

 

Torque Tl"Load Torque";

 

parameter Resistance Rs = 0.531+0.5 "Stator Resistance";

parameter Resistance Rr = 0.408+0.5 "Rotor Resistance";

parameter Inductance Ls = 0.00252"Stator Leakage Inductance";

parameter Inductance Lr = 0.00252"Rotor Leakage Inductance";

parameter Inductance Lm = 0.00847"Mutual Inductance";

parameter Frequency f_N = 50"Rated Frequency of Stator";

parameter Voltage u_N = 220"Rated Phase Voltage of Stator";

parameter Real p =2"number of pole pairs";

parameter Inertia Jm = 0.1"Motor Inertia";

parameter Inertia Jl = 1"Load Inertia";

parameter Frequency f1 = 27;

parameter Frequency f2 = 15;

parameter Frequency f3 = 0.2;

parameter Frequency f4 = 19.8;

parameter Frequency f5 = 19.8;

parameter Real t1 = 100+500+671; //加速 800r/min恒速

parameter Real t2 = t1+50; //减速

parameter Real t3 = t2+600; //静止0.5s

parameter Real t4 = t3+200; //反向加速

parameter Real t5 = t4+300+600; //600r/min恒速

 

 

Real time1(start=0);

Real time2(start=0);

Real time3(start=0);

 

initial equation

 

Psi_A = 0;

Psi_B = 0;

Psi_C = 0;

Psi_a = 0;

Psi_b = 0;

Psi_c = 0;

phi = 0;

w = 0;

 

equation

 

u_A = Rs * i_A + 1000 * der(Psi_A);

u_B = Rs * i_B + 1000 * der(Psi_B);

u_C = Rs * i_C + 1000 * der(Psi_C);

 

0 = Rr * i_a + 1000 * der(Psi_a);

0 = Rr * i_b + 1000 * der(Psi_b);

0 = Rr * i_c + 1000 * der(Psi_c);

 

Psi_A = (Lm+Ls)*i_A + (-0.5*Lm)*i_B + (-0.5*Lm)*i_C + (Lm*cos(phi))*i_a + (Lm*cos(phi+2*Pi/3))*i_b + (Lm*cos(phi-2*Pi/3))*i_c;

Psi_B = (-0.5*Lm)*i_A + (Lm+Ls)*i_B + (-0.5*Lm)*i_C + (Lm*cos(phi-2*Pi/3))*i_a + (Lm*cos(phi))*i_b + (Lm*cos(phi+2*Pi/3))*i_c;

Psi_C = (-0.5*Lm)*i_A + (-0.5*Lm)*i_B + (Lm+Ls)*i_C + (Lm*cos(phi+2*Pi/3))*i_a + (Lm*cos(phi-2*Pi/3))*i_b + (Lm*cos(phi))*i_c;

 

Psi_a = (Lm*cos(phi))*i_A + (Lm*cos(phi-2*Pi/3))*i_B + (Lm*cos(phi+2*Pi/3))*i_C + (Lm+Lr)*i_a + (-0.5*Lm)*i_b + (-0.5*Lm)*i_c;

Psi_b = (Lm*cos(phi+2*Pi/3))*i_A + (Lm*cos(phi))*i_B + (Lm*cos(phi-2*Pi/3))*i_C + (-0.5*Lm)*i_a + (Lm+Lr)*i_b + (-0.5*Lm)*i_c;

Psi_c = (Lm*cos(phi-2*Pi/3))*i_A + (Lm*cos(phi+2*Pi/3))*i_B + (Lm*cos(phi))*i_C + (-0.5*Lm)*i_a + (-0.5*Lm)*i_b + (Lm+Lr)*i_c;

 

Tm =-p*Lm*((i_A*i_a+i_B*i_b+i_C*i_c)*sin(phi)+(i_A*i_b+i_B*i_c+i_C*i_a)*sin(phi+2*Pi/3)+(i_A*i_c+i_B*i_a+i_C*i_b)*sin(phi-2*Pi/3));

 

w = 1000 * der(phi_m);

 

phi_m = phi/p;

n= w*60/(2*Pi);

 

Tm-Tl = (Jm+Jl) * 1000 * der(w);

 

if time <= 100 then

u_A = 0;

u_B = 0;

u_C = 0;

Tl = 0;

elseif time <= t4 then

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000);

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3);

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3);

Tl = 15;

else

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000);

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000+2*Pi/3);

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000+4*Pi/3);

Tl = 15;

end if;

 

 

algorithm

 

if time <= 100 then

f_s := 0;

elseif time <= t1 then

f_s := f1;

elseif time <= t2 then

f_s := f2;

 

elseif time <= t3 then

f_s := f3;

elseif time <= t4 then

 

f_s := (time-t3)/(t4-t3)*(f4-f3)+f3;

 

elseif time <= t5 then

f_s := f5;

else

f_s := 0;

end if;

 

if n > 800*0.98 and n < 800*0.99 then

time1 := time;

end if;

if n < 0.1 then

time2 := time;

end if;

if n > -600*0.98 and n < -600*0.99 then

time3 := time;

end if;

end SACIM;

四、总结

基本按照要求完成任务,曲线整体较为平滑。

转载于:https://www.cnblogs.com/yujin13/p/5308803.html

这篇关于《机电传动控制》第四周作业的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/333601

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

【电机控制】数字滤波算法(持续更新)

文章目录 前言1. 数字低通滤波 前言 各种数字滤波原理,离散化公式及代码。 1. 数字低通滤波 滤波器公式 一阶低通滤波器的输出 y [ n ] y[n] y[n] 可以通过以下公式计算得到: y [ n ] = α x [ n ] + ( 1 − α ) y [ n − 1 ] y[n] = \alpha x[n] + (1 - \alpha) y[n-1]

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—1控制节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—10.控制节点-Heat服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版