本發(fā)明公開了一種基于 uCos ‐ II 操作系統(tǒng)和 lwIP 協(xié)議棧的 IEEE ‐ 1588 主站以及應(yīng)用于電力系統(tǒng)的支持 IEEE ‐ 1588 協(xié)議的主時鐘( IEEE ‐ 1588 主站)的實現(xiàn)方法。該方法是在一個低成本的硬件平臺上,借助 uCos ‐ II 操作系統(tǒng)和 TCP/IP 的協(xié)議棧,對以太網(wǎng)數(shù)據(jù)進(jìn)行了分類處理,實現(xiàn)了在同一個以太網(wǎng)端口提供基于二層和三層報文交換的 IEEE ‐ 1588 的主站功能。另外,通過使用不同的操作系統(tǒng)進(jìn)程來處理 E2E 和 P2P 對時,實現(xiàn)了兩種對時模式在同一端口上的共存。
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于電力系統(tǒng)電力電子與繼電保護(hù)領(lǐng)域,具體涉及一種應(yīng)用于電力系統(tǒng)的支持 IEEE - 1588 協(xié)議的主時鐘 (IEEE - 1588 主站 ) 的實現(xiàn)方案,該方案基于 uCos-II 操作系統(tǒng)和 lwIP 協(xié)議棧。
背景技術(shù)
[0002] IEEE - 1588 對時技術(shù)是一種基于乒乓對時原理的精確時鐘同步技術(shù),它采用短幀傳輸,算法簡單,對計算性能和網(wǎng)絡(luò)帶寬的要求都較低,適用于支持多播消息的分布式網(wǎng)絡(luò)通信系統(tǒng)。
[0003] 目前,隨著電力系統(tǒng)中的智能電網(wǎng)建設(shè)的逐步深入,二次設(shè)備側(cè)的數(shù)字化、網(wǎng)絡(luò)化的特點愈發(fā)明顯,且對對時精度也提出較高的要求。 IEEE - 1588 因其天然具備的網(wǎng)絡(luò)化特性以及較高的對時精度,在當(dāng)前的智能電網(wǎng)建設(shè)中受到了廣泛的關(guān)注,并應(yīng)用到智能電網(wǎng)的建設(shè)中來。
[0004] IEEE - 1588 對時技術(shù)是一種主從式的時間同步技術(shù) , 各對時終端作為時間同步系統(tǒng)中的從節(jié)點 ( 從站 ) ,通過 IEEE - 1588 協(xié)議,與時間同步系統(tǒng)中支持 IEEE - 1588 協(xié)議的主時鐘 ( 主站 ) 保持時間同步,進(jìn)而保證各對時終端間的時間同步。
[0005] 目前, IEEE- 1588 對時技術(shù)在智能電網(wǎng)中的應(yīng)用目前還主要集中在過程層,由于過程層的數(shù)據(jù)基于二層報文交換,因而當(dāng)前應(yīng)用于電力系統(tǒng)的 IEEE -1588 的主時鐘大多僅支持 IEEE802.3 的幀格式,支持 IPv4 幀格式的主時鐘較少。
[0006] 目前 , 支持 IPv4 幀格式的主時鐘 , 一方面由于其運行 Linux 、 VxWorks 之類的操作系統(tǒng),需要使用高性能 CPU 及以之對應(yīng)的 DRAM 和外部 FLASH 的支持。硬件成本高;另一方面,其在工作時對于 IPv4 和 IEEE802.3 幀格式的支持是互斥的,對于 E2E 和 P2P 的支持也是互斥的,不利于復(fù)雜環(huán)境下的應(yīng)用?;谝陨蟽煞矫嬉蛩兀局刑岢隽艘环N基于低成本的硬件平臺,且能同時支持多種幀格式和多種對時機(jī)制的 IEEE - 1588 主站的實現(xiàn)方法。
發(fā)明內(nèi)容
[0007] 為解決現(xiàn)有的 IEEE - 1588 主站實現(xiàn)中存在的硬件成本高、功能支持單一等問題,本申請公開了一種基于 uCos 操作系統(tǒng)和 lwIP 協(xié)議棧的 IEEE - 1588 主站的實現(xiàn)方法,以及基于該主站的報文處理方法。
[0008] 本申請具體采用以下技術(shù)方案。
[0009] 一種基于 uCos 操作系統(tǒng)和 lwIP 協(xié)議棧的 IEEE -1588 主站,所述主站主要包括供電單元、邏輯處理單元、以太網(wǎng)接口單元、頻率源單元,其特征在于 :
[0010] 所述邏輯處理單元包括一 CPU ,在所述 CPU 上移植 uCos-II 操作系統(tǒng),并在該操作系統(tǒng)上使用 lwIP 協(xié)議棧,所述邏輯處理單元負(fù)責(zé)處理以太網(wǎng)數(shù)據(jù)的收發(fā)以及 IEEE - 1588 協(xié)議棧邏輯的實現(xiàn);
[0011] 所述以太網(wǎng)接口單元包括一 SC 接口光模塊和一片 IEEE - 1588 專用 PHY 芯片,所述 SC 接口光模塊和 IEEE -1588 專用 PHY 芯片相連,所述以太網(wǎng)接口單元中的 PHY 芯片通過 MII 接口連接至邏輯處理單元中的 CPU 以協(xié)助所述邏輯處理單元提供以太網(wǎng)數(shù)據(jù)的收發(fā)功能,在 PHY 芯片的 IO 腳上通過背板接入一路 IRIG - B 碼信號作為基準(zhǔn)源輸入,所述 PHY 芯片捕獲并記錄輸入的 IRIG -B 碼,把 IRIG -B 碼信號的高低電平的跳變方向、跳變時的時標(biāo)信息封裝成 IEEE802.3 格式的 PSF (PHY Status Frame) 報文,并為 CPU 提供分辨率為 8ns 的 IEEE - 1588 時標(biāo);
[0012] 所述頻率源單元主要是負(fù)責(zé)給 CPU 和 PHY 提供時鐘信號;
[0013] 所述供電單元負(fù)責(zé)為主站提供所需的電源。
[0014] 本申請還進(jìn)一步公開了一種基于 uCos 操作系統(tǒng)和 lwIP 協(xié)議棧的 IEEE - 1588 主站的報文處理方法,方案如下 :
[0015] 一種基于 uCos 操作系統(tǒng)和 lwIP 協(xié)議棧的 IEEE -1588 主站的報文處理方法,其特征在于,所述方法包括以下步驟 :
[0016] (I) 所述 CPU 接收以太網(wǎng)數(shù)據(jù),在所述 uCos-1I 操作系統(tǒng)的基礎(chǔ)上,所述 CPU 對以太網(wǎng)接收數(shù)據(jù)進(jìn)行分類處理,把不同幀格式的報文分別放在操作系統(tǒng)的不同進(jìn)程中處理,包括把封裝在 IEEE802.3 和 IPv4 幀里的 IEEE -1588 報文放在不同的進(jìn)程中處理;操作系統(tǒng)中負(fù)責(zé)以太網(wǎng)數(shù)據(jù)接收的進(jìn)程,會把 IEEE802.3 、 IPv4 幀格式的報文以及 PSF 報文數(shù)據(jù)以消息郵箱的方式分發(fā)到不同的指定進(jìn)程中,以便進(jìn)行下一步的處理;
[0017] (2) 在步驟 (I) 的基礎(chǔ)上,所述 CPU 對于接收到的內(nèi)含 IRIG-B 碼的跳變沿時刻信息的 PSF 報文進(jìn)行解析處理,所述 CPU 根據(jù)所述的跳變沿時刻解析出 IRIG -B 內(nèi)信息,并計算出所解析出的信息與基準(zhǔn)源間的誤差;
[0018] (3) 在步驟 (I) 的基礎(chǔ)上,所述 CPU 對于接收的 IEEE802.3 幀格式的報文會再次進(jìn)行分類處理,丟棄其中的非 IEEE - 1588 報文,并把剩余的 IEEE - 1588 報文分為 :E2E 查詢報文 (DelayReq 報文 ) 、 P2P 相關(guān)報文 (PdelayReq 、 PdelayResp 和 PdelayResp Followup 報文 ) 和 BMC (Best Master Clock) 相關(guān)報文 (Announce 報文 ), 根據(jù)報文的類型 , 再次分發(fā)到不同的指定進(jìn)程中去處理;
[0019] (4) 在步驟 (3) 的基礎(chǔ)上,對于 IEEE802.3 幀格式的 IEEE - 1588 報文中的同步報文 (Sync 和 Followup 報文 ) 、 P2P 查詢報文 (PdelayReq 報文 ) 和 Announce 報文的發(fā)送 , 都分別有一個對應(yīng)的進(jìn)程來控制,進(jìn)程間是相互獨立的,有其自己固定的周期;
[0020] (5) 在步驟 (I) 的基礎(chǔ)上,對于接收的 IPv4 幀格式的報文會再次進(jìn)行分類處理,把其中的非 IEEE - 1588 報文分給 lwIP 協(xié)議棧進(jìn)程處理,其余的分給相應(yīng)的 IEEE - 1588 處理進(jìn)程 ;
[0021] (6) 在步驟 (5) 的基礎(chǔ)上,對于接收的 IPv4 幀格式的 IEEE -1588 報文會再次進(jìn)行分類處理,將其分為 :E2E 查詢報文 (DelayReq 報文 ) 、 P2P 相關(guān)報文 (PdelayReq 、 PdelayResp 和 PdelayResp Followup 報文 ) 和 BMC 相關(guān)報文 (Announce 報文 ), 根據(jù)報文的類型 , 再次分發(fā)到不同的指定進(jìn)程中去處理;
[0022] (7) 在步驟 (6) 的基礎(chǔ)上,對于 IPv4 幀格式的同步報文、 P2P 查詢報文 (PdelayReq 報文 ) 和 Announce 報文的發(fā)送,都分別有一個對應(yīng)的進(jìn)程來控制,進(jìn)程間是相互獨立的,有其自己固定的周期。
[0023] 本申請具有以下技術(shù)效果 :
[0024] (I) 基于一個低成本的硬件平臺,實現(xiàn)了支持 IEEE802.3 、 IPv4 幀格式的 IEEE - 1588 主站。
[0025] (2) 實現(xiàn)了在同一個以太網(wǎng)端口上,同時提供基于二層和三層網(wǎng)絡(luò)服務(wù)的 IEEE - 1588 主站功能。
[0026] (3 ) 實現(xiàn)了在同一個以太網(wǎng)端口上,同時提供對 E2E 和 P2P 延時測量機(jī)制的支持。
具體實施方式
[0029] 下面結(jié)合說明書附圖對本發(fā)明的技術(shù)方案作進(jìn)一步詳細(xì)說明。
[0030] 本發(fā)明中, IEEE-1588 主站的結(jié)構(gòu)原理框圖如附圖中的圖 1 所示,其結(jié)構(gòu)大體上可分為供電單元、邏輯處理單元、以太網(wǎng)接口單元、頻率源單元等。所述邏輯處理單元包括一 CPU ,在所述 CPU 上移植 uCos-II 的操作系統(tǒng),并在該操作系統(tǒng)上使用 lwIP 的協(xié)議棧,所述邏輯處理單元設(shè)置有邏輯處理單元,通過邏輯處理單元的以太網(wǎng)接口接收以太網(wǎng)數(shù)據(jù),所述邏輯處理單元負(fù)責(zé)處理以太網(wǎng)數(shù)據(jù)的收發(fā)處理以及 IEEE -1588 協(xié)議棧邏輯的實現(xiàn);所述以太網(wǎng)接口單元包括一 SC 接口光模塊和一片 IEEE -1588 專用 PHY 芯片,所述 SC 接口光模塊和 IEEE -1588 專用 PHY 芯片相連,所述以太網(wǎng)單元通過 MII 接口連接至邏輯處理單元中的 CPU 以協(xié)助所述邏輯處理單元提供以太網(wǎng)數(shù)據(jù)的收發(fā)功能,在 PHY 芯片的 IO 腳上通過背板接入一路 IRIG - B 碼信號作為基準(zhǔn)源輸入,所述 PHY 芯片捕獲并記錄輸入的 IRIG - B 碼,把其沿翻轉(zhuǎn)極性、時標(biāo)信息封裝成 IEEE802.3 格式的 PSF 報文,并為 CPU 提供分辨率為 8ns 的 IEEE - 1588 時標(biāo);所述頻率源單元主要是負(fù)責(zé)給 CPU 和 PHY 提供時鐘信號;所述供電單元負(fù)責(zé)為主站提供所需的電源。
[0031] 主站的供電單元主要包括一片國半公司 LM2812 - 3.3 的 DC - DC 芯片及相關(guān)外圍器件,其負(fù)責(zé)給其它單元提供工作時所需的 3.3V 電源輸出。
[0032] 主站的邏輯處理單元主要包括一片 Freescale 的 Kinetis K60 系列 CPU, 其采用高達(dá) 100MHz 的 ARM Corte - M4 內(nèi)核,內(nèi)部集成 FLASH 、 SRAM 以及 PLL ,并提供了以太網(wǎng)接口。為了滿足 CPU 運行時所需的內(nèi)存開銷,還在 CPU 的外部總線上擴(kuò)展了一片型號為 CY62157 的 16*512KB 的 SRAM 。該 CPU 主要負(fù)責(zé)處理以太網(wǎng)數(shù)據(jù)的收發(fā)處理以及 IEEE -1588 協(xié)議棧邏輯的實現(xiàn),并為此搭建了 uCos-II 的操作系統(tǒng),具體版本是 V2.84 ,最多可允許創(chuàng)造 254 個用戶進(jìn)程。在操作系統(tǒng)上使用了 lwIP 協(xié)議棧,具體版本為 V1.3.0 。該單元對于以太網(wǎng)數(shù)據(jù)收發(fā)的處理,將在后續(xù)結(jié)合附圖中的圖 2 進(jìn)行詳細(xì)介紹。
[0033] 主站的以太網(wǎng)接口單元主要由一個 Avago 公司 AFBR5803AZ (SC 口 ) 的光模塊和一片國半公司 DP83640 的 IEEE - 1588 專用 PHY 芯片組成。該單元主要通過 MII 接口協(xié)助 (PU 提供以太網(wǎng)數(shù)據(jù)的收發(fā)功能,并由 DP83640 芯片為 CPU 提供分辨率為 8ns 的 IEEE-1588 時標(biāo)。另外,該單元還負(fù)責(zé)捕獲輸入的 IRIG - B 碼,并把其沿翻轉(zhuǎn)極性、時標(biāo)等信息封裝成 IEEE802.3 格式的 PSF 報文,上送給 CPU 做后續(xù)處理。所述 PSF 報文的源 MAC 地址會在初始化 DP83640 時被配置為 "08: 00: 17: 0B: 6B: 0F" 。
[0034] 主站的頻率源單元主要是負(fù)責(zé)給 CPU 和 PHY 提供時鐘信號,在此為了保證輸出能滿足精度要求,使用了一個頻率穩(wěn)定度為 ±200ppb 的恒溫晶振,頻點為 25Mhz ,經(jīng)過一個時鐘分發(fā)芯片 CY2305 的時鐘分配芯片后供給 CPU 和 PHY 芯片使用。
[0035] 本發(fā)明中,對于 IEEE - 1588 主站功能的程序設(shè)計基于 uCos-II 操作系統(tǒng)和 lwIP 協(xié)議棧,其對以太網(wǎng)數(shù)據(jù)報文 ( 尤其是 IEEE - 1588 協(xié)議相關(guān)的報文 ) 采用分類、分層的處理方法。每一類、每一層的處理對應(yīng)于操作系統(tǒng)中特定的一個進(jìn)程,進(jìn)程間通過操作系統(tǒng)提供的信號量、消息郵箱和信號量集來實現(xiàn)數(shù)據(jù)交換和進(jìn)程調(diào)度。
[0036] 通過對 DP83640 的配置,可以讓 DP83640 把 IEEE - 1588 報文的接收時標(biāo)插入 IEEE -1588 報文中的保留字段,以便在進(jìn)行報文處理時可以直接獲取。對于 IEEE -1588 報文的發(fā)送時標(biāo)的獲取,需要 CPU 通過 ΜΠΜ 總線去訪問 DP83640 的寄存器來獲取。
[0037] 如附圖中圖 2 所示,本申請還公開了一種基于 uCos 操作系統(tǒng)和 lwIP 協(xié)議棧的 IEEE - 1588 主站的報文處理方法,所述方法的處理步驟具體如下 :
[0038] (I) 以太網(wǎng)數(shù)據(jù)分類處理 :
[0039] 這部分的處理,與圖 2 中序號為 I 的進(jìn)程相對應(yīng)。
[0040] 在所述過程中, CPU 查詢其內(nèi)部以太網(wǎng) MAC 的接收描述符,以判斷是否接收完整的報文,并對報文的類型、長度及源、目的 MAC 地址進(jìn)行識別。并根據(jù)報文的幀類型及源 MAC 地址進(jìn)行分類,判斷所述報文是 IEEE802.3 的報文、 IPv4 的報文、 PSF 報文或不相關(guān)報文。對于不相關(guān)報文,所述 CPU 會直接丟棄,不予處理。
[0041] CPU 進(jìn)行報文分類的依據(jù)及步驟如下 :
[0042] 1. 所述 CPU 識別報文的目的地址,判斷所述報文是單播、多播還是廣播報文。若所述單播報文的目的地址與所述 CPU 以太網(wǎng) MAC 地址不匹配,則會被判定為不相關(guān)報文后丟棄。
[0043] 2. 在步驟 I 的基礎(chǔ)上,所述 CPU 識別報文的幀類型。若所述幀類型是 0x0800 ,則所述 CPU 判定所述報文是 IPv4 的報文,并將所述報文封裝成一個 uCos-II 的消息郵箱發(fā)送給圖 2 中的序號為 2 的進(jìn)程做后續(xù)處理。
[0044] 3. 在步驟 2 的基礎(chǔ)上,所述 CPU 繼續(xù)識別報文的幀類型。若所述幀類型非 0x88F7, 則會被判定為不相關(guān)報文后丟棄;否則所述報文可能是 PSF 或 IEEE802.3 封裝的 IEEE - 1588 報文,需要進(jìn)一步判斷。
[0045] 4. 在步驟 3 的基礎(chǔ)上,所述 CPU 判斷報文的源 MAC 地址是否為 "08:00:17:0B:6B:0F":
[0046] a) 是,則所述報文是 PSF 報文,所述報文會被封裝成一個 uCos-II 的消息郵箱發(fā)送給圖 2 中的序號為 3 的進(jìn)程做后續(xù)處理;
[0047] b) 否,則所述報文是 IEEE802.3 封裝的 IEEE - 1588 報文,所述報文會被封裝成一個 uCos-II 的消息郵箱發(fā)送給圖 2 中的序號為 11 的進(jìn)程做后續(xù)處理
[0048] (2) PSF 報文處理 (IRIG - B 碼的解析 ):
[0049] 這部分的處理,與圖 2 中序號為 3 的進(jìn)程相對應(yīng)。
[0050] 一個 IRIG -B 碼幀有 100 個碼元,共 200 個信號變化沿,對應(yīng)有 200 個 PSF 報文。
[0051] 圖 2 中序號為 3 的進(jìn)程,在接收到消息郵箱后會解析 PSF 報文,提取所述 PSF 報文內(nèi)的有關(guān) IRIG - B 碼信號變化時的時標(biāo)信息,將所述時標(biāo)信息送入一個長度為 200 的 FIFO 緩存。通過計算所述緩存中相鄰單元內(nèi)的時標(biāo)差值,即可解算出輸入的 IRIG - B 碼的信號脈寬,進(jìn)而得出相應(yīng)的碼元,以最終解析出 IRIG - B 報文所含的 UTC 時間 ( 協(xié)調(diào)世界時 ) 。
[0052] 所述 UTC 時間代表的是所述 IRIG - B 報文的秒準(zhǔn)時時刻的基準(zhǔn)源時間。所述的 IRIG -B 碼秒準(zhǔn)時沿到達(dá)主站時,主站內(nèi)部的時間可通過 PSF 報文內(nèi)的時標(biāo)來獲取。通過計算所述時標(biāo)與 UTC 時間的差值,即可得出主站內(nèi)部時間與基準(zhǔn)源間的誤差。采用 DP83640 提供的 Step Adjustment 的調(diào)節(jié)方式 , 將所述誤差值轉(zhuǎn)換為相應(yīng)的參數(shù)后 , 通過所述 CPU 與 DP83640 間的 MIIM 總線接口操作相應(yīng)的寄存器后即可完成時間的調(diào)節(jié)。
[0053] (3) IEEE802.3 幀格式的 ffiEE - 1588 報文的分類處理 :
[0054] 這部分的處理,與圖 2 中序號為 11 ? 14 的進(jìn)程相對應(yīng)。
[0055] 在所述的 11 號進(jìn)程中, CPU 在接收到消息郵箱后,會解析所述郵箱內(nèi)的 IEEE-1588 報文,根據(jù)所述報文內(nèi)的 messageType 字段來識別 IEEE -1588 報文類型,并進(jìn)行處理,具體處理流程如下 :
[0056] 1.messageType 為 0x01 時 , 所述報文為 DelayReq 報文 , 所述報文封裝成消息郵箱后,發(fā)送給 12 號進(jìn)程做后續(xù)處理;
[0057] 2.messageType 為 0x02 時 , 所述報文為 PdelayReq 報文 , 所述報文封裝成消息郵箱后,發(fā)送給 13 號進(jìn)程做后續(xù)處理;
[0058] 3.messageType 為 0x03 時 , 所述報文為 PdelayResp 報文 , 所述報文封裝成消息郵箱后,發(fā)送給 13 號進(jìn)程做后續(xù)處理;
[0059] 4.messageType 為 0x0A 時,所述報文為 PdelayRespFollowup 報文,所述報文封裝成消息郵箱后,發(fā)送給 13 號進(jìn)程做后續(xù)處理;
[0060] 5.messageType 為 0x0B 時 , 所述報文為 Announce 報文 , 所述報文封裝成消息郵箱后,發(fā)送給 14 號進(jìn)程做后續(xù)處理;
[0061] 6.messageType 為其它值時 , 所述報文被直接丟棄。
[0062] 在所述的 12 號進(jìn)程中, CPU 在接收到消息郵箱后,會解析所述郵箱內(nèi)的 DelayReq 報文,所述 CPU 會提取出插入在所述報文的保留字段內(nèi)的接收時標(biāo),并將所述時標(biāo)封裝成 DelayResp 報文后 , 通過以太網(wǎng)接口發(fā)送出去。
[0063] 在所述的 13 號進(jìn)程中, CPU 在接收到消息郵箱后,會解析所述郵箱內(nèi)的報文,所述報文可能有三種,所述 CPU 對所述報文的處理方式具體如下 :
[0064] 1.PdelayReq 報文 :
[0065] a) 所述 CPU 會提取出插入在所述報文的保留字段內(nèi)的接收時標(biāo),并將所述時標(biāo)封裝成 PdelayResp 報文后 , 通過以太網(wǎng)接口發(fā)送出去。
[0066] b) 所述 CPU 通過 MIIM 接口,獲取步驟 a 中發(fā)送的 PdelayResp 報文的發(fā)送時標(biāo) , 并所述時標(biāo)封裝成 PdelayRespFollowup 報文后 , 通過以太網(wǎng)接口發(fā)送出去。
[0067] 2.PdelayResp 報文 :
[0068] a) 所述 CPU 提取并記錄插入在所述報文的保留字段內(nèi)的 PdelayResp 報文的接收時標(biāo)。 [0069] b) 所述 CPU 提取并記錄所述報文中攜帶的 PdelayReq 報文的接收時標(biāo)。
[0070] 3.PdelayRespFollowup 報文 :
[0071] a) 所述 CPU 提取并記錄所述報文中攜帶的 PdelayResp 報文的發(fā)送時標(biāo)。
[0072] b) 所述 CPU 依據(jù)步驟 a 中獲取的 PdelayResp 報文的發(fā)送時標(biāo),以及解釋 PdelayResp 報文時獲取的 PdelayResp 報文的接收時標(biāo)和 PdelayReq 報文的接收時標(biāo),外加 PdelayReq 報文的發(fā)送時標(biāo) ( 所述時標(biāo)由 7 號進(jìn)程以消息郵箱的方式提供 ) ,計算出主站與對端的鏈路延時。
[0073] 在所述的 14 號進(jìn)程中, CPU 在接收到消息郵箱后,會解析所述郵箱內(nèi)的 Announce 報文,并參照 IEEE -1588 標(biāo)準(zhǔn)的第 9.3 章節(jié)有關(guān) BMC 算法的 Figure26 ? 28 中的邏輯要求,來完成 IEEE - 1588 狀態(tài)機(jī)的狀態(tài)識別和切換。
[0074] 注 : 在步驟 (3) 中,相關(guān)進(jìn)程收、發(fā)的所有 IEEE -1588 報文均為 IEEE802.3 的幀格式。
[0075] (4) IEEE802.3 幀格式的 Sync 、 Followup 、 PdelayReq 和 Announce 報文的發(fā)送處理 :
[0076] 這部分的處理,與圖 2 中序號為 15 ? 17 的進(jìn)程相對應(yīng)。
[0077] 在所述的 15 號進(jìn)程中, CPU 依次完成如下操作 :
[0078] 1. 發(fā)送 PdelayReq 報文。
[0079] 2. 通過 ΜΠΜ 接口,訪問 DP83640 的寄存器,獲取步驟 I 中發(fā)送的 PdelayReq 報文對應(yīng)的發(fā)送時標(biāo)。將所述時標(biāo)裝成成消息郵箱的方式發(fā)送給 13 號進(jìn)程。
[0080] 3. 按照設(shè)定的 P2P 對時周期,定時休眠,待喚醒后重新開始執(zhí)行步驟 I 。
[0081] 在所述的 16 號進(jìn)程中, CPU 依次完成如下操作 :
[0082] 1. 發(fā)送 Sync 報文。
[0083] 2. 通過 ΜΠΜ 接口,訪問 DP83640 的寄存器,獲取并保存步驟 I 中所述 Sync 報文對應(yīng)的發(fā)送時標(biāo)。
[0084] 3. 將步驟 2 中所獲取的時標(biāo)封裝成 Followup 報文發(fā)送。
[0085] 4. 按照設(shè)定的對時同步周期,定時休眠,待喚醒后重新開始執(zhí)行步驟 I 。
[0086] 在所述的 17 號進(jìn)程中, CPU 依次完成如下操作 :
[0087] 1. 根據(jù)主站當(dāng)前的狀態(tài),填充 Announce 報文的相應(yīng)字段后發(fā)送
[0088] 2. 按照設(shè)定的報文發(fā)送周期,定時休眠,待喚醒后重新開始執(zhí)行步驟 I 。
[0089] 注 : 在步驟 (4) 中,相關(guān)進(jìn)程收、發(fā)的所有 IEEE -1588 報文均為 IEEE802.3 的幀格式。
[0090] (5) IPv4 報文的分類處理 :
[0091] 這部分的處理,與圖 2 中序號為 2 的進(jìn)程相對應(yīng)。
[0092] 在所述進(jìn)程 2 中, CPU 需要識別出封裝在 UDP 報文中的 IPv4 幀格式的 IEEE -1588 報文,并以消息郵箱的方式轉(zhuǎn)給 4 號進(jìn)程,將其余報文轉(zhuǎn)給 18 號進(jìn)程。
[0093] 所述 CPU 在識別待判斷報文是否為 IPv4 幀格式的 IEEE - 1588 報文,是依據(jù)以下幾個判定條件 :
[0094] 1. 所述報文為 UDP 報文。
[0095] 2. 所述報文的目的端口為 319 或 320 。
[0096] 3. 所述報文的目的 IP 為 224.0.0.107 或 224.0.1.129 。
[0097] 當(dāng)所述報文同時滿足以上 3 個條件時,即可判定為 IPv4 幀格式的 IEEE - 1588 報文。
[0098] (6) IPv4 幀格式的 ffiEE - 1588 報文的分類處理 :
[0099] 這部分的處理 , 與圖 2 中序號為 5 ? 7 的進(jìn)程相對應(yīng)。
[0100] 封裝在 IEEE802.3 幀中的 IEEE - 1588 報文的格式定義與封裝在 IPv4 幀中的 IEEE - 1588 報文的格式定義是完全一樣的,因此這部分的處理的流程和判定條件,與上述的步驟 (3) 是一致的。唯一的不同點在于步驟 (3) 中處理的是封裝在 IEEE802.3 幀中的 IEEE - 1588 報文數(shù)據(jù),而本步驟中處理的是封裝在 IPv4 幀中的 IEEE - 1588 的報文數(shù)據(jù)。
[0101] (7) IPv4 巾貞格式的 Sync 、 Followup 、 PdelayReq 和 Announce 報文的發(fā)送處理 :
[0102] 這部分的處理,與圖 2 中序號為 8 ? 10 的進(jìn)程相對應(yīng)。
[0103] 封裝在 IEEE802.3 幀中的 IEEE - 1588 報文的格式定義與封裝在 IPv4 幀中的 IEEE - 1588 報文的格式定義是完全一樣的,因此這部分的處理的流程和判定條件,與上述的步驟 (4) 是一致的,唯一的不同點在于步驟 (4) 中發(fā)送的報文的數(shù)據(jù)是封裝成 IEEE802.3 幀后發(fā)送的,而本步驟中發(fā)送的報文是封裝成 IPv4 幀后發(fā)送的。
SRC= http://www.google.com/patents/CN103532953A
一種基于uCos-II操作系統(tǒng)和lwIP協(xié)議棧的IEEE-1588主站以及基于該主站的報文處理方法
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
