文档库 最新最全的文档下载
当前位置:文档库 › 微观选址专业软件Meteodyn WT与Windsim比较的优势

微观选址专业软件Meteodyn WT与Windsim比较的优势

微观选址专业软件Meteodyn WT与Windsim比较的优势
微观选址专业软件Meteodyn WT与Windsim比较的优势

微观选址专业软件Meteodyn WT与Windsim比较的优势

Meteodyn WT软件(美迪WT软件)是基于计算流体力学技术对风电场区进行风流模拟,准确得知风电场空间每一处的风流情况,可以准确可靠地评估出复杂地形对风流造成的各种影响,下面对WT软件的功能及与windsim的比较作一简单介绍:

●WT提供丰富的接口:

WT软件提供丰富的接口,为将来的扩展提供基础,如多处理器模块接口等,这样随着计算机性能的普遍提高,未来可在此基础上继续扩展,而windsim 不提供多处理器接口;同时WT提供WRB文件输出,该文件将成为风能资源评估领域的又一标准性文件,而windsim无法输出此格式文件;WT与Google earth由相应的接口,可以将WT软件计算的结果直接输入到Google earth中进行演示与分析,而windsim没有相应接口,无法将结果输入到Google earth中。

●三维地形建立:

可以直接在WT软件中输入多种地形数据格式map格式、xyz格式、Dxf格式,同时Meteodyn公司为永久版本客户免费提供Global Mapper软件,可以使客户下载中国任一地区的分辨率为90米的地形数据,并可根据客户自身情况对多种地形数据格式进行转化。Windsim软件只能输入自己默认的一种地形格式,需要操作者对地形进行相应的转化,才能输入。

●对粗糙度数据进行检验:

WT软件可以对粗糙度进行相应的检验,对粗糙度的区域、范围与实际情况进行比对,从而发现问题。Windsim不提供粗糙度比对功能。

●网格生成方式:

WT软件是根据不同的风流模拟方向来生成网格的,而windsim是一次生成网格就再不做任何变动了,WT的垂直网格在地表处尽量垂直于地表,而windsim不是采取此种方式,尤其是在复杂地形,与地表有相应夹角。以上这些决定了WT软件在复杂地形上会带来更好的计算结果,收敛性更好。

●对风电场区进行网格划分及应用CFD技术求解:

WT软件采用专门研发的Migal求解器,以及并行求解及多网格技术,在求解速度以及精度方面大大优于Windsim软件,因为Windsim软件仅采用普通求解器,结果发散比率高。

●多块地形数据文件的拟合功能:

在WT软件中可以针对一个风电项目输入多个分辨率不同的地形数据,如核心区域为1:2000的地形数据,外围地形为1:10000的地形数据,软件可以对这些地形数据进行自动拟合,形成完整的风电场区地形,即使等高线有

断裂的地方,软件能够根据已有的等高线情况拟合完整,其它软件无法作到这一点。

●风机布置与气象数据综合(多测风塔处理):

可以在WT软件中的后处理模块中进行风力发电机位置的重新选择,可以进行多种布机方案的处理及实施,并且可以综合多个测风塔的数据,得到整个风电场区的综合结果。而Windsim软件不能将多个测风塔数据的结果进行综合,只能得出考虑一个测风塔数据的结果,尤其在复杂地形条件下的多测风塔情况,则无法充分利用多测风塔信息。

●边界条件生成功能:

WT软件可以根据用户输入的地形以及粗糙度、热稳定度进行边界条件的自动生成以及网格的自动生成,不需要手动生成网格与边界条件,Windsim的手动生成网格与边界条件在实际工程项目中结果不理想,同时也需要操作人员具备相当的CFD背景知识,而WT软件更加智能化。

●网格计算数量:

WT软件提供32位与64位,在计算网格数量方面可以计算更多,相关设计院曾计算过2000多万网格,而windsim的网格计算数量在百万级左右,通常网格的垂直分辨率不能作的太小,否则网格数量超过限制,以及结果会发散。

●选择测风塔位置:

通过WT软件的定向计算(只需要粗糙度数据以及地形数据)可以为测风塔选址提供定量的科学依据,其它软件不具备测风塔选择功能。

●三维可视化模块:

WT软件的三维可视化模块为自己开发,各模块之间的兼容性好,显示效果及功能非常理想,可以看到任何一个平面以及切面的风流情况,而Windsim 软件的三维可视化模块不是自己开发,而是从其它公司进行购买,在兼容性方面存在一定的问题,演示效果及图形表现存在一定差距。

●三维可视化模块:

WT软件的三维可视化模块为自己开发,各模块之间的兼容性好,显示效果及功能非常理想,可以看到任何一个平面以及切面的风流情况,而Windsim 软件的三维可视化模块不是自己开发,而是从其它公司进行购买,在兼容性方面存在一定的问题,演示效果及图形表现存在一定差距。

●可以得到整个风电场区的所有风流情况及绘图:

WT软件可以使客户得到风电场区三维空间中任意一点的风流属性,可以做出WRG以及RSF风资源绘图(发电量与能量密度),可以输入到windfarmer 以及windpro中进行后续相关研究与计算,可以得出每一台风流发电机处的发电量、尾流损失、极风、入流角、平均风速、湍流等等情况,所得出的结果内容比Windsim软件丰富。

●发电量及后评估工作:

WT软件可以计算出每一台风力发电机的发电量与尾流损失,同时可以输出每一台风力发电机的发电量时间序列数据,方便用户进行相应的后评估工作,该功能windsim无法实现。

●湍流校正功能:

WT软件的该功能可以考虑中尺度范围的影响,使湍流计算更为准确,结果已被Gamesa等国外风机制造商验证,该功能Windsim软件不具备。

WT软件模型方面的主要特点:

●WT软件采用的湍流模型有别于Windsim软件,是专门为解决大气边界层问

题而开发的,Windsim软件的湍流模型没有相应改进。

●WT软件可以考虑10个不同等级的热稳定度,客户可以非常轻松地进行选

择,而在windsim中无法提供如此便捷的操作与选择。

●WT软件采用优化的尾流模型,可以考虑附加湍流强度的影响,使结果更为

准确可靠。

●WT的森林冠层模型更为先进,即使是在林区复杂的地区,也能准确计算出

