0 引言
數控系統(tǒng)現(xiàn)場總線以其高可靠性、抗干擾性的優(yōu)點適用于數控系統(tǒng)控制通信,隨著現(xiàn)場總線在工業(yè)控制領域的應用,現(xiàn)場總線已經成為下一代數控系統(tǒng)各設備單元之間數據交換的主要媒體。高檔數控系統(tǒng)的特點是高速、高精,而高速高精的數控加工要求數控各設備單元之間的數據交換媒體能完成數據的高速實時傳輸,因此數控系統(tǒng)現(xiàn)場總線系統(tǒng)是決定下一代高檔數控產業(yè)發(fā)展的一個重要因素。
傳統(tǒng)的總線系統(tǒng)(具體系統(tǒng)結構關系如圖1所示)實現(xiàn)為數控系統(tǒng)平臺通信系統(tǒng)日。的一部分,主要完成上層應用軟件如PLC模塊,運動控制模塊等與數控系統(tǒng)總線所連的伺服,I/0等從站設備之間的數據通信??偩€系統(tǒng)通過NC(Numerical Control,數控)主機的通信接口(PCI、USB等)將通信數據發(fā)送到主站板卡,由主站板卡執(zhí)行PC機并行數據—總線串行數據的發(fā)送/接收處理工作。主站板卡為簡單的硬件轉發(fā)電路,數據幀的封裝、解封,差錯控制,時鐘同步等工作完全由總線系統(tǒng)執(zhí)行,需要占用大量的CPU時間和NC主機內存,從而增加了NC主機的負載。

圖1傳統(tǒng)總線系統(tǒng)結構關系
中國科學院沈陽計算技術研究所數控總線實驗室參照國家標準GB/T 18759.3-2009《開放式數控系統(tǒng)第3部分:總線接口與通信協(xié)議》研發(fā)的數控同步現(xiàn)場總線NCSF(Numerical Control Synchronous FieldBus)在數控現(xiàn)場總線實時通信方面具有優(yōu)越的性能表現(xiàn)。
針對上述問題本文依據數控現(xiàn)場總線NCSF提出一種基于SoC的總線系統(tǒng)實現(xiàn)方法,設計選用Xilinx公司的XC3S500E FPGA芯片,具體設計中,采用MicroBlaze軟核CPU實現(xiàn)鏈路層及應用層協(xié)議處理。本文將在后續(xù)章節(jié)對總線系統(tǒng)的架構設計和實現(xiàn)方法進行具體闡述并對統(tǒng)性能進行分析。
1 背景介紹
1.1 NCSF簡介
為滿足開放式數控系統(tǒng)總線通信的實時性、同步性、可靠性及可擴展要求,NCSF總線參考ISO/OSI通信模型,由物理層、數據鏈路層、應用層、用戶層行規(guī)組成,如圖2所示。
圖2數控現(xiàn)場總線NCSF網絡模型

物理層負責協(xié)調總線在物理媒體中傳送比特流所需的各種功能,定義總線接插件和傳輸媒體的機械和電氣規(guī)約,以及為發(fā)生傳輸所必須完成的過程和功能;數據鏈路層為應用層提供周期、實時、無差錯的數據鏈路;應用層負責維護站點間的安全、可靠的數據傳輸通路,并為用戶層行規(guī)的命令與應答提供傳輸服務;用戶層行規(guī)為裝置特征、功能特性和行為的規(guī)范。
NCSF基于ISO/IEC 8802.3物理層規(guī)范設計,利用網絡實現(xiàn)高速、高可靠實時數據和基于以太網的非實時數據的傳輸。通信由主設備發(fā)起,主要支持單個主設備和多個從設備間的數據通信、站號的自動分配、網絡拓撲結構檢測、廣播通信、基于廣播機制的集總幀通信服務、點對點通信服務、總線延時測量和時間戳服務。在確定的網絡拓撲結構下,從站設備對集總幀實時轉發(fā)保證了通信的實時性,而周期性控制為主站行為。
1.2 SoC及硬件簡介
SoC稱為系統(tǒng)級芯片,也有稱片上系統(tǒng),意指它是一個產品,是一個有專用目標的集成電路,其中包含完整系統(tǒng)并有嵌入軟件的全部內容。
FPGA(Filed Programmable Gate Array)是用戶現(xiàn)場可編程門陣列集成電路的簡稱,它使用方便,改變邏輯功能易于實現(xiàn),能夠滿足現(xiàn)代通信發(fā)展的需求。
MicroBlaze嵌入式軟核是一個被Xilinx公司優(yōu)化過的可嵌入在FPGA中的RISC處理器軟核,運行速度高達150MHz,采用哈佛體系結構,具有獨立的32位指令總線和32位數據總線,非常適合設計針對網絡、電信、數據通信和消費市場的復雜嵌入式系統(tǒng)。
2 基于SoC的NCSF總線系統(tǒng)的架構設計
基于SoC的NCSF總線系統(tǒng)保留NCSF總線協(xié)議棧的用戶層行規(guī)在NC主機中實現(xiàn),以用戶層行規(guī)接口的形式為伺服驅動、主軸驅動、I/O等從站提供通用的系統(tǒng)應用接口(API)。協(xié)議棧的應用層和數據鏈路層實現(xiàn)在FPGA內嵌的MicroBlaze處理器中,配合FPGA內部的高精度時鐘、CRC處理、PHY控制等硬邏輯模塊,實現(xiàn)NCSF總線通信控制功能。FPGA開發(fā)板使用PCI卡與用戶層行規(guī)接口程序通信,數據鏈路層封裝的數據最后經由以太網PHY芯片發(fā)送。具體層次結構如圖3所示。

