馬 躍,李 岳,尹震宇,谷 艾,于皓宇
(中國科學院大學,北京 100049)(中國科學院 沈陽計算技術研究所,沈陽 110168)
數控系統現場總線(Computer numerical control fieldbus,CNC-Fieldbus)是數控系統的重要組成部分,是控制系統與從站設備之間進行數據交換的通信線路.在工業制造環境中,通常需要考慮高速率的傳感器采集數據的上傳以及工業控制指令的下發要求在極短的時間延遲內實時、準確地完成[1],因此,在數控系統現場總線通信系統的研發中,主要技術難點在于如何降低傳輸過程中的通信時延,以及如何縮短通信消息發送的時間周期,從而確保現場總線的通信性能能夠滿足數控系統的實時性要求.在現場總線的安裝、配置以及維護等環節中,僅能通過數控系統主站顯示的數值推測主站發送的控制指令的一部分內容.當通信故障發生時,從站設備接收到的數據幀內容以及反饋的數據幀內容對于檢修人員是不可見的,因此需要通過外部設備對現場總線進行監控.由于工業現場環境對于檢修設備的便攜性以及可移動性要求較高,要求使用基于ARM處理器的小型嵌入式設備.該類設備的主要設計難點在于,受限于嵌入式ARM處理器的低處理性能,如何滿足現場總線的高實時性要求.
針對上述問題,本文設計并實現了一種在滿足現場總線通信實時性要求的基礎上,可以對已建立的數控系統現場總線進行全面的通信分析,同時適合實地調試的小型便攜嵌入式設備.目前各數控系統制造廠商通常采用適配于自身系統的不同現場總線通信協議,其通信數據幀格式有所不同,可通過幀頭部中所標識的協議版本號進行格式匹配并解析.本文所建立的實驗室測試環境采用SSB-III數控系統現場總線作為示例,該總線協議由沈陽高精數控智能技術股份有限公司自主研發,并在GJ310等數控系統成品中得到了廣泛應用.為實現對現場總線上傳輸的數據幀的實時轉發及抓包分析,本文通過在嵌入式ARM-Linux系統中安裝配置Preempt-RT實時內核補丁,以硬實時的方式捕獲數據鏈路層傳輸的智能設備幀,可得到用以診斷總線通信狀態和設備運行狀態的全部數據.
不同于已有的依賴于pc機上的硬件采集卡進行抓包分析的數控系統現場總線分析工具,本文實現的面向數控系統現場總線的通信分析單元可獨立于pc機完成數據的抓包、解析以及顯示,方便檢修人員在復雜的現場環境中通過更換接入位置對多個設備之間的多段連接進行快速的測試及排查,便于安裝,提高效率.在檢修過程中,通信分析單元對數控系統發送及從站設備反饋的數據幀進行實時轉發,對通信兩端保持完全透明,不改變通信兩端的工作狀態.在用戶界面上,檢修人員可以快速定位待查詢數據幀的特定字段來獲取所需信息,同時也可以查看一段時間內所捕獲數據幀的數量、傳遞方向以及準確率等宏觀特征來整體了解通信情況.
對于高精度數控系統與自動化數控裝備組建的工業局域網,盡管各現場設備可能用于處理適用于各自工作任務的異步數據,在通信方面首先需要確保的是設備之間的精確時間同步,其次需要保證通信在測量與控制上的準確性,因而在目前高精數控系統的通信設計上通常采用現場總線方案.相較于傳統的數控系統通信,現場總線以數字通信取代了模擬信號傳輸,避免了在運動控制器上加裝數字-模擬信號轉換器,在保持低延時、高可靠的前提下提高了傳輸效率并且提升了系統的可擴展性.
在現場總線通信體系中,主站在每個時間周期發送包含控制指令及位置值等數據的智能設備幀,在數據鏈路層直接完成通信,而傳統OSI模型的以太網架構中網絡層及以上層面中路由選擇或端到端流控等機制不被現場總線通信所采用,從而避免了常規以太網通信中必然發生的通信延遲.現場總線網絡拓撲結構相對簡化,主站與從站設備以串聯方式組網,現場總線通信分析單元針對現場總線的技術特點,接入到任意設備之間的現場總線上,通過實時地抓取并轉發特定格式的智能設備幀實現對現場總線通信性能的分析,并通過分析現場總線上傳輸的錯誤消息間接地對數控裝備運行故障進行診斷和處理.
在現場總線通信分析單元所基于的操作系統層面,對于實時性的實現程度區分為硬實時和軟實時,其最關鍵的差別在于:相對于軟實時僅能提供統計意義上的實時,硬實時要求確立一個剛性的、不可變的時限,確保了最壞情況下的服務時間不可超出該時限,若執行任務時超出該時限則會被嚴格得確定為超時錯誤.舉例來說,在軟實時操作系統中,應用可能要求在98%的情況下能夠在某時限內完成必要的操作,而能夠容忍偶然的超時處理,只需在宏觀上滿足實時性要求,少量的超時僅會影響系統的性能;而在硬實時操作系統中,任何一例超時錯誤都是不可接受的,所有響應均會在截止時限之前完成,否則會帶來導致系統無法繼續運行的故障.因此,對于實時性要求較高的數控系統需要架設在硬實時操作系統上.同時,為保證本文所實現的設備能夠在對原現場總線完全透明的前提下進行數據幀的實時轉發,本設備同樣需架設在硬實時操作系統上.
目前原生的Linux操作系統僅能滿足軟實時的實時性要求,不能滿足數控系統對于實現硬實時的要求.以Linux為基礎實現的實時操作系統主要包括以下幾種:RTAI、Xenomai、Xtratu和安裝了以Preempt-RT為代表的各類實時搶占補丁的Linux擴展系統[2].經測試對比,通過安裝實時補丁對軟實時Linux操作系統內核進行優化后,系統的實時性能達到了硬實時操作系統的要求[3].由于添加了實時搶占補丁的擴展型實時操作系統符合POSIX(Portable Operating System Interface of UNIX)標準,對于驅動程序以及用戶層面的各類應用程序有較好的支持,在硬實時處理能力與其他實時操作系統沒有明顯差異的前提下具有更高的可移植性,對硬件平臺本身的依賴性和特異性較小,因此在實踐中具有顯著的優勢.
現場總線通信分析單元總體設計如圖1所示,由底層FPGA部分、中間層arm-linux內核模塊部分和上層Qt用戶界面部分共計三部分構成.通信分析單元串聯地接入原有的現場總線中,根據實際需要位于任意進行通信分析的位置,物理接口A與B分別連接原現場總線兩端設備,接口支持全雙工.

