ACE网络库及IOCP通讯模式在电力系统机房监控中的应用

来源 :科协论坛·下半月 | 被引量 : 0次 | 上传用户:huangxiaojuan
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:近年来电力系统的机房动力环境监控系统的应用范围不断扩展,系统规模迅速扩大,接入站点大量增加,对监控主站的软件硬件提出了更高的要求。介绍在监控主站升级改造中,运用的新一代网络通讯解决方案与策略,探讨ACE网络库及IOCP通讯模式在通讯软件中的应用。
  关键词:ACE网络库 IOCP模式 动环监控系统
  中图分类号:TM76 文献标识码:A 文章编号:1007-3973(2013)006-081-02
  在电力系统大运行体系实施中,建设变电站及通信机房监控系统,在传统“四遥”的基础上,安装包含交直流电源子系统、遥视图像子系统、安防周界子系统、环境子系统、照明子系统等综合辅助监控系统,全面提升对变电站机房的“感知”, 减轻运行维护人员负担,提高电网运行可靠性成为一种必须。
  在机房环境系统建设的初期,接入对象主要是电力局大楼的机房、500kV220kV高电压等级变电站机房。接入的站点数量较少,一般在10个以下,通讯对象也只有几十个。近几年,随着电力系统自动化程度不断提高,大量110kV及以下的变电站,都实现了无人值班,在变电站机房的自动化设备大量增加的同时,操作维护人员大量减少。另外,大量的社区或乡镇供电所实现网络接入,联网收费。大量的110kV及以下的变电站、社区或乡镇供电所都需要接入集中的机房监控系统,接入的站点数量和通讯对象几何倍数增加,很多地区供电局的机房监控系统接入站点需求量达到200个以上,通讯对象超过1000个。
  通讯对象的几何倍数增加对动环监控系统的通讯服务器提出了极高的要求。是对现有服务器系统进行软件升级,还是投入巨资升级硬件、增加服务器数量?成为各电力局安排建设资金面临的重要问题。
  机房监控系统的通信服务器的主要工作就是进行网络通讯。目前常用的网络通讯编程模型有以下几种:
  (1)blocking I/O阻塞模式:与通讯对象网络连接时,在连接过程中一直等待,效率极低。只要有多个通讯对象就不能有效的工作了。
  (2)nonblocking I/O非阻塞模式:与通讯对象网络连接时,在启动连接后,就可以进行其它工作,效率较高。但每个网络连接工作中仍需一到两个线程,因此连接数达到几十上百后,大量线程经常切换,效率大幅下降。
  (3)Select模式(I/O multiplexing):一个线程可以管理64个网络连接。此模式在达到1000个以上的网络连接后,也会由于线程太多,效率大幅下降。
  (4)signal driven I/O (SIGIO):只有UNIX系统支持。我们暂不考虑。
  (5)asynchronous I/O模式(IOCP模式是其中一种):一个线程可以管理成千上万个网络连接。在多连接,大数据量下,可获得理想的CPU响应。此模式适应于网络服务器这类需要处理大量连接的应用。
  图1是以上五种模型的比较。
  图1 五种模型的比较
  从图1可以看出,越往后,阻塞越少,理论上效率也是最优。
  从机房环境系统的长远发展看,我们选取asynchronous I/O(IOCP)模式进行网络通讯编程。为提高系统建设进度,少走弯路,我们采取借鉴前人成功经验的方式,下载国内外程序员的开源代码库加以修改。
  ACE自适配通信环境(Adaptive Communication Environment)是一种面向对象(OO)的工具包,它实现了通信软件的大量基本的设计模式。ACE的目标用户是在UNIX和Win32平台上开发 高性能通信服务和应用的开发者。ACE简化了使用进程间通信、事件多路分离、显式动态链接和并发的OO网络应用和服务的开发。
  ACE是目前最具代表的开源网络通讯类软件库,授权是免费的,可以自由使用,它正在被用于大量商业项目中(包括国际知名的大公司:诺基亚、摩托罗拉等),以及许多学院和工业研究项目。ACE已被移植到多种操作系统平台上,包括Win32和大多数的UNIX/POSIX实现。此外,同时有C++和Java版本的ACE可用。
  ACE库版本很多,更新升级比较快。我们根据机房环境监控系统的需要,选用的是基于VC2005的Windows平台版本,版本号为5.8.2,这个版本的库支持VC2005(VC8)、WinCE(VC2005)、VC2008(VC9),适用范围比较宽。
  ACE 中的Proactor框架可以实现IOCP功能。Proactor很多文档翻译为前摄器。
  Proactor使用了异步的I/O工厂类收发消息,read/write方法都是异步进行的,调用完成后立即返回给Proactor主框架,然后进行其它事件的处理。后台的程序负责收发消息,真正收到消息或者发送消息完成时才通知Proactor的事件处理器去进行处理。这种异步I/O机制使得Proactor的主线程更专注于我们业务逻辑的处理,而不会将时间浪费在对网络数据I/O的处理上。
  我们应用ACE库,通过ACE_Proactor实现IOCP模式的实现方式如下:
  1 创建服务处理器
  Proactor框架中服务处理器均派生自ACE_Service_Handler,它和Reactor框架的事件处理器非常类似。当发生IO操作完成事件时,会触发相应的事件完成会调函数。
  2 实现服务处理器IO操作
  Proactor框架中所有的IO操作都由相应的异步操作类来完成,这些异步操作类都继承自ACE_Asynch_Operation。常用的有以下几种:
  ACE_Asynch_Read_Stream, 提供从TCP/IP socket连接中进行异步读操作.
  ACE_Asynch_Write_Stream, 提供从TCP/IP socket连接中进行异步写操作.   使用这些操作类的一般方式如下:
  初始化
  将相关的操作注册到服务处理器中,一般可通过调用其open方法实现。
  发出IO操作
  发出异步IO操作请求,该操作不会阻塞,具体的IO操作过程由操作系统异步完成。
  IO操作完成回调处理
  异步IO操作完成后,OS会触发服务处理器中的相应回调函数,可通过该函数的ACE_Asynch_Result参数获取相应的返回值。
  3 使用连接器或接受器和远端进行连接
  ACE为Proactor框架提供了两个工厂类来建立TCP/IP连接。
  ACE_Asynch_Acceptor, 用于被动地建立连接
  ACE_Asynch_Connector 用于主动地建立连接
  当远端连接建立时,连接器或接受器便会创建相应的服务处理器,从而可以实现服务处理。
  4 启动Proactor事件分发处理
  启动事件分发处理只需如下调用:
  while(true)
  ACE_Proactor::instance ()->handle_events ();
  ACE库(见图2)应用中需要特别注意内存泄漏问题,特别是与VC的MFC联合使用时。我们采用的是以下方式检测内存泄漏:
  (1)将下列内容输入到文件中:
  //use MFC library
  #define ACE_HAS_MFC 1
  //use standard C++ library
  #define ACE_HAS_STANDARD_CPP_LIBRARY 1
  //define this, the application must create the ACE_Object_Manager.
  //The recommended way is to call at the start of
  //the program, and call at the end.
  #define ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER
  #include "ace/config-win32.h"
  (2)在CWinApp的派生类的构造函数或InitInstance()函数中加入ACE的初始化函数ACE::init(),在该派生类的析构函数中加入ACE的清理函数ACE::fini()。
  (3)若运行时还检测到有内存泄漏,其输出信息如下:
  Detected memory leaks!
  Dumping objects ->
  {148} normal block at 0x003EBD90, 6 bytes long.
  Data: < > 00 00 00 00 00 00
  {61} client block at 0x003E3298, subtype c0, 64 bytes long.
  a CDynLinkLibrary object at $003E3298, 64 bytes long
  a CDynLinkLibrary object at $003E3298, 64 bytes long
  Object dump complete.
  这种现象一般是由于ACE库和应用程序的字符集不一致所造成的,ACE在VS2005项目选项中的字符集设置是“未设置”,可将其设成“使用Unicode字符集”(注:VS2005默认的字符集设置是“使用Unicode字符集”)
  (4)几点说明:
  1)ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER
  应用程序手动创建ACE_Object_Manager,推荐的方式是在程序开始时调用ACE::init(),在结束时调用ACE::fini()。
  2)若在文件中包括了config-win32.h之后加入以下语句
  #undef ACE_HAS_NONSTATIC_OBJECT_MANAGER
  说明应用程序要使用静态的对象管理器,ACE会为其创建,应用程序无需手动加入。
  3)在Win32平台,ACE默认使用非静态的对象管理器,这个对象会被分配在main()函数的stack里;因main()函数已经在MFC类库里定义, 故ACE不能使用默认的方法,可以按2)所说的使用静态的对象管理器,或者按前面所说的自己定义ACE的初始化函数。
  采用IOCP模式与ACE库后,现有的机房环境监控系统主站设备不需要新增昂贵的高性能服务器进行大规模升级改造,可在现有硬件上通过软件升级,实现大量站点、大量通讯对象的接入。同时可节省大量的建设经费和人力物力投入。