圖3基于SoC的總線系統(tǒng)
2.1 NC主機用戶層行規(guī)接口的設計
用戶層行規(guī)通過定義命令與應答的數據結構,確保裝置間的互操作,支持面向應用的實現(xiàn)。根據開放式數控系統(tǒng)中裝置的參數與行為特性,用戶層行規(guī)包括管理、傳感器控制、驅動控制與I/O控制等部分。用戶層行規(guī)接口程序主要負責通信數據的接收與發(fā)送。在發(fā)送階段,程序首先讀取運動控制、PLC等模塊的命令,然后將其封裝成相應的命令數據結構,最后通過NC主機的PCI將數據結構發(fā)送到總線通信控制卡上;接收階段,程序首先讀取PCI上由總線通信控制卡發(fā)來的數據,然后將其解析為應答數據結構并傳送給相應的功能模塊。具體過程如圖4所示。

圖4用戶層行規(guī)層次結構圖
2.2 FPGA上總線系統(tǒng)的設計
協(xié)議棧的應用層和數據鏈路層實現(xiàn)在FPGA內嵌的MicroBlaze處理器中,配合FPGA內部硬件邏輯資源編程實現(xiàn)高層協(xié)議和底層邏輯的解析處理。應用層為用戶層行規(guī)提供傳輸服務及安全支持,并實現(xiàn)用戶層行規(guī)與數據鏈路層之間數據交互。首先應用層程序讀取PCI中的命令數據結構并將其封裝成APDU(應用協(xié)議數據單元)轉發(fā)到數據鏈路層,然后數據鏈路層程序讀取來自應用層的數據并解析封裝成數據鏈路幀轉發(fā)到PHY控制器,最后數據幀由PHY以比特流的形式發(fā)送到NCSF總線上:當以太網控制器接收到來自NCSF總線的數據時,執(zhí)行逆解析操作,最終由應用層程序將應答數據結構的發(fā)送到PCI上,至此完成一次完整的數據交互過程。具體過程如圖5所示。

圖5 FPGA上總線系統(tǒng)層次結構3 基于SoC的NCSF總線系統(tǒng)程序設計
基于SoC的NCSF總線系統(tǒng)將NCSF協(xié)議棧分兩個部分實現(xiàn),即:用戶層行規(guī)以用戶層行規(guī)接口的形式實現(xiàn)在NC主機上,應用層及數據鏈路層實現(xiàn)在FPGA內嵌MicroBlaze處理器上,相應的程序設計也分兩個部分進行。
3.1用戶層行規(guī)接口程序設計
用戶層行規(guī)接口程序以外部時鐘中斷處理程序的形式調用執(zhí)行,即當外部時鐘計數器到期發(fā)送時鐘脈沖信號至NC主機時,主機調用用戶層行規(guī)接口程序響應中斷。
接口程序與數控系統(tǒng)軟件共享一個命令數據結構數組和一個應答數據結構數組。命令數據結構數組中存儲的元素為數控系統(tǒng)事先封裝好的需要發(fā)送的命令數據結構,應答數據結構數組中存儲的元素為行規(guī)接口程序接收到的應答數據結構。
命令數據結構規(guī)劃如下,具體實現(xiàn)可以根據實際應用進行調整。

