标签:
scada delphi 调度 多线程 spcomm控件
基于Delphi的电力调度生产管理系统设计与实现
李 娟
(华北电力大学能源与动力工程学院,河北保定071003)
摘要:介绍了电力调度生产管理系统的各个功能模块。对保障整个系统稳定运行的关键部分一SCADA模块的具体实现进行了详细介绍。详述了利用SPComm控件和多线程技术来对SCADA数据进行接收处理,以及对二次数据的处理等,保证了SCADA数据接收的实时性、准确性,以及整个系统的稳定运行。
关键词:调度:SCADA;多线程;Delphi;SPComm控件
中图分类号:TP317 文献标识码:A
0 引 言
在开放的电力市场环境中,输电网络的拥塞管理是电网调度人员所面临的新课题。提出一种新的调度方法,并在此基础上,开发出能够真正方便地用于实现电力调度生产管理系统的应用软件,建立开放环境下的输电服务竞争机制,帮助解决网络拥塞问题,是电力企业安全生产的重要技术任务。伴随着电网规模的发展和电网的互联,电力系统调度任务由简单到复杂,由一级调度到多级调度,形成了集中或协调一致的分级管理体系。调度负责领导电力系统内发、输、变、配电设备的运行、操作和事故处理,以保证电力系统安全经济运行,向用户有计划地供应符合质量标准的电能。
本文以河北省高碑店电力公司电力调度生产管理系统的开发为例,介绍了电力调度系统的开发过程,以及其中所用到的一系列开发、应用技术。
整个系统按照功能主要分为4个模块⋯:调度电网运行管理模块、调度电网方式管理模块、自动化系统管理模块、电网运行数据管理模块。
1 系统开发方案的选择
1.1 系统开发工具的选择
在本系统中,采用了Delphi来编写系统程序。Delphi是新一代可视化开发工具,它具有功能强大、简单易用和代码执行速度快等特点。同时,由于Delphi支持单机的dBase, Paradox数据库和流行的关系数据库,如Oracle, Sybase, SQLServer等,因此最后形成的系统可以在单机、Netware网络文件共享方式C/S条件下运行,从而扩大了系统的使用范围。
1.2 后台数据库的选择
本系统要存储的数据量比较大,因此采用大型的关系型数据库ORACLE。ORACLE数据库是一个通用的数据库系统,也是一个关系数据库、分布式数据库。
2 系统中SCDA模块的实现
调度系统实现的关键是对SCADA实时数据的接收处理,要求接收数据的准确性和实时性。下位机将各变电站上报的数据通过通信线传到串口服务器,串口服务器完成RS-232格式和以太网传输的IP包之间的数据转换,转换后的数据通过网络传送到调度服务器,调度服务器处理得到实时数据库、历史数据库信息,在此基础上,分析汇总得到二次数据库,为系统其他模块提供数据源。目前,利用Delphi实现串口通信常用的方法
有3种弘:利用控件、使用API函数和调用其他串口通信程序。本系统用SPComm控件编写,利用多线程技术来实现对数据的接收处理。
2.1 多线程的实现
由于上行数据量大,同时要求实时性比较强,所以采用多线程技术编写这一模块的代码。系统中主线程用于接收数据:在打开每一个站的COM 口时便动态创建一个对应的数据处理线程,对接收过来的数据进行解包处理,将处理结果存入对应的数据表中;同时对各站保存的数据进行统计分析,生成可提供给其它模块使用的数据。程序中应用多线
程的结构说明如下:
constructor Tcom7Thread.Create(Suspend:boolean);//线程创建;
begin
inherited create(Suspend);
Freeonterminate:=true;//线程中止时自动清除线程对象;
self.OnTerminate:=myTerminate;//线程中止时触发
myTerminate事件;
⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ //线程创建时动态创建控件的代码;
end; .
procedure Tcom7Thread.myTerminate(Sender:TObject);
begin
⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ //添加释放动态创建的控件的代码;
inherited;
end;
procedure Teom7Thread.Execute;
begin
while not terminated do
deal();//调用线程数据处理函数了;
end;
procedure Tcom7Thread.deal();
Var
ReceivedString:string;∥存放收到的串口数据字符串;
begin
//对接收到的串口数据进行解包处理,对此下文有相关程序说明;
bufferstrdeal(platid,resault—name,ReceiVedString);
end;
2.2 串口数据的接收
数据接收部分在主线程中实现,SCADA串口数据的接收如图1所示(图1中显示为试验数据,并非现场数据),在SPComm的CommReceiveData事件中编写。

