(中国石油集团钻井工程技术研究院,北京 102206)
基于TMS570和FreeRTOS的井下多参数记录仪*
胡永建
(中国石油集团钻井工程技术研究院,北京 102206)
为了实现钻井参数长时间、低功耗的可靠记录,选择TMS570安全微控制器来提高系统可靠性,同时选择具有合适数字接口的测量器件以充分利用其片上资源。在分析了各个参数的测量过程后,建立了统一的参数测量模型,在FreeRTOS实时操作系统下实现了参数测量、参数保存及串口通信三种任务,同时利用空闲钩子函数实现低功耗设计目的。本井下多参数记录仪与NOV的BlackBox同类产品有类似的功能与指标,可用于提高钻井效率、优化钻井性能。
TMS570;安全微控制器;FreeRTOS;多参数记录仪
为了提高钻井效率、优化钻井性能,世界最大的钻井设备制造商NOV(国民油井华高)研制了BlackBox系列井下测量工具及记录仪。其BlackBox Eclipse、BlackBox HD井下测量工具可以记录振动、转速参数;BlackBox LMS负载测量短节可以测量记录扭矩、拉力、压力及温度参数[1]。
为了实现井下参数的长时间记录,系统可靠性、记录存储容量及系统功耗控制是关键的三个问题。
本文设计的井下多参数记录仪采用高温锂电池供电,使用TI公司的TMS570系列安全微控制器作为控制器,优先选择具有SPI接口的数字传感器,建立统一的参数测量模型,使用FreeRTOS的抢占式任务调度实现了具有较高可靠性、较大存储容量及较低耗电量的钻井井下多参数测量及记录功能,能够记录温度、压力、三轴振动、扭矩、拉力、倾角及转速等多种参数。
TI TMS570 Hercules系列安全微控制器使用了ARM Cortex-R4F内核,一个CPU与另一个呈垂直及反转状态放置,两个CPU之间加入1.5个周期的延迟完成锁步判断。所选的TMS570LS2134PGE微控制器片上包含3组MIBSPI(多缓冲的SPI)外设接口及1组SPI接口,MIBSPI接口适合高速外设通信且可配置为普通SPI接口,每组MIBSPI具有多个从机片选引脚可连接多个SPI外设[2]。Hercules安全微控制器使用名为“安全岛”的策略保证系统可靠运行[3]。
ARM Cortex-R4F内核有7种操作模式,其中除USR(用户)模式外,其他如IRQ(普通中断)、SVC(管理调用)等模式均为特权模式,用于中断、异常处理以及受保护的资源操作。ARM Cortex-R4F内核有37个程序寄存器,包含31个通用32位寄存器和6个32位状态寄存器(PSR),可以随时操作其中R0~R15共计16个寄存器以及1或2个状态寄存器,与操作模式相关的状态保存寄存器仅在特权模式下可以操作。R13是堆栈指针寄存器(SP),R14是子程序链接寄存器(LR),R15是程序计数器(PC),当前程序状态寄存器(CPSR)包含条件代码标识、状态位及当前模式位,在特权模式下可以操作各种模式的程序状态保存寄存器(SPSR)[4]。
FreeRTOS实时操作系统的移植与所用处理器和编译器相关。本设计使用CCS(Code Compose Studio)IDE,后者是TI推荐的开发环境。TI 同时提供了名为HALCoGen的硬件抽象层代码生成工具来简化开发过程,该工具即可生成安全自检函数及外设驱动程序,也可生成相关的FreeRTOS移植代码。
除了通用的os_tasks.c、os_queue.c和os_list.c这三个RTOS核心代码源文件外,FreeRTOS的移植需要修改os_portasm.asm、os_port.c等源文件及os_portmacro.h、os_portable.h、FreeRTOSConfig.h、FreeRTOS.h等几个头文件。移植的所有源文件及头文件由HALCoGen软件工具根据所选的微控制器类型自动生成。
在os_portmacro.h等头文件中定义了如表1所列的几个SWI别名,SWI(软中断)是SVC之前的叫法。
表1 软中断入口定义
用户程序通过触发SVC中断使CPU进入保护模式来执行用户模式下无法执行的特权操作。这里SVC的异常处理函数名为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
一旦触发SVC异常,先保护现场,然后从LR寄存器提取SVC指令的立即数,从中得到指令编号,然后根据跳转表定义的相对地址寻址,跳转到子程序中执行相应的操作,完成操作后恢复现场。以swiPortEnterCritical进入临界区子程序为例:
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
该子程序将SVC模式的SPSR内容读入R11,置位第7位(IRQ使能)写入SPSR,完成中断使能,同时将嵌套深度计数器加1后返回。注意,SPSR寄存器的操作只能在特权模式下进行。
本设计使用抢占式多任务调度,用TMS570内置的RTI(实时中断模块)的计数器Compare0比较结果挂接IRQ中断产生节拍时钟。vPortPreemptiveTick为对应的中断处理函数。任务切换taskYIELD使用SVC的swiPortYield 子程序实现,但对于API内部的任务切换可使用用户模式下的vPortYeildWithinAPI子程序实现,该子程序使用TMS570的SSI(软件中断)来触发。向TMS570的系统软件中断#1请求寄存器(SSIR1)的8~15位写入0x75,可以触发SSI中断。swiPortYield与vPortYeildWithinAPI使用相同的上下文保存portSAVE_CONTEXT及恢复portRESTORE_CONTEXT子程序。
FreeRTOS是高度可裁剪的实时操作系统,使用HALCoGen软件工具可以直观地配置系统,如图1所示。
图1 定制FreeRTOS
可以定义节拍时钟的频率、任务调度方式、是否使用各类钩子函数、是否使用各类信号量等,图形化用户界面的配置与FreeRTOSConfig.h中的配置一一对应。
为了延长记录时间,井下多参数记录仪对节能有较高要求,因此选择使用空闲钩子函数,令系统在空闲时进入低功耗模式。定义vApplicationIdleHook函数如下:
void vApplicationIdleHook(void)
{ systemPowerDown(SYS_SNOOZE_MODE);}
TMS570有DOZE、SNOOZE及SLEEP等三种低功耗模式:在低功耗模式下,DOZE模式的主振荡器保持活动,SNOOZE模式下耗电更低的低频振荡器保持活动,而SLEEP模式则关闭所有振荡器以得到更低的功耗。FreeRTOS使用RTI作为节拍时钟,在SLEEP模式下无法产生RTI中断来唤醒MCU,因此不能选择SLEEP模式。另外,需要使用PLL1的锁相环时钟作为休眠及唤醒的时钟,否则因休眠及唤醒时间太长而不能保证设定的节拍时钟频率。
表2列出了井下多参数记录仪实现的测量及记录功能。
表2 测量参数清单
对于测量所需ADC及数字传感器等器件应尽量选用带SPI接口的型号,以充分利用TMS570LS2134PGE微控制器的多个SPI接口;该微控制器内置I2C接口可用于环空温度、压力测量。
通过分析各个参数的测量过程,归纳出通用的参数测量模型,该模型运行过程如图2所示。
图2 参数测量运行过程
在实际应用时,参数的测量周期可能长达几分钟,为了提高可靠性并降低功耗,使用可关断的TI TSP62110系列同步降压转换器为各个参数测量模块供电,该转换器允许输入电压高达17 V,图3是3.3 V输出的供电电路图。
图3 测量模块供电电路图
当EN引脚为低电平时,TPS62110处于关断状态,电源电流可低至2 μA。当微控制器拉高EN引脚电平时,TPS62110使能供电输出,一旦输出达到额定电压的98.4%且至少经过250 μs延迟后,PG(Power Good)输出信号为高,通知微控制器供电已经建立[5]。
测量器件需要等待一段时间才能正常工作,为了提高系统可靠性,每次上电后微控制器重新复位测量器件,针对不同的参数测量模块,该操作既可能是信号线电平变化,也可能是发送特定复位指令。
微控制器对复位后的测量器件完成初始化后,启动一次或若干次测量,测量是否完成的判断标准有三种:信号线电平变化、指令查询、单纯等待。当测量完成时,微控制器读取参数测量模块的测量值,随后关断供电。
参数测量模块的测量值保存在非易失性存储器中,为此选择了EVERSPIN公司的4 MB新型磁阻存储器MR25H40。该存储器有写保护功能,数据接口为SPI兼容接口;参数测量模块与微控制器之间的通信是通过SPI、I2C、GIO(带中断)等多条信号线完成的。
TMS570LS2134PGE微控制器为144引脚的四方扁平封装,其大多数引脚为多个功能复用。为了充分利用微控制器的片上资源,需要合理安排每个引脚的功能。通过HALCoGen软件工具可以分配每个引脚的功能,在其PINMUX页面可以查看是否有引脚功能冲突。最终引脚分配如表3所列。
表3 引脚分配
其中环空温度与环空压力、倾角与转速各自使用一个数字传感器测量。可以使用多达11片存储器实现44 MB的存储容量。板载温度计单独占用SPI4接口,用于监测电路板温度及某些参数测量的温度补偿。11个GIO引脚可以配置为中断,监测供电及测量的完成状态。
图4 参数测量任务流程图
系统主要有三种任务:参数测量、参数保存、串口通信。分为4级优先级,其中串口通信任务优先级最高(为3),参数保存任务优先级最低(为1)。在FreeRTOSConfig.h中令configMAX_PRIORITIES=4。以参数测量任务为例,根据参数测量模型,可以对每项参数设定统一的参数测量任务,如图4所示。
这里假定测量器件的复位完成以及数据采集完成信号通过GIO中断来监视。对于该类参数测量任务,有供电正常、复位完成及测量完成共计三根信号线连接到GIO。任务初始化时分别设定了三个二值信号量对应于三根信号线。一旦各自信号线对应的条件满足,在触发的GIO中断中通过xSemaphoreGiveFromISR() API函数给出相应的信号量,使阻塞的任务得以继续。
不同的参数测量任务可能有不同测量记录周期,进入任务后需要先等待一段时间,这样可以减轻同时开启多个供电电路对电池的电流冲击。经过记录周期等待的时间之后,系统使能供电并等待供电完成。随后完成测量器件的复位并启动测量过程。用xSemaphoreTake函数获取信号量时均设定超时时间,这样可以防止任务过程停滞。对采集的数据判断,确认有效后,送入数据队列供参数保存任务来保存,随后关断模块供电。
参数保存任务以较低优先级持续等待获取数据队列的测量数据,一旦得到有效测量数据,就将其保存在非易失性存储器中。最高优先级的串口通信任务用来在地面完成记录仪与上位机的通信,通过上位机软件可以设定参数记录周期、提取已经记录的数据并清空存储器等。
通过xTaskCreate函数创建各项任务后,用vTaskStartScheduler函数启动调度器即可。
需要注意,由于多种参数测量模块使用了不同片选的同一个SPI5接口,为了避免资源竞争引发错误,各参数测量任务使用进入及退出临界区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年国家科技重大专项“大型油气田及煤层气开发”(2016ZX05020005-001)。
TP212.6
A
杨迪娜
2017-09-05)