88 Golumn专栏■核电仪控
基于数据可视化的DCS系统 日志分析方法研究及应用
Research and Application o f DCS System Log Analysis Method Based on Data Visualization
★北京广利核系统工程有限公司康炤旭
摘要:D CS系统是核电站的神经中枢,D CS系统的安全稳定运行对核电 站的安全具有重要意义。D CS系统本身具有丰富的自诊断功能,当系统 出现异常也会记录大量的在线和离线日志。对于离线曰志目前的分析 手段比较单一,只能通过人工方式进行日志的提取与分析。本文描述 了一种提高离线日志的提取与分析效率的方法,利用Windows自带的 API函数,文件传输命令等自动获取D CS系统离线日志并统一收集到指 定节点。利用Python语言对收集到的离线日志进行分析,结合D CS系统特点,从离线日志中提取出影响D C S系统稳定运行的信息。这些信息 采用JSON异步读取的方式,通过ECharts图表工具将分析结果以htm丨格式进行在线展示,辅助操作员对D C S系统的健康状态进行辅助分析及 判断,为D CS的智能化运维提供了理论与技术参考。
关键词:Python;ECharts;D CS日志;IIS;JSO N
A bstract:D C S system is the nerve center of normal operation of nuclear power plant.The safe and s
table operation of D C S system is of great significance to the safety of nuclear power plants.The D C S system itself has rich self-diagnosis functions,and a large number of online and offline logs w ill be recorded when the system is abnormal.
A t present,the analysis method of offline log is relatively simple, and the log can only be extracted and analyzed manually.This paper describes a method to improve the efficiency of offline log extraction and analysis of offline logs,using the A P I function and file transfer command of windows to automatically obtain the offline log of D C S system and collect it to the designated nodes.Python language is used to analyze the collected offline logs.According to the characteristics of the D C S system,the information that affects the stable operation of the D C S system is extracted from the offline logs.The information is read asynchronously by JSON,and the analysis results are displayed online in H T M L format through Ecarts chart tool,which helps operators to analyze and judge the health status of D C S system,and provides theoretical and technical reference for intelligent operation and maintenance of D C S.
Key words:Python;ECharts;Log of D C S;IIS;JSO N l引言
安卓在线解析json核电D C S系统指的是核电数字化控制系统(Digital Control System),是核电厂的神经系统和 大脑,D
CS系统本身的健康对整个核电厂的安全至关重 要。DCS系统由硬件系统、软件系统及相关网络构成,每一部分出现异常均会记录相应的运行日志,日志分为 在线日志和离线日志两个部分。在线日志可以直接在 DCS系统的人机界面进行展示,提示操作员对当前实时 出现的系统故障进行及时处理。离线日志则是系统运行 期间记录在设备本身的运行日志,用于对故障的根本原 因进行分析。但是当前离线日志只能手动拷贝,受限于 核电现场的特殊性,对设备的操作需要遵循特殊规定,等待时间窗口,时效性大打折扣,往往会出现日志被覆 盖的情况。同时,日志信息的分析也只能依靠人工,效率较低,不能满足DCS现场运行的需要。本文基于 Windows的API程序接口,结合Python、ECharts等 工具实现CPR1000项目非安全级DCS系统日志的自动 获取、归集与分析,并将结果以html格式进行展示。
2 DCS系统曰志系统组成
2.1 DCS系统架构
CPR1000项目非安全级DCS系统由三层网络、两级 设备组成,分别为监视控制级设备,包括操作站、服务 器、工程师站等设备,连接MENT和SNET网络,实现 DCS系统设备监视与控制功能;过程控制级设备,包括 就地控制柜、网关柜、远程I/O柜等设备,连接CNET网 络,实现就地工艺系统设备的控制。如图1所示。
2021.05 AUTOMATION PANORAMA89
图1 CPR1000非安全级DCS网络结构
2.2 DCS系统日志系统
日志系统负责记录和存储核电站DCS系统发生的所有事 件和信息,并根据时间类型对日志进行分类,按照时间进行存 放。日志分为操作系统日志及平台日志两大类,其中平台日志 又分为在线日志和离线日志两大类。在线日志系统记录的信息 主要包括幵关量和模拟量的值和状态的变化情况、设备故障和 恢复信息,以及操作员的操作记录。日志信息可以输出到显示 器、打印机,并以文件形式永久保存于硬盘上,这些文件能够 导出,并能通过专用工具进行解析。离线日志系统记录的信息 主要包括DCS系统各子软件系统的运行状态信息:服务器实时 数据管理服务、历史库服务、报警及事件管理服务、内部计算 服务、I/O数据采集服务等子进程的运行状态信息(超时、故 障、数据对齐等)、操作站在线显示任务运行状态信息、控制 器运行状态信息(同步、IEC运算任务、数据同步等)、通讯 站运行状态信息(建立连接、数据包收发等)。操作系统曰志 信息主要针对Windows操作系统,利用系统本身的日志记录 功能记录操作系统运行状态信息:如各种服务的启动、运行、关闭等信息,包括系统日志、应用程序日志、安全日志等[11。
3 DCS系统曰志获取
3.1 D CS操作系统日志获取
3.1.1 Windows API接口
应用程序接口(Application Programming Interface, API)是一些预先定义的函数,或指软件系统不同组成部分衔 接的约定。121
API用来提供应用程序与开发人员基于某软件或硬件得以 访问的一组例程,通过API函数,应用程序可以很方便地访问操作系统的各种服务,而无需访问源码,或理解内部工作机制 的细节。通过调用Windows系统的API函数即可实现对操作系 统曰志的获取。
3.1.2 DOS命令
DOS是Disk Operating System的简称,在Windows图形界面操作系统出现之前,DOS系统几乎是人与计算机进行 交流的唯一选择。DOS命令分三大类:内部命令、外部命令和 批处理命令。常见的ping、copy、dir等都是DOS命令。其中 wevtitul命令即为操作系统日志操作命令,通过该命令可以将 操作系统日志获取到指定目录,如
wevtitul epl System c:\a.evtx.
但是该命令有两个应用限制:(1)只有在Windows7及 以上操作系统上才支持该命令;(2)导出的日志信息为Windows系统特殊的evtx格式,不便于后续的分析。
3.1.3方案实现
通过Python语言编程,调用Windows操作系统的API函数,实现操作系统日志的获取,具体实现方式如下(示例):import win32con
import win32evtlog
import win32evtlogutil#引入API接口库
def SysLogs(server,logtype,logPath):#定义读取函数
log.w rite("\n%s Log of%s Events\n" %(server, logtype))
log.write("Created: %s\n\n"%ime〇)
log.write("\n"+ line.break+ "\11")
log.write("Event Date/Time: %s\n"%the_time)
log.write("Event ID/ Type:%s/ %s\n" % (evt_id,evt_ type))
log.write("Record#%s\n"%record)
log.write("Source: %s\n\n"%source)
log.write(msg)
log.writeCVAn'')#定义日志记录格式,便于统计分析
if__name__ ~"__main__":#调用函数
server= None # None= local machine
logTypes= ["System", "Application", "Security"]
SysLogs(server,logTypes,r'C:\Users\DCS\Desktop')
运行该程序后,对应节点的三个重要操作系统曰志“系统”、“应用程序”、“安全”即以l o g格式文件(localhost_System_log.log)获取至本地C:\Users\DCS\ Desktop
目录,文件内容如图2所示。
9〇 Golumn 专栏■核电仪控
* D ^t\toc#lhost System lo g I09 Notepad ♦ *■
X W F ) M I(E ) «*(S ) «B (V ) M A(N) an i(L) «■0) U K O ) *(M )
*m p )
〇 O 〇i
9cr t
图2日志文件示例
3.2
DCS 系统平台日志获取
DCS 系统的平台日志均是以文件的格式存储在对应系统设 备的硬盘上,直接拷贝该文件即可实现对平台日志的获取。
3.2.1 Windows 系统设备
对于Windows 系统设备,所有的平台日志均存储在对应设 备指定的目录下,结合操作系统日志的获取方式,统一获取方 式,通过Python 语言调用操作系统的DOS 命令,实现日志文件 的拷贝,具体实现方案如下:
import os #引入操作系统库组件
os .system("xcopy /k /y D :\\HOLLiAS _MACS\\Log D :\\log")
执行上述命令,即可将对应节点D :\H 〇LLiAS _MACS \
Log 目录下的文件拷贝至本地D :\log 下。
3.2.2 Linux 系统设备
对于Linux 系统设备(如网关、通讯站),平台日志存储 在对应设备指定的目录下,此类设备已经默认开启了 FTP 服 务,可以通过FTP 方式将需要的日志文件下载到本地目录。同 时也为了统一,依然采用Python 语言调用DOS 命令的方式实 现,具体实现方案如下:
(1)
新建一个批处理文件log .bat ,文件内容如下(*后为注 释文字,实际文件中不需要),并保存在FTP 启动目录下:
open 128.0.0.65 *远端设备IP 地址administrator *远端设备的登录用户名abc
*远端设备的登录密码cd /MacsRTS/log *切换到日志文件所在目录
get T H R EA D _T C P _LO G .log * 下载日志文件
bye
*退出 FTP
(2) 使用Python 语言调用FTP 命令,实现日志文件的获
取,具体如下:
import os #引入操作系统库组件os . s ystem ("FTP -s : l og .bat ")
执行上述命令,即可将远端设备/MacsRTS /log 目录下的 曰志文件下载到本地使用。
3.2.3嵌入式系统设备
对于嵌入式系统设备(控制站主控),其运行日志采用专 有格式存储在设备上,需要通过专门的读取工具进行读取。曰 志文件无法用常规软件打开,需要专门解析工具进行格式转换 后才能打幵,目前不考虑使用自动化手段进行读取。
4 DCS 系统日志分析
4.1运用现有工具
对于操作系统日志,有Splunk 、SolarWinds&EventManager 等专业工具进行分析,但是对于DCS 系统平台日志无现有工具 进行统计分析,使用受到限制。
4.2高级语言编程
结合前面日志的获取使用Python 语言实现,而Python 语 言在数据分析方面具有天然的优势。
P y th o n 是一种面向对象、解释型计算机程序设计语 言,被称为胶水语言,能够和其他语言如C ++、Ja v a 等结 合。它具有语法简洁、数据结构高效等特点,开源且能够跨
Windows 、Linux 、MacOS 平台使用|3]。因其幵源的特性, Python 具有十分丰富的第三方库,可以很方便逬行调用实现 特定的程序功能。如Numpy 库(Numerical Python )是一个
Python 科学计算的基础包。它不但能够完成科学计算任务, 而且能够作为高效多维数据容器,存储和处理大型矩阵|41;
Matplotlib 是一个数学图表库,可以使用其完成数据图表的制 作;Scrapy 库是一个爬虫库,可以通过它在网络上爬取需要的 任何信息。
4.3方案实现
综合前文两种方案的对比,结合DCS 平台日志本身的特 点,同时能更好地与日志的获取衔接,选择使用Python 语言进 行曰志数据的简单统计与分析。对于操作系统日志,每一个操 作系统事件都有唯一的一个ID 号代表,采用事件ID 号作为统计 关键字避免事件信息过长不便于统计的弊端。具体实现方案如 图3所示。
(1)操作系统日志信息分为三大类:信息类信息,如用
户登录,系统服务运行等成功操作的信息记录;警告类信息,
2021.05 AUTOMATION PANORAMA
91
图3方案实现流程图
不是直接的、主要的,但是会导致将来问题发生的信息记录, 如当磁盘空间不足时将会产生一条警告信息;错误类信息,是 指需要通知用户知道的重要问题,通常指功能和数据的丟失。 并不是所有的信息对DCS 系统的健康状态都有意义,因此根据 曰志对DCS 系统重要性,对日志信息进行筛选并创建列表待 用。DCS 相关ID 号(示例)如表1所示。
表
1 D C S 相关I D 号列表(示例)
序号
I D 号描述
备注
157
网络适配器硬件出 错
提示网络异常,影响
D C S 网 络通讯
259
出现了意外的网络 错误
提示网络异常,影响D C S 网
络通讯
34202系统检测到网卡
R e a l t e k ...F a m i l y
P C I F a s t E t h e r n e t N I C -数据包计划程 序微型端口与网络
断开
提示网络异常,影响D C S 网 络通讯
(2) 使用Python 语言中的文件操作函数对日志文件按行
进行读取。
(3)
使用while , for 循环语句实现以(1)中的ID 号在日
志文件中进行遍历。
(4) 对遍历结果进行统计。
实现代码如下(片段):
with open (file ,encoding -utf -8') as fileobject :
lines = fileobject .readlines 〇
i 二0
while i < n :
for line in lines :
if seri ["fault "][i ] in line .strip () and (sysid [i ] in
li n e . s trip ()):
seri ["num "][i ] += 1
5 DCS 系统离线日志可视化展示
5.1可视化展示方案选择
在得到统计数据的基础上,选择合适的可视化展示方案 逬行数据展示。数据可视化方案繁多,有入门级的Excel ,有 内容更丰富的D 3、Visual .ly ,有支持用户互动操作、支持高 度个性化定制的ECharts 、H icharts ,也有专业级的SPSS 、
SAS 〇
Excel 自带饼图、折线图、条形图等多种图表,能够很方
便地创建图表,但是制作图表对原始数据的排列格式要求较 高,需要花费精力进行整理,同时不支持多个显示终端的同时 查看。Excel 图表示例如图4所示。
DCS 系统各设备故障信息统计
卡卡程机盘存 卡
图4 Exce 固表示例
SAS 工具是专业级的图表绘制工具,可以根据需要绘制各 种信息丰富的图表,同时支持强大的编程功能,支持各种复杂 的统计分析(回归、生存、方差、多变量分析等)。但是其需 要有较强的编程基础才能驾驭,学习成本较高。
ECharts 是由百度公司推出的一款可视化图表控件,底层
依赖Canvas 类库ZRender ,可提供直观、交互、个性化定制
的数据图表,不但支持柱状、折线、饼图等普通图表,还支持
地图、和弦图、数据视图、大规模散点图等特殊图表,主要采
用Canvas 进行渲染绘图。151它提供丰富的图表实例,根据实际
需要替换其中的数据系列即可完成满足需求的数据图表。同时
ECharts 能够像普通JavaScript 库一样很方便地引用到html 代
码中实现数据图表的绘制,并可以通过Ajax 异步请求的方式更
新图表数据,实现图表的动态显示。
A jax 是通过支持异步请求技术的X m lH ttpR equest
对
92
Column 专栏■核电仪控
象向服务器发异步请求,从服务器获得请求数据,然后用
JavaScript 操作DOM 模型进行交互和动态显示,实现页面数 据更新的一种异步通信技术161。考虑到核电现场使用环境的 特殊性、使用成本、部署的便利性,采用ECharts 作为可视 化工具。
5.2可视化方案介绍
整体数据可视化方案为通过Python 语言实现DCS 操作 系统日志、平台日志的读取并进行数据统计。统计结果由
Python 语言写入到JSON 文件保存。前端采用ECharts 工具 读取JSON 文件逬行可视化图表绘制与分析,借用Windows 系统本身自带的互联网信息服务(Internet Inform ation
Services , IIS )发布在局域网上,从而支持多个终端同时査 看。方案架构如图5所示。
ilm S i
图5可视化方案架构图
方案详细介绍:(1)
选择一台EC h arts 终端,可根据核电现场实际选
择,备份服务器、配置服务器等。
(2) ECharts 终端同时作为网页发布服务器,配置IIS 服 务,如图6〜10所示。
图6安装IIS 服务
图8定义网站描述
图10指定网页路径
(3)
将Python 语言编写的日志获取、日志分析两部分代
码整合并打包为可执行文件放置在ECharts 终端,并配置为周 期运行,其运行结果为一个包含统计数据的JSON 格式文件。
(4) 编辑EC harts 代码,引入JS 0N 格式数据
,实现数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论