当前位置: 程力文秘网 > 范文大全 > 公文范文 >

三相同步发电机运行仿真与GUI设计

| 来源:网友投稿

三相同步发电机运行仿真与GUI设计 摘要 同步发电机广泛应用于诸多领域。随着科技进步,自动化程度在不断地提高,因此同步发电机也需要不断改进来适应日益提高的自动化程度的需求,而同步发电机是电力系统中最重要和最复杂的元件,它的突然短路的暂态过程所产生的冲击电流可能达到额定电流的十几倍,这种情况下对电机本身和相关电气设备都可能带来严重影响,所以从技术和安全上考虑直接进行试验可能性很小。因此,对同步发电机运行进行仿真具有很大的必要性。

本设计是借助MATLAB的强大实验仿真功能和GUI设计功能,通过编写同步发电机某些故障状态下的M文件进行仿真实验得到仿真结果,并通过GUIDE来创建并进行设计仿真系统的登录界面以及仿真实验的主界面,从而更好地实现实验时的人机交互,清晰显示了个故障状态下的仿真波形,有利于大家掌握同步发电机故障状态下的各个性能指标。

关键字:同步发电机;
运行仿真 ;
MATLAB ;
M文件;
图形用户界面 Three-phase Synchronous Generator Running Simulation and GUI Design ABSTRACT Synchronous generators are widely used in many fields.As the science and technology advancing,the level of automation is gradually improved,synchronous generators also need to be meliorated to adapt to the demand of constantly improvement of automation level.But synchronous generators are the most important and complex elements in the Power Systems.Their impulse current may reach more than ten times of the rated current when they suddenly short-circuited,which may bring serious impact to the machine themselves and the related electric equipments.Considering from the technical and safety ,it unlikely to do this kind of test directly .Therefore,it is quite essential to simulate of the running synchronous generators. This design is by means of the powerful simulation functions and GUI design tools of MATLAB, by analysing some kinds of trouble states of a synchronous generator to get appropriate M-file to simulate to get simulation results,and through GUIDE to create and design simulation system login interface and simulation experiment host interface.Thus, we can easier to achieve the human-computer interaction during the experiments.According to be showed with each trouble state simulation waveform, we can pay less efforts to master the synchronous generators fault conditions of each performance indicators. Keyword: Synchronous Generator;Running Simulation;MATLAB;M-file ;GUI 目录 第一章 绪论 …………………………………………………..…………………1 1.1选题的依据及意义……………………………………………………............1 1.2同步发电机的研究现状和发展趋势................................................................2 1.3 本课题的主要工作…………………………………………………...………2 1.3.1掌握同步发电机工作原理和工作特性…………………………...………..2 1.3.2 使用MATLAB设计一个系统登录界面…………………...……………...2 1.3.3编写同步发电机各运行状态M文件,并完成GUI的设计 …………..…3 第二章 同步发电机基本理论…………………………………………..………..4 2.1同步发电机的类型和结构…………………………………………..………..4 2.2 同步发电机的电枢反应……………………………………...………………5 2.3同步发电机的运行特性....................................................................................5 2.3.1 同步发电机的空载特性……………………………………………………5 2.3.2 同步发电机的短路特性……………………………………………………6 2.3.3 同步发电机的外特性………………………………………………………6 2.3.4 同步发电机的调整特性 …………………………………..……………..7 2.4 同步发电机空载时三相突然短路的分析……………………...……………7 第三章 三相同步发电机的MATLAB仿真………………….………………...10 3.1 MATLAB简介…………………………………………………..………… ..10 3.2 GUI概述及设计要求…………………………………………………….….11 3.2.1 GUI概述.......................................................................................................11 3.2.2 GUI设计要求……………………………………….……………………..12 3.2.3 GUI设计的一般步骤 ……………………………..……………………..12 3.3 同步发电机的数学模型…………………………………...………………..12 3.3.1 同步发电机的原始方程 ……………………..…………………………12 3.3.2 派克变换和d、q、0坐标系统 ..............................................................13 3.3.3用d、q、0坐标系统表示的同步发电机方程式………………...………….15 第四章 仿真系统设计思路…………………………..…………………………18 4.1 同步发电机各状态下M文件编写思路........................................................18 4.2 仿真界面设计思路…………………………………...……………………..21 4.2.1 仿真主界面各组件的选择和布局………………………………………..21 4.2.2 仿真主界面与各项目子界面的的连接......................................................21 4.2.3 子界面的控件选择和布局..........................................................................22 4.3 仿真系统登录界面设计思路……………………………...………………..22 第五章 仿真结果分析…………………………………..………………………24 5.1登录界面 ………………………………………..…………………………..24 5.2 仿真系统主界面………………………………...…………………………..24 5.3 功角特性仿真结果及分析 ………………………..………………………25 5.4 同步发电机空载建立电压仿真结果及分析……………………...………..26 5.5同步发电机突然单相短路仿真结果…………………………..……………26 5.5.1 同步发电机突然单相短路有阻尼仿真结果……………………………..26 5.5.2同步发电机突然单相短路无阻尼仿真结果 ............................................27 5.5.3 同步发电机突然单相短路仿真结果分析..................................................27 5.6同步发电机三相突然短路仿真结果..............................................................27 5.6.1同步发电机三相突然短路有阻尼仿真结果 ………………..…………..27 5.6.2同步发电机三相突然短路无阻尼仿真结果.............................................. 27 5.6.3同步发电机三相突然短路仿真结果分析……………………...…………28 5.7 同步发电机突然两相空载短路仿真结果 …………………......…………28 5.7.1 同步发电机突然两相空载短路有阻尼仿真结果......................................28 5.7.2 同步发电机突然两相空载短路无阻尼仿真结果......................................28 5.7.3同步发电机突然两相空载短路仿真结果分析...........................................28 5.8 转子绕子短路,定子突加对称电压仿真结果………………………..……29 5.8.1转子绕子短路,定子突加对称电压有阻尼情况下仿真结果………….....29 5.8.2转子绕子短路,定子突加对称电压无阻尼情况下仿真结果.....................29 5.8.3转子绕子短路,定子突加对称电压仿真结果分析 ................................29 第六章 结论........................................................................................................30 6.1 主要工作回顾…………………………………………………...…………..30 6.2待改进的地方……………………………………………………….…….. ..30 致谢……………………………………………………………………………....31 参考文献………………………………………………………………..………..32 附录A 英文翻译原文……………………………………………..………...….33 附录B 英文翻译译文…………………………………………………………..42 附录C登录界面程序源代码…………………………………….…………….. 49 附录D 仿真主界面程序源代码…………………………………………… ….52 附录E各子界面及同步发电机各状态微分方程源程序……............................54 第一章 绪论 1.1选题的依据及意义 电能是现代社会最主要的能源之一。发电机是将其他形式的能源转换成电能的机械设备。在公元1831年英国法拉第将一个封闭电路中的导线通过电磁场,导线转动有电流流过电线,从而发现了电磁感应原理。他建造了第一座发电机原型,其中包括了在磁场中迥转的铜盘,此发电机产生了电力。就在法拉第发现电磁感应原理的第二年,受法拉第发现的启示,法国人皮克希应用电磁感应原理制成了最初的发电机。皮克希的发电机是在靠近可以旋转的U 形磁铁(通过手轮和齿轮使其旋转)的地方,用两根铁芯绕上导线线圈,使其分别对准磁铁的N 极和S 极,并将线圈导线引出。这样,摇动手轮使磁铁旋转时,由于磁力线发生了变化,结果在线圈导线中就产生了电流。1967年,德国发明家韦纳·冯·西门子对发电机提出了重大改进。他认为,在发电机上不用磁铁(即永久磁铁),而用电磁铁,这样可使磁力增强,产生强大的电流,从而做出了第一台具有实用价值的发电机,它由水轮机、汽轮机、柴油机或其他动力机械驱动,将水流,气流,燃料燃烧或原子核裂变产生的能量转化为机械能传给发电机,再由发电机转换为电能。

电能是我们现代人类赖以生存的资源。我国的电网是建立在高压的基础上,并不断推行智能电网的发展。发电机并网要求满足准同期条件,并网要求准确、快速。准确可以保障安全和减少并网对发电机引起的冲击,而快速则能够减小发电机的空载损耗。因此,随着电网自动化水平的不断提高,发电机也需要不断改进来适应自动化水平的发展需求。发电机的种类有很多,分为直流发电机和交流发电机两大类,后者又可分为同步发电机和异步发电机两种。现代发电站中最常用的是同步发电机。这种发电机的特点是由直流电流励磁,既能提供有功功率,也能提供无功功率,可满足各种负载的需要。异步发电机由于没有独立的励磁绕组,其结构简单,操作方便,但是不能向负载提供无功功率,而且还需要从所接电网中汲取滞后的磁化电流。因此异步发电机运行时必须与其他同步电机并联,或者并接相当数量的电容器。这限制了异步发电机的应用范围,只能较多地应用于小型自动化水电站。城市电车、电解、电化学等行业所用的直流电源,在20世纪50年代以前多采用直流发电机。但是直流发电机有换向器,结构复杂,制造费时,价格较贵,且易出故障,维护困难,效率也不如交流发电机。故大功率可控整流器问世以来,有利用交流电源经半导体整流获得直流电以取代直流发电机的趋势。

同步发电机按所用原动机的不同分为汽轮发电机、水轮发电机和柴油发电机 3种。它们结构上的共同点是除了小型电机有用永久磁铁产生磁场以外,一般的磁场都是由通直流电的励磁线圈产生,而且励磁线圈放在转子上,电枢绕组放在定子上。因为励磁线圈的电压较低,功率较小,又只有两个出线头,容易通过滑环引出;
而电枢绕组电压较高,功率又大,多用三相绕组,有3个或4个引出头,放在定子上比较方便。发电机的电枢(定子)铁心用硅钢片叠成,以减少铁耗。转子铁心由于通过的磁通不变,可以用整体的钢块制成。在大型电机中,由于转子承受着强大的离心力,制造转子的材料必须选用优质钢材。同步发电机是电力系统中最重要和最复杂的元件,它的突然短路的暂态过程所产生的冲击电流可能达到额定电流的十几倍,这种情况下对电机本身和相关电气设备都可能带来严重影响,所以从技术和安全上考虑直接进行试验可能性很小。为了使在同步发电机发生故障是能准确、迅速的排除故障,恢复电机及其他相关设备的正常运行,最大限度地减少故障产生的危害,操纵人员必须掌握同步发电机故障状态下的各个性能指标。因此,对同步发电机运行进行仿真具有很大的必要性。一个界面友好的GUI,可以使用户更好的掌握所陈列的知识内容。所以,对于整个仿真系统而言,设计一个好的GUI与编写正确的可执行的故障状态程序同等重要。

1.2同步发电机的研究现状和发展趋势 电网使用的是交流电,因此发电厂一般都采用交流发电机。电网中的负荷大部分都是感性负载,所以必须由发电机提供无功功率,假如发电机为异步发电机,则其在并网后必然大量吸收无功功率,造成系统电压降低,电网无功缺额过大,无法维持合格的电压,而同步发电机既可以输出有功功率,也可以发出无功功率,因此同步发电机是一种常用的发电机。

我国小型同步发电机的第一代产品是1956年电工局在上海组织的统一设计并于1957年完成。第二代产品是在进行了大量实验研究和调查研究的基础上于1965年开始的T2系列小型三相同步发电机统一设计,该水平达到六十年代国际先进水平。1979年开始进行TFW系列三相无刷同步发电机和TFDW系列单相无刷同步发电机的统一设计,1982年10月通过了样机鉴定工作,并推广生产,此两系列主要性能指标达到或接近当时的国际先进水平。

随着电机行业的不断发展,电机产品的外压和内涵也不断拓展,并且电机的通用性逐渐向专业性方向发展,打破了过去同一类电机分别用于不同性质、场合的局面。电机正向专业性、特殊性、个性化方向发展。目前,随着现代化工业生产规模的逐渐增大,与之配套的生产设备也向着大型化、高速运转的方向发展,因而高电压等级、高功率、大容量、高性能电机发展方向是最重要的方向之一,这促使电机生产企业纷纷向高压电机行业靠拢,以提高企业、行业的竞争力。由于同步发电机具有别的电机无法比拟的优点,目前世界各国均在研究、生产和应用。不管是从高速发展的电力工业以适应国民经济飞跃发展的需要还是从提高发电机的效率降低运行成本着眼,都要求增大发电机的容量。为了降低电枢电流,还使用一些电气配套设备易于制造,或省去发电机的升压设备,这就要把同步发电机的额定电压提高到20KV以上,因此相应研究也在展开。

世界能源需求的不断攀升和自然资源的日益枯竭,对能源供应商、工业企业及消费者都提出了新的挑战,尽可能以高效和可持续的方式使用能源成为了当务之急。风能是非常重要并储量巨大的能源,它安全、清洁、充裕,能提供源源不绝,稳定的能源。目前,利用风力发电已成为风能利用的主要形式,受到世界各国的高度重视,而且发展速度最快。用同步发电机发电是目前较普遍的发电方式之一,特别是变频器的广泛使用,解决了风力机转速和电网频率之间的耦合问题。通过对变频器电流的控制,就可以控制发电机的转矩,从而控制风力机转速稳定,使之在最佳状态运行。相同条件下,同步电机比异步电机调速范围要更宽一些,运行要更可靠一些。但同步发电机也有不足之处,比如说它的永磁材料价格偏高,变流器为全功率变流技术,容量大、体积大、价格高、系统成本高。国内变流器技术处于研究试验和小批量应用阶段,技术要成熟还有待不断提高。今后,这两种技术在国内会并存发展,之后同步电机会成为主流,因为它代表了风电产业未来的发展方向。

三相同步发电机行业的技术发展展望:
(1) 全密封低噪声和地振动的精密轴承; (2) 先进的导磁材料(如以冷代热)。

1.3 本课题的主要工作 1.3.1掌握同步发电机工作原理和工作特性 分析同步发电机的工作原理,了解同步发电机的空载特性、短路特性、外特性以及调整特性。并分析同步发电机在不正常状态下的影响,罗列相应的数学模型。

1.3.2 使用MATLAB设计一个系统登录界面 系统登录界面需要输入用户名以及密码,通过验证正确才可以进入仿真系统。密码输入必须不可见,及使用“*”覆盖。

1.3.3编写同步发电机各运行状态M文件,并完成GUI的设计 通过分析同步发电机运行状态的数学模型,编写相应的M文件。开辟一个GUI,罗列各运行状态的类型供用户选择,当点击选择相应的实验类型时,能够进入仿真界面并运行。

第二章 同步发电机基本理论 2.1同步发电机的类型和结构 同步发电机的分类有各种方法,按结构特点来分,有凸极式的和隐极式的;
立式的和卧式的。按通风方式分,有开启式、防护式、封闭式(循环通风)的。按冷却方式来分,有空气冷却、氢气冷却、水冷却和混合冷却方式。按原动机来分,有汽轮发电机、水轮发电机和其他原动机带动的发电机(如柴油发电机)。

图2-1 同步发电机示意图 同步发电机由定子部分和转子部分组成,具体为 (1)
定子(静止部分)
同步发电机定子与异步电机类似,更加强通风冷却效果。导磁的定子铁心是由冲槽叠 片叠成,以减少定子铁心的铁损耗。定子铁心沿轴向长度上,每隔 3-6cm,留有通风沟,增加定子铁心的散热面积。在叠装时,把每层的接缝错开,以减少铁心的涡流损耗。定子铁心内圆开有槽,槽中放入三相对称绕组,定子铁心固定在机座上。定子绕组是由许多线圈联结而成,每个线圈又是由多股铜线绕制而成(水内冷电机用空心导线),绕制多股线时,为了减少集肤效应引起的附加损耗,在这些股线之间需要进行换位。换位一般在线圈的直线部分进行,定子绕组像异步电机一样,按60°相带A、B、C三相空间对称分布。放在定子槽的导体是靠槽楔来压紧固定,其端部用支架固定。机座构成通风路径,机座的作用是为了固定定子铁心,因此要求它应有足够的机械强度和刚度,以承受加工、运输以及运行过程中的各种的作用力,一般汽轮发电机的机座是由钢板拼焊而成。

