实验报告.docx
《实验报告.docx》由会员分享,可在线阅读,更多相关《实验报告.docx(28页珍藏版)》请在冰豆网上搜索。
实验报告
3级变电阻直流电机启动(demo)源代码分析
前言介绍
3级变电阻直流电机(输出功率5HP)启动demo为在Matlab7电力系统仿真demo例程(文件路径:
安装盘C:
\MATLAB7\toolbox\physmod\powersys\powerdemo\power_dcmotor.mdl)。
启动MATLAB主程序在comand窗口输入demo,弹出help窗口,选择右边simulink选项展开子选项,选择SimPowerSystem,再选择StartingaDCMotor例程。
将文件另存为3级变电阻直流电机启动.mdl副本,通过文本编辑软件(UltraEdit)文件得到文件源代码(见源码.txt)。
学科背景
电动机转速调节系统:
直流电动机转速稳态表达式为:
其中n——转速;
U——电枢电压;
I——电枢电流;
R——电枢回路总电阻;
Φ——励磁磁通;
K——由电机结构决定的电动势常数。
由此电动机转速调节系统分为三种:
1)调节电枢供电电压。
2)减弱励磁磁通。
3)改变电枢回路电阻。
他励直流电机的变电阻启动:
他励直流电机启动时,必须先保证有磁场,而后加电枢电压,当忽略电枢电感是,电枢电流为
刚启动是n=0,Ea=0,电动机的电枢绕组Ra很小,如果直接加额定电压启动,Ia可能陡增到额定电流的十多倍。
这样,电动机的换向情况恶化,产生严重的电火花,而且与电流成正比的转矩将损坏拖动系统的传动机构。
为此,在启动时必须设法限制电枢电流。
因此可以采用减压启动或者变电阻启动的方式。
由相关数学公式推导可得:
启动时的转速变化曲线,电流变化曲线如下:
可见转速的变化也是按照指数规律进行。
——过渡过程开始时转速的起始值
——机械特性上负载转矩(或负载电流)
转速变化曲线如下:
模块分析
整个仿真模块图如下所示:
以上介绍了如何得到整个文件的源代码,mdl格式文件在simulink仿真程序内,对每个模块都进行规范化定义成一个对象,每个对象都有一些属性(Position,SourceBlock等等)和数学仿真库,源代码中只是将这些模块属性具体化。
仿真过程中系统会先读取每个模块的属性值再调用模块库中已经定义好的一些数学仿真方法进行仿真。
现按电流的传输方向对其进行分析:
1)电枢直流电源级
由图可知有一个延时的理想开关,其作用是在延时一段时间再接通电枢电源,因为他励直流电机的启动是必须先保证有励磁磁场。
其延时时间为0.5S。
源码如下:
定时器timer:
在特定的时间产生一个信号改变量
Block{
BlockTypeReference//模块类型标准参考类型
Name"Timer"//名称
Ports[0,1]//端口
Position[85,136,115,154]//图形中的位置四个顶点位置
NamePlacement"alternate"
SourceBlock"powerlib_extras/Control\nBlocks/Timer"//所在元件库的路径
SourceType"Timer"//模块的类型为定时器
ShowPortLabelson//显示端口标签
t"[00.5]"//定时时间点通过修改这个值决定产生改变的时刻
e"[01]"//对应于不同时刻,输出的幅值
}
直流电源:
理想直流电压源
Block{
BlockTypeReference//模块类型标准参考类型
Name"E\n240V"//名称
Description"sourceblock"//描述
Ports[0,0,0,0,0,1,1]//端口
Position[30,180,50,215]//图形中的位置
Orientation"up"//方向向上
AttributesFormatString"\\n"//字符串属性
SourceBlock"powerlib/Electrical\nSources/DCVoltageSource"//模型库路径
SourceType"DCVoltageSource"//模块的类型直流电源
ShowPortLabelson//显示端口标签
Amplitude"240"//幅值
Measurements"None"//没有测量值
}
理想开关:
通过g端给定1,理想开关打开
Block{
BlockTypeReference
Name"IdealSwitch"//理想开关类型
Ports[1,0,0,0,0,1,1]//端口
Position[140,134,185,176]//位置
AttributesFormatString"\\n"
SourceBlock"powerlib/Power\nElectronics/IdealSwitch"//
SourceType"IdealSwitch"
ShowPortLabelson
Ron"1e-4"//接通状态下内部电阻
Lon"10e-6"//接通状态下内部电感
IC"0"
Rs"inf"
Cs"0"
Measurementsoff
}
电阻模块:
为了防止理想开关直接跟直流电机的电感连接而并联的电阻
Block{
BlockTypeReference
Name"10kohm"
Ports[0,0,0,0,0,1,1]
Position[214,205,236,255]
Orientation"down"
NamePlacement"alternate"
AttributesFormatString"\\n"
SourceBlock"powerlib/Elements/SeriesRLCBranch"
SourceType"SeriesRLCBranch"
PhysicalDomain"powersysdomain"//电力系统模块
SubClassName"unknown"
LeftPortType"p1"
RightPortType"p1"
LConnTagsString"__new0"
RConnTagsString"__new0"
Resistance"1e4"//电阻值
Inductance"0"
Capacitance"inf"
Measurements"None"
}
2)3级电阻变换级
此为定义的一个子模块,内部结构如下:
这一级用到的一些模块如下:
(注:
现只对模块的属性进行说明,而电阻值和定时器值的确定后面会做整体分析)
阶跃模块:
提供阶跃信号
Block{
BlockTypeStep//模块类型阶跃信号
Name"2.8s"//名称
Position[65,20,95,50]//位置
Time"2.8"//电平变化时间
SampleTime"0"
ZeroCrossoff//零点穿越
}
Block{
BlockTypeStep//模块类型阶跃信号
Name"4.8s"//名称
Position[240,20,270,50]//位置
Time"4.8"//电平变化时间
SampleTime"0"
ZeroCrossoff
}
Block{
BlockTypeStep
Name"6.8"
Position[405,20,435,50]
Time"6.8"//电平变化时间
SampleTime"0"
ZeroCrossoff
}
断路器:
通过c端信号,控制断路器动作,具有内阻
Block{
BlockTypeReference
Name"Breaker"//名称
Ports[1,0,0,0,0,1,1]//端口
Position[155,26,195,64]//位置
AttributesFormatString"\\n"
SourceBlock"powerlib/Elements/Breaker"//模块库路径
SourceType"Breaker"//模块类型断路器
ShowPortLabelson
BreakerResistance"0.01"
InitialState"0"//初始状态
SnubberResistance"inf"
SnubberCapacitance"0"
SwitchingTimes"[4/605/60]"
Externalon
Measurements"None"
}
Block{
BlockTypeReference
Name"Breaker1"
Ports[1,0,0,0,0,1,1]
Position[315,26,355,64]
AttributesFormatString"\\n"
SourceBlock"powerlib/Elements/Breaker"
SourceType"Breaker"
ShowPortLabelson
BreakerResistance"0.01"
InitialState"0"
SnubberResistance"inf"
SnubberCapacitance"0"
SwitchingTimes"[4/605/60]"
Externalon
Measurements"None"
}
Block{
BlockTypeReference
Name"Breaker2"
Ports[1,0,0,0,0,1,1]
Position[470,26,510,64]
AttributesFormatString"\\n"
SourceBlock"powerlib/Elements/Breaker"
SourceType"Breaker"
ShowPortLabelson
BreakerResistance"0.01"
InitialState"0"
SnubberResistance"inf"
SnubberCapacitance"0"
SwitchingTimes"[4/605/60]"
Externalon
Measurements"None"
}
3个变级电阻:
Block{
BlockTypeReference
Name"3.66ohm"
Ports[0,0,0,0,0,1,1]
Position[145,88,195,122]
AttributesFormatString"\\n"
SourceBlock"powerlib/Elements/SeriesRLCBranch"//模块库
SourceType"SeriesRLCBranch"//模块类型
PhysicalDomain"powersysdomain"
SubClassName"unknown"
LeftPortType"p1"
RightPortType"p1"
LConnTagsString"__new0"
RConnTagsString"__new0"
Resistance"3.66"//电阻值
Inductance"0"
Capacitance"inf"
Measurements"None"
}
Block{
BlockTypeReference
Name"1.64ohm"
Ports[0,0,0,0,0,1,1]
Position[310,88,360,122]
AttributesFormatString"\\n"
SourceBlock"powerlib/Elements/SeriesRLCBranch"
SourceType"SeriesRLCBranch"
PhysicalDomain"powersysdomain"
SubClassName"unknown"
LeftPortType"p1"
RightPortType"p1"
LConnTagsString"__new0"
RConnTagsString"__new0"
Resistance"1.64"
Inductance"0"
Capacitance"inf"
Measurements"None"
}
输入输出端口:
用来连接子模块与模块的接口
Block{
BlockTypePMIOPort//输入输出模块类型
Name"In"//名称
Position[25,98,55,112]//位置
Port"1"//端口
Side"Left"
}
Block{
BlockTypePMIOPort
Name"Out"
Position[605,98,635,112]
Orientation"left"
Port"2"
Side"Right"
}
3)直流电机级
这一级主要是由他励直流电机DC_Motor的构成,其中还包括励磁电源Ef,多路复用器Demux和一个增益转换BL。
其中主要设计他励直流电机的电气特性:
可以在help窗口的Index选项输入DCMachine,找到直流电机的说明文档,如下:
由说明文档可得
几个输入输出端口的信号特征以及几个物理量的数学关系式:
反电动势:
Eo=w*Laf*If
w:
转速弧度制,Laf:
电磁互感系数,If:
励磁电流。
直流电机:
直流电机模型
Block{
BlockTypeReference//参考模块类型
Name"DC_Motor\n5hp;240V;16.2A;1220rpm"//名称
Ports[1,1,0,0,0,2,2]//端口
Position[495,110,585,200]//位置
NamePlacement"alternate"//
AttributesFormatString"\\n"
SourceBlock"powerlib/Machines/DCMachine"//模块库路径
SourceType"DCmachine"//源类型直流电机
ShowPortLabelson
PresetModel"No"
ShowDetailedParameterson
RLa"[0.60.012]"//电枢电阻,电感
RLf"[240120]"//励磁线圈的电阻和电感
Laf"1.8"//励磁线圈互感系数
J"1"//总惯量
Bm"0"//粘滞摩擦系数
Tf"0"//
w0"1"//初始转矩
}
励磁直流电源:
为电机提供励磁电源
Block{
BlockTypeReference
Name"Ef=240V"
Description"sourceblock"
Ports[0,0,0,0,0,1,1]
Position[520,205,555,235]
Orientation"left"
AttributesFormatString"\\n"
SourceBlock"powerlib/Electrical\nSources/DCVoltageSource"//模块库路径
SourceType"DCVoltageSource"//直流电源类型
ShowPortLabelson
Amplitude"240"//电压值
Measurements"None"
}
多路复用器:
分离得到各种信号分量
Block{
BlockTypeDemux//模块类型多路复用器
Name"Demux"
Ports[1,4]
Position[655,91,690,154]
ShowNameoff
}
增益模块:
反映电磁扭矩Te跟TL之间的数量关系
Block{
BlockTypeGain//增益模块类型
Name"BL"
Position[460,21,515,59]
Orientation"left"
NamePlacement"alternate"
Gain"0.2287"//增益比例值
}
4)测量显示级
这一级是对整个仿真系统进行参数的仿真测量,及其状态监控。
其输出窗口分别包含:
转速w—t,电流Ia—t,电磁转矩Te—t,转速w—电流Ia,电枢电动势Va—t
X-YGraph:
显示转速w跟电流Ia的关系
Block{
BlockTypeReference//参考模块类型
Name"w(rad\\s)versusIa(A)"//名称
Ports[2]
Position[765,222,795,253]
BackgroundColor"green"//背景颜色
SourceBlock"simulink/Sinks/XYGraph"//模块库路径
SourceType"XYscope."//模块类型
ShowPortLabelson
xmin"0"//坐标轴范围
xmax"40"
ymin"0"
ymax"140"
st"-1"
}
Va_显示作图:
显示电枢电压随时间变化曲线
Block{
BlockTypeScope//模块类型
Name"Va_"//名称
Ports[1]
Position[470,247,490,273]//位置
BackgroundColor"green"//背景颜色
Location[659,517,887,719]
Openoff
NumInputPorts"1"
TickLabels"on"
ZoomMode"xonly"
List{
ListTypeAxesTitles
axes1"%"//用信号标签做
}
TimeRange"10"
YMin"0"//坐标图Y轴最小值
YMax"300"//坐标图Y轴最大值
SaveToWorkspaceon
SaveName"U_DC_mot"
DataFormat"Array"//数据格式阵列
LimitDataPointsoff//不限制数据数
MaxDataPoints"500000"//最大作图点数
}
W显示作图:
显示转速和时间的关系
Block{
BlockTypeScope
Name"w"
Ports[1]
Position[800,88,820,112]
BackgroundColor"green"
Location[37,529,263,733]
Openon
NumInputPorts"1"
TickLabels"on"
List{
ListTypeAxesTitles
axes1"%"
}
TimeRange"10"
YMin"0"
YMax"150"
SaveToWorkspaceon
SaveName"w"
DataFormat"Array"
LimitDataPointsoff
MaxDataPoints"500000"
}
Ia监视器:
显示Ia随时间变化的曲线
Block{
BlockTypeScope
Name"Ia"
Ports[1]
Position[765,103,785,127]
BackgroundColor"green"
Location[277,529,503,735]
Openon
NumInputPorts"1"
TickLabels"on"
ZoomMode"xonly"
List{
ListTypeAxesTitles
axes1"%"
}
TimeRange"10"
YMin"0"
YMax"40"
SaveToWorkspaceon
SaveName"Ia"
DataFormat"Array"
LimitDataPointsoff
MaxDataPoints"500000"
}
Te监视器:
显示Te随时间变化的曲线
Block{
BlockTypeScope
Name"Te"
Ports[1]
Position[790,132,810,158]
BackgroundColor"green"
Location[516,528,742,735]
Openon
NumInputPorts"1"
TickLabels"on"
ZoomMode"xonly"
List{
ListTypeAxesTitles
axes1"%"
}
TimeRange"10"
YMin"0"
YMax"100"
SaveToWorkspaceon
SaveName"Tm"
DataFormat"Array"
LimitDataPointsoff
MaxDataPoints"500000"
}
Block{
BlockTypeTerminator
Name"Terminator"
Position[710,123,725,137]
ShowNameoff