日志档案

发表于 2007-8-20 14:54:26

9

标签: scada delphi 调度 多线程 spcomm控件

基于Delphi的电力调度生产管理系统设计与实现

基于Delphi的电力调度生产管理系统设计与实现

李 娟

(华北电力大学能源与动力工程学院,河北保定071003)

摘要:介绍了电力调度生产管理系统的各个功能模块。对保障整个系统稳定运行的关键部分一SCADA模块的具体实现进行了详细介绍。详述了利用SPComm控件和多线程技术来对SCADA数据进行接收处理,以及对二次数据的处理等,保证了SCADA数据接收的实时性、准确性,以及整个系统的稳定运行。

关键词:调度:SCADA;多线程;DelphiSPComm控件

中图分类号:TP317 文献标识码:A

0 引 言

在开放的电力市场环境中,输电网络的拥塞管理是电网调度人员所面临的新课题。提出一种新的调度方法,并在此基础上,开发出能够真正方便地用于实现电力调度生产管理系统的应用软件,建立开放环境下的输电服务竞争机制,帮助解决网络拥塞问题,是电力企业安全生产的重要技术任务。伴随着电网规模的发展和电网的互联,电力系统调度任务由简单到复杂,由一级调度到多级调度,形成了集中或协调一致的分级管理体系。调度负责领导电力系统内发、输、变、配电设备的运行、操作和事故处理,以保证电力系统安全经济运行,向用户有计划地供应符合质量标准的电能。

本文以河北省高碑店电力公司电力调度生产管理系统的开发为例,介绍了电力调度系统的开发过程,以及其中所用到的一系列开发、应用技术。

整个系统按照功能主要分为4个模块:调度电网运行管理模块、调度电网方式管理模块、自动化系统管理模块、电网运行数据管理模块。

1 系统开发方案的选择

11 系统开发工具的选择

在本系统中,采用了Delphi来编写系统程序。Delphi是新一代可视化开发工具,它具有功能强大、简单易用和代码执行速度快等特点。同时,由于Delphi支持单机的dBase Paradox数据库和流行的关系数据库,如Oracle Sybase SQLServer等,因此最后形成的系统可以在单机、Netware网络文件共享方式CS条件下运行,从而扩大了系统的使用范围。

12 后台数据库的选择

本系统要存储的数据量比较大,因此采用大型的关系型数据库ORACLEORACLE数据库是一个通用的数据库系统,也是一个关系数据库、分布式数据库。

2 系统中SCDA模块的实现

调度系统实现的关键是对SCADA实时数据的接收处理,要求接收数据的准确性和实时性。下位机将各变电站上报的数据通过通信线传到串口服务器,串口服务器完成RS-232格式和以太网传输的IP包之间的数据转换,转换后的数据通过网络传送到调度服务器,调度服务器处理得到实时数据库、历史数据库信息,在此基础上,分析汇总得到二次数据库,为系统其他模块提供数据源。目前,利用Delphi实现串口通信常用的方法

3种弘:利用控件、使用API函数和调用其他串口通信程序。本系统用SPComm控件编写,利用多线程技术来实现对数据的接收处理。

21 多线程的实现

由于上行数据量大,同时要求实时性比较强,所以采用多线程技术编写这一模块的代码。系统中主线程用于接收数据:在打开每一个站的COM 口时便动态创建一个对应的数据处理线程,对接收过来的数据进行解包处理,将处理结果存入对应的数据表中;同时对各站保存的数据进行统计分析,生成可提供给其它模块使用的数据。程序中应用多线

程的结构说明如下:

constructor Tcom7ThreadCreate(Suspendboolean)//线程创建;

begin

inherited create(Suspend)

Freeonterminate=true//线程中止时自动清除线程对象;

selfOnTerminate=myTerminate//线程中止时触发

myTerminate事件;

//线程创建时动态创建控件的代码;

end; .

procedure Tcom7ThreadmyTerminate(SenderTObject)

begin

//添加释放动态创建的控件的代码;

inherited

end

procedure Teom7ThreadExecute

begin

while not terminated do

deal()//调用线程数据处理函数了;

end

procedure Tcom7Threaddeal()

Var

ReceivedStringstring;∥存放收到的串口数据字符串;

begin

//对接收到的串口数据进行解包处理,对此下文有相关程序说明;

bufferstrdeal(platidresaultnameReceiVedString)

end

22 串口数据的接收