同步发电机的定子输出电功率,并产生旋转磁场。

(2)
转子 转子分为凸极式的和隐极式的,凸极式的特点是有明显磁极,气隙不均匀,一般对数大于1,即用于低速发电机。隐极式的特点是转子相直流电机的旋转电枢,转子槽型都做成开口槽 ,槽中放入励磁绕组,有时也在槽底或侧面开有通风沟,励磁绕组的固定是一个很重要的问题,在槽里的导体用槽楔来压紧;
端部的导体用护环来固定,励磁绕组通过在转子上的集电环与电刷装置才能与外面的的直流电源构成回路。隐极式的转子从外形来看,没有明显的凸出的磁极,它的气隙较均匀,一般极对数等于1,一般应用于高速电机。

2.2 同步发电机的电枢反应 电枢磁动势的基波在气隙中使得气隙磁通的大小及位置均发生变化这种影响称为电枢反应。

当发电机接上对称负载后,电枢绕组中的三相电流会产生另一个旋转磁场,称电枢反应磁场。其转速正好与转子的转速相等,两者同步旋转。电枢反应磁场与转子励磁磁场均可近似地认为都按正弦规律分布。它们之间的空间相位差取决于空载电动势E0与电枢电流I之间的时间相位差。电枢反应磁场还与负载情况有关。当发电机的负载为电感性时,电枢反应磁场起去磁作用,会导致发电机的电压降低;
当负载呈电容性时,电枢反应磁场起助磁作用,会使发电机的输出电压升高。

2.3同步发电机的运行特性 2.3.1 同步发电机的空载特性 当同步发电机被原动机拖动到同步转速,在同步发电机的励磁绕组里通入励磁电流,就会在气隙里产生磁通。电枢绕组切割气隙磁通,产生对称的三相电动势,定子绕组开路,不接负载的情况为同步发电机的空载运行。空载运行时电枢绕组感应电动势称为发电机的空载电动势,这时等于定子端电压U,改变励磁电流 即可得到不同的和,从而可绘出在同步电机额定转速 下,与的关系曲线,即,此曲线则为同步发电机 图2-2 同步发电机的空载特性曲线 的空载特性曲线。

空载特性曲线的纵坐标是电动势,它是定子一相绕组中感应电动势的有效值,它基本上是气隙中基波磁通密度感应产生的(气隙中谐波磁通密度感应的谐波电动势,通过定子绕组的短距、分布被消弱,变得很小了)。空载特性的横坐标是实际的励磁电流,它产生的磁动势是实际的磁动势,而不是基波磁动势。空载特性虽然是在同步发电机空载的情况下得到的,但由于它表达的是励磁磁动势感应电动势的能力,所以在发电机负载的情况下仍能使用。

2.3.2 同步发电机的短路特性 同步发电机的短路特性是发电机在同步转速下,将同步电机定子绕组出线端短路后,定子电流随励磁电流变化的特性。

做同步发电机短路实验时,把定子三相出线端短接,将电机拖动到同步转速,在励磁绕组中通入励磁电流,这时电枢绕组中产生短路电流,改变励磁电流,可以得到不同的短路电流,由此可以得到同步发电机短路特性曲线,如图2-3所示:
短路特性是一条直线,下面以隐极同步发电机为例说明理由。短路时定子绕组出线端电压U=0,气隙电动势为 (2-1)
图2-3 同步发电机短路特性 电流I在漏阻抗上的压降较小,是较小,气隙磁通密度也较小,电机磁路处于不饱和状态,合成磁动势也较小。由于电阻压降IR更小因此可以忽略,电枢反应磁动势与励磁磁动势方向相反,起直轴去磁作用。这时合成磁动势为两个磁动势的差值。因此当短路电流增大时,电枢反应磁动势会正比增加,气隙电动势也正比增加,由于磁路不饱和,使得合成磁动势也正比增加,从而造成励磁磁动势也正比增加,励磁电流也正比增加,因此电路电流与励磁电流会成直线关系。

2.3.3 同步发电机的外特性 图2-4 同步发电机的外特性 同步发电机的外特性是指电机的转速为同步速不变,励磁电流和负载功率因数均为常数的条件下,改变负载电流I时,端电压U的变化曲线。图2-4表示不同功率因数负载下同步发电机的外特性。从图中可以看出,纯电感负载时,随负载电流增加端电压降落较少,电感性负载时,随负载电流增加端电压降落较多,而在电容性负载时,随负载电流增加端电压反而会升高。

发电机的功率因数一般规定为0.8(滞后),在较大的电机中,也有规定为0.85或0.90.额定功率因数是由电力系统的需要情况而定。电机制造部门就按照所要求的额定功率因素进行设计。电机在额定电流下进行时的功率因数不宜低于额定值,否则转子电流将会发热,使它过热。

当发电机投入空载的长输电线时,相当于发电机接电容负载,这种操作称为对输电线充电。发电机的充电电流是当励磁电流为零,端电压为额定值时的定子电流。

从外特性也可以求出发电机的调整率,电压调整率用表示,=,它是表示同步发电机运行性能的重要数据之一,电压调整率大的电机,当负载变化时,会引起电网电压值的波动。现代同步发电机大多数装有快速自动调节励磁装置,使负载变化时,电网电压维持不变,对发电机的电压调整率要求已经放宽,但只是为了防止因故障跳闸切断负载时电压上升太多而击穿绝缘,要求小于50%,近代凸极同步发电机实际值约为18-30%以内。

2.3.4 同步发电机的调整特性 图2-5 同步发电机的调整特性 同步发电机的调整特性是指发电机的转速为同步速不变,负载的功率因数不变,当负载电流变化时,维持端电压不变,励磁电流的变化曲线,表示在图2-5上,从图可以看到,带纯电阻负载或电感性负载时,随负载电流增加励磁电流必须增加,才能维持端电压不变,此时称发电机在过励状态下运行。带电容性负载时,随负载电流增加励磁电流可能减少此时称发电机在欠励状态下运行。从调整特性可以知道,发电机运行在一定的功率因数下,维持端电压不变,负载电流可以到多大而不使励磁电流超过制造厂的规定,对运行人员是很有用的。

2.4 同步发电机空载时三相突然短路的分析 (1)突然短路瞬间定子的感应电势 设短路瞬间转子位置如图2-6(a), 将该瞬间取为时间零点,容易推导出定子三相绕组感应电势为:
(2-2) (2)电枢电流的周期分量形成的磁场 突然出现的对称三相电流必产生突然出现的旋转磁场,转速为同步速,转向与转子相同,所以,相对于转子位置不变, 忽略电阻的影响,则电流落后于电势90度。同时,在时空相-矢量图中三相合成磁势与A相电流相量在同一方向上,如图2-6(b)。显然电枢磁势轴线与励磁磁势矢量在同一轴线(d轴)上,但方向相反。

(a) (b) 图2-6 同步发电机空载突然短路后的时空相-矢量图 电枢电流形成的旋转磁场的磁力线如图2-7(a)所示,可以看出:它试图穿过闭合的阻尼绕组与励磁绕组,使其中的磁力线增加。自然,在励磁绕组与阻尼绕组中会产生感应电势与感应电流阻碍其增加,两者作用的结果,使得励磁绕组与阻尼绕组闭合回路中的磁通在短路瞬间不发生突变,因此,电枢磁场的磁力线只能走漏磁路。使磁阻很大,磁导很小,电抗很小。

(3)电枢突然短路电流初始值 从定子绕组的出线端向电机内部看的等效电抗,就相当于三绕组变压器第二、第三个绕组短路忽略电阻后所表现出的等效电抗,称为直轴超瞬态电抗。如图2-7(b)所示。图中, ,与依次为同步电机的电枢反应电抗、励磁绕组及直轴阻尼绕组漏电抗。据图2-7(b)所示等效电路容易得到直轴超瞬态电抗的表达式 (2-3) (a) (b) 图2-7 电枢电流周期分量形成的旋转磁场的磁路及对应的电抗 由于励磁绕组及直轴阻尼绕组漏电抗的值都很小,所以直轴超瞬态电抗的标么值一般只有0.1~0.15。

显然,如果没有阻尼绕组或阻尼绕组不起作用,则等效电抗为 (2-4) 称直轴瞬态电抗,标么值0.2左右。

得到直轴超瞬态电抗后,与稳态短路时的情况相似,可以根据式(2-2),得到定子瞬态电流的表达式。在稳态短路时有.与稳态短路相比,直轴电抗从变为,所以定子瞬态电流为 (2-5)
其初始值为 (2-6)
由此可以得到定子瞬态电流周期分量的初始值 (2-7)
第三章 三相同步发电机的MATLAB仿真 3.1 MATLAB简介 MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。

MATLAB的特点和优势 (1)友好的工作平台和编程环境 MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

(2)简单易用的程序语言 Matlab一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

(3)强大的科学计算机数据处理能力 MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等,能使用户从繁杂的数学运算分析中解脱出来。

(4)出色的图形处理功能图形处理功能 MATLAB具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足,实现计算结果和编程的可视化。

(5)应用广泛的模块集合工具箱 MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。为用户提供了大量方便实用的处理工具. (6)实用的程序接口和发布平台 新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。

(7)应用软件开发(包括用户界面)
在开发环境中,使用户更方便地控制多个文件和图形窗口;
在编程方面支持了函数嵌套,有条件中断等;
在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;
在输入输出方面,可以直接向Excel和HDF5进行连接。

3.2 GUI概述及设计要求 3.2.1 GUI概述 GUI 是 Graphical User Interface 的简写,即图形用户界面,准确来说 GUI 就是屏幕产品的视觉体验和互动操作部分。GUI是由窗口、光标、按键、菜单、文字等说明对象构成的一个用户界面。用户通过一定的方法选择、激活这些图形对象,使计算机产生某种动作或变化。GUI 是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。GUI 即人机交互图形化用户界面设计。纵观国际相关产业在图形化用户界面设计方面的发展现状,许多国际知名公司早已意识到 GUI 在产品方面产生的强大增值功能,以及带动的巨大市场价值,因此在公司内部设立了相关部门专门从事 GUI 的研究与设计,同业间也成立了若干机构,以互相交流 GUI 设计理论与经验为目的。随着中国IT产业,移动通讯产业,家电产业的迅猛发展,在产品的人机交互界面设计水平发展上日显滞后,这对于提高产业综合素质,提升与国际同等业者的竞争能力等等方面无疑起了制约的作用。

3.2.2 GUI设计要求 创建MATLAB GUI必须具有以下3个基本元素:
(1)组件 在MATLAB GUI中的每一个项目都是一个图形化组件。组件分为3类:图形化控件(按钮、编辑框、列表、滚动条等)、静态元素(窗口和文本字符串)、菜单和坐标系。图形化控件和静态元素由函数uicontrol创建,菜单由函数uimenu和uicontextmenu创建,坐标系经常用于显示图形化数据,由函数axes创建。

(2)图形窗口 GUI的每一个组件都必须安排在图形窗口中。在画数据图像时,图形窗口通常会被自动创建。但还可以用函数figure来创建空图像窗口,空图像窗口经常用于放置各种类型的组件。

(3)回应 如果用户用鼠标单击或用键盘输入一些信息,那么程序就要有相应的动作。鼠标单击或输入信息是一个事件,如果MATLAB程序运行相应的函数,那么MATLAB函数肯定会有所反应。

实现一个GUI的过程包括两个基本任务:一是GUI的组件布局,另一个是GUI组件编程。另外,用户还必须能够保存并发布自己的GUI,使得用户开发的图形用户界面能够得到真正的应用。所用这些功能都能通过图形用户界面开发环境来完成。

使用MATLAB创建一个GUI有两种方法:一是利用GUIDE创建GUI,另一个是利用编程创建GUI。

GUIDE可以在布局GUI的同时可以生成两个文件:
(1)FIG文件。该文件包括GUI的图形窗口和所有子对象(包括用户控件和坐标轴)的完全描述以及所有对象的属性值。

(2)M文件。该文件包括用户用来发布和控制界面和回调函数的各种函数。该文件不包含任何组件的布置信息。

由于GUI的设计需要遵循以下原则:
(1)简单性。设计界面时,力求简洁。清晰地体现界面的功能和特征。删去可有可无的一些设计,保持整洁。图形界面要直观,减少窗口数目,避免在不同的窗口来回切换。

(2)一致性。要求界面设计的风格尽量一致,不要和已经存在的界面风格截然相反。

(3)习常性。设计界面时,应尽量使用人们所熟悉的标志和符号。

(4)其他因素。还要注意界面的动态性能。比如界面的相应要迅速、连续,对长时间运算的要给出等待的时间提示,并允许用户中断运算等。

3.2.3 GUI设计的一般步骤 界面的制作包括界面设计和程序的实现,其过程不是一步到位的,需要反复修改,才能获得满意的界面。

步骤1:分析界面所要求实现的功能,明确设计任务;

步骤2:构思草图,从使用者和功能实现的角度出发,并上机实现;

步骤3:编写对象的响应程序,对实现的功能进行逐项检查。

3.3 同步发电机的数学模型 3.3.1 同步发电机的原始方程 在研究同步发电机特性时,常采取简化,把同步发电机看成理想同步发电机。同步发电机有六个磁耦合的绕组和相应的六个回路,可用各绕组的此联方程和各回路的电压方程描述。在建立方程之前,首先要选定各变量的正方向。图3-1标出了各绕组电流的正方向,图3-2示出了各回路的电路(只画了自感),其中标明了电压的正方向。

根据上述规定,定子、转子各绕组磁链和感应电动势的正方向都符合右手螺旋定律。

根据以上规定的正方向。由此可以得出定子和转子各回路的电动势方程:
图3-1 同步发电机各绕组示意图 图3-2 同步发电机各绕组回路电路图 根据上述规定,定子、转子各绕组磁链和感应电动势的正方向都符合右手螺旋定律,由此可以得出定子和转子各回路的电动势方程:
(3-1)
其中为磁链对时间的倒数。同步发电机各绕组的磁链是由本绕组的自感磁链和其它绕组与本绕组间的互感磁链组合而成。它的磁链方程为:
(3-2)
式中,为绕组a的自感系数,为绕组a和绕组b的互感系数;
其余由此。由于q轴阻尼绕组Q与励磁绕组f与d轴阻尼绕组D垂直,所以。

(3-3)
3.3.2 派克变换和d、q、0坐标系统 由于发电机在转子的纵轴向和横轴向的磁导都是完全确定的,为了分析电枢磁势对转子磁场的作用,可以采用双反理论把电枢磁势分解为纵轴分量和横轴分量,这就避免了同步发电机稳态分析中出现改变参数的问题。

同步发电机稳态对称运行,电枢磁势幅值不变,转速恒定,相对转子静止。它可以用一个同步转速旋转的矢量来表示。如果定子电流用一个同步旋转地通用相量表示(它是对于定子各相绕组轴线的投影的各相电流的瞬时值),那么相量与矢量在任何时刻都同相位,而且在数值上成比例,如图3-3所示。

依照电枢磁势的分解法,结合图形可得:
(3-4)
定子三相电流的瞬时值为:
(3-5)
利用三角恒公式,由以上两个公式可得:
(3-6) 图3-3 定子电流通用相量 通过这种变换,将三相电流、、变换成等效的两相电流和。可以设想,这两个电流是定子的等效绕组dd和qq中的电流,这组等效定子绕组随着转子旋转。等效绕组中的电流产生的磁势相对转子静止,它所遇到的磁路磁阻恒定不变,相应的电感系数为常数。

当定子绕组内存在幅值恒定的三相对称电流时,由式(3-6)确定的和都是常数,等效的dd、qq绕组的电流是直流。

如果定子绕组中存在幅值恒定的三相不对称电流,只要是一个平衡的系统,即满足:,仍然可以用一个通用相量来代表三相电流,但这是通用相量的幅值和转速都不是恒定的,因而它在d轴和q轴上的投影也是幅值变化的。

当定子三相电流构成不平衡系统时,三相电流是三个独立的变量,仅用两个新变量(d轴分量和q轴分量)不足以代表原来的三个分量。为此,需要增选第三个新变量,其值为:
(3-7)
关系式(3-7)与常见的对称分量法中零序电流的表达式相似。所不同的是,这里用的是电流的瞬时值,对称分量法中用的则是正弦电流的相量。称为定子电流的零轴分量。