风流的变化情况,在国外有相关的大量验证,在中国黑龙江等复杂林区也由客户进行了实际验证。其它软件不具备此种冠层模型。

●WT可以直接载入从测风塔提取的风流时间序列数据进行分析,而windsim

软件则需要工程师对风流数据的格式进行转化,才能载入。

●WT软件提供64位版本,以及64位与32位兼容的求解器,可以计算更多

的网格,并且可以提供多处理器版本,目前windsim软件在网格计算数量方面有限制。

风电场风能资源评估与选址

【摘要】风电场区域范围内的风能资源藴藏状况,是开发风力发电项目最基础的组成因素,能否客观的掌握其风能资源状况是项目成功和避免投资风险的关键所在。 【关键词】区域初步甄选风资源评估微观选址 1 概述 风能资源评估是整个风电场建设、运行的重要环节,是风电项目的根本,对风能资源的正确评估是风电场建设取得良好经济效益的关键,有的风电场建设因风能资源评价失误,建成的风电场达不到预期的发电量,造成很大的经济损失。风能资源评估包括三个阶段:区域的初步甄选、区域风能资源评估及微观选址。 2 区域的初步甄选 建设风电场最基本的条件是要有能量丰富,风向稳定的风能资源。区域的初步甄选是根据现有的风能资源分布图及气象站的风资源情况结合地形从一个相对较大的区域中筛选较好的风能资源区域,到现场进行踏勘,结合地形地貌和树木等标志物在万分之一地形图上确定风电场的开发范围。 风电场场址初步选定后,应根据有关标准在场址中立塔测风。测风塔位置的选择要选具有代表整个风电场的风资源状况,具体做法:根据现场地形情况结合地形图,在地形图上初步选定可安装风机的位置,测风塔要立于安装风机较多的地方,如地形较复杂要分片布置立测风塔,测风塔不能立于风速分离区和粗糙度的过渡线区域,即测风塔附近应无高大建筑物、地形较陡、树木等障碍物,与单个障碍物距离应大于障碍物高度的3倍,与成排障碍物距离应保持在障碍物最大高度的10倍以上;测风塔位置应选择在风场主风向的上风向位置。 测风塔数量依风场地形复杂程度而定:对于较为简单、平坦地形,可选一处安装测风设备;对于地形较为复杂的风场,要根据地形分片布置测风点。 测风高度最好与风机的轮毂高度一样,应不低于风机轮毂高度的2/3,一般分三层以上测风。 3 区域风资源评估 区域风资源评估内容包括: 对测风资料进行三性分析,包括代表性,一致性,完整性;测风时间应保证至少一周年,测风资料有效数据完整率应满足大于90%,资料缺失的时段应尽量小(小于一周)。

模块化生产系统软件设计

摘要 在现代工业中,生产过程的机械化、自动化已成为突出的主题。随着工业现代化的进一步发展,自动化已经成为现代企业中的重要支柱,无人车间、无人生产流水线等等,已经随处可见。同时,现代生产中,存在着各种各样的生产环境,如高温、放射性、有毒气体、有害气体场合以及水下作业等,这些恶劣的生产环境不利于人工进行操作。 工业机械手是近代自动控制领域中出现的一项新的技术,是现代控制理论与工业生产自动化实践相结合的产物,并以成为现代机械制造生产系统中的一个重要组成部分。工业机械手是提高生产过程自动化、改善劳动条件、提高产品质量和生产效率的有效手段之一。尤其在高温、高压、粉尘、噪声以及带有放射性和污染的场合,应用得更为广泛。在我国,近几年来也有较快的发展,并取得一定的效果,受到机械工业和铁路工业部门的重视。 本题采用日本三菱公司的FX2N系列PLC,对机械手的上下、左右以及抓取运动进行控制。该装置机械部分有滚珠丝杠、滑轨、机械抓手等;电气方面由交流电机、变频器、操作台等部件组成。我们利用可编程技术,结合相应的硬件装置,控制机械手完成各种动作。 关键词:PLC;控制;机械手;

第一章可编程控制PLC 1.1 PLC简介 自二十世纪六十年代美国推出可编程逻辑控制器(Programmable Logic Controller,PLC)取代传统继电器控制装置以来,PLC得到了快速发展,在世界各地得到了广泛应用。同时,PLC的功能也不断完善。随着计算机技术、信号处理技术、控制技术网络技术的不断发展和用户需求的不断提高,PLC在开关量处理的基础上增加了模拟量处理和运动控制等功能。今天的PLC不再局限于逻辑控制,在运动控制、过程控制等领域也发挥着十分重要的作用。 作为离散控的制的首选产品,PLC在二十世纪八十年代至九十年代得到了迅速发展,世界范围内的PLC年增长率保持为20%~30%。随着工厂自动化程度的不断提高和PLC市场容量基数的不断扩大,近年来PLC在工业发达国家的增长速度放缓。但是,在中国等发展中国家PLC的增长十分迅速。综合相关资料,2004年全球PLC的销售收入为100亿美元左右,在自动化领域占据着十分重要的位置。 PLC是由摸仿原继电器控制原理发展起来的,二十世纪七十年代的PLC 只有开关量逻辑控制,首先应用的是汽车制造行业。它以存储执行逻辑运算、顺序控制、定时、计数和运算等操作的指令;并通过数字输入和输出操作,来控制各类机械或生产过程。用户编制的控制程序表达了生产过程的工艺要求,并事先存入PLC的用户程序存储器中。运行时按存储程序的内容逐条执行,以完成工艺流程要求的操作。PLC的CPU内有指示程序步存储地址的程序计数器,在程序运行过程中,每执行一步该计数器自动加1,程序从起始步(步序号为零)起依次执行到最终步(通常为END指令),然后再返回起始步循环运算。PLC每完成一次循环操作所需的时间称为一个扫描周期。不同型号的PLC,循环扫描周期在1微秒到几十微秒之间。PLC用梯形图编程,在解算逻辑方面,表现出快速的优点,在微秒量级,解算1K逻辑程序不到1毫秒。它把所有的输入都当成开关量来处理,16位(也有32位的)为一个模拟量。大型PLC使用另外一个CPU来完成模拟量的运算。把计算结果送给PLC的控制器。

模块化程序设计练习题及答案

