自动化毕业论文大机组汽包锅炉给水控制系统_第1页
自动化毕业论文大机组汽包锅炉给水控制系统_第2页
自动化毕业论文大机组汽包锅炉给水控制系统_第3页
自动化毕业论文大机组汽包锅炉给水控制系统_第4页
自动化毕业论文大机组汽包锅炉给水控制系统_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大机组汽包锅炉给水控制系统

的设计与研究

摘要

给水全程控制系统是火力发电厂单元机组协调控制中的主要子系统之一,针对其可靠运行直接关系到整个发电系统的安全问题,采用单冲量和三冲量控制系统有机结合的控制策略,应用自动控制理论对单元机组给水的要求和特点进行了全面的分析,使单元机组给水全程控制从锅炉点火到机组满负荷运行,始终保持汽包水位在允许的范围内,而且系统稳态误差小,控制精度高,超调量小。此外还提出了在系统设计时应注意的几个关键问题,这对单元机组给水全程控制系统的设计和调试均具有一定的参考价值。

关键词:三冲量;串级;切换;跟踪

DESINGANDRESEARCHOFDRUMLEVELFULLCONTROL

Abstract

Thefull-rangefeed-watercontrolsystemisamainsubsystemofthermo-electricgeneratingunitincoordinatedcontrol.Itsreliabilityismostcloselyrelatedtothesafetyofwholepowernetwork.Thefeed-waterfeaturesandrequirementsofthermo-electricgeneratingunitwereanalyzedcomprehensivelybasedonbasicautomaticcontroltheories.andthecontrolstrategywasrealizedbycombiningthree-impulsewithsingle-impulsefeed-watercontrolsystem.Fromstartuptofullloadoperation,Thefull-rangefeed-watercontrolsystemalwayskeepsthesteamlevelwithinanacceptablerange.Thesystemhasthecharacteristicsofhigherwaterlevelcontrolaccuracy,smallerovershootandlowererrorinsteadystate.Inaddition,severalkeydesigntechniquesarepresented,whichcanbeappliedtothedesignanddebuggingofThefull-rangefeed-watercontrolsystem

Keywords:threeelementcontrol;cascadeconfiguration;switch;track

目录

TOC\o"1-3"\u

摘要

I

Abstract

II

目录

I

1绪论

1

1.1课题的研究背景及意义

1

1.2国内外全程给水研究现状

1

1.3课题主要研究工作

2

2给水被控对象的动态特性

3

2.1全程控制的概念

3

2.2给水控制对象的动态特性

3

2.2.1给水流量扰动下水位的动态特性

3

2.2.2蒸汽流量扰动下水位的动态特性

5

2.2.3炉膛热负荷扰动下水位的动态特性

6

3全程给水控制系统需解决的关键问题

7

3.1信号的自动校正

7

3.1.1水位信号的压力校正

7

3.1.2过热蒸汽流量信号的压力、温度校正

9

3.1.3给水流量信号的温度校正

10

3.2给水泵安全特性要求

11

3.3切换问题

12

3.3.1给水流量的测量装置的切换问题

12

3.3.2大小调节阀门的切换问题

14

3.3.3系统的无扰切换问题

15

4给水自动控制系统方案

18

5给水全程控制系统设计

22

5.1全程给水系统说明

22

6仿真及整定

24

6.1子系统仿真

24

6.2全程给水系统仿真

26

6.3鲁棒性测试

28

全文总结

30

参考文献

31

致谢

32

1绪论

1.1课题的研究背景及意义

随着电力需求的增长,以及能源和环保的要求,我国的火电建设开始向大容量、高参数的大型机组靠拢。但是,火电机组越大,其设备结构就越复杂,自动化程度要求也越高。。

汽包水位是汽包锅炉非常重要的运行参数,同时它还是衡量锅炉汽水系统是否平衡的标志。维持汽包水位在一定允许范围内,是保证锅炉和汽轮机安全运行的必要条件。水位过高会影响汽水分离器的正常运行,蒸汽品质变坏,使过热器管壁和气轮机叶片结垢。严重时,会导致蒸汽带水,造成汽轮机水冲击而损坏设备。水位过低则会破坏水循环,严重时将引起水冷壁管道破裂。因此,汽包水位控制一直受到很高的重视。

另一方面,随着锅炉参数的提高和容量的增大,汽包的相对容积减少,负荷变化和其他扰动对水位的影响将相对增大。这必将加大水位控制的难度,从而对水位控制系统提出了更高的要求。但是,由于给水系统的复杂性,真正能实现全程给水控制火电机组还很少。因此,对全程给水控制进行优化,增强给水系统的控制效果和适应能力成为迫切需要的问题。

1.2国内外全程给水研究现状

目前,我国将火电建设的重点放在大容量、高参数、高自动化、高效益的机组上来,因而对电厂控制设备可靠性的要求越来越高,控制策略也向高精度、高效率、高稳定性的方向发展。同时,随着电力行业体制改革及电网商业化运营、竞价上网的需要,以及火电机组要适应电网自动发电控制(AGC)的需求,这必然要求机组各控制系统实现自动调节,因而对火电厂热工自动化系统进行技术改造已成为必然。汽包水位控制系统在国内新建机组中基本都实现了水位全程调节,但在老机组的控制系统中由于存在各种客观和主观因素,真正实现锅炉给水全程控制的机组还为数不多,大多数只实现了高负荷时水位自动调节系统的投入。这主要是因为老机组的控制仪表较落后,而当时技术条件又不够成熟,用于实现水位调节的控制设备多为一些组件组装仪表,如西安仪表厂的MZ-Ⅲ系列组装仪表、上海FOXBORO公司的SPEC-200微机组件组装式仪表等。因而在实现控制策略及控制逻辑等方面受到了限制。同时,因为就地控制设备的可靠性不高,使得当时国内火电厂热工自动化水平整体较落后。

在最近几年,通过对老机组的技术改造,特别是分散控制系统(DCS)的改造成功,已经使机组的自动化水平上了一个台阶。一些在常规仪表中无法实现的功能,由于DCS系统的灵活组态及计算机控制技术的优越性已完全可以实现,因而实现对机组各控制系统的全程调节已完全成为可能。锅炉给水全程控制,是指机组在启、停过程中,正常运行和负荷变化时均能实现锅炉给水的自动控制。在大型火力发电机组锅炉给水全程控制中,由于机组在高、低负荷下运行时具有不同的对象特性,一般控制系统采用单冲量、三冲量控制等变结构控制方案。给水系统一般采用经济性极佳的变速给水泵,除采用液力偶合器的电动给水泵、汽动给水泵外,还需要采用一套调节系统,保证给水泵工作在安全区域内。

国内机组实现全程给水控制考虑的方案一般是在低负荷时,用启动调节阀控制汽包水位,调速给水泵维持给水母管压力,采用单冲量的控制方式;高负荷时,使用调速给水泵控制汽包水位,大旁路调节阀维持给水压力,采用三冲量的控制方式。它由单冲量和三冲量两个调节回路组成全程给水控制,当负荷大于30%时为三冲量,当负荷小于30%或三冲量变送器故障时为单冲量。

1.3课题主要研究工作

本文围绕给水控制优化这一主题,立足于低负荷给水控制优化设计,同时对高负荷阶段给水泵协调控制方法进行了研究,从真正意义上实现从机组的启动到正常运行,又到停炉冷却全部过程均能自动控制。