式(3-6)和(3-7)构成了一个a、b、c坐标到d、q、0坐标系的转换,可用矩阵合写成 (3-8)
或缩写为 (3-9) 式中 (3-10)为变换矩阵,容易验证,矩阵P非奇,因此存在逆阵,即 (3-11)
利用逆变换可得 (3-12)
或展开写成 (3-13)
由此可见,当三相电流不平衡时,每相电流中都含有相同的零轴分量,由于定子三相绕组完全对称,在空间互相位移电角度,三相零轴电流在气隙中的合成磁势为零,故不产生与转子绕组相交链的磁通。它只产生与定子绕组交链的磁通,其值与转子的位置无关。

上述变换称为派克(Park)变换,不仅对定子电流,而且对定子绕组的电压和磁链都可以实施这种变换,变换关系式与其相同。

3.3.3用d、q、0坐标系统表示的同步发电机方程式 (1)磁链的坐标转换 将式(3-3)展开可得:
(3-14) 对式(3-14)左乘以P,利用Park变换,可得; (3-15) 通过矩阵演算可得 , , 将上述表达式代入(3-15),并将其合写 (3-16) 这就是变换到d、q、0坐标系统的磁链方程。

(2)电压的坐标变换 由(3-1)可得 (3-17)
上式等号两边左乘P,综合(3-10),(3-11),(3-12)可得:
(3-18)
由于,分别在两端取导数,可以得到:
(3-19)所以 (3-20) 式中:
这样便可以得到d、q、0轴分量的表示电压方程:
(3-21) 将式(3-21)展开并重写(3-1)可得同步发电机和派克方程为:
(3-22)
坐标转换后磁链方程变为线性代数方程组,和两个电压方程式由于存在发电机电动势,而成为非线性方程。在研究电力系统短路和稳定问题时,由于发电机转速变化很小,可当做常数处理。这样,电压方程组也都是线性微分方程,它们的求解将大为简化。

第四章 仿真系统设计思路 4.1 同步发电机各状态下M文件编写思路 三相同步发电机仿真程序的编写基于同步发电机的数学模型,数学模型一般建立在d、q、0的坐标系统下。当求出dq0系统坐标下的各个量时,可通过Park变换,将这些量转化为同步发电机的原始量。根据第三章所述的用d、q、0坐标系统表示的同步发电机方程式,可将同步发电机的模型简化如下:
(a)d轴电路 (b)q轴电路 图4-1 同步发电机原理等效图 由于q轴电路中的电感和阻抗一般相同,所以可以用一个通用式子表示。根据电磁感应定律,。由此,可建立编写各运行状态M文件所需的数学模型:
(4-1) 式中:
d、q—dq0坐标系轴坐标;

R、s—定转子轴坐标;

L、m—自感和互感;

f、k—励磁绕组和阻尼绕组。

上述数学模型是在假设发电机有阻尼的基础上写出来的;
当发电机没有阻尼时,只需在上述数学模型的基础上去掉相应的电压方程和磁链方程即可,即:
(4-2) 某台同步发电机的基本参数如下(都为有名值):
r=2.9069;=5.9013E-01;=11.900;=20.081;=24;=314;=3.0892E-01; =3.2164;=9.7153E-01;=3.0712E-01;=4.9076E-01;=1.0365 式(4-1),(4-2)中的电感与互感参数与同步发电机的基本参数的关系为:
(4-3)
在对发电机状态进行仿真时,一般电压的值都为已知,进行仿真时,一般要显示的是电流波形。由式(3-21)可以看出,电感、电阻为已知,还有电压、和电流未知。式(3-16)给出了与电流的关系,通过该式子,可以将用电流来表示。,,只是当三相电流构成不平衡系统时引入的一个变量,这些量的波形没有实际的意义,可以将其省去。因此,式(3-21)可以转换为:
(4-4)
结合,,对照发电机的基本参数,现在只有电压,和电流为未知量,在对发电机状态进行仿真时,一般电压的值都为已知,进行仿真时,一般要显示的是电流波形。只要通过什么方法消除,就能利用式(4-4)求出电流量。

根据法拉第电磁感应定律,可知电磁感应电动势公式:
与电流存在如下关系:
(4-5)
将式(4-5)代入式(4-4),,并将互感转换到dq0坐标下的量,即可得到一个电压与电流的通用方程:
(4-6) 其中G也为一个矩阵: (4-7) 对照发电机的基本参数,当给定电压值是,就可以通过解微分方程来求得电流值。求得的电流值是在dq0坐标系统下的量,通过Park变换的逆变换,就可以得到同步发电机各相的电流,再根据同步发电机的原始方程,就可以得到其他参数。所以,同步发电机各状态下M文件的编写思路可用如下框图表示:
图4-2 同步发电机各运行状态的M文件设计思路 4.2 仿真界面设计思路 4.2.1 仿真主界面各组件的选择和布局 根据本课题设计的具体要求,仿真主界面需要罗列同步发电机各种运行状态的类型,并在选择类型后,有对应的窗口显示该类型的实验项目。在选择实验项目后,能有对应的窗口显示该实验的说明和帮助。

在GUIDE创建的GUI当中,能够罗列同步发电机各种运行状态的组件有很多种:
(1)文本标签(Static Text)
文本标签是固定显示字符串的标签区域。如果用此来罗列同步发电机的各种状态,就必须添加其他功能的按钮来链接进入相应的实验项目界面,从界面的简洁性来考虑,一般不采用文本标签来显示这些状态。

(2)文本框(Edit Text)文本框支持用户通过键盘输入字符串,虽然可以显示文本,但这些状态都是固定的,不允许用户在主界面上擅自修改。因此不便采用。

(3)下拉菜单(Pop-up menu)下拉菜单类似于一组单选按钮,用户可以选择其中的一个项目来设置程序运行的某个输入参数的取值。下拉菜单只能在界面上不能同时显示Pop-up menu 中所有的String,而是只能显示其中的一行。需要仿真的运行状态较少,如果只采用一个下拉菜单来罗列,那用户查看能仿真的这些状态就不太直观。而且下拉菜单只是占单行,单独放在一个界面上不太美观。

(4)单选按钮(Radio Button)
单选按钮经常是多个一组联合使用,用于实现同一属性项多项取值的来回切换。一组单选按钮在任何时间只能有一相项被选定。因此可以考虑采用。

(5)复选框(Check Box)
复选框和单选按钮一样,也响应选定操作。如果用复选框同时运行几种状态,用户就无法得知显示出来的实验项目是哪个运行状态响应的。而如果只运行一种状态,单选按钮完全能代替其功能,因此不适合用在显示这些运行状态。

(6)下拉列表框(List Box)
下拉列表框累似于于一组复选框,用户可以选择项目来设置程序运行的输入参数。可以直观显示多行字符串,通过选择这些String的Value值,编写不同Value值的响应函数,可以执行相应的程序。在点击列表框中的某行字符串时,就能执行相应的程序段,进入实验项目。

(7)按钮(Push Button)
按钮是最常用的控件,最主要是执行鼠标的单击事件动作。

综合上述,在选择组件来罗列同步发电机各种运行状态的类型时,Radio Button、List Box和Push Button都是不错的选择,为了使界面保持一致性,尽量仅选用一种组件来显示这些运行状态。Push Button是最常用的控件,为了使界面更加人性化。这里采用Push Button来显示各种运行状态。

在控件布局时,为了是界面整洁,需要使用位置调整工具(Alignment Tools),选择把这些按钮左对齐并离界面左界有一定的空隙。

4.2.2 仿真主界面与各项目子界面的的连接 考虑到采用主界面直接调用M文件出来的仿真图仅仅是一个Figure,不能完好的实现人机交互功能。因此在主界面和M文件之间在建立子界面。在主界面选择发电机状态后,能够进入相应实验的子界面。该子界面有显示相应状态电流波形的功能,同时需要有人机交互的组件。

编辑主界面各个按钮的属性,编写相应按钮的callback函数。在callback函数中加上如下语句就能实现仿真主界面与子界面的连接:
function 按钮的Tag_Callback(hObject, eventdata, handles) 子界面GUI名称;

4.2.3 子界面的控件选择和布局 子界面要求显示图形,因此必须选择坐标轴(Axes)组件。界面初始时,坐标轴上可以无图形显示。也可以设置默认图像。需要显示的有几个电流的波形图,使用一个坐标轴控件时,要显示这些波形就要采用subplot分区域画图,这样子界面就要做得相对来说比较大,而且有时候用户并不需要了解每一个电流波形图。选择多个坐标轴控件显示这些图形时,同样也面临着这些问题。因此,在子界面只选用一个坐标轴控件。并在界面上添加一个能够罗列所能显示的的电流曲线名称,这里可以选择Pop-up menu。通过改变Pop-up menu属性的Value值,在坐标上显示不同的电流曲线。这个可以通过switch Value语句来实现。子界面调用M文件可在Case语句中执行,为了画图的方便。各状态方程的M文件只放置初始数据及微分方程。求解和绘图语句放在子界面的程序段当中。

求解微分方程的solver指令有多种,它们都有不同的使用场合 表4-1 各种solver指令及适用场合 解算指令solver 解题类型 适用场合 ode45 非刚性 大多数场合的首选算法 ode23 非刚性 较低精度()场合 ode113 非刚性 ode45计算时间太长时,取代ode45 ode23t 适度刚性 适度刚性 ode15s 刚性 当ode45失败时使用;
或存在质量矩阵时 ode23s 刚性 低精度时,比ode15s有效;
或存在定常质量矩阵时 ode23tb 刚性 低精度时,比ode15s有效;
或存在定常质量矩阵时 4.3 仿真系统登录界面设计思路 一个登录界面,首先要能输入用户名与密码,在输入正确的用户名并通过验证之后方能进入仿真系统。通常,登录界面的用户名和密码都分别在不同的Edit Text中输入。并且密码不能原文在密码框上显示,必须用“*”覆盖。在这两个文本框之前,需要提供一定的解释说明,说明哪个文本框是输入用户名,哪个文本框式输入密码。所以要选择两个文本标签来完成相应的注释,这两个文本标签的String属性分别为:“用户名”,“密码”。输入好用户名和密码后,需要对其验证。原则上应该能有很多用户名及相应的密码,并通过excel或者txt等来进行存储,但此登录框应用范围要求较小,在此只在程序段当中设置一个用户名和密码。

进入验证的方式有两种:一种是添加一个“登录”按钮,通过鼠标点击此按钮进入验证,另一种是通过键盘输入Enter进入验证。

点击按钮控件“登录”,开始验证,如果验证发现错误,要能弹出相应的提示,并能返回登录界面重新输入验证,按照这种思路,按钮控件“登录”的callback函数应该如下:
function pushbutton1_Callback(hObject, eventdata, handles) % 登录按钮 passChar = get(handles.dl_code,'UserData'); %得到键盘输入的字符 userChar = get(handles.dl_user,'String'); if strcmp(passChar,handles.code)&strcmp(userChar,handles.user) %验证正确 msgbox('欢迎进入同步发电机仿真系统'); delete(gcf); close(dl); fangzhenjiemian; %进入仿真主界面 else %验证出错 errordlg('用户名或密码错误!','错误提示'); clc handles.dl_code; clc handles.dl_user; %清空文本框里的内容 end 当输入完密码框当中的内容之后,按下回车键要能进入验证,但也有可能出现出现输错内容,需要替补或者退格重新输入再进行验证。所以针对键盘效应的函数可以写成:
function dl_code_KeyPressFcn(hObject, eventdata, handles) currChar = get(gcf,'CurrentCharacter'); oldChar = get(hObject,'UserData'); xinghao=get(hObject,'string'); userChar=get(handles.dl_user,'string'); if (currChar>='0'&currChar<='9')|(currChar>='a'&currChar<='z').. |(currChar>='A'&currChar<='Z') .%如果键盘输入的是0—9之间的数值或者字母,则可以继续输入,并覆* oldChar = [oldChar currChar]; xinghao=[handles.xinghao '*']; set(hObject,'UserData',oldChar,'string',xinghao); handles.xinghao=xinghao; guidata(hObject,handles); elseif double(currChar)==26|double(currChar)==8 %“替补”键的ASCII值为26,“退格”键为8,若键盘输入这两个值,要继续输入 oldChar=''; handles.xinghao=''; set(hObject,'UserData',oldChar,'string',handles.xinghao); guidata(hObject,handles); elseif double(currChar)==13 %Enter键ASCII值为13,键盘输入此键,要开始验证,验证流程与点击按钮“登录”一致 set(hObject,'string',xinghao); if strcmp(oldChar,handles.code)&strcmp(userChar,handles.user) msgbox('登陆成功!'); close(gcf); %关闭消息框 close(dl); %关闭登录界面 fangzhenjiemian; else set(hObject,'string','','UserData',''); handles.xinghao=''; guidata(hObject,handles); errordlg('用户名或密码错误!','错误提示'); end else set(hObject,'UserData',oldChar); set(hObject,'string',handles.xinghao); end 第五章 仿真结果分析 5.1登录界面 图5-1 同步发电机仿真系统登录界面 此登录界面能够对输入的用户名及密码进行验证,若用户通过了身份验证,便可进入仿真系统主界面。若输入的用户名或密码有误,能够返回登录界面重新输入用户名和密码,并再一次进行身份验证。

5.2 仿真系统主界面 图5-2 同步发电机仿真系统主界面 仿真系统主界面设置了顶部菜单。顶部菜单包括仿真系统的操作说明及一些快捷键的使用。系统设置了各个子界面的快捷键,通过按下快捷键可以进入相应的仿真界面。

这些实验是在不同的系统坐标下建立的同步发电机的数学模型。同步发电机的功角特性是在abc的坐标系统下分析建立的数学模型,参数采用的是发电机实际参数。而空载建立电压、三相突然短路和转子绕组短路,定子突加对称电压这三个仿真实验是在dq0坐标系统下建立的数学模型得到的仿真结果。突然单相短路和突然两相空载短路是在坐标系统下建立的数学模型得到的仿真结果。系统兼有dq0和坐标系统的优点。通过仿真表明,采用该系统可有效节约仿真时间,计算效率也得到了提高。

5.3 功角特性仿真结果及分析 图5-3 同步发电机的功角特性仿真 隐极同步发电机的功角特性仿真是在隐极同步发电机的相量图的基础上建立的数学模型。隐极同步发电机的相量图如图5-4所示。由图可得:
(5-1)
化简上式可得:
图5-4 隐极同步发电机的相量图 (5-2)
由此可得:
(5-3)
根据可得:
(5-4)
功角特性的仿真程序是基于式(5-4)编写出来的。从整个式子的推导过程来看,对同步发电机的功角特性仿真是把隐极同步发电机看成了一个理想电机。所以仿真出来的波形都是很平滑的。实际的功角曲线会有很多波动。

5.4 同步发电机空载建立电压仿真结果及分析 (a)有阻尼绕组 (b)无阻尼绕组 图5-5 同步发电机空载建立电压的仿真结果 由图5-5可以看出,空载无阻尼时,建立稳定的电流的时间要比空载有阻尼的情况下建立稳定的电流的时间要短。根据法拉第电磁感应定律可知,如果在励磁绕组测绕组两端的电压。那么,无阻尼时可以更快达到稳定的电压。

5.5同步发电机突然单相短路仿真结果 5.5.1 同步发电机突然单相短路有阻尼仿真结果 (a)Ifd随时间变化曲线 (b)Ikd随时间变化曲线 (c)Ibeta0 随时间变化曲线 (c)Ibeta0 随时间变化曲线 图5-6 同步发电机突然单相短路有阻尼仿真结果 5.5.2同步发电机突然单相短路无阻尼仿真结果 (a)Ifd随时间变化曲线 (b)Ibeta0随时间变化曲线 图5-7同步发电机突然单相短路无阻尼仿真结果 5.5.3 同步发电机突然单相短路仿真结果分析 由图5-6和图5-7可知,同步发电机发生突然单相短路时,不会产生很大的冲击电流。所以在很短的时间内,这种故障状态不会给电机带来严重影响。