第四章模块化程序设计练习题及参考答案 一、填空题 1、以下程序的运行结果是(111),把x定义为静态变量运行结果是(123)。void increment(void) { int x=0; x+=1; printf("%d",x);} main() { increment(); increment(); increment(); } 2、若输入的值是-125,以下程序的运行结果是(-125=-5*5*5) #include "" main() { int n; void f(int n); scanf("%d",&n); printf("%d=",n); if(n<0) printf("-"); n=fabs(n); fun(n); } void fun(int n) { int k,r; for(k=2;k<=sqrt(n);k++) { r=n%k; while(r==0) { printf("%d",k); n=n/k; if(n>1)printf("*"); r=n%k; } } if(n!=1) printf("%d\n",n); } 3、设有以下宏定义: #define WIDTH 80 #define LENGTH WIDTH+40 则执行赋值语句:v=LENGTH*20;(v为int型)后,v的值是(880) 4、设有以下宏定义: #define WIDTH 80 #define LENGTH (WIDTH+40)

则执行赋值语句:k=LENGTH*20;(k为int型变量)后,k的值是(2400) 5、下面程序的运行结果是(5) #define DOUBLE(r) r*r main() { int x=1,y=2,t; t=DOUBLE(x+y); printf("%d\n",t);} 6、下面程序的运行结果是(36) #define MUL(z) (z)*(z) main() { printf("%d\n",MUL(1+2)+3); } 7、下面程序的运行结果是(212) #define POWER(x) ((x)*(x)) main() { int i=1; while(i<=4) printf("%d,",POWER(i++)); } 8、下面程序的运行结果是(9) #define MAX(a,b) (a>ba:b)+1 main() { int i=6,j=8,k; printf("%d\n",MAX(i,j)); } 二、选择题 1、以下正确的说法是(D)建立自定义函数的目的之一是: A)提高程序的执行效率 B)提高程序的可读性 C)减少程序的篇幅 D)减少程序文件所占内存 2、以下正确的说法是(B) A)用户若需调用标准库函数,调用前必须重新定义 B)用户可以重新定义标准库函数,若如此,该函数将失原有含义。 C)系统根本不允许用户重新定义标准库函数。 D)用户若需调用标准函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调用。 3、以下正确的函数定义形式是(C) A)double fun(int x,int y) B)double fun(int x;int y) C)double fun(int x,int y); D)double fun(int x,y) 4、以下正确的说法是(D)。在C语言中: A)实参与其对应的形参各占用独立的存储单元。 B)实参和与其对应的形参共占用一个存储单元。 C)只用当实参和与其对应的形参同名时才共占用存储单元。

风电场微观选址注意事项

风电场微观选址注意事项 (一)电气专业(从发电量计算的角度出发): 1、首先应考虑发电量的优劣,高程尽量高;但在山地布置风机时,有时为了在同一个山上尽量多的布置风机,可能会放弃一个最高点而选择两个相对高点。 2、风力发电机组成排布置时应垂直于主导风能方向排列,前后两排交错布置。 3、尽量减小风力发电机组之间的相互影响,满足风电机组之间行、列距的要求,在主导风向上要求机组间隔(行距)5~9倍风轮直径,在垂直于主导风向上要求机组间隔(列距)3~5倍风轮直径;山地地形取较小值,平原地形取较大值;在复杂的山区地形中,经计算尾流系数及湍流都不大的情况下可不完全按照这个距离要求。 4、考虑风机集电线路,尽量使为单台风机设置的集电线路不要太长。单台风机距离其他风机较远时,需考虑技术经济比较。 5、目前情况下,风机湍流系数需要由风机厂家进行核算。 (二)结构专业 1、风机所需安装平台为约为40m*45m,为临时征地,微观选址时应注意风机坐标处是否有足够的空间(不一定是现有的,无平台时主要是考虑施工量的大小),风机基础直径约为20m,为永久征地,选址时应注意尽量考虑减小二者的施工量; 2、风机位置附近是否有深坑、深沟或废弃的采石场或矿坑,是否会

影响风机基础结构安全;风机附近有悬崖时,应使风机尽量远离悬崖以保证基础安全以及减少风机湍流。注意风机所在的山上是否有较大的山洞(比如抗战时期解放军挖的仓库等),如果有,应考虑风机基础灌浆是否会受到影响。 (三)总交专业 1、大致了解风场周边及风场内现有道路情况,并在图中予以标记;微观选址时,一般提前选好路径(通过GOOGLE EARTH或咨询当地百姓),能开车上山的尽量开车去,以检查相关道路是否能够满足要求。 2、风机位置应尽量不要位于坡度较大的山坡上,以便于满足风机厂家运输对最大坡度的要求。 3、风电场道路的要求(国电联合动力):路面宽度5m,路肩宽度1m;最大坡度不超过6%,坡长限制为300m;道路转弯处的转弯半径大于50m;道路外6m内不得有不可移动的障碍物。如果吊装公司提出更高要求的,需满足吊装公司要求。 (四)其它注意事项: 1、风机与附近村庄的距离,根据项目申请报告,按环保要求,距声源200m处,噪声声级可衰减到国家标准(45dB)以内,此距离即为距村庄的最小距离(单个的民房及养殖大棚不在此范围内,具体影响应向业主说明并得到其确认)。 2、风机附近是否有营运中的炸药库、采石场等其它影响风机基础及集电线路杆塔基础安全的设施。线路结构一般要求炸药库和采石场的

模块化程序设计实例

9 .5 模块化程序设计实例 《程序设计基础》(基于C语言讲解)石光华编著—北京: 清华大学出版社 下面以设计一个简单的成绩管理软件为例,一步一步地按模块化程序设计方法进行设计。 1 .定义问题 设计一个成绩管理软件,其基本功能包括:输入成绩,成绩加分,计算平均成绩,找出最高分,找出最低分,输出成绩等。 2 .确定组成程序的模块 根据成绩管理软件的功能,确定软件的基本模块包括:输入模块,加分模块,平均分模块,最高分模块,最低分模块,输出模块等。 142 程序设计基础 3 .绘制程序结构图 成绩管理软件的结构图如图9-5所示。 图9-5 成绩管理软件结构图 4 .流程图 用流程图确定主程序的逻辑结构,如图9-6所示。 在流程图中,istate 的作用是记录是否已经输入成绩。istate 的使用有如下两种 方式。 (1) 作为全局变量使用。此时istate可以在所有模块中改变其值,主程序更简洁,但 可能产生边际效应。 (2) 作为主程序的局部变量使用。此时istate只能在主程序中改变其值。在主程序 中可以直观地看到其变化,能够防止边际效应。 采用方式(2)的主程序如下。

