APP下载

基于前后端分离架构的航标遥测遥控物联网系统的设计

2023-07-26肖和锋李文华雷佳千詹炜

电脑知识与技术 2023年16期
关键词:航标航道分支

肖和锋,李文华,雷佳千,詹炜

(长江大学 计算机科学学院,湖北 荆州 434000)

0 引言

随着物联网技术的不断发展和相关产业的不断成熟,人们对物联网设备的实时监测的需求与日俱增[1]。长江上下游的地势起伏变化是比较大的,一般来说,船道的弯、窄、浅、险,导致航行困难,又因较多礁石分布在其中,所以安全航行对航标有着较高的依赖性[2]。航标是船舶的眼睛,航标的技术状态直接关系到船舶的航行安全,所以航标的技术状态牵系航道上每一艘船舶的安全[3]。有效监控航标的实时状态,对船舶的安全通行至关重要。在航道交通业中应用物联网技术是实现水上交通业数字化和智能化的重要手段,也是未来的发展趋势[4]。要想更好地管理物联网设备,势必要打造一个健全的物联网系统,于是基于Web开发物联网应用系统的现实需求,以航标遥测遥控系统为例介绍物联网应用系统开发的框架和方法。通用的物联网系统由三部分构成,感知层、网络层和应用层。本系统的感知层:为了实时监控航标灯的状态,给航标安置有RTU 终端设备,采用自主可控的北斗定位技术实时定位航标位置;网络层:使用Go 语言实现自主通信协议的通信服务;应用层:采用Go、Gin 等技术作为后端API 服务,采用Vue.js、Element-plus 等技术设计了前端,可通过Web 界面实时监测航标的实时状态和对历史状态进行查询、展示和管理,并支持数据的下载和航标报警及维护。系统编码摒弃了集中式代码复制粘贴式管理,而是采用git分布式代码管理工具和CODING DevOps 代码管理平台管理代码。本系统和大多数前后端分离系统不同的是,采用Go语言轻量化实现多平台支持,实现了真正的跨平台,而非Java语言借助庞大的虚拟机。

1 需求概述

1.1 需求分析

航标遥测遥控系统是依靠浏览器展现整个系统,数据由后端API服务提供支持,界面与通信服务实时保持通信,实时监控航标状态。为满足不同角色的航道管理部门人员对系统的使用,整个系统应具备完整、健全的分用户航标监管和维护功能。

系统从使用者角度来看,可分为两大类:一类是系统管理员,一类是系统使用员:局领导、监控值班员、航道处负责人、航道处航标员。系统管理员主要是管理整个系统的正常使用,如部门管理、菜单管理、用户管理、海图管理、字典管理、参数设置、通知公告和日志管理等。

系统使用人员,即是航道部门工作人员。从这些系统使用者可以看出,每个人对系统的关注点都不一样。对于局领导,他主要是查看航标系统监控的大体情况,需要了解某航处或全航处的航标的运行统计信息,对全局的把控。从监控值班员来看,他需要定时动态监测某处航标的实时状态信息,关注的是具体某处某个航标,根据航标报警状况提交航标报警信息,交由后续的航标员处理。航道管理处负责人是某处航道的小队长,负责管理他所管辖的航标并分配给具体的航标处置人员(航道处航标员),小队长主要是看他管辖的航标信息和航标状态,以及航标报警情况和航标维护完成度,此外还有该航处的航标统计相关数据。航标员,主要处理航标失常,根据系统上航标报警信息去处置航标;存在航标维护任务时,接收任务后参与现场维护工作,在系统上提交完成维护任务。

1.2 技术选型

1.2.1 Go和Gin相关技术

Go 语言、Gin 框架、GORM、go-cache 和viper 等技术,Go语言是一门原生支持并发操作的跨平台的轻量级语言,常被称为“现代版C 语言”[5]。Gin 是轻量级、内存占用少、可扩展、路由组等功能于一身的Web 框架。GORM是一个对象映射框架,支持操作对象的模式CRUD操作MySQL数据库,以及对象关联模式和事务等支持。go-cache 是一个轻量级的内存缓存组件,进程内的缓存使用。viper是一个配置文件读取组件,项目中使用yaml格式文件。

1.2.2 Vue和WebSocket相关技术

Vue 是一个易学易用、性能出色和适用场景丰富的Web 前端框架。Vue 结合Vue-Router、Axios、Element-plus、Pinia、Mitt、WebSocket和OL等技术构建强大的前端页面。Vue-Router 属于Vue 生态体系中的路由组件,用于创建单页面应用。Axios 则是一个异步请求框架,用于和后端http 异步通信。Elementplus 是一个饿了么团队提供的UI 框架,简洁而美观。Pinia 是一个前端存储组件,用于存储应用信息。Mitt是一个事件总线库,用于Vue 中不同页面之间的通信。WebSocket是一个不同于HTTP的应用层协议,用于和通信服务实时通信。OL库则是OpenLayers,用于地图显示。

