文献标识码:A
DOI:10.16157/j.issn.0258-7998.179022
中文引用格式:张湾,张华,郭肖旺,等. 基于工控网络拓扑结构的可视化分层方法[J].电子技术应用,2017,43(12):85-88.
英文引用格式:Zhang Wan,Zhang Hua,Guo Xiaowang,et al. Visualization hierarchical method based on industrial network Topology[J].Application of Electronic Technique,2017,43(12):85-88.
0 引言
随着国产可编程逻辑控制器(Programming Logical Controller,PLC)的研究取得了丰硕的成果,组态软件也有了蓬勃发展[1]。组态软件在自动控制系统中是处于监控层一级的软件平台和开发环境[2],具有快速灵活地提供构建工业自动控制系统监控和配置的功能。图形子系统是组态软件中非常重要的一个系统,组态拓扑结构的存储、应用、分析、显示是图形子系统重要的一部分,拓扑结构的可视化也显得日趋重要。
拓扑结构的研究已经受到计算机、物理、数学等多个领域的重视,广泛应用于交通、网络、电力等方面[3-6]。目前已经形成了很多完善的拓扑发现、拓扑生成、拓扑优化算法。针对复杂网络拓扑的可视化,张畅等人提出一种NECB压缩算法,并应用FR算法进行点布局[7];肖群健等提出了基于SNMP协议,使用MIBs数据的拓扑发现算法,该算法具有更好的稳定性,运算简单,获得的网络拓扑图更加准确,具有很强的可操作性[8];刘金明、万明祥提出了一种基于FR[9]的分层算法——DHL算法,很好地解决了Internet网络拓扑中路由级拓扑分层显示的问题,DHL算法可以多层递归,适用于所有节点对等级的网络[10];VATHY-FOGARASSY A和WERNER-STARK A等人提出了一种拓扑的量化和低维可视化算法[11],这些算法按照通信协议分别从网络层和物理层进行拓扑结构的发现、分析、生成、可视化等算法的研究。在工业控制领域,由于网关模块、IO模块、耦合模块等的特性不同,整个设备系统组成的拓扑结构中的节点可以被分成几种不同的类别,形成一个节点不对等的网络拓扑。然而,针对结点不对等的网络拓扑结构的可视化研究尚未引起足够的关注。
本文以自主研发的PLC为硬件依托,针对复杂工控网络拓扑结构的可视化问题,提出一种合理的方案对网络拓扑进行分层,合理去除了环状结构,将大数据划分为小数据,降低图形子系统的显示复杂度。以关键度为标准实现关键节点网络压力的预警,提高工业控制网络的健壮性。
1 组态软件概述
组态的含义是配置、设置、设定等意思,是指用户通过类似“搭积木”的方式来完成自己所需要的软件功能,而不需要编写计算机程序。典型的监控系统主要包括管理层、监控层、控制层、工业现场四个部分,其中组态软件用于管理层和监控层。组态软件主要完成现场数据收集处理、远程监控、控制命令转发等工作,以及数据的接收处理、监控界面刷新、历史数据保存等[12]。
PLC网络控制系统的连接图如图1所示,组态软件存于PC,通过网1和主站按照自定义的网络协议进行通信,将PC端配置的所有数据信息发送给主站,由主站将这些数据按照存储地址偏移值及长度搬到CPU的共享内存中,CPU通过共享内存区域与从站设备,例如AI、AO、DI、DO、网关模块进行数据交互。网关模块可以转变网络的通信协议,图1中网2按照相应的通信协议完成了网关模块与其从站设备的数据交互。同时,组态软件会分析由主站返回来的数据信息,进行在线的实时显示。组态软件中显示连接关系应该与控制系统的实际连接相匹配,例如,每一个AI对应组态画面中的一个AI模块图形,每个物理设备都应在组态软件中,并且能够在组态界面中找到一个模块图形与之对应。
由于总线和可扩展设备的存在,一个网络中可以连接多个总线,每个总线又可以分别连接很多设备,同时大多数设备(例如网关模块)可以挂载自己的子设备,这样整个控制系统的设备连接就形成了一个复杂的拓扑结构。设备的物理连接是一种三维物体的存在形式,如何将这些三维物体的连接清晰明了地映射到二维空间中显示在组态软件中成为拓扑结构可视化的重点。本文使用分层的方法将二维的显示扩展到三维空间,添加分层层次为第三维数据。
2 组态拓扑设计
网络拓扑结构主要有总线型、星型、环型、树型、网状和混合型。本文采用以上类型都能转化的树型结构为数据存储方式。
2.1 拓扑数据结构
在组态软件中的拓扑结构可以转化为一个无向图来描述:G=(V,E)。其中,V为节点集合,E为无向图的边集合。节点集合由组态工程中出现的所有设备组成,边则代表各个设备的连接关系。
图2中上半部分为工控领域实际硬件连接的示意图,黑色粗实线表示总线,方形表示模块,圆形表示CPU;下半部分为数据的结构存储方式。按照图中的连接关系及数据的存储结构,将CPU转化为根节点,CPU直接连接的总线上的所有节点作为CPU的子节点。网关模块可以挂载支持该网络通信协议的从设备,即网关模块可以连接其他叶子节点。耦合模块可以连接两个模块,使得设备连接拓扑中出现环状,分层方法可以降低环形显示的复杂性。
在拓扑结构的分层可视化显示中,应该对总线、IO模块、耦合模块加以区分。本文提出的使用广度优先分层算法,可以很好地发现环路中的耦合模块节点。
2.2 可视化方法设计
拓扑结构的显示重要性很高,图形系统中图元的重叠会影响拓扑组态和拓扑分析过程。在工控网络中,各个设备形成的节点是不对等的,导致网络中的DHL分层算法并不适用[7]。工控网络中节点的连接关系具有一定的层次性,在选取环路的拆分点时,环路的节点并不对等。本文根据层次关系强这一特点,提出工控网络拓扑的分层显示,使用广度优先的方法可以很好地发现环路中的耦合模块,并利用该点拆分环路。
2.2.1 分层方法
拓扑结构可视化时,为了清晰起见会对绘制图元进行碰撞检测来防止重叠显示。但是,对于一个三维的物理拓扑结构,如果控制网络过于复杂,利用空间碰撞检测的方法避免图元重叠和交叉的效果并不理想。本文提出使用广度优先的方法对拓扑图进行分层,在二维空间坐标系的基础上,添加层次作为第三维数据,每层的数据仍然映射到二维平面中。对于拆分之后在同一层的拓扑数据,使用分离距离来进行碰撞检测[13],本文采用欧式距离的计算如下:
式中,d表示距离,(x1,y1)和(x2,y2)分别是二维空间中的两个点。
按照图的广度优先生成树的节点高度进行分层,在第一个配置界面上只显示高度为1的节点组成的拓扑结构。图的广度优先生成树是按照图的广度优先遍历的方法生成的。如图3所示,每个节点中的数字代表当前节点的值。
(1)初始化拓扑图中每个节点的值为1,选取控制站所在的节点作为第一个节点;
(2)按照广度优先的方法对拓扑图中的节点进行遍历,节点每被遍历一次就将该节点的值减1;
(3)直到遍历过所有的节点,遍历的路径即为图的广度优先生成树。
根据数据结构的定义方法,每个节点的子节点都是该节点设备的从设备。故将从站设备的配置显示在该设备的主设备的下一层,从设备的从设备同理。对于图中不同层的公共节点,即在广度优先生成树中,值为小于0的节点,用特定颜色来进行标记。在图3中节点值为-1的节点,表明是形成环的节点。
生成广度优先生成树后,按照树的高度进行分层显示。这里仍然以图3中的树结构为例,为了描述方便起见,将图3树中节点内的值改为节点编号显示,如图4所示。将高度为1的节点显示在第一层,高度为2的节点显示在第二层,每层都要保留其父节点。节点5为广度生成树中的值为-1的节点,故在第二层显示时,以深色显示,并分别显示到第二层的两个子树中。在层次的划分上,也可以根据实际情况,改变划分的间隔高度。
2.2.2 分层算法实现
基于广度优先生成树的分层算法,首先选取CPU节点为根节点,对整个拓扑图进行遍历,保留下各个节点的遍历路径,即为广度优先生成树,并根据树的高度分层显示到界面上。广度优先生成树的伪代码如下:
广度优先遍历的方法时间复杂度为O(|E|),|E|为拓扑图中边的数量。故使用广度优先生成树的方式进行拓扑图的划分,并不会提高计算的复杂度。
3 拓扑分析预警
拓扑图可以根据对图中各个节点的度、经过的最短路径长度、聚集度等特征[7]来分析整个拓扑的状态,根据这些信息可以发现拓扑中的关键节点。
关键节点就是节点的损坏会导致拓扑网络中与这个节点连通的其他节点受到严重影响,例如网关模块的损坏就有比IO模块更大的影响。对于拓扑图中的一个节点i与其他ki个叶子节点连通,则称ki为节点i的连通度,记为d(i)。节点的度越大,设备在工控网络中越重要,设备的损坏对工控网络的影响就越大。
假设生成如图5所示的广度优先生成树,节点内的数字表示节点的编号。对于根节点1来说,叶子节点3、10、6、8、9都与根节点1连通,所以节点1的度d(1)=5。同理,d(5)=3,d(7)=2,又有d(5)>d(7),所以节点5是比节点7重要的节点。
整个图可以使用回溯法计算节点可连通的叶节点的个数,回溯法就是在生成广度优先生成树之后,再从树的根节点开始进行遍历,按照后续深度优先的方法计算每个节点的可连通叶节点的数量,节点中子节点的可连通的叶节点的和,即为可连通的值。
根据这种方法,可以查找出拓扑图中网络承受压力大的设备,例如节点5坏掉会导致节点6、7、8、9都失去控制。在用户组态时,检查对比当前的拓扑关键点,提示用户改变拓扑连接方法,可以提高工控网络的健壮性。
4 结论
本文提出的拓扑结构分层算法将复杂的工控网络拓扑结构进行分层,实现小数据量的可视化,提高将数据转化为图形显示的速度,同时通过对当前图形的分析实现预警。该方法可以应用于工控网络中组态拓扑与物理拓扑的一致性检查,从站扫描自动生成组态拓扑等方面,但是本文中的方法忽略了总线这个数据实体,未考虑某些模块自带环路的情况。在接下来的工作中,将会在收集大量的数据之后,对分层方法的参数标准进行研究。
参考文献
[1] 欧金成,欧世乐,林德杰,等.组态软件的现状与发展[J].工业控制计算机,2002,15(4):42-45.
[2] 徐鑫鑫.基于HTML5和SVG跨平台工控图形组态软件的研发[D].南京:南京大学,2014.
[3] 郑耿忠,刘三阳,齐小刚.基于小世界网络模型的无线传感器网络拓扑研究综述[J].控制与决策,2010,25(12):1761-1768.
[4] 郑啸,陈建平,邵佳丽,等.基于复杂网络理论的北京公交网络拓扑性质分析[J].物理学报,2012,61(19):95-105.
[5] 苗新,张东霞,宋璇坤.全球电力能源互联网拓扑的矩阵表述[J].电力系统自动化,2016(5):8-16.
[6] 朱铁稳,李琦,苗前军.三维空间对象拓扑关系的研究[J].计算机工程与应用,2003,39(17):1-3.
[7] 张畅,谢钧,胡谷雨,等.复杂网络拓扑可视化方案设计与实现[J].计算机技术与发展,2014(12):78-82.
[8] 肖群健.局域网拓扑发现技术研究与应用[D].广州:广东工业大学,2011.
[9] 李海峰.图布局FR算法的研究与实现[J].电脑知识与技术,2013(12):2864-2865.
[10] 刘金明,万明祥.基于节点度分层的路由器级拓扑布局算法[J].计算机技术与发展,2015(1):100-106.
[11] VATHY-FOGARASSY A,WERNER-STARK A,GAL B,et al.Visualization of Topology representing networks[M].Intelligent Data Engineering and Automated Learning:IDEAL 2007,2007:557-566.
[12] 王光.基于C#的监控组态软件开发[D].哈尔滨:哈尔滨工业大学,2012.
[13] 潘海鸿,冯俊杰,陈琳,等.基于分离距离的碰撞检测算法综述[J].系统仿真学报,2014,26(7):1407-1416.
作者信息:
张 湾1,张 华2,郭肖旺1,霍玉鲜1,张晓莉1
(1.华北计算机系统工程研究所,北京100083;2.北京航天飞行控制中心,北京102206)