命令數據結構數組和應答數據結構數組的大小應根據實際應用中從站的數量進行動態(tài)配置,保證發(fā)往和來自每個從站的數據都有各自的緩沖空間。
如圖6所示。其中命令函數是用戶層行規(guī)為數控系統(tǒng)軟件提供的應用接口,數控系統(tǒng)軟件通過調用命令函數封裝命令數據結構并寫數據到命令數據結構數組。每個函數根據自己的功能將數據寫人數組不同的位置,具體內存地址為基地址加偏移地址。行規(guī)接口程序主要工作包括:讀取命令數據結構數組中的數據并映射到PIC的輸出緩存中;讀取PCI輸入緩存中的數據并映射到應答數據結構數組中。由于NCSF總線支持集總幀(一個大的數據幀,里面包含所有從站的數據,適用于主從環(huán)形總線拓撲結構)和非集總幀報文,因此一次函數執(zhí)行將讀寫整個數組,即一個通訊周期內所需要發(fā)送的周期性數據和非周期性數據;所有的安全性檢查、出錯重傳、時鐘同步、PCI內存與從站地址的映射等控制功能完全由FPGA部分實現(xiàn)。

圖6行規(guī)接口程序數據流向程序間的數據流向
3.2 FPGA上總線系統(tǒng)程序設計
FPGA上實現(xiàn)部分主要完成站點初始化、從站信息搜集、拓撲判斷、數據收發(fā)等工作。其中站點初始化、從站信息搜集、拓撲判斷工作通常只在FPGA上電時執(zhí)行,除非出現(xiàn)通信故障需要重新初始化;數據收發(fā)以及時鐘同步等過程則要以中斷的形式周期執(zhí)行。當MicroBlaze處理器接收到時鐘計數器的脈沖信號時,將調用應用層程序處理中斷即開始進行周期通信,主要工作包括數據的收發(fā)、狀態(tài)機維護、安全性檢查、出錯重傳、地址映射、時鐘同步等。
3.2.1 應用層處理程序設計
應用層程序可處于不同的運行狀態(tài),如初始態(tài)、就緒態(tài)、異步連接態(tài)、同步連接態(tài)、連接釋放態(tài)、故障態(tài)、結束態(tài)等,程序根據所處狀態(tài)提供不同的傳輸服務,應用層服務需要調用數據鏈路層提供的基本服務命令接口實現(xiàn)。
當處理器接收到時鐘脈沖信號開始進行中斷處理時應用層程序處于就緒狀態(tài),之后程序會參照從站的反饋信息進入不同狀態(tài)。該程序的主要工作包括:讀取PCI接口中命令數據結構數組的映射數據,寫從站的應答信息到PCI的應答數據結構數組的映射內存中。應用層與數據鏈路層的信息交換通過傳輸APDU進行。APDU由用戶數據負載和控制信息組成,用戶數據負載存儲用戶層行規(guī)數據,控制信息用來描述APDU屬性。APDU控制信息數據結構設計如下,具體實現(xiàn)可以根據實際應用進行調整。

應用層處理程序首先讀取PCI緩沖區(qū)映射的命令數據結構數組并進行掃描,分析命令數據結構中的命令分組號和組內命令確定APDU控制信息,然后將命令數據結構數組封裝成APDU數組,這一過程可以通過維護命令數據結構到APDU控制信息的映射表進行簡化。下一步調用數據鏈路層基本服務命令接口發(fā)送APDU數組中的周期數據,接著檢查發(fā)送狀態(tài)進行差錯控制、出錯重傳或發(fā)送非周期數據。最后時鐘同步。每個通信周期都劃分為若干個階段執(zhí)行,上述各操作必須在各自時間段內完成,其中出錯重發(fā)和非周期數據發(fā)送共用同一個時間段(需要進行動態(tài)決策)。應用層處理程序具體執(zhí)行過程如圖7所示,具體實現(xiàn)可以根據實際提供的服務進行調整。

圖7應用層處理程序執(zhí)行流程
3.2.2數據鏈路層程序設計
NCSF總線的數據鏈路層劃分成兩個子層:LLC(Logic Line Control,邏輯鏈路控制子層)和MAC(Media Access Control,介質訪問控制子層)。向上層提供服務是LLC子層的主要功能,它負責識別數據鏈路層的上層協(xié)議,然后對它們進行解析;控制對傳輸介質的訪問是MAC子層的主要功能,主要包括數據幀的封裝與卸裝,鏈路管理,幀尋址與識別,幀差錯控制等。
(1)LLC子層程序設計
LLC子層通過向應用層提供基本服務命令接口提供服務,包括通信服務命令接口和管理服務命令接口。應用層調用通信服務命令接口收發(fā)APDU;調用管理服務命令接口進行差錯控制、數據安全管理、時鐘管理以及通信管理。
基本服務命令接口對應用層是透明的,LLC子層需要對應用層調用的接口函數和傳遞的APDU進行解析,這一過程可以通過維護對象字典來實現(xiàn)。對象字典為LLC子層服務和數據管理提供對應的MAC子層解釋和定義,應包括服務對象字典和協(xié)議對象字典。LLC子層程序通過查詢對象字典,完成應用層數據通信任務到MAC子層數據通信任務間的轉換。
LLC子層還需要維護地址映射表進行上層邏輯地址到MAC子層實地址之間的轉換(實地址可由APDU控制信息唯一確定),映射表在FPGA上電初始化時確定。
表1為主要通信服務命令接口函數的定義,具體參數可根據具體實現(xiàn)進行調整。