5.6同步发电机三相突然短路仿真结果 5.6.1同步发电机三相突然短路有阻尼仿真结果 (a)Id随时间变化曲线 (b)Ifd随时间变化曲线 (c)Ia随时间变化曲线 图5-8 同步发电机三相突然短路有阻尼仿真结果 5.6.2同步发电机三相突然短路无阻尼仿真结果 (a)Id随时间变化曲线 (b)Ifd随时间变化曲线 (c)Ia随时间变化曲线 图5-9 同步发电机三相突然短路无阻尼仿真结果 5.6.3同步发电机三相突然短路仿真结果分析 同步发电机在发生三相短路时,在短路瞬间,各相电流都很大。可达到额定电流的几十倍,这是一个非常大的电流,会对同步发电机及相关电气设备产生很大的破坏。因此,同步发电机运行时,要特别注意避免发生三相短路。短路发生时,要及时切除故障源,所以,与同步发电机相连的电气设备一定要安装自动重合闸装置。

通过图5-8和图5-9对比可知,无阻尼绕组时,分周期电流的衰减速度要比有阻尼绕组时快的多,这是因为绕组本身就是一个是电流不能突变的的元件。

5.7 同步发电机突然两相空载短路仿真结果 5.7.1 同步发电机突然两相空载短路有阻尼仿真结果 (a)Ifd随时间变化曲线 (b)Ikd随时间变化曲线 (c)Ibeta0随时间变化曲线 图5-10 同步发电机两相空载短路有阻尼仿真结果 5.7.2 同步发电机突然两相空载短路无阻尼仿真结果 (a)Ifd随时间变化曲线 (b)Ikd随时间变化曲线 图5-11同步发电机突然两相空载短路无阻尼仿真结果 5.7.3同步发电机突然两相空载短路仿真结果分析 两相空载短路时,短路电流很大,且短路电流长时间没有变小。说明两相空载短路时对发电机的影响很大。

5.8 转子绕子短路,定子突加对称电压仿真结果 5.8.1转子绕子短路,定子突加对称电压有阻尼情况下仿真结果 (a)Id随时间变化曲线 (b)Ifd随时间变化曲线 (c)Ikd随时间变化曲线图 图5-12 同步发电机转子绕子短路,定子突加对称电压有阻尼情况下仿真结果 5.8.2转子绕子短路,定子突加对称电压无阻尼情况下仿真结果 (a)Id随时间变化曲线 (b)Ifd随时间变化曲线 (c)Ia随时间变化曲线图 图5-13 同步发电机转子绕子短路,定子突加对称电压无阻尼情况下仿真结果 5.8.3转子绕子短路,定子突加对称电压仿真结果分析 在同步发电机转子绕子短路,定子突加对称电压故障状态下,刚发生短路时暂态电流很大。由图5-12可知,d轴方向上电流衰减的很快,大概0.5s左右衰减到接近于0.但a相的短路电流一直保持很大,原因可能是q轴方向上的短路电流几乎没有衰减。

第六章 结论 经过近三个月的学习和努力,我终于顺利完成了《同步发电机运行运行仿真与GUI设计》这个课题的毕业设计。以下是我对此毕设的总结
6.1 主要工作回顾 本毕业设计做出了一个简单可行的同步发电机运行仿真系统,基本完成了导师布置的各项任务和要求。

主要工作如下:
(1)完成同步发电机模型的简化;

(2)在dq0坐标系统下建立了同步发电机的数学模型;

(3)明确阐述了整个系统的设计思路;

(4)制作了一个简单的登录界面,并能在经过身份验证之后能顺利进入仿真主界面;

(5)仿真主界面罗列同步发电机各种运行状态的类型供用户选择,点击相应类型后,能显示该实验所能绘制的曲线并能在GUI上显示图形;

(6)建立了编写同步发电机多种运行状态下仿真程序;

6.2待改进的地方 本毕业设计虽然完成了课题任务,但还是有些地方做的不够完善:
(1)仿真登录界面的用户名和密码只能与固定的用户名与密码进行验证,用户名和密码应该要有很多组数据,并且要有新用户注册功能。缺乏此功能它的应用范围就会受到限制;

(2)能够仿真的同步发电机的运行状态不够多,做的还不够全面;

(3)参数设置项没有实现对参数格式的校验,当用户在界面上输入的矩阵行列与初始的不相同时,可能无法仿真。但也没有一定的错误提示,导致用户无法找到错误根源。

虽然我的设计还不够成熟,功能还尚不够完善。但我真的已经尽我的努力去做好这个毕业设计,包括同步发电机在dq0坐标系统下的数学模型我都很认真的去推导并写下了整个推导过程。通过此次毕设,我已能够熟练使用Mathtype、Visio以及word等毕业相关操作软件,并对MATLAB的学习更深了一个层次。看着自己的成品,也让我更加相信,只要敢于尝试,就会有意外的收获。

致谢 为期一个学期的毕业设计已接近尾声了,我的四年大学生涯也即将圈上一个句号。

看着自己顺利完工的毕业设计,我的心中充满了感激。我要感谢在这一学期在毕业设计阶段所有帮助过我的人们。首先要感谢我的导师XX老师,这一步一步的走来,其中都包含了罗老师耐心的指引和教导。感谢罗老师给我们介绍的毕设过程中需要使用的软件并耐心教导我们使用方法,。并在百忙之中抽出时间来为我们解答毕业设计过程中的疑惑,感谢罗老师给我指明了本设计所需的关键变换:派克变换。让我把所有的思路都能连接起来并实现这些设计,感谢罗老师给我做的仿真系统提出的宝贵意见,使我的仿真界面更加完善了一点。再次对罗老师表示感谢。

感谢跟我做同一个课题的王艳苹同学,在设计完成的过程中我们互相讨论,互相提建议,通过互相的交流,相互的谦让,避免了我们在设计上有过多的雷同。因为做同一个课题,所以在进度上就会有一定的可比性,通过与王艳苹毕设进度对比,大大提高了我的学习自主能动性以及做毕设的积极性。没有之前的动力,我可能到现在还没做完。

此外还要感谢罗杰老师所带的的其他六位学生,在登录界面设计的整个过程中,我们相互讨论,解决了用户名及密码验证有误之后能重新输入并正确验证的问题。

感谢我的父母,对我二十几年来辛勤的养育,他们对我无条件的支持,让我可以去追求自己的梦想,他们的爱是我前行的动力。

在设计的过程中,也得到了许多同学宝贵的建议,在此一并致以诚挚的谢意。

最后,衷心的感谢电气学院的每位老师,谢谢你们把这些专业知识传授给我,让我拥有了一定的解决问题的能力。

衷心祝愿华东交通大学的明天更加美好! 参考文献 【1】 张志涌等.精通MATLAB6.5版[M].北京:北京航空航天大学出版社,2004. 【2】 李维波.MATLAB在电气工程中的应用[M].北京:中国电力出版社,2007. 【3】 李发海,朱东起.电机学[M].北京:科学出版社,2007. 【4】 周德贵,巩北宁.同步发电机运行技术与实践[M].北京:中国电力出版社,2004. 【5】 陈垚光,毛涛涛,王正林,王玲.精通MATLAB GUI设计[M].北京:电子工业出版社,2008.2. 【6】 潘晓晟,郝世勇.MATLAB电机仿真精华50例[M].北京:电子工业出版社,2007. 【7】 刘卫国.MATLAB程序设计与应用(第二版)[M].北京:高等教育出版社,2006.7. 【8】 罗杰.基于GUI的同步发电机实验系统仿真[J].科技创新导报,2010,17:16. 【9】 刘凤春,孙建忠,牟宪民.电机与拖动MATLAB仿真与学习指导[M].北京:机械工业出版社, 2008.9. 【10】 黄瑛.基于MATLAB GUI的电机学仿真实验系统设计[J].2009,17:38-39. 【11】 Vlatko C,mitsuru M,Hideo Y.Computer simulation of a three-phase brushless self-excited synchronous generator[J].IEEE Trans on Magnetics,1999,35(3):1251-1254. 【12】 A.E.Fitzgerald,Charles Kingsley,Jr,Stephen D.Umans.Electric Machinery(Sixth Edition)[M].Beijing:Tsinghua University Press,2003. 【13】 曹娜.电力系统分析[M].北京:北京大学出版社,2009.2 【14】 夏道止.电力系统分析[M].北京:中国电力出版社,2004 附录A 英文翻译原文 1.1 Introduction to Polyphase Synchronous Machines In older machines,the excitation current was typically supplied through slip rings from a dc machine, referred to as the exciter, which was often mounted on the same shaft as the synchronous machine. In more modern systems, the excitation is supplied from ac exciters and solid-state rectifiers .In some cases, the rectification occurs in the stationary frame, and the rectified excitation current is fed to the rotor via slip tings. In other systems, referred to as brushless excitation systems, the alternator of the ac exciter is on the rotor, as is the rectification system, and the current is supplied directly to the field-winding without the need for slip tings. A single synchronous generator supplying power to an impedance load acts as a voltage source whose frequency is determined by the speed of its mechanical drive (or prime mover). The amplitude of the generated voltage is proportional to the frequency and the field current. The current and power factor are then determined by the generator field excitation and the impedance of the generator and load. Synchronous generators can be readily operated in parallel, and, in fact, the electricity supply systems of industrialized countries typically have scores or even hundreds of them operating in parallel, interconnected by thousands of miles of transmission lines, and supplying electric energy to loads scattered over areas of many thousands of square miles. These huge systems have grown in spite of the necessity for designing the system so that synchronism is maintained following disturbances and the problems, both technical and administrative, which must be solved to coordinate the operation of such a complex system of machines and personnel. The principal reasons for these interconnected systems are reliability of service and economies in plant investment and operating costs. When a synchronous generator is connected to a large interconnected system containing many other synchronous generators, the voltage and frequency at its armature terminals are substantially fixed by the system. As a result, armature currents will produce a component of the air-gap magnetic field which rotates at synchronous speed as determined by the system electrical frequency . For the production of a steady, unidirectional electromechanical torque, the fields of the stator and rotor must rotate at the same speed, and therefore the rotor must turn at precisely synchronous speed. Because any individual generator is a small fraction of the total system generation, it cannot significantly affect the system voltage or frequency. It is thus often useful, when studying the behavior of an individual generator or group of generators, to represent the remainder of the system as a constant-frequency, constant-voltage source, commonly referred to as an infinite bus. Many important features of synchronous-machine behavior can be understood from the analysis of a single machine connected to an infinite bus. The steady-state behavior of a synchronous machine can be visualized in terms of the torque equation. With changes in notation appropriate to synchronous-machine theroy, (1.1)
Where = resultant air-gap flux per pole = mmf of the dc field winding = electrical phase angle between magnetic axes of and In normal steady-state operation, the electromechanical torque balances the mechanical torque applied to the shaft. In a generator, the prime-mover torque acts in the direction of rotation of the rotor, pushing the rotor mmf wave ahead of the resultant air-gap flux. The electromechanical torque then opposes rotation. The opposite situation exists in a synchronous motor, where the electromechanical torque is in the direction of rotation, in opposition to the retarding torque of the mechanical load on the shaft. Variations in the electromechanical torque result in corresponding variations in the torque angle, ,as seen from Eq. 1.1. The relationship is shown in the form of a torque-angle curve in Fig. 1.1, where the field current (rotor mmf) and resultant airgap flux are assumed constant. Positive values of torque represent generator action, corresponding to positive values of for which the rotor mmf wave leads the resultant air-gap flux. As the prime-mover torque is increased, the magnitude of must increase until the electromechanical torque balances the shaft torque. The readjustment process is actually a dynamic one, requiting a change in the mechanical speed of the rotor, typically accompanied by a damped mechanical oscillation of the rotor about its new steady-state torque angle. This oscillation is referred to as a hunting transient. In a practical machine undergoing such a transient, some changes in the amplitudes of the resultant flux-density and field-winding mmf wave may also occur because of various factors such as saturation effects, the effect of the machine leakage impedance, the response of the machine's excitation system, and so on. To emphasize the fundamental principles of synchronous-machine operation, such effects will be neglected in the present discussion. The adjustment of the rotor to its new angular position following a load change can be observed experimentally in the laboratory by viewing the machine rotor with stroboscopic light triggered from the applied armature voltage (thus having a flashing frequency which causes the rotor to appear stationary when it is turning at its normal synchronous speed). Alternatively, electronic sensors can be used to determine the shaft position relative to the synchronous reference frame associated with the stator voltage. The resultant signal can be displayed on an oscilloscope or recorded with a data-acquisition system. As can be seen from Fig. 1.1, an increase in prime-mover torque will result in a corresponding increase in the torque angle. Whenbecomes 90 °, the electromechanical torque reaches its maximum value, known as the pull-out torque. Any further increase in prime-mover torque cannot be balanced by a corresponding increase in synchronous electromechanical torque, with the result that synchronism will no longer be maintained and the rotor will speed up. This phenomenon is known as loss of synchronism or pulling out of step. Under these conditions, the generator is usually disconnected from the external electrical system by the automatic operation of circuit breakers, and the prime mover is quickly shut down to prevent dangerous overspeed. Note from Eq. 1.1 that the value of the pull-out torque can be increased by increasing either the field current or the resultant air-gap flux. However, this cannot be done without limit; the field current is limited by the ability to cool the field winding,and the air-gap flux is limited by saturation of the machine iron. As seen from Fig. 1.1, a similar situation occurs in a synchronous motor for which an increase in the shaft load torque beyond the pull-out torque will cause the rotor to lose synchronism and thus to slow down. Since a synchronous motor develops torque only at synchronous speed, it cannot be started simply by the application of armature voltages of rated frequency. In some cases, a squirrel-cage structure is included in the rotor, and the motor can be started as an induction motor and then synchronized when it is close to synchronous speed. 1.2 Short.Circuit Characteristic and Load Loss A short-circuit characteristic can be obtained by applying a three-phase short circuit through suitable current sensors to the armature terminals of a synchronous machine.With the machine driven at synchronous speed, the field current can be increased and a plot of armature current versus field current can be obtained. This relation is known as the short-circuit characteristic. An open-circuit characteristic occ and a short-circuit characteristic scc are shown in Fig. 1.2. With the armature short-circuited, Va = 0 (and using the generator reference direction for current) (1.2) The corresponding phasor diagram is shown in Fig. 1.3. Because the resistance is much smaller than the synchronous reactance, the armature current lags the excitation voltage by very nearly 90 °. Consequently the armature-reaction-mmf wave is very nearly in line with the axis of the field poles and in opposition to the field mmf, as shown by phasors and representing the space waves of armature reaction and field mmf, respectively. The resultant mmf creates the resultant air-gap flux wave which generates the air-gap voltage equal to the voltage consumed in armature resistance and leakage reactance ,as an equation, (1.3) In many synchronous machines the armature resistance is negligible, and the leakage reactance is between 0.10 and 0.20 per unit; a representative value is about 0.15 per unit. That is, at rated armature current the leakage reactance voltage drop is about 0.15 per unit. From Eq. 1.3, therefore, the air-gap voltage at rated armature current on short circuit is about 0.15 per unit; i.e., the resultant air-gap flux is only about 0.15 times its normal voltage value. Consequently, the machine is operating in an unsaturated condition. The short-circuit armature current, therefore, is directly proportional to the field current over the range from zero to well above rated armature current; it is thus a straight line as can be seen in Fig. 1.2. The unsaturated synchronous reactance (corresponding to unsaturated operating conditions within the machine) can be found from the open- and short-circuit characteristics. At any convenient field excitation, such as Of in Fig. 1.2, the armature current on short circuit is O'b, and the unsaturated generated voltage for the same field current corresponds to Oa, as read from the air-gap line. Note that the voltage on the air-gap line should be used because the machine is assumed to be operating in an unsaturated condition. If the line-to-neutral voltage corresponding to Oa is and the armature current per phase corresponding to O'b is, then from Eq. 1.2, with armature resistance neglected, the unsaturated synchronous reactance is (1.4) where the subscripts “ag“ and “sc“ indicate air-gap line conditions and short-circuit conditions, respectively. If and are expressed in per unit, the synchronous reactance will be in per unit. If and are expressed in rms line-to-neutral volts and rms amperes per phase, respectively, the synchronous reactance will be in ohms per phase. Note that the synchronous reactance in ohms is calculated by using the phase or line-to-neutral voltage. Often the open-circuit saturation curve is given in terms of the line-to-line voltage, in which case the voltage must be converted to the line-to-neutral value by dividing by. For operation at or near rated terminal voltage, it is sometimes assumed that the machine is equivalent to an unsaturated one whose magnetization line is a straight line through the origin and the rated-voltage point on the open-circuit characteristic, as shown by the dashed line Op in Fig. 1.4. According to this approximation, the saturated value of the synchronous reactance at rated voltage is (1.5) where is the armature current O'c read from the short-circuit characteristic at the field current Of' corresponding to on the open-circuit characteristic, as shown in Fig. 1.4. As with the unsaturated synchronous reactance, if and are expressed in per unit, the synchronous reactance will be in per unit. If and are expressed in rms line-to-neutral volts and rms amperes per phase, respectively,the synchronous reactance will be in ohms per phase. This method of handling the effects of saturation, which assumes that the effects of saturation can be described by a single value of saturated reactance, usually gives satisfactory results when great accuracy is not required. The short-circuit ratio (SCR) is defined as the ratio of the field current required for rated voltage on open circuit to the field current required for rated armature current on short circuit. That is, in Fig. 1.4 (1.6) It can be shown that the SCR is the reciprocal of the per-unit value of the saturated synchronous reactance found from Eq. 1.5. It is common to refer to the field current Of' required to achieve rated-open-circuit voltage as AFNL (Amperes FieldNo Load) and the field current Of“ required to achieve rated-short-circuit current as AFSC (Amperes Field Short Circuit). Thus, the short-circuit ratio can also be written as (1.7) If the mechanical power required to drive the machine is measured while the short-circuit test is being made, information can be obtained regarding the losses caused by the armature current. Because the machine flux level is low under shortcircuit conditions, the core loss under this condition is typically considered to be negligible. The mechanical power required to drive the synchronous machine during the short-circuit test then equals the sum of friction and windage loss (determined from the open-circuit test at zero field current) plus losses caused by the armature current. The losses caused by the armature current can then be found by subtracting friction and windage from the driving power. The losses caused by the short-circuit armature current are known collectively as the short-circuit load loss. A curve showing the typical form of short-circuit load loss plotted against armature current is shown in Fig. 1.5. Typically, it is approximately parabolic with armature current. Figure 1.5 Typical form of shor-circuit load loss and stray load The short-circuit load loss consists of loss in the armature winding, local core losses caused by the armature leakage flux, and the very small core loss caused by the resultant flux. The dc resistance loss can be computed if the dc resistance is measured and corrected, when necessary, for the temperature of the windings during the short-circuit test. For copper conductors (1.8) Where and are the resistances at Celsius temperatures T and t, respectively. If this dc resistance loss is subtracted from the short-circuit load loss, the difference will be the loss due to skin effect and eddy currents in the armature conductors plus the local core losses caused by the armature leakage flux. This difference between the short-circuit load loss and the dc resistance loss is the additional loss caused by the alternating current in the armature. It is the stray-load loss described in Appendix D, commonly considered to have the same value under normal load conditions as on short circuit. It is a function of the armature current, as shown by the curve in Fig. 1.5. As with any ac device, the effective resistance of the armature can be computed as the power loss attributable to the armature current divided by the square of the current. On the assumption that the stray load loss is a function of only the armature current, the effective resistance of the armature can be determined from the short circuit load loss: (1.9) If the short-circuit load loss and armature current are in per unit, the effective resistance will be in per unit. If they are in watts per phase and amperes per phase, respectively, the effective resistance will be in ohms per phase. Usually it is sufficiently accurate to find the value ofat rated current and then to assume it to be constant. 1.3 Summary Under steady-state operating conditions, the physical picture of the operation of a polyphase synchronous machine is simply seen in terms of the interaction of two magnetic fields .Polyphase currents on the stator produce a rotating magnetic flux wave while dc currents on the rotor produce a flux wave which is stationary with respect to the rotor. Constant torque is produced only when the rotor rotates in synchronism with the stator flux wave. Under these conditions, there is a constant angular displacement between the rotor and stator flux waves and the result is a torque which is proportional to the sine of the displacement angle. We have seen that a simple set of tests can be used to determine the significant parameters of a synchronous machine including the synchronous reactanceor.Two such tests are an open-circuit test, in which the machine terminal voltage is measured as a function of field current, and a short-circuit test, in which the armature is short-circuited and the short-circuit armature current is measured as a function of field current. These test methods are a variation of a testing technique applicable not only to synchronous machines but also to any electrical system whose behavior can be approximated by a linear equivalent circuit to which Thevenin's theorem applies. From a Thevenin-theorem viewpoint, an open-circuit test gives the internal voltage, and a short-circuit test gives information regarding the internal impedance. From the more specific viewpoint of electromechanical machinery, an open-circuit test gives information regarding excitation requirements, core losses, and (for rotating machines) friction and windage losses; a short-circuit test gives information regarding the magnetic reactions of the load current, leakage impedances, and losses associated with the load current such asand stray load losses. The only real complication arises from the effects of magnetic nonlinearity, effects which can be taken into account approximately by considering the machine to be equivalent to an unsaturated one whose magnetization curve is the straight line Op of Fig. 1.4and whose synchronous reactance is empirically adjusted for saturation as in Eq. 1.5. In many cases, synchronous machines are operated in conjunction with an external system which can be represented as a constant-frequency, constant-voltage source known as an infinite bus. Under these conditions, the synchronous speed is determined by the frequency of the infinite bus, and the machine output power is proportional to the product of the bus voltage, the machine internal voltage (which is, in tum, proportional to the field excitation), and the sine of the phase angle between them (the power angle), and it is inversely proportional to the net reactance between them. While the real power at the machine terminals is determined by the shaft power input to the machine (if it is acting as a generator) or the shaft load (if it is a motor), varying the field excitation varies the reactive power. For low values of field current, the machine will absorb reactive power from the system and the power angle will be large. Increasing the field current will reduce the reactive power absorbed by the machine as well as the power angle. At some value of field current, the machine power factor will be unity and any further increase in field current will cause the machine to supply reactive power to the system. Once brought up to synchronous speed, synchronous motors can be operated quite efficiently when connected to a constant-frequency source. However, as we have seen, a synchronous motor develops torque only at synchronous speed and hence has no starting torque. To make a synchronous motor self-starting, a squirrel-cage winding, called an amortisseur or damper winding, can be inserted in the rotor pole faces, The rotor then comes up almost to synchronous speed by induction-motor action with the field winding unexcited. If the load and inertia are not too great, the motor will pull into synchronism when the field winding is energized from a dc source. Alternatively, synchronous motors can be operated from polyphase variable-frequency drive systems. In this case they can be easily started and operated quite flexibly. Small permanent-magnet synchronous machines operated under such conditions are frequently referred to as brushless motors or brushless-dc motors, both because of the similarity of their speed-torque characteristics to those of dc motors and because of the fact that one can view these motors as inside-out dc motors, with the commutation of the stator windings produced electronically by the drive electronics. 附录B英文翻译译文 1.1多相同步电机概述 在早期同步电机中,励磁电流一般由被称为励磁机的直流发电机提供。励磁机通常与同步发电机同轴,其电流通过滑环接入发电机的励磁绕组。在现代发电系统中,励决定磁电流由交流励磁机和固态整流器提供(简单的二极管整流桥或者相控整流器)。在有些系统中,整流过程在定子上进行,整流后的直流电流通过滑环送入转子;
另一些系统则被称为无刷励磁系统,作为励磁机的交流发电机和整流系统均在转子上,电流直接供给励磁绕组而无需滑环。

