張 偉,胡 蕾,楊 劍,王 橋,夏時斌,廖國忠,李 華
(1.中國地質調查局成都地質調查中心,成都 610082;2.電子科技大學資源與環境學院,成都 611731;3.中國科學院成都信息技術股份有限公司,成都 610041)
2019年7月28日起,由于全球定位系統(glo-bal positioning system,GPS)衛星滾周不同、日期格式等參數變化,出現了V8、MTU-5A等儀器內部GPS時鐘芯片無法正常鎖定的故障,導致部分儀器無法正常使用[1]。與此同時,四川會理-鹽源地區地球物理調查項目組正在野外開展四川省木里縣唐央鄉至云南省武定縣的超長周期大地電磁測深剖面工作,所使用的3臺LEMI-417M型儀器也突然同時出現了類似故障(而早期的LEMI-417I型儀器卻工作正常),導致儀器無法獲取到測點位置的經緯度及高程坐標信息,更嚴重的是無法實現儀器內部時鐘晶振與GPS衛星時鐘的同步,導致采集到的天然電磁場數據沒有準確的時鐘信息,7 d連續采集的數據完全是由儀器內部時鐘晶振來控制采樣,因此不可避免地存在時鐘漂移誤差,同時多臺站之間也無法實現遠參考計算,此突發狀況給一線野外工作帶來了嚴重困擾。
受加拿大鳳凰地球物理公司MTU-5A儀器軟件升級臨時應急解決方案[1]的啟發,深入研究LEMI-417M型儀器的數據采集方式[2],反復琢磨大地電磁類儀器的原始二進制數據儲存方式[3-5],在不斷試錯后,成功剖析了該儀器原始二進制數據的存儲格式。并在此基礎上,借助目前智能手機普遍具有的GPS定位和通信基站同步授時功能,利用計算機程序對儀器采集到的原始二進制數據進行2次時鐘修正,從而實現解決GPS失鎖問題的軟件應急解決方案。本解決方案的最大創新點在于,對國外進口儀器的原始二進制數據格式進行了成功解析,依靠野外一線生產條件下簡易設備的組合,使用軟件臨時替代手段現場解決了儀器GPS失鎖的硬件問題[6],避免了儀器返廠維修而造成的時間、人員以及經費成本的無端浪費,因此值得推廣應用。
LEMI-417M型儀器是一款超長期周期大地電磁測深儀器,由烏克蘭利沃夫空間研究中心研制,是LEMI-417I型的升級版,為了保證儀器測量裝置的長時間穩定,該儀器在熱穩定性、時間穩定性、磁通道噪聲、高輸入阻抗、低電位漂移等方面進行了專門設計,能夠在合理的測量誤差范圍內觀測到20萬~10萬s周期的天然電磁場數據。該儀器使用CF卡來實時存儲觀測到的數據,外接GPS接收器用于數據記錄時的時鐘同步和測點坐標確定,儀器每隔1 h自動執行1次衛星時鐘同步操作,自動校準儀器內部的時鐘晶振。
LEMI-417M型儀器的實物外觀照片如圖1所示,其操作面板的儀器功能如圖2(a)所示,通過CONTROL控制鍵可切換LCD Display中的顯示信息,切換到磁道數據采集狀態的信息顯示界面可如圖2(b)所示,第1行顯示內容是當前時刻儀器內部時鐘的日期和時間,第2行顯示內容是當前時刻磁通門傳感器X方向的磁場測量值以及CF卡閃存的剩余容量,第3行顯示內容是當前時刻磁通門傳感器Y方向的磁場測量值,第4行顯示內容是當前時刻磁通門傳感器Z方向的磁場測量值以及GPS衛星的鎖定狀態,當GPS處于鎖定狀態時顯示為字母A(Active首字母縮寫),失鎖狀態時顯示為字母P(Passive首字母縮寫)。

圖1 LEMI-417M型儀器實物Fig.1 LEMI-417M instrument

圖2 LEMI-417M型儀器主控制面板示意Fig.2 Main control panel of LEMI-417M instrument
與加拿大鳳凰地球物理公司生產的MTU-5A、V8型大地電磁測深儀器相比的重大不同是,LEMI系列儀器可以在沒有實現GPS時鐘同步的狀態下便可進行數據采集,數據采集周期由儀器內部的時鐘晶振來負責協調,在數據采集的同時進行GPS衛星的時鐘同步操作,當衛星時鐘同步成功后,儀器自動修正內部的晶振時鐘,在觀測天然電磁場電道、磁道數據的同時記錄下該采樣時刻的準確時鐘和測點經緯度坐標及大地高。
LEMI儀器的上述特點為借助外部GPS設備實現對所采集天然電磁場時序數據的2次修正提供了可能。一種現實可行的方案是獲取采集數據開始和終止時刻的儀器內部時鐘和外部GPS時鐘,且認為儀器內部時鐘晶振的延時漂移符合線性關系,可用式(1)對每一個記錄的采樣時間進行二次修正,最終將計算結果以“四舍五入”的原則取值為整數秒。

