版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、太阳能光伏并网逆变仿真太阳能光伏并网逆变器的研究物理与能源学院 新能源科学与工程专业135032012125 萧海铃 指导教师:陈曦摘要:随着社会不断发展,开发可再生能源越发重要,太阳能具有资源丰富、可再生且清洁等优点,是非常理想的可替代能源。本文选择三相光伏电压型并网发电系统,采用SPWM的输出控制方式,提高太阳能利用效率,电流谐波小,满足光伏并网发电要求;并利用Matlab的Simulink工具箱建立了太阳能光伏并网逆变仿真,验证了在太阳能电池输出电压出现阶跃激增或突降时,电流谐波小,系统保持良好的鲁棒性。关键词:三相电压型并网逆变器 光伏 SPWM 1引言11 研究背景能源危机是能源短缺
2、或价格上涨的结果,甚至导致经济衰退,如石油价格一路上升。目前能源匮乏、环境污染的现状使得无污染的、可再生的能源的发展变得举足轻重。太阳能,作为地球上最丰富的可再生能源,在过去的11亿年里,只消耗2%的能量,可以预测的是一种取不尽,用不完的能源。且随处可得,就地取用,因此对边远地区的发展很有优势,也不需要考虑运输问题,所需成本低。最重要的是,太阳能是一种无污染的、清洁的、安全的能源,不会像石油、核能产生废气、辐射,从而对环境造成损害,符合可持续发展的要求。图1 利用太阳能发电的优点太阳能技术可以分为光热技术、光生物技术、光化学技术、光伏技术四类。本次实验研究的就是太阳能发电技术,其优点如图1所示
3、。随着科技不断发展,光伏发电技术也取得了很大的突破,有广阔的发展前景和意义。12国内外光伏发电系统的发展现状根据欧洲光伏工业协会和太阳能光伏网的数据,欧洲占有其主要市场。2012年新增光伏装机的55%来自欧洲,约7.6 GW;其次是中国(5.0 GW)、意大利(3.4 GW)、美国(3.3 GW)和日本(2 GW)。对于累计装机,欧洲仍然全球领先,中国则紧跟其后,排名第二位。我国目前光伏发电的相关产业发展表现强劲,2013-2015年是发展迅猛的时期。在国家十三五期间,出台了很多政策扶持我国光伏产业,例如规划清洁能源、规范光伏的开发、开展光伏扶贫工程等等政策。光伏发电良好的应用远景也是其发展迅
4、猛的因素之一。总之,光伏发电势头火热,并且有很大的潜力。1.3光伏发电主要研究方向 逆变器是这几年来开的热点,它在整个系统中占着举足轻重的地位,其发展方向可以总结为以下几点:(1)逆变器的控制方式例如文献3中设计了一种新的输出控制方法,即采用基于前馈解耦空间矢量脉宽调制技术;文献2采用新的控制方式,即基于模糊PID控制的MPPT策略;文献4采用扰动观察法,是基于曲线扰动的。出现了很多新的、具有使用实用意义的方式。(2)逆变器的拓扑结构根据不同的条件,逆变器的拓扑结构是有许多不同的分类的。例如根据主电路的的不同可分为半桥逆变器、全桥逆变器;根据有无变压器作为隔离,可以分为隔离和非隔离结构;根据输
5、出电流的相位的数量,分为单相式逆变器、三相式逆变器和多相式逆变器。各种拓扑适用于各种不同的场合,实际运用中这些拓扑结构还可以相互搭配成各种不同的形式,以满足各种要求。(3)对于大型光伏发电系统应用的相关问题研究光伏发电技术在不断的发展中,也有许多新的问题不断出现,例如并联控制技术,大功率并网系统和局部电网之间相互会不会产生不良的影响等等。14 主要研究内容随着这项技术迅速的发展,不断在控制策略、拓扑结构的改进上取得成就。并网发电的要求就是能够输出符合并网要求的电流,即与电网电压有相同的频率和相位,并且谐波小,对系统污染小。因此,本文对进行了逆变器优化控制,采用SPWM方法,提高系统的功率,降低
6、谐波含量。本文主要内容如下:简单介绍了当今能源背景、光伏发电优点、当今光伏发电产业近况、目前主要的研究方向;分析光伏发电系统的分类,讲述通过并网型系统输出电流需要满足的要求;对系统拓扑结构进行了设计,采取SPWM控制策略,以达到并网发电要求;根据前文的设计建立了仿真模型,并进行了分析;改变电感值进行了多次实验,并进行了分析。2太阳能光伏发电系统2.1光伏发电系统的分类从不一样的角度切入,将太阳能发电系统分门别类的方式就有很多。凭借负载的差别,可以将太阳能光伏发电系统分为独立型光伏发电系统、并网型光伏发电系统、混合型光伏发电系统。2.1.1独立型光伏发电系统这个系统就是将获得的电能直接输出给负载
7、。其特点是具有蓄电池组,以提高系统运行的稳定性和可持续性,具有使用灵活、成本较低的优点。一般可以运用于为经济较不发达或者由于地形等原因电网没有办法达到的地区,例如偏远山村、通讯点等10。其运行结构框图如图2。图2 独立型光伏发电系统框架图2.1.2并网型光伏发电系统并网型光伏发电系统中最重要的就是逆变器,它可以将光伏电池的输出转换成达到所需要求的电能,通过控制逆变器与电力需求相匹配,然后输送到电网端。对于这个系统的研究是目前太阳能发电技术的主流趋势,受到了广泛的关注,也是本文研究的重点。它的结构如图3。图3 并网型光伏发电系统框架图2.1.3混合型光伏发电系统混合光伏发电系统,顾名思义,即是上
8、述两种发电系统相结合的组合。同时具有以上两种发电系统的优点,即既能够储存电能以备不时之需,也可将电流并入电网,得到广泛使用,在地点的选用上也有很大的灵活性。其结构如图4所示。图4 混合型光伏发电系统基本框架图2.2太阳能光伏发电系统的组成部分光伏发电系统的基本架构有光伏阵列、控制器、逆变器、滤波器、蓄电池组、电网等。其基本结构如图5所示。图5 太阳能光伏发电系统的构成 图中各部分的作用为:1.光伏电池阵列:其作用是将光能通过P-N结结构转换成电能,是价格最昂贵的组成部分;2太阳能控制器:它的作用是选择合适的PWM信号控制逆变器,使它输出符合要求的波形。3.逆变器:经过光伏电池输出的电流是直流电
9、,是不能满足发电要求的,而这个部分的作用就是将其转换为符合发电要求的交流电;4蓄电池组:其用处就是储备多余电能,以备不时之需。2.3并网逆变器在光伏发电系统中,光伏逆变器和控制器是其重中之重的部分,通常人们把光伏逆变器和控制器统称为逆变器。需要具备如下三个功能:(1)对逆变器输出的电流进行控制,使其输出的正弦波满足谐波小,与电网电压同频率、同相位,不产生污染。(2)实现直流侧输入电压的稳定控制,使其处于功率最大值,最大程度的利用太阳能,光伏电池价格高,这样使得太阳能电池板物有所值,从某种意义上来说也降低了系统的成本。(3)实现系统运行时的孤岛保护控制,防止发生孤岛效应以及其它各种保护控制,如过
10、流,过压,欠压等,提高系统的可靠性和稳定性。这样就保证系统的高质量,提高系统使用寿命,从而减少需要进行系统维护的机率,降低工作量,降低成本。图6 并网逆变器需符合的要求3 光伏系统拓扑结构的设计和控制技术分析光伏发电系统就是将太阳能通过光伏电池转换为电能,然后将电能转换为符合用户用电要求的电流,再输送到用户端的一整套设备。独立型的光伏发电系统,适用于分散的电网范围难以顾及的地区。因此,相对独立型光伏发电系统来说,并网型发电系统更具普遍适用性,它利用效率高,并且不具备成本高、需单独维护的储能设备,以及很多其他方面的优点,是现在社会中更具实用价值的发电系统。3.1并网逆变系统结构分析光伏并网逆变器
11、据不同的条件有很多种分类的方式,最常见的是根据输入直流电源的不同可以分为:电流型逆变器和电压型逆变器。3.1.1 电流型逆变器电流型逆变器就是在光伏电池输出侧串联一个比较大的电感,减小回路中的纹波电流。虽然提供了一个稳定的电流环境供系统运行,但同时也增大了系统的阻值,造成谐波电流大,破坏系统稳定性。其结构如图9所示。图9 电流型逆变器结构3.1.2 电压源型逆变器 电压型并网逆变器结构如图10所示,它则是在直流侧并联一个大电容来减小电压纹波,使电压稳定,采用这种方式的系统电流谐波比起电流型的小得多,更有优势,也因此得到比较普遍的运用。图10 电压型逆变器结构3.2系统的主电路结构设计现在人们对
12、用电需求量的要求越来越大,因此大容量的逆变器是研究热点,通常情况下大容量的逆变电路采用三相的形式。本文中,针对上文所提到的并网逆变器结构特点,以及本实验设计目的,结合目前社会发展所需的光伏发电系统的形式,本次实验选择三相电压型光伏并网发电系统。其结构拓扑图如图11所示。由图11可以看到,本文所选用的是三相电压型并网逆变系统。其中,光伏电池输出直流电,然后在系统中并联一个较大的电容C,给系统提供了平稳的运行环境。电流经过逆变器后输出的是交流电,然后系统采用了 L型的滤波器,起到调节电流谐波等调节电能质量作用。图中的主功率开关器件为T1-T6,即绝缘栅型双极性晶体管(IGBT),又选择了二极管(D
13、1-D6)反并联在T1-T6上。通过选取合适的控制信号来控制T1-T6,调节并网逆变器的输出电流,使其达到发电要求。图11 三相光伏系统的原理图3.3并网逆变系统工作原理一般来说,正常情况下三相并网系统都是出于平衡状态的。凭借文献14,我们发现其原理可以等同于单相系统的运行原理。其等效原理图如图12。图12 三相并网逆变器等效原理图其中,R代表系统等效电阻,L代表系统滤波器,Io代表达到要求的、最后并入电网的电流,U1代表逆变器端的电压值,U2代表电网两端的电压值。图13 三相并网逆变器中运行的矢量图为了实现系统功率因数为1的要求,U2和Io之间的相位差应为0。由此,构成的矢量图如图13所示。
14、其中Ur是系统等效电阻的电压值,而Uv则是系统滤波器的电压值。Ur与U2之间的相位差为0,Uv落后U2相位90。因此可得U1与各矢量间的数量关系如下:U1=I*(R+L)+U2 (式3.1)在实际的操作中,我们可以利用器具测量出U2的一些数据,例如幅值、相位和周期。而R值的测量则比较不容易,故需要通过电流负反馈的方法来获得馈入电流I的相位值。为了达到输出符合发电要求的电流的控制目的,U2和I的相位要相同。据此,将公共网络的相位设置为当前的基准相位。过程中应对I的值实时检测,判断有否达到发电要求,然后输出符合条件的电流。3.4并网逆变系统控制策略 逆变器的控制是指选择合适控制信号使逆变器输出符合
15、要求的电流,这一部分是非常重要的,对结果的影响是十分明显的。3.4.1输出控制的选择 据图 12所示的矢量关系可知,有2种输出控制的方法,第一种是通过控制电压来控制电流,也称间接电流控制,间接电流控制虽然操作简易,但其系统运行速度是比较慢的,并且控制精度不高,系统误差大,比较难以控制。第二种是直接去控制输出电流,也称直接电流控制,它通过锁相得到电网电压的相位,产生交流电流指令,通过反馈控制,使输出电流跟踪指令电流值,达到使输出电流跟踪电网电压的目的。这种控制方式实现起来控制电路相对简单、系统的动态响应速度非常,在实际应用中均采用直接电流的控制方式。现在常见的比较有优势的并得到普遍应用的控制方式
16、有如下几种。其中PI控制方式是应用最普及的一类工程方法,优点多;滞环控制技术16是一种实时控制方式开关频率随机变化,产生间接的谐波电流,影像系统稳定;无差拍控制技术17鲁棒性较差,实时性强,对硬件的要求太高;定时控制方式缺点是当前电流跟踪误差不固定,控制精度不高。SPWM 电流跟踪方式,即正弦脉宽调制技术,是一种优点很多的控制方式。其原理就是将实际测得的逆变器主开关器件输出的电流波形与给定的参考波形进行比较,得出差别以后,再经过放大输送到比较器中,再与给定的参考三角波进行比较,输出相应的控制信号,以达到输出符合并网发电要求的目的。相对于滞环控制技术、定时控制技术、无差拍控制技术,SPWM方式使
17、得系统的谐波值小,有很大的优势。其结构原理图如图14所示。图14 SPWM电流跟踪方式示意图4仿真模型及结果分析4.1仿真模型根据光伏并网发电需求,以及光伏发电发展趋势,使系统输出高质量电能,电流谐波小,本实验设计了三相电压型并网逆变系统,在输出控制的方法选择上选择了SPWM控制方法。本文采用MATLAB软件,它是一款进行交互仿真环境的优秀集成软件,使用Simulink建模与仿真非常简洁、方便,而且仿真结果直观可信,得到很好的仿真效果,节约了进行实际实验操作的成本。4.1.1三相并网逆变器系统仿真模型通过前文的设计,利用 Simulink 建立了三相电压型光伏并网发电系统的仿真模型。该仿真模型
18、如图15所示。图15 三相电压型光伏发电系统的Matlab仿真图4.1.2系统各个组成部分介绍(1)太阳能光伏电池阵列如图16太阳电池仿真模型。Ir为光照强度,T为温度,+、-为光伏阵列正负极。图16 光伏电池阵列模块如图17,该光伏组件的开路电压=36.3V,短路电流= 7.84A,最大功率点电压=29V,最大功率点电流=7.35A,最大功率点输出功约为213.15W。图17 PV封装模块参数设置界面本实验中要研究电压出现阶跃激增或突降时,系统能否在这样的控制方式下电流谐波小、有良好的鲁棒性,即系统够不够稳定,电流谐波多少。因此,如图16所示,左起的step和step1两个模块,给系统输入变
19、化信号,用于模拟太阳能电池温度变化,创造实验条件,对系统功能进行验证。设定系统受到的光照强度为1000W/m2,设定step阶跃时间为0.2s,step1阶跃时间为0.4s。通过step和step1这两个模块设定温度每隔0.2s变化一次,以验证系统稳定性。这两个模块参数如图18和图19所示。 图18 step模块 图19 step1模块 (2)三相电压型并网逆变器模块图20中,Universal Bridge就是逆变器部分;Subsystem3起控制作用,采用SPWM控制方式。图20 三相并网逆变器仿真模块(3)L型滤波器模块本系统采用的是L型的滤波器,滤波器,顾名思义就是起滤波作用,对逆变器
20、发出的信号进行处理,减小电流谐波。本系统中设定L型滤波器的电感值为2mH。其在Matlab中的仿真图如图21所示。图21 L型滤波器模块(4)电流检测模块这是电流检测模块在Matlab中的仿真图,对逆变器输出的电流起检测作用。如图22所示。图22 电流检测模块(5)电网模块电网模块的仿真图如图23所示。图23 电网模块4.2仿真结果分析示波器scope1的波形如图24所示。从图中可以看到,在光伏电池的电压出现阶跃激增、突降时,示波器的曲线是稳定的,由此说明,电压阶跃以后系统有良好的鲁棒性。图24 示波器scope1输出结果图25是直流电经过三相逆变器后输出的交流电的波形,即示波器scope27
21、所显示的三相电流仿真波形。图25 三相并网电压仿真波形由图26可以看出,在电压干扰输入后,系统的谐波电流较小,为1.68%(此时系统滤波器电感值是2mH),从而验证了系统具有较好的稳定性。图26 系统输出的谐波电流含量改变滤波器电感值进行了多次实验,得到结果如下:如图27,电感为0.004H时,电流谐波值为0.88%,比图26小。图27 电感为0.004H时的电流谐波值如图28,电感为0.005H时,电流谐波值为0.73%,比图26小。图28 电感为0.005H时的电流谐波值如图29,电感为0.001H时,电流谐波值为3.82%,比图26大。图29 电感为0.001H时的电流谐波值如图30,电
22、感为0.0009H时,电流谐波值为4.15%,比图26大。图30 电感为0.0009H时的电流谐波值由上述四个例子发现,系统的谐波值随着电感参数增大而减小。本文研究太阳能光伏发电系统,系统要求符合的发电条件是输出质量高的电能,并且电流谐波小,对发电过程不造成污染。电流谐波危害很大,可能会导致电缆过热以致线路过早老化、变压器过热以致缩短寿命、保险丝烧断等后果,因此应尽量减小电流谐波,以达到国家要求的标准。本文根据这样的要求,选择了三相电压型光伏并网发电系统,采用SPWM的输出控制方法。此外,还利用了Matlab中用Simulink模块建立了光伏发电系统的仿真模型。为了验证本系统的功能,仿真中运用
23、两个阶跃模块使光伏电池的温度发生突变,使电压出现阶跃激增或突降,然后观察实验结果。得出结果是在设定系统电感值为2mH时,电流谐波小,仅为1.68%,示波器scope1输出稳定的波形,系统有良好鲁棒性;后又通过改变滤波器电感参数进行了多次实验,发现随着电感参数增大,电流谐波减小,随着电感参数减小,电流谐波增大的规律。由此可见,要降低电网电流谐波,提高系统稳定性,可以选择参数较大的电感。但滤波器的电感参数受很多方面影响,并不是越大越好。首先是成本问题,其值越大,其成本也就越高。并且随着这个值的增大,体积越大,系统耗损也越大,导致动态性能下降。因此,对于滤波器电感参数大小的选择来说,还需顾及多方面因
24、素,例如对系统谐波电流的影响和自身损耗问题。太阳能光伏并网发电系统所涉及的知识是多方面的,本文不足之处在于,本文虽然对系统主要电路进行了研究,对孤岛效应电路、锁相电路等没有进行研究;对提高系统使用效率没有进行深入的研究。参考文献1 潘进军, 江滢, 郭鹏, 等. 中国太阳能和环境气象因子影响分析J. 科技导报, 2014, 32(20): 16.2 胡海峰. 基于模糊PID控制的太阳能光伏发电系统的MPPT研究D. 长沙: 湖南大学, 2011.3 石昆. 光伏发电系统并网逆变器的研究与开发D. 杭州: 杭州电子科技大学, 2011.4 曹建平. 光伏并网逆变器的研究D. 武汉: 湖北工业大学
25、, 2011.5 席志强, 张志文, 彭文丽, 等. 基于光伏发电的微电网控制技术J. 湖北农机化, 2012, 2: 43.6 冯东英. 光伏发电控制系统关键技术研究D. 广州: 广东工业大学, 2012.7 Jawad Ahmad. A Fractional Open Circuit Voltage Based Maximum Power Point Tracker for Photovoltaic Arrays. International Conference on Software Technology and Engineering, 2010, 19(4): 607-613.8
26、杜亮, 苏蓓蓓. 太阳能发电系统研究J. 科技创新导报, 2011, 10: 14.9 刘凤君. 现代逆变技术及应用M. 北京: 机械工业出版社 2006.10 王汇灵. 光伏发电逆变器并联技术研究D. 成都: 西华大学, 2013.11 何娣. 太阳能光伏并网发电系统D. 长安: 长安大学, 2013.12 徐鹏飞. 太阳能光伏逆变器研究D. 哈尔滨: 哈尔滨工业大学, 2009.13 王长贵, 王斯成. 太阳能光伏发电技术(第二版)M. 北京: 化学工业出版社, 2009: 14 刘立强, 张森. 基于 DSP 的光伏逆变并网的同步控制J. 通信电源技术, 2008,25(1):29-31
27、.15 J H HWANG, K S AHN, H C LIM. Design, development and performance of a 50 Kw grid-connected PVsystem with three phase current-controlled inverterZ. Photovoltaic Specialists Conference 2000, 1664-1667.16 郭卫农, 段善旭, 康勇等. 电压型逆变器的无差拍控制技术研究J. 华中理工大学学报(自然科版), 2000, 28(6): 30-32.17 顾和荣, 陈辉明, 蒋大鹏. 电压逆变器输出
28、电流滞环跟踪控制技术研究J. 中国电机工程学报, 2006, 26(9): 108-112. 附录资料:不需要的可以自行删除 C语言图形模式速成第一节 图形模式的初始化Turbo C 提供了非常丰富的图形函数,所有图形函数的原型均在graphics. h 中,本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外,使用图形函数时要确保有显示器图形驱动程序*.BGI,同时将集成开发环境options/Linker中的Graphics lib选为on,只有这样才能保证正确使用图形函数。 不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器
29、,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器种类将显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。设置屏幕为图形模式,可用下列图形初始化函数:void far initgraph(int far *gdriver, int far *gmode,char *path);其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见graphics. h。图形驱动程序由Turbo C出版商提供,文件扩展
30、名为.BGI。 根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、 VGA 图形适配器就调用驱动程序EGAVGA.BGI。#include stdio.h#include graphics.hint main()int gdriver, gmode;gdriver=VGA;gmode=VGAHI;initgraph(&gdriver, &gmode, C:TC2.0BGI);bar3d(100, 100, 300, 250, 50, 1); /*画一长方体*/getch();closegraph();return 0;有时编程者并不知道所用的图形显示器适配器种类,或者需要将编写的程序用
31、于不同图形驱动器,Turbo C 提供了一个自动检测显示器硬件的函数,其调用格式为:void far detectgraph(int *gdriver, *gmode);其中gdriver和gmode的意义与上面相同。 自动进行硬件测试后进行图形初始化:#include stdio.h#include graphics.hint main()int gdriver, gmode;detectgraph(&gdriver, &gmode); /*自动测试硬件*/printf(the graphics driver is %d, mode is %dn,gdriver,gmode); /*输出测试
32、结果*/getch();initgraph(&gdriver, &gmode, C:TC2.0BGI);/* 根据测试结果初始化图形*/bar3d(100, 100, 300, 250, 50, 1); /*画一长方体*/getch();closegraph();return 0;上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置,但Turbo C提供了一种更简单的方法, 即用gdriver=DETECT 语句后再跟initgraph()函数就行了。采用这种方法后,上例可改为:#include stdio.h#include graphics.hint main()int
33、gdriver=DETECT, gmode;initgraph(&gdriver, &gmode, C:TC2.0BGI);bar3d(50, 50, 150, 30, 50, 1);getch();closegraph();return 0;另外,Turbo C 提供了退出图形状态的函数closegraph(),其调用格式为:void far closegraph(void);第二节 屏幕颜色的设置和清屏函数对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在Turbo C中分别用下面两个函数: 设置背景色: void far setbkcolor(int color);设置作
34、图色: void far setcolor(int color);其中color 为图形方式下颜色的规定数值,对EGA,VGA显示器适配器,有关颜色的符号常数及数值见graphics.h。清除图形屏幕内容但不清除图形背景使用清屏函数,其调用格式如下: voide far cleardevice(void);#include stdio.h#include graphics.hint main()int gdriver, gmode, i,aa;gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC2.0BGI); /*图形初始化*/setbkcolor(
35、0); /*设置图形背景*/cleardevice();for(i=0; i=15; i+)setcolor(i); /*设置不同作图色*/circle(320, 240, 20+i*10); /*画半径不同的圆*/getch();for(i=0; i=15; i+)setbkcolor(i); /*设置不同背景色*/cleardevice();circle(320, 240, 20+i*10);getch();aa=getmaxcolor();printf(maxcolor=%d,aa);getch();closegraph();return 0;另外,TURBO C也提供了几个获得现行颜色
36、设置情况的函数。 int far getbkcolor(void); 返回现行背景颜色值。int far getcolor(void); 返回现行作图颜色值。int far getmaxcolor(void); 返回最高可用的颜色值。第三节 基本画图函数基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。 、画点. 画点函数 void far putpixel(int x, int y, int color); 该函数表示有指定的象元画一个按color 所确定颜色的点。对于颜色color的值可从表3中获得而对x, y是指图形象元的坐标。在图形模式下,是按象元来定义
37、坐标的。对VGA适配器,它的最高分辨率为640 x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x 轴正向,垂直方向从上到下为y轴正向。TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。关于点的另外一个函数是: int far getpixel(int x, int y); 它获得当前点(x, y)的颜色值。 II、有关坐标位置的函数 int far getmaxx(void);返回x轴的最大值。int far getmaxy(void);返回y轴的最大值
38、。int far getx(void); 返回游标在x轴的位置。void far gety(void); 返回游标有y轴的位置。void far moveto(int x, int y); 移动游标到(x, y)点,不是画点,在移动过程中亦画点。void far moverel(int dx, int dy); 移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。、画线I. 画线函数TURBO C提供了一系列画线函数: void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直
39、线。void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。void far linerel(int dx, int dy); 画一条从现行游标(x,y)到按相对增量确定的点(x+dx, y+dy)的直线。void far circle(int x, int y, int radius); 以(x, y)为圆心,radius为半径,画一个圆。void far arc(int x, int y, int stangle, int endangle,int radius); 以(x,y)为圆心,radius为半径,从stangle开始到endangle
40、结束(用度表示)画一段圆弧线。在TURBO C中规定x轴正向为0 度,逆时针方向旋转一周, 依次为90,180, 270和360度(其它有关函数也按此规定,不再重述)。 void ellipse(int x, int y, int stangle, int endangle,int xradius,int yradius);以(x, y)为中心,xradius,yradius为x轴和y轴半径,从角stangle 开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时, 画出一个完整的椭圆。void far rectangle(int x1, int y1, i
41、nt x2, inty2); 以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。 void far drawpoly(int numpoints, int far *polypoints); 画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypoints整型数组必须至少有2 倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints 的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。下面举一个用drawpoly()函数画箭头的例子。#includ
42、e stdio.h#include graphics.hint main()int gdriver, gmode, i;int arw16=200,102,300,102,300,107,330,100,300,93,300,98,200,98,200,102;gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC2.0BGI);setbkcolor(BLUE);cleardevice();setcolor(12); /*设置作图颜色*/drawpoly(8, arw); /*画一箭头*/getch();closegraph();return 0;II、
43、设定线型函数在没有对线的特性进行设定之前,TURBO C 用其默认值,即一点宽的实线,但TURBO C 也提供了可以改变线型的函数。线型包括:宽度和形状。其中宽度只有两种选择:一点宽和三点宽。而线的形状则有五种。下面介绍有关线型的设置函数。void far setlinestyle(int linestyle,unsigned upattern,int thickness);该函数用来设置线的有关信息,其中linestyle是线形状的规定,见graphics.h。对于upattern,只有linestyle选USERBIT_LINE 时才有意义 (选其它线型,uppattern取0即可)。此时
44、uppattern的16位二进制数的每一位代表一个象元,如果那位为1,则该象元打开,否则该象元关闭。 void far getlinesettings(struct linesettingstypefar *lineinfo);该函数将有关线的信息存放到由lineinfo 指向的结构中,表中linesettingstype的结构如下:struct linesettingstypeint linestyle;unsigned upattern;int thickness;例如下面两句程序可以读出当前线的特性 struct linesettingstype *info;getlinesetting
45、s(info);void far setwritemode(int mode);该函数规定画线的方式。如果mode=0,则表示画线时将所画位置的原来信息覆盖了(这是TURBO C的默认方式)。如果mode=1, 则表示画线时用现在特性的线与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变,进行两次画线操作相当于没有画线。有关线型设定和画线函数的例子如下所示。#include stdio.h#include graphics.hint main()int gdriver, gmode, i;gdriver=DETECT;initg
46、raph(&gdriver, &gmode, C:TC2.0BGI);setbkcolor(BLUE);cleardevice();setcolor(GREEN);circle(320, 240, 98);setlinestyle(0, 0, 3); /*设置三点宽实线*/setcolor(2);rectangle(220, 140, 420, 340);setcolor(WHITE);setlinestyle(4, 0 xaaaa, 1);/*设置一点宽用户定义线*/line(220, 240, 420, 240);line(320, 140, 320, 340);getch();close
47、graph();return 0;第四节 基本图形的填充填充就是用规定的颜色和图模填满一个封闭图形。 一般是先画轮廓再填充。TURBO C提供了一些先画出基本图形轮廓, 再按规定图模和颜色填充整个封闭图形的函数。在没有改变填充方式时,TURBO C 以默认方式填充。 void far bar(int x1, int y1, int x2, int y2);确定一个以(x1,y1)为左上角,(x2,y2)为右下角的矩形窗口,再按规定图模和颜色填充。说明:此函数不画出边框,所以填充色为边框。void far bar3d(int x1, int y1, int x2, int y2,int dept
48、h,int topflag);当topflag为非0时, 画出一个三维的长方体。当topflag为0时,三维图形不封顶,实际上很少这样使用。说明: bar3d()函数中,长方体第三维的方向不随任何参数而变,即始终为45度的方向。void far pieslice(int x,int y,int stangle,int endangle,int radius);画一个以(x, y)为圆心,radius为半径,stangle为起始角度,endangle 为终止角度的扇形,再按规定方式填充。当stangle=0,endangle=360 时变成一个实心圆,并在圆内从圆点沿X轴正向画一条半径。void
49、 far sector(int x, int y,int stanle,intendangle,int xradius, int yradius);画一个以(x, y)为圆心分别以xradius, yradius为x轴和y轴半径,stangle 为起始角,endangle为终止角的椭圆扇形,再按规定方式填充。第五节 设定填充方式TURBO C有四个与填充方式有关的函数。下面分别介绍: void far setfillstyle(int pattern, int color); color的值是当前屏幕图形模式时颜色的有效值。pattern的值及与其等价的符号常数见graphics.h。除USE
50、R_FILL(用户定义填充式样)以外,其它填充式样均可由setfillstyle() 函数设置。当选用USER_FILL时,该函数对填充图模和颜色不作任何改变。 之所以定义USER_FILL主要因为在获得有关填充信息时用到此项。void far setfillpattern(char * upattern,int color); 设置用户定义的填充图模的颜色以供对封闭图形填充。其中upattern是一个指向8个字节的指针。这8个字节定义了8x8点阵的图形。每个字节的8位二进制数表示水平8点,8个字节表示8行,然后以此为模型向个封闭区域填充。void far getfillpattern(cha
51、r * upattern); 该函数将用户定义的填充图模存入upattern指针指向的内存区域。void far getfillsetings(struct fillsettingstypefar * fillinfo); 获得现行图模的颜色并将存入结构指针变量fillinfo中。其中fillsettingstype结构定义如下:struct fillsettingstypeint pattern; /* 现行填充模式 * /int color; /* 现行填充模式 * /; 有关图形填充图模的颜色的选择,请看下面例程。#include stdio.h#include graphics.hma
52、in()char str8=10,20,30,40,50,60,70,80; /*用户定义图模*/int gdriver,gmode,i;struct fillsettingstype save;/*定义一个用来存储填充信息的结构变量*/gdriver=DETECT;initgraph(&gdriver,&gmode,C:TC2.0BGI);setbkcolor(BLUE);cleardevice();for(i=0;i13;i+)setcolor(i+3);setfillstyle(i,2+i); /* 设置填充类型 */bar(100,150,200,50); /*画矩形并填充*/bar3
53、d(300,100,500,200,70,1); /* 画长方体并填充*/pieslice(200, 300, 90, 180, 90);/*画扇形并填充*/sector(500,300,180,270,200,100);/*画椭圆扇形并填充*/getch();cleardevice();setcolor(14);setfillpattern(str, RED);bar(100,150,200,50);bar3d(300,100,500,200,70,0);pieslice(200,300,0,360,90);sector(500,300,0,360,100,50);getch();getfi
54、llsettings(&save);/*获得用户定义的填充模式信息*/closegraph();clrscr();printf(The pattern is %d, The color of filling is %d,save.pattern, save.color);/*输出目前填充图模和颜色值*/getch();第六节 任意封闭图形的填充截止目前为止,我们只能对一些特定形状的封闭图形进行填充,但还不能对任意封闭图形进行填充。为此,TURBO C 提供了一个可对任意封闭图形填充的函数,其调用格式如下: void far floodfill(int x, int y, int border)
55、; 其中:x, y为封闭图形内的任意一点,border为边界的颜色,也就是封闭图形轮廓的颜色。调用了该函数后,将用由函数setfillstyle()规定的颜色和模式填满整个封闭图形。注意:a. 如果x或y取在边界上,则不进行填充。b. 如果不是封闭图形则填充会从没有封闭的地方溢出去,填满其它地方。c. 如果x或y在图形外面,则填充封闭图形外的屏幕区域。d. 由border指定的颜色值必须与图形轮廓的颜色值相同, 但填充色可选任意颜色。下例是有关floodfill()函数的用法,该程序填充了bar3d()所画长方体中其它两个未填充的面。#include stdio.h#include graph
56、ics.hmain()int gdriver, gmode;struct fillsettingstype save;gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC2.0BGI);setbkcolor(BLUE);cleardevice();setcolor(LIGHTRED);setlinestyle(0,0,3);setfillstyle(1,14); /*设置填充方式*/bar3d(100,200,400,350,200,1); /*画长方体并填充*/floodfill(450,300,LIGHTRED);/*填充长方体另外两个面*/flo
57、odfill(250,150, LIGHTRED);rectangle(450,400,500,450); /*画一矩形*/floodfill(470,420, LIGHTRED); /*填充矩形*/getch();closegraph();第七节屏幕操作函数除了清屏函数以外,关于屏幕操作还有以下函数: void far setactivepage(int pagenum); void far setvisualpage(int pagenum);这两个函数只用于EGA,VGA 以及HERCULES图形适配器。setctivepage()函数是为图形输出选择激活页。所谓激活页是指后续图形的输出
58、被写到函数选定的pagenum页面,该页面并不一定可见。setvisualpage()函数才使pagenum所指定的页面变成可见页。页面从0开始(Turbo C默认页)。如果先用setactivepage() 函数在不同页面上画出一幅幅图像,再用setvisualpage() 函数交替显示,就可以实现一些动画的效果。void far getimage(int xl,int yl, int x2,int y2,void far *mapbuf); void far putimge(int x,int,y,void * mapbuf, int op); unsined far imagesize(
59、int xl,int yl,int x2,int y2);这三个函数用于将屏幕上的图像复制到内存,然后再将内存中的图像送回到屏幕上。首先通过函数imagesize() 测试要保存左上角为(xl,yl),右上角为(x2,y2)的图形屏幕区域内的全部内容需多少个字节,然后再给mapbuf分配一个所测数字节内存空间的指针。通过调用getimage()函数就可将该区域内的图像保存在内存中,需要时可用putimage()函数将该图像输出到左上角为点(x, y)的位置上,其中getimage()函数中的参数op规定如何释放内存中图像。 关于这个参数的定义参见下表。对于imagesize()函数,只能返回字
60、节数小于64K字节的图像区域,否则将会出错,出错时返回-1。本节介绍的函数在图像动画处理、菜单设计技巧中非常有用。下面程序模拟两个小球动态碰撞过程。#include stdio.h#include graphics.h#include malloc.hint main()int i, gdriver, gmode, size;void *buf;gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC2.0BGI);setbkcolor(BLUE);cleardevice();setcolor(LIGHTRED);setlinestyle(0,0,1);s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/ZSP 010-2024社区自治“365敲门”工作规范
- T/JSXH 0009-2025印制电路板退锡废液再生氢氧化锡
- T/COOA 18-2025渐变焦眼镜用眼镜架
- T/CCPA 63-2025黄金尾矿基免烧免蒸养轻骨料
- T/CSHE 0014-2025抽水蓄能电站工程施工控制网测量规程
- GB/T 48220-2026爆炸物品公共安全管理术语
- AI在科学教育中的应用
- 面向给排水学生的水务科技P PT
- 2027届山东省枣庄市中学区永安乡黄庄中学八年级数学第一学期期末学业质量监测模拟试题含解析
- PHP常见面试题及详细答案(实战版)
- 2026及未来5年中国电力线载波抄表数据监测研究报告
- 第四单元.14 梅兰芳蓄须明志 课件 2026-2027学年统编版小学语文 五年级上册
- 2026年前列腺癌诊疗指南(中国专家共识)
- 急诊护理风险评估与干预
- 2025煤炭行业发展年度报告
- 2026内蒙古鄂尔多斯市国有资产投资控股集团有限公司社会招募见习人员17名笔试历年参考题库附带答案详解
- T∕CPCPA 0017-2026 托育机构婴幼儿回应性照护服务规范
- 2025年卫生高级职称面审答辩(临床医学检验)正高面审练习题及答案
- DB31∕T 1483-2024 建筑垃圾与工程泥浆再生自密实填筑技术规程
- 《设计构成》课件 第1章 认识设计构成;第2章 平面构成基础
- 2023年临夏市教育系统引进人才考试真题及答案
评论
0/150
提交评论