张云洲,吴 峻,李中秀,郑瑶佳,晁 闯
(1.国防科技大学 智能科学学院,长沙 410073; 2.北京轨道交通技术装备集团有限公司,长沙 410073)
高速磁浮轨道作为一种特殊的直线同步电机的长定子,其几何线形与电气特性严重影响着磁浮交通系统的安全运营。对此,高速磁浮轨道检测系统采用了“搭载在线测量-离线数据分析”的方式实现对磁浮轨道状态的快速、有效检测,主要分为轨道不平顺检测、磁场检测及图像检测。不平顺检测的对象为轨道的几何线形,具体指轨道垂向与导向长波不平顺、定子错牙;磁场检测的对象为磁浮轨道定子面的电气特性,具体指定子硅钢片间短路与绕组相间短路造成的行波磁场异常情况;图像检测的对象为轨道定子面环氧层损伤、绕组线缆下挂及紧固螺栓缺失。1公里的轨道不平顺数据量为951 kB,磁场数据量为2 558 kB,图片约2 906张,长距离的轨道线路导致单次测量数据量巨大,利用Matlab现有程序进行处理耗时费力,且不利于非专业人员进行操作,因此需设计相应的地面处理软件,实现“一键式数据处理”,并生成相应的检测报表,大大提高轨道检测的效率[1]。
传统的文本编程语言如C++、java等基本满足各种数据处理系统的要求,但对非软件专业的工程人员而言,这种方式编写难度大,开发周期长,后期维护程序繁琐[2-3]。LabVIEW图形化开发软件将常见的人机交互按钮、通讯接口、文件I/O、数组操作、信号处理、Word/Excel文件操作工具进行了封装,编写简单、操作方便,可大大缩短工程软件的开发周期[4-5]。同时,LabVIEW中可调用Matlab Script节点,对于数据处理类软件的编写带来了极大的便利[6];Python在基于深度学习的图像处理方面具有强大的优势,同时可以对程序进行打包,通过LabVIEW直接调用,互不影响,适合联合开发[7-9]。
本文主要介绍基于LabVIEW、Matlab和Python混合编程的高速磁浮轨道检测系统地面处理软件的基本架构和各部分的主要功能与技术要点,提供一种简单的混合编程方法。
按照检测对象的不同,高速磁浮轨道检测系统地面处理软件主要分为3个模块:不平顺处理模块、磁场处理模块和图像处理模块,3个模块的功能相似但互不干扰,各自可独立运行与维护。除此之外,该软件需具备以下优点:1)可对轨道检测设备导出的数据文件直接处理,无需进行文件格式转化等繁琐操作;2)软件的操作方式需简单,方便一线工人使用,例如一键处理、一键打印检测报表等;3)处理算法参数调整部分需设置相应的帮助文档,方便技术人员进行远程指导调参;4)轨道检测数量大,处理时间长,处理过程中需设计对应的进程提示窗口或错误提示,以免出现死机却盲目等待的状况;5)报表需清晰明了地体现检测结果,对于轨道异常情况需提供具体的故障种类和位置。
设计的高速磁浮轨道检测系统地面处理软件的系统分层结果如图1所示。数据层是数据处理的核心,涉及到软件的运行效率,其主要负责对输入数据的解析、各传感器数据的融合、对用户操作状态的监控、处理子系统间的数据传递及数据的查询与管理[10];表示层涉及到人机交互,其主要包括用户的操作界面、曲线显示面板、参数设置、操作提示及检测结果报表[11-12]。
图1 地面处理系统分层体系结构图
此外,为方便一线工作管理,增加了用户注册与登录功能。地面处理软件整体的工作流程如图2所示。
图2 软件工作流程图
如图3所示,高速磁浮轨道检测地面处理软件不平顺处理模块需完成的功能包括:多传感器采集信号的显示、里程信号与传感器采样点的位置匹配、空间滤波、轨道设计线形干扰(弯道、坡度)的剔除、列车振动干扰剔除、垂向、导向长波不平顺特征识别、定子错牙特征识别、检测结果显示及报表生成。轨道不平顺检测算法由Matlab脚本完成,具体可在Matlab处理软件中完成程序编写与调试,实现对应功能后直接迁移至LabVIEW运行。
图3 不平顺处理模块结构示意图
如图4所示,高速磁浮轨道检测地面处理软件磁场处理模块需完成的功能包括:各磁敏传感器三轴磁场的显示、里程信息与磁场信息的匹配、检测距离波动对磁场检测结果干扰的剔除、定子片间短路故障特征识别、检测结果显示及报表生成。轨道长定子磁异常检测算法同样由Matlab脚本完成,具体方法同轨道不平顺检测模块。
图4 行波磁场处理模块结构示意图
如图5所示,高速磁浮轨道检测系统地面处理软件图像处理模块需完成的功能包括:轨道定子面图像、线缆图像及螺栓图像的显示、图像与位置信息的匹配、图像处理结果的标注、报表生成。轨道定子面图像检测算法由Python编写,封装后通过LabVIEW调用Windows命令实现LabVIEW与Python的切换。
图5 图像处理模块结构示意图
高速磁浮轨道检测系统地面处理软件的界面如图6(a)~(f)所示,各处理模块的界面元素可分为三大类:原始数据(图像)显示区域、用户操作区域及处理结果显示区域。登陆界面、注册界面与一般网站功能及使用方法均相同,不再赘述。
图6 地面处理系统界面设计
1)原始数据显示区域主要用到LabVIEW中的波形显示控件,可进行多通道显示,同时其自带的图例与图形工具选板可完成对信号波形的隐藏/显示、放大/缩小、移动及游标显示,使用方便,避免了java/C++编程中对鼠标动作的监控,大大降低了编程难度。
2)用户操作区域主要用到文件路径输入控件、按钮、枚举、文本输入、文本显示及进度条显示控件。手动导入需处理的原始数据、输入对应名称、设置相应参数,最后点击开始处理,等待处理完成即可,处理过程无需工人参与,操作简单不易出错。图像处理模块也只包括路径选择与开始处理两个部分,使用简单方便。
3)处理结果显示区域主要用到表格控件,其行列自适应设置,显示格式为字符串类型,可显示内容丰富。不平顺处理模块可显示左高低、右高低、左导向及右导向不平顺异常值即对应里程;磁场处理模块可显示3种处理算法各自处理结果,包括磁异常位置信息和磁场异常程度;图像模块可直接在图中标明异常位置,同时完成对故障的分类,及具体显示定子面擦伤、裂纹、脱落、破损、线缆下挂及螺栓缺失。
为满足实际工程需要,结合LabVIEW、Matlab和Python进行混合编程,下面主要介绍以上3种编程语言的具体结合方法。
2.2.1 Matlab script实现处理算法
除LabVIEW自带的信号处理及数学分析工具外,可采用灵活度更高的Matlab script脚本,通过添加相应的输入输出、设置数据类型,可将调试正常的Matlab脚本直接迁移至LabVIEW中运行,如图7所示。这种运行调用方式虽然要求软件运行平台配置对应的Matlab环境,但是给算法的编写和后期修改完善带来了极大的便利。
图7 Matlab script调用示意图
2.2.2 LabVIEW与Python结合实现子模块切换
为避免调用子Vi时的内存冲突和前/后面板隐藏切换问题,将各处理子模块(不平顺、磁场、图像)封装成可执行“.exe”文件,在选择界面通过执行系统命令“Exec.Vi”进行调用[13],这种调用方式不受调用对象类型、文件路径、文件命名方式(中英文均可)的影响,各模块间互不干扰,独立运行。该系统中,不平顺模块和磁场模块利用LabVIEW进行编写,图像模块通过Python实现。同时,该命令可从Vi内部执行或启动其他基于Windows的应用程序、命令行应用程序、(Windows)批处理文件或(macOS和Linux)脚本文件,方便后期采用各种编程工具对该系统的功能进行扩展。
本文采用的调用方法如图8所示,其中用户动作由事件结构对界面按钮值的监测实现,当某处理模块执行结束后,可在“select界面”重新进行选择。
图8 Exec.Vi调用方法
利用LabVIEW方便快捷的交互设计功能,实现用户登录与注册、原始数解析和检测报表生成。
2.3.1 用户信息录入与确认
该功能对应登陆及注册界面,判断逻辑如图9所示。
图9 用户信息确认逻辑
利用事件结构,根据用户动作进入相应的环节;注册信息(姓名-工号-密码)以字符串格式“%s”存储于本地“registerFile.txt”文件。过程中采用“单按钮对话框.Vi”进行登陆成功/注册成功/密码错误/工号错误等提示。
2.3.2 原始数据的解析
不平顺单元和磁场单元采用统一的“.txt”数据存储格式,为了适应不同类型数据长度不一致的问题,采用可变数据帧长结构,加入帧类型及数据长度的内容,格式如下表1所示。图像模块直接显示灰度图像,不存在原始数据解析。数据帧类型定义如图10所示。
表1 数据帧格式
图10 数据帧类型定义
根据该帧格式对原始数据进行解析,封装成如图11的子Vi,方便调用。其中,左侧/右侧数据为3维数组格式,分别包括不平顺数据和磁场数据。
图11 原始数据解析Vi
2.3.3 检测报表的生成
LabVIEW自带的报表生成模块包含简单word/excel Vi,本文使用“Word Easy Text Vi”可实现word中的基本操作-表格,标题,插图,基本符号等[14]。本系统设计的报表格式如图12所示,以不平顺模块为例,文件名格式为“时间(2020.01.01)+高速磁浮轨道不平顺(磁场、图像)检测结果”。
图12 不平顺检测模块报表格式
利用搭载式高速磁浮轨道检测系统的数据进行测试,基本功能正常。主要从软件运行所占内存、处理速度及Vi节点来评估软件的性能。
测试设备:Intel(R) Core(TM) i5-6300U @2.40 GHz,内存8.00 GB,Windows 10,64位操作系统。
表2为登陆模块(user.Vi)、注册模块(register.Vi)、功能选择模块(select.Vi),不平顺处理模块(bps.Vi)和磁场处理模块(mag.Vi)的内存使用情况,对照标准为LabVIEW 2020简单动态信号分析仪(dsAnalyzer.Vi)范例程序。测试结果表明,所设计的高速磁浮轨道检测系统地面处理软件内存占用情况正常,可在一般的办公平台运行。
表2 各模块内存使用情况 kB
表3为关闭其他软件的前提下不平顺模块、磁场模块及图像模块离线处理速度的测试结果,并折算为1 km检测数据的处理时长。测试结果表明,不平顺模块与磁场模块处理速度满足要求,图像处理模块受计算机配置影响,处理速度较慢,除从算法层面提升处理速度外,也应针对该模块选择更高性能的计算平台。
表3 各模块处理速度
文本类编程语言的代码评估指标包括代码长度、复用代码占比,而LabVIEW图形化编程语言一般通过Vi的节点来评估代码规模[15]。测试结果表明,由于各模块功能化差异较大,本软件的代码复用性较低。由表4可以看出,只有不平顺模块及磁场模块存在少量代码复用情况,复用部分为原始数据解析、报表打印、处理结果显示。
表4 主子Vi代码量估算及其占比
提出的基于LabVIEW、Matlab和Python混合编程的高速磁浮轨道检测系统地面处理软件可满足实际工程中大量数据离线处理的需求,同时具有如下优点:
1)混合编程方式在保证数据处理基本功能的前提下大大降低了软件开发难度,有效缩短了开发周期;
2)不平顺模块、磁场模块及图像模块封装成.exe文件进行调用的方式避免了各模块间的内存冲突,方便调试,且易于进行功能扩展;
3)经测试,该软件运行稳定,满足高速磁浮轨道检测数据的处理要求,其内存使用与代码量合理,但算法仍需进一步改进,提高图像模块的处理速度,提高检测效率。