表2為主要管理服務命令接口函數的定義,實際數量與應用中提供的服務數量相關。

(2)MAC子層程序設計
MAC子層主要完成LLC子層通信服務的具體實現(xiàn),以及實際通信數據幀的封裝。
LLC子層各服務命令接口以及上層數據的收發(fā)工作最終都要通過收發(fā)鏈路層數據幀實現(xiàn)。NCSF總線支持集總幀和非集總幀報文。非集總幀由頭部、指令區(qū)、數據區(qū)和校驗區(qū)組成,通信數據區(qū)直接由從站數據信息封裝得來,組成相對簡單。集總幀主要包括集總幀頭部和數據部,頭部為數據幀控制信息,數據部為各從站數據的集合舊’。下面是集總幀頭部和從站數據結構定義,具體結構可根據具實現(xiàn)調整。

MAC子層通過查詢對象字典將應用層命令調用和APDU映射為MAC子層服務,然后接口函數封裝相應從站數據,最終各從站數據被組裝成集總幀發(fā)送。集總幀沿著環(huán)路傳輸,當經過一個從站時,該從站將對數據幀進行掃描,查找、讀取本站數據,然后把發(fā)反饋數據寫入集總幀,并繼續(xù)轉發(fā)經過處理的集總幀。
為實現(xiàn)數據幀的收發(fā)和管理控制工作,MAC子層需要維護數據收發(fā)緩沖區(qū),長度寄存器,狀態(tài)寄存器,控制狀態(tài)寄存器,中斷清除寄存器和計時器寄存器。MAC子層收發(fā)程序通過設置控制寄存器,長度寄存器和中斷清除寄存器收發(fā)數據,通過檢查狀態(tài)寄存器判斷收發(fā)狀態(tài)進行差錯控制和安全管理。FPGA上總線系統(tǒng)的數據流向見圖8,涉及操作請參考應用層處理程序設計和數據鏈路層程序設計部分。需要注意的是,MAC子層接收到的反饋信息需要通過查詢對象字典和地址映射表以周期/非周期數據的形式傳遞到應用層,然后由應用層迸一步處理轉發(fā)。

圖8 FPGA總線系統(tǒng)數據流同關系
4 性能分析
基于SoC的NCSF總線系統(tǒng)使用FPGA軟核MicroBlaze為現(xiàn)場總線NCSF協(xié)議棧的實現(xiàn)提供快速的專用處理器,由于該處理器具有運行速度快、占用資源少、可配置性強等優(yōu)點,且只用于通信控制,可以滿足數控現(xiàn)場總線對實時性的要求。本設計采用Xilinx XC3S500E芯片,表3中給出了總線系統(tǒng)綜合時芯片邏輯資源的使用情況,數據表明系統(tǒng)資源占用率相對較低,可實現(xiàn)在FPGA上。

表4給出了新系統(tǒng)性能測試結果,數據表明新設計完全可以滿足數控系統(tǒng)對現(xiàn)場總線數據的實時、高速、可靠傳輸的要求。

同時,NC主機上僅實現(xiàn)NCSF總線協(xié)議棧用戶層行規(guī)的內容,比完整的協(xié)議棧實現(xiàn)占用更少的CPU時間,降低了NC主機的負載,提高了NC主機的響應速度。
FPGA實現(xiàn)部分配合FPGA內部的高精度時鐘、CRC處理、PHY控制等硬邏輯模塊實現(xiàn)NCSF總線通信控制,增加了總線系統(tǒng)的獨立性、可擴展性,提高了總線的通信性能、穩(wěn)定性和可靠性,使得總線系統(tǒng)的升級改造可以獨立于數控系統(tǒng)從而降低了數控系統(tǒng)的開發(fā)維護成本。
5 結束語
針對數控系統(tǒng)軟件對強實時性,高可靠性總線系統(tǒng)的應用需求,本文在沈陽計算技術研究所研發(fā)的NCSF總線的基礎上,提出了一種基于SoC的總線系統(tǒng)的實現(xiàn)方法。測試結果表明,新設計可提供速率為100Mps,同步抖動小于0.61μs,通信周期為31.25μs的通信服務,能夠滿足高檔數控機床的加工需求。同時該方法增加了總線系統(tǒng)的獨立性、可擴展性,可在一定程度上減少數控系統(tǒng)響應時間提高總線系統(tǒng)的實時性。
(審核編輯: 智匯張瑜)
分享