隨著工業(yè)及基礎(chǔ)建設(shè)的發(fā)展,起重機(jī)已經(jīng)被廣泛用于工業(yè)生產(chǎn)和基礎(chǔ)設(shè)施建設(shè)中,在我國一些關(guān)系國家民生的重大施工項(xiàng)目如三峽工程、南水北調(diào)、青藏鐵路、西電東送、西氣東輸?shù)纫捕际褂闷鹬貦C(jī)[1]。起重機(jī)在經(jīng)濟(jì)發(fā)展中至關(guān)重要,是基礎(chǔ)設(shè)施建設(shè)至關(guān)重要環(huán)節(jié)。
然而部分企業(yè)為追求利益最大化,超負(fù)、超載、暴力使用、未定期保養(yǎng)維修等各種不安全、不規(guī)范的操作導(dǎo)致起重機(jī)安全事故頻發(fā)。為了避免起重機(jī)事故的頻繁發(fā)生,政府做出了很多努力,包括出臺(tái)相關(guān)的標(biāo)準(zhǔn)與規(guī)范,例如《塔式起重機(jī)安全規(guī)程》GB5144 - 2006,《在用建造塔式起重機(jī)安全狀態(tài)鑒定標(biāo)準(zhǔn)等》[2]
目前國內(nèi)起重機(jī)種類琳瑯滿目,在安全監(jiān)控方面還沒有統(tǒng)一的標(biāo)準(zhǔn),大多是采用機(jī)械裝置,比如大車小車行程限位器,起升高度限位器等,然而這些設(shè)備都是當(dāng)起升或者其它運(yùn)行參數(shù)快到極限時(shí)才會(huì)觸發(fā)斷電開關(guān),缺乏預(yù)警功能,操作員只能通過經(jīng)驗(yàn)進(jìn)行判斷,同時(shí)機(jī)械限位器也可能因?yàn)闆]有進(jìn)行及時(shí)保養(yǎng)出現(xiàn)裝置失靈等情況,從而導(dǎo)致很嚴(yán)重的事故發(fā)生。
因此,開發(fā)一套實(shí)時(shí)性高、能夠?qū)Σ话踩僮鬟M(jìn)行實(shí)時(shí)預(yù)警和報(bào)警的監(jiān)控系統(tǒng)十分必要,本文以起重機(jī)基本監(jiān)控參數(shù)為前提,開發(fā)了一套基于 STM32的起重機(jī)遠(yuǎn)程監(jiān)控系統(tǒng),經(jīng)過測試,實(shí)現(xiàn)了基本數(shù)據(jù)量采集,系統(tǒng)實(shí)時(shí)性高,可靠性高,完成了系統(tǒng)要求的基本功能。
1. 硬件系統(tǒng)
整個(gè)硬件系統(tǒng)由控制模塊、輸入模塊、輸出模塊、通信模塊組成。
依下圖所示:
控制模塊: 控制模塊分為主控和從控。主控核心為 STM32F407,其負(fù)責(zé)控制整個(gè)硬件電路的正常運(yùn)行,從控由 5 塊 STM32F103 組成,其中每個(gè)傳感器對(duì)應(yīng)一塊從控,從控負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)采集。
輸入模塊: 由傳感器組組成。從控負(fù)責(zé)將傳感器組的電壓電流信號(hào)轉(zhuǎn)換成RS485 信號(hào),主控對(duì)傳來的RS485 信號(hào)進(jìn)行處理。其中傳感器需要采集的信號(hào)包括: 高度、溫度、濕度、起重量、行程等重要參數(shù)。
輸出模塊: 本系統(tǒng)輸出模塊包括 LCD 觸摸屏、蜂鳴器、指示燈、RFID,輸出模塊主要功能是對(duì)數(shù)據(jù)進(jìn)行顯示和異常報(bào)警。
通信模塊: 由 DTU 和 GPRS 組成。DTU 負(fù)責(zé)將RS485 信號(hào)轉(zhuǎn)換成 IP 信號(hào)再由 GPRS 傳輸?shù)揭蛱鼐W(wǎng)上,以便和遠(yuǎn)程軟件監(jiān)控中心進(jìn)行通信。
2. 軟件系統(tǒng)
軟件系統(tǒng)由三部分組成: 網(wǎng)頁前端、服務(wù)器后臺(tái)、數(shù)據(jù)庫系統(tǒng)。
前端負(fù)責(zé)的功能包括: 對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)顯示,進(jìn)行閾值設(shè)定、報(bào)警提醒、統(tǒng)計(jì)查詢、錯(cuò)誤日志等。
服務(wù)器后臺(tái)主要負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行解析處理。數(shù)據(jù)庫系統(tǒng)主要負(fù)責(zé)存儲(chǔ)數(shù)據(jù)和響應(yīng)服務(wù)器請(qǐng)求對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的操作。該系統(tǒng)在 ASP. NET 平臺(tái)下實(shí)現(xiàn)了 MVC 三層架構(gòu)應(yīng)用程序模塊化,使得整個(gè)軟件開發(fā)具有系統(tǒng)性,實(shí)現(xiàn)了軟件開發(fā)的分工和應(yīng)用程序的模塊化,提高了代碼復(fù)用率,降低了維護(hù)成本[3]。
1. 硬件系統(tǒng)整體設(shè)計(jì)
整個(gè)硬件系統(tǒng)由信息采集、信息處理、控制輸出、數(shù)據(jù)存儲(chǔ)、信息顯示、信息導(dǎo)出、遠(yuǎn)程輸出等單元組成。
信息采集單元: 負(fù)責(zé)采集各種類傳感器數(shù)據(jù),其中需要采集起重量、運(yùn)行行程、風(fēng)速起升高度等數(shù)據(jù)。
信息處理單元: 將采集到的數(shù)據(jù)進(jìn)行邏輯處理、轉(zhuǎn)發(fā)存儲(chǔ),同時(shí)根據(jù)起重機(jī)工況的要求,執(zhí)行邏輯控制。
控制輸出單元: 負(fù)責(zé)輸出控制信號(hào)和報(bào)警信息,通常由控制板和驅(qū)動(dòng)器組成。
數(shù)據(jù)存儲(chǔ)單元: 數(shù)據(jù)服務(wù)端對(duì)傳來的信息包進(jìn)行相應(yīng)處理存儲(chǔ)到數(shù)據(jù)庫,用于后期查詢和瀏覽器數(shù)據(jù)顯示。
信息顯示單元: 通過 LCD 觸摸屏顯示起重機(jī)的運(yùn)行參數(shù),除了圖文顯示還包括聲光提醒,例如當(dāng)超載時(shí)駕駛室會(huì)進(jìn)行紅燈閃爍提示,提前錄好的報(bào)警語音會(huì)循環(huán)播報(bào)直至警報(bào)解除。單元由工控機(jī)上的監(jiān)視器,司機(jī)室內(nèi)的指示燈、蜂鳴器,監(jiān)視器等組成。
信息導(dǎo)出接口單元: 向上級(jí)或下級(jí)單元輸出數(shù)據(jù)。由通訊模塊,工控機(jī)的主機(jī)接口等組成。
遠(yuǎn)程輸出單元: 遠(yuǎn)程輸出單元包括 GPRS 網(wǎng)絡(luò)和 TCP/IP 協(xié)議。
遠(yuǎn)程監(jiān)控平臺(tái): 遠(yuǎn)程監(jiān)控平臺(tái)即客戶端的瀏覽器。
2. GPRS 網(wǎng)絡(luò)通信模塊設(shè)計(jì)
GPRS( 通用分組無線服務(wù)) 是一種以全球手機(jī)系統(tǒng)( GSM) 為基礎(chǔ)的數(shù)據(jù)傳輸技術(shù)通信模塊在本系統(tǒng)中的作用至關(guān)重要,它負(fù)責(zé)軟硬件數(shù)據(jù)交互,通信方面具體過程為控制芯片根據(jù)請(qǐng)求將采集到的電壓電流信號(hào)轉(zhuǎn)換成 RS485 信號(hào),DTU 將接收到的RS485 信號(hào)轉(zhuǎn)換成 IP 信號(hào)然后通過 GPRS 發(fā)送到廣域網(wǎng)中,以便遠(yuǎn)程監(jiān)控系統(tǒng)獲取相應(yīng)的采集信號(hào)。
為了保證數(shù)據(jù)可靠性,系統(tǒng)要求客戶端和服務(wù)端保持長連接狀態(tài),通過“心跳包”保持長連接狀態(tài),即客戶端每隔一段時(shí)間向服務(wù)端發(fā)送一個(gè)包,告訴服務(wù)端自己仍在線上,包的內(nèi)容不限,可以是空包。
依上圖所示,客戶端連接上服務(wù)端以后,服務(wù)端創(chuàng)建一個(gè)在線用戶字典,客戶端每隔一段時(shí)間,時(shí)間間隔由服務(wù)器設(shè)定,向服務(wù)器發(fā)送一個(gè)心跳包,服務(wù)器接收到包以后,字典數(shù)據(jù)的值都會(huì)更新為 0; 一旦服務(wù)端超過規(guī)定時(shí)間沒有接收到客戶端發(fā)來的包,字典數(shù)據(jù)將會(huì)遞增加一,當(dāng)字典數(shù)據(jù)的值累計(jì)大于等于三,則視為掉線。
current Count + + ;if ( current Count = = heartbeat Count) {txt Message. Append( " 開始發(fā)送心跳包" ) ;Message Entity entity = new Message Entity( ) ;entity. Message Type = Message Picks. Heartbeat;entity. Nick Name = login Name;Write To Stream( entity) ;current Count = 0; }如果服務(wù)端收到客戶端心跳包,則自動(dòng)重置計(jì)數(shù)器if ( user On Line Counter. Contains Key( user) )user On Line Counter[user] = 0; elseuser On Line Counter. Add( user,0) ;
3. 軟件系統(tǒng)設(shè)計(jì)
遠(yuǎn)程通信網(wǎng)絡(luò)系統(tǒng)的實(shí)現(xiàn)主要是由套接字、多線程以及 ASP. NET 技術(shù)完成的,其中 ASP. NET 技術(shù)是系統(tǒng)得以優(yōu)化的最關(guān)鍵部分[4]。
( 1) 用戶權(quán)限設(shè)計(jì)
本軟件系統(tǒng)具有權(quán)限分配功能,分為超級(jí)用戶和普通用戶[5]。普通用戶具有查看數(shù)據(jù)監(jiān)控頁面、視頻監(jiān)控頁面、查看數(shù)據(jù)統(tǒng)計(jì)、設(shè)置閾值、管理操作人員、控制起重機(jī)啟停等功能,超級(jí)用戶即為整個(gè)系統(tǒng)權(quán)限最高的管理員,除了具備普通用戶的基本功能之外,還具有分配普通用戶可以查看哪些內(nèi)容的權(quán)力,也規(guī)定哪些菜單可以被顯示,可以查看登錄日志。
2) 三層結(jié)構(gòu)模型設(shè)計(jì)
結(jié)合 B /S 結(jié)構(gòu)將整個(gè)按邏輯層次分為: 表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)服務(wù)層[6]。表示層: 主要服務(wù)于用戶接口展示,主要包含數(shù)據(jù)監(jiān)控、視頻監(jiān)控、報(bào)警提示、數(shù)據(jù)統(tǒng)計(jì)查看、數(shù)據(jù)查詢、報(bào)表信息、配置信息等。
表示層服務(wù)于用戶,需要提供良好的用戶體驗(yàn),良好的人機(jī)交互界面除了包含用戶所需,同時(shí)操作不宜繁瑣,能夠針對(duì)使用者發(fā)出的請(qǐng)求作出及時(shí)響應(yīng)。
本系統(tǒng)用戶頁面采用 Bootstrap 前端開發(fā)常用的樣式表、Jquery 編寫頁面動(dòng)作,采用AJAX 頁面異步刷新技術(shù)能夠讓頁面局部進(jìn)行異步刷新,即只在頁面需要更新數(shù)據(jù)的地方進(jìn)行異步刷新,在此過程中頁面不會(huì)變化,避免信息還未響應(yīng)時(shí)用戶空等頁面的情況發(fā)生。
業(yè)務(wù)邏輯層: 在 MVC 框架中為控制層,作用是處理用戶請(qǐng)求,對(duì)請(qǐng)求數(shù)據(jù)和通信包進(jìn)行處理,將處理的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫或取出數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)發(fā)送給用戶接口。
數(shù)據(jù)層: 本系統(tǒng)數(shù)據(jù)服務(wù)層即 My SQL Server 數(shù)據(jù)服務(wù)器,數(shù)據(jù)庫存儲(chǔ)底層硬件發(fā)送來的數(shù)據(jù),數(shù)據(jù)庫包含實(shí)時(shí)數(shù)據(jù)庫、歷史數(shù)據(jù)庫和配置信息,通過業(yè)務(wù)邏輯層可以對(duì)數(shù)據(jù)庫進(jìn)行增刪改查等操作。
( 3) Socket 套接字Socket 簡稱“套接字”用于描述 IP 地址和端口號(hào)[7],套接字能讓用戶快速開發(fā)客戶機(jī) /服務(wù)器網(wǎng)絡(luò)應(yīng)用程序,當(dāng)向一個(gè)套接字寫入時(shí),所送數(shù)據(jù)會(huì)自動(dòng)出現(xiàn)在套接字的另一端,另一端可能是相同機(jī)器上運(yùn)行的另一個(gè)進(jìn)程,也可能是世界上任何地方互連的一臺(tái)計(jì)算機(jī)。Socket 是軟件之間通信常用技術(shù),通過 IP 地址和端口號(hào)能夠精準(zhǔn)找到通信應(yīng)用窗口。
根據(jù)數(shù)據(jù)可靠性的不同,Socket 通信協(xié)議包括TCP 和 UDP 兩種類型,其中 TCP 是面向連接的一種通信協(xié)議,它能夠保證傳輸數(shù)據(jù)的可靠性,UDP 是面向非連接的一種通信協(xié)議,UDP 的主要要求是追求傳輸數(shù)據(jù)的高效性,無法保證數(shù)據(jù)的可靠性。
所以系統(tǒng)采用 TCP 通信協(xié)議。. NET 框 架 下 在 SystemNET Socket 命名空間內(nèi)可以實(shí)現(xiàn)套接字的托管,在使用套接字與遠(yuǎn)程設(shè)備通信之前,必須使用協(xié)議和網(wǎng)絡(luò)地址信息初始化套接字【8]。bind( ) 函數(shù)用于綁定 IP 地址和端口號(hào),開啟 listen( ) 函數(shù)用于監(jiān)聽bind( ) ,為了保證多個(gè)客戶端能夠同時(shí)和服務(wù)器進(jìn)行通信,通信協(xié)議中還加入多線程技術(shù),部分代碼如下:
/ / 創(chuàng)建監(jiān)聽 SocketSocket Watch = new Socket ( Address Family. In-ter Network,Socket Type. Stream,Protocol Type. Tcp) ;
/ / 綁定指定主機(jī)地址。IPAddress address = IPAddress. Parse ( " 127. 0.0. 1" ) ;
/ / 監(jiān)聽套接字綁定指定端口IPEnd Point end Point = new IPEnd Point( address,int. Parse( " 1000" ) ) ;Socket Watch. Bind( end Poin) ;
/ / 設(shè)置連接隊(duì)列的最大長度Socket Watch. Listen( 20) ;
/ / 啟動(dòng)監(jiān)聽線程開始監(jiān)聽客戶端請(qǐng)求thread Watch = new Thread( Watch) ;Watch( ) 函數(shù)為數(shù)據(jù)處理函數(shù)。
通過網(wǎng)絡(luò)測試
助手對(duì)系統(tǒng)通信代碼進(jìn)行測試,數(shù)據(jù)傳輸格式為以“#”開頭,以“$ ”為結(jié)尾。測試方法為發(fā)送一段數(shù)據(jù),數(shù)據(jù)格式為: #110,1,1,35 #110,2,2,11. 22,#110,3,1,50 $ ; 如果服務(wù)端接收到的數(shù)據(jù)包與發(fā)送的數(shù)據(jù)包一致,則 Socket 代碼沒有問題。由圖3. 4 可以看出接收的數(shù)據(jù)和發(fā)送的一致,故本系統(tǒng)通信部分正確無誤。
1. 硬件系統(tǒng)調(diào)試
( 1) 風(fēng)速采集調(diào)試:風(fēng)速傳感器安裝在起重機(jī)的頂部,通過傳感器頂部三個(gè)“風(fēng)帽”進(jìn)行對(duì)風(fēng)的捕捉,該型風(fēng)速傳感器具有抗腐蝕、體積小、便于安裝、靈敏度高、壽命長等優(yōu)點(diǎn)。
輸出計(jì)算公式為: 風(fēng)速 = 單位時(shí)間內(nèi)的脈沖數(shù) x 系數(shù)。其中單位時(shí)間為 1 秒,該起重機(jī)型號(hào)尾綴為12CM,所以系數(shù)為 0. 1。當(dāng)有風(fēng)時(shí),對(duì)應(yīng)風(fēng)速傳感器的從控板會(huì)自動(dòng)計(jì)算出風(fēng)速值,并將其顯示在 LCD 觸摸屏上。現(xiàn)場對(duì)風(fēng)速進(jìn)行測試,LCD 屏顯示數(shù)值為 10. 5m/s,與實(shí)際情況一致。
( 2) 起重量測試:本系統(tǒng)起重量傳感器采用“旁壓式稱重傳感器”,該型傳感器內(nèi)置防干擾模塊,具有良好的抗干擾能力,且安裝方便,只需將該傳感器夾住主鉤的一根鋼索上,由于主鉤是由動(dòng)滑輪帶動(dòng)且有 6 根鋼索,所以將測出的數(shù)據(jù)乘 6 即可得出所鉤物品的重量。
主控編碼會(huì)濾除主鉤本身的重量從而避免誤差,設(shè)置的預(yù)警值為 90% ,當(dāng)重量達(dá)到預(yù)警值時(shí),蜂鳴器會(huì)連續(xù)發(fā)出短聲報(bào)警,當(dāng)起重量達(dá)到額定起重量的100% 時(shí),蜂鳴器會(huì)發(fā)出長鳴報(bào)警,并在 2 秒后自動(dòng)斷電?,F(xiàn)場加上 2t 標(biāo)準(zhǔn)砝碼測試,LCD 觸摸屏顯示為 1. 98t 符合標(biāo)準(zhǔn)誤差范圍。
( 3) 高度測試:起升機(jī)構(gòu)主要由卷筒轉(zhuǎn)動(dòng)帶動(dòng)鋼索,通過定滑輪導(dǎo)向輪改變鋼索運(yùn)動(dòng)方向,從而讓吊鉤變成垂直運(yùn)動(dòng)。高度限位器為當(dāng)?shù)蹉^起升高度最大時(shí)檢測卷筒的鋼索圈數(shù),當(dāng)處于最小起升高度時(shí)檢測圈數(shù),根據(jù)圈數(shù)調(diào)整限位器的凸輪機(jī)構(gòu),從而達(dá)到高度限位的要求。
當(dāng)工作時(shí)卷筒帶動(dòng)鋼索運(yùn)動(dòng)從而帶動(dòng)導(dǎo)向輪運(yùn)動(dòng),由于卷筒和高度傳感器相連,再根據(jù)導(dǎo)向輪的直徑計(jì)算它們之間的傳動(dòng)比,從而計(jì)算出起升高度。現(xiàn)場對(duì)空載時(shí)主鉤起升進(jìn)行測試,當(dāng)快要接近頂部時(shí),蜂鳴器發(fā)出報(bào)警并及時(shí)切斷了電源。
4) 在線監(jiān)控 LCD 摸屏:LCD 觸摸屏安裝在司機(jī)室,當(dāng)起重機(jī)操作員操作時(shí)能夠直觀地看到起重機(jī)的各種運(yùn)行參數(shù)。
2. 軟件系統(tǒng)調(diào)試
( 1) 主監(jiān)控?cái)?shù)據(jù)測試:主監(jiān)控頁面主要是各種數(shù)據(jù)監(jiān)控,包括風(fēng)速、溫濕度、起重量、
高度等數(shù)據(jù),儀表盤顏色綠色、黃色、紅色分別對(duì)應(yīng)正常、預(yù)警、報(bào)警,監(jiān)控人員可以根據(jù)顏色可以直觀看出起重機(jī)的運(yùn)行狀態(tài)。通過測試時(shí)與 LCD 觸摸屏數(shù)據(jù)進(jìn)行比較,兩者數(shù)值一致。
(2) 數(shù)據(jù)統(tǒng)計(jì)
數(shù)據(jù)統(tǒng)計(jì)頁面通過 AJAX 異步刷新代碼從數(shù)據(jù)庫取出數(shù)據(jù),用戶在頁面上選好日期時(shí)點(diǎn)擊查詢按鈕,Echarts 圖表會(huì)自動(dòng)生成線性圖,用戶能夠直觀看出哪個(gè)時(shí)刻數(shù)據(jù)發(fā)生異常通常數(shù)據(jù)庫會(huì)保存最近一個(gè)月所有的數(shù)據(jù),做到有據(jù)可查?,F(xiàn)場調(diào)出之前測試的數(shù)據(jù)與統(tǒng)計(jì)頁面進(jìn)行比較,數(shù)據(jù)一致。
( 3) 地理信息采集
本系統(tǒng)通過基于 GSM 蜂窩網(wǎng)絡(luò) TDOA ( TimeDifferent of Arrival) 定位技術(shù)來對(duì)起重機(jī)行定位,TOA 原理是基于三基站到達(dá)的時(shí)間差通過數(shù)學(xué)算法求值從而得到目標(biāo)的位置,采用 TDOA 技術(shù)能夠抵消時(shí)間誤差和多徑效應(yīng)帶來的誤差,從而提高定位的精度。
經(jīng)過測試地理信息顯示正確.
3. 現(xiàn)場應(yīng)用
本系統(tǒng)起重機(jī)以咸寧某廠起重機(jī)為測試機(jī),在充分保證數(shù)據(jù)實(shí)時(shí)性快,系統(tǒng)可靠性高,穩(wěn)定性強(qiáng)等前提下,通過多次測試和不斷的完善,完成了項(xiàng)目預(yù)定的功能需求。
結(jié)論:工業(yè)監(jiān)控系統(tǒng)的數(shù)據(jù)高實(shí)時(shí)性和數(shù)據(jù)準(zhǔn)確性是保證操作安全的重要指標(biāo)之一,本系統(tǒng)軟硬件采用了成熟的技術(shù),能夠?qū)崟r(shí)監(jiān)測到起重機(jī)在運(yùn)行過程中的各類參數(shù),同時(shí)具有預(yù)警和報(bào)警的功能,生成的故障日志也便于使用者進(jìn)行查詢和改進(jìn),后期可將該系統(tǒng)拓展到手機(jī)端。隨著社會(huì)的不斷發(fā)展和人們安全意識(shí)不斷提升,智能監(jiān)控在工業(yè)設(shè)備中的發(fā)展將會(huì)成為一種趨勢