武劍鋒
[摘? ? 要]起重量限制器是通過(guò)檢測(cè)起吊重量,防止超載作業(yè)導(dǎo)致險(xiǎn)情的稱重保護(hù)裝置。但目前常用的起重機(jī)稱重監(jiān)控系統(tǒng)存在不方便以及在危險(xiǎn)的狀態(tài)下不能及時(shí)發(fā)出報(bào)警信號(hào)的問(wèn)題。文章以UDP無(wú)線通信協(xié)議作為模塊間的數(shù)據(jù)通信協(xié)議,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)起重機(jī)起重量的智能控制系統(tǒng)。所有操作才便快捷,操作簡(jiǎn)單,而且效率高,安全性好。
[關(guān)鍵詞]UDP;WIFI;起重量限制器;控制系統(tǒng)
[中圖分類號(hào)]TH21 [文獻(xiàn)標(biāo)志碼]A [文章編號(hào)]2095–6487(2021)07–0–02
Design of Lifting Capacity Limiter Control System Based on UDP Wireless Communication
Wu Jian-feng
[Abstract]Lifting capacity limiter is a kind of weighing protection device which can prevent the crane from overloading by detecting the lifting weight, also known as crane overload limiter or crane load limiter. But at present, the commonly used crane monitoring is not convenient and can not send alarm signal in time in dangerous state. Therefore, this paper uses UDP communication protocol as the data communication protocol between modules to design and implement an intelligent control system based on crane. All operations are fast, simple, efficient and safe.
[Keywords]UDP; WiFi; lifting capacity limiter; control system
本文設(shè)計(jì)并開發(fā)了一個(gè)基于UDP無(wú)線通信的智能控制系統(tǒng),該控制系統(tǒng)能夠?qū)崿F(xiàn)現(xiàn)場(chǎng)預(yù)警報(bào)警功能和監(jiān)視起重機(jī)的各項(xiàng)參數(shù),詳細(xì)功能包括起重質(zhì)量顯示、起重機(jī)額定功率顯示、起重機(jī)額定質(zhì)量顯示、額定功率設(shè)置、額定起重量設(shè)置、倍率設(shè)置、空載功率設(shè)置、負(fù)載功率采集、負(fù)載重量設(shè)置和預(yù)警報(bào)警。與數(shù)據(jù)終端通過(guò)WiFi進(jìn)行通信,考慮到UDP協(xié)議實(shí)時(shí)性更高,節(jié)省了由于連接造成的延時(shí),傳輸速度更快。與TCP傳輸控制協(xié)議相比,UDP首部開銷小,適合小數(shù)據(jù)傳輸?shù)膱?chǎng)合,可以大大提高傳輸效率。因此選擇UDP協(xié)議作為無(wú)線傳輸協(xié)議。該控制系統(tǒng)在起重市場(chǎng)使用不僅方便快捷而且可以大大提高工作效率。
1 系統(tǒng)組成和UDP通信協(xié)議
本文專門針對(duì)起重量限制器設(shè)計(jì)了一款控制系統(tǒng),可以在電子系統(tǒng)上進(jìn)行參數(shù)設(shè)置、起重量標(biāo)定、起重量顯示和超載預(yù)警報(bào)警,通過(guò)WiFi方式建立通信鏈路。該控制系統(tǒng)對(duì)起重量限制器進(jìn)行智能監(jiān)控,包括數(shù)據(jù)監(jiān)控、超載預(yù)警報(bào)警、參數(shù)設(shè)定和使用說(shuō)明四個(gè)區(qū)域。選用UDP協(xié)議作為網(wǎng)絡(luò)通信協(xié)議。UDP即用戶數(shù)據(jù)包協(xié)議,對(duì)發(fā)送的數(shù)據(jù)不保證是否安全并完整的送到目的主機(jī),UDP利用端口號(hào)為不同的應(yīng)用建立各自的數(shù)據(jù)傳輸通道,目的端口通過(guò)接受該端口上的數(shù)據(jù)實(shí)現(xiàn)接收數(shù)據(jù),能夠進(jìn)行多個(gè)應(yīng)用通信。UDP協(xié)議是Socket傳輸模式中的一種,另外一個(gè)是TCP/IP協(xié)議。
1.1 UDP的通信步驟
(1)創(chuàng)建發(fā)送端的Socket服務(wù)對(duì)象:DatagramSocket。
(2)創(chuàng)建數(shù)據(jù),并把數(shù)據(jù)打包:DatagramPacket(byte[] buf,int Length,InetAddress address,int port)。
(3)通過(guò)Socket對(duì)象的發(fā)送功能發(fā)送數(shù)據(jù)包:send(Datagram Packet p)。
(4)釋放資源:close()。
1.2 UDP接收數(shù)據(jù)的步驟
(1)創(chuàng)建接收端的Socket服務(wù)對(duì)象:DatagramSocket。
(2)創(chuàng)建一個(gè)數(shù)據(jù)包,用于接收數(shù)據(jù):DatagramPacket。
(3)接收數(shù)據(jù):receive(dp),dp是接收的數(shù)據(jù)包。
(4)解析數(shù)據(jù),并顯示在屏幕上。
(5)E:釋放資源:close()。
2 通信數(shù)據(jù)處理
另外一端是數(shù)據(jù)處理模塊,無(wú)線網(wǎng)是由數(shù)據(jù)處理模塊中的WiFi發(fā)出的信號(hào),電子設(shè)備與控制系統(tǒng)與數(shù)據(jù)處理端建立起通話信道,即此時(shí)可以與數(shù)據(jù)處理端進(jìn)行數(shù)據(jù)交換。根據(jù)實(shí)際需求考慮到端口占用問(wèn)題,使用port=6001作為控制系統(tǒng)的數(shù)據(jù)接收端口;使用port=5001作為控制端發(fā)送數(shù)據(jù)的端口;使用WiFi模塊固有的IP=192.18.4.1地址作為發(fā)送數(shù)據(jù)的目的地址。同樣在數(shù)據(jù)處理終端上也有數(shù)據(jù)接收和發(fā)送模塊。控制系統(tǒng)和數(shù)據(jù)處理終端通過(guò)這種“發(fā)送—接收”的方式實(shí)現(xiàn)數(shù)據(jù)的交換。
Android APP和數(shù)據(jù)處理終端通過(guò)WiFi進(jìn)行數(shù)據(jù)交換,數(shù)據(jù)以十六進(jìn)制指令的形式進(jìn)行傳遞。由于該系統(tǒng)要發(fā)送的的數(shù)據(jù)較多,因此對(duì)指令的長(zhǎng)度和每位十六進(jìn)制的含義進(jìn)行了定義如下。
指令:7E 00 05 00 0D 0 00 03 E8 00 01 00 00 00 00 7E。
指令簡(jiǎn)介:設(shè)置標(biāo)定值;發(fā)送方:手機(jī);指令碼:00 05;指令長(zhǎng)度:16。
指令詳細(xì)內(nèi)容:幀頭(1)+命令碼(2)+指令長(zhǎng)度(2)+標(biāo)定重量(4)+標(biāo)定AD值(4)+校驗(yàn)(2)+幀尾(1)。
上面的指令是手機(jī)發(fā)送端向數(shù)據(jù)處理終端發(fā)送的指令格式,指令內(nèi)容是本次發(fā)送的一條完整的指令,該指令包括的的主要內(nèi)容如下。
幀頭:長(zhǎng)度為1位十六進(jìn)制,指令的開始標(biāo)志符7E;
命令碼:區(qū)別每條指令的識(shí)別碼,長(zhǎng)度是2;
指令長(zhǎng)度:一條完整的指令的總長(zhǎng)度,長(zhǎng)度是2;
標(biāo)定重量:該部分就是本次指令攜帶的數(shù)據(jù),不同的指令所攜帶的數(shù)據(jù)是不同的,長(zhǎng)度是4,不同的指令數(shù)據(jù)部分所占的長(zhǎng)度不同。
標(biāo)定AD值:指令的另外一個(gè)數(shù)據(jù),所占的長(zhǎng)度為4;
校驗(yàn):網(wǎng)絡(luò)通信校驗(yàn)位,所占的長(zhǎng)度是2;
幀尾:指令的結(jié)束標(biāo)志符7E,長(zhǎng)度是1。
每一種起重限制器都有多條不同的指令,這里只列出其中一種指令的格式,其他的指令格式與其類似,只是攜帶的數(shù)據(jù)和數(shù)據(jù)長(zhǎng)度以及指令的長(zhǎng)度不同。這種指令只是在網(wǎng)絡(luò)中傳遞不是真正的數(shù)據(jù),需要經(jīng)過(guò)數(shù)據(jù)轉(zhuǎn)化然后再在手機(jī)上顯示出來(lái)。接收和發(fā)送的數(shù)據(jù)處理方法不同。接收的數(shù)據(jù)是以十六進(jìn)制的形式表示,但是需要經(jīng)過(guò)轉(zhuǎn)換成十進(jìn)制的格式然后在控制系統(tǒng)上顯示出來(lái),為了區(qū)分特殊字符0x7d和0x7e,接收到指令提取數(shù)據(jù)部分首先要判斷是否含有7d5e或者7d5d,如果含有則需要轉(zhuǎn)成7e和7d。數(shù)據(jù)格式轉(zhuǎn)換流程,從控制系統(tǒng)輸入框輸入的讀取的數(shù)值在后端以字符串的形式存在,這里把字符串轉(zhuǎn)成Double類型的數(shù)值然后擴(kuò)大100倍,擴(kuò)大后的數(shù)值轉(zhuǎn)化成十六進(jìn)制格式。由于每個(gè)指令中攜帶的每個(gè)數(shù)據(jù)的長(zhǎng)度是固定的,所以每次輸入?yún)?shù)時(shí)必須檢查數(shù)據(jù)部分長(zhǎng)度是否足夠,本文用的數(shù)據(jù)部分的長(zhǎng)度有2字節(jié)和4字節(jié)兩種情況。如果字節(jié)數(shù)不夠需要在數(shù)據(jù)部分的前端填充,例如,如果數(shù)據(jù)部分是4字節(jié),而輸入的數(shù)據(jù)只有2字節(jié)如63 DA,那么填充值后的字節(jié)就是00 00 63 DA。由于在大多鏈路層協(xié)議幀中FLAG字段都是0x7e,因此當(dāng)這個(gè)值出現(xiàn)在幀內(nèi)容時(shí)需要對(duì)其進(jìn)行轉(zhuǎn)碼,另外0x7d作為異步鏈路中的轉(zhuǎn)移字符也需要轉(zhuǎn)碼,轉(zhuǎn)碼規(guī)則是0x7E 轉(zhuǎn)成 0x7D 0x5E,0x7D 轉(zhuǎn)成 0x7D 0x5D。數(shù)據(jù)部分處理后把數(shù)據(jù)前的幀頭、命令碼和指令長(zhǎng)度添加到數(shù)據(jù)的前端;數(shù)據(jù)后面的添加校驗(yàn)位和幀尾,最后組成一條完整的指令,通過(guò)WiFi發(fā)送該指令。
3 軟件實(shí)現(xiàn)
使用eclipse開發(fā)前需要配置環(huán)境:JDK、SDK、ADT,并創(chuàng)建一個(gè)模擬器AVD,其中SDK版本是5.1.1,ADT的版本是24.0.2.1647631。與控制系統(tǒng)進(jìn)行通信的另一端是udp調(diào)試軟件:udp_tools和M0002,這兩個(gè)軟件屬于數(shù)據(jù)處理終端開發(fā)軟件,udp_tools主要是負(fù)責(zé)通信測(cè)試;M0002負(fù)責(zé)后期的功能測(cè)試。測(cè)試中的本地IP地址是主機(jī)連上固定無(wú)線網(wǎng)的IP地址,也是控制系統(tǒng)發(fā)送數(shù)據(jù)時(shí)的目的地址,接收的數(shù)據(jù)可在數(shù)據(jù)接收區(qū)顯示;目標(biāo)IP地址是控制系統(tǒng)連上該無(wú)線網(wǎng)時(shí)的IP地址,也是在數(shù)據(jù)發(fā)送區(qū)發(fā)送數(shù)據(jù)的目的地址,控制系統(tǒng)功能是一致的,主要是用來(lái)測(cè)試功能是否能夠?qū)崿F(xiàn)。功能模塊的第三塊區(qū)域是參數(shù)設(shè)置,操作人員可以直接通過(guò)控制系統(tǒng)對(duì)起重量限制器參數(shù)進(jìn)行設(shè)置。主要包括四個(gè)參數(shù)的設(shè)置,且在傳輸上相互獨(dú)立,因此需要獨(dú)立開發(fā)、獨(dú)立設(shè)計(jì)。起重限制器參數(shù)包括設(shè)置額定起重量、起重倍率、空載清零和載荷標(biāo)定值。在控制系統(tǒng)上輸入正確的數(shù)值后,點(diǎn)擊確定按鈕,通過(guò)后臺(tái)一系列的數(shù)據(jù)轉(zhuǎn)換后,傳到起重量限制器上;起重倍率值的設(shè)定值為0~99之間的整數(shù);空載清零主要是對(duì)起重機(jī)在空鉤狀態(tài)時(shí)起重量數(shù)值調(diào)零做的設(shè)計(jì);當(dāng)起重機(jī)吊起已知重量后,在控制系統(tǒng)輸入載荷值,按下確定按鈕后就完成了起重量限制器傳感器的標(biāo)定工作。
4 結(jié)束語(yǔ)
綜上所述,對(duì)于起重機(jī)起重量不能對(duì)參數(shù)進(jìn)行方便設(shè)置,不能及時(shí)地觀測(cè)實(shí)時(shí)數(shù)據(jù)的問(wèn)題,本文開發(fā)基于UDP無(wú)線通信的智能控制系統(tǒng)。利用UDP協(xié)議實(shí)現(xiàn)數(shù)據(jù)終端通信,在控制系統(tǒng)上可以對(duì)不同類型的起重機(jī)參數(shù)進(jìn)行設(shè)置和監(jiān)控,方面快捷,而且提高了操作人員的安全性。
參考文獻(xiàn)
[1] 李春雷.建筑塔吊監(jiān)控系統(tǒng)遠(yuǎn)程終端的開發(fā)[D].成都:電子科技大學(xué),2012.
[2] 楊飛.基于 Android 的家用移動(dòng)視頻監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[D]. 廣州:廣東工業(yè)大學(xué),2013.
[3] 解梅.移動(dòng)通信技術(shù)及發(fā)展[J].電子科技大學(xué)學(xué)報(bào),2003,32(2):111-115.
[4] 馬小燕,余高旺,藺立,等.基于無(wú)線通信的精準(zhǔn)負(fù)荷控制系統(tǒng)[J].低壓電器,2019(14):40-45.
[5] Ruay—Shiung Chang,Wei·Yeh Chen,Yean—Fu Wen.Hybrid Wireless Network Protocols[J].IEEE TRANSACTIONS ON VEHICULAR TECHNOLOGY,2003(7):1099-1109.
[6] 潘曉樂(lè),申永,陳進(jìn)慧,等.基于Android的無(wú)線光通信設(shè)備控制終端設(shè)計(jì)與實(shí)現(xiàn)[J].信息通信,2019(1):209-211.
[7] 萬(wàn)海清.基于 Android 的運(yùn)動(dòng)檢測(cè)視頻監(jiān)控應(yīng)用的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2015.
[8] 孫曉宇.Android手機(jī)界面管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2009.
[9] 孫樂(lè)義. 基于Android系統(tǒng)的智能無(wú)線控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].合肥:安徽大學(xué),2016.
[10] 許光利.基于UDP的安全管理通信模塊的設(shè)計(jì)[D].電子科技大學(xué),2011.
[11] 王欣仁,張世康.基于Android的起重量限制器手機(jī)APP的設(shè)計(jì)與實(shí)現(xiàn)[J].信息技術(shù),2020(10):77-78.
[12] 遲浩.基于UDP的多鏈路協(xié)同通信算法的研究[D].上海 :上海師范大學(xué),2018.
[13] 陳韜羽.基于UDP的帶自適應(yīng)冗余編碼的無(wú)線P2P傳輸模型研究與實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2019.
[14] 丁輝,張會(huì)新,董鈞港 .以太網(wǎng)傳輸錯(cuò)誤重傳機(jī)制MAC控制器設(shè)計(jì)[J].電子設(shè)計(jì)工程,2019(9):11-14,19.
[15] 周耀華,余江林 .使用UDP協(xié)議優(yōu)化無(wú)線網(wǎng)絡(luò)負(fù)載擁塞的可靠通信方法.202110193030[P]. 2021-02-20.
[16] 汪欽臣,方益民 .基于Modbus UDP協(xié)議的STM32與PC實(shí)時(shí)通信的實(shí)現(xiàn) [J].儀表技術(shù)與傳感器,2020(7):67-70.
[17] 冷四軍 .基于UDP的終端信息采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) [J].數(shù)碼設(shè)計(jì),2021(2):261.
[18] 劉照亮,王宏斌,吳穎 .一種基于UDP的可靠傳輸系統(tǒng)設(shè)計(jì)及Java實(shí)現(xiàn) [J].電聲技術(shù) ,2020(8):47-50.