一种基于UDP 和FTP 协议的远程浏览系统的设计
2023-12-25荆俊峰房志奇靳书云
荆俊峰,蒯 亮,房志奇,刘 凯,靳书云
(中国电子信息产业集团有限公司第六研究所,北京 100083)
0 引言
在信息管理系统中,最常见的是MIS 管理系统,它一般主要关注的是宏观层面的信息管理,如原材料管理、财务管理、质量管理、计划管理、人力资源管理等[1]。但对于机组运行实时数据以及实时工艺要素的信息推送,在管理者的角度来看是一个迫切需求,管理者不用亲临操控室,在办公室就可以实时监控机组运行系统图和数据曲线,从而能够及时、准确地掌握机组运行状况,以便做出科学决策。尤其对于机组分散在不同地域的情况,对每个机组的运行状况的获取更为迫切。本文从实际需求出发,设计了一种机组运行信息远程浏览的实现方法,为工厂管理者提供了一套便捷、快速、准确的信息获取方式,从而实现科学管理、科学决策、科学运行。
1 体系结构
远程浏览系统分为服务端和客户端两个体系,其中服务端可以支持多个机组,每个都配有一个远程浏览服务器,专门负责向客户端提供动态数据,每个机组都支持多个客户同时远程浏览。系统在服务端对每一个客户端进行注册登记,以保证每个客户的合法性。客户端的数量按需配备,可以分散分布于厂区的不同位置,根据具体需求配备相应的防火墙和交换机,但需要开放相应的通信端口。系统体系结构如图1 所示[2]。
2 软件地位描述
远程浏览系统是依附于SCADA 系统而进行设计的,SCADA 系统设计的原则是分为系统软件层和驱动层两个层次,系统软件层主要部署系统级软件以及一些通用型软件,驱动层主要实现多种数据源的组态和通信功能,包括控制器、MIS 通信、OPC、MODBUS、PLC 等各种数据源。远程浏览系统相对于SCADA 系统来说可以作为一个数据源驱动来看待,因此属于驱动层的软件;对于客户端来说原则上保留系统软件的部署,但通用软件层不排除产品有特殊功能的要求。因此在单元机组侧也就是服务端的SCADA 软件中增加与远程站通信的接口驱动WebServer 通信模块,而远程浏览侧作为单独的软件产品安装,如图2 所示[3]。
图2 远程浏览系统的软件地位
3 模块划分
远程浏览系统服务端和客户端的模块划分如图3 所示,其中服务端有注册模块、通信管理模块、测点提取模块、文件服务模块、证书模块、下载列表模块,客户端有登录管理模块、客户端通信模块、文件下载模块、公共接口模块等。
图3 远程浏览系统的软件模块划分
服务端的注册模块实现远程客户端名称、密码、IP地址的注册,对注册数据库进行备份和恢复,以及注册数据库全网一致化等功能;通信管理模块实现客户端的登录验证、与客户端通信交互、周期调度等功能;测点提取模块进行系统图上测点信息的提取;文件服务模块实现FTP 文件下载服务功能;证书模块实现License 相关的功能;下载列表模块为远程浏览客户端生成下载系统图的列表,为远程浏览客户端提供系统图号替换功能。
客户端登录管理模块实现与服务器握手信息的管理;客户端通信模块与服务端进行数据交互通信,包括客户端显示系统图的请求与接收、周期接收系统图测点的动态信息、系统图的更新等;文件下载模块提供客户端文件下载服务;公共接口模块实现客户端进行系统图显示所需的公共函数的接口服务。
4 总体处理流程
系统图的显示原理是显示程序首先读取本地系统图在线文件,从在线文件中获取系统图的显示图素以及动态Tag 点的信息,然后根据图素把系统图显示出来,其中的动态信息一部分来自于共享内存中的动态Tag 信息,包括动态Tag 点的实时值、实时状态、上下限值、报警信息等;另一部分是动态图素信息,包括交替图形、动画、动态颜色、动态数值等。因此服务端和客户端的交互需要两种方式,一种是进程间的数据交互,另一种是服务端和客户端之间的文件交互。WebServer 端部署在SCADA 系统软件基础上,作为SCADA 软件的一个驱动模块,同时也是WebClient 的数据源,WebClient 作为一个单独的系统软件,部署在远程浏览的客户端。服务器端的WebServer 驱动程序首先通过读取注册数据库获取登录请求的远程浏览用户的合法性,登录成功后,通过进程间的通信技术与进程GetGrbPIDList 交互从而获取客户端需要显示的Tag 点列表,通过UDP 协议周期发送数据差分信息,保证客户端数据的实时性。服务器端的WebFTPServer 通过注册数据库获取需要下载的用户信息,并完成客户端需要的系统图在线文件的FTP 下载;客户端的WebClientComm 负责与服务器端的驱动程序进行通信交互,周期获取动态数据,同时负责诊断信息的发送,另外WebClientComm 通过预处理队列和输入处理队列把数据写入客户端实时表,供显示模块进行系统图的显示,其总体处理流程如图4 所示。
图4 远程浏览系统的总体处理流程图
5 进程间的数据交互设计
UDP 协议是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP 传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息,这个正好可以满足本系统一个服务器可以登录多个客户端的需求[4]。同时因为服务端和客户端的通信交互是周期性的,所以采用无连接的UDP 协议来实现正好可以扬长避短。客户端首次登录后,显示首张系统图时,首先向服务端发送请求,服务端会先发送该系统图的所有Tag 点的定义信息,确保发送成功后,再周期发送这些Tag 点实时值、实时状态的差分信息,从而达到减少网络负荷的目的[5]。
5.1 WebServer 端设计
WebServer 端的通信模块主要完成如下功能:(1)实时监听客户端通信请求,并给出应答;(2)最多可同时并发接收20 个客户端请求;(3)向测点提取模块发消息生成通信使用的点列表,并按照请求的更新周期向客户端周期发送系统图上Tag 的实时值和状态;(4)接收客户端的诊断信息包,在5 个发送周期没有收到诊断信息(客户端的诊断包发送周期可定制),则认为客户端异常,服务器终止周期发送。服务端的处理流程如图5所示[6]。
图5 服务端的流程设计
5.2 WebClient 端设计
客户端登录成功后,首先创建套接字,启动接收线程,然后向服务器发送接收数据的请求,在接收到数据包后把实时数据写入预处理队列,通过本地数据处理流程然后写入实时表,具体流程设计参见图6 所示。
图6 客户端的流程设计图
5.3 交互数据包的设计
由于UDP 无连接,不像TCP 一样做了所有的事情,因此对于采用UDP 协议的远程浏览系统需要设计一套交互管理办法,对于发送的各种类型的数据包需要进行辨别。针对这种需求,本文设计了一套包头标识符的识别方法,当服务端或者客户端收到UDP 数据包时,首先读取包头标识符,通过标识符后的数字来确定该数据包的类型,从而确定该数据包是登录请求包,数据包、或者其他类型。表1 为标识符的定义说明。
表1 UDP 包头标识设计
6 FTP 文件下载系统设计
服务端和客户端除了进程间的数据交互之外,还需要进行文件交互,因为客户端需要从服务端下载系统图的在线文件来进行显示。在客户端首次登录时,首先下载显示系统图需要的基本在线文件,在显示某幅系统图时还需要判断该系统图是否服务器端有更新,如果有更新就需要重新下载,然后才能通过服务器传送系统图上Tag 点的实时值和状态,实现客户端系统图的动态呈现。
FTP(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议,它工作在OSI 模型的第七层,TCP 模型的第四层,即应用层,使用TCP 传输而不是UDP,客户在和服务器连接前要经过一个“三次握手”的过程,能够保证连接可靠,而且是面向连接,为文件传输提供可靠保证。因此本文设计了一套FTP 文件下载系统,来实现该项功能。FTP 服务启动时首先检测本机是否是预先定义的服务器,如果是则根据注册的客户端信息为客户端提供FTP 下载服务,如果设备组态发生变更,收到变更消息需要重新初始化FTP 服务。图7 为FTP 的服务端和客户端的流程模型[7]。
图7 FTP 文件下载系统流程模型图
6.1 FTP 服务端类设计
图8 为服务端各个类之间的关系,其中数据管理类CFtpServer 为实现类,主要完成FTP 服务端的绑定IP 地址、设定FTP 数据端口范围、设定FTP 客户名和密码、设定最大客户端数、绑定监听端口、启动FTP 服务等功能。
图8 服务端类关系图
6.2 FTP 客户端类设计
图9 为客户端各个类之间的关系,其中类CSetGrb-Path、CSetServerIPAddress 分别设置下载文件的路径和IP 信息,CFtpCLient 完成FTP 文件下载客户端的具体操作流程,包括初始化、建立连接、登录、创建路径、文件重命名、文件下载、文件传输等[8]。
图9 客户端类关系图
7 客户端的共享显示内存设计
客户端的系统图显示需要显示软件进行显示,而通信模块也需要对显示内容进行周期维护,因此对于多个进程需要访问的内存,本系统采用共享内存的方式进行设计。由于客户端支持最多同时显示4 张系统图,因此共享显示内存最多存储4 张系统图的实时数据,每张图由机组单元号和图号作为索引,每张系统图最多支持1 000 个Tag 点的显示,包括逻辑点、颜色变更等,如果系统图关闭,对应的内存区也随之清零。这个内存是个动态变化缓存区,其动态信息由预处理队列进行维护[9],图10 为该共享内存的存储设计。
图10 客户端共享内存设计图
8 结论
本文立足于SCADA 数据采集系统,设计了一种基于UDP 和FTP 通信协议的远程浏览系统,为管理者的科学决策、生产分析提供了便利,尤其对于分散于不同地域的控制系统的监控具有现实意义。该系统设计方法简洁,信息获取及时准确,已获得广泛推广和应用。