对作为电压源供给阻抗型负载的单台同步发电机来说,其频率由机械驱动机构(或者原动机)的转速决定。发电机感应电势的幅值正比于频率和励磁电流;
发电机的电流和功率因数则由发电机励磁电流、发电机阻抗及负载阻抗来决定。

同步发电机可以方便地并联运行。实际上,工业化国家的电力系统一般由数台甚至数百台发电机并联运行。数千千米的传输线把这些发电机并联在一起给分布于数千平方千米的广大区域负载提供电能。不管是否有设计的必要性,这类巨大系统容量已经很大,以至于在受到干扰和发生故障时仍能保持同步性。由此带来的诸如技术、管理方面的问题必须解决,以保证这样复杂的系统中的机器和人员能协调运作。采用这种并联系统的根本原因可以归结为供电的可靠性、电厂投资的经济性和运行成本。

当一台同步发电机连接到一个包含许多其他同步发电机的巨大并联电网时,其电枢端的电压和频率将被电网所固定。结果是,电枢电流将在气隙空间产生一个以同步转速旋转的磁场分量,该同步速由电网频率决定。为了得到稳定、单向的电磁转矩,定转子磁场必须以相同速度旋转,也就是说转子必须精确地以同步速旋转。由于每一个单独的发电机只是整个电网的一个小分子,它无法有效地影响电网的电压和频率。正因为如此,在研究单台发电机或者几台发电机组时,把电网的其余部分看成一个恒频、恒压源是很自然且很有用的,这种电网通常被称为无穷大干线。

通过分析连接到无穷大干线的单台发电机。我们可以了解同步电机的许多重要性能。同步电机的稳态性能可以用转矩方程式直观表示。并用同步电机理论中习惯采用的符号做适当变换:
(1.1)
式中:
= 每极合成气隙磁通 = 直流励磁绕组的磁势 = 和磁轴线之间的电相角差 正常稳态运行时,电磁转矩和施加于轴上的机械转矩相平衡。在发电机中,原动机的转矩作用在转子转动的方向上,推动转子磁势波超前于合成的气隙磁通波;
而电磁转矩则抵制转子旋转。同步电动机情形正好相反,电磁转矩作用于转子旋转的方向,以克服轴上机械负载的阻力转矩。

如图1.1所示,电磁转矩的变化会导致角度(称为转矩角或矩角)的变化,其关系用图1.1中的曲线(称为矩角特性)来表示,其中励磁电流(转子磁势)和合成气隙磁通假定为常量。正值转矩代表发电机运行,且对应于正值矩角,其旋转磁势的旋转超前于合成气隙磁通。

当原动机转矩增大时,矩角必须增大到直到电磁转矩与轴上的机械转矩相平衡。这一适应过程实际上是动态过程,因为转子机械转速的改变一般要经历一个衰减振荡过程,其振荡中心就是新的稳态平衡点,这一种振荡称为瞬态猎振。对正在经历这一瞬态的实际实际电机来说,可能会因为诸如饱和效应,电机漏阻抗的影响、电机励磁系统的响应等各种因素的作用,导致合成磁通密度和励磁绕组磁势的幅值发生某些变化。为了凸显同步电机运行的基本原理,在下面的讨论中将忽略此类效应。

当负载变化时,转子向新的角位置调整的过程可以在实验室用试验的方法观察到。用电枢电压触发频闪观测仪,从其光亮可以观察到转子的动态(有一个闪动频率,当转子达到同步转速时,才趋于平稳)。另外,电子传感器可以用来检测相对于同步参考系的轴位置,而同步参考系与定子电压相关联。输出信号可以显示在示波器或者记录在数据采集系统中。

从图1.1可以看到,增加原动机的转矩将引起矩角相应增而大。当增加到90°时,电磁转矩达到其最大值,该值称为临界转矩。到达临界转矩点之后,任何原动机转矩的再增加将无法由对应的同步电磁转矩的增加来衡量,结果是同步性难以维继,转子将会升速,这种现象称为失步。在这种情况下,发电机通常会通过断路器的自动动作脱离外电网,原动机则被迅速停掉以防出现危险高速。注意由式1.1可知,临界转矩值可以通过增大励磁电流或者合成气隙磁通来提高。然而这种提高不是没有限制的,因为励磁电流受限于励磁绕组的散热能力,气隙合成磁通则受制于电机铁心的饱和。

由图1.1可知,同步电动机种也会出现类似的情况。那就是若将轴上的负载转矩增加到超过临界转矩时将会引起转子失步并停止。因为只有在同步速度时同步电动机才会产生恒定转矩,所以简单地给施加额定频率的电压并不能使同步电动机起动。在某些情况下,转子上需要安装笼型绕组,电动机可以作为感应电动机起动,当接近同步速时再使其同步。

1.2 短路特性和负载损耗 通过适当的电流互感器,将同步发电机的三相电枢绕组短路后进行试验,就可以测得短路特性。试验时,让电机运行于同步速度,逐渐增大励磁电流,就可以得到电枢电流和励磁电流之间的函数关系。这一函数关系趁为短路特性。图1.2中的occ代表开路特性而scc代表短路特性。

当电枢短路时,Va = 0(并且电流采用发电机惯例):
(1.2)
图1.3是对应的相量图。由于电阻远小于同步电抗,所以电枢电流滞后于感应电势接近90°。因此,电枢反应的磁势几乎作用在磁极轴线上,而方向却和励磁励势相反。如图中分别代表电枢反应磁势和励磁磁势的相量 和 所示。

合成磁势产生合成气隙磁通波,进而产生合成电压。该电压等于电枢电阻上的压降加上漏抗上的压降,即:
(1.3)
在许多同步电机中,电枢电阻可以忽略不计,漏抗的标幺值0.10~0.20之间,取典型值0.15.也就是说,在电枢电流为额定值时,漏抗压降标幺值约为0.15。由式1.3可知,气隙线上对应于额定电枢电流的合成电压标幺值约为0.15,即合成气隙磁通为正常电压下气隙磁通的0.15倍。所以,电机运行在不饱和状态。短路电流在从0直到额定电枢电流以上的范围内,都与励磁电流成正比,其关系曲线为一条直线,如图1.2所示。

非饱和同步电抗(对应于电机的不饱和运行)可根据开路特性和短路特性求得。对于任意合理的励磁电流,如图1.2中的Of,在短路特性上对应的短路电枢电流为O'b;
对同样的励磁电流,从气隙线上读得的对应的不饱和感应电势Oa。注意,由于假设电机运行在不饱和状态,所以感应电势值必须从气隙线上读取。如果对应于Oa的线﹣中点电压为,对应于O'b的每相电枢电流为,则如果忽略电枢电阻,就可由式1.2求得不饱和同步电抗为:
(1.4)
式中下标ag和sc分别用线﹣中点电压(V)的有效值和每相电流(A)的有效值表示,则同步电抗就是每相的欧姆值。

注意计算同步电抗欧姆值时应该用相电势或者说线﹣中点电势值。通常开路饱和曲线给出的是线﹣线电势,必须把它除以,化为线﹣中点值。

若在额定点或在额定点附近运行,有时可以吧电机看成一个等效的不饱和电机,其磁化曲线为通过原点和开路特性上的额定电压点的直线,如图1.4中的虚线Op所示。根据此假设,额定电压 时同步电抗的饱和值为:
(1.5) 式中:就是从短路特性上读取的电枢电流O'c。其读取方法为:如图1.4所示,在开路特性上读取对应于的励磁电流Of',再从短路特性上取对应于励磁电流为Of'的电枢电流O'c。与不饱和同步电抗一样,若和是标幺值,则同步电抗也是标幺值;
若和分别为线﹣中点电压和每相电流的有效值,则同步电抗为每相欧姆值,这种用一个饱和电抗来表示饱和效应的方法,在对精度要求不高时,效果是令人满意的。

开路特性上对应于额定电压的励磁电流与短路特性上对应于额定电流的励磁电流的比值定义为短路比(SCR)。在图1.4中,即为:
(1.6) 可以推出,短路比是由式1.5得到的饱和同步电抗标幺值的倒数。通常把达到额定空载电压所需的励磁电流Of'记为AFNL (Amperes FieldNo Load),把额定短路电流Of“所需的励磁电流即为AFSC(Amperes Field Short Circuit).。因此,短路比可以写成:
(1.7) 在进行短路实验时,如果测到了驱动电机的机械功率,则从该功率可以得到电枢电流引起的损耗的信息。因为短路运行时,电机内磁通很小,铁心损耗通常可以忽略不计。在稳态短路时,用来驱动同步电机的机械功率就等于摩擦损耗和风阻损耗(这两个损耗可以在零励磁电流开路试验中求得)再加上电枢电流引起的损耗。所以,电枢电流引起的损耗可以通过输入的机械功率减去摩擦损耗和风阻损耗得到。由短路电枢电流引起的损耗通常统称为短路负载损耗。图1.5示出了短路负载损耗和电枢电流之间的典型的函数曲线。通常,它和电枢电流之间的关系近似为抛物线。