本论文主要作了以下几方面的研究工作:

(I)深入分析给水对象的动态特性,阐述了现今给水全程控制中存在的缺陷和不足。并根据给水分段式控制的原则,分别从低负荷和高负荷两个方面入手研究其改进方法;

(2)针对低负荷阶段给水对象复杂、难控的现状,分析了问题的形成机理。在充分利用PID调节器进行控制的条件下,提出了以多变量解耦控制理论为基础的低负荷给水控制方案,并且对单冲量给水控制提出了改进建议和方法;

(3)对给水控制的经济性进行的分析,提出了自己思考的改进办法。同时针对还处于手动控制的给水调节阀切换,设计了自动无扰切换回路。

2给水被控对象的动态特性

2.1全程控制的概念

目前,大型火电单元机组都采用机、炉联合启动的方式,锅炉、汽轮机按照启动曲线要求进行滑参数启动。具有中间再热的单元机组多采用定压法进行滑参数启动。随着机组容量的增大、参数的提高,在启动和停机过程中需要监视和操作的项目增多,操作的频率也增高,采用人工调节已不适应生产要求,而必须在启、停过程中也实现自动控制。所谓全程控制系统是指机组在启停过程和正常运行时均能实现自动控制的系统。全程控制是相对常规控制系统而言的,全程控制包括启停控制和正常运行工况下控制两方面的内容。常规控制系统一般只适用于机组带大负荷工况下运行,在启停过程或低负荷工况下,一般要用手动进行控制,而全程控制系统能使机组在启动、停机、不同负荷工况下自动运行。以给水控制系统为例,常规串级三冲量给水系统只能在负荷达到额定负荷70%时,才能投入自动,在此以前全部为手动操作,而全程给水系统从锅炉点火启动开始便可以投入自动。

2.2给水控制对象的动态特性

汽包水位是由汽包中的储水量和水面下的汽泡容积决定的,因此凡是引起汽包中储水量变化和水面下的汽泡容积变化的各种因素都是给水控制对象的扰动。其中主要的扰动有:给水流量W、锅炉蒸发量D、汽包压力Pb、炉膛热负荷等。给水控制对象的动态特性是指上述引起水位变化的各种扰动与汽包水位间的动态关系。汽包水位动态特性较为复杂,一是对汽包水位扰动有四个来源,二是“虚假水位”问题的存在,特别是后一个问题使得人们设计出“三冲量”给水控制系统。了解、掌握汽包水位动态特性是保证给水自动控制系统顺利投入的基本要求。

2.2.1给水流量扰动下水位的动态特性

给水流量是调节机构所改变的控制量,给水流量扰动是来自控制侧的扰动,又称内扰。给水流量扰动下水位的阶跃响应曲线如图2.1所示。

图2.1给水流量阶跃扰动下水位响应曲线

当给水流量阶跃增加ΔW后,水位H的变化如图中曲线H所示。水位控制对象的动态特性表现为有惯性的无自平衡能力的特点。当给水流量突然增加后,给水流量虽然大于蒸汽流量,但由于给水温度低于汽包内饱和水的温度,给水吸收了原有饱和水中的部分热量使水面下汽泡容积减少,实际水位响应曲线可视为由H1和H2两条曲线叠加而成,所以扰动初期水位不会立即升高。当水面下汽泡容积的变化过程逐渐平衡,水位就反应出由于汽包中储水量的增加而逐渐上升的趋势,最后当水面下汽泡容积不再变化时,由于进、出工质流量不平衡,水位将以一定的速度直线上升。这种特性可由下列近似传递函数表示:

式中:ε-水位响应速度,即单位给水量扰动时,水位的变化速度,mm.s.h.t;

τ-迟延时间,s。

ε和τ的大小和锅炉容量及参数有关。对于蒸发量为410t/h,参数为10MPa、540℃的高压炉,τ=10s,ε=0.015mm.s.h.t;对于容量为670t/h,参数为14MPa、540℃的超高压炉,τ=5~10s,ε=0.0095~0.0125mm.s.h.t。由此可见,随着锅炉容量的增大和参数的提高,水位内扰特性的迟延时间减少,响应速度也略有下降,对水位H的控制是有利的。但按锅炉容量的增大来计算响应速度,则得到的相对响应速度逐渐增大,说明随着锅炉容量和参数的提高,对水位H控制的要求也越高。

2.2.2蒸汽流量扰动下水位的动态特性

蒸汽流量扰动主要来自汽轮发电机组的负荷变化,属外部扰动。在蒸汽流量D扰动下水位变化的阶跃响应曲线如图2.2所示。当蒸汽流量突然阶跃增大时,由于汽包水位对象是无自平衡能力的,这时水位应下降,如图2.2中H1曲线所示。但当锅炉蒸发量突然增加时,汽包水下面的汽泡容积也迅速增大,即锅炉的蒸发强度增加,从而使水位升高,因蒸发强度的增加是有一定限度的,故汽泡容积增大而引起的水位变化可用惯性环节特性来描述,如图2.2中H2曲线所示。实际的水位变化曲线H则为H1和H2的合成。由图2.2可以看出,当锅炉蒸汽负荷变化时,汽包水位的变化具有特殊的形式:在负荷突然增加时,虽然锅炉的给水流量小于蒸发量,但开始阶段的水位不仅不下降,反而迅速上升(反之,在负荷突然减少时,水位反而先下降),这种现象称为“虚假水位”现象。这是因为在负荷变化的初期阶段,水面下汽泡的体积变化很快,它对水位的变化起主要影响作用的缘故,因此水位随汽泡体积增大而上升。只有当汽泡体积与负荷适应而不再变化时,水位的变化就仅由物质平衡关系来决定,这时水位就随负荷增大而下降,呈无自平衡特性。

蒸汽流量扰动下的水位响应特性可用下述近似传递函数表示:

式中:T-H2曲线的时间常数;K-H2曲线的放大系数;ε-H1曲线的响应速度。虚假水位现象与锅炉参数及蒸汽负荷变化大小有关,对于100~670t/h中、高压锅炉,当负荷阶跃变化10%时,虚假水位可达30~40mm。

图2.2蒸汽流量阶跃扰动下水位响应曲线

2.2.3炉膛热负荷扰动下水位的动态特性

当燃料量扰动时,例如燃料量增加使炉膛热负荷增强,从而使锅炉蒸发强度增大。若此时汽轮机负荷未增加,则汽轮机侧调节阀开度不变。随着炉膛热负荷的增大,锅炉出口压力提高,蒸汽流量也相应增加,这样蒸汽流量大于给水流量,水位应该下降。但是蒸发强度增大同样也使水面下汽泡容积增大,因此也会出现虚假水位现象。燃料量扰动下的水位阶跃响应曲线如图2.3所示,由图可以看出,这种扰动下的“虚假水位”现象不太严重,这是因为蒸汽流量增加的同时汽压也增大了,因而使汽泡体积的增加比蒸汽流量扰动时要小,从而使水位上升幅度较小。另外,由于蒸发量随燃料量的增加有惯性和时滞,如图2.3虚线所示,这就导致迟延时间τ较长。

图2.3燃烧量扰动下的水位特性

对汽包水位的第四种扰动是汽包压力的变化,汽包压力对汽包水位的影响是通过汽包内部汽水系统在压力升高时“自凝结过程”和压力降低时的“自蒸发”过程起作用的。

