国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2019-11-05 10:20王博文周德勝

王博文 周德勝

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

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

中圖法分類號(hào):TP393? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼: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

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

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

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

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

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

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

1? ?井下傳感器升級(jí)系統(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)之間通過一個(gè)信息傳輸接口(RS485轉(zhuǎn)以太網(wǎng))連接,分站和傳感器之間采用RS485總線連接。為了實(shí)現(xiàn)地面上位機(jī)PC客戶端遠(yuǎn)程對(duì)傳感器的升級(jí),由PC客戶端將升級(jí)的指令通過信息傳輸接口發(fā)送至分站層,分站經(jīng)過查詢路由表,對(duì)PC客戶端發(fā)送的指令進(jìn)行屏蔽或者接收,然后采用485協(xié)議通過廣播的方式將下載程序的指令下發(fā)至傳感器總線上。傳感器收到后比較對(duì)應(yīng)的ID號(hào),如果ID匹配則響應(yīng)并進(jìn)入升級(jí)處理流程,否則就不予處理。

1.2? ?傳輸協(xié)議

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

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

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

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

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

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

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

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

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

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

1.4? ?三次握手

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

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

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

上位機(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ā)來的四個(gè)字節(jié)的加密結(jié)果后,先對(duì)加密結(jié)果進(jìn)行校驗(yàn),校驗(yà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】。信息域此時(shí)包括要燒錄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ā)送三次指令,超時(shí)或響應(yīng)校驗(yàn)錯(cuò)誤,退出升級(jí)燒錄流程。

1.5? ?分散加載原理

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

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

SIZEROM = SIZECode + SIZERO + SIZERW

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

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

HEX文件在FLASH中存儲(chǔ)時(shí),頭部分是函數(shù)堆棧棧頂?shù)牡刂?,接下來是中斷向量的地址。主板上電后,PC指針跳轉(zhuǎn)到0x80000004的地址(如果有BootLoader,加一個(gè)偏移地址Shift)取出Reset_Handle向量的地址,并跳轉(zhuǎn)相應(yīng)的處理函數(shù)中執(zhí)行,然后跳轉(zhuǎn)到main函數(shù)執(zhí)行。所以HEX文件中就要在編譯的時(shí)候設(shè)置好堆棧棧頂?shù)刂?,如下表所示IROM1是對(duì)HEX文件起始地址既堆棧棧頂?shù)刂芬约按笮〉脑O(shè)置,IRAM1是對(duì)變量內(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è)置完成后通過一個(gè)空函數(shù)JumpToApp()完成PC指針的跳轉(zhuǎn)[10]。

跳轉(zhuǎn)到APP系統(tǒng)之后,首先會(huì)進(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ū)加載

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

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

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

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

2? ?井下傳感器安全升級(jí)系統(tǒng)的運(yùn)用價(jià)值

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

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

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

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

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

3? ?結(jié) 論

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

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

參考文獻(xiàn)

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

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

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

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

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

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

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

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

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

[10]? 馬馨雅.基于STM32的指紋識(shí)別門禁系統(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ì)[J]. 物聯(lián)網(wǎng)技術(shù),2016,29(11):90-91.