一种电力规约转换装置进程间通信优化方法
2016-09-06张航王振岳韩冬王爽刘婧孜
张航,王振岳,韩冬,王爽,刘婧孜
(1.许继集团有限公司,河南 许昌 461000; 2.华北水利水电大学 电力学院,郑州 450045)
一种电力规约转换装置进程间通信优化方法
张航1,王振岳1,韩冬1,王爽2,刘婧孜2
(1.许继集团有限公司,河南 许昌461000; 2.华北水利水电大学 电力学院,郑州450045)
通过阐述传统电力规约转换方式存在的问题,提出了一种基于嵌入式操作系统的电力规约转换装置进程间通信优化方法,介绍了其消息结构和消息处理逻辑,并分析了优化系统的优越性。该方法解决了嵌入式操作系统在多进程间通信情况下,常规共享内存消息传递机制所存在的无用消息重复传递、消息处理效率不高的问题。
嵌入式;进程;通信;电力规约转换
0 引言
变电站自动化系统主要由保护系统、状态监测系统、“五防”系统、交直流供电系统、智能一次系统等多个子系统组成[1],随着智能电网的快速建设,接入变电站自动化系统的智能子系统越来越多,各子系统普遍采用不同规约、不同网络通信方式的智能装置[2]。为了增加不同规约设备间的互操作性和兼容性,通常采用嵌入式计算机来实现规约转换[3]。常规嵌入式计算机主要利用管道、先入先出队列(FIFO)、消息队列、域间套接字及共享内存等技术手段进行内部数据的交互与传递[4],由于共享内存具备简单、灵活、访问效率高、数据量不受限制的特点,在嵌入式计算机进程间通信中得到了广泛应用[5]。
随着接入子系统的增加,需要规约转换的智能设备数量呈几何式增长,出现大量多对多复杂规约转换的应用场景,造成通道进程间消息数量激增,很多本进程不需要的信息也被传递,从而引起互斥同步操作过于频繁,数据交换效率低下,尤其是在20个以上通道进程互斥访问共享内存的情况下,如何使数据交换更高效,成为一个亟待解决的课题。
1 传统方式存在的问题
利用共享内存的消息机制解决嵌入式计算机作为通信管理机时通信接口间相互转换的问题,一般由1个优先进程建立共享内存空间,进行消息通信并管理,其余通道访问、读取和写入共享内存以实现信息传递。为保证信息交互过程的同步性和数据的可靠性,通过信号量实现共享内存的互斥访问,防止共享内存读写失步,造成数据错误。
这种方案没有考虑多进程通信在数据同步方面的时间损耗。由于每个进程在访问共享内存时都需要经历等待、锁定、操作、释放的过程,原本效率较高的共享内存消息机制在多通道通信模式下效率大幅下降,在突然出现网络风暴时,通信处理延时较长,甚至会中断。因此,这种技术只适用于少量或单一设备规约转换的通信场合。
2 优化进程间通信的方法
首先由管理进程依据测点配置文件创建实时内存库,包括参数共享内存和实时数据库共享内存,然后管理进程读取系统通道设备配置文件,确定系统的设备运行状态、设备接口数量、设备数量等信息,采用不同特征值建立特征消息结构体,最后启动若干设备通信进程,进入规约转换工作状态。实时内存库读写操作由管理进程负责实现,每个通信进程都有自己独立的消息处理队列。
通道进程只对各自的消息队列进行读取操作以获得自身需要处理的信息,并将需要与其他进程交互的消息写入管理进程消息队列;管理进程从管理消息队列中读取消息进行实时处理,并将结果根据消息特征发送到不同的通信消息队列中。消息机制如图1所示。
图1 消息机制
2.1消息结构
消息队列共享内存单元由管理进程消息内存空间和通道进程消息内存空间2个独立的部分组成,其结构如图2所示。
管理进程消息内存空间用于存储管理进程需要处理的消息队列信息,建立独立的索引身份标志号(ID),内存读、写指针,采用独立的信号量控制同步。
通道进程消息内存空间用于交互通信进程的消息队列,所有通信进程采用1个公用的信号量来控制同步,每个通信进程具有1个独立特征值标志的消息队列,各消息队列均采用相同的消息结构体,所述消息结构体包括3个部分:读寄存器序号,写寄存器序号,消息队列空间。
图2 消息队列结构
2.2消息处理逻辑
在整个通信转换过程中,管理进程按照FIFO的方式读取管理消息并检测未处理管理消息量是否为零:如果是,结束本次处理过程;否则,作如下判断。若是管理进程自身操作的消息,根据要求处理并继续读取剩余消息;若是其他进程的消息,根据所属映射,将其写入通道进程相应标识的通道消息队列,循环直至完成所有消息的读取操作。
对于通道进程,标明消息数量的读指针、写指针采用循环指针,如果所属通道消息写指针加1后与读指针重叠,则将消息读指针加1,舍弃相应消息数据,同时上送消息溢出异常信号。通道进程消息处理过程与管理进程类似,不同点在于通道进程从各自独有的消息内存中读取消息,向管理进程消息内存中写入交互消息。
3 系统优越性分析
(1)通过建立不同的消息队列,建立一种单向的消息读取和写入模式,每个进程间的通信均采用写入管理消息队列,读取自身特征值标示的消息队列方式。通过以上步骤,可以解决较多进程下的共享内存访问瓶颈,满足嵌入式系统在多进程通信情况下对通信效率的要求。
(2)管理进程采用读取管理消息队列并写入相应特征值通道进程的方式进行操作。通过此种操作方式,可以有序地进行消息读取、写入,减少公共信息处理次数,减少非必要信息写入、读取操作次数。同时在管理进程处理过程中,可以便捷地增加管理消息内容,便于进程运行状态监视和控制。
(3)在消息读取过程中,采用一次操作读取多个消息的方式,可以减少对消息队列的操作次数,减少各进程在消息处理过程中的排队时间,也可以与异步通信方式结合,将高速的中央处理器(CPU)和低速通信设备有序结合,综合提高设备通信效率。
4 结束语
本文提出的基于嵌入式操作系统的电力规约转换装置进程间通信优化的方法,能够建立更加有效的消息传递机制,降低消息传递过程中出现的消息重复问题,提高消息处理效率,提高设备整体性能,实现进程间消息处理与通信接口之间的快速联系。基于本文设计思想的规约转换装置在220 kV及以下电压等级常规变电站已经大量应用。
后续改造可以在此基础上优化信号数量,建立批量分类化的消息访问机制,以便适应更大规模的信息处理。该技术同时可以应用到其他嵌入式系统环境,充分发挥嵌入式系统多进程运行、高效率的协同特点。
[1]陈杰,杜伟春,王振岳,等.基于嵌入式技术的工业通信管理机的开发及应用[J].电力系统保护与控制, 2010, 38(11):113-116.
[2]远动设备及系统:第5部分 数据传输规约: DL/T 719—2000[S].
[3]张艳林,李慧勇,李绍滋. 基于编译器的通信规约自动解析研究[J].电力系统保护与控制, 2010, 38(2):101-105.
[4]理查德·史蒂文斯,拉戈. UNIX 环境高级编程[M].尤晋元,张亚英,戚正伟,译. 北京:人民邮电出版社,2006.
[5]蒋湘涛, 贺建飚, 李楠. 电力信息采集的通用型通信规约解析系统研究与设计[J].电力系统保护与控制, 2012, 40(9): 118-122.
(本文责编:弋洋)
2016-01-07;
2016-06-11
TM 769
B
1674-1951(2016)06-0058-02
张航(1979—),男,河南许昌人,工程师,从事电力系统自动化方面的工作(E-mail:33809750@qq.com)。
王振岳(1979—),男,河南平顶山人,高级工程师,从事电力系统自动化相关研究。
韩冬(1976—),男,吉林吉林人,工程师,从事电力系统自动化相关研究。