圖1 現場總線通信分析單元總體設計Fig.1 Overall design of the fieldbus communication analysis unit
現場總線通信分析單元的整體工作流程如圖2所示,底層FPGA部分負責同總線的連接,完成總線物理通信的接收與轉發,同時將接收的數據幀存入緩沖區,供中間層提取;中間層內核模塊提取數據后,將其存入操作系統中的共享內存段以供上層應用進程讀取;上層進程讀取共享內存中存放的數據內容后,通過識別數據幀頭部的版本號確定數據幀的協議類型,并將數據按照協議格式解析出相應字段內容并進行列表顯示.

圖2 現場總線通信分析單元流程圖Fig.2 Flow chart of the fieldbus communication analysis unit
現場總線通信分析單元的具體實現環境如表1所示.
表1 現場總線通信分析單元實現環境
Table 1 Implementation environment of the fieldbus communication analysis unit

硬件設備TQ3358處理器ARMv7Processorrev2(v7l)FPGA開發板xilinxxc3s500e操作系統LinuxEmbedSky內核版本3.2.0編譯工具arm-linux-gcc用戶界面Qt4.5
FPGA(field-programmable gate array)是近年來發展起來的大規模可編程邏輯器件,為并行工作方式,其時鐘延遲可達納秒級,集成度高、開發周期短、開發成本低,在嵌入式開發領域上有廣闊的應用前景.本文中實現的FPGA底層硬件部分采用xilinx xc3s500e開發板,該部分集成了處理器、內存、閃存,為上層提供了完整的軟件運行環境.網絡接口方面,底板上配備A、B兩個RJ45全雙工端口,可以雙向地接收或發送數據,兩端串聯地接在現場總線中,在任意數據幀進入端口時向另一端口進行實時轉發以免影響總線通信正常工作,并將數據復制一份置入端口上配置的緩沖區中.FPGA底板上經過修改的網絡適配器負責總線通信適配,實現包括類型識別、無效幀丟棄、時間同步等功能.板上搭載的FLASH中保存上電初始化配置信息,在底板上電時讀取并進行相關配置.
本文所采用的Preempt-RT補丁是在Linux社區kernel的基礎之上進行改進,進而解決了其在spinlock、irq上下文方面無法搶占,導致自高優先級任務被喚醒至開始執行的時長不穩定的問題.通過打Preempt-RT補丁并編譯內核,Linux系統本身增加了具有高時間分辨率的通用時鐘事件層以及硬實時能力.
安裝配置之前,首先獲取與內核版本相對應的Preempt-RT補丁,并執行patch -p1 <(補丁文件所在路徑),隨后在內核路徑下通過make menuconfig進行內核配置,并在“Processor type and features”中選擇“Complete Preemption(Real-Time)”選項,以確保內核具備完全的實時搶占能力.配置完成后對內核進行編譯,隨后在grub.cfg中找到Linux原有的一段配置文件,并且在引導選項的img等文件后添加-rt等必要參數以使內核成功啟用[4].上述工作完成后即可重啟選擇進入系統,通過安裝基準測試程序,測試經過擴展后系統的時間精度以及實時性,可以發現實時內核的實時性遠遠超出原生系統,已經符合本文中設備開發所需要的系統環境要求[5].
內核模塊交叉編譯產生后綴ko文件,通過運行自啟動腳本在設備上電后插入系統內核中,腳本同時完成在啟動之后在/dev中注冊pci設備,并完成檢測硬件是否正常工作、連接是否建立等工作;隨后模塊將相對應的硬件緩沖區的物理地址映射到內核的虛擬地址空間,從而按長度從硬件緩沖區中讀取數據幀并完成幀定界.
該部分調用內核模塊的中間層程序為sniffer_app.c,在設備上電之后自啟動并保持工作狀態.在底層FPGA板上有兩塊緩沖區,分別為緩沖區A以及緩沖區B,對應FPGA模塊中A、B兩個物理連接端口.當其中任意緩沖區獲取到數據時,其相應的狀態寄存器的值會被改變,程序從狀態寄存器中取出已到達數據長度,以此長度申請共享內存空間,將讀取的數據幀按照協議格式以結構體為單位通過
用戶界面基于Qt,通過sniffer_hmi.cpp實現,采用分頁方式,系統功能整體分為3頁.
首頁是整體控制頁面,如圖3所示,左側放置“開始抓包”以及“停止抓包”按鈕,當用戶點擊“開始抓包”時清空共享內存段、清空所有頁面的數據顯示并將全局標志位變量修改為正在抓包狀態;當用戶點擊“停止抓包”按鈕時,讀取共享內存段中的數據并將全局標志位變量修改為暫停狀態,并且將全部頁面內容按照解析結果進行更新.首頁同時包括當前網絡連接狀態以及異常狀態提示標簽,當連接出現異常時進行相應的顯示.首頁右側為抓包整體信息標簽頁,包含抓取的數據幀總數、正確數據幀總數及正確率、錯誤數據幀及碎片數據幀總數及錯誤率、CRC錯誤幀總數及錯誤率、WDG錯誤及錯誤率、同步周期、同步抖動值等.

