(中國石油集團鉆井工程技術研究院,北京 102206)
基于TMS570和FreeRTOS的井下多參數(shù)記錄儀*
胡永建
(中國石油集團鉆井工程技術研究院,北京 102206)
為了實現(xiàn)鉆井參數(shù)長時間、低功耗的可靠記錄,選擇TMS570安全微控制器來提高系統(tǒng)可靠性,同時選擇具有合適數(shù)字接口的測量器件以充分利用其片上資源。在分析了各個參數(shù)的測量過程后,建立了統(tǒng)一的參數(shù)測量模型,在FreeRTOS實時操作系統(tǒng)下實現(xiàn)了參數(shù)測量、參數(shù)保存及串口通信三種任務,同時利用空閑鉤子函數(shù)實現(xiàn)低功耗設計目的。本井下多參數(shù)記錄儀與NOV的BlackBox同類產(chǎn)品有類似的功能與指標,可用于提高鉆井效率、優(yōu)化鉆井性能。
TMS570;安全微控制器;FreeRTOS;多參數(shù)記錄儀
為了提高鉆井效率、優(yōu)化鉆井性能,世界最大的鉆井設備制造商NOV(國民油井華高)研制了BlackBox系列井下測量工具及記錄儀。其BlackBox Eclipse、BlackBox HD井下測量工具可以記錄振動、轉(zhuǎn)速參數(shù);BlackBox LMS負載測量短節(jié)可以測量記錄扭矩、拉力、壓力及溫度參數(shù)[1]。
為了實現(xiàn)井下參數(shù)的長時間記錄,系統(tǒng)可靠性、記錄存儲容量及系統(tǒng)功耗控制是關鍵的三個問題。
本文設計的井下多參數(shù)記錄儀采用高溫鋰電池供電,使用TI公司的TMS570系列安全微控制器作為控制器,優(yōu)先選擇具有SPI接口的數(shù)字傳感器,建立統(tǒng)一的參數(shù)測量模型,使用FreeRTOS的搶占式任務調(diào)度實現(xiàn)了具有較高可靠性、較大存儲容量及較低耗電量的鉆井井下多參數(shù)測量及記錄功能,能夠記錄溫度、壓力、三軸振動、扭矩、拉力、傾角及轉(zhuǎn)速等多種參數(shù)。
TI TMS570 Hercules系列安全微控制器使用了ARM Cortex-R4F內(nèi)核,一個CPU與另一個呈垂直及反轉(zhuǎn)狀態(tài)放置,兩個CPU之間加入1.5個周期的延遲完成鎖步判斷。所選的TMS570LS2134PGE微控制器片上包含3組MIBSPI(多緩沖的SPI)外設接口及1組SPI接口,MIBSPI接口適合高速外設通信且可配置為普通SPI接口,每組MIBSPI具有多個從機片選引腳可連接多個SPI外設[2]。Hercules安全微控制器使用名為“安全島”的策略保證系統(tǒng)可靠運行[3]。
ARM Cortex-R4F內(nèi)核有7種操作模式,其中除USR(用戶)模式外,其他如IRQ(普通中斷)、SVC(管理調(diào)用)等模式均為特權模式,用于中斷、異常處理以及受保護的資源操作。ARM Cortex-R4F內(nèi)核有37個程序寄存器,包含31個通用32位寄存器和6個32位狀態(tài)寄存器(PSR),可以隨時操作其中R0~R15共計16個寄存器以及1或2個狀態(tài)寄存器,與操作模式相關的狀態(tài)保存寄存器僅在特權模式下可以操作。R13是堆棧指針寄存器(SP),R14是子程序鏈接寄存器(LR),R15是程序計數(shù)器(PC),當前程序狀態(tài)寄存器(CPSR)包含條件代碼標識、狀態(tài)位及當前模式位,在特權模式下可以操作各種模式的程序狀態(tài)保存寄存器(SPSR)[4]。
FreeRTOS實時操作系統(tǒng)的移植與所用處理器和編譯器相關。本設計使用CCS(Code Compose Studio)IDE,后者是TI推薦的開發(fā)環(huán)境。TI 同時提供了名為HALCoGen的硬件抽象層代碼生成工具來簡化開發(fā)過程,該工具即可生成安全自檢函數(shù)及外設驅(qū)動程序,也可生成相關的FreeRTOS移植代碼。
除了通用的os_tasks.c、os_queue.c和os_list.c這三個RTOS核心代碼源文件外,F(xiàn)reeRTOS的移植需要修改os_portasm.asm、os_port.c等源文件及os_portmacro.h、os_portable.h、FreeRTOSConfig.h、FreeRTOS.h等幾個頭文件。移植的所有源文件及頭文件由HALCoGen軟件工具根據(jù)所選的微控制器類型自動生成。
在os_portmacro.h等頭文件中定義了如表1所列的幾個SWI別名,SWI(軟中斷)是SVC之前的叫法。
表1 軟中斷入口定義
用戶程序通過觸發(fā)SVC中斷使CPU進入保護模式來執(zhí)行用戶模式下無法執(zhí)行的特權操作。這里SVC的異常處理函數(shù)名為vPortSWI,位于os_portasm.asm中:
stmfd sp!, {r11,r12,lr}
ldrb r12, [lr, #-1]
ldr r14, table
ldr r12, [r14, r12, lsl #2]
blx r12
ldmfd sp!, {r11,r12,pc}^
table
.word jumpTable
jumpTable
.word swiPortYield
.word swiRaisePrivilege
.word swiPortEnterCritical
.word swiPortExitCritical
.word swiPortTaskUsesFPU
.word swiPortDisableInterrupts
.word swiPortEnableInterrupts
一旦觸發(fā)SVC異常,先保護現(xiàn)場,然后從LR寄存器提取SVC指令的立即數(shù),從中得到指令編號,然后根據(jù)跳轉(zhuǎn)表定義的相對地址尋址,跳轉(zhuǎn)到子程序中執(zhí)行相應的操作,完成操作后恢復現(xiàn)場。以swiPortEnterCritical進入臨界區(qū)子程序為例:
mrs r11, SPSR
orr r11, r11, #0x80
msr SPSR_c, r11
ldr r11, ulCriticalNestingConst
ldr r12, [r11]
add r12, r12, #1
str r12, [r11]
bx r14
該子程序?qū)VC模式的SPSR內(nèi)容讀入R11,置位第7位(IRQ使能)寫入SPSR,完成中斷使能,同時將嵌套深度計數(shù)器加1后返回。注意,SPSR寄存器的操作只能在特權模式下進行。
本設計使用搶占式多任務調(diào)度,用TMS570內(nèi)置的RTI(實時中斷模塊)的計數(shù)器Compare0比較結(jié)果掛接IRQ中斷產(chǎn)生節(jié)拍時鐘。vPortPreemptiveTick為對應的中斷處理函數(shù)。任務切換taskYIELD使用SVC的swiPortYield 子程序?qū)崿F(xiàn),但對于API內(nèi)部的任務切換可使用用戶模式下的vPortYeildWithinAPI子程序?qū)崿F(xiàn),該子程序使用TMS570的SSI(軟件中斷)來觸發(fā)。向TMS570的系統(tǒng)軟件中斷#1請求寄存器(SSIR1)的8~15位寫入0x75,可以觸發(fā)SSI中斷。swiPortYield與vPortYeildWithinAPI使用相同的上下文保存portSAVE_CONTEXT及恢復portRESTORE_CONTEXT子程序。
FreeRTOS是高度可裁剪的實時操作系統(tǒng),使用HALCoGen軟件工具可以直觀地配置系統(tǒng),如圖1所示。
圖1 定制FreeRTOS
可以定義節(jié)拍時鐘的頻率、任務調(diào)度方式、是否使用各類鉤子函數(shù)、是否使用各類信號量等,圖形化用戶界面的配置與FreeRTOSConfig.h中的配置一一對應。
為了延長記錄時間,井下多參數(shù)記錄儀對節(jié)能有較高要求,因此選擇使用空閑鉤子函數(shù),令系統(tǒng)在空閑時進入低功耗模式。定義vApplicationIdleHook函數(shù)如下:
void vApplicationIdleHook(void)
{ systemPowerDown(SYS_SNOOZE_MODE);}
TMS570有DOZE、SNOOZE及SLEEP等三種低功耗模式:在低功耗模式下,DOZE模式的主振蕩器保持活動,SNOOZE模式下耗電更低的低頻振蕩器保持活動,而SLEEP模式則關閉所有振蕩器以得到更低的功耗。FreeRTOS使用RTI作為節(jié)拍時鐘,在SLEEP模式下無法產(chǎn)生RTI中斷來喚醒MCU,因此不能選擇SLEEP模式。另外,需要使用PLL1的鎖相環(huán)時鐘作為休眠及喚醒的時鐘,否則因休眠及喚醒時間太長而不能保證設定的節(jié)拍時鐘頻率。
表2列出了井下多參數(shù)記錄儀實現(xiàn)的測量及記錄功能。
表2 測量參數(shù)清單
對于測量所需ADC及數(shù)字傳感器等器件應盡量選用帶SPI接口的型號,以充分利用TMS570LS2134PGE微控制器的多個SPI接口;該微控制器內(nèi)置I2C接口可用于環(huán)空溫度、壓力測量。
通過分析各個參數(shù)的測量過程,歸納出通用的參數(shù)測量模型,該模型運行過程如圖2所示。
圖2 參數(shù)測量運行過程
在實際應用時,參數(shù)的測量周期可能長達幾分鐘,為了提高可靠性并降低功耗,使用可關斷的TI TSP62110系列同步降壓轉(zhuǎn)換器為各個參數(shù)測量模塊供電,該轉(zhuǎn)換器允許輸入電壓高達17 V,圖3是3.3 V輸出的供電電路圖。
圖3 測量模塊供電電路圖
當EN引腳為低電平時,TPS62110處于關斷狀態(tài),電源電流可低至2 μA。當微控制器拉高EN引腳電平時,TPS62110使能供電輸出,一旦輸出達到額定電壓的98.4%且至少經(jīng)過250 μs延遲后,PG(Power Good)輸出信號為高,通知微控制器供電已經(jīng)建立[5]。
測量器件需要等待一段時間才能正常工作,為了提高系統(tǒng)可靠性,每次上電后微控制器重新復位測量器件,針對不同的參數(shù)測量模塊,該操作既可能是信號線電平變化,也可能是發(fā)送特定復位指令。
微控制器對復位后的測量器件完成初始化后,啟動一次或若干次測量,測量是否完成的判斷標準有三種:信號線電平變化、指令查詢、單純等待。當測量完成時,微控制器讀取參數(shù)測量模塊的測量值,隨后關斷供電。
參數(shù)測量模塊的測量值保存在非易失性存儲器中,為此選擇了EVERSPIN公司的4 MB新型磁阻存儲器MR25H40。該存儲器有寫保護功能,數(shù)據(jù)接口為SPI兼容接口;參數(shù)測量模塊與微控制器之間的通信是通過SPI、I2C、GIO(帶中斷)等多條信號線完成的。
TMS570LS2134PGE微控制器為144引腳的四方扁平封裝,其大多數(shù)引腳為多個功能復用。為了充分利用微控制器的片上資源,需要合理安排每個引腳的功能。通過HALCoGen軟件工具可以分配每個引腳的功能,在其PINMUX頁面可以查看是否有引腳功能沖突。最終引腳分配如表3所列。
表3 引腳分配
其中環(huán)空溫度與環(huán)空壓力、傾角與轉(zhuǎn)速各自使用一個數(shù)字傳感器測量。可以使用多達11片存儲器實現(xiàn)44 MB的存儲容量。板載溫度計單獨占用SPI4接口,用于監(jiān)測電路板溫度及某些參數(shù)測量的溫度補償。11個GIO引腳可以配置為中斷,監(jiān)測供電及測量的完成狀態(tài)。
圖4 參數(shù)測量任務流程圖
系統(tǒng)主要有三種任務:參數(shù)測量、參數(shù)保存、串口通信。分為4級優(yōu)先級,其中串口通信任務優(yōu)先級最高(為3),參數(shù)保存任務優(yōu)先級最低(為1)。在FreeRTOSConfig.h中令configMAX_PRIORITIES=4。以參數(shù)測量任務為例,根據(jù)參數(shù)測量模型,可以對每項參數(shù)設定統(tǒng)一的參數(shù)測量任務,如圖4所示。
這里假定測量器件的復位完成以及數(shù)據(jù)采集完成信號通過GIO中斷來監(jiān)視。對于該類參數(shù)測量任務,有供電正常、復位完成及測量完成共計三根信號線連接到GIO。任務初始化時分別設定了三個二值信號量對應于三根信號線。一旦各自信號線對應的條件滿足,在觸發(fā)的GIO中斷中通過xSemaphoreGiveFromISR() API函數(shù)給出相應的信號量,使阻塞的任務得以繼續(xù)。
不同的參數(shù)測量任務可能有不同測量記錄周期,進入任務后需要先等待一段時間,這樣可以減輕同時開啟多個供電電路對電池的電流沖擊。經(jīng)過記錄周期等待的時間之后,系統(tǒng)使能供電并等待供電完成。隨后完成測量器件的復位并啟動測量過程。用xSemaphoreTake函數(shù)獲取信號量時均設定超時時間,這樣可以防止任務過程停滯。對采集的數(shù)據(jù)判斷,確認有效后,送入數(shù)據(jù)隊列供參數(shù)保存任務來保存,隨后關斷模塊供電。
參數(shù)保存任務以較低優(yōu)先級持續(xù)等待獲取數(shù)據(jù)隊列的測量數(shù)據(jù),一旦得到有效測量數(shù)據(jù),就將其保存在非易失性存儲器中。最高優(yōu)先級的串口通信任務用來在地面完成記錄儀與上位機的通信,通過上位機軟件可以設定參數(shù)記錄周期、提取已經(jīng)記錄的數(shù)據(jù)并清空存儲器等。
通過xTaskCreate函數(shù)創(chuàng)建各項任務后,用vTaskStartScheduler函數(shù)啟動調(diào)度器即可。
需要注意,由于多種參數(shù)測量模塊使用了不同片選的同一個SPI5接口,為了避免資源競爭引發(fā)錯誤,各參數(shù)測量任務使用進入及退出臨界區(qū)API來共享SPI5接口。
[1] National Oilwell Varco. Wellbore Technologies. ReedHycalog. eVolve Optimization Service. BlackBox Tools and Optimized Solutions.[EB/OL][2017-09].http://www.nov.com/Segments/Wellbore_Technologies/ReedHycalog/eVolve_Optimization_Service/BlackBox_Tools_and_Optimized_Solutions.aspx.
[2] Texas Instruments.TMS570LS31x4/21x4 16 and 32 Bit RISC Flash Microcontroller (SPNS165B), 2015.
[3] 胡永建,胡寰臻,黃衍福. 基于TMS570的高可靠性隨鉆壓力計[J].微型機與應用,2016,35(2):23-24.
[4] ARM. Cortex-R4 and Cortex-R4F Technical Reference Manual (ID041111),2011.
[5] Texas Instruments. 17-V, 1.5-A, SYNCHRONOUS STEP-DOWN CONVERTER (SLVS585D), 2014.
胡永建(高級工程師),研究方向為石油鉆井井下儀器及通信設備。
DownholeMulti-parametricRecorderDesignBasedonTMS570andFreeRTOS
HuYongjian
(CNPC Drilling Research Institute,Beijing 102206,China)
In order to get the record downhole measurement parameters with long time,low power and high reliability,the TMS570 safety critical microcontroller is selected to increase system reliability,at the same time,a measuring device with the appropriate digital interface is selected to make full use of its resources.After analyzing acquisition processes of every parameter,a unique parameter survey model is built,three tasks such as parameter measurement,parameter preservation and serial communication are realized under FreeRTOS real-time operating system and idle hook function is used to enter low-power mode.The underground multi-parameter recorder and the BlackBox of NOV have similar functions and indicators,which can be used to improve drilling efficiency and optimize drilling performance.
TMS570;safety critical microcontroller;FreeRTOS;multiparametric recorder
國家級-2016年國家科技重大專項“大型油氣田及煤層氣開發(fā)”(2016ZX05020005-001)。
TP212.6
A
楊迪娜
2017-09-05)