SWAN服务器系统白皮书.doc
- 文档编号:1216744
- 上传时间:2023-04-30
- 格式:DOC
- 页数:21
- 大小:1.21MB
SWAN服务器系统白皮书.doc
《SWAN服务器系统白皮书.doc》由会员分享,可在线阅读,更多相关《SWAN服务器系统白皮书.doc(21页珍藏版)》请在冰点文库上搜索。
20
SWAN服务器系统
白皮书
(2012.07版)
一、平台基本介绍 3
基本工作原理 4
系统构成 4
二、系统配置 5
1、Initsetting.ini 5
2、mcre.ini 5
3、Initsetting.ini 5
4、mcre.ini 5
5、menu.ini 6
6、modulesettings.ini 6
7、Timertrigger.ini、filetrigger.ini、scheduletrigger.ini 6
8、线程配置文件:
7
三、系统功能 7
1、基本功能:
7
2、配置和辅助功能:
7
3、系统附带的调试功能,所有配置文件请遵守默认规则:
7
四、数据格式 8
1、Diamond35通用地理标志描述格式 8
2、131类格点格式,用于记录多层的格点数据 9
3、自动站时序数据 11
五、子系统介绍 13
1、雷达拼图和外推子系统 13
2、实时报警主子系统 14
3、云图识别子系统 14
3、雷电资料处理子系统 14
5、清理子系统 14
6、FTP分发子系统 14
六、模块二次开发标准 15
1.模块和相关文件的要求 15
2.系统交换约定和临时文件规则 16
3.模块的附属支持 18
4.模块的运行流程 18
5.线程组的分配原则和线程模块间通讯 19
6.信息交换标准 20
7.模块开发解说 20
一、平台基本介绍
SWAN服务器框架是一个程序调度平台,用来按照条件调度服务器模块运行,发送结果通知给对应的客户端,并维护服务器产品,记录模块运行情况。
服务器框架由基本系统,基本配置系统,外接扩展程序和外接配置系统组成。
基本系统负责整个系统的基本运行,基本配置系统用来配置基本系统的参数,外接扩展程序用来扩展基本系统的功能,外接配置系统用来配置其他扩展的部分程序。
基本工作原理
基本系统是触发器和线程之间的控制,信息的发送和运行情况的记录的平台,基本系统启动后将运行所有的线程,然后将线程挂起,将触发器和线程相连接,当触发器满足条件时,向对应的线程发出唤醒信号,使线程运行一次,线程运行完后再次进入休眠,等待下一次信号。
线程运行过程中的信息被基本系统记录入运行日志。
系统构成
系统由基本系统、基本系统配置、扩展功能库、扩展配置系统组成。
基本系统是由线程和触发器组成的调度系统。
基本配置系统由路径配置,运行参数配置和模块配置三部分组成,路径配置用来配置系统中的路径参数,根据配置文件的路径设置更改。
运行参数用来配置系统的运行设置,包括运行模式,系统备份模式,网络参数。
模块配置用来读取配置系统中的模块的相应的INI文件中的计算参数和附加设置。
系统的附加功能由外接扩展功能库来实现,目前的系统调试功能,工具菜单都是通过外接扩展功能库来实现。
对于模块引入的配置,通过外接配置系统来实现,外接扩展系统是外接扩展功能库的一部分,雷达配置就是一个外接配置模块,专门用来更改拼图模块和雷达特征量报警模块的参数。
系统目录由programpe、procpe、conf、log、doc、tmp六个目录。
Programpe存放系统的主程序和公用动态库。
Procpe存放模块程序和外接功能库,其中系统功能的外界库存放在sys子目录下,相关图片资源存放在res子目录下。
Conf存放配置文件,其中系统的配置文件存放在sys子目录下,其他的存放在Conf目录下,对于一些子参数配置,可以存放在子目录下,但是必须要有一个和模块名同名的配置文件存放在Conf下。
Log目录存放运行的日志文件。
Doc目录存放一些文档。
Tmp目录存放运行时的临时文件,如果清空tmp目录相当于把运行状态重置。
二、系统配置
系统配置位于conf下的sys目录,主配置由5个文件组成:
1、Initsetting.ini
路径的配置定义,系统的输入和输出路径都在这里登记。
2、mcre.ini
系统运行配置文件,基本系统的配置定义。
menu.ini菜单配置文件,扩展菜单的定义文件。
modulesettings.ini模块配置文件定义,需要手工配置的模块文件的对应配置会在这个文件的列表里。
timertrigger.ini时钟触发器配置,用来定义由定时控制的线程的对应时钟触发器条目。
Scheduletrigger.ini计划任务触发器配置文件,里面定义了计划任务的规则字串。
Filetrigger.ini定义了文件监视触发器的规则条目。
一些线程命名的配置文件,记录每个线程的配置信息。
其他未说明文件请予以保留,属于未完全规划完的功能所留下的文件。
3、Initsetting.ini
输入输出配置,此文件包含两个段,输入路径和产品路径,输入路径为绝对路径,产品路径为相对路径,系统的路径配置会随着输入路径数目变化自动适应。
输入路径配置格式:
路径名=绝对路径。
产品路径配置格式:
路径名=相对路径。
以上路径名为全局唯一。
4、mcre.ini
框架的主控配置,包括路径设置,系统设置,网络设置和线程设置。
路径设置目前只包含产品根路径。
系统设置包括产品压缩,运行模式和产品备份三个主要参数。
网络设置主要包含网络发送的参数,包括发送端口,网络发布模式,对应的客户IP地址。
线程设置包括了系统运行的线程设置,记录的是线程配置文件。
格式:
线程名=线程配置文件。
5、menu.ini
扩展菜单配置,服务器框架的大多数功能都是通过扩展菜单配置来实现的,扩展菜单配置格式为:
菜单显示名=父菜单ID|图标|处理的动态库|处理的函数兼ID|菜单风格。
一共五个段,用”|“分割。
当该菜单不存在其中一个段的变量时,用NULL表示。
父菜单ID为此菜单建立在哪个菜单上,如果为NULL,则为顶层菜单。
其中图标为位于procpe目录下的res中的png文件名。
处理的动态库位于procpe下sys目录中的动态库。
处理的函数为动态库中的导出函数,建立菜单的时候同时会用这个函数名作为菜单的ID,这样其他菜单可以建立在这个菜单上。
菜单风格为菜单和工具栏的风格,一共五个关键词:
NULL、TOOLBARICON、TOOLBARSEP、MENU、MENUSEP,分别为空,即普通菜单、在工具栏放置图标、,普通工具栏分割条,父菜单,即其他菜单可以建立在这个菜单下、菜单栏分割条。
6、modulesettings.ini
配置模块配置对话框中可用的条目,默认基本系统中模块配置是没有可选的配置项,只有在modulesettings.ini中加入条目的时候,才会在模块配置中出现条目。
配置的格式为:
显示名=配置文件名。
7、Timertrigger.ini、filetrigger.ini、scheduletrigger.ini
时钟触发器的配置文件,格式为:
每一行一个触发器的配置。
时钟运行以秒为单位,到符合触发器的条件时,便像配置中的线程发送一次运行消息。
定时器配置格式:
触发器名=时钟间隔|激活的线程名|激活的方式
文件监视配置格式:
触发器名=监视目录|激活的线程名|激活的方式|延时时间
计划任务触发器配置格式:
触发器名=时间规则|激活的线程名|激活的方式
激活线程名可以是多个,使用逗号“,“来分割,激活方式为S或者A,S为设置运行一次,A为在原来的基础上增加一次。
原则上以使用S为主,增加方式在某些运行时间较长的时候会造成连续运行,原则上运行的时间间隔按照系统运行性能来配置,有多个激活线程时,激活方式也要有多个,一个线程名对应一个激活方式,均使用”,“来分割。
8、线程配置文件:
线程配置文件用来配置线程中的程序,格式为每一行一个程序配置,不需要总体的数目项。
配置格式为:
程序名=激活线程|激活方式|最大时限,其中激活线程和激活方式与触发器相同,不存在对应激活线程是用NA填充。
最大时限为程序运行的最大时间限制,超过该时间程序被强行中止,并记录超时,时间单位为秒。
三、系统功能
1、基本功能:
基本功能主要为调度功能,包含运行、停止和退出,点击运行后,系统就按照触发器条件唤醒线程进行计算处理。
2、配置和辅助功能:
配置功能由外挂功能库市县,具体情形所带的模块不同。
一般带有路径配置、运行配置和模块配置。
,附加功能包含清理、配置保存、配置加载。
3、系统附带的调试功能,所有配置文件请遵守默认规则:
开发版本具有调试菜单,位于工具->调试菜单下
运行选中程序:
运行左边列表栏中选中的程序。
当前程序配置:
打开左边列表中选中程序的配置文件
当前线程配置:
打开当前选中线程的配置文件
定时器配置:
打开时钟触发器配置文件。
文件监视配置:
打开文件监视触发器配置文件
任务表配置:
打开计划任务触发器配置文件
INI条目配置:
编辑模块配置的INI文件
系统主配置:
编辑mcre.ini主配置文件,可以在其中打开或者关闭某个线程
资料路径配置:
编辑系统的输入输出路径初始化配置
外挂菜单配置:
编辑系统的外挂功能菜单
系统注册配置:
组件系统的安装信息
添加空白线程:
添加一个空白线程的配置文件并且载入
四、数据格式
SWAN中的数据格式主要是3类:
35类格式、131类格式和自动站时序文件。
请注意版本更新时的格式更新变化
1、Diamond35通用地理标志描述格式
35类格式普遍应用在SWAN中,用来表述报警,用户自定义地图等地理性质的数据,35类数据格式存储数据的位置和属性,具体的显示方式由配置和显示引擎来决定,35类数据读取必须采用解释行的行读取,首先判断行的标记,然后才可以读取后续数据。
35类数据是文本文件,文件后缀TXT:
Diamond35文字描述
TAB(类型描述符)文件生成时间记录条数无效记录表达值
记录字段数字段1名字段2名字段3名.......
记录类型记录坐标点数
经度纬度高度
经度纬度高度
经度纬度高度
.....
字段1字段2字段3.......
其中记录类型分为:
POINT(点),MULTIPOINT(多个点),PLINE(线条),POLYGON(多边形)
TAB下一行必须是表格定义,中间不能加空行
TAB和TABALM合并处理,不再区分报警,报警使用文件名判断
2、131类格点格式,用于记录多层的格点数据
131格式经过数次修订,目前大多数数据仍未1.0格式,但是显示引擎已经能够解析2.0格式的数据,具体应用可以根据情况使用相应版本的格式,主要是从后面的Reserved中修改为对应版本的大小。
保证文件头格式总长度1024个字节。
说明:
(老版本文件头长256字节,蓝色字段在老版本中不存在,只在新版本中存在。
新旧版本的判断在Flag[8]字段,如果内容是“SWAN”则是新版本,否则为老版本),站点设置一般供雷达用,也可用于其他,只有20个空位
charZonName[12]; //diamond13112个字节
charDataName[38];//数据说明(例如2008年5月19日雷达三维拼图)38个字节
char Flag[8]; //文件标志,"swan"
char Version[8]; //数据版本号,"1.0"目前为2.0
unsignedshortintyear;//2008两个字节
unsignedshortintmonth;//05两个字节
unsignedshortintday;//19两个字节
unsignedshortinthour;//14两个字节
unsignedshortintminute;//31两个字节
unsignedshortintinterval;//两个字节
unsignedshortintXNumGrids;//1300两个字节
unsignedshortintYNumGrids;//800两个字节
unsignedshortintZNumGrids;//20两个字节
intRadarCount;//拼图雷达数四个字节
floatStartLon;//网格开始经度(左上角)四个字节
floatStartLat;//网格开始纬度(左上角)四个字节
floatCenterLon;//网格中心经度四个字节
floatCenterLat;//网格中心纬度四个字节
floatXReso; //经度方向分辨率四个字节
floatYReso; //纬度方向分辨率四个字节
floatZhighGrids[40];//垂直方向的高度(单位km)数目根据ZnumGrids而得(最大40层)160个字节。
charRadarStationName[20][16];//相关站点名称, 20*16字节
floatRadarLongitude[20];//相关站点所在经度,单位:
度,4*20字节
floatRadarLatitude[20];//相关站点所在纬度,单位:
度,4*20字节
floatRadarAltitude[20];//相关站点所在海拔高度,单位:
米,4*20字节
unsignedcharMosaicFlag[20];//该相关站点数据是否包含在本次拼图中,未包含:
0,包含:
1,20字节
//数据类型定义,版本号为.=1.5
shortm_iDataType;//0-unsignedchar1-char2-unsignedshort3-short4
//每一层的向量数,版本=2.0
shortm_iLevelDimension;
char Reserved[168];
接下来是数据块,从底层到高层进行排列共ZnumGrids层。
一个字节存储一个数据,值的范围0-255,2*dBZ+66等于该字节的值。
每层的数据从起始点(左上角)开始,按维向(纬度y)减小写每行的经向(经度x增大)数据。
具体数据的记录值约定:
组合反射率、CAPPI率数据值为单字节,范围0-255,2*dBZ+66等于该字节的值。
回波顶高、垂直液态水含量、垂直液态水含量密度、一小估算降水等数据为两字节整数(shortint),回波顶高单位为0.1km,垂直液态水含量单位为0.1kg/m2,垂直液态水含量密度单位为0.1kg/m3,一小估算降水单位为0.1mm,范围0-203(大于203的全部等于203)每层的数据从起始点(左上角)开始,按维向(纬度y)减小写每行的经向(经度x增大)数据。
其他产品存储的必须为实际值,存储和实际值之间不得再有转换的公式。
3、自动站时序数据
自动站时序数据是二进制格式,包含了若干时长的自动站数据,文件首先包含文件头:
typedefstructtagSerialFile15
{
charszFlag[16];//标记=SwanCycle
shortnVer;//版本=152011年月日从Int改为Short型
intnDataOffset;//数据区开始的位置,从文件头开始计算
shortnIndex;//2011年月日增加了最新记录的索引号
charszRecordTime[16];//记录时间
intnRecordInterval;//标准的观测间隔
intnTotalTime;//记录时长
intnTotalSta;//站点的个数
intnRecordSize;//每个站点记录长度
}SERIALFILE15;
然后从nDataOffset的位置开始存放自动站的站点数据,每个站点的数据长度为nRecordSize。
每个站点保存了站点数据,每个数据指针包含了若干个时次的数据,具体个数由nTotalTime和nTotalTime决定,结构如下:
typedefstructtagAwsInfoSerial
{
STAINFOsta;
float*fWindDir_2Min;//2分钟平均风向
float*fWindSpd_2Min;//2分钟平均风速
float*fWindDir_10Min;//10分钟平均风向
float*fWindSpd_10Min;//10分钟平均风速
float*fWindDir_Max;//最大风向
float*fWindSpd_Max;//最大风速
char*szWindTime_Max;//最大风速时间,以个字节为一段
float*fRain;
float*fRain_PerMin;//分钟雨量,申请数为保留小时*60
float*fTemp;//温度
float*fTempHigh;//最高温度(1小时内的)
float*fTempLow;//最低温度(小时内的)
float*fTempLd;//露点温度
float*fXdsd;//相对湿度
float*fQy;//气压
float*fNjd;//能见度
}AWSINFOSERIAL;
其中站点信息的子结构定义如下:
typedefstructtagStaInfo
{
intnStaId;//站号
charszStaName[32];//站名
charszCity[32];//所属地市名
floatfLon;//经度
floatfLat;//纬度
floatfHei;//高度
intnLevel;//级别
}STAINFO;
五、子系统介绍
目前的服务器中的子系统包含了:
雷达拼图和外推、自动站处理、云图识别、清理、雷达资料处理、FTP传送。
市级模式只是把线程进行不同分组,用户可根据具体的需求重新配置
1、雷达拼图和外推子系统
主要处理雷达资料,该系统包含的程序和作用如下:
Rdfile:
寻找符合拼图条件的雷达资料
Rdqc:
对找到的资料进行质量控制
Rdmosaic:
三维拼图处理
Rdqpehour:
使用找到的雷达资料计算整点的1小时降水估测
Rdqpe60:
使用找到的雷达资料进行6分钟滚动的1小时降水估测
Radapcal:
进行面雨量累计计算
Radapwarning:
进行临界面雨量计算和报警
GetRefFileName:
为trec程序查找最新的拼图数据
cotrec:
trec计算和回波外推
SCIT.exe:
风暴识别
TRACK.exe:
风暴追踪
GetQPFNeedFile.exe:
为QPF程序查找最新的数据
qpf.exe:
使用广东的方法QPF计算
zrqpf.exe=使用湖北的ZR关系进行QPF计算
GetREFFSTVERIFYNeedFile.exe
GetQPFVERIFYNeedFile.exe
GetSTMVERIFYNeedFIle.exe
上述程序为得到检验要的文件
STM_VERIFY.exe:
风暴追踪检验
QPF_VERIFY.exe:
QPF检验
REF_FST_VERIFY.exe:
回波外推检验
TITAN:
TITAN风暴追踪
dbdetect:
夏季保留检测
radarwarning:
雷达回波报警
2、实时报警主子系统
主要是负责自动站处理和部分雷达产品
radforecast:
雷达风暴特征量报警
awsnew:
将自动站处理成时序格式
awsalarm:
使用时序数据判别报警
awsareaprecipitation:
使用克里金方法对自动站小时雨量进行格点化
awsapcal:
使用自动站格点化雨量计算面雨量
awsapwarning:
使用自动站格点化雨量计算临界面雨量并报警
3、云图识别子系统
目前只有对流云识别一个模块:
GpfConvection
3、雷电资料处理子系统
把雷电观测转为MICAPS可以显示的格式,当前就一个模块:
lightningtran
5、清理子系统
对资料进行清理操作,目前就一个模块:
fileclean
6、FTP分发子系统
定时收集产品目录下的tmp\filenotify目录下的列表,把数据发送到指定的ftp
六、模块二次开发标准
服务器模块开发即是在SWAN产品服务器中的某一个线程中添加一个新的控制台程序。
需要遵循一下的规范:
1.模块和相关文件的要求
模块以控制台程序方式提供,即常说的DOS程序,原则上要求算法部分要求以标准C/C++或者Fortran实现,不设计第三方的类库。
但也可以使用跨平台支持的类库。
一个标准模块包含如下几个部分:
主体可执行程序,配置文件,配置帮助文档,用户说明文档。
文件命名规则:
配置文件为可执行程序的同名ini文件,帮助文件为同名的html文件。
即可执行程序为example.exe的话配置文件为example.ini,帮助文件为example.htm。
配置文件格式要求:
配置文件需为标准的ini文件,ini文件包含三个段,段名固定:
路径设置,计算参数,附加设置。
路径设置段主要是模块的输入输出目录类的设置,这段通常会被统一包装的设定向导更改。
计算参数段记录模块计算用的阈值。
附加设置记录一些其他的参数,主要是控制参数。
Ini的段名和键名都要求为中文描述,另外可以使用“#”或者“;”做为注释行。
配置帮助格式要求:
配置帮助文件要求是标准的html格式,后缀使用“htm”,编码使用UTF-8,帮助文件应包括模块的大致描述,每个参数的含义。
使用帮助文件的可以在ini文件中不加注释行。
模块生成的日志文件的要求:
模块需要将运行状态写成日志文件,日志文件存放在log目录下,命名为模块同名的log后缀。
Log格式必须为文本格式。
具体要求:
分为正常运行日志,出错日志,分别为“程序名YYYYMMDD.log”和“程序名YYYYMMDDerror.log”,比如cotrec.exe分为cotrec20100101.log和cotrec20100101error.log。
基本要求正常运行日志记录程序是否运行过的信息,出错日志记录程序计算中的错误和不满足的计算条件,要便于集中查找错误发生的原因和时间,基本内容包括:
查找输入文件:
是否找到需要计算的文件,不存在路径的话放入到错误日志中。
分析计算条件的状态:
是否符合计算的要求,缺乏的计算条件放入到错误日志中(缺站,匹配不满足等信息)。
计算过程:
各个产品的计算标记,如果程序出错,可以快速定位哪个产品错误。
输出状态:
各个产品的输出标记,如果出错,可以快速定位未输出的产品。
其他必要的信息:
根据自己具体的情况,输出其他有助于判断程序运行状态的信息。
日志格式为以YYYY-MM-DDHH:
mm:
SS的格式输出时间开头,尽量使用中文内容输出。
产品文件命名:
进入SWAN系统的产品由开发组统一分配,基本命名规则是:
二进制:
Z_SWAN_[SUBSYSTEM]_[PRODUCT]_YYYYMMDDHHmmSS_[PARAMS].bin
文本:
Z_SWAN_[SUBSYSTEM]_[PRODUCT]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SWAN 服务器 系统 白皮书