苗錫慶 梁友國
1.中核機械工程有限公司 浙江海鹽 314300;2.大連益利亞工程機械有限公司 遼寧大連 116023
吊裝施工中若未及時調整出現偏角的吊索, 會造成歪拉斜吊,嚴重者將導致吊臂折彎,甚至吊車傾翻,引發吊車安全事故;吊裝過程中若周邊存在障礙物,或被吊設備/模塊高度較高, 易使操作員或指揮員出現視覺盲區,不能實時觀察被吊物與吊臂之間的凈距,常會導致吊臂卡桿,被吊設備/模塊也易受損。為解決上述問題, 有必要研發一套完整的起重機吊索垂直及吊臂干涉智能監測產品(包含模塊、主機、基站等硬件系統及監測平臺軟件系統),用以輔助吊裝施工,實時監測吊裝過程中吊索的垂直度以及被吊設備/模塊與吊臂、被吊設備/模塊與周圍障礙物之間的干涉情況,提高吊裝作業安全性,降低吊裝事故發生概率,有效減少經濟損失。
本文應用數據庫原理及ADO 技術,建立了吊裝監測系統數據庫。 數據庫包括網絡數據庫及本地數據庫,為總指揮端監測系統及司機端監測系統的運行提供數據支持。
吊裝監測系統是以數據庫為中心實現對資源與數據的有效提供、控制與管理。 數據庫系統總體結構上分為網絡數據庫及本地數據庫兩大部分。 數據庫系統的總體結構如圖1 所示。

圖1 數據庫總體結構圖
網絡數據庫布置到云平臺上, 通過對定位模塊信號接收及處理,存儲吊裝信息數據及監測信息數據;總指揮端軟件系統及司機端軟件系統通過公網連接網絡數據進行數據交互, 包括從實際開始吊裝到安裝就位過程中所有監測數據及吊裝狀態數據; 監測數據設備與數據庫表一一對應, 為每一臺定位模塊建立一個表存儲當前監測數據。
本地數據庫布置在吊裝現場,由單臺主機構成,包括當前吊裝的被吊物、 起重機、 吊索具及作業環境數據。 總指揮端軟件及終端軟件在局域網內連接本地數據庫進行數據交互。 本地數據庫中的數據包括:
(1) 起重機數據庫:包括起重性能、關鍵尺寸、重量重心、三維模型等數據。
(2) 作業環境數據庫:核電場景模型,包括關鍵結構尺寸及三維模型數據。
(3) 被吊物數據庫:核電大型設備、模塊模型,包括關鍵結構尺寸、重量重心及三維模型數據。
(4) 吊索具數據庫:核電大型設備、模塊吊索具,包括性能數據、關鍵結構尺寸、重量及三維模型數據。
數據庫是系統錄入原始數據的基本工具, 同時也是軟件進行中間運算與統計功能的存儲媒介, 因此數據庫表的設計應盡量避免用戶重復輸入, 減少數據空間占用,方便編程、查詢與統計運算,最終保證模擬結果的輸出符合實際。 根據吊裝監測系統的需求,云端采用SQL Server 2008 作為數據庫來存儲和管理海量的起重機吊裝監測數據, 根據監測設備的不同在數據庫中建立不同的表格,以提高查詢效率。 采用SQL 語言執行監測數據的查詢,運用SQL 中視圖、存儲過程等技術實現高效及準確查詢。 下面以網絡數據庫中的監測數據為例說明本系統數據庫表設計:
系統根據每一個項目的需要安裝多個定位模塊,軟件系統根據定位模塊采集的定位數據進行起重機、被吊設備的位姿計算及模擬。 因此,定位模塊是監測系統的數據源及模擬依據,軟件實現吊裝過程模擬。 數據庫是連接軟件和硬件的紐帶, 定位模塊將采集的數據實時存儲數據庫中, 軟件實時讀取最新采集的數據模擬位姿。 定位模塊與數據庫表一一對應,能達到網絡數據讀寫、計算速度快,響應速度快的要求。 定位模塊與數據庫對應關系如表1 和表2 所示。
數據庫中的數據采集應遵循:
(1) 數據庫中采集的數據采用統一坐標系 相對于基站的相對坐標, 以基站為基準點, 基站的位置固定,不移動;
(2) 采集數據的單位為m,保留3 位小數;
(3) 數據正確與否標示通過“解狀態”來定義,當“解狀態”=3 時,是正確數據,其他為錯誤數據,不可用;
通過數據表的設計, 網絡數據庫就實現了存儲不同定位模塊信息的需要, 為起重機吊裝姿態計算提供了數據依據。
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 監測數據表


定位模塊向數據庫寫入數據時, 不同模塊劃分不同的端口,實現各模塊同步寫入數據。 定位模塊信號協議報文示例如下:
協議報文含義:輸出平面坐標。
協議報文各項含義:$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 數據讀寫過程示意圖
通過現場吊裝監測,經定位模塊信號轉換后,數據實時存儲并提供總指揮端及終端計算, 驅動三維模型與實際模型一致。 以主臂角度計算為例, 現場吊裝狀態, 主臂角度56°; 軟件監測吊裝狀態, 主臂角度55.4°。 詳見圖3。

圖3 主臂角度現場吊裝與軟件監測狀態對比
本文闡述了吊裝監測系統數據庫設計和實現方法, 基于實際吊裝作業并應用數據庫建立原理及SQL技術,滿足了吊裝監測中對資源和數據的需求,實現了高效的控制和管理數據。 最后,通過實例驗證了吊裝監測系統數據庫的可行性。