matlab大作业。
指导老师: 金济
年级专业 11 自动化 2 班
姓名学号麦煜华201131200818
严志健201131200826
范俊伟201131200806
2013 年 01 月02日。
使用matlab的simulink建模与**的方法,设计出直流电机双环控制调速系统。直流电机双环控制调速系统框图如下。其中速度控制器采用pwm控制;晶闸管整流器和直流电机使用s函数编写。
图1:直流电机双闭环控制调速系统框图。
从上图给出的控制系统框图可见,其中涉及的到晶闸管整流环节及电机环节,用传统的控制系统建模方式很难精确描述,所以在控制系统研究中经常对它们进行简化。采用s函数编写是个很好的简化方法。
方案一:对于pwm 发生器,采用两个discrete pwm generator 模块。由于此模块中自带三角波,其幅值为1,且输入信号应在-1 与1 之间,将输入信号同三角波信号相比较,当比较结果大于0时,占空比大于50 %,pwm 波表现为上宽下窄,电机正转;当比较结果小于0 而大于-1 时,占空比小于50 %,pwm 波表现为上窄下宽,电机反转。
discrete pwm generator 模块的参数设置为:调制波为外设,载波频率根据电力电子开关频率确定。其次,由于电机运转时,h 桥应与对角两管触发信号一致,为此采用selector 模块(路径为:
simulink/signal routing/selector),其参数设置为:input type 为vector,elements 为[1 2 4 3], 使得pwm 发生器信号同h 桥对角两管触发信号相对应。pwm 发生器模型及封装后子系统如下图所示。
图2:pwm 发生器模块。
方案二:基于s函数的pwm**。采用s函数编写pwm模块。
pwm模块s函数如下:
function [sys,x0,str,ts] =pwm(t,x,u,flag,t)
switch flag,case 0,[sys,x0,str,ts]=mdlinitializesizes(t);
case 3,sys=mdloutputs(t,x,u,t);
case 4,sys=mdlgettimeofnextvarhit(t,x,u,t);
case ,sys=
otherwise
error(['unhandled flag = num2str(flag)])
endfunction [sys,x0,str,ts,t]=mdlinitializesizes(t)
sizes = simsizes;
= 1; %at least one sample time is needed
sys = simsizes(sizes);
x0 = str =
ts = 2 0];
function sys=mdloutputs(t,x,u,t)
if t-fix(t/t)*t==0
sys=sign(u);
elsesys=0;
endfunction sys=mdlgettimeofnextvarhit(t,x,u,t)
if mod(t,t)==0&&abs(u)>0
h=abs(u)*t;disp('b');
elseh=t-mod(t,t);disp('c');
enddisp([h,u,t]);
sys=t+h;
图3:pwm控制系统**模型。
2.2 晶闸管整流环节。
晶闸管整流**s函数:
function [sys,x0,str,ts] =gto(t,x,u,flag)
switch flag,case 0,[sys,x0,str,ts]=mdlinitializesizes;
case 2,sys=mdlupdate(t,x,u);
case 3,sys=mdloutputs(t,x,u);
case ,sys =
otherwise
'simulink:blocks:unhandledflag', num2str(flag));
endfunction [sys,x0,str,ts]=mdlinitializesizes
sizes = simsizes;
sys = simsizes(sizes);
x0 = 0];
str =
ts = 1 0];
function sys=mdlupdate(t,x,u)
sys = fst(u) *220;
function sys=mdloutputs(t,x,u)
sys = x;
function f = fst(x)
if x<=0.5 ,f = 0;
else, f = 1;
end图4:晶闸管整流**s函数模块。
电机**s函数:
function [sys,x0,str,ts] =dianji(t,x,u,flag,u1n,in,nn,ra)
switch flag,case 0,
[sys,x0,str,ts]=mdlinitializesizes;
case 1,
sys=mdlderivatives(t,x,u);
case 3,
sys=mdloutputs(x,u1n,in,nn,ra);
case ,
sys=otherwise
'simulink:blocks:unhandledflag', num2str(flag));
endfunction [sys,x0,str,ts]=mdlinitializesizes
sizes = simsizes
sys = simsizes(sizes);
x0 = str = ts = 0 0];
function sys=mdlderivatives(x)
sys = x;
function sys=mdloutputs(x,u1n,in,nn,ra)
cefai=(u1n-in*ra)/nn;
ctfai=9.55*cefai;
tn=ctfai*in;
for i=1:800
tem(i)=4*i/800;
sys(i)=x/cefai-ra/(cefai*ctfai)*tem(i);
end图5:电机**s函数模块。
图6:直流电机双闭环控制系统**模型。
假设某可编程逻辑器件(pld)模块有6路输入信号,a,b,w1,w2,w3,w4,其中wi为编码信号,它们的取值将决定该模块输出信号y的逻辑关系,具体逻辑关系由表给出。课件如果直接用模块搭建此pld模块很复杂。试编写一个s-函数实现这样的函数。
function [sys,x0,str,ts] =pld_14(t,x,u,flag)
switch flag,case 0,[sys,x0,str,ts]=mdlinitializesizes;
case 3,sys=mdloutputs(t,x,u);
case ,sys=
otherwise
error(['unhandled flag = num2str(flag)])
endfunction [sys,x0,str,ts]=mdlinitializesizes
sizes = simsizes;
matlab作业
2011029170002王柳。a 一个问题的病态性如何,与求解它的算法有关系。错 b 无论问题是否病态,好的算法都会得到它好的近似解。错 c 计算中使用更高的精度,可以改善问题的病态性。错 d 用一个稳定的算法计算一个良态问题,一定会得到它好的近似解。对 e 浮点数在整个数轴上是均匀分布。错 f ...
matlab作业
matlab语言 第3次作业 字符串,单元数组和结构体 专业 海洋技术 海洋测绘方向 姓名 张体强学号 1026222 1 如何将一个char 数据类型的向量转化为相应的double 型数据类型的数据向量。从式1 到8,判断这些语句是否正确。如果它们正确,那么将产生什么结果?这题不要在电脑中做。1....
matlab作业
电子与通信工程学院。通信系统 实验报告。2013 2014 学年第1学期。调频 fm 系统调制解调 专业 通信工程。班级 通信111 班。学号 姓名 指导教师姓名陈多瑜。2013年 11 月日。1.频率调制或调频 fm 1 设调制信号为m t 调频信号的数学表达式为。例如 m t 的时域波形为。m ...