短路负载损耗包括电枢电阻损耗,电枢漏磁通引起的局部铁心损耗以及合成磁通引起的很小的铁心损耗。测得直流电阻值,如果需要,再根据用短路试验时测取的绕组温度对该电阻值加以校正,就可以计算出直流电阻上的损耗。对铜导体来说:
(1.8) 式中和分别是在摄氏温度T和t时的电阻值。如果从短路负载损耗中减去直流电阻损耗,其差即为由于集肤效应和涡流在电枢导体中引起的损耗加上电枢漏磁通引起的局部铁心损耗。短路负载损耗和直流电阻损耗只差是由电枢中的交变电流引起的附加损耗。这些损耗就是附录D描述的负载杂散损耗,通常认为额定负载和短路运行时,这一损耗相等,它是电枢电流的函数,如图5.10的曲线所示。

同其他交流装置一样,电枢绕组的等效电阻可以用该电枢电流时的功率损耗除以电流的平方而得到。当假设杂散负载损耗仅是电枢电流的函数时,可以从短路负载损耗求得电枢绕组的等效电阻:
(1.9) 如果短路负载损耗和电枢电流都用标幺值表示,等效电阻也为标幺值。如果短路负载损耗用实际的每相值表示,电枢电流用实际的安培值表示,则等效电阻为每相的欧姆值。通常,在额定电流时求得的具有足够的精度,并假设其为常数。

5.9 小结 在稳态运行时,多相同步发电机运行的物理特征可以简单地用两个磁场之间的相互作用来解释。定子上多相电流产生一个旋转磁通波,转子上的直流励磁电流也会产生一个相对于转子恒定的磁通波。只有当转子和定子磁通波同步旋转时,才会产生恒定的转矩。在这种情况下,转子和定子磁通波之间具有恒定的角位移,结果是所产生的转矩正比于该角位移的正弦值。

我们已经知道,可以用一组简单的试验来确定同步电机的有效参数,例如同步电抗或。其中的两个试验是开路试验和短路试验。开路实验可以测得电机端电压与励磁电流之间的函数关系;
短路试验时电枢绕组短路,可以测得电枢短路电流和励磁电流之间的函数关系。这些试验方法是一种测试技术的特例,不仅对于同步电机,而且对于所有能用戴维南线性等效电路近似表示其性态的电气设备都适用。从戴维南定理来看,开路试验给出了内电势,而短路试验给出了内阻抗的信息。具体就电机来说,开路试验给出了相当于励磁损耗、铁心损耗以及摩擦损耗和风阻损耗(对旋转电机而言)等信息;
短路试验给出了有关负载电流对磁场反作用、漏阻抗以及与负载电流相关的损耗和杂散电流等信息。真正使问题复杂化的是磁场非线性的影响。通过把电机等效成一个不饱和电机,可以近似考虑非线性效应。该等效不饱和电机的磁化曲线为图1.4中的直线Op,同步电抗可以凭经验调整到式1.5的饱和值。

在许多场合,同步电机接在恒频,恒压的无穷大干线上运行。此时,同步电机的转速由干线频率决定,输出功率正比于干线电压、电机内电势(当然也就正比于励磁电流)和其相角差(功角)的正弦之积;
反比于干线电压和内电势之间的净电抗值。

电机端口的有功功率由轴上的输入功率(如果用作发电机)或者轴上的负载(如果用作电动机)所决定;
而改变励磁电流,可以调节无功功率。当励磁电流较小时,电机从干线上吸收无功功率,功角较大。增大励磁电流将会减少电机吸收的无功功率以及电机的功角。达到一定的励磁电流时,电机的功率因数会变成1,继续增加励磁电流,则会导致电机向干线输送无功功率。

一旦拉入同步,接到恒频电源上的同步电动机就可以有效地运行。然而,我们知道,只有在同步转速时,同步电动机才会产生恒定转矩,所以同步电动机没有起动转矩。为了使同步电动机能够自起动,可以在转子的极面上安装被称为阻尼器(或者阻尼绕组)的笼型绕组。在不加励磁的情况下,阻尼绕组产生的感应电动力矩可以把转子加速到接近同步速,如果负载和电机惯性不太大,当励磁绕组加上直流励磁时,电动机就会被拉入同步。

另外,同步电动机可以用在多相变频驱动系统中。在则中场合,它可以很容易起动且操作灵活。这种系统中的小型永磁同步电机通常称为无刷电动机或者无刷直流电动机,原因有二:一是速度-转矩特性类似于直流电机;
二是人们可以把该电机完全看成一种直流电动机,其励磁绕组位于转子上,其电枢绕组通过开关器件进行电子换向。

