公务员期刊网 论文中心 正文

电力二次设备中容器技术的应用

电力二次设备中容器技术的应用

摘要:能源互联网作为电网发展的新阶段,海量设备的接入和数据量要求电力二次设备具备边缘计算能力,实现电力相关设备实时感知、监测及智能控制。为了快速部署、响应用户新业务新需求,提升边缘设备的计算能力,介绍在设备上应用Docker技术的方案,通过软件APP化以及使用MQTT消息总线进行APP间通信,提升电力设备运维和计算能力。经实际测试,该设备部署容器后软硬件运行正常,可通过远程运维平台管理装置上的各类APP,具有较好的工程应用前景。

关键词:容器;边缘计算;配电网

随着能源互联网和数字电网建设的持续推进,大量的传感器接入,电力系统获取的感知数据是海量级的,导致系统传输压力大、主站计算负荷重。传统的传感信息获取方式处理方式存在数据良莠不齐、数据缺失、格式不统一、数据处理不及时等问题,导致电力系统尤其是低压配电系统存在故障定位时间长、事故处理响应慢等痛点[1]。随着终端侧装置数量日益增多,对电网中心化数据处理平台提出更高的需求。为降低系统成本并防止中心化节点成为瓶颈,边缘计算利用更接近用户侧的基础设施,在网络边缘对数据进行处理[2]。提供强大算力的边缘计算技术方案可以将分散的电力设备作为数字电网的重要端口,在新一代信息技术支撑下,实现互联互通,全面感知状态、高效处理信息,形成数字化管理的强大生产动能,挖掘出大数据价值。其中边缘计算设备作为提供算力的计算节点,在边缘侧要满足行业在实时业务、应用智能、安全与隐私保护等方面的基本需求。如何动态地、按需随时将计算算力下发部署到边缘设备节点上,并保证各计算之间互相隔离互不干扰就成为了技术要点。以Docker为代表的虚拟化技术天然具备动态部署、隔离应用的特性,因此在边缘设备上应用Docker技术能较好地适应这种场景。

1Docker容器技术简介

容器技术作为一种资源隔离的虚拟化技术,其概念始于1979年提出的UNIXchroot。经过多年发展,从最初的chroot到Jails、LinuxVserver、Solaris、OpenVZ、Process容器、Con-trolGroups到LXC以及现在火热的Docker技术等。容器作为一个轻量级的虚拟化技术,由应用程序及其依赖构成,并在Host操作系统的用户空间运行,与操作系统其它进程隔离。在嵌入式装置中应用较多的是容器技术是Docker和LXC。LXC起源于cgroup(源自控制组群)和namespaces(命名空间)在Linux内核方面的发展,它支持轻便的虚拟技术操作系统环境。LXC系统提供工具管理容器,先进的网络和存储支持,还有最小容器操作系统模板的广泛选择。Docker的构想是要实现“Build,ShipandRunAnyAPP,Anywhre”,即通过对应用的封装(Packing)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,达到应用组件“一次封装,到处运行”的目的[3]。两者差异如表1所示。Docker相对于LXC技术,在可移植性、工具生态系统、开放兼容性、工具生态系统上等方面都更具优势,因此本系统采用Docker技术作为最终使用的虚拟化技术。

2系统硬件设计

本项目硬件平台采用ZYNQ-7000系列芯片,包括片外Flash存储、EMMC存储、DDR内存、模拟量采集、数字输入输出、串口RS485/232等[4]。该芯片性能强大,可以实现保护控制通信等多种功能,适合在电力设备上使用。其中片外Flash主要存储用于启动的u-boot、内核镜像、设备树等文件,EMMC存储文件系统、应用程序及日志、数据信息。

3系统软件设计

电力二次设备大多采用嵌入式Linux操作系统,系统基础软件设计主要基于Linux操作系统构建容器运行环境、运行APP、建立各APP间通信机制。其中容器运行环境构建主要包括:Linux内核定制、容器基础镜像的构建、APP镜像的构建。以下先介绍应用整体框架,再分别介绍构建容器环境的几个环节。

3.1应用整体框架

基于Docker容器技术的系统软件总体结构如图1所示。在作为分布式计算系统应用时,计算任务需要分配到多个CPU、DSP才能完成,各CPU、DSP需要按照预定设计的目标定时工作,并实时交换数据。因为常规Linux系统实时性满足不了电力系统中一些高实时的计算任务,系统设计采用非对称多进程处理(AMP)模式,通过Linux+裸核的方式运行;ZYNQ-7000处理器集成双核ARMCortex-A9,可在其中一个核上跑Linux操作系统,另一个核上进行高实时性的运算。其中Linux操作系统上每个业务APP都通过镜像的方式运行在容器中,通过docker设备映射功能访问各外设设备,如配变交采类应用可通过驱动设备文件获取各类模拟量信息;系统管理进程负责系管理系统中各类进程;各APP与系统管理程序及APP之间通过容器间IP化技术和MQTT总线进行各类消息主题的订阅和。系统host上运行远程管理模块,通过网络与远程运维主站进行通信;通过运维主站进行各容器APP部署下发,远程管理模块可解析命令进行APP的安装部署,同时可将各APP的运行状态上送给运维主站,达到远程运维的目的。

3.2Linux内核定制