上述四种扰动在锅炉运行中都可能经常发生,给水流量扰动作为内部扰动,汽包水位对其响应的动态参数(τ、ε)是给水控制系统调节器参数整定的依据。蒸汽流量D、燃料量B和汽包压力Pb扰动作为外部扰动,会造成水位波动。蒸汽流量D和燃料量B的变化是产生“虚假水位”的根源。所以在给水控制系统里常常引入D、B信号作为前馈信号,以改善外部扰动时的控制品质,而这也是目前大型锅炉给水控制系统采用三冲量或多冲量的根本原因。

3全程给水控制系统需解决的关键问题

3.1信号的自动校正

锅炉从启动到正常运行或是从正常运行到停炉的过程中,蒸汽参数和负荷在很大的范围内变化,这就使水位、给水流量和蒸汽流量测量信号的准确性受到影响。为了实现全程自动控制,要求这些测量信号能够自动地进行压力、温度校正。测量信号自动校正的基本方法是,先推导出被测参数随温度、压力变化的数学模型,然后利用各种元件构成运算电路进行运算,便可实现自动校正。按参数变化范围和要求的校正精度不同,可建立不同的数学模型,因而可设计出不同的自动校正方案。

3.1.1水位信号的压力校正

由于汽包中饱和水和饱和蒸汽的密度随压力变化,所以影响水位测量的准确性。通常可以采用以下两种压力校正的方法。

采用电气校正回路进行压力校正。就是在水位差压变送器后引入校正回路,图3.1表示单容平衡容器的测量系统。

图3.1 汽包水位测量系统

Pb—汽包压力;H—汽水连通管之间的垂直距离,即最大变化范围;

h—汽包水位高度;P1、P2—加在差压变送器两侧的压力;

—饱和蒸汽的密度;—饱和水的密度;—汽包外平衡容器内凝结水的密度。

从图3.1中可以看出:

=+

=H

=

(3-1)

当H一定时,水位h是差压和汽、水密度的函数。密度与环境温度有关,一般可取50℃时水的密度。在锅炉启动过程中,水温略有增加,但由于同时压力也升高,两种因素对的影响基本上可抵消,即可近似地认为是恒值。而饱和水和饱和汽的密度和均为为汽包压力Pb的函数,即

所以式(3-1)可以改写为

(3-2)

按照式(3-2),可以设计出水位压力自动校正线路,如图3.2所示。图3.2中函数组件f1(x)、f2(x)分别模拟式(3-2)中的fa(Pb)和fb(Pb)。计算和试验表明,密度与汽包压力之间的函数曲线如图3.3所示。

图3.2 水位压力自动校正线路之一 图3.3 密度与汽包压力的关系曲线

从图3.3中曲线可以看出,-与Pb的关系在较大范围内可近似地认为是线性关系即

则式(3-l)可改写为

(3-3)

按式(3-3)可设计出较为简便的水位自动校正线路,如图3.4所示。

(2)采用具有双室平衡容器的水位取样装置进行水位校正,这种装置本身基本上可以补偿启动或停止过程中的水位测量误差,校正原理如图3.5所示。

图3.4水位压力自动校正线路之二 图3.5采用双室平衡容器的水位测量系统

和压力自动校正回路

这种测量装置中,水位表达式为

(3-4)

H为正压取压管管口水位到负压管水平的中心线之间的距离,式(3-4)中没有式(3-1)中的a-s项,故a随温度变化的影响消除了。

3.1.2过热蒸汽流量信号的压力、温度校正

过热蒸汽流量测量通常采用标准喷嘴。这种喷嘴基本上是按定压运行额定工况参数设计,在该参数下运行时,测量精度是较高的。但在全程控制时,运行工况不能基本固定。当被测过热蒸汽的压力和温度偏离设计值时,蒸汽的密度变化很大,这就会给流量测量造成误差,所以要进行压力和温度的校正。可以按下列公式进行校正

(3-5)

式中D——热蒸汽流量;

P——过热蒸汽压力;

T——过热蒸汽温度;

∆P——节流件差压;

——过热蒸汽密度;

k——流量系数。

按(3-5)式可设计出过热蒸汽流量信号的压力,温度自动校正线路如图3.6所示。

图3.6 过热蒸汽流量信号的压力、温度自动校正线路图

为了避免高温高压节流元件因磨损带来的误差,可用汽机调速级压力P1代替蒸汽流量信号。实验证明,这种方法是准确和行之有效的,线路结构如图4.7所示。

3.1.3给水流量信号的温度校正

图3.7 用P1代替蒸汽流量测量校正线路 图3.8 给水流量信号温度校正线路

计算和试验结果表明当给水温度为100℃不变,压力在0.196~19.6MPa范围内变化时,给水流量的测量误差为0.47%;若给水压力为19.6MPa不变,给水温度在100~290℃范围内变化时,给水流量的测量误差为13%。所以,对给水流量测量信号可以只采用温度校正,其校正回路如图3.8所示。若给水温度变化不大,则不必对给水流量测量信号进行校正。

3.2给水泵安全特性要求

在给水系统全过程运行中,保证给水泵总是工作在安全工作区内,是一个重要问题。现代大型单元机组都采用变速泵来控制给水流量。300MW以下的单元机组多用电动变速泵做主给水泵,通过调整液力连轴器的勺管位置来调节泵的转速。大于300MW的单元机组多采用汽动变速泵做主给水泵,再设置多台电动变速泵做启动给水泵并作为系统的备用泵使用。无论哪种类型的变速泵,保证泵的安全工作区是首先要考虑的问题。

图3.9 给水泵安全工作特性示意图

变速给水泵的安全工作区可在泵的安全工作特性示意图中看到,如图3.9所示。变速泵的安全工作区由六条曲线构成:泵的上、下限特性、最高转速nmax和最低转速nmin,泵出口最高压力Pmax和最低压力Pmin。

若泵的工作点在上限特性之外,则给水流量太小,将使泵的冷却水量不够而引起泵的汽蚀,甚至震动;若泵工作在下限特性之外,则泵的流量太大,将使泵的工作效率变低。此外,变速泵的运行还必须满足锅炉安全运行的要求,即泵出口压力(给水压力)不得高于锅炉运行的最高给水压力Pmax且不得低于最低给水压力Pmin。因此,采用变速泵的给水全程控制系统,在控制给水流量过程中,必须保证泵的工作点落在安全区域内。

图3.10给水泵出口压力调整时的工况

在锅炉启动、停炉或低负荷运行时,泵的工作点有可能落入上限特性之外。为防止出现这种情况,最有效的措施是增加低负荷时给水泵的流量。目前采用的方法是在泵出口至除氧器水箱之间安装再循环管道,当泵的流量低于某一设定的最小流量时,再循环门自动开启,增加泵体内的流量,从而使低负荷阶段给水泵的工作点也在上限特性曲线之内。随着机组负荷的逐渐增大,给水流量也会逐渐增大,当流量高于某一值时,再循环门将自动关闭。

