李聰
摘要:為了解決柱塞壓力計系統(tǒng)中井下壓力計長期工作在氣井中,現(xiàn)場更新程序困難的問題,柱塞壓力計系統(tǒng)增加了井下壓力計程序無線更新的功能。本文根據(jù)井下壓力計自身的硬件特點,提出了一種簡單實用的實現(xiàn)程序無線更新的方案。并對柱塞壓力計系統(tǒng)、井下壓力計無線通訊流程、程序更新流程做了詳細(xì)闡述。采用了CRC校驗保證更新程序數(shù)據(jù)的準(zhǔn)確性。
關(guān)鍵詞:井下壓力計;無線更新;CRC校驗
1.引言
柱塞壓力計系統(tǒng)由地面控制儀、井下壓力計和上位機軟件組成,如圖1所示。地面控制儀通過無線通訊模塊與井下壓力計進(jìn)行無線通訊,通過GPRS網(wǎng)絡(luò)與上位機之間進(jìn)行遠(yuǎn)程通訊。由于有時需要對井下壓力計程序進(jìn)行修改完善,則需要對井下壓力計進(jìn)行程序更新,目前常用的程序更新方式是有線更新方式。通過AVR-USBASP程序下載器將上位機和井下壓力計的AVR單片機進(jìn)行有線連接,然后通過程序燒寫軟件對AVR單片機進(jìn)行程序更新。
井下壓力計長期工作在氣井中,若采用有線更新程序方式,需要人員到現(xiàn)場將井下壓力計從氣井中取出并拆開,取出電路板組件,進(jìn)行有線更新,這種方式需要耗費大量的人力物力,且影響氣井的產(chǎn)出,給用戶造成損失。由于井下壓力計具有無線通訊功能,為井下壓力計添加程序無線更新的功能提供了保證。
2.無線更新的實現(xiàn)
2.1無線更新實現(xiàn)流程
AVR單片機內(nèi)部可編程Flash存儲區(qū)分為Application Flash Section(應(yīng)用程序區(qū))和Boot Loader Section(引導(dǎo)程序區(qū))[1]。編寫兩個AVR程序,引導(dǎo)程序和應(yīng)用程序,在生產(chǎn)時,用AVR-USBASP程序下載器分別寫入引導(dǎo)程序和應(yīng)用程序。在使用過程中若需要對應(yīng)用程序進(jìn)行更新,則直接采用無線更新的方式。
引導(dǎo)程序?qū)崿F(xiàn)的功能為:單片機上電或復(fù)位后,若需要更新,則進(jìn)行程序更新,更新完畢后,通過跳轉(zhuǎn)指令跳轉(zhuǎn)到應(yīng)用程序區(qū)的起始位置運行應(yīng)用程序;若不需要更新,則通過跳轉(zhuǎn)指令直接跳轉(zhuǎn)到應(yīng)用程序區(qū)的起始位置運行應(yīng)用程序。應(yīng)用程序?qū)崿F(xiàn)的功能為:采集溫度壓力數(shù)據(jù)并存儲,與計算機軟件進(jìn)行有線通訊,與地面控制儀進(jìn)行無線通訊,接收更新程序數(shù)據(jù)并存儲,接收完更新數(shù)據(jù)后使能看門狗復(fù)位,進(jìn)入引導(dǎo)程序。
井下壓力計無線更新實現(xiàn)的程序流程圖如圖2所示。引導(dǎo)程序和應(yīng)用程序中均設(shè)置一個程序更新標(biāo)志Update_flag存儲于單片機內(nèi)部EEPROM存儲器(EEPROM存儲器具有掉電(或復(fù)位)后數(shù)據(jù)不丟失的特點)中,在兩個程序中的存儲地址一致。工作流程為:儀器上電后,運行引導(dǎo)程序,從EEPROM中讀出程序更新標(biāo)志Update_flag,若Update_flag為1則更新程序,若不為1,則執(zhí)行跳轉(zhuǎn)指令跳出引導(dǎo)程序,執(zhí)行應(yīng)用程序。當(dāng)井下壓力計接收到來自地面控制儀的更新程序后,進(jìn)行校驗。確定接收完更新程序數(shù)據(jù)且更新數(shù)據(jù)準(zhǔn)確后,將程序更新標(biāo)志Update_flag置1,寫入EEPROM,并啟動看門狗定時器,看門狗定時器定時完畢后立即復(fù)位單片機,重新運行引導(dǎo)程序。程序更新標(biāo)志Update_flag為1,則對應(yīng)用程序區(qū)進(jìn)行更新,更新完成后,Update_flag置0并寫入EEPROM。執(zhí)行跳轉(zhuǎn)指令跳轉(zhuǎn)到應(yīng)用程序區(qū)的起始位置執(zhí)行新的應(yīng)用程序。
2.2更新程序數(shù)據(jù)的存儲方案
本部分提出了更新程序數(shù)據(jù)的存儲方方案。根據(jù)井下壓力計自身具有外置獨立的Flash存儲器的特點,先將接收到的更新數(shù)據(jù)存儲到Flash存儲器中,更新數(shù)據(jù)接收完成后,再進(jìn)行更新。需要注意的是,不能一邊接收更新數(shù)據(jù)一邊進(jìn)行更新,因為這樣會破壞原有應(yīng)用程序,導(dǎo)致井下壓力計和地面控制儀之間的通訊中斷,無法完成更新,導(dǎo)致程序混亂,使井下壓力計無法正常工作。工作流程為:井下壓力計接收到的更新程序數(shù)據(jù)通過SPI接口存儲到FLASH存儲器中,接收完成后,啟動看門狗復(fù)位,進(jìn)入引導(dǎo)程序,引導(dǎo)程序通過SPI接口將更新數(shù)據(jù)從Flash存儲器中讀出來,再寫入單片機內(nèi)部可編程Flash存儲器的應(yīng)用程序區(qū),程序更新完成后,通過跳轉(zhuǎn)指令跳轉(zhuǎn)到應(yīng)用程序區(qū)的起始位置,開始執(zhí)行新程序。在此過程中,更新數(shù)據(jù)流向如圖3所示。
2.3更新數(shù)據(jù)正確性的保證
為了確保更新程序數(shù)據(jù)在傳輸過程中沒有發(fā)生改變,使用CRC校驗算法來驗證地面控制儀發(fā)送的更新程序數(shù)據(jù)與井下壓力計接收到的更新程序數(shù)據(jù)的一致性。
CRC校驗是一種數(shù)據(jù)傳輸檢錯功能,讀數(shù)據(jù)進(jìn)行多項式計算,并將得到的計算結(jié)果附在每幀數(shù)據(jù)的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性[2]。相比常用的累加和校驗,CRC大大降低了校驗出錯的概率,提高了更新成功的幾率。
結(jié)語
通過多次更新測試表明,此方案可以成功的實現(xiàn)應(yīng)用程序的更新。根據(jù)對多次更新所耗時間的統(tǒng)計,井下壓力計從程序開始更新到程序更新結(jié)束,所耗時在5秒鐘左右,更新速度滿足實際需求。經(jīng)驗證,運用此方案能穩(wěn)定可靠的實現(xiàn)程序更新,滿足使用需求。
參考文獻(xiàn)
[1]《加密與解密(第二版)》[M].鍛鋼.北京:電子工業(yè)出版社,2004.5
(作者單位:貴州航天凱山石油儀器有限公司)