SPComm 控件在程序中动态创建时设置好控件的相应的属性。创建部分代码如下:
index:=Darray.Add(TComm.Create(self));//动态创建SPComm控件;
with (Darray[index]as Tcomm) do
begin
Inx
— XonXoffFlow:=false;//设置控件的相应属性;
(Darray[index]as Tcomm).OnReceiveData:=form 1
CommReceiveData;
end
//以下为串口数据接收部分代码;
SetLength(arr,BufferLength);
一 move(Buffer ,PChar(arr)A BufferLength);
setlength(tempstr.2 BufferLength);
BinToHex(PChar(arr),PChar(tempstr),BufferLength)
2.3 串口数据的分析处理
在数据接收线程运行的同时,数据处理线程时对接收到的数据进行处理,并将处理结果保存实时数据库,为二次数据的统计分析提供原始据。数据实时处理结果如图2所示(图中显示为验数据,并非现场数据)。本系统依据电力行业{7l环式远动规约对接收到的遥测、遥信、事件顺序录等数据进行解包处理。对遥测数据处理的部分沥

图2 SCADA实时数据处理结果
程序如下:
funno:=copy(hexinfo,I,2);
infoid:=inttostr(HexStrTolnteger(funno) 2); //点号;
info~ table:=getinfotable(platid);
strmodu: strtocurr(getstrmodu(info—table,infoid,functionname));//系数
//信息字中的b15位为0,表示数据有效
ifcopy(HexStrTobinstr(copy(hexinfo,5,1)),l,1)=’0’then
begin
//信息字中的b14位0,表示数据没有溢出
ifcopy(HexStrTobinstr(copy(hexinfo,5,1)),2,1)=’0。then
begin
str:=copy(hexinfo,6,1)+copy(hexinfo,3,2);
strcount:=currToStr(strtoint(HexStrTointstr(str))strmodu);
end
//数据引擎用BDE,通过测试BDE连接Oracle比ADO
快,且比较稳定;
QCmd.Close;
QCmd.SQL.Clear;
QCmd.SQL.Add('insert into’+resaultname+’(id,dot,plat id,frame_num,function—no,Info name,count,date— time)values('+strid+’,’+infl0id+’,’+platid+’,⋯+frameid+⋯,⋯+funnO+⋯,⋯+functionname+⋯, ⋯+strcount+”’,’+strdate+’)’);
//将处理结果写入实时数据库;
QCmd.Prepared:=true;
QCmd.Close;
QCmd.ExecSQL;
database cmd.Commit;
end;
数据统计线程在每天的0点自动开始运行,对上一天的数据结果进行汇总分析,为各种报表提供数据,如日负荷统计表、分时段电压统计报表等;如果是在一个月或者是一年的第一天,还会对上月或上一年的数据自动进行汇总分析。
3 结论
本系统利用SPComm控件和多线程技术来对SCADA数据进行接收处理,并考虑了对二次数据处理等问题,保证了SCADA数据接收的实时性、准确性以及整个系统运行的稳定性。其应用对减轻技术人员的劳动强度、提高工作效率、保证电网的安全和经济运行都有重要意义。
参考文献:
【1】张艳峰,张若锋.电力调度自动化SCADA/EMS系统工程实践[J].高电压技术,2004,30(8):56-57,67.
【2】韩靓.Delphi串口通信程序的开发[J].电光系统,2005(1):53-55.
【3】卢锦玲,栗然,刘艳,等.基于动态数据交换的地调操作票系统[J].华北电力大学学报,2002,29(2):25-27.
【4】余志伟,黄耀光,孟呖,等.基于专家系统和最优调度的输电拥塞管理研究[J].电力科学与工程,2003,0):I-4.
【5】刘文举.钱珞江,刘文先等.电网调度微机开票系统的研究与实践[J].电力科学与工程,2003,(3):34-37.
【6】王明福,周振环.多线程技术及其在电脑游戏中的应用
[J].计算机工程与设计,2005,26(7):1775—1777.
Design of Dispatch System of Electric Power management Based on Delphi
Li Juan
(School of Energy and Power Engineering,North China Electric Power University, Baoding 071003,China)
Abstract:The function parts of the dispatch system in electric power management are introduced.The key parts of stable operation,receiving and processing of the SCADA data ale introduced in detail.The SPComm an d method of multi-threading are employed to process the receiving data.The processing of the second data is discussed.With the method of multi·threading,the data Can be received timely to ensure the stable operation of whole system.
Key words:dispatch;SCADA;Multi-threading;Delphi;SPComm
系统分类:
SCADA | 用户分类:
无分类 | 来源:
整理