圖3 用戶界面首頁Fig.3 Home page of user interface
第2頁是數據顯示頁面,如圖4所示,上半部分整體為一個列表控件,按照抓取的時間順序排列,每行為一幀數據,其行號與幀在內存塊中的序號一一對應.在列表中每列對應一個有效字段,包含發送方向、數據長度、CRC校驗、幀類型、從站設備類型、控制指令中下發的位置值、反饋指令中上傳的碼盤位置值、時間戳等,每幀數據按照其不同類型在相應列顯示字段內容,不包含的字段處缺省顯示“-”.

圖4 用戶界面第2頁Fig.4 Second page of user interface
第2頁下半部分包含一個數據表格、一個文本框和一個樹形控件.當用戶在點擊列表中任意一行時,觸發slot_click_table槽函數,傳入所點擊的行數對應的幀編號參數,將該數據幀內容以字節為單位在數據表格中全部顯示,每格顯示為兩個十六進制數,共16列.在樹形控件中顯示幀頭部格式,用戶點擊幀頭部中不同字段時,文本框中顯示該數據幀頭部中經解析得到的信息,包含CRC校驗情況及傳輸方向等.
第3頁是版本信息頁面,包含本設備的當前軟件開發版本以及驅動模塊、FPGA固件、顯示模組版本信息,同時說明了可識別的協議類型.
在sniffer_hmi進程中,從底層傳遞上來的完整幀內容依據協議格式按位解析關鍵字內容[6,7].以SSB-III協議為例,每個智能設備的數據幀部分都由50個字組成,每字大小4字節,主要用于應用對象間的實時通信.50個字的具體含義詳見下面的結構體,幀格式如圖5所示.對于其他較為主流的現場總線通信協議,僅需對結構體進行簡單的修改使其匹配相應的協議格式即可實現解析.
其中,addr_s字段與addr_m字段分別代表通信從站與通信主站地址,sts_com為通信狀態,err_count為出錯數目,time_delay為從站通信延遲時間,watchdog為通信監視看門狗,wd_feed_value為看門狗反饋值,reserve數組為保留字段.rcv和snd兩個結構體分比為接收數據及發送數據,其中len字段為數據長度,而buf數組為接收/發送數據緩沖區,其中包含位置值、時間戳等內容,按數據幀類型的不同有所區分.