#include < stdio .h> #define SIZE 10 void main() { int iscore[SIZE] ={0}; int key= - 1; int iresult=0; float fresult=0; int istate=0; printf(″1:Input scores;\n″); 第9章模块化程序设计 143 图9-6 成绩管理软件主程序流程图 printf(″2:Output scores;\n″); printf(″3:Count for the max score;\n″); printf(″4:Count for the minimum score;\n″); printf(″5:Count for the total score;\n″); printf(″6:Count for theaverage score;\n″); printf(″- 1:Exit .\n″); while(1) { printf(″Please input your choose:″); scanf(″%d″,&key); if (key = = - 1) 144 程序设计基础

模块化程序设计

第四章模块化程序设计 教学目的:模块程序设计是C程序合作编程序的方法,通过这一章的学习使学生能自己编C 程序中的函数,正确地调用函数,熟悉函数调用时形式参数和实在参数的关系。通过变量的存储类型,能正确使用各种不同存储类型的变量编程序。 重点难点:函数的嵌套调用及函数的递归调用。 前面各几章的学习,大家已有了编制小程序的经验。如果想编制大程序,在C语言下就得用模块化程序设计,其基本思想是将一个大的程序按功能分割成一些模块,使每一个模块都成为功能单一、结构清晰、接口简单、容易理解的小程序。 C语言提供了支持模块化软件开发的功能: 1 函数式的程序结构。程序由一个或多个函数组成,每个函数都有各自独立的功能和界面。 2 允许通过使用不同的存储类别的变量,控制模块内部和外部的信息交换。 3具有预编译处理功能,为程序的调试、移植提供方便,支持模块化程序设计。 本章介绍这些功能及进行程序开发的基本方法。 4.1 函数 C程序结构 无论涉及的问题是复杂还是简单,规模是大还是小,用C语言设计程序,任务只有一种,就是编写函数,至少要编写一个主函数main(),C程序的执行就是执行相应的main()函数。即从它的main()函数的第一个花括号开始,依次执行后面的语句,直到最后的花括号为止。其它函数只有在执行了main()函数的过程中被调用时才执行。 高级语言中“函数”的概念和数学中“函数”的概念不完全相同。英语单词function有“函数”和“功能”两种介绍,高级语言中的函数实际上是功能的意思。当要完成某一个功能时,就用一个函数去实现它。在程序设计时首先要考虑main()函数中的算法,当main()中需要使用某一功能时,就用一个具有该功能的函数表达式表示。这时的函数,我们只知道它具有什么功能,其它先不作处理。设计完main()的算法并检验无误后,这时开始考虑它所调用的函数。如果在库函数中能找到,就可直接使用,否则再动手设计这些函数。这种设计方法称为自顶向下、逐步细化的程序设计方法。这种方法设计出来的程序在功率高,程序层次分明、结构清晰。复杂程序的层次可从以下图形中看出: 许多大型软件系统包含了相当丰富的,可供从事某一领域工作人员选用,如一个高等学校的信息管理系统就包含了教务、科研、人事、财务,设备、图书、后勤、办公室等子系统。每一个子系统以可分为许多子子系统。 这种软件为了方便用户大都采用菜单(menu)方式,这种形式的软件,大家都用过。用户

五、风电场微观选址规定

风电厂微观选址管理规定 为进一步规范公司风电场宏观选址行为,减少由于微观选址失误给公司造成不必要的损失,提高前期工作的效率和质量,约束设计咨询单位宏观选址达到应有的深度和水平,特制定本办法。 一、总的说明 1.风电场微观选址的概念 微观选址就是确定每台风力发电机组在风电场中的具 体位置。 2.影响风电场宏观选址的主要因素 风电场微观选址,要结合以下因素对候选风电场进行综合评估:风能资源及相关气候条件、地形和交通运输条件、土地征用与土地利用规划、工程地质、环境保护、工程造价、安装条件以及影响风电场建设的其他因素。 3.风电场微观选址的基本原则 1)在风功率密度高点布机:产能最大化,设计最简单,风能好的地形 2)尽量集中布置。 减少风电场用地面积,充分利用土地,在同样土地面积上尽量布置更多的风机。减少电缆和场内道路的长度,降低工程造价,降低厂内线损。

3)尽量减小风电机组之间尾流的影响,尾流损失平均不大于6%,单机不大于8%。 4)满足风机运输和安装条件 机位附近要有足够的场地能够作业和摆放叶片塔筒,道路有足够的坡度、宽度和转弯半径使运输机械能够到达所选机位。 5)视觉上尽量美观 二、工作标准和流程 1.确认风电场可用土地界线,保证微观选址范围在政府规划的开发范围内。 2.结合地形、地标粗糙度和障碍物等,利用订正的测风资料,在风电场范围内绘制出一定轮毂高度的风能资源分布图。 3.根据微观选址的基本原则和风电场的风资源分布图,拟定若干布置方案,并用软件对个方案进行优化。 4.对各方案的发电量、尾流影响、投资差异及其他相关因素进行经济技术综合比较,确定布置方案,绘制风电机组布置图。 5.到现场详细踏勘每个布机位置,与风机布置图进行复核,检查机位是否有颠覆性因素,最后确定最终布机方案。

51单片机模块化编程设计与实例要点分析