变速泵下限特性决定了不同压力下水泵的最大负荷能力。当锅炉负荷升到某一程度,即给水流量较大时,如果安全工作区较窄,则工作点可能会移到下限特性曲线之外,因此,需要采取措施加以防止。目前采用的方法是提高上水管道的阻力,即关小泵出口流量调节阀门,以提高泵的出口压力,使工作点重新移入安全区内。如图3.10所示。滑压运行时,设给水泵工作点在a点外,甭转速为n1,甭出口压力为p1,给水流量为W1。当机组负荷增大,给水流量要求为W2时,如果水泵仍在a1转速运行下去,通过开大给水阀门来增大给水流量,则工作点将沿n1曲线由a1点移到c点,落到水泵安全工作区外,这是不允许的。解决问题的办法是关小给水调节阀门,使泵的出口压力升高,同时使水泵转速由n1增至n2,当给水流量达到负荷要求数值时,工作点将由a点移到b点,不会滑到安全工作区以外,保证了给水泵的安全运行。

另外,给水泵有最低转速nmin的要求,这样在水泵已接近nmin时就不能以继续降低转速的方式来调节给水量,这就需要改变上水道阻力(即设置给水调解阀)的方式,使泵工作在安全区内。由于兼用改变转速和上水通道阻力两种方式调节给水凉,增加了全程给水自动控制系统的复杂性。

总之,采用变速泵构成全程给水自动控制系统时,应包括以下三个子系统:

给水泵转速控制系统。根据锅炉负荷要求,控制给水泵转速,改变给水流量。

给水泵最小流量控制系统。低负荷时,通过增大水泵再循环流量的办法来维持水泵流量不低于设计要求的最小流量值,以保证给水泵工作点不落在上限特性曲线的外面。

给水泵出口压力控制系统。通过控制给水调节阀的开度来维持给水泵的出口压力,保证给水泵工作点不落在最低压力Pmin线下和下限特性工作曲线之外。

3.3切换问题

3.3.1给水流量的测量装置的切换问题

在全程控制中给水流量测量信号的准确性与压力、温度的校正精度有关,但主要取决于高、低负荷时流量测量的精度。一般,大型单元机组的给水管路系统如图3.11所示。

图3.11单元机组给水管路

上面的一路为主给水,在高负荷时使用;下面一路为流量较小的旁路给水,锅炉启停过程中及低负荷运行时用它供水;中间一路为辅助给水,当主给水管路发生故障或因水压过低而主给水供不应求时使用。图中#1、#2、#3为截止阀,#4、#5、#6为调节阀,#7为总截止阀。旁路给水管路中的最大流量只有主给水管路流量的30%左右,如果采用一个孔板测量给水流量,在低负荷时必然会产生较大的测量误差。为此,给水系统中安装了1、2两个孔板。在锅炉启停及低负荷运行时用旁路孔板2测量给水量,高负荷时用主管路孔板l测量给水量。对于这种采用两个测量元件的给水流量测量系统,需要用一个流量信号运算回路,如图3.12所示。

图3.12 给水流量信号运算回路

(a)运算回路;(b)可变系数k的变化曲线

由于旁路给水管路中的实际流量为主给水管路的1/4左右,因此测量旁路给水流量的变送器输出信号要用乘法器乘以0.25系数,以使使旁路给水流量信号与主给水流量信号具有同样的变化范围。在比较器1中,主给水流量信号W1减去旁路给水流量信号0.25W2,此差使信号在另一乘法器中乘可变系数k,乘法器的输出为k(W1-0.25W2),k值由比例偏置器调整。当给水流量大于25%时,k值由l向零逐渐变小,如图(b)中曲线所示。当流量达到30%时k=0,这时旁路给水流量信号消失,转入主给水管路的给水流量测量。可见比较器2的输出信号为

式中W——总给水流量信号;

W1——主给水流量信号;

W2——旁路给水流量信号。

由上式可见,当k=l时,W=0.25W2当k=0时,W=W1,这样就实现了在低负荷时用旁路管路上的孔板2测量给水流量,高负荷时用主给水管路上的孔板1测量给水量的要求,从而提高了测量精度。

3.3.2大小调节阀门的切换问题

在给水全程控制中,低负荷时通常用旁路阀门(即小阀门)调节给水流量,高负荷时用主给水阀门(即大阀门)调节给水流量。在负荷变化时,大小阀门就需要进行无扰切换。

图3.13表示的是这种切换的线路原理。

图3.13 大小调节阀无扰切换原理图

从图3.13中可以看出,在低负荷时,继电器接点KJ断开,定值组件GH发出l0V的阶跃信号,经过加法器,直接送到小阀回路中的乘法器,即=l0V。小阀回路乘法器输出

===a

其中(c=10V)。a信号即为调节器的输出信号,所以小阀回路中的控制信号即为调节器输出信号,小阀处于工作状态。

与此同时,大阀门处于关闭状态。这是因为KJ断开,限速组件≮的输出信号b为0,则大阀回路中的乘法器输出

===0

当机组负荷增加,给水流量增大到一定值时,绝对值报警组件H/L动作,使继电组件KJ激励,接点KJ闭合。这时,限速组件输入为一个l0V的阶跃信号,其输出b变为斜坡信号,当斜坡信号达到l0V时,

===

即大阀门逐渐开大,最后变为调节器的输出信号,大阀门参与工作。

与此同时,加法器的输出信号,即小阀门回路中的信号如图中所示,为一个由大到小的斜坡信号。当信号降为零时,小阀门回路的乘法器输出

===0

即在大阀门开大时,小阀门相应关小,直到全部关闭。

由于两个阀门的流通量是不同的,所以两个阀门的开关速度应该是不同的(如图3.14所示),而流量应该保持相等,这可以通过比例系数和偏置值进行调整。

图3.14 大小阀门开度变化曲线

继电组件KJ是由给水流量控制的组件,为了防止启停过程中造成阀门的多次反复切换,切换点电压应具有一定的滞环值。

调节阀的切换与截门的切换应密切配合,截门应在调节阀投入工作之前打开。

3.3.3系统的无扰切换问题

串级三冲量给水控制系统

由汽包锅炉给水控制对象动态特性的特点,可以确定给水控制系统结构的一些基本思想:

由于对象的内扰动态特性存在一定的迟延和惯性,所以给水控制系统若采用以水位为被调量的单回路系统,,则控制过程中水位将出现较大的动态偏差,给水流量波动较大。因此,对给水内扰动动态特性迟延和惯性大的锅炉应考虑采用串级或其他控制方案。

由于对象在蒸汽负荷扰动时,有虚假水位现象,因此给水控制若采用以水位为被调量的单回路系统,则在扰动的初始阶段,调解器将使给水流量向与负荷变化相反的方向变化,从而扩大了锅炉进出流量的不平衡。

所以在设计给水控制系统时,应考虑采用以蒸汽流量D为前馈信号的前馈控制,以改善给水控制系统的品质。

总之,由于给水控制系统被控对象的特点,决定了采用单回路反馈控制系统不能满足生产对控制品质的要求,所以电站起爆锅炉的给水自动控制普遍采用三冲量给水自动控制。系统结构和工作原理串级三冲量给水控制系统图如图3.1所示。

串级三冲量控制系统的控制任务由两个调节器来完成,主调节器PI1采用比例积分控制,保证水位无静态偏差。主调节器的输出信号和给水流量、蒸汽流量信号都作用到副调节器PI2,一般副调节器都采用比例控制规律,以保证副调节回路的快速性。

串级系统主副调节器控制任务不同,副调节器的任务是用以消除给水压力波动等因素引起的给水流量的自发性扰动以及当蒸汽负荷改变时迅速调节给水流量,以保证给水流量和蒸汽流量平衡;主调节器的任务是校正水位偏差。这样,当负荷变化时,水位稳定值是靠主调节器PI1来维持的,并不要求进入副调节器的蒸汽流量信号的作用强度按静态配比来进行整定,却可以根据对象在外绕下虚假水位的严重程度来适当加强蒸汽流量信号的作用强度,从而改变负荷扰动下的水位控制品质。所以,三冲量系统有很好的控制品质。

