作品来源:2024届智能建造专业本科毕业设计
设计人:李航宇、郑凡超、张建翔
指导老师:骆剑彬、关振长
作品视频
作品介绍
一 作品背景
1.1 项目背景
随着工业化的快速发展,工业建筑的需求日益增加。这类建筑以其独特的结构形式和广泛的应用领域,成为现代工业建设的重要组成部分。然而,由于其结构复杂、使用周期长等特点,对建筑的健康监测和维护管理提出了更高的要求。但当今在建筑运营维护阶段的管理存在过于扁平,效率低下的问题。因此,在这样的背景下,设计与开发一个高效且完善的大跨度空间结构工业建筑健康监测系统,成为工业建筑领域亟须解决的问题之一。
1.2 研究意义
随着现代信息技术和工业化的快速发展以及工业与民用建筑结构的复杂性日趋增加,结构健康监测(Structural Health Monitoring,SHM)这一概念受到了世界范围内的高度关注,其应用已经在工程行业普及开来。多项工程的设计、施工及运维阶段都采用了结构健康监测相关系统。SHM是一种以结构特征变化为基础的一种实时监测方法,旨在检测和诊断结构损伤,并预测他们未来的变化趋势。
广联达科技股份有限公司(简称“广联达”)作为国内市场占有率较大的一家立足于建筑产业的科技企业,公司围绕工程项目的全生命周期,为客户提供数字化软硬件产品、解决方案及相关服务。而该公司基于WebGL开发的BIMFACE三维模型轻量化引擎,为本文结构健康监测系统的Web端可视化提供了更优的平台与技术支持。
为解决现存问题并对未来涉及此方向的人员提供一定的参考建议,本文选用广联达BIMFACE平台,结合FuAdmin开源框架(Vue.js + Django + Mysql)进行本大跨度空间工业建筑结构健康监测系统开发。
二 系统需求说明
2.1 项目信息管理需求
通过整合项目数据管理,提供给用户对项目相关的数据进行集中归类整理与查阅的功能。这些数据中包括相关传感器的信息,以及对应传感器采集到的数据的增删改查。BIM 信息模型管理是在BIMFace平台进行的,通过BIMFace平台对模型进行预加载,简化模型以方便在前端显示。
2.2 项目预警的需求
系统应整合不同传感器不同测点的预警范围,通过这些预警的不同阈值来对传输到数据库的传感器数据进行筛选,将超出阈值的相关数据储存到对应的预警数据表格中,并设置预警红线,当预警值超过该红线时发送对应的预警信息给用户登记在数据库的邮箱当中。
2.3 数据可视化需求
传感器数据的展示需要以柱状图或者折线图的方式进行展示,方便用户直观地观察传感器数据的变化趋势并可以对不同位置的传感器数据进行直观的比较。用户能把握工程项目结构整体健康情况,提升结构健康监测的效率。
2.4 信息处理与输出需求
该系统应该尽可能的将需要计算的部分交给计算机处理,用户则主要以输入对应数据库字段的关键字进行搜索即可。例如根据用户输入的传感器类型,传感器上传数据的时间,在不同的测点等进行搜索,从而提升用户的工作效率。系统还应该提供数据输出的功能,方便数据的传阅与存储。
2.5 系统安全与权限管理需求
本系统所使用的安全验证手段确保了系统的安全稳定运行。在前端部分,当用户输入账号和密码后,系统首先会检查这些信息的格式是否符合预设的规范。一旦格式验证通过,这些信息将被安全地传输至后端进行进一步的验证。后端验证主要依赖于Token验证机制,通过Token验证,系统能够确保用户的身份真实可靠,有效防止了外来人员的非法入侵或数据信息的篡改。
根据系统总体功能需求分析,将系统功能划分为展示板块、数据统计及预警板块、用户管理板块、系统管理板块和项目信息管理板块五个功能板块。下面将对具体的系统功能模块需求以及用户操作权限需求进行分析。
三 系统数据库设计
3.1实体关系图(E-R D)
实体关系图(Entity-Relationship Diagram, E-RD)是一种用于描述数据库中实体(如用户、产品、订单等)以及它们之间关系(如关联、依赖等)的可视化工具。它是数据库设计的重要部分,有助于开发者、数据库管理员以及用户更直观地理解和设计数据库结构。ERD在数据库设计中起着至关重要的作用。它可以帮助开发人员更好地理解业务需求,并根据此设计出满足这些需求的数据库结构。故在进行数据库结构设计之前,一个完善的实体关系图是必需的。本系统内的实体关系图构建如图3-1所示。
图 3-1 实体关系图(E-RD)
3.2 数据表
本数据库中的各功能模块的数据表结构设计表如下所示:
(1)用户信息数据结构表设计
用户信息数据结构表用于存储用户的相关信息,为了方便对系统权限进行分配管理,还应该存储用户当前所属的项目等,与用户当前的角色以及其拥有的权限等。用户信息数据结构表设计如表 3-1所示。
表 3-1 用户信息数据结构表
用户信息 |
描述 |
类型 |
字段 |
主键 |
非空 |
姓名 |
String |
username |
|
是 |
邮箱 |
String |
email |
|
是 |
电话 |
String |
mobile |
|
|
权限 |
int |
is_superuser |
|
|
编号 |
int |
user_id |
是 |
是 |
创建时间 |
datetime |
creatTime |
|
|
所属项目 |
String |
program |
|
|
用户角色 |
int |
role |
|
|
用户密码 |
String |
password |
|
是 |
(2)项目信息和传感器信息数据结构表设计
项目信息表用于存储每个项目的相关信息。其中包括了项目编号,项目名称、项目地址等信息。项目信息表设计如表 3-2所示:
表 3-2 项目信息数据结构表
项目信息 |
描述 |
类型 |
字段 |
主键 |
非空 |
项目编号 |
int |
pr_id |
是 |
是 |
项目名称 |
String |
name |
|
是 |
项目类别 |
String |
type |
|
是 |
项目模型 |
String |
model |
|
是 |
项目基本信息 |
String |
information |
|
是 |
经度 |
String |
x |
|
是 |
纬度 |
String |
y |
|
是 |
项目地址 |
String |
address |
|
是 |
项目时间 |
datetime |
time |
|
是 |
传感器信息表用于存储每个项目相关传感器的具体信息包括安装位置和安装时间等。传感器信息表设计如表 3-3所示:
表 3-3 传感器信息数据结构表
传感器信息 |
描述 |
类型 |
字段 |
主键 |
非空 |
传感器编号 |
String |
sensor_id |
是 |
是 |
传感器安装位置 |
String |
site |
|
是 |
项目编号 |
int |
pr_id |
外键 |
是 |
传感器类型编号 |
String |
sensor_type_id |
外键 |
是 |
传感器测点编号 |
String |
measurment_id |
|
是 |
安装时间 |
datetime |
install_time |
|
是 |
(3)传感器数据结构表和传感器预警数据结构表设计
传感器数据表用于存储各个传感器回传的一些数据。其中,传感器数据由传感器编号、数据类型接收时间和数据组成,传感器预警数据则是由传感器编号预警等级、接收时间和数据组成。传感器数据结构表和传感器预警数据结构表设计如表 3-4、3-5所示:
表 3-4传感器数据结构表
传感器数据 |
描述 |
类型 |
字段 |
主键 |
非空 |
传感器编号 |
String |
sensor_id |
外键 |
是 |
数据类型 |
String |
data_type |
|
是 |
接收时间 |
datetime |
time |
|
是 |
数据 |
BigDicemal |
data |
|
是 |
传感器类型编号 |
String |
sensor_type_id |
外键 |
是 |
表 3-5 传感器预警数据结构表
传感器预警数据 |
描述 |
类型 |
字段 |
主键 |
非空 |
传感器编号 |
String |
sensor_id |
外键 |
是 |
预警等级 |
String |
warning_level |
|
是 |
接收时间 |
datetime |
time |
|
是 |
数据 |
BigDicemal |
data |
|
是 |
(4)传感器分类数据结构表和传感器预警等级数据结构表设计
传感器分类数据结构表用于存储不同种类传感器的测量阈值和其数据类型。传感器分类数据结构表设计如表3-6所示。
表 3-6 传感器分类数据结构表
项目传感器类别 |
描述 |
类型 |
字段 |
主键 |
非空 |
传感器类型编号 |
String |
sensor_type_id |
是 |
是 |
传感器类型名称 |
String |
sensor_type_name |
|
是 |
测量阈值最大值 |
int |
threshold_max |
|
是 |
测量阈值最小值 |
int |
threshold_min |
|
是 |
数据类型 |
String |
data_type |
|
是 |
传输方式 |
String |
throey |
|
是 |
(5)传感器预警等级数据结构表用于存储位于不同测点的传感器不同等级的预警红线范围,传感器预警等级数据结构表设计如表 3-7所示。
表 3-7 传感器预警等级数据结构表
传感器预警等级 |
描述 |
类型 |
字段 |
主键 |
非空 |
传感器编号 |
String |
sensor_id |
是 |
是 |
等级一上限 |
int |
sensor_data_upperlimit_1 |
|
是 |
等级一下限 |
int |
sensor_data_lowerlimit_1 |
|
是 |
等级二上限 |
int |
sensor_data_upperlimit_2 |
|
是 |
等级二下限 |
int |
sensor_data_lowerlimit_2 |
|
是 |
等级三上限 |
int |
sensor_data_upperlimit_3 |
|
是 |
等级三下限 |
int |
sensor_data_lowerlimit_3 |
|
是 |
四 系统整体设计
4.1 系统整体架构设计
本系统采用了经典的B/S(浏览器/服务器)架构设计,其核心理念是将业务功能集成于服务端,从而确保数据的安全性和一致性。通过这种设计,用户可以通过任何支持浏览器的设备访问系统,无需安装额外的客户端软件,大大提升了系统的灵活性和易用性。
在B/S架构中,用户通过浏览器与服务器交互。浏览器展示界面并接收用户输入,而服务器处理业务逻辑和数据操作。这种分工减轻了客户端负担,提高了系统扩展性和可维护性。在本系统的总体架构设计中,分层式的架构设计将系统划分为不同的层次,每个层次负责不同的功能。同时,各层次之间的耦合度较低,便于进行系统的扩展和升级。框架设计图如图4-1所示。
图 4-1 本系统架构
4.2 系统整体功能设计
根据系统总体功能需求分析,将系统功能划分为展示模块、数据统计及预警模块、用户管理模块、系统管理模块和项目信息管理模块五个功能模块。功能结构图如图4-2所示。
图 4-2 系统结构功能图
(1)展示模块
①用户登录功能
用户在登录界面输入用户名和密码,经过系统验证后获得相应权限如图3所示。
图 4-3 登录界面
②数据大屏功能
用户在该界面可以观察不同传感器的工作情况,以及数据响应情况。由数据统计模块对传感器数据进行统计,生成相应的统计图表,并在展示模块进行展示,同时展示传感器工作状态,传感器数据统计折线图,传感器预警情况,项目概况和项目的位置信息如图4-4所示。
图 4-4 数据展示大屏
③BIM模型展示功能
用户可以在展示页面直接展示项目的BIM模型以及相关的测点,通过点击不同位置的测点展示不同位置不同传感器的信息。该模块通过树形控件以及折线图或者散点图的方式展示数据,方便用户观察传感器数据的大致趋势如图4-5、图4-6所示。
图 4-5 BIMFACE轻量化模型展示
图 4-6 树形控件以及折线图
(2)数据统计模块
用户在该模块可以获取到最直接的传感器信息,该模块在接受到数据库的信息后会立刻对传感器的数据进行数字特征的计算如平均值,中位数等。方便用户直观的了解桥梁健康状况,甚至提前预测桥梁在一些情况下的工作状态。
(3)用户管理模块
管理人员通过这一功能可以实现对用户信息进行增删改查。用户信息包括姓名、角色、状态和所属项目等内容。通过该功能,管理人员可以为用户设置不同的角色权限,例如管理员、普通用户等,同时也可以根据用户在项目中的职责分配相应的操作权限,从而确保用户只能访问其需要的项目信息,提高管理效率和信息安全性如图4-7所示。
图 4-7用户信息管理
(4)预警功能
用户可以根据桥梁状况设置警戒红线,不同位置的传感器设置不同阈值,在超出阈值时发送危险报告,实现预警功能如图4-8所示。
图 4-8 邮件发送预警
(5)系统管理功能
使用人员通过菜单管理功能可创建、编辑、删除各个功能模块。更改过程中修改的是不同页面对应的路由地址。研究人员可以通过在菜单管理中更改所属菜单的方式变更功能模块对应的上级菜单。也可以根据自己的项目需求创建新的模块,最后通过填写对应模块的路由以加入自己需要显示的模块,应用于自己的Web端系统创建中。不仅如此,我们可以将后端管理的内容也在前端使用,并在实际展示时通过菜单管理隐藏如图4-9所示。
图 4-9 菜单管理
五 系统设计创新点
(1)采用了广联达 BIMFACE 三维模型轻量化 引擎平台作为集成功能放置在系统内,成功实现树形列表与数据表单的动态交互与数据动态获取,在保证了交互功能完善的同时也确保了数据信息的时效性。
(2)使用了FuAdmin (Vue.js+Django)开源框架进行了前后端分离的全栈开发,该框架上手难度低且前后端代码释耦,在保证效率的同时也能避免代码更改的冗余,除此之外该框架在前端 UI 设计上也具有一定的美感。