附录C 仿真系统登录界面代码 function varargout = dl(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @dl_OpeningFcn, ... 'gui_OutputFcn', @dl_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) %输入参数判断处理 gui_State.gui_Callback = str2func(varargin{1}); end if nargout %输出参数判断处理 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function dl_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; %选择默认的命令行输出 set(handles.dl_user,'String',''); %将dl_user这个文本框内容清空 set(handles.dl_code,'String',''); %将dl_code这个文本框内容清空 handles.xinghao = ''; handles.user='gyl'; handles.code='000'; guidata(hObject, handles); %更新句柄结构 ha=axes('units','normalized','position',[0 0 1 1]); %设置界面背景 uistack(ha,'down') II=imread('02.jpg'); image(II) colormap gray set(ha,'handlevisibility','off','visible','off'); javaFrame = get(hObject, 'JavaFrame'); %更改小图标 javaFrame.setFigureIcon(javax.swing.ImageIcon('小熊.jpg')); function varargout = dl_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; %从句柄结构获得默认命令行输出 function dl_user_Callback(hObject, eventdata, handles) function dl_user_CreateFcn(hObject, eventdata, handles) if ispc&&isequal(get(hObject,’ BackgroundColor’)), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function dl_code_Callback(hObject, eventdata, handles) function dl_code_CreateFcn(hObject, eventdata, handles) set(hObject,'UserData',''); set(hObject,'String',''); if ispc&&isequal(get(hObject,’ BackgroundColor’)), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function pushbutton1_Callback(hObject, eventdata, handles) %登录按钮callback passChar = get(handles.dl_code,'UserData'); %得到密码文本框的UserData userChar = get(handles.dl_user,'String'); %得到密码文本框的String if strcmp(passChar,handles.code)&strcmp(userChar,handles.user) %密码及用户验证正确 msgbox('欢迎进入同步发电机仿真系统'); close(gcf); %关闭消息框 delete(dl); %关闭登录界面 fangzhenjiemian; %进入仿真主界面 else errordlg('用户名或密码错误,请重新输入','错误提示','warn'); set(handles.dl_user,'String',''); %将dl_user这个文本框内容清空 set(handles.dl_code,'String','','UserData','');%清空密码框的内容及UserData end function dl_code_KeyPressFcn(hObject, eventdata, handles) currChar = get(gcf,'CurrentCharacter');%得到当前键盘输入内容 oldChar = get(hObject,'UserData');%得到密码框UserData xinghao=get(hObject,'string'); userChar=get(handles.dl_user,'string'); if (currChar>='0'&currChar<='9')|(currChar>='a'&currChar<='z')... |(currChar>='A'&currChar<='Z') %按下的是数字键或字母键 oldChar = [oldChar currChar]; xinghao=[handles.xinghao '*']; set(hObject,'UserData',oldChar,'string',xinghao); handles.xinghao=xinghao; guidata(hObject,handles); elseif double(currChar)==26|double(currChar)==8 %按下替补或者退格键 oldChar=''; handles.xinghao=''; set(hObject,'UserData',oldChar,'string',handles.xinghao); guidata(hObject,handles); elseif double(currChar)==13 %按下回车键 set(hObject,'string',xinghao); if strcmp(oldChar,handles.code)&strcmp(userChar,handles.user) msgbox('欢迎进入同步发电机仿真系统'); delete(gcf); delete(dl); fangzhenjiemian; else set(hObject,'string','','UserData',''); handles.xinghao=''; guidata(hObject,handles); errordlg('用户名或密码错误,请重新输入','错误提示','warn'); end else set(hObject,'UserData',oldChar); set(hObject,'string',handles.xinghao); end function pushbutton2_Callback(hObject, eventdata, handles) %退出按钮 exit; %退出 附录D 仿真主界面代码 function varargout = fangzhenjiemian(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @fangzhenjiemian_OpeningFcn, ... 'gui_OutputFcn', @fangzhenjiemian_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) %输入参数判断处理 gui_State.gui_Callback = str2func(varargin{1}); end if nargout %输出参数判断处理 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function fangzhenjiemian_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; %选择默认的命令行输出 guidata(hObject, handles); %更新句柄结构 axes(handles.axes2); %将控件坐标轴axes2置为当前 imshow(imread('jiemian.jpg')); %在axes2显示图片jiemian function varargout = fangzhenjiemian_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; %从句柄结构获得默认命令行输出 function pushbutton1_Callback(hObject, eventdata, handles) %“功角特性”按钮 msgbox({'同步发电机的功角特性是指在保持转速'... %弹出消息框 '为n、励磁电流If和电枢电压为为常数时,'... '同步发电机的电磁功率与功率角的关系。'... '该实验是对一个隐极发电机进行仿真'},'help') pause(2); %延迟2秒 delete(gcf); %关闭消息框 gongjiaotexing; %进入gongjiaotexing界面 function pushbutton2_Callback(hObject, eventdata, handles) %“单相”短路按钮 msgbox({'此单相短路为同步发电机的a相对中点短路。'... '是在假设短路前空载运行,则短路后a相电'... '压为0,b、c相电流为0'},'help') pause(2); delete(gcf); danxiangduanlu; %进入danxiangduanlu界面 function pushbutton3_Callback(hObject, eventdata, handles)%“两相空载短路”按钮 msgbox({'此两线短路为同步发电机b、c相间短路。'... '短路前为空载运行'},'help') pause(2); delete(gcf); liangxiangkongzaiduanlu; %进入liangxiangkongzaiduanlu界面 function pushbutton4_Callback(hObject, eventdata, handles)%“空载建立电压”按钮 msgbox({'空载建立电压的仿真,即当原动机带动发电'... '机在同步转速下运行,励磁绕组通过适当的'... '励磁电流,电枢绕组不带任何负载时的运行'... '情况,转矩与转速(或转差率)的之间函数关系'},'help') pause(2); delete(gcf); kz; %进入kz界面 function pushbutton5_Callback(hObject, eventdata, handles)%“三相突然短路”按钮 msgbox({'发电机的突然三相短路,是电力系统最严重'... '的故障,对电机本身和相关的电气设备都可'... '能产生严重的影响,研究它有着很重要的意义'},'help') pause(2); delete(gcf); sanxiangduanlu; %进入sanxiangduanlu 界面 function pushbutton6_Callback(hObject, eventdata, handles) msgbox({'同步发电机是根据电磁感应原理工作的,'... '它通过转子磁场和定子绕组的相对运动,'... '所以此实验很重要'},'help') pause(2); delete(gcf); zhuanziraozuduanlu; %进入zhuanziraozuduanlu界面 function shutkey_Callback(hObject, eventdata, handles) function instruction_Callback(hObject, eventdata, handles) function help_Callback(hObject, eventdata, handles) winopen('仿真说明.txt'); %打开默认路径下的的txt文“仿真说明” function exit_Callback(hObject, eventdata, handles) exit; function gongjiao_1_Callback(hObject, eventdata, handles) gongjiaotexing; function danxiang_2_Callback(hObject, eventdata, handles) danxiangduanlu; function liangxiang_3_Callback(hObject, eventdata, handles) liangxiangkongzaiduanlu; function kongzai_4_Callback(hObject, eventdata, handles) kz; function sanxiang_5_Callback(hObject, eventdata, handles) sanxiangduanlu; function zhuanding_6_Callback(hObject, eventdata, handles) zhuanziraozuduanlu; function pushbutton8_Callback(hObject, eventdata, handles) exit;附录E各子界面及同步发电机各状态微分方程源程序 1.隐极同步发电机功角特性仿真源程序 (1)子界面源程序 function varargout = gongjiaotexing(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @gongjiaotexing_OpeningFcn, ... 'gui_OutputFcn', @gongjiaotexing_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) %输入参数判断处理 gui_State.gui_Callback = str2func(varargin{1}); end if nargout %输出参数判断处理 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function gongjiaotexing_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; %选择默认的命令行输出 guidata(hObject, handles); %更新句柄结构 if strcmp(get(hObject,'Visible'),'off') m1=str2num(get(handles.edit1,'String')); %得到edit1的String,并将其转换数字赋给m1 R1=str2num(get(handles.edit2,'String')); %得到edit2的String 并转换 CphiN=str2num(get(handles.edit3,'String')); %得到edit3的String并转换 Un=str2num(get(handles.edit4,'String')); %得到edit4的String并转换 Sn=str2num(get(handles.edit5,'String')); %得到edit5的String并转换 Xs=str2num(get(handles.edit6,'String')); %得到edit5的String并转换 gongjiao; end function varargout = gongjiaotexing_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function pushbutton1_Callback(hObject, eventdata, handles) [f,p]=uiputfile({'*.jpg'},'Save picture'); %打开保存及保存位置 str=strcat(p,f); pix=getframe(handles.axes1); imwrite(pix.cdata,str,'jpg'); %将axes图片写入jpg格式中 function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit4_Callback(hObject, eventdata, handles) function edit4_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit5_Callback(hObject, eventdata, handles) function edit5_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit6_Callback(hObject, eventdata, handles) function edit6_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function pushbutton2_Callback(hObject, eventdata, handles)%“关闭此窗口”按钮 q=questdlg('确定要关闭此窗口吗?','关闭窗口','关闭','取消',2); if strcmp(q,'关闭') delete(gcf); %关闭当前提问对话框 end function pushbutton3_Callback(hObject, eventdata, handles)%“退出系统”按钮 a=questdlg('确定要退出系统吗?','退出系统','退出系统','取消',2); if strcmp(a,'退出系统') exit; end function pushbutton4_Callback(hObject, eventdata, handles) %“更新参数”按钮 m1=str2num(get(handles.edit1,'String')); R1=str2num(get(handles.edit2,'String')); CphiN=str2num(get(handles.edit3,'String')); Un=str2num(get(handles.edit4,'String')); Sn=str2num(get(handles.edit5,'String')); Xs=str2num(get(handles.edit6,'String')); axes(handles.axes1); cla; gongjiao; (2)该子界面所调用的M文件gongjiao,源程序为:
U1=Un/sqrt(3)*10^3; %计算定子额定相电压 In=Sn/sqrt(3)/Un; %计算定子额定电流 I1=In; %定子额定电流I临时变量 phiN=acos(CphiN); %计算功率角 SphiN=sqrt(1-CphiN^2); %计算对应角度的正弦值 P2N=Sn*CphiN; %计算输出有功 PeN=P2N; %计算额定电磁功率 Q2N=Sn*SphiN; %计算输出无功功率 E0=U1+j*7*(I1*cos(-1*phiN)+j*I1*sin(-1*phiN)); %计算励磁电动势 E0r=abs(E0); %励磁电动势E0的有效值 E0a=angle(E0); %励磁电动势E0的相角 E=E0a;U=U1;X=Xs;I=I1; %中间变量 th=0:0.01:pi; %功率角变化范围0-,间隔0.01 R=R1; Pe=3*E*(R*E-R*U*cos(th)+X*U*sin(th))/(R*R+X*X); %计算电磁功率 plot(th,Pe,'k'); %画功角特性曲线 text(3,350,strcat('R1=',num2str(R),'\Omega'),'Color','black');%标注曲线对应电阻值 hold on; R=R1*10; Pe=3*E*(R*(E-U*cos(th))+X*U*sin(th))/(R*R+X*X); plot(th,Pe,'r') text(2.8,1000,strcat('R1=',num2str(R),'\Omega'),'Color','blue'); Peo=3*E*U*sin(th)/X; plot(th,Peo,'m'); text(0.5,1300,'R1=0\Omega','Color','magenta'); xlabel('功率角\theta/rad'); ylabel('电磁功率Pe/kW'); title('隐极同步发电机功角特性'); 2.三相同步发电机空载建立电压仿真源程序 ()子界面源程序 function varargout = kz(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @kz_OpeningFcn, ... 'gui_OutputFcn', @kz_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function kz_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); if strcmp(get(hObject,'Visible'),'off'); t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=[0;0;0;0;0]; [t,y]=ode113('kongzaiyouzuni',[t0,tf],y0); plot(t,y(:,3),'b'); xlabel('Time[s]') ylabel('Ifd(A)') title('同步发电机空载建立电压有阻尼仿真结果') end function varargout = kz_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function popupmenu1_Callback(hObject, eventdata, handles) axes(handles.axes1); cla; t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); switch get(handles.popupmenu1, 'Value') case 1 set(handles.edit3,'String','[0;0;0;0;0]') y0=[0;0;0;0;0]; [t,y]=ode113('kongzaiyouzuni',[t0,tf],y0); plot(t,y(:,3),'b'); xlabel('Time[s]') ylabel('Ifd(A)') title('同步发电机空载建立电压有阻尼仿真结果') case 2 set(handles.edit3,'String','[0;0;0]') y0=[0;0;0]; [t,y]=ode113('kongzaiwuzuni',[t0,tf],y0); plot(t,y(:,3),'r'); xlabel('Time[s]') ylabel('Ifd(A)') title('同步发电机空载建立电压无阻尼仿真结果') end function pushbutton1_Callback(hObject, eventdata, handles) [f,p]=uiputfile({'*.jpg'},'Save picture'); str=strcat(p,f); pix=getframe(handles.axes1); imwrite(pix.cdata,str,'jpg'); function pushbutton2_Callback(hObject, eventdata, handles) q=questdlg('确定要关闭此窗口吗?','关闭窗口','关闭','取消',2); if strcmp(q,'关闭') delete(gcf); end function pushbutton3_Callback(hObject, eventdata, handles) a=questdlg('确定要退出系统吗?','退出系统','退出系统','取消',2); if strcmp(a,'退出系统') exit; end function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function pushbutton5_Callback(hObject, eventdata, handles) popupmenu1_Callback(hObject, eventdata, handles); (2)该子界面调用的有阻尼情况下的M文件kongzaiyouzuni:
Function dydt = f(t,y) %定义微分方程函数 %电机基本参数数据设置 R=2.9069;rfd=5.9013e-01;rkd=11.900;rkq=20.081;ufd=24;w=377;l1=3.0892e-01;lmd=3.2164; lmq=9.7153e-01;l1fd=3.0712e-01;l1kd=4.9076e-01;l1kq=1.0365; Ld=lmd+l1;lq=lmq+l1;mafd0=lmd;makd0=lmd;makq0=lmq;lfd=l1fd+lmd;lkd=l1kd+lmd;lkq=l1kq+lmq;mfkd=lmd; L=[ld,0,lmd,lmd,0; %输入电感系数矩阵 0,lq,0,0,lmq; lmd,0,lfd,lmd,0; lmd,0,lmd,lkd,0; 0,lmq,0,0,lkq]; G=[0,-lq,0,0,-3/2*makq0; ld,0,mafd0,makd0,0; 0,0,0,0,0; 0,0,0,0,0; 0,0,0,0,0]; R=[r,0,0,0,0; %输入电阻系数矩阵 0,r,0,0,0; 0,0,rfd,0,0; 0,0,0,rkd,0; 0,0,0,0,rkq]; Udq0=[0,0,ufd,0,0]'; %输入电压向量 Dydt=l\(udq0-w*g*y-r*y); %列写微分方程 (3)该子界面调用的无阻尼情况下的M文件kongzaiwuzuni:
function dydt = f(t,y) r=2.9069;Rfd=5.9013E-01;Rkd=11.900;Rkq=20.081;Ufd=24;w=377;L1=3.0892E-01; Lmd=3.2164;Lmq=9.7153E-01;L1fd=3.0712E-01;L1kd=4.9076E-01;L1kq=1.0365; Ld=Lmd+L1;Lq=Lmq+L1;Mafd0=Lmd;Makd0=Lmd;Makq0=Lmq;Lfd=L1fd+Lmd;Lkd=L1kd+Lmd;Lkq=L1kq+Lmq;Mfkd=Lmd; L=[Ld,0,Lmd; %输入电感系数矩阵 0,Lq,0; Lmd,0,Lfd]; G=[0,-Lq,0; Ld,0,Mafd0; 0,0,0]; R=[r,0,0; %输入电阻系数矩阵 0,r,0; 0,0,Rfd]; Udq0=[0,0,Ufd]'; %输入电压向量 dydt=L\(Udq0-w*G*y-R*y); %列写微分方程 3同步发电机单相突然短路仿真源程序 (1)子界面源程序 function varargout = danxiangduanlu(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @danxiangduanlu_OpeningFcn, ... 'gui_OutputFcn', @danxiangduanlu_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function danxiangduanlu_OpeningFcn(hObject, eventdata, handles, varargin) if strcmp(get(hObject,'Visible'),'off') t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=eval(get(handles.edit3,'String')); [t,y]=ode113('danxiang',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机突然单相短路有阻尼Ifd变化规律') end handles.output = hObject; guidata(hObject, handles); function varargout = danxiangduanlu_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function popupmenu1_Callback(hObject, eventdata, handles) t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); set(handles.popupmenu2,'Value',1); axes(handles.axes1); cla; value=get(hObject,'value'); switch value case 1 set(handles.edit3,'String','[140;0;0;0]'); str={'Ifd变化规律';'Ikd变化规律';'Ibeta0变化规律'}; set(handles.popupmenu2,'String',str); y0=eval(get(handles.edit3,'String')); [t,y]=ode113('danxiang',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机突然单相短路有阻尼Ifd变化规律') case 2 set(handles.edit3,'String','[140;0]') str={'Ifd变化规律';'Ibeta0变化规律'}; set(handles.popupmenu2,'String',str); y0=eval(get(handles.edit3,'String')); [t,y]=ode113('danxiangduanwu',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机突然单相短路无阻尼Ifd变化规律') end function popupmenu1_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function popupmenu2_Callback(hObject, eventdata, handles) axes(handles.axes1); cla; hh=get(handles.popupmenu1,'value'); t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=eval(get(handles.edit3,'String')); Var=get(handles.popupmenu2,'value'); switch hh case 1 [t,y]=ode113('danxiang',[t0,tf],y0); switch Var case 1 plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机突然单相短路有阻尼Ifd变化规律') case 2 plot(t,y(:,2)); xlabel('Time[s]') ylabel('Ikd[A]') title('同步发电机突然单相短路有阻尼Ikd变化规律') case 3 plot(t,y(:,4)); xlabel('Time[s]') ylabel('Ibeta0[A]') title('同步发电机突然单相短路有阻尼Ibeta0变化规律') end case 2 [t,y]=ode113('danxiangduanwu',[t0,tf],y0); switch Var case 1 plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机突然单相短路无阻尼Ifd变化规律') case 2 plot(t,y(:,2)); xlabel('Time[s]') ylabel('Ibeta0[A]') title('同步发电机突然单相短路无阻尼Ibeta0变化规律') end end function popupmenu2_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function pushbutton1_Callback(hObject, eventdata, handles) [f,p]=uiputfile({'*.jpg'},'Save picture'); str=strcat(p,f); pix=getframe(handles.axes1); imwrite(pix.cdata,str,'jpg'); function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function pushbutton2_Callback(hObject, eventdata, handles) q=questdlg('确定要关闭此窗口吗?','关闭窗口','关闭','取消',2); if strcmp(q,'关闭') delete(gcf); end function pushbutton3_Callback(hObject, eventdata, handles) a=questdlg('确定要退出系统吗?','退出系统','退出系统','取消',2); if strcmp(a,'退出系统') exit; end function pushbutton4_Callback(hObject, eventdata, handles) popupmenu1_Callback(hObject, eventdata, handles); (2)该子界面所调用的有阻尼状态M文件danxiang:
function dydt=f(t,y) r=0.26;Rfd=0.13;Rkd=0.0224;Rkq=0.02;Ufd=17.8876;w=314;L1=1.14E-3;Lmd=13.7E-3; Lmq=11.0E-3;L1fd=2.1E-3;L1kd=1.4E-3;L1kq=1E-3; Ld=Lmd+L1;Lq=Lmq+L1;Lfd=L1fd+Lmd; Lkd=L1kd+Lmd;Lkq=L1kq+Lmq;L0=L1; L=[Lfd,Lmd,0,-2*Lmd*cos(w*t); Lmd,Lkd,0,-2*Lmd*cos(w*t); 0,0,Lkq,2*Lmq*sin(w*t); Lmd*cos(w*t),Lmd*cos(w*t),-Lmq*sin(w*t),-(Ld+Lq+L0)+(Ld-Lq)/2*cos(2*w*t)]; G=[0,0,0,2*Lmd*sin(w*t); 0,0,0,2*Lmd*sin(w*t); 0,0,0,2*Lmq*cos(w*t); -Lmd*sin(w*t),-Lmd*sin(w*t),-Lmq*cos(w*t),2*(Ld-Lq)*sin(2*w*t)]; R=[Rfd,0,0,0; 0,Rkd,0,0; 0,0,Rkq,0; 0,0,0,-3*r]; Udq0=[Ufd,0,0,0]'; %输入电压向量 dydt=L\(Udq0-w*G*y-R*y); %列写微分方程 (3)该子界面所调用的无阻尼状态M文件danxiangduanwu:
function dydt=f(t,y) r=.26;Rfd=0.13;Rkd=0.0224;Rkq=0.02;ufd=17.8876;w=314;Ll=1.14e-3; Lmd=13.7e-3;Lmq=11.0e-3;Llfd=2.1e-3;Llkd=1.4e-3;Llkq=1e-3; Lfd=Llfd+Lmd;Lkd=Llkd+Lmd;Lkq=Llkq+Lmq;Ld=Lmd+Ll;Lq=Lmq+Ll;L0=Ll; L=[ Lfd, -2*Lmd*cos(w*t); Lmd*cos(w*t), -(Ld+Lq+L0)+(Ld-Lq)/2*cos(2*w*t)] ; G=[ 0, 2*Lmd*sin(w*t); -Lmd*sin(w*t), 2*(Ld-Lq)*sin(2*w*t)]; R=[ Rfd, 0; 0, -3*r]; Uabc=[ufd,0]'; dydt=L\(Uabc-w*G*y-R*y); 4同步发电机三相突然短路仿真源程序 (1)子界面源程序 function varargout = sanxiangduanlu(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @sanxiangduanlu_OpeningFcn, ... 'gui_OutputFcn', @sanxiangduanlu_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function sanxiangduanlu_OpeningFcn(hObject, eventdata, handles, varargin) if strcmp(get(hObject,'Visible'),'off') t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=[20;0;0;0;0]; [t,y]=ode45('sanxiangduanluzuni',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Id[A]') title('同步发电机三相突然短路有阻尼Id变化规律') end handles.output = hObject; guidata(hObject, handles); function varargout = sanxiangduanlu_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function popupmenu1_Callback(hObject, eventdata, handles) t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); set(handles.popupmenu2,'Value',1); axes(handles.axes1); cla; value=get(hObject,'value'); switch value case 1 str={'[20;0;0;0;0]'}; set(handles.edit3,'String',str); str={'Id变化规律';'Ifd变化规律';'Ia变化规律'}; set(handles.popupmenu2,'String',str); y0=[20;0;0;0;0]; [t,y]=ode113('sanxiangduanluzuni',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机三相短路有阻尼Id变化规律') case 2 str={'[0;0;10]'}; set(handles.edit3,'String',str) str={'Id变化规律';'Ifd变化规律';'Ia变化规律'}; set(handles.popupmenu2,'String',str); y0=[0;0;10]; [t,y]=ode113('sanxiangduanwu',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机三相短路无阻尼Id变化规律') end function popupmenu1_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function popupmenu2_Callback(hObject, eventdata, handles) axes(handles.axes1); cla; Var=get(handles.popupmenu2,'value'); hh=get(handles.popupmenu1,'value'); switch hh case 1 t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=[20;0;0;0;0]; [t,y]=ode113('sanxiangduanluzuni',[t0,tf],y0); switch Var case 1 plot(t,y(:,1)); xlabel('Time[s]') ylabel('Id[A]') title('同步发电机三相短路有阻尼Id变化规律') case 2 plot(t,y(:,3)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机三相短路有阻尼Ifd变化规律') case 3 w=314; ia=y(:,1).*sin(w*t)+y(:,2).*cos(w*t); plot(t,ia) xlabel('Time[s]') ylabel('Ia[A]') title('同步发电机三相短路有阻尼Ia变化规律') end case 2 t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=[0;0;10]; [t,y]=ode113('sanxiangduanwu',[t0,tf],y0); switch Var case 1 plot(t,y(:,1)); xlabel('Time[s]') ylabel('Id[A]') title('同步发电机三相短路无阻尼Id变化规律') case 2 plot(t,y(:,3)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机三相短路无阻尼Ifd变化规律') case 3 w=314; ia=y(:,1).*sin(w*t)+y(:,2).*cos(w*t); plot(t,ia); xlabel('Time[s]') ylabel('Ia[A]') title('同步发电机三相短路无阻尼Ia变化规律') end end function popupmenu2_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function pushbutton1_Callback(hObject, eventdata, handles) q=questdlg('确定要关闭此窗口吗?','关闭窗口','关闭','取消',2); if strcmp(q,'关闭') delete(gcf); end function savepicture_Callback(hObject, eventdata, handles) [f,p]=uiputfile({'*.jpg'},'Save picture'); str=strcat(p,f); pix=getframe(handles.axes1); imwrite(pix.cdata,str,'jpg'); function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function pushbutton3_Callback(hObject, eventdata, handles) a=questdlg('确定要退出系统吗?','退出系统','退出系统','取消',2); if strcmp(a,'退出系统') exit; end function edit4_Callback(hObject, eventdata, handles) function edit4_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function pushbutton4_Callback(hObject, eventdata, handles) popupmenu2_Callback(hObject, eventdata, handles); (2)该子界面所调用的有阻尼状态M文件sanxiangduanluzuni function dydt = f(t,y) %下面输入电机基本参数数据 r=2.9069;Rfd=5.9013E-01;Rkd=11.900;Rkq=20.081;Ufd=24;w=314;L1=3.0892E-01; Lmd=3.2164;Lmq=9.7153E-01;L1fd=3.0712E-01;L1kd=4.9076E-01;L1kq=1.0365; Ld=Lmd+L1;Lq=Lmq+L1;Mafd0=Lmd;Makd0=Lmd;Makq0=Lmq;Lfd=L1fd+Lmd;Lkd=L1kd+Lmd;Lkq=L1kq+Lmq;Mfkd=Lmd; L=[Ld,0,Lmd,Lmd,0; %输入电感矩阵 0,Lq,0,0,Lmq; Lmd,0,Lfd,Lmd,0; Lmd,0,Lmd,Lkd,0; 0,Lmq,0,0,Lkq]; G=[0,-Lq,0,0,-3/2*Makq0; Ld,0,Mafd0,Makd0,0; 0,0,0,0,0; 0,0,0,0,0; 0,0,0,0,0]; R=[r,0,0,0,0; %输入电阻矩阵 0,r,0,0,0; 0,0,Rfd,0,0; 0,0,0,Rkd,0; 0,0,0,0,Rkq]; Udq0=[-100,0,24,0,0]'; %输入电压向量 dydt=L\(Udq0-w*G*y-R*y); %列写微分方程 (3)该子界面所调用的无阻尼状态M文件sanxiangduanwu:
function dydt = f(t,y) %下面输入电机基本参数数据 r=2.9069;Rfd=5.9013E-01;Rkd=11.900;Rkq=20.081;Ufd=24;w=314;L1=3.0892E-01;Lmd=3.2164;Lmq=9.7153E-01;L1fd=3.0712E-01;L1kd=4.9076E-01;L1kq=1.0365; Ld=Lmd+L1;Lq=Lmq+L1;Mafd0=Lmd;Makd0=Lmd;Makq0=Lmq;Lfd=L1fd+Lmd;Lkd=L1kd+Lmd;Lkq=L1kq+Lmq;Mfkd=Lmd; L=[Ld,0,Lmd; %输入电感矩阵 0,Lq,0; Lmd,0,Lfd]; G=[0,-Lq,0; Ld,0,Mafd0; 0,0,0]; R=[r,0,0,; %输入电阻矩阵 0,r,0; 0,0,Rfd]; Udq0=[-100,-10,24]'; %输入电压向量 dydt=L\(Udq0-w*G*y-R*y) ; %列写微分方程 5同步发电机突然两相空载短路仿真源程序 (1)子界面源程序 function varargout = liangxiangkongzaiduanlu(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @liangxiangkongzaiduanlu_OpeningFcn, ... 'gui_OutputFcn', @liangxiangkongzaiduanlu_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function liangxiangkongzaiduanlu_OpeningFcn(hObject, eventdata, handles, varargin) if strcmp(get(hObject,'Visible'),'off') t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=[140;0;0;0]; [t,y]=ode113('liangxiangduanlu',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机突然两相空载短路有阻尼Ifd变化规律') end handles.output = hObject; guidata(hObject, handles); function varargout = liangxiangkongzaiduanlu_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function pushbutton1_Callback(hObject, eventdata, handles) popupmenu2_Callback(hObject, eventdata, handles); function pushbutton2_Callback(hObject, eventdata, handles) [f,p]=uiputfile({'*.jpg'},'Save picture'); str=strcat(p,f); pix=getframe(handles.axes1); imwrite(pix.cdata,str,'jpg'); function pushbutton3_Callback(hObject, eventdata, handles) q=questdlg('确定要关闭此窗口吗?','关闭窗口','关闭','取消',2); if strcmp(q,'关闭') delete(gcf); end function pushbutton4_Callback(hObject, eventdata, handles) a=questdlg('确定要退出系统吗?','退出系统','退出系统','取消',2); if strcmp(a,'退出系统') exit; end function popupmenu1_Callback(hObject, eventdata, handles) t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); set(handles.popupmenu2,'Value',1); axes(handles.axes1); cla; value=get(hObject,'value'); switch value case 1 str={'[140;0;0;0]'}; set(handles.edit3,'String',str); str={'Ifd变化规律';'Ikd变化规律';'Ibeta0变化规律'}; set(handles.popupmenu2,'String',str); y0=[140;0;0;0]; [t,y]=ode113('liangxiangduanlu',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机突然两相短路有阻尼Ifd变化规律') case 2 str={'[140;0]'}; set(handles.edit3,'String',str) str={'Ifd变化规律';'Ibeta0变化规律'}; set(handles.popupmenu2,'String',str); y0=[140;0]; [t,y]=ode113('liangxiangkongzaiduanwu',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ibeta0[A]') title('同步发电机突然两相短路无阻尼Ifd变化规律') end function popupmenu1_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function popupmenu2_Callback(hObject, eventdata, handles) axes(handles.axes1); cla; Var=get(handles.popupmenu2,'value'); hh=get(handles.popupmenu1,'value'); switch hh case 1 t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=[140;0;0;0]; [t,y]=ode113('liangxiangduanlu',[t0,tf],y0); switch Var case 1 plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机单相突然短路有阻尼Ifd变化规律') case 2 plot(t,y(:,2)); xlabel('Time[s]') ylabel('Ikd[A]') title('同步发电机单相突然短路有阻尼Ikd变化规律') case 3 plot(t,y(:,4)); xlabel('Time[s]') ylabel('Ibeta0[A]') title('同步发电机单相突然短路有阻尼Ibeta0变化规律') end case 2 t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=[140;0]; [t,y]=ode113('liangxiangkongzaiduanwu',[t0,tf],y0); switch Var case 1 plot(t,y(:,1)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机单相突然短路无阻尼Ifd变化规律') case 2 plot(t,y(:,2)); xlabel('Time[s]') ylabel('Ibeta0[A]') title('同步发电机单相突然短路无阻尼Ibeta变化规律') end end function popupmenu2_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end (2)该子界面所调用的有阻尼状态M文件liangxiangduanlu:
function dydt=f(t,y) % 下面输入电机基本数据:
r=.26;Rfd=0.13;Rkd=0.0224;Rkq=0.02;Ufd=17.8876;w=377;Ll=1.14e-3;Lmd=13.7e-3; Lmq=11.0e-3; Llfd=2.1e-3;Llkd=1.4e-3;Llkq=1e-3; Lfd=Llfd+Lmd;Lkd=Llkd+Lmd;Lkq=Llkq+Lmq;Ld=Lmd+Ll;Lq=Lmq+Ll; L=[ Lfd, Lmd, 0, -Lmd*sin(w*t); Lmd, Lkd, 0, -Lmd*sin(w*t); 0, 0, Lkq, -Lmq*cos(w*t); Lmd*sin(w*t),Lmd*sin(w*t),Lmq*cos(w*t),-(Ld+Lq)/2+(Ld-Lq)/2*cos(2*w*t)] ; G=[ 0, 0, 0, -Lmd*cos(w*t); 0, 0, 0, -Lmd*cos(w*t); 0, 0, 0, Lmq*sin(w*t); Lmd*cos(w*t), Lmd*cos(w*t),-Lmq*sin(w*t), -(Ld-Lq)*sin(2*w*t)]; R=[ Rfd, 0, 0, 0+0+0; 0, Rkd, 0, 0+0+0; 0, 0, Rkq,0+0+0; 0, 0, 0, -r]; %电压向量 Ualphabeta=[17.8876,0,0,0]'; %微分方程 dydt=L\(Ualphabeta-w*G*y-R*y); (3)该子界面所调用的无阻尼状态M文件liangxiangkongzaiduanwu:
function dydt=tongbufadianji(t,y) r=.26;Rfd=0.13;Rkd=0.0224;Rkq=0.02;Ufd=17.8876;w=377;Ll=1.14e-3;Lmd=13.7e-3;Lmq=11.0e-3; Llfd=2.1e-3;Llkd=1.4e-3;Llkq=1e-3; Lfd=Llfd+Lmd;Lkd=Llkd+Lmd;Lkq=Llkq+Lmq;Ld=Lmd+Ll;Lq=Lmq+Ll; L=[ Lfd, -Lmd*sin(w*t); Lmd*sin(w*t), -(Ld+Lq)/2+(Ld-Lq)/2*cos(2*w*t)] ; G=[ 0, -Lmd*cos(w*t); Lmd*cos(w*t), -(Ld-Lq)*sin(2*w*t)]; R=[Rfd, 0+0+0; 0, -r]; Uabc=[17.8876,0]'; dydt=L\(Uabc-w*G*y-R*y); 6同步发电机转子绕组短路、定子突加对称电压仿真源程序 (1)主界面源程序 function varargout = zhuanziraozuduanlu(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @zhuanziraozuduanlu_OpeningFcn, ... 'gui_OutputFcn', @zhuanziraozuduanlu_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function zhuanziraozuduanlu_OpeningFcn(hObject, eventdata, handles, varargin) if strcmp(get(hObject,'Visible'),'off') t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=[0;0;0;0;0]; [t,y]=ode45('zhuandingzizuni',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Id[A]') title('同步发电机转子绕组短路,定子突加对称电压有阻尼Id变化规律') end handles.output = hObject; guidata(hObject, handles); function varargout = zhuanziraozuduanlu_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function popupmenu1_Callback(hObject, eventdata, handles) t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); set(handles.popupmenu2,'Value',1); axes(handles.axes1); cla; value=get(hObject,'value'); switch value case 1 str={'[0;0;0;0;0]'}; set(handles.edit3,'String',str); str={'Id变化规律';'Ifd变化规律';'Ikd变化规律'}; set(handles.popupmenu2,'String',str); y0=[0;0;0;0;0]; [t,y]=ode113('zhuandingzizuni',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Id[A]') title('同步发电机转子绕组短路,定子突加对称电压有阻尼Id变化规律') case 2 str={'[0;0;0]'}; set(handles.edit3,'String',str) str={'Id变化规律';'Ifd变化规律';'Ia变化规律'}; set(handles.popupmenu2,'String',str); y0=[0;0;0]; [t,y]=ode113('zhuandingziwuzuni',[t0,tf],y0); plot(t,y(:,1)); xlabel('Time[s]') ylabel('Id[A]') title('同步发电机转子绕组短路,定子突加对称电压无阻尼Id变化规律') end function popupmenu1_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function popupmenu2_Callback(hObject, eventdata, handles) axes(handles.axes1); cla; Var=get(handles.popupmenu2,'value'); hh=get(handles.popupmenu1,'value'); switch hh case 1 t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=[0;0;0;0;0]; [t,y]=ode113('zhuandingzizuni',[t0,tf],y0); switch Var case 1 plot(t,y(:,1)); xlabel('Time[s]') ylabel('Id[A]') title('同步发电机转子绕组短路,定子突加对称电压有阻尼Id变化规律') case 2 plot(t,y(:,3)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机转子绕组短路,定子突加对称电压有阻尼Ifd变化规律') case 3 plot(t,y(:,4)); xlabel('Time[s]') ylabel('Ikd[A]') title('同步发电机转子绕组短路,定子突加对称电压有阻尼Ikd变化规律') end case 2 t0=str2num(get(handles.edit1,'String')); tf=str2num(get(handles.edit2,'String')); y0=[0;0;0]; [t,y]=ode113('zhuandingziwuzuni',[t0,tf],y0); switch Var case 1 plot(t,y(:,1)); xlabel('Time[s]') ylabel('Id[A]') title('同步发电机转子绕组短路,定子突加对称电压无阻尼Id变化规律') case 2 plot(t,y(:,3)); xlabel('Time[s]') ylabel('Ifd[A]') title('同步发电机转子绕组短路,定子突加对称电压无阻尼Ifd变化规律') case 3 w=314; ia=y(:,1).*sin(w*t)+y(:,2).*cos(w*t); plot(t,ia); xlabel('Time[s]') ylabel('Ia[A]') title('同步发电机转子绕组短路,定子突加对称电压无阻尼Ia变化规律') end end function popupmenu2_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function pushbutton1_Callback(hObject, eventdata, handles) q=questdlg('确定要关闭此窗口吗?','关闭窗口','关闭','取消',2); if strcmp(q,'关闭') delete(gcf); end function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function pushbutton2_Callback(hObject, eventdata, handles) [f,p]=uiputfile({'*.jpg'},'Save picture'); str=strcat(p,f); pix=getframe(handles.axes1); imwrite(pix.cdata,str,'jpg'); function pushbutton3_Callback(hObject, eventdata, handles) a=questdlg('确定要退出系统吗?','退出系统','退出系统','取消',2); if strcmp(a,'退出系统') exit; end function pushbutton4_Callback(hObject, eventdata, handles) popupmenu2_Callback(hObject, eventdata, handles); (2)该子界面所调用的有阻尼状态M文件zhuandingzizuni:
function dydt =f(t,y) %下面输入电机基本参数数据 r=2.9069;Rfd=5.9013E-01;Rkd=11.900;Rkq=20.081;Ufd=24;w=377;L1=3.0892E-01;Lmd=3.2164;Lmq=9.7153E-01;L1fd=3.0712E-01;L1kd=4.9076E-01;L1kq=1.0365; Ld=Lmd+L1;Lq=Lmq+L1;Mafd0=Lmd;Makd0=Lmd;Makq0=Lmq;Lfd=L1fd+Lmd;Lkd=L1kd+Lmd;Lkq=L1kq+Lmq;Mfkd=Lmd; L=[Ld,0,Lmd,Lmd,0; %输入电感系数矩阵 0,Lq,0,0,Lmq; Lmd,0,Lfd,Lmd,0; Lmd,0,Lmd,Lkd,0; 0,Lmq,0,0,Lkq]; G=[0,-Lq,0,0,-3/2*Makq0; Ld,0,Mafd0,Makd0,0; 0,0,0,0,0; 0,0,0,0,0; 0,0,0,0,0]; R=[r,0,0,0,0; %输入电阻系数矩阵 0,r,0,0,0; 0,0,Rfd,0,0; 0,0,0,Rkd,0; 0,0,0,0,Rkq]; Udq0=[100,0,0,0,0]'; %输入电压向量 dydt=L\(Udq0-w*G*y-R*y) ; %列写微分方程 (3)该子界面所调用的有阻尼状态M文件zhuandingziwuzuni:
function dydt = f(t,y) %下面输入电机基本参数数据 r=2.9069;Rfd=5.9013E-01;Rkd=11.900;Rkq=20.081;Ufd=24;w=314;L1=3.0892E-01;Lmd=3.2164;Lmq=9.7153E-01;L1fd=3.0712E-01;L1kd=4.9076E-01;L1kq=1.0365; Ld=Lmd+L1;Lq=Lmq+L1;Mafd0=Lmd;Makd0=Lmd;Makq0=Lmq;Lfd=L1fd+Lmd;Lkd=L1kd+Lmd;Lkq=L1kq+Lmq;Mfkd=Lmd; L=[Ld,0,Lmd; %输入电感矩阵 0,Lq,0; Lmd,0,Lfd]; G=[0,-Lq,0; Ld,0,Mafd0; 0,0,0]; R=[r,0,0,; %输入电阻矩阵 0,r,0; 0,0,Rfd]; Udq0=[100,0,0]'; %输入电压向量 dydt=L\(Udq0-w*G*y-R*y); %列写微分方程


