王 众,戎之玮,赵 明
(特灵科技亚太研发中心,上海 200051)
物联网是信息时代进入成熟阶段的重要标志,是信息技术的全新应用。伴随着物联网的发展,传感器成为信息技术领域重要的基础设施,为智能应用提供必要的信息支持。物联网应用领域对数据进行的分析成为应用决策的重要依据。传统的振动仪器需要现场采集测量数据,而物联网使得远程监控和宽时域分析更容易实现,同时也为数据分析的探索展开了更多空间。
离心式压缩机是现代大型建筑的重要设备,对建筑内温度的控制非常重要,所以会要求尽量减少意外停机时间。离心式压缩机通过旋转离心力产生的压力和速度来达到对于内介质的效果,所以其旋转件的尺寸和质量较大,支撑旋转部件的各类轴承会承受较大载荷,因此系统对于工作中产生的动态力比较敏感。振动即结构中力作用的体现,对振动的幅值和趋势的测量是判断系统运行是否正常的重要环节。很多渐变型故障模式可以通过振动信息在长时间范围内的变化表现出来,是物联网的典型应用场景。本文以离心式压缩机为例,讨论一种物联网振动数据的分析方法,此方法不限于离心式压缩机,可以推及其他转子类型设备的物联网振动数据分析中。
物联网实现了互联网从人向物的覆盖和延伸。物联网将多种信息传感设备与互联网结合,形成巨大的网络,使物品与网络连接,达到方便识别和管理的目的。万物互联可以将人、物、事件、流程和数据相结合,通过网络连接让其更有价值。从物联网到万物互联,实现了信息到行动的转化,为使用者、企业、社会和国家都创造了新的机会和价值,为时代带来了新的经济发展机遇。
物联网平台按照数据的流向可以分为数据接入、数据解析、数据管理、规则引擎和时序数据库等环节。物联网平台往往可以提供较大数量设备接入的能力,并且需要具备较高数据点读写性能与较高的压缩率,以及端到端的安全防护等。
(1)数据接入:用于在智能设备与云端建立安全的双向连接,并通过多种通信协议实现物联网与实体的数据交互,可以初步对数据的采集格式和频率进行定义。
(2)数据解析:在云端提供数据协议的解析。当云端收到网关返回的原始数据后,结合预置的设备通信地址表将数据解析为时序数据库模式,便于存储和分析。
(3)接入管理:用于对接入云端的设备进行管理和操作,包括设备的层级管理、监测、遥控、固件升级和维护保养等场景。
(4)规则引擎:原始数据往往不能直接用于分析和显示,所以需要对原始数据进行单位的指定与转换、数据类型指定、数值关联计算、数据包重整等处理与操作。
(5)时序数据库:为了更好地处理时间序列数据,时序数据库应运而生。时序数据库是用于管理时间序列数据的专业化数据库。区别于传统的关系型数据库,时序数据库针对时间序列数据的存储、查询和展现进行了专门优化,有较高的数据压缩能力与查询性能,适用于物联网应用场景。
物联网的振动数据伴随接入点的增加和长时间的积累后,数据量极大,为了得到数据的价值需要进行深入挖掘,但这一过程往往需要大量工作消耗,因此提高分析效率成为数据分析的重要方向。物联网振动数据通常具有以下特点:
(1)结构稳定。物联网振动数据采集侧完成现场部署后,采集模块生命周期内一般不会频繁变动,或仅发生有限次变动;接收数据的平台一般不会发生颠覆性改变,多数变更都会兼容前次的结构和功能;对特定采集器和应用对象而言,采集精度和频域宽度通常是固定的,或为有限类型模式,或经过简单计算后能够得到有限类型模式。以上因素决定了物联网振动数据在结构方面通常比较稳定,为提高振动数据分析效率奠定了基础。
(2)行数巨大。物联网振动数据的量级取决于2个方面,一则为安装点数,一则为时间积累。依据物联网近年来迅速发展的趋势,安装点数往往呈指数上升;采集模块一经安装就开始持续不断的向云端提供数据,出于研究或追溯等原因,数据拥有者很少主动删除数据,经过长时间积累后数据量巨大。
(3)频域完整。为进行数据分析而采集的物联网振动数据往往具备目标分析范围内的完整频谱。根据分析内容和分析目的的不同,可能会有不同分辨率的数据,例如1 Hz或0.1 Hz。完整的频谱保证了数据结构的一致性,使通过自动分析来提高效率成为可能。
(4)时域离散。因设备运行的振动特性一般不会在短时间内发生剧烈变化,为减轻数据传输与存储的压力,通常会间隔一定时间进行采集和上传,整体来看,形成了数据在时域上的离散特性。
信号的分析处理是指从传感器等一次敏感元件获得初始信息,用一定的设备和手段进行分析处理。测试信号的频域分析是把信号的幅值、相位或能量变换为以频率坐标轴表示,进而分析其频率特性的方法,又称频谱分析[1]。此频谱信息可用于对振动频谱特征的分析。振动传感器按机械接收原理可以分为相对式、惯性式[2];按机电变换原理可以分为电动式、压电式、电涡流式、电感式、电容式、电阻式、光电式[3];按所测机械量可以分为位移传感器、速度传感器、加速度传感器、力传感器、应变传感器、扭振传感器、扭矩传感器[4]。在进行信号处理时需要注意传感器的类型。
对于旋转机械而言,振动信号中的很多频率分量都与转子转速关系密切,往往是转速频率的整数或分数倍,在频谱分析时,更关注轴转速的多倍频率处及转速的非整数倍频率处的峰值。频谱中的同步分量是转速频率的整数倍,通过分析频率中的同步波峰可以发现许多故障,包括不平衡、不对中、松动、轴弯曲、叶片磨损、齿轮啮合等[5]。
另外,有些振动问题还有如下特点:
(1)难以直观体现,往往需要停机拆卸才能观察到损坏的部件或零件;
(2)难以在短时间内体现,往往长达数月甚至经年的积累才会体现出来,但是长时间累积后会造成系统级的综合影响,扩大了影响范围。
物联网适用于对振动数据的实时采集和长时间监听,适用于转子设备的非停机检测和趋势判断。
振动数据因其自身属性,在物联网应用方面可以反应设备的运行状态。因此,可以通过对振动数据的分析来识别设备的状态,并根据其时域上的变化给出预测和诊断。常规的数据分析可以大致划分为5个环节:数据规划与获取、数据清洗与处理、数据分析与方法、数据多维呈现、数据辅助决策与模型优化。本节根据物联网振动数据的特点,结合常规数据分析的步骤来阐述物联网振动数据的分析。
3.1.1 规划与获取
在获取数据之前,要先对目标振动数据进行规划,这有助于得到更高质量的数据。根据明确的目的进行数据规划,也可以提高获取有效数据的效率,更容易得到有指导意义的分析结果,实现目的引导。首先要明确分析目标,然后根据分析目标进行梳理,构建基本框架,拆解出多个要点和辅助点进行采集。好的数据规划是进行高效数据分析的前提。
本文所论述的范围是关于振动数据的分析,目标是根据物联网振动数据来判断设备运行的状态与趋势。需要考虑以下环节:
(1)时域和频域两个维度是该数据规划的主体内容,为了进行完整的分析,还需要幅值、方向等数据;
(2)数据生成过程中为了保证完整的计算和输出,需要一些必要的标志位、状态位等数据;
(3)数据采集过程中为了加以区别,需要辅助用于采集的硬件设备识别码、网关码等数据;
(4)数据传输过程中为了适应振动类型的大规模数据与传输途径间的匹配度,需要进行必要的分解,增加多数据包的首尾识别等数据;
(5)数据存储和下载过程中根据不同的平台规则,需要对数据重新查询、分割、打包再合并,会产生很多附加数据。
从以上描述我们可以看出,物联网振动数据的产生和获取过程是多样化的,数据的来源和用途是复杂的。要对复杂的数据进行分析以达到预期的目的,需要完成大量分析工作,从海量的数据中得到真正能够辅助判断决策的数据,就需要良好的数据规划。
3.1.2 清洗与处理
在进行数据清洗与处理前,首先要保证数据的真实性和正确性,如果数据存在谬误和错位,那么结果不具有任何价值,还会导致错误的决策甚至损害模型。甄别数据真实性与正确性的过程在前期阶段需基于人对数据的理解和调查,分析过程中可以根据数据的特性进行反向确认和验证,以此完善数据获取的过程。
本文论述的基于物联网的振动数据,一方面数据本身层次繁多、结构复杂;一方面经过时间的持续积累,数据量巨大。为了从中得到真正能够辅助判断决策的数据,需要对无关数据进行清洗,对关联数据进行处理,同时要保证数据间的有效性和关联性,这是数据分析必不可少的环节。
物联网振动数据的清洗与处理,狭义来讲,可以只针对从云端下载获得的数据,但因为数据在生成和采集、传输、存储过程中因平台和工具等环节的不同而造成下载得到不同的结果,所以对过程中产生的数据也应该进行深入理解,这样才能在多个环节更好地对数据在比较宽的范围内进行清洗和处理。在生成、采集、传输和存储过程中引入的状态位[6]、识别码、标识符、首尾包等数据应尽量控制在有限环节内,不保留到最终数据中,如果最终数据中有此类信息,则这类信息就是优先清洗的对象。只有在获取数据过程中出现问题时才保留这类信息来追溯问题根源。
数据处理指从物联网获得的振动数据一般无法直接用于分析,通常要进行运算和处理后才能得到有效的,可用于分析的,有价值的数据。在数据生成环节,不同类型的传感器会产生不同类型的数据。从物联网振动数据分析的角度,我们可以把传感器的类型分为模拟型和数字型,即传感器输出值为模拟量的为模拟型,传感器输出值为数字量的为数字型。相同情况下,模拟型传感器的数据量通常比数字型的更大,得到时域模拟量后需进行FFT转换得到频域值,把时域数据处理为频域数据用于频谱分析。进行数据处理时首要保证的原则是一致性和有效性。经过清洗和处理后的数据会更适合分析且更高效,可能涉及的振动数据处理还包括如下类型:
(1)数据类型的转换,例如整型与浮点型的转换;
(2)时间格式的转换,数据库的时间格式与易读易算的时间格式之间的转换;
(3)步长与频域的转换,采样频率与目标分析频率精度之间需对应;
(4)单位的转换,采样单位与目标分析值之间进行对应,例如振幅;
(5)数据帧的合成,频域数据往往有多种方式进行存储和传输,获得数据后需重新组织成数据帧;
(6)空帧的处理,多种原因造成的空帧需要给出特定进程,使之不影响整体分析;
(7)帧与帧的拼接,获得数据的过程中出现帧错位或断帧的情况,需要根据规则重新拼接为有效数据;
(8)去噪声处理,采集环节引入的噪声需要在分析前作预处理;
(9)关联计算,多维度的原始值往往需要一定的关联计算后才能够成为目标分析可用的数值。
数据的清洗过程不一定限于数据下载后,有效的数据清洗能够让数据在传输过程中高效地传递信息。尤其针对物联网,很多设备利用无线网络,甚至付费网络进行数据传输,此时数据清洗就显得更为重要。
3.1.3 分析与方法
物联网振动数据的分析过程主要分为频域分析和时序分析。频域分析注重频域特征的提取,时序分析注重随时间变化的追踪,通常先从频域入手。在进行分析前需要确认数据的有效性,数据的有效性与采集侧和目标侧相关:
(1)有效数据的频域宽度需与目标分析的范围一致,需注意频域的起止点,即相对的低频段和高频段;
(2)采样得到的频域数据精度,例如1 Hz或0.1 Hz;
(3)幅值确认,例如有效值、峰值与峰峰值间的转换,及幅值单位的转换。
经过确认和提取后,利用有效数据可以组成频域数据帧,即在频域上每一个最小分辨率的频率点有一个与之对应的幅值,此频域数据帧可用于频域分析。
频域分析的过程可以概括描述为频域数据特征化的过程,即把采集得到的数据根据一定规则进行特征化,然后与预置的特征进行比较。预置逻辑的来源主要有以下几方面:
(1)知识型输入,即公开的理论性振动故障识别知识;
(2)经验型输入,例如工程师的经验与现场应用人员的经验;
(3)仿真辅助输入,此类输入注重特定设备类型的振动特征;
(4)离厂测试型输入,此类输入可以体现设备的唯一性特征。
把物联网采集的数据进行特征化处理后,与上述多种类型的预置特征库进行比较,合理判定可以得到明确的输出值,即故障类型,达到故障诊断的目的。
区别于传统手持式振动仪和台式振动仪,物联网振动数据更容易获得长时间范围内在时域上连续的频域数据帧,物联网振动数据这一特性也更符合振动故障渐进性变化的特性,使得物联网振动数据的分析更有价值。
时序分析一般是有针对性地对特定频段上的数据随时间变化进行分析。特定频段通常指频域上幅值超出预期的频段,例如工频50 Hz的转子设备在50 Hz频率上采样得到的幅值超出预期值时,50 Hz的倍数频率和以其为中心的一定范围均成为目标分析的特定频段。对特定频段的数据进行时间追踪,根据时序上的变化情况给出趋势判断结果,有助于早期问题的确定。进行分析时可以在时间上通过连续或随机的方式取得观察点,然后根据观察点序列拟合曲线的曲率来判断特定频段的趋势。
3.1.4 数据呈现
对物联网振动数据分析的结果呈现,一方面需要给出定性判断,比如振动是否超标和归类为哪种故障模式;另一方面需要给出可量化的视觉对比结果。振动数据进行图表类呈现的目的是为了对比,需要体现分布和关系,振动数据的频域分析结果需要体现各频段上的对比和分布,时序分析的结果需要体现前后数据的趋势关系。
对物联网振动数据分析的结果需满足突出特征、一目了然、辅助判断、便于深入分析等要求,好的呈现要符合不重叠、不遗漏的基本原则。物联网振动数据需要多种呈现途径,例如方便远程查看的浏览器页面,用于分析和交流的报告,用于实时监控和分析的软件工具等。无论哪一种呈现方式,都需要规划一个仪表盘来合理展示振动信息,以便能够实时监控[7]。
对于物联网振动信息而言,基本的呈现内容为:频谱与时序趋势;重要的呈现内容为:频谱与时序趋势反应出的设备状态;有价值的呈现内容为:根据状态诊断而给出的建议;此外,还需要呈现用于辅助判断的设备信息等。
3.1.5 数据辅助决策与模型优化
物联网振动数据分析的作用:在大型设备应用方面,可保障设备正常运行,这种应用场景下的关键决策是设备是否适合继续运行,是否需要维修保养,以免造成意外停机和更大范围的损坏。为达到这个目的,幅值与模式的判定是关键输入,幅值能够反应设备整体运行的情况是否正常,模式能够为问题的判断缩小范围。既定行业或类型应用中,幅值判断通常有明确的范围,通过软件逻辑相对容易实现结果的输出。模式判定往往需要长时间的经验和积累,物联网广泛实施的同时也有助于获得更多故障数据来完善故障模型。
数据分析工具种类繁多,但适合物联网数据分析的较少,例如Excel的最大处理行数为1 048 576行,无法匹配物联网数据在时间积累下行数巨大的特点。分析方法的研究往往是为了最终应用,完整的数据分析方法在经过本地数据验证后需在云端的应用中实现。Python具有较适合分析大规模结构化数据的库,可以同时满足处理本地数据和云端应用的需求,本文以Python为例,讨论如何提升物联网数据的分析效率。
3.2.1 Python常用库
常用于物联网数据分析的Python库有:
(1)Beautiful Soup:解析物联网xml和html数据。
(2)Pandas:此功能库中有大量标准数据模型,提供了快速便捷地处理文本数据的函数和方法,以及高效操作大型数据集所需的工具。
(3)NumPy:通常与Pandas结合,用来完成批量数据的分析任务。
3.2.2 使用Python分析振动数据
从物联网云端抓取振动数据用于临时本地数据分析时,可通过Beautiful Soup解析并转存为表格文件,方便阅读与验证,在云端处理时可以直接读取时序数据库,然后经过以下步骤和方法进行处理:
(1)数据抽取:使用Pandas的循环遍历命令抽取目录下的所有振动数据,将数据读入DataFrame中以二维表格型数据结构存储为 'metric','timestamp','value'字段。
(2)时间格式转换:时间格式是物联网振动数据的重要标签,数据库中的时间格式通常需要转换后使用,可以使用公式将时间信息转化为可计算的数值,本文案例时序数据库的时间格式转化为年、月、日、时、分、秒格式:
T=(timestamp/1 000+8*3 600)/86 400+70*365+19 (1)式中:timestamp /1 000表示由毫秒转换为秒,如果timestamp包含秒,则无需计算;8*3 600表示由GMT 0时区转到GMT+8时区;除以86 400表示由秒转到天;70*365表示70年的差值(timestamp与Excel计算起点差异;19表示1900年到1970年间的闰年数量)。
采用Python处理时间格式时,需使用utcfromtimestamp函数。振动数据由于数据量较大且瞬变可能性小,所以一般传输频率较低,多数情况下无需考虑秒级误差(如果保留秒级时间格式则可能在后续数据对比过程中引入错误,所以需要用replace函数将秒清零)。时间格式处理的语句汇总如下:
dt = datetime.utcfromtimestamp(timestamp / 1000)
if convert_to_local:# convert to local
dt = dt + datetime.timedelta(hours=8) # china default time
dt = dt.replace(second=0)
(3)数据清洗:数据清洗的目的是过滤无效数据[8],让目标数据的分析更明确,分析效率更高。清洗后的数据通过合理调用可以成为待分析的振动频率幅值数据帧。进行时间过滤时可以参考以下语句:
df_abs_filter = df_absolute[(df_absolute.timestamp.dt.time >= start_time)& (df_absolute.timestamp.dt.time < end_time)]
进行标签过滤时可以使用“~”(取反)命令实现,如下面例子中过滤无关数据'V1_L','V2_L':
df = df[~(dif['metric'].isin(['V1_L', 'V2_L']))]
(4)报警数据的产生:振动数据分析的关键步骤是根据组织好的频域数据帧与预期幅值进行对比,在相应频段上超出预期值则归入预置的故障类别。可以使用apply()函数调用alarmDect函数自动遍历每行的频率与幅值,最后将结果组合成Alarm Series数据结构并返回,实例语句如下:
dx['alarm']= dx.apply(lambda x: alarmDetect(x['Frequency'],x['value']), axis=1)
经过分析后的数据已包含振动数据帧的故障模式判断信息,通过合理的方式呈现便可用于结果分享和改进,例图如图1所示。
图1 例图
物联网采集的数据往往路径较长且过程复杂,分析难度较大。本文介绍的方法是大数据分析方法在物联网振动数据方面的应用,主要讲述了数据的基本处理和分析方法及流程,结合Python的使用可以提高分析效率。本方法和流程可以推广至其他类型的物联网数据分析,例如基于时序数据库的设备运行数据等。