锅炉在不同的负荷和参数下,其给水被控对象的动态特性是不同的。低负荷时,由于蒸汽参数低,负荷变化小,虚假水位现象不太严重,对维持水位恒定的要求又不太高,所以允许采用单冲量给水控制系统。此时如果采用多种自动校正措施,则会使系统结构复杂,整定困难,同时仍然存在误差。于是出现了低负荷时采用单冲量,高负荷时采用三冲量的给水全程控制系统,如图3.15所示。

图3.15 单冲量系统与三冲量系统相互切换和跟综线路

图中PIl是低负荷时的单冲量给水调节器,它只接受经过自动校正后(图中未表示水位信号的自动校正回路)的水位信号。高负荷时采用串级三冲量给水控制系统,其中PI2为主调节器,接受水位信号PI3为副调节器,除接受主调节器校正信号外,还接受蒸汽流量信号D及给水流量信号W。两套控制系统的切换是根据锅炉负荷(蒸汽流量)的大小进行的。蒸汽流量信号送入偏差报警继电器KJ,控制继电器接点lC和3C。当单冲量系统运行时,lC闭合,3C断开。当要求三冲量系统运行时,3C闭合,lC断开。系统的切换在25%负荷左右进行。为了防止因负荷波动造成系统反复切换,切换值应有10%的滞环值,就是说出单冲量系统切换为冲量系统是在30%负荷下进行的,由三冲量系统切换为单冲量系统是在20%负荷下进行的。设计跟踪系统的基本原则是:当三冲量系统运行时,要求PI1调节器的输出跟踪PI3调节器的输出;单冲量系统运行时,要求PI3调节器的输出跟踪PI1调节器的输出;主调节器PI2的输出应保证加法器的输出跟踪给水流量信号。

4给水自动控制系统方案

由于在低负荷是虚假水位现象并不严重,所以仅用简单的单冲量就可以达到控制效果,并且一般在低负荷时都是通过调节小阀来控制水位,当负荷升高到一定程度,才通过调节电动泵或气动泵来调节给水量,所以现在电厂通常采用的给水控制系统是低负荷使用单回路控制,高负荷使用三冲量控制。即所谓两段控制,两段控制方式是指给水控制系统用两套独立的系统,分别指挥自己的执行机构来完成给水全程控制的方式。

全程控制的方案有很多,主要有以下几种:

图4.1 方案—系统示意图

方案一 如图4.1所示。这是一个两段调节的方案,用改变调节阀门的开度来控制给水量。低负荷时用小阀门单冲量系统(PI1),高负荷时用大阀门三冲量系统(PI2)。在两种情况下,都用调节器PI3,既保证调速泵在安全转速内工作,又使给水阀门两端差压保持为定值。当阀门两端差压一定时,其流量与开度的关系可以近似成线性关系,故调节性能较好。但由于高低负荷都采用阀门调节,特别是高负荷时节流损失大,经济性较差。

方案二 如图4.2所示。这也是一个两段调节的方案。调节器PI1、PI2调节阀门开度,控制给水流量,小负荷采用单冲量系统,大负荷采用三冲量系统。调节器PI3保证调速泵出口压力为一定值Ps(要求Ps>Pb+Hp+k),(Pb为汽包压力、Hp为泵出口到汽包的压力损失,k为阻力),既保证调速泵工作在安全区内,同时又使泵在热态启动和冷态启动时有相应的转速。这个方案结构较方案一简单,但仍都采用阀门调节,故经济性仍差。

图4.2 方案二系统示意图

方案三 如图4.3所示。这个方案中,低负荷时通过大值选择器和调节器PI3,使泵运行在安全工作的最低转速nmin,通过PIl改变阀门开度来实现给水量调节,所以这时为两段调节。而在高负荷时,阀门开到最大,三冲量调节器PI2的输出大于nmin值,故它的输出去改变PI3的输出,使泵的转速改变,从而调节给水量,所以这时是一段调节。此方案中,在变负荷时用改变泵转速控制给水量,保持水位,经济性大大改善。但由于有系统、调节段、阀门等三种切换,线路复杂,不易掌握,可靠性也相应下降。

图4.3 方案三系统示意图

方案四 如图4.4所示。此方案在低负荷时用PI1调节器改变阀门开度来改变给水量,保持水位。同时,使用泵前压力调节器PI3控制压力,既使泵工作在安全工作区内,又保证安全供水所需的必要的泵出口压力。在高负荷时切到三冲量控制系统,这时阀门开到最大,PI2的输出直接改变变速泵转速,达到改变给水量、保持水位的目的。此时泵负荷增大,即自然工作在安全区内,故不需PI3再进行工作。此方案经济性好,切换简单,实现方便。但由于系统切换与调节段切换是同时进行的,而这两者的要求又是不同的,往往因为要满足一种切换的要求条件而不能满足另一种切换的要求条件,系统与调节段两种切换集中在同一时刻进行,危险性集中,对安全运行不利。

图4.4 方案四系统示意图

方案五 如图4.5所示。这个方案中,低负荷时采用单冲量系统(PI1),高负荷时采用三冲量系统(PI2),而且都是通过改变调速泵转速来实现给水量的调节。为了保证给水泵工作在安全工作区内,设计了一个给水泵出口压力调节系统(PI3),通过改变阀门开度来改变泵的出口压力。在给水泵出口和高压加热器出口分别取给水压力信号送入小值选择器。当机组正常运行时,高压加热器出口的给水压力总是低于泵的出口压力。这时,应选高压加热器出口给水压力作为压力测量值,使泵的实际工作点在泵下限特性曲线偏左一些,确保泵工作在安全工作区内。当机组热启动时,高压加热器出口的给水压力高于泵的出口压力,小选组件输出为泵出口压力,保证泵出口给水压力升压过程中,两个调节阀门均处于关闭状态,直到泵出口压力大于高压加热器出口给水压力时,才按高压加热器出口的给水压力进行调节,控制两个阀门的开度。这个方案结构合理,经济性好,切换较简单,安全可靠性也较好。不足之处是压力调节系统和水位调节系统互相影响,同时两个系统切换动作频繁,使调节阀磨损较快。

图4.5 方案五系统示意图

方案六 如图4.6所示。这是一个一段调节的方案,在低负荷时采用PI1单冲量系统,这时调速泵由大值选择器的输出(GH1)值来控制,使泵维持在允许的最低转速。此时给水量是通过改变调节阀开度来调节的。高负荷时,阀门开到最大,为了减小阻力,把并联的调节阀也开到最大,三冲量调节器PI2的输出大于GH1的值,故可直接改变调速泵转速控制给水量。

在冷态启动时,GH1起作用,即让泵工作在最低转速。在热态启动时取决于Pb值,泵可以直接工作在较高的转速。

这个方案中没有专门设计泵出口压力安全调节系统,解决给水泵在安全工作区的办法是利用调速泵运行的自然特性,即在定压运行时用两台泵同时给水的方法,使每台泵的负荷不超过86%,这样泵就自然工作在安全区内。

这个方案结构最简单,系统和调节段两种切换互相错开,Pb是开环调节,调节段是无触点自由过渡,安全性能好,是一个好方案。

