董朝武, 李哲,蒲瑩,鐘啟迪,李明,郝俊芳
(1.國網(wǎng)經(jīng)濟技術(shù)研究院有限公司, 北京市 102209;2.許繼集團有限公司,河南省 許昌市 461000)
在以新能源為主體的新型電力系統(tǒng)構(gòu)建背景下,柔性直流輸電技術(shù)在遠距離清潔能源友好消納,推動雙碳目標實現(xiàn)方面發(fā)揮了重要作用[1-3]??刂票Wo系統(tǒng)是保障柔性直流輸電安全穩(wěn)定運行的關(guān)鍵[4-7]。 柔性直流輸電相較于常規(guī)直流輸電,對控制保護設(shè)備的穩(wěn)定性和可靠性要求更高[8]??刂票Wo設(shè)備應(yīng)具備強大的實時運算和數(shù)據(jù)處理能力,具有更高速度的外部通信接口,能夠適應(yīng)于高溫、高濕的海上風電送出等多種場景[9-10],因此采用了大量具備高速數(shù)據(jù)采集、快速運算處理等特點的高端芯片。 我國柔性直流輸電工程中,控制保護設(shè)備核心元器件所使用的芯片絕大部分為已在電力系統(tǒng)應(yīng)用多年的進口芯片,技術(shù)嚴重受制于國外,迫切需要做好進口芯片與技術(shù)的斷供風險應(yīng)變準備,開展柔性直流輸電控制保護系統(tǒng)芯片的國產(chǎn)化替代工作,保障我國的電力安全[11-12]。
在控制保護系統(tǒng)國產(chǎn)化替代背景下,柔性直流控制保護系統(tǒng)與電子式互感器合并單元高速通信接口相關(guān)的國產(chǎn)化替代,既要滿足高速通信的需求,也要保證與以往系統(tǒng)通信的兼容性。
電子式互感器合并單元的通信協(xié)議通常采用IEC60044-8,該協(xié)議規(guī)定了從互感器到控制保護裝置傳輸?shù)臄?shù)據(jù)格式,物理層采用FT3 幀格式[13],以曼徹斯特編碼(以下簡稱曼碼編碼)方式編碼。 由于常規(guī)直流對采樣速率要求不高,常用的5 Mbit/s、10 Mbit/s、20 Mbit/s 三種通信速率即可滿足通信要求。 而柔性直流輸電中電子式互感器的采集頻率達到100 kHz,必須以40 Mbit/s 的通信速率才可完成完整的數(shù)據(jù)傳輸。
在常規(guī)直流輸電的應(yīng)用中,FT3 解碼算法需要事先指定通信幀的傳輸波特率,由于不同廠家的光接收或發(fā)送器件對光電信號相互轉(zhuǎn)換時對應(yīng)的高低電平的定義存在差異,有可能導(dǎo)致控制保護設(shè)備解碼失敗,因此需要針對每一種傳輸速率及曼碼編碼方式設(shè)計不同的解碼算法,并根據(jù)實際應(yīng)用要求進行選擇或設(shè)置。 適配不同的速率需要重新下載對應(yīng)版本的解碼程序,一方面大大增加了程序的維護難度,另一方面也嚴重影響了工程調(diào)試效率。
本文在國產(chǎn)化柔性直流控制保護系統(tǒng)基礎(chǔ)上,基于國產(chǎn)FPGA 芯片,針對IEC60044-8 中的FT3幀格式,設(shè)計一種解碼方法,可以對輸入光信號的信號特征進行動態(tài)掃描,準確識別光信號波特率及曼碼編碼方式并完成自動調(diào)參,從而在不需要外部干預(yù)的情況下,對符合規(guī)范的不同通信速率及編碼方式的信號進行動態(tài)自適應(yīng)正確解碼。
柔性直流控制保護系統(tǒng)外部通信通常使用的通信協(xié)議為xlinx Aurora、IEC60044-8、TCP/IP 等。對于控制保護系統(tǒng)與電子式互感器合并單元高速通信的國產(chǎn)化替代,xlinx Aurora 協(xié)議通用性不強,僅限于使用xlinx FPGA 器件的裝置,無法實現(xiàn)國產(chǎn)化。 TCP/IP 協(xié)議雖然具有兼容性強、傳輸速率高等特點,但會額外增加電路設(shè)計、程序設(shè)計的復(fù)雜度。 IEC60044-8 的FT3 幀格式具有良好的數(shù)據(jù)完整性,其幀結(jié)構(gòu)使它可用于高速率的多點網(wǎng)絡(luò)同步數(shù)據(jù)鏈接,并且已在電子式互感器合并單元中大量應(yīng)用,因此研究其協(xié)議內(nèi)容并設(shè)計更加通用性的解碼算法,是解決其國產(chǎn)化替代后的兼容性問題的關(guān)鍵。 以下分別從物理層和鏈路層兩方面介紹該通信協(xié)議。
從合并單元到二次設(shè)備之間,通常采用光纖連接傳遞信號[14],并將光線亮定義為傳輸數(shù)據(jù)的“1”位,光線滅定義為傳輸數(shù)據(jù)的“0”位。
信號編碼采用曼徹斯特編碼[15],可以將時鐘信號和數(shù)據(jù)結(jié)合在一起,接收端從信號中分離出時鐘,從而實現(xiàn)對通信過程中收發(fā)雙方的數(shù)據(jù)同步。 正常情況下,二進制“1”被編碼為從低位到高位跳變,二進制“0”被編碼為從高位到低位跳變,這種曼碼編碼方式在本文中也被稱為“正曼碼編碼”,相反的編碼方式在本文中被稱為“反曼碼編碼”。 由于波特率表示單位時間內(nèi)傳送的碼元符號的個數(shù),由此可知,曼碼編碼后的數(shù)據(jù)波特率是編碼前的2 倍。
原始數(shù)據(jù)及經(jīng)過正曼碼編碼、反曼碼編碼后的數(shù)據(jù)如圖1 所示。
圖1 正反曼碼編碼Fig.1 Positive and negative Manchester codes
IEC60044-8 協(xié)議的鏈路層選用FT3 格式,其具有良好數(shù)據(jù)完整性的優(yōu)點,在數(shù)據(jù)傳輸?shù)倪^程中,并不需要二次設(shè)備進行應(yīng)答。
FT3 幀由“幀頭”、“有效負載”、“循環(huán)冗余校驗(cyclic redundancy check, CRC)位”及“空閑位”幾個部分組成,其中“幀頭”為固定的16 進制數(shù)據(jù)0x0564,“有效負載”根據(jù)標準幀和擴展幀的不同分為3 個或者4 個數(shù)據(jù)塊,每個數(shù)據(jù)塊包含8 個16 bit的數(shù)據(jù)。 每個數(shù)據(jù)塊后是一個16 bit 的CRC 位,“空閑位”則是二進制的“1”[16-17]。 為提高通信的可靠性,幀與幀之間應(yīng)至少傳輸70 個“空閑位”[18],以便驅(qū)動接收器為即將來臨的傳輸做準備。 鏈路層的通信數(shù)據(jù)幀組成如圖2 所示,其中空閑位的個數(shù)應(yīng)大于等于70 個。
圖2 鏈路層通信數(shù)據(jù)幀組成Fig.2 The composition of the communication data frames of the link layer
在明確了物理層、鏈路層的編碼方式及幀格式后,即可設(shè)計相應(yīng)的算法實現(xiàn)編解碼。 在對曼碼編碼的數(shù)據(jù)進行解碼的過程中,最終需要從編碼后的數(shù)據(jù)中提取出恢復(fù)時鐘,利用恢復(fù)時鐘與數(shù)據(jù)的同步性恢復(fù)出正確的數(shù)據(jù)。 在對FT3 幀的解碼過程中,傳統(tǒng)的曼碼解碼必須要提前知道編碼數(shù)據(jù)的波特率,并且必須保證從光器件接收并輸入到FPGA 中的曼碼編碼信號為正曼碼,才可以實現(xiàn)正確的解碼。
本文設(shè)計的波特率自動適應(yīng)算法可以在不指定波特率的情況下,對輸入信號進行動態(tài)掃描,根據(jù)輸入信號的特征,再結(jié)合FT3 協(xié)議的幀格式,對輸入信號的波特率、正反曼碼編碼進行自動識別與鎖定,其架構(gòu)設(shè)計如圖3 所示。
圖3 波特率動態(tài)自適應(yīng)解碼流程圖Fig.3 The decoding flow chart for the dynamic baud rate
算法實現(xiàn)的關(guān)鍵為原始數(shù)據(jù)解碼及幀頭檢測。原始數(shù)據(jù)的解碼按照檢測特征點—計算波特率—恢復(fù)時鐘的順序執(zhí)行,任何一個流程的失敗都會返回初始化狀態(tài)重新執(zhí)行解碼流程。 上述流程中,對特征點完成檢測并成功計算出波特率即為波特率動態(tài)自適應(yīng)的過程,也是本算法的核心。 在完成數(shù)據(jù)解碼后,通過幀頭檢測判斷解碼后的數(shù)據(jù)中是否包含協(xié)議中的幀頭,若不包含則對解碼數(shù)據(jù)的極性翻轉(zhuǎn),直到成功提取到幀數(shù)據(jù)。 初始化到成功提取幀數(shù)據(jù)的過程發(fā)生在最初建立通信鏈路的階段,這個過程利用最初幾幀數(shù)據(jù)進行識別并自動調(diào)整參數(shù),完成參數(shù)調(diào)整后即進入正常解碼流程。
曼碼編碼是一種雙向編碼,通過電平的高低轉(zhuǎn)換來表示數(shù)據(jù)“0”或“1”,編碼后波特率將翻倍。 若編碼前信號為連續(xù)的高電平“1”,或者連續(xù)的低電平“0”,將無法對待譯碼信號的波特率信息進行準確判斷,如圖4 所示。
圖4 連續(xù)高低電平可按兩種波特率解碼Fig.4 Schematic diagram of two baud rate decoding for continuous high and low levels
從圖4 中可以看出,對于同樣的波特率為n的待譯碼信號,可以譯碼為波特率為n的信號“11”或者“00”,也可以將其譯碼為波特率為2n的信號“1010”。 因此要從待譯碼的數(shù)據(jù)中恢復(fù)出正確的時鐘信號以及數(shù)據(jù),關(guān)鍵是要識別出波特率并從正確的譯碼起始點位開始解碼。
從上述分析可知,連續(xù)不變原始數(shù)據(jù)經(jīng)過編碼后將發(fā)生失真,無法解碼。 根據(jù)信號特征,若原始信號有變位,變位處的信號經(jīng)過曼碼編碼后其脈沖寬度是非變位處的2 倍,因此可以在信號的解碼過程中,對信號的最寬脈沖寬度和最窄脈沖寬度進行動態(tài)掃描,若最寬脈沖寬度是最窄脈沖寬度的2 倍,則最寬脈沖的中點處即為原始信號跳變的特征點位,即變位點。經(jīng)過動態(tài)掃描并檢測到變位點后,可將該變位點作為一個曼碼編碼位的起點,從而確定出待譯碼的時鐘信號在編碼后數(shù)據(jù)中所處的正確位置,變位點所處位置如圖5 所示。
圖5 變位點在編碼數(shù)據(jù)中的位置Fig.5 The position of the change point in the coded data
在實際工程中,兩幀數(shù)據(jù)之間一般會被全部填充為空閑位,而連續(xù)的空閑位編碼后并不包含變位點。也就是說,動態(tài)掃描變位點的時間長度一定要覆蓋空閑位出現(xiàn)的時間長度。 對于工程中常用的幾種波特率傳輸協(xié)議,根據(jù)一般工況的信號傳輸幀率,即可確定空閑位最多出現(xiàn)的次數(shù),從而確定出動態(tài)掃描變位點所需時間。 在實際應(yīng)用中,可以根據(jù)經(jīng)驗值選擇一段比較長的時間即可。
識別出變位點后,即可恢復(fù)出正確的數(shù)據(jù)編碼時鐘。 使用高頻時鐘對數(shù)據(jù)編碼時鐘進行采樣并計算兩者之間的關(guān)系,即可確定信號的波特率。 為保證波特率可以被正確穩(wěn)定地識別,高頻時鐘的頻率至少應(yīng)為待識別信號編碼時鐘頻率的4 倍。 根據(jù)協(xié)議標準,編碼后信號的上升和下降時間由幅值的10%和90%兩點確定。
在FPGA 中,可以使用鎖相環(huán)模塊來產(chǎn)生高頻時鐘,并依據(jù)算法設(shè)計相應(yīng)的解碼邏輯。 考慮到穩(wěn)定性,FPGA 產(chǎn)生的時鐘頻率不易過高。 以40 Mbit/s波特率曼碼數(shù)據(jù)為例,使用鎖相環(huán)產(chǎn)生160 MHz 高頻采樣時鐘進行識別即可,如圖6 所示。
圖6 160 MHz 采樣時鐘下40 Mbit/s 波特率信號的采樣落點Fig.6 Sampling point diagram of 40 Mbit/s baud rate signal under 160 MHz sampling clock
從圖6 中可以看出,在理想的信號質(zhì)量下,160 MHz時鐘在40 Mbit/s 波特率編碼后的數(shù)據(jù)含有變位點的寬脈沖處共有8 個采樣落點,若考慮到信號波動產(chǎn)生的誤差,可采用式(1)、(2)計算得到。 實際檢測出采樣落點個數(shù)在7 ~9 之間即可判斷出待譯碼數(shù)據(jù)為40 Mbit/s波特率。
式中:N為理想信號在160 MHz 時鐘下的理論采樣落點數(shù);Nmin、Nmax為考慮信號波動的最小、最大落點數(shù)。
根據(jù)公式(1)、(2)可計算出4 種常用波特率對應(yīng)采樣落點的個數(shù),如表1 所示。
表1 160 MHz 采樣時鐘下常用波特率的采樣落點數(shù)Table 1 The number of sampling points of common baud rate under 160 MHz sampling clock
正反曼碼的自適應(yīng)可以解決由于不同廠家協(xié)議、不同硬件之間的差異引起曼碼編碼正反特性與標準不同而導(dǎo)致的通信失敗。 通常,曼碼編碼后的數(shù)據(jù)的正反特性不影響信號編碼時鐘等特征的動態(tài)掃描及恢復(fù),在成功恢復(fù)出時鐘并完成波特率識別,利用該恢復(fù)時鐘解碼得到解碼后的數(shù)據(jù)后,需要對已恢復(fù)數(shù)據(jù)的正反性做出正確判斷。
根據(jù)前文所述,FT3 幀由幀頭“0x 0564”、有效負載組成,幀與幀之間填充盡可能多的空閑位。 實際應(yīng)用中是通過識別幀頭來開始一幀數(shù)據(jù)提取的,如果數(shù)據(jù)的正反性發(fā)生翻轉(zhuǎn),最顯著的特征是無法在正確的位置檢測到幀頭, 例如原始數(shù)據(jù)中若包含“0xFA9B”,經(jīng)過翻轉(zhuǎn)后也將會被識別為幀頭,因此僅根據(jù)解碼后的數(shù)據(jù)是否包含幀頭并不能對數(shù)據(jù)的正反性做出正確的判斷。
數(shù)據(jù)的正反性發(fā)生翻轉(zhuǎn)的另外一個重要特征是所有恢復(fù)數(shù)據(jù)中的空閑位全部發(fā)生翻轉(zhuǎn)。 由于正確的空閑位為“1”,因此恢復(fù)的數(shù)據(jù)中將出現(xiàn)大量的“0”。 因此可以通過檢測恢復(fù)數(shù)據(jù)中“0”的個數(shù)來判斷是否發(fā)生數(shù)據(jù)正反性翻轉(zhuǎn)。
有效負載由8 個16 bit 的數(shù)據(jù)和一個16 bit 的CRC組成,若不考慮FT3 有效負載的實際傳輸值,假設(shè)傳輸?shù)? 個16 bit 數(shù)據(jù)全部為0,根據(jù)CRC 的計算規(guī)則,此時的CRC 為0xFFFF,一個數(shù)據(jù)集最多出現(xiàn)128 個連續(xù)的“0”位。 因此,在首次識別幀頭的過程中,把數(shù)據(jù)當作曼碼處理,若檢測到有超過連續(xù)128 個“0”位的出現(xiàn),即可對恢復(fù)數(shù)據(jù)進行翻轉(zhuǎn),重新檢測幀頭。
一般情況下,信號在傳輸?shù)倪^程中,其傳輸數(shù)據(jù)的曼碼正反不會再次發(fā)生翻轉(zhuǎn),因此當檢測到空閑位后緊跟的幀頭后,即可將翻轉(zhuǎn)與否進行鎖定,認為其不再發(fā)生變化。
在完成波特率識別及正反曼碼鎖定后,即可對數(shù)據(jù)進行正確解碼,后續(xù)數(shù)據(jù)的恢復(fù)及CRC 校驗等操作可按照GB/T 20840.8—2007[13]描述的方式進行。
實驗過程中,采用IEC60044-8 專用測試儀模擬信號發(fā)送,對本文設(shè)計的波特率動態(tài)自適應(yīng)解碼算法進行驗證。 模擬信號的報文類型選擇IEC60044-8 國網(wǎng)擴展幀,采樣頻率配置為40 點/周波。
驗證本文算法的解碼裝置使用基于HCM5000G系統(tǒng)的光接收板卡SORG,其中解碼芯片為國產(chǎn)化FPGA,實驗通過信號監(jiān)視工具對數(shù)據(jù)接收后的解碼情況進行監(jiān)視。 在信號監(jiān)視圖中,receive_data 表示接收并解碼得到的傳輸數(shù)據(jù),clk_gen 表示從傳輸數(shù)據(jù)中獲得的恢復(fù)時鐘,BAUD 表示自適應(yīng)解碼算法自動識別到的波特率,Manchester_polarity 表示自適應(yīng)解碼算法自動識別到的信號正反曼碼編碼方式。
整個實驗在保證光接收板卡不掉電不重啟的情況下,通過調(diào)整測試儀發(fā)出信號的光波特率,使用曼碼編碼,分別以5 Mbit/s、10 Mbit/s、20 Mbit/s和40 Mbit/s 波特率發(fā)送數(shù)據(jù)至光接收板卡SORG,使用專用工具監(jiān)視SORG 板卡中FPGA 解碼得到的信號,如圖7 所示。 從圖7 中可以看出,使用本文提出的解碼算法,可以成功恢復(fù)時鐘信號并完成同步,能夠?qū)Σ煌ㄌ芈蔬M行準確識別,實現(xiàn)數(shù)據(jù)的正確接收及解碼。
圖7 不同波特率下的監(jiān)視信號Fig.7 Monitoring signals at different baud rates
調(diào)整測試儀,在40 Mbit/s 波特率下,通過對發(fā)送的光信號電平取反來模擬反曼碼編碼的情況,得到的信號解碼如圖8 所示。 從圖8 中可以看出,被監(jiān)視信號Manchester_polarity 改變?yōu)楦唠娖?并成功完成了數(shù)據(jù)接收,實現(xiàn)了對反曼碼編碼信號的準確識別及解碼。
圖8 40 Mbit/s 反曼碼編碼的監(jiān)視信號Fig.8 Monitoring signals at 40 Mbit/s baud rates with negative Manchester encoding
經(jīng)過測試,使用本文所述的解碼算法,得到的監(jiān)視信號與預(yù)期結(jié)果吻合,實現(xiàn)了對不同波特率和正反曼碼編碼信號的動態(tài)自適應(yīng),完成了數(shù)據(jù)的正確接收及解碼。
柔性直流輸電控制保護系統(tǒng)的國產(chǎn)化替代中,對于電子式互感器合并單元的通信速度要求很高,同時需要考慮與原有系統(tǒng)的兼容性問題。 傳統(tǒng)的IEC60044-8 通信解碼算法,無法實現(xiàn)信號的自動識別及解碼,增加了國產(chǎn)化替代的難度。 為了解決這個問題,本文設(shè)計了一種波特率動態(tài)自適應(yīng)算法,通過對輸入信號進行動態(tài)掃描,自動識別出信號的波特率并調(diào)整相應(yīng)的參數(shù),完成正反曼碼的識別及正確接收和解碼。
在實際工程中,使用本文設(shè)計的解碼算法可以實現(xiàn)信號即通即用,無需額外配置,可以解決柔性直流系統(tǒng)國產(chǎn)化替代中的兼容性問題,對于全面提升柔性直流輸電控制保護系統(tǒng)自主化、智能化程度,推進柔性直流系統(tǒng)國產(chǎn)化進程有重要意義,為我國直流輸電系統(tǒng)的安全運行提供堅強保障。