圖5 SSB-III智能設備幀格式Fig.5 Standard format of SSB-III frames
組裝完成的樣機外觀如圖6所示,正面為觸摸屏幕,具備一個電源接口、雙RJ45網口、一個USB擴展口以及一個DB9串口.

圖6 現場總線通信分析單元樣機Fig.6 Sample device of the fieldbus communication analysis unit
將樣機接入到由數控系統控制主站、X/Y/Z三軸共計三個伺服電機組成的總線網絡中進行測試實驗,實驗環境如圖7所示.所使用的數控系統控制主站型號為藍天數控GJ301,發送數據幀周期為典型場景下的2ms.首先測試了初次上電場景下的抓包分析,樣機顯示時間同步幀Status為Ready,代表通信成功建立.隨后測試了使能狀態下的抓包分析,伺服電機按照主站位置值進行了精確定位,在樣機上顯示Status為Run代表設備正常運轉,捕獲的數據幀中位置值與主站顯示一一對應.最后,通過使用外力強制旋轉伺服電機軸,使得碼盤反饋值與指令值錯位等方式制造多種故障場景,抓包結果顯示Status為相對應的故障代碼,同時終止了使能狀態.

圖7 現場總線通信分析單元實驗環境Fig.7 Experimental environment of the fieldbus communication analysis unit
實驗中樣機能夠準確地抓取總線上傳輸的數據幀,樣機所獨立抓取的數據幀中解析出的位置值與數控系統控制臺上所顯示數值對應無誤.經過對大量數據傳輸、長時間運行等實際應用場景進行反復壓力測試,驗證了樣機能夠以穩定的工作狀態實現預期功能,滿足設計要求.
表2 樣機性能指標
Table 2 Performance specifications of the sample device

同步數據幀周期2ms同步數據幀抖動0.4μs響應時間80μs數據幀捕獲率100%CRC校驗正確率100%WDG正確率100%
實驗結果顯示,樣機可以實現對數據幀進行無遺漏地采集與處理,并且能夠測量數據幀之間的同步抖動時間,達到預期的實時性要求,順利通過了專項驗收.總體性能指標如表2所示.
本文設計了一種便于攜帶的嵌入式數控系統現場總線通信分析設備,并分層次地介紹了該設備設計與實現的全部過程.與現有的數控系統總線通信采集分析工具相比,本設備采用基于嵌入式平臺的設計方案,體積小、成本低,在可保持長時間、復雜環境中工作的同時,可靈活部署,便于技術人員對工業制造現場中的總線網絡進行多點測試,能夠在今后數控系統的安裝、維護與檢修工作中發揮重要作用,具有實際意義.