图4.6 方案六系统示意图

由以上分析可以看出,方案四、五、六都是较好的方案,特别是方案五、六,优点更多些。

5给水全程控制系统设计

5.1全程给水系统说明

全程给水sama图见附录

逻辑信号说明

逻辑信号1:给水手动或负荷〉30%,PID3跟踪

逻辑信号2:当1PI处于跟踪状态时,给水手动并且旁阀开度〈90%,PID1跟踪信号V;否则跟踪A泵和B泵中转速较大的值。

逻辑信号3:给水手动或负荷〈30%,PID2跟踪。

逻辑信号4:给水手动或负荷〈30%,PID1跟踪。

逻辑信号5:旁阀双回路跟踪时,将接通旁阀位置反馈信号;否则,接通手动给定值。

逻辑信号6:旁阀双回路跟踪或手动时,接通反馈值;否则,接通控制信号。

逻辑信号7:给水手动时,接通A泵转速反馈值;否则,接通控制信号PID2输出。

逻辑信号8:A泵双回路跟踪时,接通A泵转速反馈值;否则,接通手动给定值。

逻辑信号9:A泵手动时,接通转速反馈值或者手动给定值;否则,接通控制信号。

逻辑信号10:A泵转速信号反馈值与给定值偏差太大时报警。

逻辑信号12:B泵双回路跟踪时,接通B泵转速反馈值;否则,接通手动给定值。

逻辑信号13:B泵手动时,接通转速反馈值或者手动给定值;否则,接通控制信号。

逻辑信号14:A泵转速信号反馈值与给定值偏差太大时报警。

控制系统的跟踪与切换

当负荷小于30%时,采用单回路输出信号来控制阀门开度,此时三冲量主调节器PID1跟踪总给水流量与主蒸汽流量SW之差,三冲量副调节器PID2的输入信号即为0,PID2输出跟踪单回路控制器PID3的输出,并产生控制信号去控制阀门和电泵。

当负荷增加到30%后,采用三冲量进行控制此时,PID1停止跟踪,该将水位给定值H和测量值进行偏差运算并进行调节,其结果经过高低限幅运算与主蒸汽流量一同送入副调节器PID2,此时PID2也停止跟踪,进行调节工作,输出控制信号。由于在负荷〈30%时,PID2的输出是跟踪PID3的,所以切换是无扰动的。PID3这时转为跟踪PID2输出的控制信号,以实现由三冲量向单冲量的切换也能无扰进行。

泵和阀门的运行

从3PI输出的控制信号经过f1(x)运算后,转化为使旁阀开度在0~100%时,符合可以从0~30%变化的信号。并由位置变送器ZT将旁阀位置反馈回来,如果反馈值和位置信号相差过大,则出现旁阀阀位偏差报警。

3PI的输出经过f2(x)运算后变为可以在0~100%负荷调节给水量的信号去控制A泵转速。该信号经过一个低限幅模块后,在符合小于30%时,不动作,电泵维持在最低转速。只有当负荷升高到一定程度,控制信号经f2(x)运算后大于给定值时,才能作为泵的转速给定值去控制泵的给水流量。同时,转速测量装置会将泵的转速反馈回来,若和给定值偏差过大,则会出现A泵转速偏差报警。B泵同理。

手/自动切换问题

当给水手动控制时,也存在跟踪问题。PID3在手动并且旁阀开度大于30%时,会跟踪A泵和B泵转速信号中的较大值,在手动并且旁阀开度小于30%时,会跟踪旁阀位置信号。此时,PID2跟踪PID3的输出信号。PID1跟踪给水流量与蒸汽流量SW之差,当旁阀硬手操时,则处于双回路跟踪状态,这时控制信号直接跟踪旁阀位置变送器的输出值。如果旁阀处于手动,则跟踪手动给定值。A泵和B泵同理。由于这些跟踪,使得在手/自动切换时得以无扰进行。

6仿真及整定

采用的仿真软件为MATLAB,在其Simulink工具箱中搭建仿真框图进行仿真。

6.1子系统仿真

搭建单回路仿真框图如图6.1:

图6.1单回路仿真框图

其中,为给水流量在低负荷时对汽包水位的传递函数。

经整定得P=5,I=0.4

系统在给定值扰动下的阶跃响应曲线如图6.2:

图6.2单回路系统在给定值单位阶跃扰动下的响应曲线

指标

超调量

衰减率

调节时间

稳态误差

结果

30%

90%

103s

0

搭建串级三冲量控制系统仿真框图如图6.3:

图6.3串级三冲量仿真框图

其中,为给水流量在高负荷时对汽包水位的传递函数;为蒸汽流量扰动在高负荷时对汽包水位的传递函数;

经整定得P=0.9,I=0.075;P1=4,I1=0.05

串级三冲量系统在给定值阶跃扰动下的响应曲线如图6.4:

图6.4三冲量系统在给定值单位阶跃扰动下的响应曲线

指标

超调量

衰减率

调节时间

稳态误差

结果

49%

77%

370s

0

串级三冲量系统在蒸汽阶跃扰动下的响应曲线如图6.5:

图6.5串级三冲量系统在蒸汽单位阶跃扰动下的响应曲线

串级三冲量系统在给水流量单位阶跃扰动下的响应曲线如图6.6:

图6.6串级三冲量系统在给水流量单位阶跃扰动下的响应曲线

6.2全程给水系统仿真

通过全程给水仿真使单回路和三冲量两个子系统结合起来,仿真中选择在200s时使系统从单回路切换到三冲量控制,测试其控制品质。

仿真框图如图6.7:

图6.7全程给水控制仿真框图

在0秒加入给定阶跃扰动,该仿真试验在300s时由单回路切换到三冲量,在600s时加入了蒸汽流量的阶跃扰动。900秒加入给水节约扰动,响应曲线如图6.8:

图6.8全程仿真图

执行器输出如图6.9:

图6.9执行器输出曲线

测试结果表明,系统调节性能良好,在切换过程中没有出现剧烈抖动,执行器输出也无急剧变化的情况发生。

6.3鲁棒性测试

将各环节传递函数做以下调整:

低负荷时给水力量扰动对汽包水位的传递函数由;高负荷时改为蒸汽流量扰动改为

重复以上实验步骤,得到以下一组仿真曲线如图6.10:

图6.10响应曲线

执行器输出如图6.11:

图6.11执行器输出曲线

经测试,系统鲁棒性能良好

全文总结

汽包水位是锅炉运行中一个重要的参数。他间接反映了锅炉蒸汽负荷与给水量之间的平衡关系,维持汽包水位正常是保证锅炉和气轮机安全运行的必要条件。因此,给水系统的自动化问题也是人们关注的重点。

由于锅炉水位有其自身的动态特性,比如非自衡,虚假水位等,这就给锅炉给水自动控制带来了困难。为了解决这一问题,我们在虚假水位较严重的高负荷采取了三冲量控制,即不仅仅由汽包水位这一反馈值来来调节给水流量,同时又增加了内回路来消除给水侧的扰动,增加了蒸汽流量作为前馈来克服虚假水位现象给控制造成的困难。

同时,在设计中还存在一些问题,比如:信号的测量。对水位信号的测量我们采取了压力补偿的方法来提高测量的精确度,流量的测量采取了温度补偿的方法,蒸汽流量的采取了调速及压力补偿的方法;同时,还存在各个调节阀门之间的切换问题,以及手自动切换问题,解决这一问题基本的原则就是保持信号间的互相跟踪。

