吊装监测系统数据库设计与实现
2019-11-13苗锡庆梁友国
苗锡庆 梁友国
1.中核机械工程有限公司 浙江海盐 314300;2.大连益利亚工程机械有限公司 辽宁大连 116023
吊装施工中若未及时调整出现偏角的吊索, 会造成歪拉斜吊,严重者将导致吊臂折弯,甚至吊车倾翻,引发吊车安全事故;吊装过程中若周边存在障碍物,或被吊设备/模块高度较高, 易使操作员或指挥员出现视觉盲区,不能实时观察被吊物与吊臂之间的净距,常会导致吊臂卡杆,被吊设备/模块也易受损。为解决上述问题, 有必要研发一套完整的起重机吊索垂直及吊臂干涉智能监测产品(包含模块、主机、基站等硬件系统及监测平台软件系统),用以辅助吊装施工,实时监测吊装过程中吊索的垂直度以及被吊设备/模块与吊臂、被吊设备/模块与周围障碍物之间的干涉情况,提高吊装作业安全性,降低吊装事故发生概率,有效减少经济损失。
本文应用数据库原理及ADO 技术,建立了吊装监测系统数据库。 数据库包括网络数据库及本地数据库,为总指挥端监测系统及司机端监测系统的运行提供数据支持。
1 数据库总体结构
吊装监测系统是以数据库为中心实现对资源与数据的有效提供、控制与管理。 数据库系统总体结构上分为网络数据库及本地数据库两大部分。 数据库系统的总体结构如图1 所示。
图1 数据库总体结构图
1.1 网络数据库
网络数据库布置到云平台上, 通过对定位模块信号接收及处理,存储吊装信息数据及监测信息数据;总指挥端软件系统及司机端软件系统通过公网连接网络数据进行数据交互, 包括从实际开始吊装到安装就位过程中所有监测数据及吊装状态数据; 监测数据设备与数据库表一一对应, 为每一台定位模块建立一个表存储当前监测数据。
1.2 本地数据库
本地数据库布置在吊装现场,由单台主机构成,包括当前吊装的被吊物、 起重机、 吊索具及作业环境数据。 总指挥端软件及终端软件在局域网内连接本地数据库进行数据交互。 本地数据库中的数据包括:
(1) 起重机数据库:包括起重性能、关键尺寸、重量重心、三维模型等数据。
(2) 作业环境数据库:核电场景模型,包括关键结构尺寸及三维模型数据。
(3) 被吊物数据库:核电大型设备、模块模型,包括关键结构尺寸、重量重心及三维模型数据。
(4) 吊索具数据库:核电大型设备、模块吊索具,包括性能数据、关键结构尺寸、重量及三维模型数据。
2 数据库设计
2.1 数据库表设计
数据库是系统录入原始数据的基本工具, 同时也是软件进行中间运算与统计功能的存储媒介, 因此数据库表的设计应尽量避免用户重复输入, 减少数据空间占用,方便编程、查询与统计运算,最终保证模拟结果的输出符合实际。 根据吊装监测系统的需求,云端采用SQL Server 2008 作为数据库来存储和管理海量的起重机吊装监测数据, 根据监测设备的不同在数据库中建立不同的表格,以提高查询效率。 采用SQL 语言执行监测数据的查询,运用SQL 中视图、存储过程等技术实现高效及准确查询。 下面以网络数据库中的监测数据为例说明本系统数据库表设计:
系统根据每一个项目的需要安装多个定位模块,软件系统根据定位模块采集的定位数据进行起重机、被吊设备的位姿计算及模拟。 因此,定位模块是监测系统的数据源及模拟依据,软件实现吊装过程模拟。 数据库是连接软件和硬件的纽带, 定位模块将采集的数据实时存储数据库中, 软件实时读取最新采集的数据模拟位姿。 定位模块与数据库表一一对应,能达到网络数据读写、计算速度快,响应速度快的要求。 定位模块与数据库对应关系如表1 和表2 所示。
数据库中的数据采集应遵循:
(1) 数据库中采集的数据采用统一坐标系 相对于基站的相对坐标, 以基站为基准点, 基站的位置固定,不移动;
(2) 采集数据的单位为m,保留3 位小数;
(3) 数据正确与否标示通过“解状态”来定义,当“解状态”=3 时,是正确数据,其他为错误数据,不可用;
通过数据表的设计, 网络数据库就实现了存储不同定位模块信息的需要, 为起重机吊装姿态计算提供了数据依据。
2.2 数据库类设计
2.2.1 ADO 技术应用
表1 定位模块与数据库对应表
ADO 是为MS 的强大的数据访问接口OLE DB 设计的一个便于使用的应用程序层。 OLE DB 为任何数据源都提供了高性能的访问,包括关系型数据库、非关系型数据库、电子邮件、文件系统、文本和图形以及自定义业务对象等。 ADO 访问数据源具有易于使用、可以访问多种数据源、访问数据源效率高、方便的Web应用、技术编程接口丰富等优点。
表2 监测数据数据库表项
以获得数据库中定位模块X 坐标为例, 说明如何实现ADO 访问数据库:
ADOConnection conn; // 实 例 化 对 象。ADOConnection 是集成ADO 所有操作的类名,conn为实例化的对象名。
conn.OnInitADOConn(); // 用于初始化,连接数据库。
_RecordsetPtr pRecordset;
pRecordset = conn.GetRecordSet (vSQL); // 执行指定的SQL 语句。
m_gps_x =(float)atof((LPCTSTR)_bstr_t(pRecordset->Fields->GetItem ("gps_x ")->Value);// 其中gps_x 为数据库中定位模块X 坐标的字段名,m_gps_x 为存储的定位模块X 坐标的变量名。
conn.ExitConnect(); // 断开与数据库的连接。
2.2.2 表类的设计
数据库中的每一个表都有一个自己的类, 表类的设计方法为: 类中的数据成员部分用于存储从数据库中选择的数据,如监测数据表类中的m_gps_x 数据成员用于存储从数据库中选择的定位模块X 坐标数据值;成员函数部分用于输入条件(SQL 语句)从数据库中提取数据并赋值给相应成员变量(数据成员部分),从数据库中提取数据的过程就是ADO 访问数据库的过程。 首先获取数据库数据的类ADOConnection。 如上述函数中conn 就是该类的对象,用该对象初始化并连接数据库,即conn.OnInitADOConn() ;然后用它执行SQL 选择语句,conn.GetRecordSet(vSQL);最后给出列名得到数据,即m_gps_x=(float)atof((LPCTSTR)_bstr_t (pRecordset->Fields->GetItem("gps_x")->Value)其中gps_x 为列名,即得到该列名下的数值。 监测数据表类如下所示:
class 监测数据表
3 定位模块信号协议
定位模块向数据库写入数据时, 不同模块划分不同的端口,实现各模块同步写入数据。 定位模块信号协议报文示例如下:
协议报文含义:输出平面坐标。
协议报文各项含义:$PTNL,PJK,UTC 时间,日期,北向坐标,北方向N,东向坐标,东方向E,GNSS 状态,目前用于解算位置的卫星数量,HDOP 水平精度因子,海拔高度,高度单位,校验数据。
协议报文示例如下:
$PTNL,PJK,013711.00,052818,+4380480.502,N,+607008.828,E,3,20,1.5,EHT+77.018,M*7D单条数据中,根据数据格式含义,取对应的坐标值(单位m)如下:
X=4380480.502;
Y=607008.828;
Z=77.018;
把对应的X、Y、Z 坐标存储到数据库中对应的表中,就完成了软件接收数据、转化数据并存储到数据库的功能。
吊装过程模拟时按端口同步读取数据库数据。 采用SQL 语言执行监测数据的读取, 运用SQL 中视图、存储过程等技术实现高效及准确查询。 数据读写过程如图2 所示。
图2 数据读写过程示意图
4 吊装监测数据应用实例
通过现场吊装监测,经定位模块信号转换后,数据实时存储并提供总指挥端及终端计算, 驱动三维模型与实际模型一致。 以主臂角度计算为例, 现场吊装状态, 主臂角度56°; 软件监测吊装状态, 主臂角度55.4°。 详见图3。
图3 主臂角度现场吊装与软件监测状态对比
5 结论
本文阐述了吊装监测系统数据库设计和实现方法, 基于实际吊装作业并应用数据库建立原理及SQL技术,满足了吊装监测中对资源和数据的需求,实现了高效的控制和管理数据。 最后,通过实例验证了吊装监测系统数据库的可行性。