数据接收部分在主线程中实现,SCADA串口数据的接收如图1所示(图1中显示为试验数据,并非现场数据),在SPCommCommReceiveData事件中编写。

点击看大图

SPComm 控件在程序中动态创建时设置好控件的相应的属性。创建部分代码如下:

index=DarrayAdd(TCommCreate(self))//动态创建SPComm控件;

with (Darray[index]as Tcomm) do

begin

Inx

XonXoffFlow=false//设置控件的相应属性;

(Darray[index]as Tcomm)OnReceiveData=form 1

CommReceiveData

end

//以下为串口数据接收部分代码;

SetLength(arrBufferLength)

move(Buffer PChar(arr)A BufferLength)

setlength(tempstr2 BufferLength)

BinToHex(PChar(arr)PChar(tempstr)BufferLength)

23 串口数据的分析处理

在数据接收线程运行的同时,数据处理线程时对接收到的数据进行处理,并将处理结果保存实时数据库,为二次数据的统计分析提供原始据。数据实时处理结果如图2所示(图中显示为验数据,并非现场数据)。本系统依据电力行业{7l环式远动规约对接收到的遥测、遥信、事件顺序录等数据进行解包处理。对遥测数据处理的部分沥

点击看大图

2 SCADA实时数据处理结果

程序如下:

funno=copy(hexinfoI2)

infoid=inttostr(HexStrTolnteger(funno) 2)//点号;

info table=getinfotable(platid)

strmodu strtocurr(getstrmodu(infotableinfoidfunctionname))//系数

//信息字中的b15位为0,表示数据有效

ifcopy(HexStrTobinstr(copy(hexinfo51))l1)=0then

begin

//信息字中的b140,表示数据没有溢出

ifcopy(HexStrTobinstr(copy(hexinfo51))21)=0then

begin

str=copy(hexinfo61)+copy(hexinfo32)

strcount=currToStr(strtoint(HexStrTointstr(str))strmodu)

end

//数据引擎用BDE,通过测试BDE连接OracleADO

快,且比较稳定;

QCmdClose

QCmdSQLClear

QCmdSQLAdd('insert into+resaultname+(iddotplat idframe_numfunctionnoInfo namecountdate time)values('+strid+’,’+infl0id+’,’+platid+’,+frameid++funnO++functionname++strcount+”’,’+strdate+))

//将处理结果写入实时数据库;

QCmdPrepared=true

QCmdClose

QCmdExecSQL

database cmdCommit

end

数据统计线程在每天的0点自动开始运行,对上一天的数据结果进行汇总分析,为各种报表提供数据,如日负荷统计表、分时段电压统计报表等;如果是在一个月或者是一年的第一天,还会对上月或上一年的数据自动进行汇总分析。

3 结论

本系统利用SPComm控件和多线程技术来对SCADA数据进行接收处理,并考虑了对二次数据处理等问题,保证了SCADA数据接收的实时性、准确性以及整个系统运行的稳定性。其应用对减轻技术人员的劳动强度、提高工作效率、保证电网的安全和经济运行都有重要意义。

参考文献:

1】张艳峰,张若锋.电力调度自动化SCADAEMS系统工程实践[J].高电压技术,200430(8)56-5767

2】韩靓.Delphi串口通信程序的开发[J].电光系统,2005(1)53-55

3】卢锦玲,栗然,刘艳,等.基于动态数据交换的地调操作票系统[J].华北电力大学学报,200229(2)25-27

4】余志伟,黄耀光,孟呖,等.基于专家系统和最优调度的输电拥塞管理研究[J].电力科学与工程,20030)I-4

5】刘文举.钱珞江,刘文先等.电网调度微机开票系统的研究与实践[J].电力科学与工程,2003(3)34-37

6】王明福,周振环.多线程技术及其在电脑游戏中的应用

[J].计算机工程与设计,200526(7)17751777

Design of Dispatch System of Electric Power management Based on Delphi

Li Juan

(School of Energy and Power EngineeringNorth China Electric Power University, Baoding 071003China)

AbstractThe function parts of the dispatch system in electric power management are introducedThe key parts of stable operationreceiving and processing of the SCADA data ale introduced in detailThe SPComm an d method of multi-threading are employed to process the receiving dataThe processing of the second data is discussedWith the method of multi·threadingthe data Can be received timely to ensure the stable operation of whole system

Key wordsdispatchSCADAMulti-threadingDelphiSPComm

 

系统分类: SCADA   |   用户分类: 无分类   |   来源: 整理

    阅读(568)    回复(0)