模块化编程设计题 一、简述模块化编程的必要性(模块化的优点) 参考答案: 大多数的编程学习者一开始接触和学习到的程序很小,代码量很少,甚至只有几十行。对于这样短小的程序进行模块化设计不是完全必要的。很多情况下程序模块化设计需要“浪费”很多时间,例如增加了代码的数量,增加了构思的时间。把所有的程序代码都写在一个main()函数中程序完全可以运行。 但是随着学习的深入,代码量的增加,将所有的代码都放在同一个.C文件中的做法越发使得程序结构混乱,虽然可以运行,但是可读性、可移植性变差。即使是自己写的程序,时间长以后对程序的阅读和修改也要花一些时间。模块化编程使得程序的组织结构更加富有层次感,立体感和降低程序的耦合度。 在大规模程序开发中,一个程序由很多个模块组成,很可能,这些模块的编写任务被分配到不同的人。几乎所有商用程序都必须使用模块化程序设计理念。在程序的设计过程中各个开发者分工合作,分别完成某一模块特定的功能,减少开发时间等。 二、模块化编程设计步骤 (1)、创建头文件 在模块化编程中,往往会有多个C文件,而且每个C文件的作用不尽相同。在我们的C 文件中,由于需要对外提供接口,因此还必须有一些函数或者是变量提供给外部其它文件进行调用。对于每一个模块都有相应的.c文件和.h文件,为了阅读调试方便,原则上.c文件和.h文件同名,如和。 (2)防重复包含 例如文件 #ifndef__DELAY_H__ #define__DELAY_H__ void delay(uint t); #endif 假如有两个不同源文件需要调用delay(uint t)这个函数,他们分别都通过#include “”把这个头文件包含了进去。在第一个源文件进行编译时候,由于没有定义过因此#ifndef__DELAY_H__条件成立,于是定义_DELAY_H_ 并将下面的声明包含进去。在第二个文件编译时候,由于第一个文件包含时候,已经将_DELAY_H_定义过了。因此#ifndef__DELAY_H__不成立,整个头文件内容就没有被包含。假设没有这样的条件编译语句,那么两个文件都包含了delay(uint t);就会引起重复包含的错误。所以在.h文件中,为了防止出现错误都进行防重复包含。 (3)代码封装 将需要模块化的进行代码封装 头文件的作用可以称其为一份接口描述文件。其文件内部不应该包含任何实质性的函数代码。我们可以把这个头文件理解成为一份说明书,说明的内容就是我们的模块对外提供的接口函数或者是接口变量。同时该文件也包含了一些很重要的宏定义以及一些结构体的信息,离开了这些信息,很可能就无法正常使用接口函数或者是接口变量。但是总的原则是:不该让外界知道的信息就不应该出现在头文件里(不需要外部调用的函数不在头文件中申明),而外界调用模块内接口函数或者是接口变量所必须的信息就一定要出现在头文件里(需要被外部调用的函数一定要在头文件中申明),否则,外界就无法正确的调用我们提供的接口功能。

风电场选在哪里最给力

? 吴敬凯 张继立 风电场选在哪里 最给力 风资源分析是风电场项目前期工作的重要环节,是风电项目的根本,对资源的正确评估是风电场建设取得良好经济效益的关键,有的风电场建设因风能资源评价失误,建成的风电场达不到预期的发电量,造成很大的经济损失。微观选址工作主要任务是,对风电场所在区域内进行现场踏勘,利用计算软件对风电场内的风电机组布置进行计算,满足风电场总体装机容量以及风电机组装机台数要求,给出各风电机组的具体位置坐标,从而指导下一步的勘测设计等工作。一个准确、可靠的风资源分析和微观选址报告能够确保风力发电机组的可靠运行,并为风场投资回报率提供可靠的保证。 风资源分析 数据检验。对测风资料进行三性分析,包括代表性、一致性和完整性,测风时间至少应保证一周年,测风资料有效数据完整率应大于90%,资料缺失的时段应尽量小(小于7天)。 测风数据分析。根据风场测风数据处理形成的资料和长期站(气象站,海洋站)的测风资料,按照国家标准《风电场风资源评估方法》计算风电机组轮毂高度处代表年平均风速,平均风功率密度,风电场测站全年风速和风功率日变化曲线图,风电场测站全年风速和风功率年变化曲线图,风电场测站全年风向,风能玫瑰图,风电场测站各月风向,风能玫瑰图,风电场测站的风切变系数,湍流强度,粗糙度;通过与长期站的相关计算整理出一套反映风电场长期平均水平的代表数据。 2010年10月20日, 美国埃尔斯沃思附近的风力发电场,一座风磨和几个风力涡轮机。 摄影/CFP/CFP

?23特 别策划 通过对测风塔的数据进行分析,得出代表年50m~80m高度的年平均风速、风功率密度。根据《风电场风能资源测量方法》可以判断风功率密度等级,一般来说,风功率密度达到3级以上,风电场才有开发价值。 各测风塔的风能主要集中某几个扇区,盛行风向稳定,才有利于风能资源的有效利用。 风电机组安全等级分析。按照IEC 61400-1(Third edition,2005-08)计算风电场预装风电机组轮毂高度处湍流强度和50年一遇10m in平均最大风速,提出风电场场址风况对风电机组安全等级的要求(见表1)。 表1 IEC 61400-1(Third edition, 2005-08) 机型划分标准 注: Vref表示参考风速10分钟平均值 A 表示较高湍流特性级 B 表示中等湍流特性级 C 表示较低湍流特性级 Iref表示风速 15 m/s时湍流强度期望值 根据以上形成的各种参数,对风电场风能资源进行评估,以判断风电场是否具有开发价值。 微观选址 微观选址工作主要任务是,对风电场所在区域内进行现场踏勘,利用计算软件对风电场内的风电机组布置进行计算,满足风电场总体装机容量 以及风电机组装机台数要求,给出各 风电机组的具体位置坐标,从而指导 下一步的勘测设计等工作。 微观选址的技术路线。世界气象 组织在风能资源利用方面的气象问题 中给出了风力发电机组微观选址技术 方法的框图,见图1。 如上图所示,微观选址首先确定 盛行风向;其次地形归类,可以分为平 坦地形和复杂地形。在平坦地形中主 要是地面粗糙度的影响;复杂地形除 了地面粗糙度,还要考虑地形特征。 微观选址的主要影响因素。风电 场选址需考虑以下5个方面: 一是地形影响。风能与风速的立 方成正比,当风速为原来的两倍时,则 功率为原来的八倍。由于风的局地性 相当大,这就愈来愈需要气象学家,为 风力发电机所要选的位置,提供中、小 尺度的气候分析。运用气象规律认真 选好站址,对推广风能利用所产生的 经济效果是非常显著的,小地形的影 响也是不能忽视的,所以一旦利用风 能的地区确定后,就必需对当地的局 地小气候进行分析,将风机位置安装 在受地形影响风速增强的地点。 地形会造成风速差异,不同地形 的风速和空旷平地的风速比值(如表 3)可以推算相似地形下的风速。 表2 不同地形下风速与平坦地面风速比值表 图1 微观选址技术路线图