(1)
式(1)中:T始、T終為外部設備分別在儀器開始采集和結束采集時的準確時間;t始、t終為分別是儀器開始采集和結束采集時的內部時鐘時間。在野外獲取以上4組數據非常簡單,即將一臺與通信基站時鐘同步良好智能手機顯示屏切換到動態顯示當前時刻時分秒信息的世界時鐘界面,將儀器切換到磁道數據顯示界面,將手機放置在儀器的LCD顯示屏旁邊,使用另一臺智能手機進行近距離拍照,保證照片中能同時清晰地顯示智能手機上的時間和LCD顯示屏中時間以及Hx、Hy、Hz(圖3)。分別在“布點”和“收點”時,使用2臺智能手機拍攝到2張清晰的照片即可得到式(1)中的4個常量數值。

圖3 野外儀器時鐘同步校正的實際工作照片Fig.3 Main control panel of LEMI-417M instrument
該儀器固定以1 Hz的采樣率來對天然電磁場進行連續觀測,數據以二進制格式實時儲存到儀器內部的CF卡中,文件名以L417_×××.B××的規則來進行命名,其中L417為儀器的型號名稱,_×××為單點的數據存放文件序號,第1個數據文件編號為001,當GPS時間為格林威治時間的零點時,儀器系統自動新建一個新文件來存放數據,文件序號自動在前一個文件序號的基礎上累加1。B××的首字母B是二進制(Binary)的縮寫,××為儀器的出廠編號。
如圖4所示,通常與測點數據采集相關的記錄信息(如儀器型號、采集日期、經緯度、高程、電極距等)一般地以文件頭的形式存放于二進制文件的首端[3]。經研究,LEMI-417M型儀器共分配了32個字節的大小空間來存放表1所示信息,各字節位置的信息闡述如下。

表1 LEMI-417M型儀器原始二進制記錄數據的頭文件格式(Tag)Table 1 LEMI-417M instrument header file format for raw binary data (Tag)

圖4 LEMI-417原始數據結構分解示意圖Fig.4 Schematic diagram of raw data structure decomposition
(1)1~4字節:4個字節長度,存放采集儀器的型號信息,對于LEMI-417M型儀器來說,第1個字節為ASCⅡ字符‘4’(16進制為34),第2字節為ASCⅡ字符‘1’(16進制為31),第3字節為ASCⅡ字符‘7’(16進制為37),第4字節為ASCⅡ字符‘V’(16進制為49)。
(2)5字節:1個字節長度,存放采集儀器的出廠編號。
(3)6字節:1個字節長度,存放開始采集數據時的當前年信息。
(4)7字節:1個字節長度,存放開始采集數據時的當前月信息。
(5)8字節:1個字節長度,存放開始采集數據時的當前日信息。
(6)9字節:1個字節長度,存放開始采集數據時的當前小時信息(24 h制)。
(7)10字節:1個字節長度,存放開始采集數據時的當前分信息。
(8)11字節:1個字節長度,存放開始采集數據時的當前秒信息。
(9)12~15字節:4個字節長度,存放當前測點GPS同步的緯度。
(10)16字節:1個字節長度,存放當前測點坐標是位于北緯還是南緯,以中國位于北半球為例,在中國測量數據時應為ASCⅡ字符‘N’(16進制為4E)。
(11)17~21字節:5個字節長度,存放當前測點GPS同步的經度。
(12)22字節:1個字節長度,存放當前測點坐標是位于東經還是西經,以中國位于東半球為例,在中國測量數據時應為ASCⅡ字符’E’(16進制為45)。
(13)23字節:1個字節長度,為空字符(對應的16進制為00)。
(14)24~25字節:2個字節長度,存放當前測點GPS同步的高程(單位:m)。
(15)26字節:1個字節長度,存放儀器的采樣模式,LEMI-417型1Hz采樣率的設置模式為4。
(16)27字節:1個字節長度,存放GPS鎖定狀態信息。當GPS處于鎖定狀態時為ASCⅡ字符‘A’(16進制為41),當GPS處于失鎖狀態時為ASCⅡ字符‘P’(16進制為50)。
(17)28字節:1個字節長度,存放UIN(外部供電電壓)信息(單位:V)。
(18)29字節:1個字節長度,存放電道盒子上第1對電極的極距長度(單位:m)。
(19)30字節:1個字節長度,存放電道盒子上第2對電極的極距長度(單位:m)。
(20)31字節:1個字節長度,存放電道盒子上第3對電極的極距長度(單位:m)。
(21)32字節:1個字節長度,存放電道盒子上第4對電極的極距長度(單位:m)。
如圖4所示,在頭文件(Tag)后緊接著的是時間序列數據,LEMI-417以30個字節的大小空間來存放一個采樣時間片采集到的電磁場數據段(segment,如表2所示),由17個時間片組成一個記錄塊(record),一個數據段結束后再接下一個文件頭數據,依次循環、直到采集結束。其中,單個時間片數據段中各字節位置信息闡述如下。

