基于MVVM架构的数控机床远程数据采集软件设计与实现
2024-06-04金应威汪木兰周义皓周明虎李丽颖
金应威 汪木兰 周义皓 周明虎 李丽颖
摘要:数控机床发生故障可能会导致零件报废和生产停滞,给制造企业造成经济损失。为了实现高端数控机床全生命周期接近零故障运行,不至于出现停机事故,基于模型—视图—视图模型(Model-View-ViewModel,MVVM)架构开发了数控机床远程数据采集软件系统,并将运行状态数据上传云平台,以供分析统计和存储回溯,从而监测数控机床的健康状态,甚至可以提前预报故障隐患。通过德西MVC-L640 数控机床验证,远程采集数据与FANUC 系统内部存储一致,说明设计软件达到了预期目标。
关键词:数控机床;数据采集;MVVM 架构
中图分类号:TP311.52;TP274.2 文献标识码:A
0 引言
采用传统故障诊断技术对复杂的高端数控机床等制造设备进行诊断和维修,其难点在于故障过程往往不能复现,这会影响诊断速度和修复时间,从而导致维修成本增加。通过充分利用数控系统的二次开发功能,实现对数控机床设备进行实时监控、状态采集、数据分析和结果存储等,满足生产厂家远程监测机床运行状态的需求,甚至提前对故障隐患进行报警,极大简化了维修流程[1]。
本文设计的数控机床远程数据采集软件系统以德西MVC-L640 为应用对象, 该机床装配有FANUC 0i-MF 系统,具有高速网络接口,数据传输速率达到100 Mb/s。基于模型—视图—视图模型(Model-View-ViewModel,MVVM)架构开发的数控机床远程数据采集软件系统在该架构下的代码结构清晰,可维护性好,便于后期升级,提高开发效率。该系统可以实现远程状态监测、数据采集和传输、运行数据可视化、结果存储和故障报警等功能,在高效生产、健康管理、售后维护等方面为数控机床提供有力支持。
1 系统设计
1.1 系统总体设计
为了实现数据可视化、远程监测等功能,数控机床远程数据采集软件系统采用3 层架构设计,分别为提供数据的物理设备层、实现业务逻辑处理的软件层与远程监测的云服务平台层。该系统在本地端进行机床状态数据的采集和展示,同时通过消息队列遥测传输(message queuing telemetry transport,MQTT)协议上传至云服务平台,以实现远程数据实时监控,系统架构如图1 所示。
为了使数控机床远程数据采集软件具有易开发、可维护、高内聚低耦合等特点,需要对软件整体进行详细设计。该软件最终实现本地与云平台同步实时监测数控机床状态的功能,因此系统采用客户机/ 服务器(client/server)的架构设计。
在这种结构中,通常由专业工作站或高性能个人计算机(personal computer,PC)部署服务器,内嵌大型数据库系统,在用户端开发专用的客户端软件,充分利用硬件环境优势,合理分配任务,极大降低系统通信开销。该客户端采用MVVM 架构,结合Prism 框架实现视图层与数据解耦合,通过Prism 的导航框架实现不同页面之间的切换,并且可以仅切换局部页面,降低内存使用压力。通过组件的复用,可以降低代码量,提高代码可读性与系统开发效率[2]。
每一个组件都包含3 个部分:View、Model、ViewModel。通过View 展示用户界面(userinterface,UI), 与用户进行交互,ViewModel 对用户发出的指令进行业务处理,在Model 中处理数据,并基于绑定机制,将ViewModel 中的变化通知到View,使View 及时做出对应的变化。
1.2 功能模块设计
数控机床远程数据采集软件包含4 个模块,分别为用户管理、系统配置、数据处理、数据管理与上云。系统模块设计如图2 所示。
用户管理模块包含4 个部分:用户登录、用户注册、修改密码和权限验证。用户登录是通过验证用户输入的账户密码与服务器存储账户密码是否一致,决定登录是否成功;用户注册是采用MD5 消息摘要算法加密技术,将用户输入的账户密码信息加密、存储至服务器端并记录用户权限等级;修改密码是通过修改数据库中存储信息来修改用户密码;权限验证是通过加载服务器中用户权限来区别用户等级。
系统配置模块包含数据库连接配置、机床IP地址配置、机床端口号配置、MQTT 连接配置等4 个部分。在数据库连接配置中可以修改连接到的服务器;在机床IP 地址配置与机床端口号配置中可以修改IP 地址与端口号,从而实现不同机床的连接;在MQTT 连接配置中设定云平台的连接与否和连接密钥配置。
数据处理模块包含对数控机床不同数据的采集,并通过不同组件使数据可视化,这些数据分别是设备当前连接状态、工作总时间、工件总计数、主轴转速、进给倍率、切削速度、开机时长、运行时长、切削时长、数控机床(computer numericalcontrol machine tools,简称CNC)类型、CNC 系统型号、CNC 工作模式、当前报警记录、历史报警记录、伺服系统相对坐标与绝对坐标、主程序号、当前运行程序号、当前程序运行行号等[3]。
数据管理与上云模块包含数据存储与输出(数据管理部分)和上传阿里云平台(上云部分)。数据管理部分实现存储、采集数据和导出历史数据功能;上云部分通过MQTT 协议将数据实时上传至阿里云界面并存入云端服务器,提供远程监控功能。
2 关键技术
2.1 数据采集技术
本软件采用基于TCP/IP(transmission controlprotocol/internet protocol, 传输控制协议/ 网际协议)接口的FOCAS 开发数据通信协议,通过高速串行总线(high-speed serial bus,HSSB)或者以太网TCP/IP 与设备进行连接。该协议用于FANUC 公司的CNC、机器人和通用可编程逻辑控制器(programmable logic controller,PLC)進行数据交换。由于该协议采用C++ 语言编写,为保证编译语言一致性,将其封装成动态链接库,在开发时通过引用动态链接库进行代码调用,用户可以基于该协议进行上位机操作软件的开发或定制PLC 模块与下位设备数据交互组件,通信框架如图3 所示。
在实际使用C# 语言编程中,首先在项目中添加FOCAS 的fwlib32.dll 文件和fwlib32.cs 类库,通过调用其中的函数实现上位机与CNC 的通信以及数据采集功能,实现步骤如下[4-5]。
步骤1:将FOCAS 的fwlib32.dll 文件和fwlib32.cs类库复制到应用程序所在的文件夹中。
步骤2:在源程序中添加已有项目fwlib32.cs类库。
步骤3:在系统界面中,依次输入IP 地址和端口号,点击“连接”按钮,后台通过调用函数cnc_allclibhndl3([In,MarshalAs(UnmanagedType.AsAny)]Object ip,ushort port,int timeout,outushort FlibHndl), 建立通信连接。该函数有4 个参数,ip 表示CNC 地址;port 表示端口号;timeout 表示溢出时间;FlibHndl 表示连接句柄。
步骤4:数据传输,运用FOCAS 提供的库函数,完成上位机与数控系统的双向通信,实现数据采集。
步骤5:调用cnc_resetconnect(ushort FlibHndl)方法,释放句柄,断开连接。
2.2 数据双向绑定技术
由于数控机床远程数据采集软件对数据实时性要求很高,需要软件具备实时刷新数据的功能,本软件能够实现视图层与数据层之间交互的关键是使用了数据双向绑定技术。在本软件开发中,通过MVVM 架构与Prism 框架实现数据双向绑定。如图4所示,在MVVM 架构中Model 不响应任何用户的操作,其通过View 层、ViewModel 层与用户进行交互,MVVM 架构的核心组件是ViewModel 层。在ViewModel 層使用依赖倒置原则(dependencyinversion principle,DIP)实现软件高内聚低耦合的特点,ViewModel 层提供业务逻辑处理方法用于处理用户交互,并将Model 层中封装好的属性暴露或者变为实例对象传至View 层。当Model 层有数据变动时,利用观察者设计模式监听数据变动,通知ViewModel 层并刷新View 层中的视图,保持数据的一致性与实时性[6]。
2.3 页面渲染与更新技术
数控机床远程数据采集软件具有多个模块,需要展示机床多个数据,在对数据可视化图表刷新的过程中需要对当前页面进行重新渲染或更新。在C# 语言编程中使用XmlDocument 类对文档对象模型(document object model,DOM)进行操作,由于图表中的数据值与DOM 中的节点一一对应,当页面进行重新渲染或更新时,会更新DOM 中的节点,如果对整个节点树进行刷新会浪费大量内存资源,产生不必要的计算[3]。
在本软件中使用Diff 算法实现页面刷新。Diff算法的核心是尽可能少地修改DOM 结构,避免更新整个DOM 结构。该算法优点在于可降低软件开销,提高刷新效率,避免在高速采集数据时,由于大量刷新DOM 结构导致出现页面视图卡顿、软件卡死等情况。在数据发生变更时,Diff 算法会生成新的虚拟DOM 结构对象,通过依次对比新旧虚拟DOM 结构对象中的根节点、子节点,确定需要修改的最小节点,最后再更新至真实的DOM 结构中。如图5 所示,Diff 算法可以做到修改最少的子节点从而完成页面的渲染与更新。
2.4 数据上云技术
数控机床远程数据采集软件需要将本地数据上传至云端实现远程监控功能,在本软件中使用MQTT 协议进行消息传输。MQTT 协议是消息队列遥测传输协议,是一种建立于TCP/IP 协议之上、基于发布/ 订阅模式的轻量级协议[7-8]。
在本软件中,数据管理与上云模块将数据打包封装进Model 对象然后转为报文发送给云服务器,通过系统配置模块管理云平台的用户名与密码,保证了通信安全。云平台选择订阅相关主题,接收采集到的机床数据信息,在使用MQTT 协议时采用异步编程,降低耦合度,并且软件无须等待云平台的回复响应,提高了软件的响应速度。此外,采用心跳机制来验证设备是否在线,提高软件运行速率。
3 软件实现
3.1 软件流程
数控机床远程数据采集软件实现了用户管理功能、数据采集及可视化功能、系统配置功能、数据上云功能。软件流程如图6 所示。
3.2 数据可视化
在数控机床远程数据采集软件中,需对机床主轴转速、进给倍率、切削速度进行数据可视化展示。在实际开发过程中使用LiveChart 组件作为可视化组件,LiveChart 是Windows 呈现基础(windows presentation foundation,WPF)、WinForm等后端技术提供的开源图表可视化库,该库提供了多种类型图表供开发者使用,如折线图、曲线图、柱状图、饼图、散列图等。这些图表都支持自定义功能和丰富的用户交互功能。LiveChart 可以将数据以图像的方式进行展示。趋势图可以直观地展示机床实时数据变化,去掉以往仅能显示当前数据的列表形式,采用动态的图形使用户更好地掌握设备情况。当监控数据出现异常时,软件能够及时报警并标红,使用户可以第一时间观察到提示信息。
3.3 性能优化
数控机床远程数据采集软件与一般上位机软件的区别在于其采用了更多技术进行系统性能优化,保证软件在低配置设备上也能流畅运行。本软件运用了分布式技术对大流量数据进行处理,保护关键信息,降低了软件内存占用率;通过消息队列请求排队处理,在面对高峰数据量请求时增加系统吞吐量[9];通过调用系统的G 显卡对图像进行渲染,避免单纯依靠处理器渲染图像导致的卡顿、死机等现象,提高了软件的运行流畅度。
4 结语
本文以德西MVC-L640 数控机床为试验对象,通信采用FOCAS 协议,软件采用MVVM 架构,以降低软件系统耦合度、程序内存占用、后期维护和开发新功能难度,提高程序可读性。相较于WinForm 架构,MVVM 架构可以轻易地修改功能,如将主轴转速曲线图更改为折线图,只需更改View 層显示模型,而其他层无须变动,从而提高软件二次开发效率,并降低代码出现错误的可能性。采用MQTT 协议,实现了设备数据上云功能,设计了存储历史数据的数据库,将数控机床运行数据上云,实现数据远程存储与下载。通过友好的用户交互界面,以多种控件方式展示采集数据,实现可视化功能。
根据数据库前1 000 条信息的对比统计,本软件系统采集的数据与机床内部数据一致,实现了德西MVC-L640 数控机床运行数据采集功能,从而为后续开发数控机床设备全生命周期的健康管理系统奠定了基础。
参考文献
[1] 汪木兰. 数控原理与系统[M]. 北京:机械工业出版社,2004:213-218.
[2] 游俊慧. MVC、MVP、MVVM 三种架构模式的对比[J]. 办公自动化,2020,25(22):11-12,27.
[3] 梁文婧,张宏海,张蕾蕾,等. 基于MVVM 模式的中国科技云门户管理系统的设计与实现[J]. 数据与计算发展前沿,2022,4(2):99-108.
[4] 刘广琪. 基于FANUC 数控机床的数据采集系统的设计与实现[D]. 成都:电子科技大学,2020.
[5] 王萌,闫磊. Fanuc 数控系统数据采集与主轴负载监视系统[J]. 机电工程技术,2020,49(9):58-59,150.
[6] 高照. 基于MVVM 模式的协同工作平台的设计与实现 [D]. 北京:北京邮电大学,2020.
[7] 闵强. 基于互联网的数控机床运行状态监控技术研究[D]. 武汉:武汉理工大学,2016.
[8] 宋宜璇,童一飞,缪方雷,等. 基于物联网的数控机床群状态监测研究[J]. 机械设计与制造工程,2023,52(6):13-18.
[9] 刘峰,鄂海红. 基于海量数据的消息队列的性能对比与优化方案[J]. 软件,2016,37(10):33-37.