第5章_模块化程序设计

第5章模块化程序设计 5.1 简答题 (1)指令“CALL EBX”采用了指令的什么寻址方式? 寄存器间接寻址 (2)为什么MASM要求使用proc定义子程序? (这个问题不好回答,是不是作者写错了?我猜测可能的原因:在汇编语言中,函数、子程序等都称为过程,所以使用proc定义子程序) (3)为什么特别强调为子程序加上必要的注释? 便于程序员调用时使用,而不必关注子程序的内部实现。 (4)参数传递的“传值”和“传址”有什么区别? 传值是传递参数的拷贝,传址是传递参数的地址 (5)子程序采用堆栈传递参数,为什么要特别注意堆栈平衡问题? 保证正确返回;释放传递参数占用的堆栈空间,避免多次调用可能导致的堆栈溢出(6)INCLUDE语句和INCLUDELIB有什么区别? INCLUDE语句包含的是文本文件、是源程序文件的一部分;INCLUDELIB语句包含的是子程序库文件 (7)什么是子程序库? 子程序库就是子程序模块的集合,其中存放着各子程序的名称、目标代码以及有关定位信息,便于子程序的管理和调用 (8)调用宏时没有为形参提供实参会怎样? 缺少的实参,形参会做“空”处理。 (9)宏定义体中的标号为什么要用local为指令声明? 为了避免宏展开后出现标示符不唯一的情况,定义为局部。 (10)条件汇编不成立的语句会出现在可执行文件中吗? 不会。 5.2 判断题 (1)过程定义proc是一条处理器指令。 错,proc是伪指令 (2)CALL指令的执行并不影响堆栈指针ESP。 错,要改变,因为返回地址要压入堆栈 (3)call指令本身不能包含子程序的参数。 对。 (4) call指令用在调用程序中,如果被调用程序中也有call指令,说明出现了嵌套。 对。 (5)子程序需要保护寄存器,包括保护传递入口参数和出口参数的通用寄存器。 错,不能保护传递出口参数的寄存器 (6)利用INCLUDE包含的源文件实际上只是源程序的一部分。 对 (7)宏调用与子程序调用一样都要使用CALL指令实现。 错,宏调用是通过宏展开实现的调用,不用CALL指令 (8)宏定义与子程序一样一般书写与主程序之后。

实验三模块化程序设计

实验三模块化程序设计 【实验目的】 1.理解和掌握多模块的程序设计与调试的方法; 2.掌握函数的定义和调用的方法; 3.学会使用递归方法进行程序设计。 【实验内容】 1.编写一个函数,判断一个数是不是素数。在主函数中输入一个整数,输出是否是素数的信息。 实验步骤与要求: (1) 编写一个函数isprime(n),如果n是素数返回1,否则返回0。 (2) 编写一个主函数,输入一个整数,调用isprime( )函数,判断此整数是否为素数,并输出结果。 函数isprime(n)算法说明: (1) k = sqrt(n) (2) i = 2 (3) 当i <= k时,执行()(),否则转(4) if ( m % i == 0 ) return 0 i=i+1 (4) return 1 #include<> #include<> int isprime(int n) { int i;

double k; i=2; k = sqrt(n); while(i<=k) { if(n%i==0) return 0; i++; } return 1; } main() { int a; int t=1; printf("请输入一个整数\n"); scanf("%d",&a); t=isprime(a); printf("%d",a); if(t==0) printf("不是素数\n"); else printf("不是素数\n"); } 2.编写函数Celsius返回华氏温度对应的摄氏温度,函数Fahrenheit返回摄氏温度对应的华氏温度。用这些函数编写程序,打印从0到100的所有摄氏温度及对应的华氏温度,32到212度的所有华氏温度及对应的摄氏温度。

风电场风能资源评估及微观选址方法.

风电场风能资源评估及微观选址方法2017-07-21 科技论坛 风电场风能资源评估及微观选址方法 高兴建 (黑龙江华富风力发电穆棱有限责任公司,黑龙江穆棱157500) 摘要:风能资源评估是整个风电场建设、运行的重要环节,是风电项目的根本,对风能资源的正确评估是风电场建设取得良好经济效益的关键, 有的风电场建设因风能资源评价失误,建成的风电场达不到预期的发电量,造成很大的经济损失。本文主要针对风能资源评估及微观选址进行了分析 关键词:风电场;风能资源评估;微观选址方法1风能资源评估 风能资源评估包括三个阶段:区域的初步区域风能资源评估及微观选址。甄选、 1.1区域的初步甄选 建设风电场最基本的条件是要有能量丰 区域的初步甄选是根富,风向稳定的风能资源。 据现有的风能资源分布图及气象站的风资源情况结合地形从一个相对较大的区域中筛选较好的风能资源区域,到现场进行勘探,结合地形地貌和树木等标志物在万分之一地形图上确定风 应电场的开发范围。风电场场址初步选定后, 根据有关标准在场址中立塔测风。测风塔位置的选择要选具有代表整个风电场的风资源状况,具体做法:根据现场地形情况结合地形图,在地形图上初步选定可安装风机的位置,测风塔要立于安装风机较多的地方,如地形较复杂要分片布置立测风塔,测风塔不能立于风速分离区和粗糙度的过渡线区域,即测风塔附近应 地形较陡、树木等障碍物,与单无高大建筑物、 个障碍物距离应大于障碍物高度的3倍,与成排障碍物距离应保持在障碍物最大高度的10倍以上;测风塔位置应选择在风场主风向的上风向位置。测风塔数

