中國煤炭科工集團常州自動化研究院 王啟峰
目前,煤礦安全監控系統中的設備較多,一般會有分站、傳感器、電源等,設備功能的增加、刪除及更改絕大部分通過程序來實現性,即使通過硬件實現的也需要相應的進行程序的更改,所以不可避免的需要對系統設備的程序進行升級更換。傳統的更新方式是由安裝人員下到井下,將需要更新固件軟件的監控主板帶到井上進行程序更新,再返回到井下安裝到監控點。監控分站一般距離井上監控中心十幾公里,采用這種傳統方式非常浪費時間,且在更換監控主板期間,由于沒有監控系統煤礦作業不得不停止很長一段時間[1][2],實際上可以采取地面升級好主板,直接在進行更換的方式,可以減少監控系統停止運行的時間。但是,由于需要更換分站主板,仍然會導致控制設備的中斷。另外,對傳感器電源等設備的程序升級存在著同樣的問題。
煤礦安全監控系統大部分設備均以單片機、ARM等微處理器為核心,都有ISP(in system programming)或IAP(in applicatin programming)接口,利用這兩種接口可以對嵌入式設備靈活的進行程序升級。
隨著科學技術的發展,多數公司新推出的單片機、ARM等處理器芯片均具有片內Flash存儲器,Flash存儲器具有電可擦除、無需后備電源保護數據、可在線編程等特點。其中最大的特點就是在線可編程,該特點允許處理器的內部程序可以修改Flash存儲器的內容,利用這個特點,可以在設備運行過程中就可以對其內部運行參數進行修改[3]。
在線編程目前有兩種實現方法:在系統編程(ISP)和在應用編程(IAP)。ISP一般是通過單片機專用的串行編程接口對單片機內部的Flash存儲器進行編程,而IAP技術是從結構上將Flash存儲器映射為兩個存儲體,當運行一個存儲體上的用戶程序時,可對另一個存儲體重新編程,之后將控制從一個存儲體轉向另一個。ISP的實現一般需要很少的外部電路輔助實現,而IAP的實現更加靈活,通常可利用單片機的串行口接到計算機的RS232口,通過專門設計的固件程序來編程內部存儲器。
在沒有應用ISP芯片燒寫方法之前,向芯片內寫入程序均需要把芯片從電路板上取下來,用專用的編程器寫入,故芯片不能不脫離應用系統進行寫入。ISP主要針對這個問題,使用JTAG或者串口(通過特定的方式激活芯片內部的Boot Loader,芯片便可以和PC或其它上位機通過串口通訊,在芯片不離開應用系統的情況下更新其內部的程序或設置)進行程序的寫入操作。因此,具有ISP功能的微處理器可以不使用復雜的編程器,只通過簡單的硬件電路便可以進行編程。

圖1 硬件原理框圖

圖2 數據存儲原理圖

圖3 按鍵及指示原理圖

圖4 電源及ISP接口原理圖

圖5 USB接口原理圖
IAP是用戶程序在運行過程中可對User Flash的部分區域進行燒寫,目的是為了在產品發布后可以方便地通過預留的通訊接口對產品中的固件程序進行更新升級。通常在用戶需要實現IAP功能時,即用戶程序運行中作自身的更新操作,需要在設計固件程序時編寫兩個項目代碼,第一部分項目代碼不執行正常的功能操作,只是通過某種通訊接口(如USB、UART)接收程序或數據,執行對第二部分代碼的更改;第二個項目代碼完成產品的所有正常功能。這兩部分項目代碼都同時燒錄在User Flash中,當芯片上電后,首先是第一部分代碼開始運行,正常運行后作出如下操作:1)檢查是否需要對第二部分代碼進行更新;2)如果不需要更新則轉到4),如果需要更新則繼續3);3)執行更新操作;4)跳轉到第二部分代碼執行。

圖6 下載器主程序流程圖

