苗錫慶 梁友國
1.中核機械工程有限公司 浙江海鹽 314300;2.大連益利亞工程機械有限公司 遼寧大連 116023
吊裝施工中若未及時調(diào)整出現(xiàn)偏角的吊索, 會造成歪拉斜吊,嚴重者將導致吊臂折彎,甚至吊車傾翻,引發(fā)吊車安全事故;吊裝過程中若周邊存在障礙物,或被吊設(shè)備/模塊高度較高, 易使操作員或指揮員出現(xiàn)視覺盲區(qū),不能實時觀察被吊物與吊臂之間的凈距,常會導致吊臂卡桿,被吊設(shè)備/模塊也易受損。為解決上述問題, 有必要研發(fā)一套完整的起重機吊索垂直及吊臂干涉智能監(jiān)測產(chǎn)品(包含模塊、主機、基站等硬件系統(tǒng)及監(jiān)測平臺軟件系統(tǒng)),用以輔助吊裝施工,實時監(jiān)測吊裝過程中吊索的垂直度以及被吊設(shè)備/模塊與吊臂、被吊設(shè)備/模塊與周圍障礙物之間的干涉情況,提高吊裝作業(yè)安全性,降低吊裝事故發(fā)生概率,有效減少經(jīng)濟損失。
本文應用數(shù)據(jù)庫原理及ADO 技術(shù),建立了吊裝監(jiān)測系統(tǒng)數(shù)據(jù)庫。 數(shù)據(jù)庫包括網(wǎng)絡(luò)數(shù)據(jù)庫及本地數(shù)據(jù)庫,為總指揮端監(jiān)測系統(tǒng)及司機端監(jiān)測系統(tǒng)的運行提供數(shù)據(jù)支持。
吊裝監(jiān)測系統(tǒng)是以數(shù)據(jù)庫為中心實現(xiàn)對資源與數(shù)據(jù)的有效提供、控制與管理。 數(shù)據(jù)庫系統(tǒng)總體結(jié)構(gòu)上分為網(wǎng)絡(luò)數(shù)據(jù)庫及本地數(shù)據(jù)庫兩大部分。 數(shù)據(jù)庫系統(tǒng)的總體結(jié)構(gòu)如圖1 所示。
圖1 數(shù)據(jù)庫總體結(jié)構(gòu)圖
網(wǎng)絡(luò)數(shù)據(jù)庫布置到云平臺上, 通過對定位模塊信號接收及處理,存儲吊裝信息數(shù)據(jù)及監(jiān)測信息數(shù)據(jù);總指揮端軟件系統(tǒng)及司機端軟件系統(tǒng)通過公網(wǎng)連接網(wǎng)絡(luò)數(shù)據(jù)進行數(shù)據(jù)交互, 包括從實際開始吊裝到安裝就位過程中所有監(jiān)測數(shù)據(jù)及吊裝狀態(tài)數(shù)據(jù); 監(jiān)測數(shù)據(jù)設(shè)備與數(shù)據(jù)庫表一一對應, 為每一臺定位模塊建立一個表存儲當前監(jiān)測數(shù)據(jù)。
本地數(shù)據(jù)庫布置在吊裝現(xiàn)場,由單臺主機構(gòu)成,包括當前吊裝的被吊物、 起重機、 吊索具及作業(yè)環(huán)境數(shù)據(jù)。 總指揮端軟件及終端軟件在局域網(wǎng)內(nèi)連接本地數(shù)據(jù)庫進行數(shù)據(jù)交互。 本地數(shù)據(jù)庫中的數(shù)據(jù)包括:
(1) 起重機數(shù)據(jù)庫:包括起重性能、關(guān)鍵尺寸、重量重心、三維模型等數(shù)據(jù)。
(2) 作業(yè)環(huán)境數(shù)據(jù)庫:核電場景模型,包括關(guān)鍵結(jié)構(gòu)尺寸及三維模型數(shù)據(jù)。
(3) 被吊物數(shù)據(jù)庫:核電大型設(shè)備、模塊模型,包括關(guān)鍵結(jié)構(gòu)尺寸、重量重心及三維模型數(shù)據(jù)。
(4) 吊索具數(shù)據(jù)庫:核電大型設(shè)備、模塊吊索具,包括性能數(shù)據(jù)、關(guān)鍵結(jié)構(gòu)尺寸、重量及三維模型數(shù)據(jù)。
數(shù)據(jù)庫是系統(tǒng)錄入原始數(shù)據(jù)的基本工具, 同時也是軟件進行中間運算與統(tǒng)計功能的存儲媒介, 因此數(shù)據(jù)庫表的設(shè)計應盡量避免用戶重復輸入, 減少數(shù)據(jù)空間占用,方便編程、查詢與統(tǒng)計運算,最終保證模擬結(jié)果的輸出符合實際。 根據(jù)吊裝監(jiān)測系統(tǒng)的需求,云端采用SQL Server 2008 作為數(shù)據(jù)庫來存儲和管理海量的起重機吊裝監(jiān)測數(shù)據(jù), 根據(jù)監(jiān)測設(shè)備的不同在數(shù)據(jù)庫中建立不同的表格,以提高查詢效率。 采用SQL 語言執(zhí)行監(jiān)測數(shù)據(jù)的查詢,運用SQL 中視圖、存儲過程等技術(shù)實現(xiàn)高效及準確查詢。 下面以網(wǎng)絡(luò)數(shù)據(jù)庫中的監(jiān)測數(shù)據(jù)為例說明本系統(tǒng)數(shù)據(jù)庫表設(shè)計:
系統(tǒng)根據(jù)每一個項目的需要安裝多個定位模塊,軟件系統(tǒng)根據(jù)定位模塊采集的定位數(shù)據(jù)進行起重機、被吊設(shè)備的位姿計算及模擬。 因此,定位模塊是監(jiān)測系統(tǒng)的數(shù)據(jù)源及模擬依據(jù),軟件實現(xiàn)吊裝過程模擬。 數(shù)據(jù)庫是連接軟件和硬件的紐帶, 定位模塊將采集的數(shù)據(jù)實時存儲數(shù)據(jù)庫中, 軟件實時讀取最新采集的數(shù)據(jù)模擬位姿。 定位模塊與數(shù)據(jù)庫表一一對應,能達到網(wǎng)絡(luò)數(shù)據(jù)讀寫、計算速度快,響應速度快的要求。 定位模塊與數(shù)據(jù)庫對應關(guān)系如表1 和表2 所示。
數(shù)據(jù)庫中的數(shù)據(jù)采集應遵循:
(1) 數(shù)據(jù)庫中采集的數(shù)據(jù)采用統(tǒng)一坐標系 相對于基站的相對坐標, 以基站為基準點, 基站的位置固定,不移動;
(2) 采集數(shù)據(jù)的單位為m,保留3 位小數(shù);
(3) 數(shù)據(jù)正確與否標示通過“解狀態(tài)”來定義,當“解狀態(tài)”=3 時,是正確數(shù)據(jù),其他為錯誤數(shù)據(jù),不可用;
通過數(shù)據(jù)表的設(shè)計, 網(wǎng)絡(luò)數(shù)據(jù)庫就實現(xiàn)了存儲不同定位模塊信息的需要, 為起重機吊裝姿態(tài)計算提供了數(shù)據(jù)依據(jù)。
2.2.1 ADO 技術(shù)應用
表1 定位模塊與數(shù)據(jù)庫對應表
ADO 是為MS 的強大的數(shù)據(jù)訪問接口OLE DB 設(shè)計的一個便于使用的應用程序?qū)印?OLE DB 為任何數(shù)據(jù)源都提供了高性能的訪問,包括關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫、電子郵件、文件系統(tǒng)、文本和圖形以及自定義業(yè)務對象等。 ADO 訪問數(shù)據(jù)源具有易于使用、可以訪問多種數(shù)據(jù)源、訪問數(shù)據(jù)源效率高、方便的Web應用、技術(shù)編程接口豐富等優(yōu)點。
表2 監(jiān)測數(shù)據(jù)數(shù)據(jù)庫表項
以獲得數(shù)據(jù)庫中定位模塊X 坐標為例, 說明如何實現(xiàn)ADO 訪問數(shù)據(jù)庫:
ADOConnection conn; // 實 例 化 對 象。ADOConnection 是集成ADO 所有操作的類名,conn為實例化的對象名。
conn.OnInitADOConn(); // 用于初始化,連接數(shù)據(jù)庫。
_RecordsetPtr pRecordset;
pRecordset = conn.GetRecordSet (vSQL); // 執(zhí)行指定的SQL 語句。
m_gps_x =(float)atof((LPCTSTR)_bstr_t(pRecordset->Fields->GetItem ("gps_x ")->Value);// 其中g(shù)ps_x 為數(shù)據(jù)庫中定位模塊X 坐標的字段名,m_gps_x 為存儲的定位模塊X 坐標的變量名。
conn.ExitConnect(); // 斷開與數(shù)據(jù)庫的連接。
2.2.2 表類的設(shè)計
數(shù)據(jù)庫中的每一個表都有一個自己的類, 表類的設(shè)計方法為: 類中的數(shù)據(jù)成員部分用于存儲從數(shù)據(jù)庫中選擇的數(shù)據(jù),如監(jiān)測數(shù)據(jù)表類中的m_gps_x 數(shù)據(jù)成員用于存儲從數(shù)據(jù)庫中選擇的定位模塊X 坐標數(shù)據(jù)值;成員函數(shù)部分用于輸入條件(SQL 語句)從數(shù)據(jù)庫中提取數(shù)據(jù)并賦值給相應成員變量(數(shù)據(jù)成員部分),從數(shù)據(jù)庫中提取數(shù)據(jù)的過程就是ADO 訪問數(shù)據(jù)庫的過程。 首先獲取數(shù)據(jù)庫數(shù)據(jù)的類ADOConnection。 如上述函數(shù)中conn 就是該類的對象,用該對象初始化并連接數(shù)據(jù)庫,即conn.OnInitADOConn() ;然后用它執(zhí)行SQL 選擇語句,conn.GetRecordSet(vSQL);最后給出列名得到數(shù)據(jù),即m_gps_x=(float)atof((LPCTSTR)_bstr_t (pRecordset->Fields->GetItem("gps_x")->Value)其中g(shù)ps_x 為列名,即得到該列名下的數(shù)值。 監(jiān)測數(shù)據(jù)表類如下所示:
class 監(jiān)測數(shù)據(jù)表
定位模塊向數(shù)據(jù)庫寫入數(shù)據(jù)時, 不同模塊劃分不同的端口,實現(xiàn)各模塊同步寫入數(shù)據(jù)。 定位模塊信號協(xié)議報文示例如下:
協(xié)議報文含義:輸出平面坐標。
協(xié)議報文各項含義:$PTNL,PJK,UTC 時間,日期,北向坐標,北方向N,東向坐標,東方向E,GNSS 狀態(tài),目前用于解算位置的衛(wèi)星數(shù)量,HDOP 水平精度因子,海拔高度,高度單位,校驗數(shù)據(jù)。
協(xié)議報文示例如下:
$PTNL,PJK,013711.00,052818,+4380480.502,N,+607008.828,E,3,20,1.5,EHT+77.018,M*7D單條數(shù)據(jù)中,根據(jù)數(shù)據(jù)格式含義,取對應的坐標值(單位m)如下:
X=4380480.502;
Y=607008.828;
Z=77.018;
把對應的X、Y、Z 坐標存儲到數(shù)據(jù)庫中對應的表中,就完成了軟件接收數(shù)據(jù)、轉(zhuǎn)化數(shù)據(jù)并存儲到數(shù)據(jù)庫的功能。
吊裝過程模擬時按端口同步讀取數(shù)據(jù)庫數(shù)據(jù)。 采用SQL 語言執(zhí)行監(jiān)測數(shù)據(jù)的讀取, 運用SQL 中視圖、存儲過程等技術(shù)實現(xiàn)高效及準確查詢。 數(shù)據(jù)讀寫過程如圖2 所示。
圖2 數(shù)據(jù)讀寫過程示意圖
通過現(xiàn)場吊裝監(jiān)測,經(jīng)定位模塊信號轉(zhuǎn)換后,數(shù)據(jù)實時存儲并提供總指揮端及終端計算, 驅(qū)動三維模型與實際模型一致。 以主臂角度計算為例, 現(xiàn)場吊裝狀態(tài), 主臂角度56°; 軟件監(jiān)測吊裝狀態(tài), 主臂角度55.4°。 詳見圖3。
圖3 主臂角度現(xiàn)場吊裝與軟件監(jiān)測狀態(tài)對比
本文闡述了吊裝監(jiān)測系統(tǒng)數(shù)據(jù)庫設(shè)計和實現(xiàn)方法, 基于實際吊裝作業(yè)并應用數(shù)據(jù)庫建立原理及SQL技術(shù),滿足了吊裝監(jiān)測中對資源和數(shù)據(jù)的需求,實現(xiàn)了高效的控制和管理數(shù)據(jù)。 最后,通過實例驗證了吊裝監(jiān)測系統(tǒng)數(shù)據(jù)庫的可行性。