参考文献

\o"搜索于希宁,刘红军相关作品"

于希宁,刘红军

.自动控制原理(第二版).

\o"搜索中国电力出版社相关作品"

中国电力出版社

,2006-1.

张莲

.现代控制理论.

清华大学出版社

,2008-1.

金以慧

.过程控制.

清华大学出版社

,2005-6.

刘玲.汽包锅炉给水调节统中单/三冲量切换方案.煤炭技术.2003,12系

蔡勇承,徐进,齐全,屠勤,徐耀良.300MW机组全程给水控制系统的设计.华东电力,2006-12:80-82.

魏小兵.全程给水控制在2×600MW机组的应用.电力学报,2008-6:191-193.

张丽香,田丹.阳城6×350MW机组给水全程控制系统分析.电力学报,2000-15-1:1-4.

梁福余,庄建华.国产600MW超临界机组全程给水控制策略.华电技术,2008-7:64-67.

康澄杰,曹泉.阳逻电厂4号机组给水全程控制改造.湖北电力,2003-4:36-38.

郑阿奇.MATLAB使用教程第1版.电子工业出版社.2004,5.

刘艳文,丁满堂,苗永旗.阳泉二电厂2号机组全程给水控制系统的研究改进.山西电力技术,1999-2:23-25.

林蕾.全程给水控制系统在台山电厂的应用.福建电力与电工,2004-12:52-54.

吕玉坤,张健,王建,刘玉波,康乐嘉.单元制机组给水全程控制系统的分析与设计.电站系统工程.2007-7:62-64.

林文孚.胡燕.单元机组自动控制技术.中国电力出版社(第二版),2008年1月.

陈剑平,马吉强.给水全程控制应用与分析.和利时应用技术篇.27-29.

潘维加,严俊峰.汽包锅炉给水全程控制系统分析的几个关键问题.长沙理工大学学报.2005-6:44-47.

厉伟,吴灵,董文忠.火力发电厂单元机组给水全程控制系统浅析.沈阳工业大学学报.2007-10:551-553

李遵基.电力控制理论及其应用第1版.中国电力出版社.2003,7

致谢

本文的研究工作是在于希宁老师的悉心指导下完成的。

我首先要衷心地感谢于希宁!在毕业设计这段时间里,在学习上于老师都给予我许多关怀和指导。同时,我感受到他渊博的知识、敏捷的思维、严谨求实的治学态度和永不倦怠的敬业精神,这些都使我深受感动和熏陶。

在论文的研究过程中,我们班的同学,他们都曾无私的为我提供了协助,帮助我克服大量专业方面的难点,同时为本文的研究和写作营造了一个良好的学习氛围,在此对他们表示真挚的谢意!

再一次感谢在本文的写作过程中一直关心我、给予我帮助的人们!

附录资料:不需要的可以自行删除

C语言编程规范(仅供参考)

1.基本要求

1.1程序结构清析,简单易懂,单个函数的程序行数不得超过100行。

1.2打算干什么,要简单,直接了当,代码精简,避免垃圾程序。

1.3尽量使用标准库函数和公共函数。

1.4不要随意定义全局变量,尽量使用局部变量。

1.5使用括号以避免二义性。

2.可读性要求

2.1可读性第一,效率第二。

2.2保持注释与代码完全一致。

2.3每个源程序文件,都有文件头说明,说明规格见规范。

2.4每个函数,都有函数头说明,说明规格见规范。

2.5主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。

2.7常量定义(DEFINE)有相应说明。

2.8处理过程的每个阶段都有相关注释说明。

2.9在典型算法前都有注释。

2.10利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为6个

字节。

2.11循环、分支层次不要超过五层。

2.12注释可以与语句在同一行,也可以在上行。

2.13空行和空白字符也是一种特殊注释。

2.14一目了然的语句不加注释。

2.15注释的作用范围可以为:定义、引用、条件分支以及一段代码。

2.16注释行数(不包括程序头和函数头说明部份)应占总行数的1/5到1/3。

3.结构化要求

3.1禁止出现两条等价的支路。

3.2禁止GOTO语句。

3.3用IF语句来强调只执行两组语句中的一组。禁止ELSEGOTO和ELSERETURN。

3.4用CASE实现多路分支。

3.5避免从循环引出多个出口。

3.6函数只有一个出口。

3.7不使用条件赋值语句。

3.8避免不必要的分支。

3.9不要轻易用条件分支去替换逻辑表达式。

4.正确性与容错性要求

4.1程序首先是正确,其次是优美

4.2无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。

4.3改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。

4.4所有变量在调用前必须被初始化。

4.5对所有的用户输入,必须进行合法性检查。

4.6不要比较浮点数的相等,

如:10.0*0.1==1.0,不可靠

4.7程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否

逻辑锁定、打印机是否联机等。

4.8单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。

5.可重用性要求

5.1重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类。

5.2公共控件或类应考虑OO思想,减少外界联系,考虑独立性或封装性。

5.3公共控件或类应建立使用模板。

附:C++编程规范,delphi作相应的参考

1适用范围

本标准适用于利用VisulC++,BorlandC++进行软件程序开发的人员.。

.2变量命名

命名必须具有一定的实际意义,形式为xAbcFgh,x由变量类型确定,Abc、Fgh表示连续意

义字符串,如果连续意义字符串仅两个,可都大写.如OK.

具体例程:

BOOL类型bEnable;

ch*charchText

c*类对象cMain(对象实例)

h*Handle(句柄)hWnd

i*int

n*无符号整型

p*指针

sz,str*字符串

wWORD

x,y坐标

Char或者TCHAR类型与WindowsAPI有直接联系的用szAppName[10]形式否则用

FileName[10]形式,单个字符也可用小写字母表示;

Int类型nCmdShow;

LONG类型lParam;

UINT类型uNotify;

DWORD类型dwStart;

PSTR类型pszTip;

LPSTR类型lpCmdLine

LPTSTR类型lpszClassName;

LPVOID类型lpReserved

WPARAM类型wParam,

LPARAM类型lParam

HWND类型hDlg;

HDC类型hDC;

HINSTANCE类型hInstance

HANDLE类型hInstance,

HICON类型hIcon;

intiTmp

floatfTmp

DWORDdw*

String,AnsiStringstr*

m_类成员变量m_nVal,m_bFlag

g_全局变量g_nMsg,g_bFlag

局部变量中可采用如下几个通用变量:nTemp,nResult,I,J(一般用于循环变量)。

其他资源句柄同上

.3常量命名和宏定义

常量和宏定义必须具有一定的实际意义;

常量和宏定义在#include和函数定义之间;

常量和宏定义必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,每一

条定义的右侧必须有一简单的注释,说明其作用;

资源名字定义格式:

菜单:IDM_XX或者CM_XX

位图:IDB_XX

对话框:IDD_XX

字符串:IDS_XX

DLGINIT:DIALOG_XX

ICON:IDR_XX

.4函数命名

函数原型说明包括引用外来函数及内部函数,外部引用必须在右侧注明函数来源:模

块名及文件名,如是内部函数,只要注释其定义文件名;

第一个字母必须使用大写字母,要求用大小写字母组合规范函数命名,必要时可用下划线

间隔,示例如下:

voidUpdateDB_Tfgd(TRACK_NAME);file://ModuleName:r01/sdw.c