圖7 軟件基于VC++設計界面圖
第一部分代碼必須通過JTAG、ISP等手段燒寫到芯片中;第二部分代碼可以使用第一部分代碼IAP功能燒入,也可以和第一部分代碼一起燒入,之后需要更新程序時再通過第一部分IAP代碼更新。
ISP一般是固化到芯片中的,在設計中只要加入相關電路,通過某種觸發方式即可燒寫程序。在生產過程中,ISP功能是不可或缺的。但假如系統或者模塊在一個非常難拆的位置或者是不可接觸的位置(如藏于車身中的車載電子零部件),如果要對其升級,ISP不一定能夠適用。這時需要運用IAP,編寫適合的燒錄程序,如使用CAN網絡通信的車載電子一般都是通過CAN網絡燒寫升級程序的。
如果監控系統設備,使用RS-485總線、CAN總線或以太網等通信方式與計算機可以通訊,則可以利用其IAP接口實現設備程序的遠程升級。《煤礦安全監控分站遠程升級方案》及《礦用監控分站程序遠程在線更新設計》等參考文獻中均對該方法進行了描述與設計,以下將就該方法使用的場合作以解釋。
正如文獻1中所描述的,在通訊波特率設置為2400bps時,86KB的程序代碼下載時間在12分鐘左右。第一,該情況為實驗室下的測試結果;第二,為了保證通訊距離的增加,部分系統的通訊波特率會調協到1200bps;第三,隨著功能的增加,程序代碼的大小會越來越大;第四,正常的監控系統巡檢時間通訊通道不可能完全用來程序代碼的升級。所以,在復雜的通訊環境、更低的波特率、更大的程序代碼以及合理的通道安排的情況下,程序升級所占用的時間會大大增加。按照文獻1的實驗結果,在波特率為1200bps、代碼86KB大小、10%的帶寬用來升級代碼,則設備完成程序升級所占用的時間約為12×2×10=240分鐘。如此長的時間內,存在著設備由于電源原因而重啟的情況,那么程序升級時間將會更加漫長。
所以,將遠程升級用于具有低速率通訊接口設備的可行性不高,但是,將其應用于具有以太網等高速通訊接口的設備不失為一個好方案。
對于不具備遠程升級條件的系統設備,需要在線的就地升級,利用MCU、ARM等芯片提供的ISP功能可以完成程序的升級。此升級方法,除了設備上的硬件支持外,需要提供用于升級程序的接口設備,需要安裝了配套軟件的計算機,以上兩點導致了不能對井下現場使用的設備進行快速靈活的升級。與在線進行程序升級相比,離線的程序下載器在將會更加適合煤礦現場。
處理器,由于ISP使用了設備的串口,下載器下載程序的過程即為下載通過串口與設備通訊的過程,為了下載器與設備的順利通訊,下載器的處理器需要具有UART接口,同時具有連接程序存儲的FLASH的接口,故選用體積小成本較低的51系列單片機C8051F430。由于需要存儲多種設備的程序代碼,FLASH芯片選用容量相對較大的串行存儲芯片AT45DB321,該芯片具有32M bit的容量、SOIC8的小型 封裝。為了方便、快速的將程序寫入到離線下載器,下載器與計算機的接口選用了USB接口,接口芯片選用 CH372。其硬件原理框圖及各部分原理圖設計如圖1~圖5所示[4][5]。
為了達到自動下載的目的,下載器需要對目標設備進行自動識別,以完成設備對應程序的選擇。下載器對設備的自動識別,可以有效的保證,下載器里的程序不會被下載到抄襲或仿制的設備里。下載器對設備的自動識別,通過程序下載前下載器與設備的通訊驗證完成,當設備處理器的FLASH里沒有下載過正確的程序時,設備與下載器無法通訊,即無法完成自動識別,則下載器里的程序將不會下載到設備里。為了能夠在特殊情況下,對沒有正確程序的設備進行升級,下載器同時設計手動升級程序功能,當上位機軟件配置該下載器具有手動下載功能時,可能通過按鍵及指示燈的配合,手動完成設備的程序升級。下載器軟件流程圖如圖6所示。
上位機軟件主要通過USB接口與下載器的通訊,對下載器進行查詢及配置,可查詢及配置的內容主要包括:下載器是否有手動下載功能,設備的種類及其對應的程序,可下載的次數,ISP下載的波特率,下載器的登錄密碼等。軟件基于VC++設計,其界面如圖7所示。
本文分析了ISP及IAP兩種芯片Flash燒寫方式的特點以及其使用場合,同時根據煤礦監控系統設備工作的特點,以及其程序升級常用方法,討論了兩種Flash燒寫方法所適用的設備,總結出遠程升級和就地升級兩種升級方法。針對就地升級方法設計了離線編程器,并設計了配套的上位機軟件,目前該離線編程器已經在現場多處使用,提高了監控系統設備程序升級的效率。
[1]方崇全,郭江濤,湯朝明.礦用監控分站程序遠程在線更新設計[J].礦業安全與環保,2009(4):16-18,21.
[2]孫鋼,朱忠常,景振興.煤礦安全監控分站遠程升級方案[J].工礦自動化,2012(3):58-60.
[3]梁睿,薛雪,王崇林,張棟梁.ISP技術在AT89SX單片機中的應用[J].工礦自動化,2005(2):47-48.
[4]張志柏,秦益霖.存儲器AT45DB321C在“數字傾斜讀數儀”中的應用[J].常州信息職業技術學院學報,2008(3):13-15.
[5]李蘭,寧永海.基于CH372的USB數據采集系統的設計與實現[J].微計算機信息,2007(34):76-77,69.