推荐访问:

相关推荐

热门排行

带头深刻领悟“两个确立”决定性意义增强“四个意识”坚定“四个自信”做到“两个维护”方面六个带头民主生活会对照检查剖析材料-合集共计(精选文档)

带头深刻领悟“两个确立”决定性意义增强“四个意识”坚定“四个自信”做到“两个维护”方面六个带头民主生活会对照检查剖析材料-合集共计(精选文档)下面是小...

对支部副书记批评意见13篇

对支部副书记批评意见13篇对支部副书记批评意见  党支部成员批评意见  (一)卢XX:  (1)你作为党支书记,党建工作创新意识不强、思路不多,安排党建工作大多局...

我为群众办实事典型案例材料12篇

我为群众办实事典型案例材料12篇我为群众办实事典型案例材料篇1 党史学习教育开展以来,我镇多措并

党支部看电影活动方案8篇

党支部看电影活动方案8篇党支部看电影活动方案  爱国主义影片《金刚川》观影主题党日活动方案-活动方案  “追忆抗美援朝、弘扬革命精神、牢记初心使命”—爱...

工作执行力度不够整改措施16篇

工作执行力度不够整改措施16篇工作执行力度不够整改措施  缺乏执行力的原因及改良措施  随着深入提高执行力专题教育活动的展开,全局上下形成了先进性教育的...

2022年度组织生活会谈心谈话记录表意见建议7篇

2022年度组织生活会谈心谈话记录表意见建议7篇2022年度组织生活会谈心谈话记录表意见建议篇1

2023年组织生活会谈心谈话要点

2023年组织生活会谈心谈话要点下面是小编为大家整理的《2023年组织生活会谈心谈话要点》文章,仅供大家参考,请勿照搬抄袭。希望能够帮助到您写出更好的文章

前台员工优秀事迹范文15篇

前台员工优秀事迹范文15篇前台员工优秀事迹范文篇1一年时间过得很快,在公司工作一年多了。入职以来,我

五一节前廉政提醒谈话内容15篇

五一节前廉政提醒谈话内容15篇五一节前廉政提醒谈话内容  本文为Word版本资料,下载后可任意编辑修改  廉政提醒谈话提纲  一、请介绍一下今年以来,你公司...

美术教研活动美篇精彩开头和结尾13篇

美术教研活动美篇精彩开头和结尾13篇美术教研活动美篇精彩开头和结尾篇1男女:亲爱的家长朋友们,亲