表2 LEMI-417原始二進制記錄數據的時間序列格式(segment)Table 2 LEMI-417 time series format of raw binary recorded data
(1)1~3字節:3個字節長度,存放磁通門傳感器X方向的測量值Hx(單位:nT)。
(2)4~6字節:3個字節長度,存放磁通門傳感器Y方向的測量值Hy(單位:nT)。
(3)7~9字節:3個字節長度,存放磁通門傳感器Z方向的測量值Hz(單位:nT)。
(4)10~13字節:4個字節長度,存放第1道電極間的測量值E1(單位:μV/m)。
(5)14~17字節:4個字節長度,存放第2道電極間的測量值E2(單位:μV/m)。
(6)18~21字節:4個字節長度,存放第3道電極間的測量值E3(單位:μV/m)。
(7)22~25字節:4個字節長度,存放第4道電極間的測量值E4(單位:μV/m)。
(8)26~27字節:2個字節長度,存放磁通門傳感器溫度Tf(單位:℃)。
(9)28~29字節:2個字節長度,存放電道采集盒子的溫度Te(單位:℃)。
(10)30字節:1個字節長度,存放時間片采樣間隔。
在C++語言中可利用struct類型變量來結構化地讀取和存儲頭文件信息,再按表1所示各信息的字節位置和字節長度,定義其內部的子變量數據類型,其核心代碼如下:
//頭文件數據結構定義
struct TagData
{
unsigned char str_1; //4
unsigned char str_2; //1
unsigned char str_3; //7
unsigned char str_4; //儀器型號
unsigned char no; //儀器編號
unsigned char year; //年
unsigned char month; //月
unsigned char day; //日
unsigned char hour;//時
unsigned char minute;//分
unsigned char second;//秒
unsigned char latitude[4];//緯度
char N_S;//北緯還是南緯
unsigned char longitude[5];//經度
char E_W;//東經還是西經
char separator; //空字符
unsigned char altitude[2];//大地高
unsigned char average;//采樣率
unsigned chargps; //GPS鎖定狀態
unsigned charuin; //外部電源電壓
unsigned char L1;//第一對極距長度
unsigned char L2;//第二對極距長度
unsigned char L3;//第三對極距長度
unsigned char L4;//第四對極距長度
}
//……由于篇幅有限省略部分非關鍵代碼
//讀取儀器原始數據文件
TagData tag;
FILE * fp=fopen(strFilePath,"rb");
char dataBuf[32]="";
fread(dataBuf,sizeof(dataBuf),1,fp);
fclose(fp);
//結構體各子變量賦值
tag.str_1=dataBuf[0];
tag.str_2=dataBuf[1];
//… …由于篇幅有限省略部分代碼
tag.latitude[0]=dataBuf[11];
tag.latitude[1]=dataBuf[12];
tag.latitude[2]=dataBuf[13];
tag.latitude[3]=dataBuf[14];
//… …由于篇幅有限省略部分代碼
tag.L4=dataBuf[31];
LEMI-417M型儀器的原始數據以二進制格式存儲于CF卡中,將它賦值到計算程序語言的整型變量時必須進行二進制位操作轉換。以頭文件二進制數據中的大地高數據(m_Altitude)為例,由于整型變量(int)無論是在32位還是64位操作系統其字節長度均為32位,幸運地避開了不同操作系統程序代碼的特殊處理問題,位轉換的實質就是將原始數據中各字節位置的數值完整地賦值到整型變量的各字節位置上,其關鍵核心代碼如下:

