陳凌宇, 楊立志, 趙東林, 朱文亮
(1.國防科技大學 智能科學學院,湖南 長沙 410073;2.華中科技大學 機械科學與工程學院,湖北 武漢 430074)
現(xiàn)場總線作為可編程控制系統(tǒng)的“神經(jīng)”,是實現(xiàn)系統(tǒng)主從站及末端設備數(shù)據(jù)信息傳遞的重要介質。在數(shù)控機床、機器人、醫(yī)療設備等對控制系統(tǒng)性能要求較高的領域中,現(xiàn)場總線的數(shù)據(jù)傳輸實時性和同步性是保證系統(tǒng)控制速度和精度的關鍵[1-2]。以太網(wǎng)總線是現(xiàn)場總線的一種,憑借其數(shù)據(jù)傳輸率高、數(shù)據(jù)吞吐量大等優(yōu)勢成為工業(yè)現(xiàn)場總線的發(fā)展趨勢[3-4]。目前,國內大多數(shù)可編程控制系統(tǒng)采用EtherCAT,POWERLINK,PROFINET等國外實時以太網(wǎng)總線,對工業(yè)控制系統(tǒng)的信息安全造成了較大的隱患。因此,設計和開發(fā)具有高精度同步性能的自主可控實時以太網(wǎng)現(xiàn)場總線成為我國制造業(yè)發(fā)展的迫切需求。
以IEEE802.3有線以太網(wǎng)物理層和鏈路層標準為基礎,設計并集成符合工業(yè)自動化控制過程中數(shù)據(jù)傳輸特點的鏈路層協(xié)議(以下簡稱協(xié)議),是實現(xiàn)以太網(wǎng)總線通信的有效方法。以EtherCAT,PROFINET IRT,SERCOS 等為代表的實時以太網(wǎng)總線,通過對以太網(wǎng)數(shù)據(jù)鏈路層的MAC子層數(shù)據(jù)傳輸方法的定義,實現(xiàn)了數(shù)據(jù)傳輸?shù)膶崟r性[5-6]。國內實時以太網(wǎng)總線多采用FPGA+PHY的硬件結構,將協(xié)議以IP核的形式集成在FPGA中實現(xiàn)鏈路數(shù)據(jù)的傳輸控制。如NCUC-bus (GB/T29001)實時以太網(wǎng)總線[7]。鏈路層數(shù)據(jù)傳輸方法是協(xié)議的重要內容,大量研究對系統(tǒng)周期數(shù)據(jù)[8]、非周期數(shù)據(jù)[9]的實時傳輸調度問題進行優(yōu)化,以提高通信效率。此外,在協(xié)議中集成以太網(wǎng)時鐘同步策略是保證系統(tǒng)進行高速協(xié)同控制的關鍵。多數(shù)研究基于IEEE1588精確時鐘同步協(xié)議,主要思想是通過時間戳計算傳播延時和時間偏移[10-11]。PARK等提出了一種通過估計總線上每個節(jié)點時間漂移的大小和符號并進行補償?shù)姆绞剑@著降低了EtherCAT總線的同步誤差[12]。CHOI等提出了一種分布式異步時鐘同步協(xié)議,利用網(wǎng)絡中各節(jié)點的相對時間信息對時間誤差進行補償,提高了時間收斂速度[13]。EXEL等針對分布式時鐘中線路傳輸不對稱的問題,提出了基于線交換和高精度時間戳的方法,可將時鐘偏移減小到120 ps[14],但是這種方法較為復雜且需要硬件支持。
本文以NCUC線型級聯(lián)網(wǎng)絡拓撲架構為基礎,對NCUC總線的系統(tǒng)構成及原理進行了全面的分析。在此基礎上,對工業(yè)控制系統(tǒng)時間敏感與非敏感數(shù)據(jù)傳輸機制進行分析與設計,形成了各類數(shù)據(jù)的通道傳輸機制,并提出了一種通道映射方法,提升了數(shù)據(jù)傳輸效率。針對系統(tǒng)時鐘同步問題,分析了以太網(wǎng)總線通信延時的原因。通過建立時鐘補償模型,采用時間戳的方式對總線各節(jié)點時鐘進行測量和補償,形成了基于分布式時鐘的以太網(wǎng)總線同步方法。最后,以國產(chǎn)FPGA為平臺構建實驗平臺,對總線通信性能進行了測試,驗證了所提出的實時以太網(wǎng)控制器的實時性與同步性。
在總線式可編程控制系統(tǒng)中,主站與各功能從站通過現(xiàn)場總線相連以實現(xiàn)主從設備之間的數(shù)據(jù)交換。由于線型總線的同步性能優(yōu)于其他以太網(wǎng)總線,集成NCUC協(xié)議的控制器芯片(以下簡稱NCUC控制器)采用線型級聯(lián)的方式嵌入各從站控制器中。通過對以太網(wǎng)物理層數(shù)據(jù)流的讀寫控制和鏈路層數(shù)據(jù)處理,實現(xiàn)了在線型級聯(lián)網(wǎng)絡拓撲結構下主站與各從站的高速、同步通信功能[15]。拓撲結構如圖1所示,主站通過以太網(wǎng)接口將網(wǎng)絡數(shù)據(jù)發(fā)送至從站1的端口1,NCUC控制器對數(shù)據(jù)進行處理后由端口2發(fā)出;從站2的端口1接收到從站1發(fā)出的數(shù)據(jù)后,通過端口2發(fā)送至下一從站;直到最后一個從站N接收到數(shù)據(jù)后,直接通過端口2返回至主站。
圖1 NCUC線型級聯(lián)網(wǎng)絡拓撲架構原理Fig.1 Schematic diagram of NCUC linear cascade network topology
在可編程控制系統(tǒng)中,主站多采用高性能工業(yè)計算機。通過改造網(wǎng)口協(xié)議,可靈活地管理整個實時通信網(wǎng)絡。而從站需要將NCUC控制器集成在嵌入式電路板中,通過搭建以太網(wǎng)相關的物理層、鏈路層相關電路來實現(xiàn)網(wǎng)絡通信。
從站的硬件結構原理如圖2所示。網(wǎng)絡數(shù)據(jù)傳輸以工業(yè)以太網(wǎng)5類雙絞線為介質,通過從站M12工業(yè)連接器1進入從站。網(wǎng)絡變壓器采用普斯電子的HX_1188_NL,用于實現(xiàn)信號隔離,保護內部電路安全。隔離后的網(wǎng)絡信號采用微芯公司百兆以太網(wǎng)收發(fā)器LAN8710Ai進行收發(fā)處理,與NCUC控制器通過MII(Medium Independent Interface)接口相連。NCUC控制器采用國產(chǎn)京微齊力公司的HME-P1P060N0TF784C(以下簡稱P1)大容量FPGA,對PHY接收數(shù)據(jù)進行協(xié)議棧處理。信息處理結束后,NCUC控制器將待發(fā)送數(shù)據(jù)通過PHY收發(fā)器2、隔離變壓器2、M12工業(yè)連接器2發(fā)送至以太網(wǎng)總線。此外,從站應用MCU為京微齊力SoC芯片HMEM7A12N0F484I7(以下簡稱M7)。其中,集成了不同的應用層功能,主要實現(xiàn)數(shù)字量IO、模擬量IO、伺服控制和通信轉換等。NCUC控制器與應用MCU之間通過片上高速PDI接口實現(xiàn)數(shù)據(jù)傳輸。
圖2 從站硬件結構原理Fig.2 Schematic diagram of slave hardware
NCUC控制器中集成鏈路層數(shù)據(jù)通信傳輸、協(xié)議解析、網(wǎng)絡冗余和時鐘同步等功能,是實現(xiàn)總線傳輸協(xié)議的核心器件。此外,NCUC控制器還提供片間PDI異步通信接口,便于實現(xiàn)應用層功能的MCU訪問。圖3顯示了集成NCUC控制器的內部功能結構。
圖3 NCUC控制器功能結構原理Fig.3 Schematic diagram of functional structure of NCUC controller
NCUC控制器中,兩個獨立的NMI接口模塊對物理層PHY收發(fā)器進行讀寫操作。NMI接口模塊分別與兩個具有時間戳與計數(shù)功能的端口相連,各端口在網(wǎng)絡數(shù)據(jù)讀寫時,將時間戳信息寫入網(wǎng)絡幀,這對同步控制算法的實現(xiàn)起到了重要的作用。接收到的網(wǎng)絡幀信息根據(jù)幀類型的不同,由數(shù)據(jù)處理模塊進行透傳、讀取數(shù)據(jù)、寫入數(shù)據(jù)和協(xié)議棧等操作。NCUC協(xié)議相關的配置以及收發(fā)數(shù)據(jù)存放在寄存器區(qū)間內。為提高數(shù)據(jù)處理速度,在數(shù)據(jù)處理模塊和寄存器區(qū)間設置數(shù)據(jù)緩沖模塊。設計并行異步通信接口,以滿足外部MCU控制器對內部寄存器中NCUC配置區(qū)、接收數(shù)據(jù)區(qū)和發(fā)送數(shù)據(jù)區(qū)的操作。在NCUC控制器接收到有效的通信數(shù)據(jù)后,中斷產(chǎn)生模塊將立刻產(chǎn)生IRQ跳沿信號,表明通信數(shù)據(jù)接收成功。同步產(chǎn)生模塊則會根據(jù)各從站同步時間補償?shù)牟煌M行延時,當所有從站都接收到數(shù)據(jù)后同步產(chǎn)生SYNC跳沿。MCU可根據(jù)SYNC信號進行精準的同步控制。
在NCUC控制器中,寄存器是實現(xiàn)NCUC通信管理、同步設置及數(shù)據(jù)交換的重要模塊。主站通過網(wǎng)絡對從站寄存器進行操作,從站則通過PDI數(shù)據(jù)接口對寄存器進行訪問。所以,寄存器是連接主站與從站的數(shù)據(jù)存儲橋梁。寄存器模塊由64 kB空間的雙口RAM構成,其中2 kB為管理空間,用于通信和同步相關配置、管理和監(jiān)控;另外62 kB為數(shù)據(jù)空間,用于存放接收的網(wǎng)絡數(shù)據(jù)和需要發(fā)送的數(shù)據(jù)。寄存器的空間結構如表1所示。
表1 NCUC控制器內部寄存器存儲空間說明Tab.1 Description of internal memory storage space of NCUC controller
實時以太網(wǎng)數(shù)據(jù)以標準IEEE802.3以太網(wǎng)幀為傳輸載體,通過對標準以太網(wǎng)幀結構的重定義形成了一種高效傳輸?shù)膸Y構。NCUC網(wǎng)絡幀結構如圖4所示。保留長度為14字節(jié)的IEEE802.3標準以太網(wǎng)幀頭中目標的MAC地址和源MAC地址信息,將2字節(jié)的幀類型寫入固定值0x8888,該幀為NCUC網(wǎng)絡幀。將標準以太網(wǎng)幀46-1500字節(jié)的數(shù)據(jù)區(qū)分為2字節(jié)的NCUC幀頭區(qū)和44-1498字節(jié)的數(shù)據(jù)區(qū)。其中,NCUC幀頭由索引值、版本號、循環(huán)圈數(shù)和循環(huán)標志位構成。此外,NCUC數(shù)據(jù)區(qū)可根據(jù)定義分為若干個報文區(qū)間,每個NCUC報文對應總線上某個從站的下發(fā)數(shù)據(jù)或是上傳數(shù)據(jù)。報文數(shù)據(jù)區(qū)間可根據(jù)傳輸數(shù)據(jù)大小自由定義數(shù)據(jù)長度。如果NCUC幀頭與報文總長度小于46字節(jié),則需要在報文之后補0~46字節(jié)。最后,將標準以太網(wǎng)幀4字節(jié)的FCS校驗作為幀尾。
圖4 NCUC網(wǎng)絡幀結構定義Fig.4 Definition of NCUC network frame structure
網(wǎng)絡幀提供了寄存器訪問、通道地址訪問、通道映射、產(chǎn)生時間戳、同步/復位幀、32位時鐘補償,以及64位時鐘補償7種類型的報文。主站可通過網(wǎng)絡幀的功能靈活地將所需的報文組幀,形成不同功能的網(wǎng)絡幀。各報文功能如下:
(1)寄存器訪問報文:用于讀寫寄存器單元。
(2)通道地址訪問報文:按通道地址的方式讀寫數(shù)據(jù)傳輸通道。
(3)通道映射訪問報文:采用通道映射的方式對所映射的通道進行讀寫。
(4)產(chǎn)生時間戳報文:使各從站NCUC控制器產(chǎn)生收發(fā)幀的時間戳。
(5)同步/復位幀報文:用于啟動或復位同步幀命令。
(6)32位時鐘補償報文:進行精度為32位的分布式時鐘補償。
(7)64位時鐘補償報文:進行精度為64位的分布式時鐘補償。
數(shù)據(jù)通道是網(wǎng)絡數(shù)據(jù)傳輸?shù)闹匾绞?,通過對傳輸數(shù)據(jù)結構、類型和長度等條件的設置,可實現(xiàn)通信數(shù)據(jù)塊的高速傳輸。在實際應用中,通信數(shù)據(jù)根據(jù)其用途可分為多種,這些數(shù)據(jù)對通信傳輸?shù)囊笠泊嬖诓町悾?]。針對可編程控制系統(tǒng)的數(shù)據(jù)傳輸需求,在NCUC實時以太網(wǎng)控制器中設計服務數(shù)據(jù)、過程數(shù)據(jù)和FIFO數(shù)據(jù)通道。
服務數(shù)據(jù)通道主要用于傳輸協(xié)議或非實時數(shù)據(jù)。協(xié)議數(shù)據(jù)除了所傳輸?shù)臄?shù)據(jù)內容外,還集成了握手、應答等協(xié)議內容。在數(shù)據(jù)傳輸過程中,對主從站數(shù)據(jù)問答的有效性提出很高的要求,但對時間并不敏感。通過操作寄存器中服務數(shù)據(jù)通道區(qū)(0x0180-0x01FF),可在寄存器62 kB的通道數(shù)據(jù)區(qū)中開辟一個RAM塊,作為服務數(shù)據(jù)通道。為保證服務通道中協(xié)議數(shù)據(jù)傳輸?shù)目煽啃?,設計如圖5所示的狀態(tài)轉移模型。在處于狀態(tài)0時,通道中無可讀的最新數(shù)據(jù),產(chǎn)生寫中斷信號等待數(shù)據(jù)寫入。主站/從站根據(jù)寫中斷信號發(fā)送協(xié)議數(shù)據(jù),向通道中寫入第一字節(jié)數(shù)據(jù)后,通道狀態(tài)切換至狀態(tài)1,表示主站/從站正在寫入。此時,寫中斷標志位復位,不再接收其他寫操作。當主站/從站協(xié)議數(shù)據(jù)依次寫入通道后,通道狀態(tài)跳轉至狀態(tài)2并產(chǎn)生讀中斷信號,表示此時數(shù)據(jù)已經(jīng)完全寫入,從站/主站可以進行數(shù)據(jù)讀取。從站/主站讀取第一字節(jié)后,通道狀切換至狀態(tài)3并清除讀中斷標志,不再允許其他讀操作讀取通道數(shù)據(jù)。從站/主站逐字節(jié)讀完通道中所有數(shù)據(jù)后,通道跳轉至狀態(tài)0,產(chǎn)生寫中斷信號并等待下一次寫入。這種依次讀寫的通道操作模式,雖然占用了通道數(shù)據(jù)傳輸?shù)臅r間資源,但可保證協(xié)議數(shù)據(jù)在主從站之間有效、可靠的傳遞。
圖5 服務數(shù)據(jù)通道狀態(tài)轉移模型Fig. 5 Service data channel state transition model
過程數(shù)據(jù)通道主要用于實時數(shù)據(jù)傳輸。實時數(shù)據(jù)是自動控制過程中產(chǎn)生的指令及反饋信息,這些數(shù)據(jù)會隨時間周期不斷的更新。通信數(shù)據(jù)使用方主要關心的是數(shù)據(jù)實時性。因此,數(shù)據(jù)的周期性更新是保證實時性的重點。通過配置寄存器的過程數(shù)據(jù)通道區(qū)(0x0200-0x02BF),可在通道數(shù)據(jù)區(qū)中開辟相同的3個連續(xù)的RAM塊,作為過程數(shù)據(jù)通道。過程數(shù)據(jù)通道狀態(tài)轉移模型如圖6所示。通道的寫操作和讀操作分別針對待寫區(qū)和讀出區(qū)進行,中間的緩存區(qū)用于緩存數(shù)據(jù)。這種讀寫區(qū)域分離的方式,使通道永遠處于寫入狀態(tài),保證了周期性數(shù)據(jù)寫入的有效性。待寫區(qū)數(shù)據(jù)寫入完成后,產(chǎn)生讀中斷信號。此時,讀出區(qū)由緩存區(qū)數(shù)據(jù)填充,保證讀出的數(shù)據(jù)為最新寫入的數(shù)據(jù)。如果上次數(shù)據(jù)尚未讀出完成就寫入了新的數(shù)據(jù),則會導致上次數(shù)據(jù)被本次數(shù)據(jù)覆蓋。這種讀寫區(qū)域分離的過程通道操作模式,能夠保證實時數(shù)據(jù)的高效傳輸,但需要對讀寫操作時序進行一定的約束。
圖6 過程數(shù)據(jù)通道狀態(tài)轉移模型Fig.6 Transition model of process data channel state
制造裝備智能化對圖像、視頻等大容量數(shù)據(jù)的實時傳輸提出了要求。由于數(shù)據(jù)容量極大,一般的總線數(shù)據(jù)傳輸通道可能無法進行完整存儲。設計FIFO數(shù)據(jù)通道,允許設備同時對其進行讀寫,極大地節(jié)省了數(shù)據(jù)的緩存空間。配置寄存器FIFO數(shù)據(jù)通道區(qū)(0x02C0-0x02FF),可在通道數(shù)據(jù)區(qū)中開辟1個盡可能長的RAM塊(大于1 kB),作為FIFO通道。其狀態(tài)轉移模型如圖7所示。狀態(tài)0表示當前通道為空狀態(tài),僅允許數(shù)據(jù)寫入。只要通道被寫入數(shù)據(jù),則通道狀態(tài)跳轉到狀態(tài)1并置位讀中斷,表示通道為非空非滿狀態(tài),可讀可寫。在狀態(tài)1時,如果通道數(shù)據(jù)被讀空則通道狀態(tài)回到狀態(tài)0并復位讀中斷;若通道被寫滿,則跳轉至狀態(tài)2并復位寫中斷,表示通道已滿不可寫入。此時,只要存在數(shù)據(jù)讀出,則置位寫中斷并跳轉至狀態(tài)1,可讀可寫。
圖7 FIFO通道狀態(tài)轉移模型Fig.7 Transition model of FIFO channel state
通道機制有效地保證了實際系統(tǒng)中各類型數(shù)據(jù)傳輸?shù)目煽啃?,同時,也降低了通信時有效數(shù)據(jù)的傳輸效率。在總線系統(tǒng)中,主站與從站都存在數(shù)據(jù)通信需求,這表明每個從站至少需要開辟1個通道進行數(shù)據(jù)讀取或數(shù)據(jù)發(fā)送。而每開辟1個通道,主站需要增加一個報文,從而增加了報頭和應答這類無效數(shù)據(jù),如圖4所示。無效數(shù)據(jù)加重了網(wǎng)絡傳輸?shù)臄?shù)據(jù)量,降低了有效數(shù)據(jù)的傳輸效率。
本文采用通道映射的方式,將同類型的報文進行合并,共用一個報頭和一個應答中斷。主站將各從站的通道數(shù)據(jù)在整個報文中的映射信息,如映射編號、起始地址、通道號、數(shù)據(jù)長度、通道內起始地址等信息保存。每個從站則將自身相關的映射信息保存在NCUC控制器中。如此,主從站可以根據(jù)已有的映射信息,讀寫合并報文的網(wǎng)絡幀數(shù)據(jù)。
圖8 通道映射工作原理Fig.8 Working principle of channel mapping
圖8顯示了通道映射的工作原理。在一主多從的總線式系統(tǒng)中,每一網(wǎng)絡幀需要裝載主站對各個從站的發(fā)送數(shù)據(jù)以及各個從站返回至主站的狀態(tài)信息。將主站下發(fā)到N個從站的N個報文合并為一個讀映射報文,從站所有上傳報文合并為一個寫映射報文,讀寫映射報文按圖4中通道映射報文結構進行組合。在收發(fā)網(wǎng)絡數(shù)據(jù)幀時,通過映射編號、映射啟??刂?、讀寫控制、報文內起始地址、通道號、數(shù)據(jù)長度、通道內起始地址,使映射過程有效。具體操作過程如下:
(1)從站根據(jù)映射編號在網(wǎng)絡幀中尋找符合此編號的報文,在映射器啟動的情況下進行讀寫控制判斷。若讀寫操作為讀,則從網(wǎng)絡幀中讀取數(shù)據(jù)至通道;若為寫,則需要將對應通道的內容寫入報文相應位置。
(2)在讀寫控制為讀時,從站根據(jù)報文內起始地址、數(shù)據(jù)長度參數(shù)找到報文中具體的待讀數(shù)據(jù)區(qū)域,讀出后順序寫入相應通道號中以通道內起始地址開始的區(qū)域。
(3)在讀寫控制為寫時,從站根據(jù)通道號、通道內起始地址、數(shù)據(jù)長度參數(shù)將對應通道中的數(shù)據(jù)取出,并寫入與映射編號、報文內起始地址相應的報文區(qū)域。
通道映射的方式,可在多類數(shù)據(jù)同時傳輸時極大地提高通信效率。假設系統(tǒng)中有N個從站,每個從站讀通道和寫通道數(shù)據(jù)長度為R_len和S_len字節(jié)。根據(jù)NCUC以太網(wǎng)幀結構,采用通道地址訪問時通信效率ηc為:
由式(1)和式(2)可知,無論從站個數(shù)多少,ηm始終大于ηc,且從站數(shù)量越多,則通道映射機制的通信效率越高。例如,采用CANopen應用層協(xié)議,每個從站開辟4組PDO,其讀寫通道數(shù)據(jù)長度各為40字節(jié)。當網(wǎng)絡幀數(shù)據(jù)長度達到規(guī)定極限時,通道地址訪問通信效率為67.7%,而映射通信效率為96.2%。
在線型級聯(lián)的網(wǎng)絡拓撲結構中,主站發(fā)送的通信數(shù)據(jù)幀需要依次經(jīng)過各從站,導致各從站接收同一通信數(shù)據(jù)幀存在延時[10]。圖9顯示了兩個相鄰的從站通信延時原理。數(shù)據(jù)幀傳輸?shù)竭_從站A的端口0接收端P0_RX,NCUC控制器對數(shù)據(jù)幀進行讀取并由端口1發(fā)送端P1_TX發(fā)出。由于通信線纜長度對通信數(shù)據(jù)傳輸?shù)难訒r,經(jīng)過線間延時后從站B的P0_RX接收到數(shù)據(jù)幀。因此,從站A與從站B的端口0接收到數(shù)據(jù)幀的時間延時為delayLAB。其中,包括從站A開始處理P0_RX數(shù)據(jù)到P1_TX發(fā)送時間delayCA01,以及從站AB之間通信線纜的線間傳輸延時delay-LAB。另外,數(shù)據(jù)幀由系統(tǒng)最后一個從站返回后由從站B的P1_RX接收,經(jīng)過從站B的站內處理延時delayCB10和線間傳輸延時delayLBA后至從站A的P1_RX接口。
圖9 相鄰的兩個從站間通信延時示意圖Fig. 9 Schematic diagram of communication delay between two adjacent slave stations
以上分析表明,通信延時原因包括數(shù)據(jù)幀在通信介質中的傳輸時間造成的線間傳輸延時,以及各從站對數(shù)據(jù)幀的處理轉發(fā)造成的站內處理延時。
準確的測量線間傳輸延時和站內處理延時時間并進行補償是實現(xiàn)從站同步的基本思想。但在總線式系統(tǒng)中,由于各從站上電時間、時鐘源都存在偏差,無法直接地測量通信延時[16]。這里以主站相連的第一地從站為參考從站,測量各從站與參考從站的通信時間延時,作為各從站延時的補償值。具體測量形式是通過在數(shù)據(jù)幀中加入時間戳報文的方式,記錄數(shù)據(jù)幀在各從站端口接收與發(fā)送的本地時間,以及數(shù)據(jù)幀在從站內部處理時間,對通信延時進行測量。
建立線型級聯(lián)網(wǎng)絡傳輸延時模型如圖10所示。時間戳報文在抵達從站后以該從站本地時鐘為基準,記錄抵達接收端口的時間和離開發(fā)送端口的時間,為通信延時測量提供重要依據(jù)。因此,定義變量tNR0,tNR1分別為包含時間戳報文的通信幀抵達從站N接收端口0和端口1的時間,tNT1,tNT0分別為通信幀離開端口T1和T0的時間。通信幀在從站N內正向傳輸?shù)恼緝忍幚硌訒r為D_CNP,反向站內延時為D_CNR。通信幀由從站A端口發(fā)出,到從站B端口接收的線間傳輸延時為D_LAB。通過模型分析,分別對各從站時鐘的線間傳輸延時和站內處理延時進行計算和補償。
圖10 線型級聯(lián)網(wǎng)絡的傳輸延時模型Fig.10 Transmission delay model of linear concatenated network
4.2.1 線間傳輸延時計算
從站之間通信雙絞線的長度和環(huán)境條件一致,因此可假設通信線纜上往返傳輸延時相等。則對于相鄰的從站0和從站1,有如下關系:
由于時間戳報文在各從站之間記錄的時間參考時鐘不同,假設從站1與從站0的時間偏差為offset10,則從站0和從站1的線間傳輸延時可表示為:
將式(3)代入式(4),則可得到從站0與從站1的線間傳輸延時為:
一般地,對于一個有N+1個從站的系統(tǒng),從站i到參考從站(從站0)的線間延時可以通過計算從站0到從站i的所有線間傳輸延時總和,即:
其中:i為大于或等于1的正整數(shù),j=i-1。
4.2.2 站內處理延時計算
當通信幀抵達從站時,接收端PHY的讀信號有效時,NCUC控制器以本地時鐘開始計數(shù),直到發(fā)送端PHY的寫信號有效為止。根據(jù)通信幀延時處理模型,任意從站i的站內處理延時可計算為:
一般來說,通信幀由從站N返回至主站的過程,各從站采用轉發(fā)的處理方式并不進行有效的數(shù)據(jù)處理,故進行補償時僅考慮D_CiP。在一個有N+1個從站的系統(tǒng)中,從站i到參考從站的所有站內延時D_C0i為:
根據(jù)式(6)、式(8)的計算結果,容易得到從站i與參考從站的通信延時。主站則可以通過寄存器訪問報文將各從站的線間傳輸延時和站內處理延時寫入各從站寄存器中,用于補償通信幀延時。
前文以參考從站時鐘為基準,采用時間戳報文對各從站通信延時進行了測量和補償。但是,這種基于各從站本地時鐘的測量結果會因各從站時鐘源的偏差導致誤差。要達到各從站的高精度同步,必須對各從站時鐘進行同步處理。
由于各從站上電時間和時鐘源的差異,各從站的實際時間變化如圖11所示[12]。在任意時間t0時刻,本地時鐘和參考時鐘的差異為Coffset。顯然,Coffset是隨時間變化的函數(shù),本文所提出的分布式時鐘同步方法則是以較短的周期實時測量Coffset,并對本地時鐘進行補償,使所有從站的時鐘向參考時鐘看齊。
圖11 時鐘模型Fig.11 Clock model
將圖11中的時鐘模型分為若干個相等的Δt區(qū)間,如果區(qū)間足夠小,則可將時鐘模型的本地時鐘與參考時鐘變換曲線近似為直線。根據(jù)直線的函數(shù)表達式可知,造成兩條直線差異的影響因素為變化率和偏移值,在時鐘模型中分別成為時鐘漂移和時鐘偏移。因此,建立圖12所示的時鐘補償模型,周期性地對本地時鐘進行漂移補償和偏移補償,使本地時鐘與參考時鐘曲線重合,從而達到時鐘同步的目的。
圖12 時鐘補償模型Fig.12 Clock compensation model
4.3.1 時鐘偏移補償
根據(jù)式(4),從站1與從站0的時鐘時間偏差Coffset10可以通過時間戳的方式進行測量得到:
將式(9)擴展到任意相鄰的兩個從站,即從站i和從站j的時間偏差Coffsetij為:
由于從站0為參考從站,則從站1的本地時鐘與參考時鐘的偏差為Coffset10。一般地,在N+1個從站系統(tǒng)中,從站i的本地時鐘與參考時鐘偏差可表示如下:
4.3.2 時鐘漂移補償
在線型級聯(lián)網(wǎng)絡中,本地時鐘與參考時鐘的變化率無法直接測量,但通過二者的時鐘偏移值Coffset的變化率可以間接地補償時鐘漂移[10]。
假設在圖12的時鐘補償模型中,本地時鐘c1(t)和參考時鐘c2(t)的表達式如下:
其中:k1和k2分別為本地時鐘和參考時鐘曲線的變化率,a1和a2分別為兩時鐘曲線在t=0時刻的初值。
根據(jù)時鐘偏移值定義容易得到:
對式(13)求導,得到的時鐘偏移值變化率Roffset是本地時鐘曲線和參考時鐘曲線變化率的差值,如下:
設置漂移補償因子fd。當Roffset>0時,表明本地時鐘相比參考時鐘向正向漂移,需要將k1減小fd;反之,則表明本地時鐘相比參考時鐘向負向漂移,將k1增加fd。具體補償方法如下:
在正常的網(wǎng)絡通信過程中,各從站接收到通信幀后利用式(11)、式(15)對各自本地時鐘進行偏移和漂移補償,使各從站時鐘與參考從站時鐘一致。然后,利用式(6)、式(8)對通信傳輸過程中的線間延時和站內延時進行補償,實現(xiàn)基于分布式時鐘的以太網(wǎng)通信同步。
本節(jié)搭建總線式控制系統(tǒng),通過幾組實驗對實時以太網(wǎng)總線的通信性能進行測試。
構建典型的總線式控制系統(tǒng)如圖13所示。為保證系統(tǒng)處理能力,主站采用ATOM處理器,利用通用的以太網(wǎng)接口將3個數(shù)字量IO從站相連,形成典型的工業(yè)現(xiàn)場末端設備的控制網(wǎng)絡。在集成開發(fā)環(huán)境中編寫符合IEC61131-3的邏輯代碼,編譯后通過標準以太網(wǎng)接口下載到主站中,作為主站邏輯控制的程序組織單元(POU)。主站采用Modbus協(xié)議與組態(tài)設備相連,通過組態(tài)監(jiān)控終端實現(xiàn)控制系統(tǒng)的人機交互。此外,從站采用P1+M7的硬件結構,P1中集成NCUC控制器IP核實現(xiàn)網(wǎng)絡數(shù)據(jù)收發(fā),M7中集成CANopen設備控制及操作子協(xié)議,并通過P1的異步數(shù)據(jù)接口實現(xiàn)控制指令接收與設備狀態(tài)發(fā)送。
采用圖13所示的總線式控制系統(tǒng),在自研的軟件集成開發(fā)環(huán)境FX_PLC Developer中編寫IEC61131-3邏輯代碼并下載到主站,對NCUC總線上各從站數(shù)字量輸出接口進行操作。
圖13 典型的總線式控制系統(tǒng)架構Fig.13 Typical fieldbus control system architecture
5.2.1 通信數(shù)據(jù)傳輸實時性測試
考慮到百兆以太網(wǎng)鏈路的傳輸極限以及CANopen應用層協(xié)議的數(shù)據(jù)傳輸機制對通信周期的約束。分別設置主站通信周期為1 000,500,250 μs,并按通信周期向各從站發(fā)送數(shù)字量輸出口電平翻轉指令。通過示波器觀察各從站數(shù)字量輸出口電平的變化。在圖14中,各從站電平翻轉呈現(xiàn)周期性,且與主站通信周期一致。測試結果表明,以CANopen作為系統(tǒng)應用層協(xié)議時,NCUC總線對系統(tǒng)的最小控制周期可達250 μs。
5.2.2 總線同步精度測試
圖14 NCUC以太網(wǎng)總線通信周期測試結果Fig.14 Test results of NCUC ethernet bus communication cycle
NCUC控制器SYNC信號是通過時鐘同步補償后的基準信號,各從站SYNC信號的時間誤差反映了NCUC控制器同步性能的優(yōu)劣。將系統(tǒng)各從站SYNC信號引入示波器,在系統(tǒng)正常建立通信后觀察SYNC信號的變化。圖15中,從站2和從站3與參考從站的SYNC信號分別相差27,32 ns。這表明在三從站系統(tǒng)中,NCUC實時以太網(wǎng)同步時間誤差在50 ns量級。
圖15 NCUC以太網(wǎng)總線同步精度測試結果Fig.15 Test result of NCUC ethernet bus synchronization accuracy
本文針對可編程控制系統(tǒng)中高性能現(xiàn)場總線的自主可控問題,以NCUC實時以太網(wǎng)總線為基礎,利用國產(chǎn)大容量FPGA芯片為平臺搭建了FPGA+PHY的通用以太網(wǎng)硬件架構,針對網(wǎng)絡數(shù)據(jù)傳輸特點設計了以太網(wǎng)控制器的內部功能結構。為了提高網(wǎng)絡數(shù)據(jù)的傳輸效率,對網(wǎng)絡幀結構及通道數(shù)據(jù)傳輸方法進行了研究,提出了一種通道映射的方法,使多節(jié)點系統(tǒng)中網(wǎng)絡數(shù)據(jù)的傳輸效率得到極大提升。通過分析實時以太網(wǎng)的傳輸原理,總結了各從站節(jié)點通信幀傳輸不同步的原因。建立了線型級聯(lián)網(wǎng)絡數(shù)據(jù)幀傳輸延遲模型,提出了各從站通信延時補償方法。此外,采用分布式時鐘同步的方法,對各從站本地時鐘相對參考時鐘的漂移和偏移進行了補償,使系統(tǒng)各從站時鐘達到同步。最后,通過實驗對總線通信速率和同步精度進行測試。結果表明,本文設計的實時以太網(wǎng)總線的最小通信周期為250 μs,同步精度小于50 ns,達到國際先進水平。