变电站实时监控系统模型程序.docx
- 文档编号:24297630
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:15
- 大小:28.64KB
变电站实时监控系统模型程序.docx
《变电站实时监控系统模型程序.docx》由会员分享,可在线阅读,更多相关《变电站实时监控系统模型程序.docx(15页珍藏版)》请在冰豆网上搜索。
变电站实时监控系统模型程序
(6)
YXDEF.DBF 遥信测点的定义库
用于存放遥信测点信息定义记录,其结构如下:
字段名
含 义
属 性
长 度
DH
点 号
整型
2
Name
设备名称
字符
20
JDZT
输入接点状态
逻辑型
1
JDON
接点”通”时显示
字符
10
JDOFF
接点”断”时显示
字符
10
CD
是否存档
逻辑型
1
State
开关状态
逻辑型
1
JSDEF.DBF 计算数据库
用于存放计算信息定义记录,其结构如下:
字段名
含 义
属 性
长度
DH
点 号
整型
2
Symb
计算符号(+-*/=)
字符
1
DLFDSJ.DBF电量峰谷时间分段信息
用于存放电量时段信息定义记录,其结构如下:
字段名
含 义
属 性
长度
DH
序号
整型
2
时段标记
时段数(0/1/2)
字符
1
注:
0:
高峰时段
1:
低谷时段
2:
腰荷时段
YCBBX.DBF 遥测报表定义库
用于存放遥测报表格式定义记录,其结构如下:
字段名
含 义
属 性
长度
SJ
序号
整型
2
D01
报表第一项
字符
8
.
.
.
D18
报表最后一项
字符
8
DLBBX.DBF 遥测报表定义库
用于存放电量报表格式定义记录,其结构如下:
字段名
含 义
属 性
长度
SJ
序号
整型
2
D01
报表第一项
字符
10
.
.
.
D16
报表最后一项
字符
10
·图形库
ZJXT.GR 主接线图文件
YCSJB.GR遥测列表文件
YXSJB.GR遥信列表文件
DLSJB.GR电量列表文件
用于存放图形文件定义记录,其数据结构如下:
struct {int Parts; } Attribute;
union { struct { int x1,y1,x2,y2;
int Width;
TColor Color; } Line;
struct { int x,y;
TColor Color;
int Size;
char Name[20];
char Code[STRLENTH+1]; } String;
struct { int x,y;
int Point,State;
TColor Color; } S00;
struct { int x,y;
int Point,State;
TColor Color; } S01;
struct { int x,y;
int Point,State;
TColor Color; } S02;
struct { int x,y;
int Point,State;
TColor Color; } Data; } Attr; }
Element[RECORDLEN];
变电站实时监控系统模型(9)
六、系统设计
本项设计中,本人负责主控模块、画面显示模块、异常显示模块、信息定义模块、作图模块、计算模块、电量积分等模块的编制。
1、主控模块
完成系统主画面的生成、时间单元初始化、用户数据库读入、实时数据库的打开、图形类的申请、串行通信口启动等工作。
其代码如下:
__fastcall TFrmMain:
:
TFrmMain(TComponent* Owner)
:
TForm(Owner)
{
time_t t;
struct tm *mt;
FILE *Stream;
MonDays[0]=31,MonDays[1]=28,MonDays[2]=31;
MonDays[3]=30,MonDays[4]=31,MonDays[5]=30;
MonDays[6]=31,MonDays[7]=31,MonDays[8]=30;
MonDays[9]=31,MonDays[10]=30,MonDays[11]=31;
t=time(NULL);
mt=localtime(&t);
Year=mt->tm_year+1900;
Month=mt->tm_mon+1;
Day=mt->tm_mday;
Hour=mt->tm_hour;
Minute=mt->tm_min;
Second=mt->tm_sec;
delete mt;
TableYCDef->IndexName="IdxDH";
TableYXDef->IndexName="IdxDH";
TableDLDef->IndexName="IdxDH";
CommSwitch=-1;
XTYXGr=new TMyGr;
XTYXCls=new TClsDraw;
XTYXGr->Image=Image1;
XTYXCls->Image=Image1;
Stream=fopen("c:
\\bysj\\lib\\bch.dat","rb");
fread(BchTbl,sizeof(BchTbl),1,Stream);
fclose(Stream);
SynFlag=false;
Comm1->StartComm();
}
2、画面显示模块
完成画面图形读入、显示、任务设定。
其代码片段如下:
void __fastcall TFrmMain:
:
menu_ZJXTClick(TObject *Sender)
{
CommSwitch=dtZJXT;
XTYXGr->Image->Canvas->Pen->Color=clWhite;
XTYXGr->Pointer=XTYXGr->Read_GrFile("c:
\\bysj\\lib\\jxt.gr");
if (XTYXGr->Pointer!
=0)
{ XTYXCls->ClearDraw();
XTYXGr->DisplayGr(); }
}
3、异常记录显示模块
将异常记录数据库与一显示表格对应起来,显示变位记录内容。
开关变位模块代码如下:
void __fastcall TFrmMain:
:
menu_KGBWClick(TObject *Sender)
{
CommSwitch=dtKGBWJL;
FrmXSBWJL->Show();
}
4、信息定义模块
定义遥测测点、遥信测点、电量测点的有关参数。
其中遥测定义子程序代码如下:
void __fastcall TFrmjk:
:
JYCDYKClick(TObject *Sender)
{
Table1->Close();
Table1->DatabaseName ="c:
\\bysj\\lib";
//定义数据库路径
Table1->TableName ="ycdef";
//定义数据库路文件名
Table1->TableType =ttDBase;
//定义数据库类型
Table1->FieldDefs->Clear();
//清除原数据字段
Table1->FieldDefs->Add("DH",ftWord,0,true);
Table1->FieldDefs->Add("Name",ftString,20,false);
Table1->FieldDefs->Add("XS",ftFloat,0,false);
Table1->FieldDefs->Add("BD",ftFloat,0,false);
Table1->FieldDefs->Add("Uplimt",ftFloat,0,false);
Table1->FieldDefs->Add("Downlimt",ftFloat,0,false);
Table1->FieldDefs->Add("JFD",ftInteger,0,false);
Table1->FieldDefs->Add("Data",ftFloat,0,false);
//定义各字段
Table1->IndexDefs->Clear();
//清除索引
TIndexOptions MyIndexOptions;
MyIndexOptions< //设置索引选项为唯一索引 Table1->IndexDefs->Add("IdxDH","DH",MyIndexOptions); //创建索引,索引名为IdxDH //MyIndexOptions>>ixUnique; //取消唯一索引选项 //Table1->IndexDefs->Add("IdxLB","LB",MyIndexOptions); Table1->CreateTable(); //创建数据库 //Table1->Active=true; Table1->Open(); //提示字段改为中文 Table1->FieldByName("DH")->DisplayLabel="点号"; Table1->FieldByName("Name")->DisplayLabel="名称"; Table1->FieldByName("XS")->DisplayLabel="系数"; Table1->FieldByName("BD")->DisplayLabel="满度值"; Table1->FieldByName("UpLimt")->DisplayLabel="上限"; Table1->FieldByName("DownLimt")->DisplayLabel="下限"; Table1->FieldByName("JFD")->DisplayLabel="积分点"; Table1->FieldByName("Data")->DisplayLabel="数据"; } 变电站实时监控系统模型(10) 5、作图模块 其基本思想是定义一个标绘图形库,记录图形的基本特征,以便于显示、编辑和检索。 图形类定义代码如下: class TMyGr { public: WORD Read_GrFile(char *Name); void Write_GrFile(char *Name); void DisplayGr(); void dispS00(int x,int y); void dispS01(int x,int y,int flag); void dispS02(int x,int y,int flag); TImage *Image; WORD Pointer; struct ELEMENT { struct { int Parts; } Attribute; union { struct { int x1,y1,x2,y2; int Width; Tcolor Color; } Line; struct { int x,y; Tcolor Color; Int Size; Char Name[20]; Char Code[STRLENTH+1]; } String; struct { int x,y; int Point,State; Tcolor Color; } S00; struct { int x,y; int Point,State; Tcolor Color; } S01; struct { int x,y; int Point,State; Tcolor Color; } S02; struct { int x,y; int Point,State; Tcolor Color; } Data; } Attr; } Element[RECORDLEN]; } WORD TMyGr: : Read_GrFile(char *Name) { FILE *Stream; //定义一个流 WORD len; Stream=fopen(Name,"rb"); //打开一个文件 if (Stream==NULL) len=0; else { len=(WORD)fread(Element,sizeof(Element)/RECORDLEN,RECORDLEN,Stream); fclose(Stream); } return(len); } void TMyGr: : Write_GrFile(char *Name) { FILE *Stream; WORD i; Stream=fopen(Name,"w+b"); if (Stream==NULL) return; for (i=0;i { if (Element[i].Attribute.Parts==NULLREC) continue; else fwrite(&Element[i],sizeof(Element)/RECORDLEN,1,Stream); } fclose(Stream); } void TMyGr: : DisplayGr() { WORD i; Image->Canvas->Pen->Mode=pmCopy; for (i=0;i { switch (Element[i].Attribute.Parts) { case NULLREC: break; case dtLINE: Image->Canvas->Pen->Color=Element[i].Attr.Line.Color; Image->Canvas->Pen->Width=Element[i].Attr.Line.Width; Image->Canvas->MoveTo(Element[i].Attr.Line.x1, Element[i].Attr.Line.y1); Image->Canvas->LineTo(Element[i].Attr.Line.x2, Element[i].Attr.Line.y2); break; case dtCHAR: Image->Canvas->Font->Size=Element[i].Attr.String.Size; Image->Canvas->Font->Color=Element[i].Attr.String.Color; Image->Canvas->Font->Name=Element[i].Attr.String.Name; Image->Canvas->TextOut(Element[i].Attr.String.x, Element[i].Attr.String.y, Element[i].Attr.String.Code); break; case dtS00: Image->Canvas->Pen->Color=Element[i].Attr.S00.Color; Image->Canvas->Pen->Width=1; dispS00(Element[i].Attr.S00.x,Element[i].Attr.S00.y); break; case dtS01: Image->Canvas->Pen->Color=Element[i].Attr.S01.Color; Image->Canvas->Pen->Width=1; dispS01(Element[i].Attr.S01.x,Element[i].Attr.S01.y,0); break; case dtS02: Image->Canvas->Pen->Color=Element[i].Attr.S02.Color; Image->Canvas->Pen->Width=1; dispS02(Element[i].Attr.S02.x,Element[i].Attr.S02.y,0); break; case dtDATA: break; default: break; } } } void TMyGr: : dispS00(int x,int y) { Image->Canvas->Ellipse(x-15,y-10,x+15,y+20); Image->Canvas->Pen->Color=clGreen; Image->Canvas->Ellipse(x-15,y+10,x+15,y+20+20); } void TMyGr: : dispS01(int x,int y,int flag) { if (flag==0) { Image->Canvas->Pen->Color=clGreen; Image->Canvas->Brush->Color=clRed; Image->Canvas->Rectangle(x-8,y-7,x+9,y+9); } else { Image->Canvas->Pen->Color=clRed; Image->Canvas->Brush->Color=clGreen; Image->Canvas->Rectangle(x-8,y-7,x+9,y+10); } Image->Canvas->Brush->Style=bsClear; } void TMyGr: : dispS02(int x,int y,int flag) { if (flag==0) { Image->Canvas->MoveTo(x,y-9); Image->Canvas->LineTo(x,y-2); Image->Canvas->MoveTo(x-8,y-2); Image->Canvas->LineTo(x+4,y-2); Image->Canvas->MoveTo(x+8,y-2); Image->Canvas->LineTo(x,y+6); Image->Canvas->LineTo(x,y+13); } else { Image->Canvas->MoveTo(x,y-9); Image->Canvas->LineTo(x,y+13); Image->Canvas->Brush->Color=clGreen; Image->Canvas->Pen->Color=clRed; Image->Canvas->Ellipse(x-4,y-4,x+5,y+5); Image->Canvas->Brush->Style=bsClear; } } 监控软件的领域体系结构 所谓领域体系结构,SanfFrancisco(itectSFo或Do)ain-SpecIfic software Architecture),显然是面向某个特定领域的体系结构。 与通用体系结构不同,领域体系结构与领域密切相关,建立在对领域业务逻辑规则的抽象和归纳的基础上。 鉴于领域Share Foundation Objects, SFOSF究和发展具有比较大的难度。 事实上,软件技术发展的历程也是寻求领域体系结构的历程。 尽管软件模型、设计模式和框架技术的发展为领域体系结构的发展奠定了技术基础,然而这只是领域体系结构建立的外因。 作为领域体系结构建立的内因——领域本身的业务逻辑的抽象及领域应用模型的建立,则是永恒变化和发展的。 因此,领域体系结构是一个动态的体系结构,必须伴随着通用体系结构(技术维度)的发展和领域应用(应用维度)的发展而发展。 同时,也需要提供扩展和二次开发的方法,以便适应应用发展的需要。 由于领域体系结构的特殊性,目前几乎没有具体的规范、标准或成熟产品。 相对成熟或可以称得上是领域体系结构的只有IBM的San Franci sco(简称SF 。 事实上,其本质是share Foundation Obj ects,sFO)o sF建立在对大量企业管理应用系统开发和应用实践的经验总结基础上,归纳和抽象了构成所有企业管理系统核心处理功能的公共特性的结构和应该支持的基本服务,建立了面向企业管理系统构造的一致性框架及一些通用服务功能组件接口。 例如,SF的总账组件(General Ledger)提供了一个BankAccount类,用以表达企业应用的银行账户业务实体,并封装了将银行账户的交易事务转换为各类记账凭证的业务处理逻辑。 SF采用层次化结构并建立在设计模式基础上。 (1)基础层(Foundation Layer)直接建立在Java虚拟机基础上,主要提供对分布式环境下组件对象创建和运行管理的各种基础服务支持,以便为上层的公共业务对象层、核心业务对象层以及领域专用的业务组件的构建建立基础。 基础层主要包括: 内核服务集[KernelServices,基于OMG的对象服务规范和Java的一些机制,主要提供分布式对象创建和运行管理的一些基础技术支持,包括对象请求代理( Object Request Broker)、事务服务(Transaction Services)、持久性服务(Persistence Services)、生命周期服务(Life Cycle Services)、并发服务(Concurrencxy Serxrices)、命名服务(Naming Services)、安全服务 包括业务对象类型(Basic Business Object Types)、集合(Collections)、事务支持(Transaction Support)、并发和锁支持(Concurrency and Locking Support)、持久性支持( Persistency Support)和对象生命周期和访问模式(Object Life-cycle and AccessModes)等]、图形用户界面框架(The Graphical User Interface Framework,基于MVC模式,提供开发SF应用的GUI需要的所有组件并维护界面和业务逻辑之间的交互关系)和实用工具集(Utilities,用于帮助应用部署和运行时管理,包括持久性存储配置、安全配置、模式映射、报告编辑与打印和冲突控制配置等)四个部分。 (2)公共业务对象层(Common Business Objects Layer)主要提供大部分业务环境中和业务过程中都会涉及的一些通用的业务对象和业务规则,以及与核心业务对象层业务对象交互的接口,还有一些通用的业务模式( Business Patterns)o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 变电站 实时 监控 系统 模型 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)