量依风场地形复杂程度而定:对于较为简单、平坦地形,可选一处安装测风设备;对于地形较为复杂的风场,要根据地形分片布置测风点。测风高度要最好风机的轮毂高度一样,应不低于风机轮毂高度的2/3,一般分三层以上测风。 1.2区域风资源评估 区域风资源评估内容包括: 对测风资料进行三性分析,包括代表性,一致性,完整性;测风时间应保证至少一周年, 资测风资料有效数据完整率应满足大于90%, 料缺失的时段应尽量小(小于一周)。根据风场测风数据处理形成的资料和长期站(气象站、海 《风电场风资洋站)的测风资料,按照国家标准 源评估方法》(GB/T18710-2002)计算风电机组轮毂高度处代表年平均风速,平均风功率密度,风电场测站全年风速和风功率日变化曲线图,风电场测站全年风速和风功率年变化曲线图,风电场测站全年风向、风能玫瑰图,风电场 风能玫瑰图,风电场测站的风切测站各月风向、 变系数、湍流强度、粗糙度;通过与长期站的相关计算整理一套反映风电场长期平均水平的代 地表粗糙度、障表数据。综合考虑风电场地形、 碍物等,并合理利用风电场各测站订正后的测风资料,利用专业风资源评估软件(WASP、WindFarmer等),绘制风电场预装风电机组轮毂高度风能资源分布图,结合风电机组功率曲 按照国家标准《风力发线计算各风机的发电量。 电机组安全要求》(GB1845.1-2001)计算风电场预装风电机组轮毂高度处湍流强度和50 年一遇10min平均最大风速,提出风电场场址风况对风电机组安全等级的要求。根据以上形成的各种参数,对风电场风能资源进行评估,以判断风电场是否具有开发价值。 1.3微观选址目前,国内微观选址通常采用国际上较为流行的风电场设计软件WASP及WindFarmer进行风况建模,建模过程如下:

风电场选址的三种方法

在风电场建设之前,前期的微观选址工作是关键而重要的一步.风电场场址恰当与否直接影响电厂建成投产后的风资源利用率、风电场年发电量以及风电场对周围环境等的影响。风电场微观选址工作涉及了气象、地质、交通、电力等诸多领域,以下简单从气象角度论述选址工作的基本方法: (一) 资料分析法 首先搜集初选风电场址周围气象台站的历史观测数据,主要包括:海拔高度、风速及风向、平均风速及最大风速、气压、相对湿度、年降雨量、气温及端最高最低气温以及灾害性天气发生频率的统计结果等。此外还应在初选场址内建立测风塔,并进行至少1年以上的观测,主要测量10m-70m/100m的10分钟平均风速和风向、日平均气温、日最高和最低气温、日平均气压以及10分钟脉动风速平均值。这些风速的测量主要是为了根据风机功率曲线计算发电量,并计算场址区域的地表动力学摩擦速度。对测风塔数据进行整理分析,并将附近气象台站观测的风向风速数据订正到初选场址区域。分析气象观测数据及场址地表特征,根据以下条件判断初选区域是否适宜建立风电场: 1. 初选风电场地区风资源良好,年平均风速大于6.0-7.0m/s,风速年变化相对较小,30m 高度处的年有效风力时数在6000小时以上,风功率密度达到250W/m2以上。 2. 初选场址全年盛行风向稳定,主导风向频率在30%以上。风向稳定可以增大风能的利用率、延长风机的使用寿命。 3. 初选场址湍流强度要小,湍流强度过大会使风机振动受力不均,降低风机使用寿命,甚至会毁坏风机。 4. 初选场址内自然灾害发生频率要低,对于强风暴、沙尘暴、雷暴、地震、泥石流多发地区不适宜建立风电场。 5. 所选风电场内地势相对平坦,交通便利,风电上网条件较好,并最好远离自然保护区、人类居住区、候鸟保护区及候鸟迁徙路径等。 (二) 实际调研 以上方法主要针对条件较好区域,如果某些地区缺少历史测风数据,同时地形复杂,不适宜通过台站观测数据来订正到初选场址,可以通过如下方法对场址内风资源情形进行评估:地形地貌特征判别法、植物变形判别法、风成地貌判别法、当地居民调查判别法。 (三) 微尺度模式的应用 随着数值模拟技术的快速发展,也由于资料分析法在资料的时空分辨率方面具有一定局限性,越来越多的高分辨率气象模式及流体力学计算软件被应用到风电场微观选址工作中.目前,最常用的风电场微观选址及风资源评估的软件有: 1. WAsP:WAsP(Wind Atlas Analysis and Application Program)软件由丹麦RISΦ实验室开发,是基于比较平坦的地形设计的,可以由一个测风观测塔推算周围100km2范围内的风能资源分布。WasP软件对风能资源评估适用于区域面积小,地形相对平坦地区。 2. WindPro:WindPro软件是丹麦EMD公司设计的一款用于风电场选址及风资源评估的软件。考虑初选场址地形、地表粗糙度及障碍物,以及测风塔观测数据运用WAsP计算风电场范围内风能资源分布情形,并对风电场内风机排布进行优化选址,同时可以对风机定位工作后产生的噪声、闪烁及可视区域进行计算。WindPro软件还可以将场址附近测站长时间序列观测数据订正到场址内的观测点上。由于WindPro采用WAsP来计算风资源分布,该软件更适宜用于相对平坦地形上的风电场选址及风资源评估。 3. WindSim:WindSim软件是挪威一家公司设计,基于计算流体力学方法对风电场选址及风资源评估的软件。WindSim软件包括六个模块:地形处理模块、风场计算模块、风机位置模块、流场显示模块、风资源计算模块、年发电量计算模块。其中,风场计算模块适用计算流体力学商用软件Pheonics的结构网格解算器部分。WindSim软件采用计算流体力学软件

风电场微观选址工作中如何进行机位经济性分析方法

风电场微观选址工作中如何进行机位经济性分析方法 计鹏新能源 关键词: 风电场风机风力发电 一、单台机位经济性分析方法 (一)基准(最低)年等效满负荷小时数 在不考虑机位道路、平台、集电线路等投资,仅考虑风机、塔筒、基础、箱变等设备及安装维护费用的情况下,按照单机8%资本金财务内部收益率的要求推算单个机位点满足经济性要求的最低年等效满负荷小时数,作为机位经济性分析的基准小时数。 (二)机位经济性 将各机位超过基准年等效满负荷小时数的发电效率(效益现值)与该机位有关的支线道路、平台、集电线路等投资进行比较,确认每个机位(含备用机位点)的经济性是否满足要求。 二、项目实例 (一)基准(最低)年等效满负荷小时数 某工程单台风电机组及箱式变电站建设投资约为1065万元(不含道路、集电线路、平台工程投资),其中设备费919万元,安装工程44万元,建筑工程102万元。 表1:单台风机投资情况 当单机资本金财务内部收益率为8%,经计算,单机基准(最低)年等效满负荷小时数为1341h。 表2:单机财务指标汇总表

