0 引言
數控系統現場總線以其高可靠性、抗干擾性的優點適用于數控系統控制通信,隨著現場總線在工業控制領域的應用,現場總線已經成為下一代數控系統各設備單元之間數據交換的主要媒體。高檔數控系統的特點是高速、高精,而高速高精的數控加工要求數控各設備單元之間的數據交換媒體能完成數據的高速實時傳輸,因此數控系統現場總線系統是決定下一代高檔數控產業發展的一個重要因素。
傳統的總線系統(具體系統結構關系如圖1所示)實現為數控系統平臺通信系統日。的一部分,主要完成上層應用軟件如PLC模塊,運動控制模塊等與數控系統總線所連的伺服,I/0等從站設備之間的數據通信。總線系統通過NC(Numerical Control,數控)主機的通信接口(PCI、USB等)將通信數據發送到主站板卡,由主站板卡執行PC機并行數據—總線串行數據的發送/接收處理工作。主站板卡為簡單的硬件轉發電路,數據幀的封裝、解封,差錯控制,時鐘同步等工作完全由總線系統執行,需要占用大量的CPU時間和NC主機內存,從而增加了NC主機的負載。
圖1傳統總線系統結構關系
中國科學院沈陽計算技術研究所數控總線實驗室參照國家標準GB/T 18759.3-2009《開放式數控系統第3部分:總線接口與通信協議》研發的數控同步現場總線NCSF(Numerical Control Synchronous FieldBus)在數控現場總線實時通信方面具有優越的性能表現。
針對上述問題本文依據數控現場總線NCSF提出一種基于SoC的總線系統實現方法,設計選用Xilinx公司的XC3S500E FPGA芯片,具體設計中,采用MicroBlaze軟核CPU實現鏈路層及應用層協議處理。本文將在后續章節對總線系統的架構設計和實現方法進行具體闡述并對統性能進行分析。
1 背景介紹
1.1 NCSF簡介
為滿足開放式數控系統總線通信的實時性、同步性、可靠性及可擴展要求,NCSF總線參考ISO/OSI通信模型,由物理層、數據鏈路層、應用層、用戶層行規組成,如圖2所示。
圖2數控現場總線NCSF網絡模型
物理層負責協調總線在物理媒體中傳送比特流所需的各種功能,定義總線接插件和傳輸媒體的機械和電氣規約,以及為發生傳輸所必須完成的過程和功能;數據鏈路層為應用層提供周期、實時、無差錯的數據鏈路;應用層負責維護站點間的安全、可靠的數據傳輸通路,并為用戶層行規的命令與應答提供傳輸服務;用戶層行規為裝置特征、功能特性和行為的規范。
NCSF基于ISO/IEC 8802.3物理層規范設計,利用網絡實現高速、高可靠實時數據和基于以太網的非實時數據的傳輸。通信由主設備發起,主要支持單個主設備和多個從設備間的數據通信、站號的自動分配、網絡拓撲結構檢測、廣播通信、基于廣播機制的集總幀通信服務、點對點通信服務、總線延時測量和時間戳服務。在確定的網絡拓撲結構下,從站設備對集總幀實時轉發保證了通信的實時性,而周期性控制為主站行為。
1.2 SoC及硬件簡介
SoC稱為系統級芯片,也有稱片上系統,意指它是一個產品,是一個有專用目標的集成電路,其中包含完整系統并有嵌入軟件的全部內容。
FPGA(Filed Programmable Gate Array)是用戶現場可編程門陣列集成電路的簡稱,它使用方便,改變邏輯功能易于實現,能夠滿足現代通信發展的需求。
MicroBlaze嵌入式軟核是一個被Xilinx公司優化過的可嵌入在FPGA中的RISC處理器軟核,運行速度高達150MHz,采用哈佛體系結構,具有獨立的32位指令總線和32位數據總線,非常適合設計針對網絡、電信、數據通信和消費市場的復雜嵌入式系統。
2 基于SoC的NCSF總線系統的架構設計
基于SoC的NCSF總線系統保留NCSF總線協議棧的用戶層行規在NC主機中實現,以用戶層行規接口的形式為伺服驅動、主軸驅動、I/O等從站提供通用的系統應用接口(API)。協議棧的應用層和數據鏈路層實現在FPGA內嵌的MicroBlaze處理器中,配合FPGA內部的高精度時鐘、CRC處理、PHY控制等硬邏輯模塊,實現NCSF總線通信控制功能。FPGA開發板使用PCI卡與用戶層行規接口程序通信,數據鏈路層封裝的數據最后經由以太網PHY芯片發送。具體層次結構如圖3所示。
圖3基于SoC的總線系統
2.1 NC主機用戶層行規接口的設計
用戶層行規通過定義命令與應答的數據結構,確保裝置間的互操作,支持面向應用的實現。根據開放式數控系統中裝置的參數與行為特性,用戶層行規包括管理、傳感器控制、驅動控制與I/O控制等部分。用戶層行規接口程序主要負責通信數據的接收與發送。在發送階段,程序首先讀取運動控制、PLC等模塊的命令,然后將其封裝成相應的命令數據結構,最后通過NC主機的PCI將數據結構發送到總線通信控制卡上;接收階段,程序首先讀取PCI上由總線通信控制卡發來的數據,然后將其解析為應答數據結構并傳送給相應的功能模塊。具體過程如圖4所示。
圖4用戶層行規層次結構圖
2.2 FPGA上總線系統的設計
協議棧的應用層和數據鏈路層實現在FPGA內嵌的MicroBlaze處理器中,配合FPGA內部硬件邏輯資源編程實現高層協議和底層邏輯的解析處理。應用層為用戶層行規提供傳輸服務及安全支持,并實現用戶層行規與數據鏈路層之間數據交互。首先應用層程序讀取PCI中的命令數據結構并將其封裝成APDU(應用協議數據單元)轉發到數據鏈路層,然后數據鏈路層程序讀取來自應用層的數據并解析封裝成數據鏈路幀轉發到PHY控制器,最后數據幀由PHY以比特流的形式發送到NCSF總線上:當以太網控制器接收到來自NCSF總線的數據時,執行逆解析操作,最終由應用層程序將應答數據結構的發送到PCI上,至此完成一次完整的數據交互過程。具體過程如圖5所示。
圖5 FPGA上總線系統層次結構3 基于SoC的NCSF總線系統程序設計
基于SoC的NCSF總線系統將NCSF協議棧分兩個部分實現,即:用戶層行規以用戶層行規接口的形式實現在NC主機上,應用層及數據鏈路層實現在FPGA內嵌MicroBlaze處理器上,相應的程序設計也分兩個部分進行。
3.1用戶層行規接口程序設計
用戶層行規接口程序以外部時鐘中斷處理程序的形式調用執行,即當外部時鐘計數器到期發送時鐘脈沖信號至NC主機時,主機調用用戶層行規接口程序響應中斷。
接口程序與數控系統軟件共享一個命令數據結構數組和一個應答數據結構數組。命令數據結構數組中存儲的元素為數控系統事先封裝好的需要發送的命令數據結構,應答數據結構數組中存儲的元素為行規接口程序接收到的應答數據結構。
命令數據結構規劃如下,具體實現可以根據實際應用進行調整。
命令數據結構數組和應答數據結構數組的大小應根據實際應用中從站的數量進行動態配置,保證發往和來自每個從站的數據都有各自的緩沖空間。
如圖6所示。其中命令函數是用戶層行規為數控系統軟件提供的應用接口,數控系統軟件通過調用命令函數封裝命令數據結構并寫數據到命令數據結構數組。每個函數根據自己的功能將數據寫人數組不同的位置,具體內存地址為基地址加偏移地址。行規接口程序主要工作包括:讀取命令數據結構數組中的數據并映射到PIC的輸出緩存中;讀取PCI輸入緩存中的數據并映射到應答數據結構數組中。由于NCSF總線支持集總幀(一個大的數據幀,里面包含所有從站的數據,適用于主從環形總線拓撲結構)和非集總幀報文,因此一次函數執行將讀寫整個數組,即一個通訊周期內所需要發送的周期性數據和非周期性數據;所有的安全性檢查、出錯重傳、時鐘同步、PCI內存與從站地址的映射等控制功能完全由FPGA部分實現。
圖6行規接口程序數據流向程序間的數據流向
3.2 FPGA上總線系統程序設計
FPGA上實現部分主要完成站點初始化、從站信息搜集、拓撲判斷、數據收發等工作。其中站點初始化、從站信息搜集、拓撲判斷工作通常只在FPGA上電時執行,除非出現通信故障需要重新初始化;數據收發以及時鐘同步等過程則要以中斷的形式周期執行。當MicroBlaze處理器接收到時鐘計數器的脈沖信號時,將調用應用層程序處理中斷即開始進行周期通信,主要工作包括數據的收發、狀態機維護、安全性檢查、出錯重傳、地址映射、時鐘同步等。
3.2.1 應用層處理程序設計
應用層程序可處于不同的運行狀態,如初始態、就緒態、異步連接態、同步連接態、連接釋放態、故障態、結束態等,程序根據所處狀態提供不同的傳輸服務,應用層服務需要調用數據鏈路層提供的基本服務命令接口實現。
當處理器接收到時鐘脈沖信號開始進行中斷處理時應用層程序處于就緒狀態,之后程序會參照從站的反饋信息進入不同狀態。該程序的主要工作包括:讀取PCI接口中命令數據結構數組的映射數據,寫從站的應答信息到PCI的應答數據結構數組的映射內存中。應用層與數據鏈路層的信息交換通過傳輸APDU進行。APDU由用戶數據負載和控制信息組成,用戶數據負載存儲用戶層行規數據,控制信息用來描述APDU屬性。APDU控制信息數據結構設計如下,具體實現可以根據實際應用進行調整。
應用層處理程序首先讀取PCI緩沖區映射的命令數據結構數組并進行掃描,分析命令數據結構中的命令分組號和組內命令確定APDU控制信息,然后將命令數據結構數組封裝成APDU數組,這一過程可以通過維護命令數據結構到APDU控制信息的映射表進行簡化。下一步調用數據鏈路層基本服務命令接口發送APDU數組中的周期數據,接著檢查發送狀態進行差錯控制、出錯重傳或發送非周期數據。最后時鐘同步。每個通信周期都劃分為若干個階段執行,上述各操作必須在各自時間段內完成,其中出錯重發和非周期數據發送共用同一個時間段(需要進行動態決策)。應用層處理程序具體執行過程如圖7所示,具體實現可以根據實際提供的服務進行調整。
圖7應用層處理程序執行流程
3.2.2數據鏈路層程序設計
NCSF總線的數據鏈路層劃分成兩個子層:LLC(Logic Line Control,邏輯鏈路控制子層)和MAC(Media Access Control,介質訪問控制子層)。向上層提供服務是LLC子層的主要功能,它負責識別數據鏈路層的上層協議,然后對它們進行解析;控制對傳輸介質的訪問是MAC子層的主要功能,主要包括數據幀的封裝與卸裝,鏈路管理,幀尋址與識別,幀差錯控制等。
(1)LLC子層程序設計
LLC子層通過向應用層提供基本服務命令接口提供服務,包括通信服務命令接口和管理服務命令接口。應用層調用通信服務命令接口收發APDU;調用管理服務命令接口進行差錯控制、數據安全管理、時鐘管理以及通信管理。
基本服務命令接口對應用層是透明的,LLC子層需要對應用層調用的接口函數和傳遞的APDU進行解析,這一過程可以通過維護對象字典來實現。對象字典為LLC子層服務和數據管理提供對應的MAC子層解釋和定義,應包括服務對象字典和協議對象字典。LLC子層程序通過查詢對象字典,完成應用層數據通信任務到MAC子層數據通信任務間的轉換。
LLC子層還需要維護地址映射表進行上層邏輯地址到MAC子層實地址之間的轉換(實地址可由APDU控制信息唯一確定),映射表在FPGA上電初始化時確定。
表1為主要通信服務命令接口函數的定義,具體參數可根據具體實現進行調整。
表2為主要管理服務命令接口函數的定義,實際數量與應用中提供的服務數量相關。
(2)MAC子層程序設計
MAC子層主要完成LLC子層通信服務的具體實現,以及實際通信數據幀的封裝。
LLC子層各服務命令接口以及上層數據的收發工作最終都要通過收發鏈路層數據幀實現。NCSF總線支持集總幀和非集總幀報文。非集總幀由頭部、指令區、數據區和校驗區組成,通信數據區直接由從站數據信息封裝得來,組成相對簡單。集總幀主要包括集總幀頭部和數據部,頭部為數據幀控制信息,數據部為各從站數據的集合舊’。下面是集總幀頭部和從站數據結構定義,具體結構可根據具實現調整。
MAC子層通過查詢對象字典將應用層命令調用和APDU映射為MAC子層服務,然后接口函數封裝相應從站數據,最終各從站數據被組裝成集總幀發送。集總幀沿著環路傳輸,當經過一個從站時,該從站將對數據幀進行掃描,查找、讀取本站數據,然后把發反饋數據寫入集總幀,并繼續轉發經過處理的集總幀。
為實現數據幀的收發和管理控制工作,MAC子層需要維護數據收發緩沖區,長度寄存器,狀態寄存器,控制狀態寄存器,中斷清除寄存器和計時器寄存器。MAC子層收發程序通過設置控制寄存器,長度寄存器和中斷清除寄存器收發數據,通過檢查狀態寄存器判斷收發狀態進行差錯控制和安全管理。FPGA上總線系統的數據流向見圖8,涉及操作請參考應用層處理程序設計和數據鏈路層程序設計部分。需要注意的是,MAC子層接收到的反饋信息需要通過查詢對象字典和地址映射表以周期/非周期數據的形式傳遞到應用層,然后由應用層迸一步處理轉發。
圖8 FPGA總線系統數據流同關系
4 性能分析
基于SoC的NCSF總線系統使用FPGA軟核MicroBlaze為現場總線NCSF協議棧的實現提供快速的專用處理器,由于該處理器具有運行速度快、占用資源少、可配置性強等優點,且只用于通信控制,可以滿足數控現場總線對實時性的要求。本設計采用Xilinx XC3S500E芯片,表3中給出了總線系統綜合時芯片邏輯資源的使用情況,數據表明系統資源占用率相對較低,可實現在FPGA上。
表4給出了新系統性能測試結果,數據表明新設計完全可以滿足數控系統對現場總線數據的實時、高速、可靠傳輸的要求。
同時,NC主機上僅實現NCSF總線協議棧用戶層行規的內容,比完整的協議棧實現占用更少的CPU時間,降低了NC主機的負載,提高了NC主機的響應速度。
FPGA實現部分配合FPGA內部的高精度時鐘、CRC處理、PHY控制等硬邏輯模塊實現NCSF總線通信控制,增加了總線系統的獨立性、可擴展性,提高了總線的通信性能、穩定性和可靠性,使得總線系統的升級改造可以獨立于數控系統從而降低了數控系統的開發維護成本。
5 結束語
針對數控系統軟件對強實時性,高可靠性總線系統的應用需求,本文在沈陽計算技術研究所研發的NCSF總線的基礎上,提出了一種基于SoC的總線系統的實現方法。測試結果表明,新設計可提供速率為100Mps,同步抖動小于0.61μs,通信周期為31.25μs的通信服務,能夠滿足高檔數控機床的加工需求。同時該方法增加了總線系統的獨立性、可擴展性,可在一定程度上減少數控系統響應時間提高總線系統的實時性。
(審核編輯: 智匯張瑜)
分享