voidPrintTrackData(TRACK_NAME);file://ModuleName:r04/tern.c

voidImportantPoint(void);file://ModuleName:r01/sdw.c

voidShowChar(int,int,chtype);file://LocalModule

voidScrollUp_V(int,int);file://LocalModule

.5结构体命名

结构体类型命名必须全部用大写字母,原则上前面以下划线开始;结构体变量命名必须用

大小写字母组合,第一个字母必须使用大写字母,必要时可用下划线间隔。对于私有数

据区,必须注明其所属的进程。全局数据定义只需注意其用途。

示例如下:

typedefstruct

{

charszProductName[20];

charszAuthor[20];

charszReleaseDate[16];

charszVersion[10];

unsignedlongMaxTables;

unsignedlongUsedTables;

}DBS_DATABASE;

DBS_DATABASEGdataBase;

6控件的命名:

用小写前缀表示类别

用小写前缀表示类别:

fm窗口

cmd按钮

cobcombo,下拉式列表框

txt文本输入框

lablabal,标签

imgimage,图象

picpicture

grdGrid,网格

scr滚动条

lst列表框

frmfram

7注释

原则上注释要求使用中文;

文件开始注释内容包括:公司名称、版权、作者名称、时间、模块用途、背景介绍等,复

杂的算法需要加上流程说明;

函数注释包括:输入、输出、函数描述、流程处理、全局变量、调用样例等,复杂的函数

需要加上变量用途说明;

程序中注释包括:修改时间和作者、方便理解的注释等;

引用一:文件开头的注释模板

/******************************************************************

**文件名:

**Copyright(c)1998-1999*********公司技术开发部

**创建人:

**日期:

**修改人:

**日期:

**描述:

**

**版本:

**

******************************************************************/

引用二:函数开头的注释模板

/*****************************************************************

**函数名:

**输入:a,b,c

**a

**b

**c

**输出:x

**x为1,表示...

**x为0,表示...

**功能描述:

**全局变量:

**调用模块:

**作者:

**日期:

**修改:

**日期:

**版本

****************************************************************/

引用三:程序中的注释模板

/**/

/*注释内容*/

/**/

8程序

a.程序编码力求简洁,结构清晰,避免太多的分支结构及太过于技巧性的程序,

尽量不采用递归模式。

b.编写程序时,亦必须想好测试的方法,换句话说,”单元测试”的测试方案应

在程序编写时一并拟好。

c.注释一定要与程序一致。

d.版本封存以后的修改一定要将老语句用/**/封闭,不能自行删除或修改,并要

在文件及函数的修改记录中加以记录。

e.程序中每个block的开头”{"及"}”必须对齐,嵌套的block每进一套,

缩进一个tab,TAB为4个空格,block类型包括if、for、while、do等关键字引出的。

f.对于比较大的函数,每个block和特殊的函数调用,都必须注明其功能,举例如下

count.divisor=1193280/freq;//computethepropercount

OutByte((unsignedshort)67,(unsignedchar)182);//tell8253thata

countiscoming

OutByte((unsignedshort)66,count.c[0]);//sendlow-orderbyte

OutByte((unsignedshort)66,count.c[1]);//sendhigh-orderbyte

×××××××××××××××××××××××××××××××××××××××

bcb,delphi中的变量命名:

遵循匈牙利命名法,命

名必须有意义,制定如下规定

窗体:以大写的W开始,如About版权窗体,命名为WAbout

文件:以大写的F开始,如About版权窗体,文件命名为FAbout.cpp

按钮(Button):如退出按钮,命名为btnExit

……

基类:加base标记,如报表基类,窗体命名为:WBaseRep,文件命名为FBaseRep.cpp

转贴

>1.在.h/.cpp的开头应有一段格式统一的说明,内容包括:

>a.文件名(FileName);

>b.创建人(Creater);

>c.文件创建时间(Date);

>d.简短说明文件功能、用途(Comment)。

好习惯

>2.除非极其简单,否则对函数应有注释说明。内容包括:功能、入口/出口参数,必

>时还可有备注或补充说明。

还是好习惯

>3.每列代码的长度推荐为80列,最长不得超过120列;折行以对齐为准。

太宽了,我的限制是60列,因为文本方式下屏幕一共80列,如果你用BC这一类的编辑

器,窗口边框等又要占据一定空间,所以80列太宽

>4.循环、分支代码,判断条件与执行代码不得在同一行上。

很对

>5.指针的定义,*号既可以紧接类型,也可以在变量名之前。

>

>例:可写做:int*pnsize;

>

>也可写做:int*pnsize;

>

>但不得写做:int*pnsize;

建议采用第二种,除非附加另外一条规定:一次只声明一个变量,否则就会让人混淆,

比如:

int*a,b;

看起来b好像也是个指针,其实不是。

>6.在类的成员函数内调用非成员函数时,在非成员函数名前必须加上"::"。

这一条我倒觉得并不是必需的,我的看法是决不要让你的类成员函数和全局函数的名称

相同(或类似)

>7.函数入口参数有缺省值时,应注释说明。

>

>例:BOOLCWpsDib::PaintDIB(CDC*pDC,CRect&rc,

>intnBrightness,file://*=0*//

>BOOLbGrayScalefile://*=FALSE*//)

每个变量写一行,必要时加上/*in,out*/注释

>8.elseif必须写在一行。

应该尽量避免elseif这样的结构

>9.与‘{’、‘}’有关的各项规定:

>

>9.1‘{’、‘}’应独占一行。在该行内可有注释。

>9.2‘{’必须另起一行,‘{’之后的代码必须缩进一个Tab。‘{’与‘}’必须在

>一列上。

>9.3在循环、分支之后若只有一行代码,虽然可省略‘{’、‘}’,但不推荐这么

>做。若省略后可能引起歧义,则必须加上‘{’、‘}’。

持保留意见,因为GNU的代码规范是这样的:

if(NULL==ptr)

{

//dosomethinghere

}

或者

if(NULL==ptr){

//dosomethinghere

}

争论哪个更好并没有意义,关键是统一,如果用VC当然你的办法最方便,可是如果你用

emacs或者vi,就不是这样了。

>10.与空格有关的各项规定。

>

>10.1在所有两目、三目运算符的两边都必须有空格。在单目运算符两端不必空格。

>在‘—>’、‘::’、‘.’、‘[’、‘]’等运算符前后,及‘&’(取地址)、‘*

>’(取值)等运算符之后不得有空格。

>10.2for、while、if等关键词之后应有1个空格,再接‘(’,之后无空格;在结

>的‘)’前不得有空格。

我认为在括号两端加空格并不是什么错误,尤其是在一个条件十分复杂的if语句里

>10.3调用函数、宏时,‘(’、‘)’前后不得有空格。

>10.4类型强制转换时,‘(’‘)’前后不得有空格

同上

>11.与缩进有关的各项规定

>

>11.1缩进以Tab为单位。1个Tab为4个空格

我认为这个值应该更大,我自己使用8个空格,如果你的代码因为缩进幅度太大而导致

折行,那么几乎可以肯定你的程序设计方案有问题。

>11.2下列情况,代码缩进一个Tab:

>1.函数体相对函数名及'{'、'}'。

>2.if、else、for、while、do等之后的代码。

>3.一行之内写不下,折行之后的代码,应在合理的位置进行折行。若有+-*/等

>算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论