(二)机位经济性 点位T03需新建道路1036m,扩建道路1852m,集电架空线路2100m,根据本方案,与该机位有关的支线道路、平台、集电线路投资约为258万元。T03风机年等效满负荷小时数为1889.54h。经计算,T03风机资本金财务净现值为420万元,大于与该机位有关的支线道路、平台、集电线路投资,故本机位的经济性满足要求。 备点X10需新建道路1832m,集电架空线路1650m,根据本方案,与该机位有关的支线道路、平台、集电线路投资约为219万元。X10风机年等效满负荷小时数为1636.26h,经计算,X10风机资本金财务净现值为226万元,略大于与该机位有关的支线道路、平台、集电线路投资,故本机位的经济性满足要求,但有一定的投资风险。

模块化程序设计

模块化程序设计 一、变量 变量分为局部变量、静态变量、全局变量和寄存器变量,关键字依次为auto、static、extern 和register。全局变量和静态变量存放在内存静态存储区域,局部变量存放在内存栈区。在C 语言中,只允许在函数体的开始位置声明变量,C++可在函数任何位置声明。auto默认省略,如auto int a一般写成int a。对变量赋值不能放在函数外,只有在定义全局变量时的初始化才被允许,如在函数外int a; a=0非法,int a=0合法。 局部变量也称为内部变量,是在函数内部定义的变量,其作用域从声明处到所在函数的结尾。补充:即使主函数中定义的变量也只能在主函数中使用;形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量;允许在不同的函数中使用相同的变量名,互不干扰。在复合语句中也可定义变量,其作用域只在复合语句范围内,例如:int s,a; { int b; s=a+b; //b作用域 } //s,a作用域 全局变量也称为外部变量,是在函数外部定义的变量,其作用域从声明处到本程序文件的结尾,其他程序文件可对其进行extern声明从而合法使用,即具有全文件作用域。全局变量只能定义一次,但可声明多次。在同一源文件中,允许全局变量和局部变量同名,在局部变量的作用域内,全局变量不起作用。从模块化程序设计考虑,尽量少用全局变量,使用静态全局变量。在函数中使用全局变量,一般应作全局变量声明,但在一个函数之前定义的全局变量,在该函数内使用可不声明,例如: int a,b; //外部变量 main(){} int x,y; //外部变量 a和b在main可不声明,x和y若不声明则非法。 静态变量可分为静态局部变量和静态全局变量,两者都只能定义一次。静态全局变量作用域从声明处到本程序文件的结尾,不能作用到其它文件里,即具有单文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。 若全局变量仅在单个程序文件中访问,则可将该变量修改为静态全局变量,以降低模块间的耦合度;同理,修改为静态局部变量;若需要一个可重入的函数,则一定要避免函数中使用static变量;当函数返回值为指针类型时,必须是static局部变量的地址作为返回值,若为auto类型,则返回为错指针。 注意:不要在头文件文件中定义变量!定义和声明的区别可理解为:用关键字auto、static、extern和register是声明,如int a,声明一般在头文件中;初始化是定义,如a=0。 二、函数和宏定义 函数分为内部函数和外部函数,关键字分别为static和extern,外部函数声明时extern 可省略(全局变量声明不能省略)。在定义函数时声明的参数叫做“形式参数”,简称形参。在调用函数时,被调用函数的参数成为“实际参数”,简称实参。实参必须与形参的类型保持一致。 宏定义分简单宏定义和带参数宏定义,简单宏定义格式为:#define 标识符常量表达式。在预处理阶段将用常量表达式直接替换标识符,编译时不进行数据类型检验,且要注意“边际效应”,故存在风险(与const关键字各有优缺点)。若某头文件被多个程序文件include,

程序的模块化设计

keil中实现C语言模块化编程 在使用KEIL的时候,我们习惯上在一个.c的文件中把自己要写的东西按照自己思路的顺序进行顺序书写。这样是很普遍的写法,当程序比较短的时候比如几十行或者一百多行,是没有什么问题的。但是当程序很长的时候,比如你要用到LCD显示数据,就有几个LCD相关的函数,然后你想在LCD上显示温度,那么就要有DS18B20相关的操作,这又有几个相关的函数,如果你还想加上去DS1302的时间显示功能,那么又要多很多函数。这样的话一个程序下来几百行是很正常的事情,对于自己写的程序可能在自己的脑海中比较清晰,不会太乱,但是当把自己写的程序交给别人来看的时候,别人往往会看的云里雾里,经常会看着看着就不知道你写的是什么了。 如果大家写过类似电子钟这样的比较长的程序的话,肯定在网上下载过相关的程序看过,有没有觉得别人的程序看起来让自己觉得很郁闷呢?呵呵。现在我们来介绍一种在KEIL中C语言的模块写法。这样的写法其实也是很好用的,一些稍长的程序中经常见到。 是不是看起来不陌生?这就对了。其实如果学过PC机的C语言的话,对多文件的编译比较熟悉那么这个就不是什么问题了,因为这基本上是相同的。如果您是高手对此很熟悉的话,那么请略过本文;如果您是对此不是很熟悉并对此有点兴趣,那么本文或许对您有所帮助。如果在本文中有讲的不对的地方请跟帖提出。或者在我的主页给我留言进行交流。这个教程不大容易用文字的形式来讲清楚, 如果用视频来做的话效果应该好的多,但是俺没这个条件(俺普通话不好怕吓到大家,哈哈)。可能一帖会写不完,另外打字是件很痛苦的事情,所以这个请见谅。下面正式开始。 我们主的目的是学习模块化的写法,所以功能是次要的,熟悉了这个写法以后功能是大家自己控制的,我们现在将以LED灯的控制为例子讲起。 这样,我们先建立三个.c的文件,分别命名为main.c、delay.c和led_on.c,并将在建立文件的时候尽量做到看到文件名即能看出程序的功能,这样的话比较直观,不容易混乱。然后将这三个文件都添加进工程。(这个不能不会吧?) 在 delay.c 中我们加入如下代码: void delay1s() { unsigned int m,n; for(m=1000;m>0;m--) for(n=20;n>0;n--); } 当然这个延时函数的实际延时时间并不是一秒,我们暂且不用管它,知道他是起延时作用的就可以了。在led_on.c这个文件中我们加入如下代码: void led_on() { P0=0x00;

相关文档
相关文档 最新文档