背景影像截圖自Google Earth圖5 2019年超長周期大地電磁測深工作布置Fig.5 Layout of long period magnetotelluric sounding in 2019
int m_Altitude=0;
int temp1=0,temp2=0;
temp1=tag.altitude[1];
temp1=temp1 <<16;
temp1=temp1 &0x00FF0000;
temp2=segment.altitude[0];
temp2=temp2 <<8;
temp2=temp2 &0x0000FF00;
m_Altitude=temp1|temp2;
if(m_Altitude>=0)
{
m_Altitude=m_Altitude&0x00FFFFFF;
}
else
{
m_Altitude=m_Altitude| 0xFF000000;
}
2019年項目組在四川省會理-鹽源一帶開展區域地球物理調查工作,其中部署了一條160°方向自四川省木里縣唐央鄉至云南省武定縣高橋鎮約 380 km長的超長周期大地電磁測深剖面(圖5),共計14個超長周期大地電磁測深點,平均點距控制在25~30 km,野外工作共投入了7臺儀器,其中LEMI-417I型儀器4臺,LEMI-417M型儀器3臺。為保證低頻段數據的質量,計劃單臺站的觀測時間控制在不少于7 d,預計周轉2個批次,在25個工作日內完成全部工作。考慮到剖面北段位于地形劇烈起伏的橫斷山脈,進入冬季后將出現長時間的雨雪天氣,不利于野外工作的安全開展,因此于2019年 10月 10日首先從剖面最北端往回布置測點。項目組歷經崎嶇道路終于到達海拔3 500 m以上的木里縣,卻在進行7臺儀器一致性試驗時突然出現3臺LEMI-417M型儀器同時出現無法鎖定衛星的問題,返廠維修對項目組來說是一個無法承擔的額外人員、時間和經費花銷,采用何種方法來解決眼前的難題對于一線人員來說是一個巨大的挑戰。
目前,智能手機內置的CPU、GPS、攝像頭等硬件配置越來越高,完全可以實現對某一時刻、某一位置的準確測量,如果能夠獲取到儀器內部時鐘與外部準確時鐘之間的差值,那么完全可以對儀器采集的數據進行2次時鐘校正。基于此,項目組仍然按照原計劃開展野外工作(圖5中紅色測點是LEMI-417M型儀器的測點位置),不同之處是在儀器開始采集數據時,使用1臺智能手機進行同步GPS坐標定位和時鐘顯示,使用另1臺智能手機進行拍照,在照片中讀取某一時刻下儀器內部時鐘和外部準確時鐘的差值,當其他4臺LEMI-417I型儀器布設完成后,返回到LEMI-417M型儀器位置再次進行時鐘延時拍照,最后在儀器停止采集時再完成1次時鐘延時拍照。經多臺儀器多組延時拍照的數據對比,儀器時鐘延時符合線性假設前提,因此可以按照式(1)對LEMI-417M型儀器在7 d里連續采集的每一個數據進行2次時鐘線性修正。
在對儀器二進制數據結構及其關鍵算法程序深入剖析的基礎上,為方便一線工作人員操作使用,基于微軟基礎類庫(microsoft foundation classes,MFC)開發了一套能夠在任何Windows系統上運行的軟件工具,軟件主界面如圖6所示,用戶僅需在彈出的文件選擇對話框中將LEMI-417型儀器連續采集的二進制數據文件(后綴名*.B××)批量選入到軟件中,并對照拍攝照片輸入數據開始采集和結束采集時的儀器LCD顯示屏中的內部時鐘和外部智能手機屏幕顯示的準確時鐘(圖6中紅色矩形框內內容),軟件工具將根據上述信息自動遍歷和修改原始二進制頭文件數據中的年、月、日、時、分、秒信息,實現對原始數據時鐘信息的二次精確修正,滿足多臺站互遠參考計算的前提條件,能夠使用配套的PRC_MTMV商業軟件[7]進行后續視電阻率、視相位、傾子等數據的計算。08號測點經時鐘二次校正后的PRC_MTMV軟件計算結果如圖7所示,其中視電阻率曲線連續、光滑,達到I級點品質,且低頻段數據的周期大于15 000 s,滿足探測該地區殼幔電性結構趨膚深度要求,客觀證明了本文軟件解決方案的可靠性。

圖6 軟件工具人機交互界面Fig.6 Screenshot of software tools

圖7 08號測點時鐘二次校正后的視電阻率計算結果截圖Fig.7 Screenshot of software calculation results of No.08 sounding point
此外,中國廣大學者在國產化大地電磁儀器[8-11]及其配套軟件[12-13]的研制方面投入了大量精力,但在產品可靠性、穩定性上與國外成熟儀器仍存在一定差距,對LEMI-417M型長周期大地電磁測深儀工作原理、數據存儲方式的解剖可作為一份當前國產同類型儀器、軟件研發的重要參考資料。
對LEMI-417M型長周期大地電磁測深儀器的工作方式、原始二進制數據格式進行了深入剖析,相關認識對研究烏克蘭利沃夫空間研究中心研制的其他LEMI系列大地電磁類儀器的原始數據存儲格式具有參考價值。
針對野外一線突如其來的GPS失鎖問題,所提出的軟件應急解決方案無疑是經濟、可行的最佳途徑,該問題的解決思路與方法可供今后其他類似突發故障的快速解決提供借鑒,所開發的軟件工具可靠、有效,具有一定的實用價值,可推廣應用。