




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、高級(jí)嵌入式項(xiàng)目設(shè)計(jì)摘要:本文是基于PC-Linux開源的IEEE1588V2源碼,以及外接GPS作為時(shí)間源, PC-Linux平臺(tái)上GPS時(shí)間信息的輸入,實(shí)現(xiàn)NEMA碼格式的時(shí)間數(shù)據(jù)解析,通過(guò)以太網(wǎng)傳輸數(shù)據(jù),并測(cè)試其與傳感器端的時(shí)間同步性能。關(guān)鍵字:IEEE1588V2;GPS;Linux;NEMA1 概述橋梁檢測(cè)就是要根據(jù)實(shí)際情況對(duì)橋梁進(jìn)行評(píng)估,因此前期的主要工作就是從既有的現(xiàn)狀與特性著手,對(duì)要檢測(cè)的實(shí)體有一個(gè)總體把握,并且明確后面工作的方向。外觀檢查是橋梁檢測(cè)中一項(xiàng)非常重要的工作,通常如果產(chǎn)生了病害會(huì)有一些表象,我們通過(guò)外觀的檢查可以分析判斷這些病害產(chǎn)生的原因,提出整治措施并且有利于明確接
2、下來(lái)工作的重點(diǎn)。外觀檢查要求做到抓住重點(diǎn),力求全面。一座橋梁相對(duì)每個(gè)人來(lái)說(shuō)都是非常的龐大的,橋梁的細(xì)微的變化,人通過(guò)肉眼是很難察覺的。因此設(shè)計(jì)一套橋梁檢測(cè)系統(tǒng)是非常有必要,并且非常有意義的事情。在一座橋梁上可以通過(guò)在關(guān)鍵點(diǎn)安放傳感器,來(lái)獲取橋梁細(xì)微變化的數(shù)據(jù),再上傳到PC機(jī)上,進(jìn)行數(shù)據(jù)分析,根據(jù)分析的結(jié)果對(duì)橋梁做出相應(yīng)的維護(hù)和整修。只有這樣才能確保橋梁安全,確保通行人員的生命安全。為了能從傳感器端獲取到的準(zhǔn)確的數(shù)據(jù),保證數(shù)據(jù)的有效性,需要的對(duì)各傳感器進(jìn)行時(shí)間同步。本文主要是在服務(wù)端進(jìn)行時(shí)間同步設(shè)計(jì)。設(shè)計(jì)思路是通過(guò)GPS獲取具有時(shí)間值的數(shù)據(jù),在linux下對(duì)獲取到的數(shù)據(jù)按NEMA格式進(jìn)行數(shù)據(jù)解析
3、,解析出時(shí)間值。再將解析出的時(shí)間值更新到linux系統(tǒng),在linux下對(duì)PTP協(xié)議進(jìn)行相關(guān)配置,通過(guò)以太網(wǎng)連接到傳感器端,進(jìn)行時(shí)間同步。2 GPS數(shù)據(jù)NEMA解析本文設(shè)計(jì)采用的GPS型號(hào)是GY-GPS6MV1,供電3.3V,波特率9600bit/s,數(shù)據(jù)為8位,停止位1位,無(wú)奇偶校驗(yàn)。linux下可以通過(guò)minicom來(lái)接受串口數(shù)據(jù)。minicom安裝步驟如下: # tar zxf minicom-2.2.tar.gz # cd minicom-2.2 # ./configure # make # make install minicom-2.2.tar.gz安裝包可以到網(wǎng)上下載到。按照上面的
4、命令進(jìn)行一步一步操作,安裝minicom。安裝完成后通過(guò)指令"rpm -qa | grep minicom"來(lái)確認(rèn)是否安裝了minicom,回車后會(huì)顯示minicom 的版本信息第一次運(yùn)行minicom時(shí)需要輸入指令 minicom -s,對(duì)minicom中的參數(shù)進(jìn)行設(shè)值。 啟動(dòng)后,出現(xiàn)配置菜單:選serial port setup進(jìn)入串口配置。輸入A配置串口驅(qū)動(dòng)為/dev/ttyUSB*。因?yàn)镚PS模塊采用的是USB轉(zhuǎn)串口,因此配置串口驅(qū)動(dòng)是選擇ttyUSB*。通過(guò)ll /dev/ttyUSB*命令查看具體采用的哪個(gè)USB驅(qū)動(dòng)。 輸入E配置速率為9600 8N1輸入F將
5、Hardware Flow Control 設(shè)為NO,回車退出。設(shè)置完成后選擇Save setup as dfl將當(dāng)前設(shè)置保存為默認(rèn)設(shè)置。在輸入minicon 即可直接進(jìn)入,Minicom是基于窗口的。要彈出所需功能的窗口,可按下Ctrl-A,然后再按各功能鍵(a-z或A-Z)。例如:功能鍵X代表退出minicom。上圖為minicom配置串口參數(shù)的界面。 在PC機(jī)串口插入連接GPS的USB轉(zhuǎn)串口,通過(guò)minicom接收數(shù)據(jù)。接受到的數(shù)據(jù)如下圖。 下面對(duì)NEMA協(xié)議作簡(jiǎn)要的介紹。 NMEA0183的GPS常用標(biāo)準(zhǔn)語(yǔ)句有很多種: $GPGGA,它的語(yǔ)句格式如:$GPGGA,092204.999,
6、4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,0000*1FGPGGA 包含14個(gè)字段,字段0為語(yǔ)句ID,字段1為UTC時(shí)間,時(shí)分秒格式為hhmmss.sss,字段13為校驗(yàn)值,別的字段為經(jīng)緯度,海拔等等。如果GPS輸出的幀結(jié)構(gòu)為GPGGA格式時(shí),就需要通過(guò)代碼獲得字段一的值,在編程的思路中按照逗號(hào)“,”來(lái)區(qū)分每一個(gè)字段,從而獲取需要的字段。 $GPGLL,它的語(yǔ)句格式為:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2DGPGLL包含8字段,其中時(shí)間字段處在字段5,格式為hhmmss.sss。$GPRMC,RM
7、C(Recommended Minimum Specific)推薦最小定位信息,語(yǔ)句格式為:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,A*50GPRMA包含17個(gè)字段,其中字段1為UTC時(shí)間,hhmmss.sss格式,字段9為UTC日期,格式為DDMMYY。 $GPZDA,UTC時(shí)間/日期及本地時(shí)區(qū)偏移量$GPZDA,<1>,<2>,<3>,<4>,*<5>CRLF <1>UTC 時(shí)間,格式hhmmss.ss(前導(dǎo)位數(shù)不足則補(bǔ)0) &l
8、t;2>UTC日期,01到31 <3>UTC月份,02到12 <4>UTC 年,格式y(tǒng)yyy <5>校驗(yàn)和代碼編寫分析:linux C 代碼通過(guò)串口讀取gps數(shù)據(jù),主要目的是獲取GPS基本信息,精度達(dá)到5位秒位,主要是獲取日期,時(shí)間。采用方法讀取當(dāng)前100字節(jié)數(shù)據(jù),分析GPRMC幀結(jié)構(gòu),獲得時(shí)間和年月日數(shù)據(jù)。由于NAME該協(xié)議采用ASCII 碼,其串行通信默認(rèn)參數(shù)為:波特率9600bps,數(shù)據(jù)位8bit,開始位=1bit,停止位1bit,無(wú)奇偶校驗(yàn)。在程序中對(duì)這些參數(shù)進(jìn)行了相關(guān)的編寫。在GPS NEAM解析程序中采用void set_speed(int
9、 fd,int speed);設(shè)計(jì)波特率,對(duì)奇偶校驗(yàn)位,數(shù)據(jù)位的設(shè)計(jì)采用的是int set_Parity(int fd,int databits,int stopbits,int parity);代碼中采用設(shè)計(jì)OpenDev函數(shù),打開串口設(shè)備,int fd = open (Dev, O_RDWR |O_NONBLOCK );再打開數(shù)據(jù)的時(shí)候一定要加上O_NONBLOCK非阻塞狀態(tài),不加上非阻塞狀態(tài)就收不到數(shù)據(jù),在編寫代碼是的時(shí)候開始沒有加上非阻塞狀態(tài),可以成功打開設(shè)備,但是不能從串口中讀取數(shù)據(jù)。 int OpenDev (char *Dev)int fd = open (Dev, O_RDWR
10、 |O_NONBLOCK );if (-1=fd) perror("Can't Open Serial Port"); return -1;elsereturn fd;代碼中采用的是解析$GPRMC數(shù)據(jù)格式通過(guò) if(0x24=gpsdatai)&&(0x43=gpsdatai+5) ,語(yǔ)句來(lái)得到GPRMC數(shù)據(jù)串,其中ox24為$ ASCII 碼,0x43 為C ASCII 碼。下圖為NEMA協(xié)議解析后得到的數(shù)據(jù)。 通過(guò)linux下的date命令可以將時(shí)間值更新到linux系統(tǒng)中去。3 PTP協(xié)議IEEE1588簡(jiǎn)稱PTP(Precision Tim
11、e Synchronization Protocol)精準(zhǔn)時(shí)間同步協(xié)議。PTP同步原理PTP同步的基本原理如下:主、從時(shí)鐘之間交互同步報(bào)文并記錄報(bào)文的收發(fā)時(shí)間,通過(guò)計(jì)算報(bào)文往返的時(shí)間差來(lái)計(jì)算主、從時(shí)鐘之間的往返總延時(shí),如果網(wǎng)絡(luò)是對(duì)稱的(即兩個(gè)方向的傳輸延時(shí)相同),則往返總延時(shí)的一半就是單向延時(shí),這個(gè)單向延時(shí)便是主、從時(shí)鐘之間的時(shí)鐘偏差,從時(shí)鐘按照該偏差來(lái)調(diào)整本地時(shí)間,就可以實(shí)現(xiàn)其與主時(shí)鐘的同步。PTP協(xié)議定義了兩種傳播延時(shí)測(cè)量機(jī)制:請(qǐng)求應(yīng)答(Requset_Response)機(jī)制和端延時(shí)(Peer Delay)機(jī)制,且這兩種機(jī)制都以網(wǎng)絡(luò)對(duì)稱為前提。請(qǐng)求應(yīng)答機(jī)制下圖 請(qǐng)求應(yīng)答機(jī)制實(shí)現(xiàn)過(guò)程 請(qǐng)求應(yīng)
12、答方式用于端到端的延時(shí)測(cè)量。如上圖所示,其實(shí)現(xiàn)過(guò)程如下:(1) 主時(shí)鐘向從時(shí)鐘發(fā)送Sync報(bào)文,并記錄發(fā)送時(shí)間t1;從時(shí)鐘收到該報(bào)文后,記錄接收時(shí)間t2。(2) 主時(shí)鐘發(fā)送Sync報(bào)文之后,緊接著發(fā)送一個(gè)攜帶有t1的Follow_Up報(bào)文。(3) 從時(shí)鐘向主時(shí)鐘發(fā)送Delay_Req報(bào)文,用于發(fā)起反向傳輸延時(shí)的計(jì)算,并記錄發(fā)送時(shí)間t3;主時(shí)鐘收到該報(bào)文后,記錄接收時(shí)間t4。(4) 主時(shí)鐘收到Delay_Req報(bào)文之后,回復(fù)一個(gè)攜帶有t4的Delay_Resp報(bào)文。此時(shí),從時(shí)鐘便擁有了t1t4這四個(gè)時(shí)間戳,由此可計(jì)算出主、從時(shí)鐘間的往返總延時(shí)為(t2 t1) + (t4 t3),由于網(wǎng)絡(luò)是對(duì)稱的
13、,所以主、從時(shí)鐘間的單向delay為(t2 t1) + (t4 t3) / 2。因此,從時(shí)鐘相對(duì)于主時(shí)鐘的時(shí)鐘偏差為:Offset = (t2 t1) - (t2 t1) + (t4 t3) / 2 = (t2 t1) - (t4 t3) / 2。 配置PTP協(xié)議將時(shí)鐘狀態(tài)設(shè)置成PTP_MASTER狀態(tài)本地時(shí)鐘通過(guò)BMC算法來(lái)決策哪個(gè)時(shí)鐘是最好的,并據(jù)此來(lái)決定端口的下一個(gè)狀態(tài)值。在PTP子域中每個(gè)時(shí)鐘獨(dú)立運(yùn)行BMC算法。BMC算法應(yīng)包含兩部分算法構(gòu)成,即數(shù)據(jù)集比較算法和端口狀態(tài)決策算法。數(shù)據(jù)集比較算法中會(huì)比較到Ptpclock中的priority1和priority2。Priority 1:
14、絕對(duì)優(yōu)先級(jí);BMC可以根據(jù)該字段判斷GM選取順序;該字段為可配置。取值范圍0255;值越小,優(yōu)先級(jí)越高。Prioirty 2: 用于微調(diào)的時(shí)鐘優(yōu)先級(jí);在不同鐘情況下的數(shù)據(jù)集比較中為倒數(shù)第二項(xiàng);該字段也為可配置,取值范圍0255;值越小,優(yōu)先級(jí)越高。為了是本地時(shí)鐘最有最高權(quán)限,將prioirty1和priority2都設(shè)置0.配置GM時(shí)鐘等級(jí)clockclass,將其值設(shè)置為6,表示同步于主參考定時(shí)源,不能成為從設(shè)備。下圖是將PTPclock初始化后,調(diào)用void displayRunTimeOpts(RunTimeOpts* rtOpts)函數(shù),打印初始化值信息,其中可以clockclass設(shè)
15、置為6,priority1和priority2都設(shè)置為0.在狀態(tài)引擎函數(shù)protocol(RunTimeOpts *rtOpts, PtpClock *ptpClock)中默認(rèn)是將時(shí)鐘進(jìn)入初始化狀態(tài)中,為了使時(shí)鐘運(yùn)行在主時(shí)鐘狀態(tài),使用函數(shù) toState(PTP_MASTER, rtOpts, ptpClock)進(jìn)入狀態(tài)PTP_MASTER。 ptp協(xié)議獲取系統(tǒng)時(shí)間和發(fā)送Sync數(shù)據(jù)包流程ptpClock = ptpdStartup(argc, argv, &ret, &rtOpts) protocol(&rtOpts, ptpClock)toState(PTP_MAS
16、TER, rtOpts, ptpClock) doState(rtOpts, ptpClock)timerExpired(SYNC_INTERVAL_TIMER, ptpClock->itimer)issueSync(rtOpts, ptpClock)getTime(&internalTime)fromInternalTime(&internalTime,&originTimestamp)msgPackSync(ptpClock->msgObuf,&originTimestamp,ptpClock)其中g(shù)etTime函數(shù)是獲取系統(tǒng)時(shí)間點(diǎn),包括秒和納秒
17、,fromInternalTime函數(shù)是將獲取到的時(shí)間點(diǎn)裝入originTimestamp量種中,再通過(guò)msgPackSync函數(shù)發(fā)送出去。因?yàn)榉?wù)端沒有與傳感器端進(jìn)行連接測(cè)試,無(wú)法看出效果。為了看出PTP所獲取的時(shí)間值,我根據(jù)PTP協(xié)議編寫了PTP所獲得系統(tǒng)的時(shí)間值Demo。主程序如下:typedef struct int seconds; int nanoseconds;TimeInternal;TimeInternal time;struct timeval tv;gettimeofday(&tv,0);time.seconds = tv.tv_sec;time.nanoseconds =tv.t
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CSIQ 4001-2017藝術(shù)品鑒證質(zhì)量溯源認(rèn)證規(guī)程玉器類
- T/CRIA 19001-2020橡膠手套氣密性自動(dòng)充氣檢測(cè)方法
- T/CPMA 011-2020病原微生物菌(毒)種保藏?cái)?shù)據(jù)描述通則
- T/CNIDA 006-2023核電常規(guī)島電氣二次接線設(shè)計(jì)導(dǎo)則
- T/CNFAGS 4-2021農(nóng)業(yè)用硝酸鎂
- T/CHTS 10095-2023雄安新區(qū)高速公路景觀設(shè)計(jì)導(dǎo)則
- T/CHC 115.3-2021 T/CAS 115.3-2021保健紡織品第3部分:磁
- T/CGCC 85-2023城市綠色貨運(yùn)配送企業(yè)評(píng)價(jià)指標(biāo)
- T/CGCC 15-2018定制商品服務(wù)規(guī)范
- T/CECS 10315-2023砌體結(jié)構(gòu)修復(fù)和加固用置換砂漿
- 人教版(PEP)2024年小升初英語(yǔ)試卷(含答案)
- DB36-T 1983-2024 安寧療護(hù)服務(wù)規(guī)范
- 2024-2025學(xué)年全國(guó)中學(xué)生天文知識(shí)競(jìng)賽考試題庫(kù)(含答案)
- 心衰健康宣教課件
- 馬工程《公共財(cái)政概論》課后習(xí)題庫(kù)(含)參考答案(可做期末復(fù)習(xí)和試卷)
- DB36T 1968-2024 公路路基工程利用鋰渣技術(shù)規(guī)范(試行)
- 醫(yī)療機(jī)構(gòu)工作人員廉潔從業(yè)九項(xiàng)準(zhǔn)則自查自糾報(bào)告
- (正式版)JC∕T 60021-2024 石膏基自流平砂漿應(yīng)用技術(shù)規(guī)程
- 日雜店購(gòu)銷合同清單
- 非遺文化傳承課件
- 小程序合作協(xié)議書
評(píng)論
0/150
提交評(píng)論