2 系统设计

2.1 系统结构设计

航标遥测遥控系统可由5 个部分组成,如图1 所示,通信服务、Web前端服务和后端API 服务,此外系统地有效正确运行还离不开航标设备和数据库。由航标设备上的终端设备发送航标实时状态数据给通信服务程序,通信服务程序将航标状态实时信息写入数据库,并按需通知Web 前端页面,Web 前端页面从后端API服务中获取航标数据。

图1 系统结构图

2.2 系统功能设计

航标遥测遥控系统的功能主要涉及七大模块,如图2所示。现在简单介绍如下:

图2 系统功能结构图

数据大屏主要是美观展示,以图表展示当前系统中航标的总量、航标工作状态、航标失常、航标维护和航标年度失常统计,以列表流动式展示各航道处航标失常和航标维护信息条目等。

动态监测是本系统最为复杂的一块,集成了其他模块的功能。这一块以地图为载体显示航道上的航标,航道上的每一处航标都清晰可见,可以点击查看航标的实时状态和航标信息,支持定位搜索航标等功能。

航标管理包括四个子模块,分别是:实时状态、历史状态、航标定义和终端列表。实时状态,可以按航标处、航标类型等参数搜索航标的实时状态信息。历史状态,根据历史时间范围查看某个航标的状态信息。航标定义、添加、删除和修改航标基本数据。终端列表,查看所有在用终端设备的情况,以及终端历史状况等。

航标报警包括当前报警、未处置报警和报警历史三个模块。当前报警,由监测人员上报报警后,方可在此处按航标处、航标名称等条件搜索到各个航标的报警情况。未处置报警,单独成立一块,方便查找待处理的航标,并及时对报警航标做出处置。报警历史,查看航标历史报警信息等。

航标维护包括三个子模块,分别是接收任务、完成任务和维护历史。航标员在接收任务页面接收待维修航标的任务,待现场维修任务完成后,再在完成任务页面上报任务完成情况,涉及上传视频或图片等信息。航标员可以按时间范围查看维护历史信息等。

分析统计,就是各种信息的统计报表输出,包括:航标基本信息、航标失常、同期间航标失常对比、航标失常周期环比、航标维护、同期间航标维护对比和航标维护周期环比等。

系统管理主要辅助系统运行的,包括部门管理、菜单管理、用户管理、海图管理、字典管理、参数设置、通知公告和日志管理等。

3 系统实现

由于系统功能模块较多,受篇幅限制,这里仅对部分模块简单描述。

3.1 git协作工作流

如图3所示,项目开发时,使用git初始化项目,默认存在一个主分支(master) ,表示项目的最终产品。根据开发的需要,需要创建更多的分支。从上到下,由三部分组成:主分支、开发分支和功能分支,它们就像是三条流水线。在主分支的基础上,建立出开发分支,项目开发完成后,将开发分支合并到主分支上。当出现新的功能需求时,在开发分支上建立功能分支,功能分支上的功能完成后合并到开发分支,最后一起合并到主分支。

图3 git工作流图

3.2 航标管理实时状态

如图4 所示,用户进入系统,先选择航标管理菜单,再选择实时状态子项。在此页面,用户可以按航标处、航标名称、航标类型为搜索条件查询航标实时状态数据和导出航标实时状态数据,实时状态数据包括:航标号、航标名称、航标类型、工作状态、灯光状态等。此外,页面还展示了航标状态统计信息,包括目前在用航标总数,航标在线、通信失常、灯光失常、标志失常、标位失常和参数失常数量。表格中的每一行数据都支持查看航标的明细状态信息以及历史航标状态信息,以及通过控制可以实时操控航标。当页面收到来自通信服务发送的航标状态更新时,自动更新页面数据。

图4 实时状态图

3.3 系统部署

如图5所示,系统部署阶段,建立了一个私有云环境,将系统的不同组成部分放置在这个网络中的不同主机上,用户通过开放的一个节点固定访问系统内的资源。

图5 系统部署图

4 结束语

本文提出了一种开发物联网系统的解决方案,采用了Go 1.18作为后端开发语言,使用MySQL 8.0作为数据库和Vue 3 作为前端,根据航道相关部门对航标遥测遥控管理的实际情况,结合业务流程,确定了前后端分离的系统框架,对功能模块、数据库进行了深入分析与研究,切实完成了系统设计、代码编写、测试和部署,使用现代主流的git 分布式代码托管方式,与项目组分工完成系统实现。

猜你喜欢

航标航道分支
航标工
巧分支与枝
一类拟齐次多项式中心的极限环分支
新航道
我国首条40万吨级航道正式开建
虚拟航标的作用与应用前景
生成分支q-矩阵的零流出性
我国首条40万吨超大型航道将迎来开工建设
锦州港拟定增逾十四亿元扩建航道
硕果累累