容器运行在宿主机上,与宿主机共享内核。容器的正常运行依赖内核自身的许多特性。因此在开发构建容器的运行环境时,首先要定制相应的内核配置,以支撑容器的运行。Docker运行要求内核版本不低于3.10。内核中与容器紧密相关的最核心的特性是Namespaces命名空间和Controlgroups(cgroups)控制组。利用命名空间这一特性,每个容器都有独立的命名空间,每个运行其中的应用都像是拥有了独立的操作系统,保证了容器彼此之间的互不干扰。命名空间提供了系统资源隔离的基础,其包括了进程隔离、网络管理接口、管理跨进程通信访问、管理挂载点、隔离内核和版本标识。内核配置上需对以上命令空间进行配置。控制组是Linux内核的另一个特性,主要用来对共享资源进行隔离、限制、审计等,只有能控制分配到容器的资源,才能避免多个容器同时运行时对宿主机系统的资源竞争。资源控制是Docker的基础,在Dockerd启动过程就需要cpuset、cpu、cpuacct、blkio、memory、devices、freezer、pids,要保证各个控制组已经挂载完成。另外Docker启动时会使用iptables配置一些网络规则等也会涉及一些内核配置,不一一赘述。

3.3基础镜像及APP镜像的构建

采用Yocto框架来构建基础镜像。Yocto的基础使用方法,可参照Yocto官方文档。构建方法主要分为以下几步:1)根据相应的硬件平台,设置对应的BSP配置文件,并将配置文件设置为默认BSP配置;2)进行内核recipe(配方)的配置。一个完整的OS由内核和rootfs构成,两者需保持兼容。在构建rootfs的过程中,必须要选择和该内核兼容的kernel来配置recipe;3)进行rootfs的recipe配置。image用于指定需要编译进rootfs的软件以及其依赖软件。比如要使用Docker软件,就需要将Docker以及相关的依赖,比如Docker-registry增加到image中;4)一些特殊的定制。通常会根据整个系统的兼容性和需求,调整相关软件的版本和配置。比如容器只需要Docker,不需要lxc,需要设置runc的recipe;5)使用bitbake(构建系统)构建相应的版本。APP容器化的基础是每一个APP都做成镜像运行。可以通过Dockerfile来进行APP镜像的制作。Dockerfile是一个文本文件,记录了镜像构建的所有步骤。下面是一个Dockerfile的实例,baseimage是基础镜像,appname是要打包的APP,需在“/bin”目录执行。#DockerfileexampleFROMbaseimageMAINTAINERauthornameemail@xxx.comCOPYappname/binCMD/bin/appname将Dockerfile和appname放置在同一个目录后,可通过如下命令制作APP镜像。dockerbuild-tappimage.执行完成后,就可以通过dockerimages命令查看到生成的APP镜像。如果执行的命令比较复杂,也可以做成一个shell脚本,同样拷贝到镜像中,编写Dockerfile的时候CMD后面执行shell脚本来运行程序。如果应用有依赖的lib库,lib库需要根据对应的编译链进行编译并打包到容器镜像内。

3.4APP通信机制

APP通信流程如图2所示。在容器运行环境下,各APP的通信设计基于以下原则:交互完全基于消息机制,以达到数据交互解耦,避免私有交互造成的管理复杂性;各APP开发统一的预留接口,保证互通互用。基于消息机制,各APP间通信引入了MQTT总线。MQTT协议是一个客户端服务端架构的/订阅模式的消息传输协议,设计思想是轻巧、开放、简单、规范、易于实现。所有APP间通信可通过MQTT总线/订阅消息,获取系统资源以及APP交互,可提供一对多的消息分发和应用间的解耦。具体的消息交互流程如下:1)MQTT消息总线提供订阅主题接口,各应用APP启动运行时需先进行、订阅数据主题注册;2)对外提供数据的APP应用,在生成新数据后调用总线消息接口进行数据;3)消息总线接收到数据后,将数据存储至实时数据库。消息总线在发现被订阅的数据变化后,启动主题推送程序,根据订阅主题信息调用订阅方接收接口,推送数据。

4应用情况

本文完成了在嵌入式装置上部署容器运行环境,实现APP服务容器化的设计目标。目前该技术已在某变电站远程运维系统中成功应用。该项目通过远程运维平台部署各容器/业务APP到电力装置上,如104通信规约APP、停电告警、相序识别等;实现了数据的贯通,通过从底层驱动获取到电压电流等数据通过APP计算后,使用MQTT总线上送到IEC104APP等,验证了各APP间数据交互、消息发送的机制和可行性。同时对装置资源的消耗和容器大小测试,其中容器镜像文件大小根据实际应用文件及依赖有所不同,一般在几MB。系统运行中CPU和内存占用率有所上升,只是在原有基础上增加几十MB内存的占用,对系统开销影响不大。

5结束语

在能源互联网建设的背景下,本文提出一种在电力设备上应用Docker技术以及设备上各APP间通信机制的方法,并对相关的操作进行了阐述。通过引入Docker技术,实现了边缘计算节点业务容器化、软硬件解耦操作,为软件APP化提供了实践方法。在当前运维和部署服务越来越复杂的情况下,为实现电力行业的业务需求弹性扩展、快速满足用户需求以及边缘计算的应用提供了有力支撑。为电力物联网建设提供软件平台,提供了开源、开放式的环境,对电力设备开发提供一定的参考。

参考文献

[1]张树华,仝杰,张鋆等.面向能源互联网智能感知的边缘计算技术研究[J].电力信息与通信技术,2020(18):4

[2]李彬,贾滨诚,曹望璋,等.边缘计算在电力需求响应业务中的应用展望[J].电网技术,2018,42(1):79-87

[4]杨保华,戴玉剑,曹亚仑.Docker技术入门与实践[M].北京:机械工业出版社,2014

作者:吴汪兵 龚行梁 刘伟 单位:南京南瑞继保电气有限公司