中國(guó)煤炭科工集團(tuán)常州自動(dòng)化研究院 王啟峰
目前,煤礦安全監(jiān)控系統(tǒng)中的設(shè)備較多,一般會(huì)有分站、傳感器、電源等,設(shè)備功能的增加、刪除及更改絕大部分通過(guò)程序來(lái)實(shí)現(xiàn)性,即使通過(guò)硬件實(shí)現(xiàn)的也需要相應(yīng)的進(jìn)行程序的更改,所以不可避免的需要對(duì)系統(tǒng)設(shè)備的程序進(jìn)行升級(jí)更換。傳統(tǒng)的更新方式是由安裝人員下到井下,將需要更新固件軟件的監(jiān)控主板帶到井上進(jìn)行程序更新,再返回到井下安裝到監(jiān)控點(diǎn)。監(jiān)控分站一般距離井上監(jiān)控中心十幾公里,采用這種傳統(tǒng)方式非常浪費(fèi)時(shí)間,且在更換監(jiān)控主板期間,由于沒(méi)有監(jiān)控系統(tǒng)煤礦作業(yè)不得不停止很長(zhǎng)一段時(shí)間[1][2],實(shí)際上可以采取地面升級(jí)好主板,直接在進(jìn)行更換的方式,可以減少監(jiān)控系統(tǒng)停止運(yùn)行的時(shí)間。但是,由于需要更換分站主板,仍然會(huì)導(dǎo)致控制設(shè)備的中斷。另外,對(duì)傳感器電源等設(shè)備的程序升級(jí)存在著同樣的問(wèn)題。
煤礦安全監(jiān)控系統(tǒng)大部分設(shè)備均以單片機(jī)、ARM等微處理器為核心,都有ISP(in system programming)或IAP(in applicatin programming)接口,利用這兩種接口可以對(duì)嵌入式設(shè)備靈活的進(jìn)行程序升級(jí)。
隨著科學(xué)技術(shù)的發(fā)展,多數(shù)公司新推出的單片機(jī)、ARM等處理器芯片均具有片內(nèi)Flash存儲(chǔ)器,F(xiàn)lash存儲(chǔ)器具有電可擦除、無(wú)需后備電源保護(hù)數(shù)據(jù)、可在線編程等特點(diǎn)。其中最大的特點(diǎn)就是在線可編程,該特點(diǎn)允許處理器的內(nèi)部程序可以修改Flash存儲(chǔ)器的內(nèi)容,利用這個(gè)特點(diǎn),可以在設(shè)備運(yùn)行過(guò)程中就可以對(duì)其內(nèi)部運(yùn)行參數(shù)進(jìn)行修改[3]。
在線編程目前有兩種實(shí)現(xiàn)方法:在系統(tǒng)編程(ISP)和在應(yīng)用編程(IAP)。ISP一般是通過(guò)單片機(jī)專用的串行編程接口對(duì)單片機(jī)內(nèi)部的Flash存儲(chǔ)器進(jìn)行編程,而IAP技術(shù)是從結(jié)構(gòu)上將Flash存儲(chǔ)器映射為兩個(gè)存儲(chǔ)體,當(dāng)運(yùn)行一個(gè)存儲(chǔ)體上的用戶程序時(shí),可對(duì)另一個(gè)存儲(chǔ)體重新編程,之后將控制從一個(gè)存儲(chǔ)體轉(zhuǎn)向另一個(gè)。ISP的實(shí)現(xiàn)一般需要很少的外部電路輔助實(shí)現(xiàn),而IAP的實(shí)現(xiàn)更加靈活,通常可利用單片機(jī)的串行口接到計(jì)算機(jī)的RS232口,通過(guò)專門設(shè)計(jì)的固件程序來(lái)編程內(nèi)部存儲(chǔ)器。
在沒(méi)有應(yīng)用ISP芯片燒寫方法之前,向芯片內(nèi)寫入程序均需要把芯片從電路板上取下來(lái),用專用的編程器寫入,故芯片不能不脫離應(yīng)用系統(tǒng)進(jìn)行寫入。ISP主要針對(duì)這個(gè)問(wèn)題,使用JTAG或者串口(通過(guò)特定的方式激活芯片內(nèi)部的Boot Loader,芯片便可以和PC或其它上位機(jī)通過(guò)串口通訊,在芯片不離開(kāi)應(yīng)用系統(tǒng)的情況下更新其內(nèi)部的程序或設(shè)置)進(jìn)行程序的寫入操作。因此,具有ISP功能的微處理器可以不使用復(fù)雜的編程器,只通過(guò)簡(jiǎn)單的硬件電路便可以進(jìn)行編程。
圖1 硬件原理框圖
圖2 數(shù)據(jù)存儲(chǔ)原理圖
圖3 按鍵及指示原理圖
圖4 電源及ISP接口原理圖
圖5 USB接口原理圖
IAP是用戶程序在運(yùn)行過(guò)程中可對(duì)User Flash的部分區(qū)域進(jìn)行燒寫,目的是為了在產(chǎn)品發(fā)布后可以方便地通過(guò)預(yù)留的通訊接口對(duì)產(chǎn)品中的固件程序進(jìn)行更新升級(jí)。通常在用戶需要實(shí)現(xiàn)IAP功能時(shí),即用戶程序運(yùn)行中作自身的更新操作,需要在設(shè)計(jì)固件程序時(shí)編寫兩個(gè)項(xiàng)目代碼,第一部分項(xiàng)目代碼不執(zhí)行正常的功能操作,只是通過(guò)某種通訊接口(如USB、UART)接收程序或數(shù)據(jù),執(zhí)行對(duì)第二部分代碼的更改;第二個(gè)項(xiàng)目代碼完成產(chǎn)品的所有正常功能。這兩部分項(xiàng)目代碼都同時(shí)燒錄在User Flash中,當(dāng)芯片上電后,首先是第一部分代碼開(kāi)始運(yùn)行,正常運(yùn)行后作出如下操作:1)檢查是否需要對(duì)第二部分代碼進(jìn)行更新;2)如果不需要更新則轉(zhuǎn)到4),如果需要更新則繼續(xù)3);3)執(zhí)行更新操作;4)跳轉(zhuǎn)到第二部分代碼執(zhí)行。
圖6 下載器主程序流程圖
圖7 軟件基于VC++設(shè)計(jì)界面圖
第一部分代碼必須通過(guò)JTAG、ISP等手段燒寫到芯片中;第二部分代碼可以使用第一部分代碼IAP功能燒入,也可以和第一部分代碼一起燒入,之后需要更新程序時(shí)再通過(guò)第一部分IAP代碼更新。
ISP一般是固化到芯片中的,在設(shè)計(jì)中只要加入相關(guān)電路,通過(guò)某種觸發(fā)方式即可燒寫程序。在生產(chǎn)過(guò)程中,ISP功能是不可或缺的。但假如系統(tǒng)或者模塊在一個(gè)非常難拆的位置或者是不可接觸的位置(如藏于車身中的車載電子零部件),如果要對(duì)其升級(jí),ISP不一定能夠適用。這時(shí)需要運(yùn)用IAP,編寫適合的燒錄程序,如使用CAN網(wǎng)絡(luò)通信的車載電子一般都是通過(guò)CAN網(wǎng)絡(luò)燒寫升級(jí)程序的。
如果監(jiān)控系統(tǒng)設(shè)備,使用RS-485總線、CAN總線或以太網(wǎng)等通信方式與計(jì)算機(jī)可以通訊,則可以利用其IAP接口實(shí)現(xiàn)設(shè)備程序的遠(yuǎn)程升級(jí)?!睹旱V安全監(jiān)控分站遠(yuǎn)程升級(jí)方案》及《礦用監(jiān)控分站程序遠(yuǎn)程在線更新設(shè)計(jì)》等參考文獻(xiàn)中均對(duì)該方法進(jìn)行了描述與設(shè)計(jì),以下將就該方法使用的場(chǎng)合作以解釋。
正如文獻(xiàn)1中所描述的,在通訊波特率設(shè)置為2400bps時(shí),86KB的程序代碼下載時(shí)間在12分鐘左右。第一,該情況為實(shí)驗(yàn)室下的測(cè)試結(jié)果;第二,為了保證通訊距離的增加,部分系統(tǒng)的通訊波特率會(huì)調(diào)協(xié)到1200bps;第三,隨著功能的增加,程序代碼的大小會(huì)越來(lái)越大;第四,正常的監(jiān)控系統(tǒng)巡檢時(shí)間通訊通道不可能完全用來(lái)程序代碼的升級(jí)。所以,在復(fù)雜的通訊環(huán)境、更低的波特率、更大的程序代碼以及合理的通道安排的情況下,程序升級(jí)所占用的時(shí)間會(huì)大大增加。按照文獻(xiàn)1的實(shí)驗(yàn)結(jié)果,在波特率為1200bps、代碼86KB大小、10%的帶寬用來(lái)升級(jí)代碼,則設(shè)備完成程序升級(jí)所占用的時(shí)間約為12×2×10=240分鐘。如此長(zhǎng)的時(shí)間內(nèi),存在著設(shè)備由于電源原因而重啟的情況,那么程序升級(jí)時(shí)間將會(huì)更加漫長(zhǎng)。
所以,將遠(yuǎn)程升級(jí)用于具有低速率通訊接口設(shè)備的可行性不高,但是,將其應(yīng)用于具有以太網(wǎng)等高速通訊接口的設(shè)備不失為一個(gè)好方案。
對(duì)于不具備遠(yuǎn)程升級(jí)條件的系統(tǒng)設(shè)備,需要在線的就地升級(jí),利用MCU、ARM等芯片提供的ISP功能可以完成程序的升級(jí)。此升級(jí)方法,除了設(shè)備上的硬件支持外,需要提供用于升級(jí)程序的接口設(shè)備,需要安裝了配套軟件的計(jì)算機(jī),以上兩點(diǎn)導(dǎo)致了不能對(duì)井下現(xiàn)場(chǎng)使用的設(shè)備進(jìn)行快速靈活的升級(jí)。與在線進(jìn)行程序升級(jí)相比,離線的程序下載器在將會(huì)更加適合煤礦現(xiàn)場(chǎng)。
處理器,由于ISP使用了設(shè)備的串口,下載器下載程序的過(guò)程即為下載通過(guò)串口與設(shè)備通訊的過(guò)程,為了下載器與設(shè)備的順利通訊,下載器的處理器需要具有UART接口,同時(shí)具有連接程序存儲(chǔ)的FLASH的接口,故選用體積小成本較低的51系列單片機(jī)C8051F430。由于需要存儲(chǔ)多種設(shè)備的程序代碼,F(xiàn)LASH芯片選用容量相對(duì)較大的串行存儲(chǔ)芯片AT45DB321,該芯片具有32M bit的容量、SOIC8的小型 封裝。為了方便、快速的將程序?qū)懭氲诫x線下載器,下載器與計(jì)算機(jī)的接口選用了USB接口,接口芯片選用 CH372。其硬件原理框圖及各部分原理圖設(shè)計(jì)如圖1~圖5所示[4][5]。
為了達(dá)到自動(dòng)下載的目的,下載器需要對(duì)目標(biāo)設(shè)備進(jìn)行自動(dòng)識(shí)別,以完成設(shè)備對(duì)應(yīng)程序的選擇。下載器對(duì)設(shè)備的自動(dòng)識(shí)別,可以有效的保證,下載器里的程序不會(huì)被下載到抄襲或仿制的設(shè)備里。下載器對(duì)設(shè)備的自動(dòng)識(shí)別,通過(guò)程序下載前下載器與設(shè)備的通訊驗(yàn)證完成,當(dāng)設(shè)備處理器的FLASH里沒(méi)有下載過(guò)正確的程序時(shí),設(shè)備與下載器無(wú)法通訊,即無(wú)法完成自動(dòng)識(shí)別,則下載器里的程序?qū)⒉粫?huì)下載到設(shè)備里。為了能夠在特殊情況下,對(duì)沒(méi)有正確程序的設(shè)備進(jìn)行升級(jí),下載器同時(shí)設(shè)計(jì)手動(dòng)升級(jí)程序功能,當(dāng)上位機(jī)軟件配置該下載器具有手動(dòng)下載功能時(shí),可能通過(guò)按鍵及指示燈的配合,手動(dòng)完成設(shè)備的程序升級(jí)。下載器軟件流程圖如圖6所示。
上位機(jī)軟件主要通過(guò)USB接口與下載器的通訊,對(duì)下載器進(jìn)行查詢及配置,可查詢及配置的內(nèi)容主要包括:下載器是否有手動(dòng)下載功能,設(shè)備的種類及其對(duì)應(yīng)的程序,可下載的次數(shù),ISP下載的波特率,下載器的登錄密碼等。軟件基于VC++設(shè)計(jì),其界面如圖7所示。
本文分析了ISP及IAP兩種芯片F(xiàn)lash燒寫方式的特點(diǎn)以及其使用場(chǎng)合,同時(shí)根據(jù)煤礦監(jiān)控系統(tǒng)設(shè)備工作的特點(diǎn),以及其程序升級(jí)常用方法,討論了兩種Flash燒寫方法所適用的設(shè)備,總結(jié)出遠(yuǎn)程升級(jí)和就地升級(jí)兩種升級(jí)方法。針對(duì)就地升級(jí)方法設(shè)計(jì)了離線編程器,并設(shè)計(jì)了配套的上位機(jī)軟件,目前該離線編程器已經(jīng)在現(xiàn)場(chǎng)多處使用,提高了監(jiān)控系統(tǒng)設(shè)備程序升級(jí)的效率。
[1]方崇全,郭江濤,湯朝明.礦用監(jiān)控分站程序遠(yuǎn)程在線更新設(shè)計(jì)[J].礦業(yè)安全與環(huán)保,2009(4):16-18,21.
[2]孫鋼,朱忠常,景振興.煤礦安全監(jiān)控分站遠(yuǎn)程升級(jí)方案[J].工礦自動(dòng)化,2012(3):58-60.
[3]梁睿,薛雪,王崇林,張棟梁.ISP技術(shù)在AT89SX單片機(jī)中的應(yīng)用[J].工礦自動(dòng)化,2005(2):47-48.
[4]張志柏,秦益霖.存儲(chǔ)器AT45DB321C在“數(shù)字傾斜讀數(shù)儀”中的應(yīng)用[J].常州信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2008(3):13-15.
[5]李蘭,寧永海.基于CH372的USB數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007(34):76-77,69.