s函数及其在风速与风力机仿真中的应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

s函数理论及其在风速与风力机仿真中的应用摘要s函数是system-function的简称,它采用非图形化的方式描述一个功能块。S函数可以用很多高级语言实现,可以利用matlab的M文件实现s函数。由于s函数适用于用数学方程描述的系统,所以,风速以及风力机的仿真可以用s函数实现,根据它们的数学方程,可以编写出相应的s函数,实现其功能。关键字s函数仿真风速风力机Abstracts-functionistheabbriviationofsystem-function,itdescripesamodueinanon-graphicalway.s-functioncanbeimplementedinmanyhighlevellanguage,itcanbeimplementedbytheMfileofmatlab.Thesimulationofwindspeedandwindmillcanbeimplementedbys-functionfors-functionisappliedtothesystemswhicharedescripedbynumericalequations,wecanconpilerelevants-functiontoimplementthefeaturesbasedontheirnumericalequations.Keywordss-functionsimulationwindspeedwindwill引言在很多情况下,Simulink现有的模块已经不能满足用户的需要,这时可以自己编写相应的代码来完成对模块功能的需求。S函数则提供了一个代码和Simulink模块之间的接口,用来实现对模块的编程。s函数在风速与风力机仿真中的应用,可以很好地简便地对数学方程描述的系统进行仿真,并可以进行灵活的参数设置。1s函数理论1.1s函数简介s函数是system-function的简称,它采用非图形化的方式描述一个功能块。s函数由一种特定的语法构成,用来描述并实现连续系统、离散系统以及复合系统等动态系统。s函数能够接收来自simulink解算器的相关内容并对解算器发出的命令做出适当的响应。s函数可以采用matlab、C、C++、Fortran等语言编写。1.2s函数应用场合在使用simulink时,如果需要开发一个新的通用模块作为一个独立的功能单元时,使用s函数是一种简便的方法,由于s函数可以使用多种高级语言编写,所以可以很好地实现代码移植,在s函数中使用文本方式输入公式,很适合复杂动态系统的数学描述,在仿真过程中,可以对仿真进行更精确的控制。S函数一般应用于:向simulink增加一些新的通用块;增加作为硬件驱动程序的块;由已存在的C程序代码构成s函数模块;使用一组数学方程对系统进行描述;构建用于图形动画表现的s函数模块。1.3s函数工作机理在simulink中进行仿真时,模型需要分两个阶段进行仿真,它们是初始化阶段和仿真阶段。S函数的工作机理如图所示。在仿真过程当中,Simulink会调用相应的仿真例程来完成相应的功能。首先,在初始化阶段,Simulink将对整个系统模块的参数进行初始化,检查各个模块的数据长度和类型,制订仿真模块的执行顺序,设置相应的仿真时间间隔以及内存的分配等等;接下来,在仿真循环阶段,按照初始化制订的仿真顺序依次执行每一个模块。对于离散状态,会更新当前时刻的离散状态并进行输出,而对于连续时间则处理起来相对复杂,它会计算两次输出,这两次输出会在求解器当中进行一致性检查,当超过求解器设置的容限时,求解器会以一个更小的步长进行计算输出,而且在连续时间状态情况下存在一个过零检测的问题,即在仿真循环当中如果检测到过零点,simulink系统会自动在此过零点周围进行插值。图S函数仿真流程1.4s函数的编写s函数可以用很多高级语言实现,本文着重分析利用M文件实现s函数。在matlab路径下有matlab提供的s函数模版,可以通过修改模版来进行编程实现。M文件对应的模版名称为sfuntmpl.m。S函数有四个默认输入参数t、x、u、flag,t表示当前的仿真时间,x表示状态向量,u表示输入向量,flag是函数调用标志。S函数还包括四个返回参数,它们是sys、x0、str、ts,其中sys是一个通用返回参数,它的取值取决于flag的值,x0为状态向量的初始值,ts为一个向量,它表示采样周期以及偏移量,str为保留参数。s函数的实现主要涉及到6个回调函数它们分别是mdlInitialization()、mdlGetTimeofNextVarHit()、mdlOutput()、mdlUpdate()、mdlDrivatives()、mdlTeminate(),通过对这六个函数的调用就可以实现s函数的相关功能。1.mdlInitialization()为初始化函数,在这个函数中定义了s函数模块的基本特性,包括采样时间、连续或者离散状态的初始条件以及sizes数组。Sizes数组是s函数信息的载体,它的设置包括连续、离散变量的个数,输入、输出变量的个数,布尔变量直接贯通的取值以及采样时间的个数2.mdlGetTimeofNextVarHit()函数用来计算下一个采样点的绝对时间,它是针对离散系统的,对于连续系统,它的返回值为空。该函数主要用于变步长的设置。模型初始化计算下一个采样步长计算输出更新离散状态计算导数计算输出计算导数过零检测仿真循环3.mdlOutput()函数用来计算s函数的输出,也就是在仿真结束时,s函数模块最终的输出结果。4.mdlUpdate()函数用来更新离散状态,计算离散状态的输出。5.mdlDrivatives()计算导数,即计算连续状态的微分。6.mdlTeminate()表示仿真结束。每个函数的调用与flag取值的对应关系如表1所示。表1回调函数与flag对应关系表simulink在每个仿真阶段都会对s函数进行调用,在调用时simulink会根据所处的仿真阶段为flag传入不同的值,并且为返回参数sys指定不同的角色,这种变化由simulink自动完成。2s函数在风速与风力机仿真中的应用2.1风速与风力机的数学模型2.1.1风速的数学模型风是自然界的产物,人们目前还无法对其进行有效的控制,但是风速的变化和分布也是有一定的规律可循的。简言之,风速可分解为缓慢变化的分量和快速变化的分量。目前,在研究风速模型时,为了相对准确的描述风速的特性,一般将风速分解成四种分量,它们是:基本风、阵风、渐变风、随机风。其中基本风为缓慢变化的分量,阵风、渐变风、随机风是快速变化的分量。1.基本风基本风是主要影响风力发电机向系统传送的额定功率风速类型,它是风场在一定时间内的平均风速。服从weibull分布。1=akv基(1+)其中a、k分别为weibull分布的尺度参数和形状参数,为伽马函数。由于基本风随时间变化较慢,所以在仿真中一般设为常数。2.阵风阵风用来描述突然变化的风速,具有余弦特性。1gmaxg0t-=-cos20TGvT阵(1(2))其中maxG为阵风的峰值,仿真中设为定值,gT为阵风周期,t为时间,1gT为阵风开始时间。3.渐变风渐变风用来描述逐渐变化的风速。1rmax2r1rmax0t-=-TvRTTR渐()其中maxR为渐变风最大值,仿真时取一定值,1rT为渐变风开始时间,2rT为渐变风结束时间,rT为渐变风保持时间。4.随机风随机风是一种背景噪声,仿真时利用噪声来模拟。2.1.2风力机的数学模型风力机是吸收风能并将其转换成机械能的部件风以一定的速度和攻角作用在桨叶上,使桨叶产生旋转,从而风能转变成机械能,进而驱动发电机。风力机吸收风能后其输出功率232wpprvC,为空气密度,一般为31.25/kgm;s为风力机风轮扫掠面积。风力机输出转矩。310.00318.4()0.022.141310.0030.73(151()0.580.00213.2)0.021pCepC为风能利用系数,根据贝兹极限理论,其理论最大值为0.593;为叶尖速比即叶片尖端的线速率与风速之比,wrv,w为风轮转动角速度,r为风轮半径;为浆距角。2.2风速与风力机模型的s函数实现1r2rrtTTT<或t>1r2rTT<t<2r2rrTtTT<<1gtT<1ggTTt>1g1ggTtTT<<2.2.1风速模型的s函数实现由于s函数适用于用数学方程描述的系统,所以,风速的仿真模型可以用s函数实现,根据它们的数学方程,可以编写出相应的s函数,实现其功能。由2.1的分析可以看出,风速模型属于连续系统。其中基本风和随机风直接用固定值和白噪声来进行仿真,阵风和渐变风利用s函数分别进行仿真,从它们的数学表达式可以看出,阵风和渐变风都是单输入、单输出系统,输入变量为时间,因为风速是随时间变化的。输出即风速。系统中连续状态变量和离散状态变量的个数均为零。由于输入直接控制输出,系统存在直接贯通。阵风和渐变风的算法实现在mdlOutput()函数中进行,这是比较容易实现的,对于分段函数,通过matlab的条件语句即可完成输入情况判定。风速的仿真模型如图所示。图风速仿真模型模型中参数设定情况为:基本风为3m/s;仿真时间为10s;阵风的开始时间为2s,持续5s,最大值为3m/s;渐变风在4s开始,8秒结束,峰值为4m/s;仿真波形如图所示。图风速随时间变化波形2.2.2风力机模型的s函数实现和风速模型一样,风力机模型也是数学方程描述的系统。它也存在直接贯通。但是和风速模型的不同之处在于其是两输入、两输出系统。风力机的输入为风速以及风轮旋转的角速度,输出为风力机的输出功率以及输出转矩。而s函数只有一个输入接口与一个输出接口,但s函数可以完成多输入以及多输出的功能,在M文件编码时,将输入以及输出设置为多个即可,最后用mux以及demux来接收外部输入和向外输出。风力机的仿真模型如图所示图风力机仿真模型风轮旋转角速度决定于风力发电机的转速,这个速度是根据控制要求进行变化的,在单独进行风力机的仿真时,这个值不能根据控制要求进行实时的变化,本文设为一个固定值,便于观察风力机输出功率和输出转矩随时间的变化。仿真参数设置为:风轮半径r为2m。旋转角速度为20rad/s,浆距角为0。风力机的输出功率随时间的变化波形如图所示。图风力机输出功率随时间变化波形从图中可以看出,由于风轮的旋转角速度是个固定值,所以在变化的风速下,其输出功率是很不稳定的,甚至在低风速时吸收功率,这就需要对发电机的转速进行控制,以实现输出功率的平稳及最大功率追踪,本文不进行讨论。同时由于转速的固定,风力机的输出转矩随时间的变化波形与输出功率是相同的,仅仅是幅值的差别。3结语本文首先对s函数的理论进行分析,介绍了s函数的应用场合以及运行机理,然后对如何使用M文件进行s函数进行编写进行了说明,主要涉及到六个回调函数的说明和使用。论文的第二个关键部分是阐述s函数在风速与风力机模型仿真时的应用,通过风速和风力机的数学方程可以分析得到s函数模块的输入输出以及算法实现方法。最后得到仿真波形。S函数应用于风速与风力机模型的仿真,可以简化仿真过程,参数的设置也变得灵活。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功