• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于STM32的煤礦井下傳感器軟件安全升級系統(tǒng)

      2019-11-05 10:20:26王博文周德勝
      計算技術(shù)與自動化 2019年3期

      王博文 周德勝

      摘? ?要:煤礦井下的傳感器種類繁多,特別是瓦斯、風(fēng)量、頂板壓力等傳感器擔(dān)負(fù)著安全告警等重要的角色,為了使傳感器的軟件易于安全維護(hù),提出了一種基于STM32的井下傳感器升級系統(tǒng)。主要利用單片機(jī)對目標(biāo)代碼分散加載的原理,以及其他諸如斷點續(xù)傳等諸多關(guān)鍵技術(shù)。在瓦斯相對濃度比較高的巷道、采煤的工作面、以及采煤鉆機(jī)附近,使用該技術(shù)能夠保障系統(tǒng)能夠在不失安全的情況下解決井下傳感器軟件的更新?lián)Q代問題。

      關(guān)鍵詞:傳感器軟件;STM32軟件升級;井下安全系統(tǒng)

      中圖法分類號:TP393? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A

      Absrtact: There are many kinds of sensors in coal mine,especially gas,air volume,roof pressure and other sensors,which play an important role in safety warning. In order to make the software of sensors easy to maintain,this paper puts forward an upgrade system of underground sensors based on STM32. The principle of scattered loading of target code by MCU and other key technologies such as breakpoint continuation are mainly used. Practice has proved that the system can solve the problem of updating and replacing the downhole sensor software without losing safety.

      Key words: sensor software;STM32 software upgrade;underground safety system

      軟件升級是產(chǎn)品出廠后,產(chǎn)品開發(fā)的繼續(xù),也是改善產(chǎn)品質(zhì)量,提升客戶滿意度的重要途徑。軟件升級主要有燒錄和在線升級兩種方式,燒錄是指通過微控制器的JTAG口,通過JTAG協(xié)議將程序的目標(biāo)代碼下載到FLASH中去[1]。而在線升級是通過數(shù)據(jù)線如UART協(xié)議CAN協(xié)議,以太網(wǎng)、無線通訊等方式將目標(biāo)代碼通過微處理器內(nèi)部的升級系統(tǒng)(通稱BootLoader)將目標(biāo)文件下載到處理器的FLASH中去的方法。

      井下嵌入式設(shè)備自身的特點如:

      ①隱蔽性:井下嵌入式設(shè)備主板在鉆機(jī)、分站內(nèi)內(nèi)深埋無法通過有效的JTAG口去燒錄程序,且通過STM32提供的串口在線升級工具有諸多局限性,如不能通過網(wǎng)絡(luò)升級程序,升級過程中必須中斷程序的執(zhí)行[2]。

      ②分散性:井下嵌入式設(shè)備在實際的應(yīng)用比較分散如瓦斯?jié)舛?、風(fēng)量、風(fēng)壓傳感器分散于巷道內(nèi),大面積、長距離鋪設(shè)。

      ③安全性: 煤礦井下的傳感器如用的最普遍的瓦斯傳感器,安全級別較高,要求在任何情況下能夠檢測到瓦斯?jié)舛鹊淖兓⒆鞒鲰憫?yīng),如聲光告警等信息。而實際的程序升級過程中,會造成應(yīng)用程序執(zhí)行的中斷,必須待升級完成后,重啟才能恢復(fù)執(zhí)行。

      井下的情況比較特殊,危險源比較多,針對傳感器軟件升級換代沒有一個固定的標(biāo)準(zhǔn)。由于筆記本電腦等PC機(jī)沒有防爆性能,所以近距離進(jìn)行傳感器軟件升級不符合安全規(guī)程。通常的做法是將需要升級的傳感器拿到井上再做升級,或者在井上的機(jī)房通過上位機(jī)下發(fā)指令進(jìn)行軟件的升級。將傳感器拿到井上進(jìn)行軟件升級的辦法耗費人力物力較大,非常不科學(xué)。通過上位機(jī)下發(fā)指令進(jìn)行傳感器軟件的升級雖然有較多便利性,但是軟件升級的過程會造成傳感器監(jiān)控程序的中斷,勢必會影到煤礦安全監(jiān)控系統(tǒng)的可靠性?;谝陨蠁栴},本文在下文著重論述了傳感器軟件安全升級的可行辦法。

      1? ?井下傳感器升級系統(tǒng)

      1.1? ?系統(tǒng)概述

      如下圖1所示,井下傳感器的網(wǎng)絡(luò)構(gòu)成主要有礦井局域網(wǎng)、分站和傳感器網(wǎng)絡(luò)組成。礦井局域網(wǎng)上面搭載的有web服務(wù)器、人員定位、PC客戶端、視頻監(jiān)控、地面信息傳輸接口等系統(tǒng)。分站和礦井局域網(wǎng)之間通過一個信息傳輸接口(RS485轉(zhuǎn)以太網(wǎng))連接,分站和傳感器之間采用RS485總線連接。為了實現(xiàn)地面上位機(jī)PC客戶端遠(yuǎn)程對傳感器的升級,由PC客戶端將升級的指令通過信息傳輸接口發(fā)送至分站層,分站經(jīng)過查詢路由表,對PC客戶端發(fā)送的指令進(jìn)行屏蔽或者接收,然后采用485協(xié)議通過廣播的方式將下載程序的指令下發(fā)至傳感器總線上。傳感器收到后比較對應(yīng)的ID號,如果ID匹配則響應(yīng)并進(jìn)入升級處理流程,否則就不予處理。

      1.2? ?傳輸協(xié)議

      傳感器主板上電后啟動Bootloader程序,Bootloader程序在啟動后的5S內(nèi)接收上位機(jī)發(fā)出的升級程序指令,如果收到并校驗成功則進(jìn)入升級流程,否則5S后檢查應(yīng)用程序APP標(biāo)志位判斷是否有應(yīng)用程序存在,如果有應(yīng)用程序存在則程序指針跳入應(yīng)用程序地址并執(zhí)行,否則一直在循環(huán)接收上位機(jī)升級程序指令。

      傳感器主板在進(jìn)入升級流程之前先要與上位機(jī)進(jìn)行三次握手,告訴上位機(jī)自己的ID號,以及是否需要進(jìn)行波特率跳變提速[3]。三次握手的數(shù)據(jù)包不包含序列號域,信息域只在需要時填充。

      上位機(jī)將HEX文件進(jìn)行拆分,拆分成若干個包并從1到N編排序列號Seq,然后逐個包進(jìn)行發(fā)送,發(fā)送完成后啟動超時定時器等待下位機(jī)響應(yīng)。下位機(jī)收到包含目標(biāo)HEX文件信息的數(shù)據(jù)包并進(jìn)行校驗通過后,發(fā)一條包含當(dāng)前包序列號Seq的ACK響應(yīng)信息給上位機(jī),上位機(jī)收到并校驗通過立即終止當(dāng)前的超時定時器并將Seq累加1,啟動下一包的發(fā)送[4]。

      由于RS485串口數(shù)據(jù)傳輸存在斷包的可能,所以為了兼容斷包的接收,借鑒PPP協(xié)議引入了轉(zhuǎn)義字符[5]。

      若信息域中出現(xiàn)7EH,則轉(zhuǎn)換為(7DH,5EH)兩個字符。當(dāng)信息域出現(xiàn)7DH時,則轉(zhuǎn)換為(7DH,5DH)[6]。

      發(fā)送方ID :當(dāng)數(shù)據(jù)包為PC發(fā)出時為0xFF,當(dāng)傳感器發(fā)出時為傳感器ID,范圍[0x1,0xFE]。

      接收方ID:當(dāng)數(shù)據(jù)包接收方為PC時為0xFF,當(dāng)接收方為傳感器時為傳感器ID,范圍[0x1,0xFE]。

      與PPP協(xié)議不同的是這里的CRC校驗位包括了從發(fā)送方ID開始到信息域結(jié)束的所有信息,確保以上信息的準(zhǔn)確性。

      協(xié)議域,當(dāng)信息字段為指令時為0xAA,當(dāng)信息字段為HEX目標(biāo)文件的信息時為0xDD。

      這樣做的好處是整個數(shù)據(jù)幀確保只有兩個0xFE,這樣假設(shè)出現(xiàn)斷包時就可以將幀頭和幀尾中間部分進(jìn)行拼接,確保傳輸?shù)男省?/p>

      1.4? ?三次握手

      在煤礦井下的環(huán)境里,特別是數(shù)據(jù)長距離傳輸,干擾因素較多,所以通常采用的波特率是9600bps;而在近距離傳輸時,特別是產(chǎn)品出廠時,生產(chǎn)線可以采用較高的波特率如115200bps來提高燒錄效率。在主板上電Bootloader啟動后燒錄程序之前,選擇三次握手來確認(rèn)是否通訊正常,三次握手中前兩次是通過缺省的波特率9600bps通

      信[7];如果有波特率跳變,第三次是通過跳變后的波特率進(jìn)行的通信。協(xié)議字段填寫握手次數(shù)。

      第一次握手:上位機(jī)發(fā)出詢問指令詢問傳感器是否在?發(fā)出四個字節(jié)的隨機(jī)數(shù)Rand,傳感器收到隨機(jī)數(shù)之后對隨機(jī)數(shù)進(jìn)行加密,然后回應(yīng)加密后(這里采用TEA加密)[8]的結(jié)果以及自己的ID號,這里ID號為0x05。采用隨機(jī)數(shù)加密的方法是對傳感器程序的一種安全保護(hù),確認(rèn)合法的身份才能進(jìn)行升級。

      上位機(jī):0xFE 0xFF 0x00 0x01 Rand1 Rand2 Rand3 Rand4 CRCH CRCL 0xFE

      傳感器:0xFE 0x05 0xFF 0x01 TEA1 TEA2 TEA3 TEA4 CRCH CRCL 0xFE

      第二次握手:上位機(jī)收到傳感器發(fā)來的四個字節(jié)的加密結(jié)果后,先對加密結(jié)果進(jìn)行校驗,校驗通過后則發(fā)送波特率跳變指令。這里信息域填充具體的波特率:如115200bps (填充0x11 0x52 )、19200bps(填充0x19 0x20)、38400bps(0x38 0x40)。

      上位機(jī):0xFE 0xFF 0x05 0x02 0x11 0x52 CRCH CRCL 0xFE

      傳感器:0xFE 0x05? 0xFF? 0x02? 0x11 0x52 CRCH CRCL 0xFE

      第三次握手:傳感器發(fā)出第二條握手指令后,隨即復(fù)位串口改變自己的波特率。上位機(jī)接收到第二次握手的響應(yīng)后,也立即復(fù)位串口改變自己的波特率。然后雙方用改變的波特率進(jìn)行第三次通信【9】。信息域此時包括要燒錄HEX文件的總大小。

      上位機(jī):0xFE 0xFF 0x05? 0x03? SIZE1 SIZE2 SIZE3 SIZE4 CRCH CRCL 0xFE

      傳感器:0xFE 0x05? 0xFF 0x03? SIZE1 SIZE2 SIZE3 SIZE4 CRCH CRCL 0xFE

      三次握手之后,第四次通信即發(fā)送HEX文件的頭200字節(jié)。任何一次握手失敗,上位機(jī)重復(fù)發(fā)送三次指令,超時或響應(yīng)校驗錯誤,退出升級燒錄流程。

      1.5? ?分散加載原理

      由于單片機(jī)FLASH的大小會影響單片機(jī)的成本,所以盡可能因地制宜揚長避短選擇恰當(dāng)?shù)臒浤J?。主存儲塊是以頁為單位劃分的,一頁大小為1KB。范圍為從地址0x08000000開始的128KB內(nèi)。

      STM32片上有兩個存儲空間,一個是Nor Flash,一個是RAM,燒寫程序所占用空間的大小,可以如下表示:

      SIZEROM = SIZECode + SIZERO + SIZERW

      程序的大小等于Code代碼大小和常量數(shù)據(jù)大小、已初始化全局變量數(shù)據(jù)大小之和。STM32單片機(jī)程序既可以燒錄在Nor Flash中執(zhí)行也可以加載在RAM中執(zhí)行。

      分散加載就是主板啟動后通過BootLoader引導(dǎo)程序根據(jù)配置信息,選擇FLASH具體的應(yīng)用程序目標(biāo)代碼所在的區(qū)域進(jìn)行PC地址跳轉(zhuǎn),執(zhí)行相應(yīng)區(qū)域的應(yīng)用程序過程。目標(biāo)代碼所在的區(qū)域可以是一個,也可以是多個。

      HEX文件在FLASH中存儲時,頭部分是函數(shù)堆棧棧頂?shù)牡刂罚酉聛硎侵袛嘞蛄康牡刂?。主板上電后,PC指針跳轉(zhuǎn)到0x80000004的地址(如果有BootLoader,加一個偏移地址Shift)取出Reset_Handle向量的地址,并跳轉(zhuǎn)相應(yīng)的處理函數(shù)中執(zhí)行,然后跳轉(zhuǎn)到main函數(shù)執(zhí)行。所以HEX文件中就要在編譯的時候設(shè)置好堆棧棧頂?shù)刂?,如下表所示IROM1是對HEX文件起始地址既堆棧棧頂?shù)刂芬约按笮〉脑O(shè)置,IRAM1是對變量內(nèi)存起始地址以及內(nèi)存大小的設(shè)置。0x9000之前的地址為BootLoader目標(biāo)HEX文件預(yù)留地址。

      該函數(shù)完成BootLoader加載應(yīng)用程序執(zhí)行PC指針跳轉(zhuǎn)前的準(zhǔn)備工作,AppAddr代表要加載的分區(qū)的地址,為了系統(tǒng)安全期間函數(shù)首先檢查地址是否合法,也就是目標(biāo)區(qū)域是否燒錄了程序HEX文件。然后通過MSR_MSP設(shè)置APP函數(shù)堆棧指針,也就是AppAddr。

      而函數(shù)指針JumpToApp的值等于APP程序中斷向量的入口地址,所以函數(shù)堆棧設(shè)置完成后通過一個空函數(shù)JumpToApp()完成PC指針的跳轉(zhuǎn)[10]。

      跳轉(zhuǎn)到APP系統(tǒng)之后,首先會進(jìn)入中斷向量Reset_Handle,執(zhí)行Reset_Handle函數(shù),進(jìn)而進(jìn)入main函數(shù)執(zhí)行。由于中斷向量地址已經(jīng)改變,所以應(yīng)用程序系統(tǒng)初始化之前應(yīng)調(diào)用ReNVIC_SetVectorTable函數(shù)重新配置中斷向量地址為AppAddr+4,防止程序跑飛[11]。

      1.6? ?雙分區(qū)加載

      多個區(qū)域存放程序的目標(biāo)代碼,可以讓其中的一個區(qū)域用來正常運行程序,一個用來燒錄目標(biāo)HEX文件。這樣就可以避免傳感器正在升級程序而無法應(yīng)對環(huán)境出現(xiàn)危險源的情況。應(yīng)用程序除了正常的檢測程序,在main函數(shù)的大循環(huán)里面增加一個燒錄程序的program()功能,該功能與BootLoader的燒錄功能協(xié)議完全一致。

      考慮到FLASH成本,一般設(shè)置為兩個分區(qū)。待目標(biāo)HEX文件燒錄完成后,將程序的版本號寫入配置信息。重新啟動系統(tǒng),讓BootLoader讀取配置信息根據(jù)版本號對比,加載版本號大的分區(qū),這樣就可以完成傳感器軟件的升級。

      擦除時間滿足合理的范圍,說明系統(tǒng)擦除工作沒有其他損耗。如果擦除時間取最大值,那么1MB的Hex文件大約需要的時間(按照1MB/s的寫入速度)為17 s左右,設(shè)置3 s 的安全閾值,總體時間設(shè)置為20 s。那么RC等于50。C取50 μf,R取1M歐姆,避免因R太小導(dǎo)致IC2輸入電流較小。圖5中電路C3、R2這樣設(shè)計以后就可以保證電容的放電時間,滿足1 MB以內(nèi)Hex文件的燒錄時間,保證STM32在失去正常工作模式之前完成程序的燒錄。

      以上兩種方法都是基于井下傳感器安全升級軟件的考慮,滿足實時檢測環(huán)境的要求,保證不斷線的情況下對軟件進(jìn)行的升級。

      2? ?井下傳感器安全升級系統(tǒng)的運用價值

      RS485總線用115200 bps的波特率傳輸1 MB的文件數(shù)據(jù),拋開發(fā)送和接收軟件的處理時間,對傳感器升級1 MB的程序文件大概所需的時間為:

      傳輸時間和ACK響應(yīng)時間卻別就在于傳輸?shù)臄?shù)據(jù)包大小不同,ACK數(shù)據(jù)包較短,但考慮到軟件處理數(shù)據(jù)的損耗時間,默認(rèn)兩者相等,經(jīng)計算T大約等于3 min左右。

      井下瓦斯?jié)舛缺容^高的環(huán)境如采煤工作面、通風(fēng)差的巷道、以及采煤鉆機(jī)的周邊,瓦斯的檢測必須要求實時而且準(zhǔn)確,否則會發(fā)生較大安全事故,嚴(yán)重可能危害人員的安全。例如采煤的鉆機(jī)在掘進(jìn)過程中會發(fā)生瓦斯突出,瓦斯突出會瞬間釋放大量瓦斯和煤。瓦斯突出的時間和危害程度具有較大不確定性,并不能預(yù)研預(yù)判,所以相關(guān)的傳感器例如頂板、甲烷傳感器就必須保證持續(xù)有效的工作。只有傳感器正常持續(xù)工作,檢測到異常才能通過分站操作斷路器局部斷電或者啟動排風(fēng)系統(tǒng),盡最大可能降低瓦斯的危害。沒有使用該系統(tǒng)之前,對局部傳感器的軟件升級,存在(N*3)min不確定的安全隱患時間,N為升級的各類傳感器的數(shù)量。

      未使用安全升級系統(tǒng)之前,單個局部巷道共有P個傳感器,每天升級M個傳感器需要占用M*3分鐘的升級時間,那么每天會造成系統(tǒng)穩(wěn)定性下降程度大致為:

      假設(shè)P = M,那么L約等于0.21%,可見不安全升級傳感器軟件對于系統(tǒng)的危害程度,假設(shè)每天工作的時間為8小時,那么對于人員的危害程度則上升到3倍。使用安全升級系統(tǒng)之后,升級軟件造成的安全隱患(排除主板硬件故障的原因)就極大消除了。

      3? ?結(jié) 論

      綜上所述,所論述的傳感器軟件安全升級方法具有較大的使用價值,可以最大限度避免程序升級造成的監(jiān)測系統(tǒng)暫時失效的問題,可以減少傳統(tǒng)軟件升級所造成的系統(tǒng)風(fēng)險,對保障安全生產(chǎn)具有較大的現(xiàn)實意義。

      隨著“十三五”規(guī)劃落地,在國家建設(shè)智能礦山的政策背景下,安全生產(chǎn)將變得越來越重要,井下產(chǎn)品的使用維護(hù)升級在安全的環(huán)境安全檢測狀態(tài)下進(jìn)行也變得尤為重要。

      參考文獻(xiàn)

      [1]? ? 朱貴國,汪黨.基于STM32單片機(jī)的直流電機(jī)調(diào)速系統(tǒng)設(shè)計[J].數(shù)字技術(shù)與應(yīng)用,2013,35(05):42-43.

      [2]? ? 朱仁義,李泓成,張遼.基于STM32單片機(jī)和SDRAM的模擬U盤設(shè)計[J].電子世界,2017,21(03):108-110.

      [3]? ? 胡廣,謝中朝,胡健翔.基于STM32單片機(jī)的井下大容量儲能裝置的設(shè)計[J].電子質(zhì)量,2015,31(06):17-18.

      [4]? ? 孟錦濤,劉淮霞. STM32單片機(jī)在室內(nèi)監(jiān)測研究[J]. 計算機(jī)產(chǎn)品與流通,2018,19(08):210-211.

      [5]? ? 范雪琴.基于STM32單片機(jī)的熱量表低成本測溫電路設(shè)計[J]. 蘇州市職業(yè)大學(xué)學(xué)報,2014,37(02):87-89.

      [6]? ? 蔣昭穎. 基于STM32單片機(jī)的變頻正弦信號發(fā)生器[J].電子設(shè)計工程,2016,27(05):31-33.

      [7]? ? 劉昕. 基于STM32單片機(jī)的高精度超聲波測距系統(tǒng)的設(shè)計[J].電子制作,2013,26(16):237-238.

      [8]? ? 王工.指紋儲物柜,可替代傳統(tǒng)柜體的新型"保險柜"[J]. 大眾投資指南. 2012,12(03):67-69.

      [9]? ? 張容娟.智慧校園中基于校園卡的智能儲物柜設(shè)計[J].電子測試,2017,31(13):89-90.

      [10]? 馬馨雅.基于STM32的指紋識別門禁系統(tǒng)[J]. 電子世界,2018,22(24):19-20.

      [11]? 王燕,戴劍峰,王祥華.STM32的條狀指紋采集與拼接系統(tǒng)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012,37(11):110-111.

      [12]? 劉榴,何英昊,李仁澤.基于STM32的簡易智能家居控制系統(tǒng)設(shè)計[J]. 物聯(lián)網(wǎng)技術(shù),2016,29(11):90-91.

      桦川县| 萨嘎县| 顺昌县| 高州市| 京山县| 涿鹿县| 乌审旗| 理塘县| 阳高县| 聂荣县| 仁布县| 沈阳市| 达拉特旗| 宽城| 霍山县| 马公市| 岫岩| 尚志市| 星子县| 胶州市| 石楼县| 滕州市| 新龙县| 彰化市| 阜南县| 雷波县| 资溪县| 驻马店市| 喀什市| 福贡县| 河西区| 安新县| 马边| 电白县| 镇赉县| 阿尔山市| 北宁市| 葵青区| 罗定市| 柳州市| 邵武市|