趙 炯,唐 聰,楊天琳
(同濟大學 機械工程學院,上海 201804)
地鐵隧道變形包括隧道的橫向與縱向形變,簡稱隧道整體形變.通過建立一套完善可靠的隧道形變監(jiān)測以及報警機制,保證地鐵運營環(huán)境的安全.
目前隧道監(jiān)測主要有人工測量和全站儀2種方法,前者主要靠人工實時采集各個分散的變形監(jiān)測點的數(shù)據(jù),最終通過網(wǎng)絡傳遞給上層數(shù)據(jù)庫并進行分析處理得到變形曲線,該方法效率較為低下,人為誤差難以控制;后者通過在隧道側壁上安放多點光源,形成x,y,z三個方向上的隧道模型,再通過后期處理得到隧道的變形程度分析.但全站儀成本高,不適合普遍運用以及遠距離隧道的監(jiān)測[1].針對上述2種方法的缺點,本文提出將嵌入式Linux技術運用在隧道變形的縱向變形監(jiān)測中,在隧道側壁上多點安裝嵌入式終端,并利用rs485總線實現(xiàn)主機PC與多從機之間的控制以及數(shù)據(jù)傳輸,形成了一套可靠有效的監(jiān)測終端網(wǎng)絡.
組建嵌入式終端網(wǎng)絡,由分布于隧道各監(jiān)測斷面上的圖像傳感器及其網(wǎng)絡系統(tǒng)構成[2].圖像傳感器獲取各斷面上光源圖像并通過圖像處理技術獲取圓心數(shù)據(jù),并通過網(wǎng)絡系統(tǒng)向站級監(jiān)測系統(tǒng)發(fā)送結果.站級監(jiān)測系統(tǒng)收到數(shù)據(jù)后再結合隧道橫向的監(jiān)測數(shù)據(jù)進行三維建模,評估整條線路的狀態(tài),實現(xiàn)隧道安全預警及信息網(wǎng)絡發(fā)布.隧道縱向監(jiān)測網(wǎng)絡見圖1.
圖1 隧道縱向監(jiān)測網(wǎng)絡Fig.1 Tunnel deformation detected network
嵌入式終端是縱向監(jiān)測網(wǎng)絡中的節(jié)點.基于S3C2440微處理器,板載64 MB大小的同步動態(tài)隨機存儲器(SDRAM)以及64 MB大小的資料存儲型閃存(Nand Flash),通過分時復用,控制2個ov9650圖像傳感器,分別獲取安裝在隧道前后的光源圖像,編寫Qt界面程序?qū)崿F(xiàn)視頻預覽以及設置節(jié)點地址等其他功能.
Ov9650是OMNIVISION公司推出的一款互補性氧化金屬半導體(CMOS)攝像頭,最大支持1300像素×1028像素(1,336,400像素).其動態(tài)圖像分辨率有4倍視頻圖像陣列(SXGA),視頻圖像陣列(VGA),1/4視頻圖像陣列(QVGA)等.
在隧道側壁上安裝多個監(jiān)測終端,并配置2個ov9650攝像頭來獲取隧道前后方向的光源圖像,這種方法主要是為了建立起誤差傳遞以及校正的機制.由于不需要兩路攝像頭同時工作,因此它們共用數(shù)據(jù)線和時鐘線并通過2個使能引腳GPH9,GPH10實現(xiàn)攝像頭的切換.
終端擴展了800像素×480像素的LCD并編寫Qt程序?qū)崿F(xiàn)交互界面,通過切換攝像頭分別預覽隧道前后目標光源的位置、亮度等是否符合圖像采集的要求,同時提供設置節(jié)點地址的功能實現(xiàn)串行通信,方便初期的安裝調(diào)試.
S3c2440內(nèi)含Camera Interface接口(簡稱CamIf),ov9650屬于該接口所支持的外設.攝像頭要正常工作,分別需要編寫CamIf和ov9650的驅(qū)動.
根據(jù)Linux視頻設備驅(qū)動的模型V4L2編寫CamIf驅(qū)動,向外設以及用戶程序提供了接口[3].實現(xiàn)Preview和Codec 2個通道以及直接內(nèi)存存取(DMA)傳輸功能,用來對設備輸出的視頻流進行處理傳輸.切換到P通道,輸出RGB565彩色格式的像素數(shù)據(jù),并在DMA控制器的作用下將數(shù)據(jù)傳輸?shù)絻?nèi)存中,Qt界面通過定時刷新讀取內(nèi)存中的像素數(shù)據(jù),實現(xiàn)視頻預覽;切換到C通道,把圖像數(shù)據(jù)按照YCbCr4∶2∶2的格式傳輸?shù)絻?nèi)存中,通過提取Y,Cb,Cr等3個分量并將其轉換為RGB格式的BMP位圖格式圖片,經(jīng)圖像處理后得到光源的圓心數(shù)據(jù).
Ov9650驅(qū)動主要通過配置寄存器完成一些初始化操作,如輸出的視頻格式、分辨率、自動白平衡、自動曝光控制等工作,驅(qū)動也可對OA和OB地址進行讀操作,獲取設備ID作為初始化確認信息.通過調(diào)用CamIf驅(qū)動提供的接口s3c2440_camif_register_camhw(&ov9650)將自身注冊到CamIf支持的設備列表中.注冊成功后,CamIf驅(qū)動將會在文件系統(tǒng)中創(chuàng)建與該設備對應的video N節(jié)點,用戶程序可通過v4l2接口來對CamIf進行設置,更改輸入視頻格式、通道模式或者窗口大小等[4].程序?qū)崿F(xiàn)如下:
自定義v4l_device數(shù)據(jù)結構,cap_len大小根據(jù)視頻預覽或圖像采集而定,表示capbuf或者cambuf的像素緩沖區(qū)的長度;v4l2_format是內(nèi)核中定義的結構體,主要是用來設置CamIf的格式.
v4l2_format結構體中定義1個枚舉變量,用來表示格式類型,根據(jù)類型確定union聯(lián)合體內(nèi)部的具體結構體.由于只需使用到截取圖像(CAPTURE)這個功能,設置類型為V4L2_BUF_TYPE_VIDEO_CAPT URE,同時初始化pix結構體變量,該變量內(nèi)部包括像素數(shù)據(jù)的格式以及寬度、高度等.通常定義2個結構體變量oldfmt以及newfmt,oldfmt用來保存原始的CamIf攝像頭接口格式,定義newfmt用來配置新的攝像頭接口格式.對CamIf攝像頭接口的操作通過調(diào)用內(nèi)核中V4L2機制提供的VIDIOC_G_FM T以及VIDIOC_G_FMT命令來實現(xiàn).操作程序過程如圖2所示.
新格式生效后,再分配像素緩沖區(qū)并對像素進行操作.另外用戶程序可以通過sccb總線對ov9650進行設置.在隧道壁上安裝調(diào)試多個嵌入式終端后,需要自定義通信協(xié)議來實現(xiàn)主機PC多個節(jié)點之間的控制與數(shù)據(jù)傳輸功能.
圖2 功能實現(xiàn)圖Fig.2 Function process on borad
上面已經(jīng)實現(xiàn)了嵌入式終端所需的基本功能,為了實現(xiàn)隧道縱向的遠距離監(jiān)測,需要布置多個節(jié)點,多個節(jié)點與主機PC的通信成為了要解決的下一個問題.因此需組建RS485網(wǎng)絡以及制定適合需求的串口通信協(xié)議.考慮到隧道監(jiān)測系統(tǒng)節(jié)點多以及數(shù)據(jù)量少的特點,本協(xié)議參考開放式系統(tǒng)互聯(lián)(OSI)系統(tǒng)模型,簡化為物理層、數(shù)據(jù)鏈路層和應用層.
考慮到RS485接口優(yōu)良的特性,采用其作為物理層的傳輸媒介并組建網(wǎng)絡[5].系統(tǒng)選用了MAX3485作為RS485協(xié)議芯片,完成將T TL電平轉換為RS-485電平的功能.主機PC通過RS232轉485的接口與通信總線相連,嵌入式終端直接通過擴展485接口掛靠總線,拓撲圖如圖3所示.
圖3 RS485網(wǎng)絡模型Fig.3 RS485 Network model
該層主要實現(xiàn)數(shù)據(jù)無差錯的雙向傳輸,基本通信單位是幀,該層設計實現(xiàn)了尋址、沖突檢測機制、流量控制和差錯處理4個方面的功能.
3.2.1 尋址與流量控制
RS485總線上的每個節(jié)點都要分配不同的地址,在本協(xié)議中,將地址信息加入幀內(nèi),包括源地址字段和目的地址字段.源地址與目的地址各由2個字節(jié)組成,并且主機支持廣播功能,主機PC地址為0x0000,從機地址范圍為0x0000~0xFFFE.設置廣播地址為0xFFFF,當主機PC發(fā)送廣播地址時,從節(jié)點都接收(見圖4).
通信協(xié)議中的流量控制采用停止等待方法,即主機發(fā)送出一幀后等待從機的應答信息.若在N時間以及M次重復發(fā)送后仍沒有等待從機的信息,則跳過當前節(jié)點繼續(xù)與下一節(jié)點通信;若立刻收到應答信息,也繼續(xù)向一下節(jié)點通信,保證通信的效率.
3.2.2 沖突檢測機制和差錯檢驗
RS485為半雙工結構,同一時刻只能有1個從節(jié)點處于發(fā)送狀態(tài),否則將導致總線沖突.通過給每個節(jié)點定義1個唯一的地址以及等待節(jié)點數(shù)據(jù)傳輸完成,消除了串行線路上由于幾個從節(jié)點同時發(fā)送引起沖突的可能性.采用循環(huán)冗余校驗(CRC)循環(huán)校驗對幀的數(shù)據(jù)段,進行計算得到校驗碼,并將其添加在幀中.主機收到該幀后重新計算CRC,檢驗接收到的數(shù)據(jù)是否正確.
3.2.3 數(shù)據(jù)鏈路層的幀結構
考慮到隧道監(jiān)測要實現(xiàn)主機端的控制以及雙向的數(shù)據(jù)傳輸,本協(xié)議定義了以下3種類型的幀:請求幀、數(shù)據(jù)幀、確認幀.確認幀用來應答主機,表示正確接收到幀.幀格式如表1所示.
若主機需要控制從機發(fā)生動作,則發(fā)送請求幀,從機根據(jù)幀類型做出具體的響應;若主機需向嵌入式終端傳遞設置參數(shù),則發(fā)送數(shù)據(jù)幀,從機接收到數(shù)據(jù)并確定CRC校驗無誤后,根據(jù)幀類型設置參數(shù).若需實現(xiàn)其他的控制功能,則可擴展幀類型字段,并定義從機的響應行為.
在數(shù)據(jù)鏈路層接收到請求幀以后,根據(jù)幀類型調(diào)用應用程序的子程序,包括控制嵌入式終端進行視頻截圖以及圖像處理等.子程序處理完后將數(shù)據(jù)返回給鏈路層,組合成幀并通過串口發(fā)送.
圖4 流量控制圖Fig.4 Flow control process
表1 幀格式Tab.1 Frame format
首先,主機首先建立1張1024項的網(wǎng)絡表.每一項用來描述該節(jié)點的屬性,包括節(jié)點地址、在線時間和工作狀態(tài).主機依次向表中各項發(fā)送請求查詢幀,若在線則更新節(jié)點在線標志位.通過一定間隔的掃描實現(xiàn)從機表項的添加或者移除.
其次,主機廣播發(fā)送請求同步幀,該幀以廣播形式發(fā)送,所有的在線節(jié)點均能響應該請求.請求同步幀主要是實現(xiàn)隧道的同步拍攝,得到某一時刻的光源圖像,并對該圖像進行處理[6],當收到主機請求數(shù)據(jù)幀時再返回數(shù)據(jù).
最后,主機依次向網(wǎng)絡表中的節(jié)點發(fā)送請求數(shù)據(jù)幀,從機的數(shù)據(jù)幀實現(xiàn)了CRC循環(huán)校驗,主機收到數(shù)據(jù)后對數(shù)據(jù)重新進行CRC校驗,若二者相等,則向下一表項發(fā)送請求.為了確??偩€數(shù)據(jù)不沖突,同一時刻只能向1個表項發(fā)送數(shù)據(jù)請求幀.主機端的通信流程圖如圖5所示.
圖5 主機端通信流程圖Fig.5 Function process on host
嵌入式技術應用在隧道監(jiān)測中有著較強的創(chuàng)新性.通過自定義RS485通信協(xié)議,實現(xiàn)了多種請求幀類型,從而使主機端更有效地對嵌入式終端進行控制.采用RS485總線以及ARM(Advanced Reduced Instruction set Computer Machines)組成的終端網(wǎng)絡,更加有利于調(diào)試以及管理.整套監(jiān)測系統(tǒng)具有較強的通用性,其設計采用一般的協(xié)議分層模式,實現(xiàn)了向上接口友好,通過幀結構設計及靈活的沖突檢測方式可以實現(xiàn)總線上主機與節(jié)點的通信,滿足了項目的實際需求.
[1]晏成.全站儀在隧道變形監(jiān)測中的應用研究[M].上海:同濟大學出版社,2005.YAN Cheng.T he research of total station in subway tunnel deformation detection[M].Shanghai:Tongji Univerity Press,2005.
[2]周奇才,高嵩,熊肖磊,等.基于圖像傳感器網(wǎng)絡的隧道形變監(jiān)測系統(tǒng)研究[J].計算機測量與控制,2009,17(9):1699-1700,1704.ZHOU Qicai,GAO Song,XIONG Xiaolei,et al.T he research of subway tunnel deformation detection based on video sensor network[J].Computer Measurement&Control,2009,17(9):1699-1700,1704.
[3]孫天澤,袁文菊.嵌入式設計及Linux驅(qū)動開發(fā)指南[M].北京:電子工業(yè)出版社,2007.SUN Tianze,YUAN Wenju.T he director of Linux driver and embedded design[M].Beijing:Publishing House of Electronics Industry,2007.
[4]CO RBET J,RUBLNI A,HARTM AN G.Linux device driver[M].3rd.ed.Sebastopol:O'Reilly Media,Inc,2006.
[5]閆成華,周余,都思丹.基于嵌入式Linux的 RS485通信協(xié)議[J].計算機工程,2008,34(11):278-280.YAN Chenghua,ZHOU Yu,DU Sidan.T he RS485 protocol based on embedded Linux[J].Computer Engineering,2008,34(11):278-280.
[6]鄭宇軒.地鐵隧道形變檢測的數(shù)字圖像處理技術應用[D].上海:同濟大學,2009.ZHENG Yuxuan.The application research of the digital image process in deformation monitoring of subway tunnel[D].Shanghai:Tongji University,2009.