其他文献
摘 要:结合工程实例,介绍SR防渗材料在混凝土面板堆石坝接缝中的应用,为新型防渗材料在工程中的应用提供经验。  关键词:SR 防渗材料 面板坝 应用  中图分类号:TV223.4 文献标识码:A 文章编号:1007-3973(2013)006-028-03  1 工程概况  宁波溪口抽水蓄能电站位于浙江省奉化市溪口镇西北部,枢纽建筑物主要由上水库、下水库、输水系统、发电厂房和升压开关站等组成。电站
摘 要:在总结输电线路故障评判标准的基础上,针对影响电网可靠运行的雷击故障、污闪故障、微风振动故障等线路故障,从事故现象、形成原因、故障特点、危害等方面入手,分析各类故障的防范措施,对于输电线路的安全可靠运行具有积极的现实意义。  关键词:输电 安全 故障 防范  中图分类号:TM732 文献标识码:A 文章编号:1007-3973(2013)006-035-02  1 线路故障及评判标准  线路
摘 要:火力发电厂中,输送带做为燃料的输送媒介,起着非常重要的作用,同时输送带的粘接检修也困扰着各个发电厂输送带的应用,虽然目前输送带的热硫化粘接能使输送带得到更好的运行,但是复杂的粘接工艺,使很多电厂宁愿选择冷粘接来暂时保障输送带的运行。其实,只要方法得当,粘接工艺标准,冷粘接也可以达到很好的效果,来延长输送带的使用寿命,以保障输送带的运行。  关键词:输送带 粘接 寿命 伸缩量 修补剂 固化 
摘 要:传统的单机器人难以适应复杂的任务以及灵活多变的环境,因此多机器人的研究受到越来越多的关注。结合多线程技术为机器人编队建立Petri网模型,运用Petri网模型对系统各线程对共享区资源的独占性存取,线程之间同步协作进行模拟分析,提出机器人编队的多线程软件解决方案。  关键词:机器人编队 多线程技术 Petri网 解决方案  中图分类号:TP242 文献标识码:A 文章编号:1007-3973
摘 要:对国内干式变压器的发展情况作简要回顾,分析目前产品的结构,结合当前国家对产品的节能和环保的要求提出看法和建议,最后对干式变压器经济运行作展望。  关键词:干式变压器 环氧浇注式 结构特点 发展方向  中图分类号:TM4 文献标识码:A 文章编号:1007-3973(2013)006-057-02  1 前言  干式变压器在国内得到迅速发展,时间要追朔到20世纪80年代末90年代初,许多变压
摘 要:田湾核电站3、4号机组主仪控系统负责电站90%工艺设备的控制和调节,主仪控系统作为电站的“神经”上传、下达所有指令,并作为“五官”向操作员提供直观的信息,为电站安全、稳定运行保驾护航。该系统设计的优劣将直接影响到机组的安全性、负荷因子和稳定性。而仪控系统设计的前提是及时收到完整、准确的工艺系统输入数据。鉴于目前数字化仪控项目执行经验,仪控系统设计输入数据的完整性、准确性、及时性,已经成为制
摘 要:介绍车载多媒体中手机与车载多媒体互连的发展状况和市场情况,分析目前很多厂商车载多媒体手机互连的设计方案。阐述基于HTML5的Web App的优点及关键技术。进一步在Android操作系统框架下,基于HTML5网页技术实现手机与车载多媒体设备的互连。手机内应用程序可以映射到车载多媒体屏幕上,进一步增强了互动性,并有效减少开发成本,使得HTML5被广泛认为是最重要的手机-车机互连的新技术之一。
摘 要:测井深度测量是石油测井中最重要的参数之一,它对测井安全、测井解释、油气田后期开发有着重要的作用。为了实现标准化管理,统一测井资料深度的准确性,为此,建立“延标一井”,它的建立为延长油田勘探开发区域内测井深度的一致性提供保障。  关键词:延标一井 深度校正 套管节箍深度 深度记号  中图分类号:TE24 文献标识码:A 文章编号:1007-3973(2013)006-058-02  1 “延
摘 要:介绍铝电解槽电压降低后容易引起极距的降低,而极距降低后容易引起电流效率的降低,指出在低电压下应通过优化电解质成分、降低铁碳压降、降低炉底压降保持较高的极距;同时在极距相对稳定后,电流效率的提高应以保持低过热度为突破口,而铝水平、分子比、氧化铝浓度三项技术参数对电解槽过热度影响最大,合理分子比的确定、合理铝水平的确定、提高氧化铝浓度的合格率是保持低过热度的关键因素。  关键词:低电压 低极距
摘 要:某1000m3高炉内燃式热风炉内衬出现问题,拟对其进行改造。通过对改造方案、布置形式、热风炉形式、燃烧器等几方面进行分析对比,综合考虑投资、占地、生产操作、检修维护、对生产的影响、不利因素等方面的情况,最终优选方案为:新增一座内燃式热风炉,采用“一列式”布置,对原有两座热风炉内衬进行改造,燃烧器采用矩形燃烧器。同时对现有内燃式热风炉的砌筑结构、耐火材料材质等方面做了改进,增强隔墙的稳定性。