【文档】simpowersystem学习心得
本帖最后由 cowry 于 2008-12-31 15:20 编辑本人学习了matlab\simulink,对电力系统模块进行了研究学习,偶有心得,发表出来,仅供学友参考,避免学习弯路,如对你有帮助就好了
Simpowersystem学习心得
对于我们电气专业的仿真而言,我们主要用到的可能是Simulink工具箱,SimPowerSystem工具箱。当然也有可能涉及到SimExtra工具箱。但主要是实用前两者来进行电力系统,电力电子和电机等方面的仿真。因此在进行这些仿真的时候,有一些基本的原则:
1):注意不要混用非电气库的线和电气库线。这个原则在Matlab6.5中尤要注意,否则一些电压测量模块,电流测量模块可能会出错。显示数据类型不匹配Data type mismatch错误。在Matlab7.0以上的版本中,simlink做了这方面的区分,不同连接线是无法连接在一起的。
2):SimPowerSystem工具箱和Simulink工具箱不是随便可以相连的。SimPowerSystem工具箱中有些模块是不能直接连接Simulink信号的。例如电机模型中,电压输入是需要电压源模块的(Power systems Blockset模块),而转矩可以输入simulink信号。如果实在想给电压端口输入simulink信号,需要给其先加一个受控电压源,用simulink信号控制受控信号。还有比如受控电流源模块等,都可以实现SimPowerSystem工具箱与Simulink工具箱的连接。
3):注意选择适当的仿真算法。Matlab/Simulink中提供了一系列的仿真算法,比如discrete, ode algorithm(龙格库塔算法) including ode45, ode23, ode11s等等。一个适当算法的选择,可以有效的缩短仿真时间和提供仿真的精度。当然具体的算法选择,可以参照相关的书籍讲解。
4):参数的正确设置是确保模型仿真正确的前提和必要条件。参数的不匹配可能完全导致一些错误的仿真结果。举个简单的例子:我们要得到电阻元件,可以使用SimPowerSystem工具箱中Series RLC Branch模块或者Parallel RLC Branch模块,对于前者,我们必须设置电感为0,电容为inf, 后者,要求设置为电感为inf, 电容为0。所以正确的参数设置是仿真的重要前提。
问: Matlab仿真中怎样编辑Scope中的图象???
答: 实现的方法有以下的几种:
1)PrintScreen,然后粘贴到Windows位图编辑器,选择图像点击右键,选择“反色”即可;
2)在Scope中,它的参数设置的第二页,有一个Save Data to Workplace,将它选中,然后在下面的方框中指定变量名,然后用plot命令画出;
3)直接在模型上再加一个,to Workplace模块,也用plot画出;
4)直接在模型上加一个,outport模块,用plot命令绘制tout和yout;
5) 等scope显示出来图像以后,在matlab上运行
set(0,'ShowHiddenHandles','On')
set(gcf,'menubar','figure')
这时候你会发现scope的工具栏的上面多了一行,与plot命令得到的figure的工具栏是一样的。点击insert-axes,鼠标会变成十字形状,然后再图像的任意一处双击左键出现一个对话框PropertyEditor,选中style在窗口的右便会出现color,这时你就可以任意修改背景颜色了。
注:参照了自己以前在理工科学板块发的帖子:http://www.cqumzh.cn/topic_show.php?tid=166164
问: 怎样进行S-function的编程和使用???
答: S-function也就是System-function的缩写。说得简单,S-function就是用MATLAB所提供的模型不能完全满足用户,而提供给用户自己编写程序来满足自己要求模型的接口。要了解 S-function,必须了解以下知识:
(1)direct feedthrough
(2)dynamically sized inputs
(3)setting sample times and offsets
一.Direct feedthrough
direct feedthrough意思是说系统的输出或可变采样时间是否受到输入的控制。大家清楚有的系统是受到输入控制如:
y=k*u (u是输入,k是放大因子,y是输出)
而有的系统输出是不受到输入影响,如:
输出:y=x
dx=u ,x表示状态
二.Dynamically sized inputs
主要是给出:输入连续状态数目(size.NumContStates),离散状态数目(size.NumDiscStates)
,输出数目(size.NumOutputs),输入数目(size.NumInputs),Direct Feedthrough(size.Dir Feedthrough)。
三.Setting sample times and offsets
Setting smaple times and offsets主要设置采样时间
具体的编程格式参照matlab提供的demos文件。
注:参照了自己以前在理工科学板块发的帖子:http://www.cqumzh.cn/topic_show.php?tid=166164
问: 怎样进行S-function的编程和使用???
答: S-function也就是System-function的缩写。说得简单,S-function就是用MATLAB所提供的模型不能完全满足用户,而提供给用户自己编写程序来满足自己要求模型的接口。要了解 S-function,必须了解以下知识:
(1)direct feedthrough
(2)dynamically sized inputs
(3)setting sample times and offsets
一.Direct feedthrough
direct feedthrough意思是说系统的输出或可变采样时间是否受到输入的控制。大家清楚有的系统是受到输入控制如:
y=k*u (u是输入,k是放大因子,y是输出)
而有的系统输出是不受到输入影响,如:
输出:y=x
dx=u ,x表示状态
二.Dynamically sized inputs
主要是给出:输入连续状态数目(size.NumContStates),离散状态数目(size.NumDiscStates)
,输出数目(size.NumOutputs),输入数目(size.NumInputs),Direct Feedthrough(size.Dir Feedthrough)。
三.Setting sample times and offsets
Setting smaple times and offsets主要设置采样时间
具体的编程格式参照matlab提供的demos文件。
注:参照了自己以前在理工科学板块发的帖子:http://www.cqumzh.cn/topic_show.php?tid=166164
问:如何循环调用Simlink模型并保存结果?在仿真时,经常需要修改 simulink 模型参数并保存仿真结果.
答:最普通的办法是多次运行simulink模型, 手工修改仿真参数,这样会浪费大量的精力和时间。实际上可以用M文件进行循环调用。比如:调用simulink模块ModelName.mdl,N次, 并把每次仿真的结果Simout写在不同的矩阵result1~resultN中. 可以使用以下的代码:
clear;
for k=1:N% loop
simk = k; %used to indicate the simulated sequence;
sim ModelName; % run the ModelName.mdl in the command workspace;
assignin('base',strcat('Result',num2str(k)),Simout); %save the simulated results.
end
问:Simulink中的信号输入输出的方法
答:方法如下:
1.从工作空间中输入数据
matlab--+>simulink--+>sources--+>from workspace (simin)
2.从外部输入数据文件
matlab--+>simulink--+>sources--+>from file (untilted.mat),说明:untilted.mat是matlab数据格式,你可将输入文件存到 .txt文件,然后到如到工作空间,最后使用save保存这个工作空间的数据变量. 当然.mat文件中必须包含时间数据,否则仿真会出错。
3.从simulink子系统中互相导入数据
matlab--+>simulink--+>sources--+>In1
4.将数据导出到工作空间
matlab--+>simulink--+>sinks--+>to workspace(simout)
5.将数据导出到文件
matlab--+>simulink--+>sinks--+>to file (untilted.mat)
6.将数据导出到simulink子系统
matlab--+>simulink--+>sinks--+>out1
注:该部分参考了www.bbs.matwav.com上的资料
页:
[1]