基于物联网的大型电机远程监测系统的移动端设计
2022-08-29徐志祥牛小刚李春秋曹冰冰
徐志祥,牛小刚,李春秋,曹冰冰
(大连理工大学 机械工程学院,辽宁 大连 116024)
0 引 言
大型电机是船舶、能源、军工等行业重要装备的关键动力装置。大型电机在运行过程中突然发生故障,将带来不可估量的损失,确保其安全、稳定、高效运行事关重大。如何对大型电机进行远程监测受到广泛关注。随着物联网技术的快速发展和智能手机的广泛应用,使得通过移动端实现大型电机的远程监测变为可能。
鉴于此,本文以物联网三层架构为基础研究基于Android平台的大型电机远程监测技术,将电机的运行状态通过物联网呈现在智能手机上,帮助用户随时随地掌握电机的运行状态,实现对大型电机的远程监测,并为大型电机的故障诊断打下基础。
1 移动端功能设计
基于物联网的大型电机远程监测系统由感知层、网络层和应用层组成,系统框架如图1所示。其中,感知层负责数据的采集,网络层负责数据的计算和数据存储,应用层负责数据的显示和人机交互。不同的用户通过应用层对不同的大型电机进行远程监测,以及时发现并消除大型电机的故障,避免造成严重的后果。
图1 基于物联网的大型电机远程监测系统框图
移动端为了能够反映大型电机的实时运行状态和历史运行状态,需要实现实时参数监测功能和参数监测历史查询功能;为了能够及时通知用户处理大型电机的故障,需要实现故障报警功能;为了能够反映大型电机的故障历史,需要实现故障报警历史查询功能。
(1)登录功能
移动端根据登录用户的不同加载不同的电机数据。
(2)实时参数监测功能
移动端根据用户选择的电机和参数,以折线图的方式显示某个电机的实时数据。
(3)参数监测历史查询功能
移动端根据用户选择的电机、参数和时间,以折线图的方式显示某个电机参数的历史数据,并根据用户的操作对折线图进行缩放和平移。
(4)故障报警功能
当某个电机运行状态异常时,移动端将产生故障的电机、产生故障的时间、产生故障的参数等以通知的方式告知用户,以及时处理故障,避免造成更严重的后果。
(5)故障报警设置功能
移动端根据用户的操作判断是否允许接收故障报警以及在允许接收故障报警时是否开启声音和振动。
(6)故障报警历史查询功能
移动端根据用户选择的电机,以二级列表的方式显示某个电机的故障报警历史。
(7)故障报警历史清除功能
移动端根据用户的操作判断是否清除缓存的故障报警历史。
2 移动端架构设计
目前,移动端架构模式主要有MVC(Model-View-Controller)、MVP(Model-View-Presenter)、MVVM(Model-View-View Model)三种。与其他两种架构模式相比,MVP架构模式不仅实现了Model层与View层的分离,而且具有较高的代码复用性。因此,移动端采用MVP架构模式,其中,Model层负责移动端的数据处理,View层负责移动端的数据显示,Presenter层负责Model层与View层的数据通信。MVP架构模式框架如图2所示。
图2 MVP架构模式
3 移动端数据存储
目前,移动端的数据存储方式主要有文件存储、SharedPreferences文件存储以及SQLite数据库存储。其中,文件存储适合存储无格式的数据,SharedPreferences文件存储适合存储格式简单、批量较小的数据,SQLite数据库存储适合存储格式复杂、批量较大的数据。
移动端需要存储用户信息和电机信息。由于用户信息格式简单、批量较小,所以采用SharedPreferences文件存储,用户信息的存储格式见表1所列;由于电机信息格式复杂、批量较大,所以采用SQLite数据库存储,电机信息的存储格式见表2所列。
表1 用户信息的存储格式
表2 电机信息的存储格式
对于故障报警设置功能,移动端需要存储用户设置。与用户信息相比,用户设置具有相同的特点,所以采用SharedPreferences文件存储,用户设置的存储格式见表3所列。
表3 用户设置的存储格式
对于故障报警历史查询功能,移动端需要存储故障报警历史信息。与电机信息相比,故障报警历史数据与其具有相同的特点,所以采用SQLite数据库存储,故障报警历史信息的存储格式见表4所列。
表4 故障报警历史信息的存储格式
4 移动端数据处理
移动端主要通过Activity组件、Fragment控件及Service组件实现相关功能。以下主要介绍登录功能、实时参数监测功能、参数监测历史查询功能、故障报警功能与故障报警历史查询功能的数据处理。
4.1 登录功能
移动端登录功能的数据处理流程如图3所示。在用户登录时,应用程序会判断SharedPreferences文件中是否存在用户的账号和密码。如果存在用户的账号和密码,则从SQLite数据库中的电机信息表加载电机数据;如果不存在用户的账号和密码,则显示登录页面。用户通过登录的方式使移动端从服务端获取电机数据。如果登录成功,应用程序会首先将用户的账号和密码写入SharedPreferences文件,并将电机数据写入SQLite数据库中的电机信息表,然后从SQLite数据库中的电机信息表加载电机数据并显示主页面;登录失败时,显示登录页面并通过Toast通知用户登录失败。
图3 登录功能的数据处理流程
4.2 实时参数监测功能
控制器将采集的参数实时数据通过网络发送给服务端,服务端将其解析后写入数据库并在移动端请求,从数据库读出发送给移动端,移动端将其解析后以折线图的方式向用户展示。
移动端实时参数监测功能的数据处理流程如图4所示。应用程序根据用户选择的电机和参数,以1 s为时间间隔,不断向服务端发送获取该电机参数实时数据的请求。如果从服务端获取数据成功,以折线图的方式向用户展示;如果从服务端获取数据失败,应用程序会根据用户的操作判断是否重新向服务端发送获取该电机该参数实时数据的请求。如果不重新向服务端发送获取该电机参数实时数据的请求,显示操作失败页面。
图4 实时参数监测功能的数据处理流程
4.3 参数监测历史查询功能
除实时参数监测功能外,移动端允许用户查询任意电机任意时刻的历史数据。移动端参数监测历史查询功能的数据处理流程如图5所示。应用程序根据用户选择的电机、参数和时间,向服务端发送获取该电机该参数该时刻历史数据的请求。如果从服务端获取数据成功,则以折线图的方式向用户展示,并允许用户根据需要对折线图进行缩放和平移;如果从服务端获取数据失败,则应用程序会根据用户的操作判断是否重新向服务端发送获取该电机该参数该时刻历史数据的请求。如果不重新向服务端发送获取该电机该参数该时刻历史数据的请求,显示操作失败页面。
图5 参数监测历史查询功能的数据处理流程
4.4 故障报警功能
控制器采集参数数据时会根据设置的参数数据阈值判断电机的运行状态,一旦发现电机运行状态异常,就立即向服务端发送故障报警信息;服务端接收到故障报警信息后会立即将其发送给移动端;移动端通知用户及时处理故障,以避免造成更严重的后果。由于Android系统的限制,移动端接收服务端发送的故障报警信息情况分为在应用程序运行时接收和在应用程序未运行时接收两种情况。
在应用程序运行时,移动端通过消息中间件的方式接收故障报警信息。目前主流的消息中间件有RabbitMQ、ActiveMQ和Kafka等,其中RabbitMQ因具有扩展性高、可靠性好等优点被广泛应用于实际项目中。RabbitMQ的工作原理如图6所示,消息生产者将消息通过交换器传递到与交换器绑定的消息队列中存储,消息消费者与服务端建立连接后从消息队列中取出消息进行处理。
图6 RabbitMQ的工作原理
移动端故障报警功能的数据处理流程如图7所示,应用程序启动时,启动故障报警服务。故障报警服务会创建消费者并与服务端连接,一旦监听的消息队列不为空,应用程序根据Shared Preferences文件中的通知效果发送通知,通知用户发生故障的时间、发生故障的电机、发生故障的参数、发生故障的参数的值。
图7 故障报警功能的数据处理流程
因为Android系统在运行内存不够时会杀死故障报警服务,所以为了保证应用程序在运行时能够接收故障报警信息,应用程序启动时,会注册广播接收器。一旦故障报警服务终止,就发送广播;广播接收器接收到广播后会重新启动故障报警服务。在应用程序未运行时,移动端通过短信或邮件的方式接收故障报警信息。
4.5 故障报警历史查询功能
由于故障报警历史数据规模较小,移动端采用在SQLite数据库的故障报警历史信息表缓存故障报警历史数据的方式,以提高应用的响应速度。
移动端故障报警历史查询功能的数据处理流程如图8所示,应用程序根据用户选择的电机,向服务端发送获取该电机未获取过的故障报警历史数据的请求。如果从服务端获取数据成功,应用程序会首先将该电机未获取过的故障报警历史数据写入SQLite数据库中的故障报警历史信息表,然后从SQLite数据库中的故障报警历史信息表加载该电机的故障报警历史数据,并以二级列表的方式向用户展示;如果从服务端获取数据失败,应用程序会直接从SQLite数据库中的故障报警历史信息表加载该电机的故障报警历史数据,并以二级列表的方式向用户展示并通过Toast通知用户操作失败。
图8 故障报警历史查询功能的数据处理流程
5 移动端测试
为测试移动端能否正常运行,我们在基于Android10的HuaWei nova5Pro设备上进行测试。
实时参数监测功能的测试结果如图9所示,移动端能够正常显示用户选择的电机和参数的实时数据。
图9 实时参数监测功能
参数监测历史查询功能的测试结果如图10所示,移动端能够正常显示用户选择的电机、参数和时间的历史数据。
图10 参数监测历史查询功能
故障报警功能的测试结果如图11所示,移动端能够正常显示产生故障的电机、产生故障的时间、产生故障的参数以及产生故障的参数的值。
图11 故障报警功能
故障报警历史查询功能的测试结果如图12所示,移动端能够正常显示用户选择的电机的故障报警历史数据。
图12 故障报警历史查询功能
6 结 语
本文基于Android平台设计的大型电机远程监测系统的移动端,实现了实时参数监测功能、参数监测历史查询功能、故障报警功能以及故障报警历史查询功能等,具有不受时空限制的优点,能够帮助用户及时发现并消除大型电机的故障,避免造成严重的后果。