蘇 軍
(廣州數控信息科技有限公司, 廣東廣州 510535)
數控系統是機床母機的“大腦”,是現代裝備制造業的核心, 目前行業內數控系統的基礎軟硬件對外依賴程度太高,存在斷供,“卡脖子”的風險。另外,隨著國民經濟的發展和制造技術的迅猛發展,各行業對高性能,柔性加工的需求不斷提高,對數控行業的信息化、數字化、智能化要求也日益增加, 因此面向國產基礎軟硬件的數控系統的研究開發是具有十分重要意義[1]。
以全國產化的器件搭建數控系統硬件平臺, 基于國產實時操作系統SylixOS 搭建數控系統軟件架構, 使用開源的IgH EtherCAT 主站協議棧連接伺服從站和IO 單元從站。 系統總體方案框圖,見圖1。

圖1 系統總體方案框圖
數控系統硬件平臺完全由全國產化器件搭建,采用國產高性能CPU 處理器, 核心元器件包括FPGA、 驅動光耦、 總線PHY 芯片等均采用國產品牌產品, 具體產品型號此處不詳細列舉, 硬件框圖見圖2。

圖2 數控系統硬件框圖
數控系統軟件基于SylixOS 實時操作系統進行部署,系統軟件根據應用功能進行劃分,根據實時性要求確定不同的優先級,然后由操作系統進行統一調度。
整體軟件架構如圖3 所示。由SylixOS 實時操作系統實現對硬件接口及外設的驅動, 并移植IgH EtherCAT Master 協議棧,支持TCP/IP 等網絡協議,提供文件系統、圖形系統等接口; 各數控系統應用軟件模塊根據實時性要求放入不同的進程,由操作系統統一調度,不同實時性的進程間,通過共享內存進行數據交互。

圖3 軟件架構框圖
SylixOS 是大型搶占式多任務硬實時操作系統,依據工信部評估報告,SylixOS 操作系統內核自主化率達100%, 是完全自主的國產操作系統, 支持ARM、MIPS、PowerPC、x86 等多種架構處理器,支持主流國產通用處理器[3]。兼容IEEE 1003(ISO/IEC 9945)操作系統接口規范,兼容POSIX 1003.1b(ISO/IEC 9945-1)實時編程標準[6];支持國軍標GJB7714-2012 操作系統接口規范, 因此數控系統應用軟件可以很方便的基于SylixOS 進行搭建和開發[4]。
SylixOS 提供不同實時性要求的進程,滿足應用軟件各模塊的需要,一方面在SMP 的用戶態下可以達到足夠的實時性, 支持EtherCAT 主站協議棧和實時網卡驅動,也可以提供實時進程支持數控應用軟件強實時性功能模塊的部署;另一方面提供豐富的接口驅動,如USB 驅動、串口驅動、GPIO 驅動、SPI、普通網口驅動等,同時也支持完善的文件系統、圖形系統和TCP/IP 網絡協議棧、信號量等進程間通信接口, 來滿足數控應用軟件弱實時進程和非實時進程的部署。
數控系統應用軟件是數控系統的核心, 是實現數控機床零件加工的關鍵。 基于國產硬件平臺和國產操作系統的數控應用軟件設計更是重中之重。 根據數控應用功能將應用軟件劃分為運控模塊、 預處理模塊、PLC 模塊、界面模塊以及總線模塊。根據實時性要求不同,將上述模塊件歸納為弱實時模塊和強實時模塊, 分別進行不同進程的部署供操作系統調度, 不同進程之間通過共享內存進行數據交互。 弱實時進程包含預處理模塊、 界面模塊等;強實時進程包含PLC 模塊、運控模塊和總線模塊。
(1)預處理模塊。 預處理模塊包含譯碼模塊、刀補模塊及軌跡優化模塊。 譯碼模塊把用戶編寫的標準G 代碼程序解釋成數控系統可以識別的數控指令信息。 刀補模塊功能包括刀具偏置補償和刀具半徑補償。 通常零件程序是以零件輪廓軌跡來編程, 刀具補償的作用是把零件輪廓軌跡轉換成刀具中心軌跡。軌跡優化模塊對譯碼輸出的走刀軌跡進行預處理, 優化因CAM 軟件生成的奇異點或不合理的軌跡點,給后續加減速控制和插補計算提供更合理的運動路徑。
(2)界面模塊。 界面模塊是數控系統的外在呈現,是用戶操作數控系統的入口, 其主要的功能包括系統參數管理、刀具管理、文件管理、程序輸入、加工仿真以及診斷信息監視等。方便、合理的界面模塊設計能提高用戶的使用體驗。
(1)運控模塊。 運控模塊是數控裝置控制核心,包含速度處理、加減速控制和插補計算。速度處理是對軌跡優化后的刀位點進行前瞻速度規劃, 避免機床頻繁啟停的沖擊;加減速控制是對加工軌跡,進行基于數學公式算法的約束計算,使機床控制柔和、平順;插補模塊對上述規劃后的指令進行細分和離散化, 而后周期性輸出給伺服驅動單元。
(2)PLC 模塊。 PLC 模塊是數控系統的可編程邏輯控制模塊,接管外部輸出/輸出信號,比如:機床周邊繼電器開關,傳感器信號,以及操作面板按鍵信號、信號燈等,經過可編程邏輯判斷和運算,轉換為G/F 信號與CNC 數控系統內部交互,實現數控裝置的邏輯控制。
(3)總線模塊。 總線模塊采用IgH 的EtherCAT 主站協議棧, 通過將數控裝置控制數據通過總線發給各從站設備。 從而實現伺服驅動單元、IO 單元等設備的控制。 主站總線模塊實現在本文第6 節中詳述。
通過共享內存對兩進程間交互的數據進行交互。根據交互數據的數據量大小和交互頻率的要求,基于共享內存設計兩種數據交互機制,對于數據量大小固定,交互頻率實時性要求較高的數據,通過共享內存固定地址映射進行交互;對數據量較大,或交互實時性要求不高的數據,通過設計阻塞型交互通信幀的方式,一收一發的進行交互。
本數控系統是使用基于SylixOS 平臺深度優化、修改的IgHEtherCAT 主站協議棧來實現總線連接。IgH 主站協議棧本身是完全開源免費的, 在開發成本和開發效率方面極具優勢。 IgH 具有良好的可移植性,本身被設計成一個支持Linux2.6/3.x 的內核模塊,一般只要帶有網口的硬件的平臺(符合以太網物理層標準802.3u)都可以實現[2]。IgH 運行在內核態下,有較強的實時性,在實時穩定性和同步精度方面都有非常好的表現, 實時抖動可控制在us級別,同步精度達到ns 級別。 本系統的EtherCAT 總線主站實現主要包括IgH 主站協議棧、 網絡設備驅動、IgH 用戶層接口層和數控系統總線應用層[5]。
SylixOS 下IgHEtherCAT 主站協議棧源代碼編譯成內核模塊ec_master.ko, 總線協議功能由此模塊實現,主站與從站的周期數據交互原理是,主站發出周期數據幀,從站依次從中提取各自的數據, 同時把各自需要反饋的數據填回,當周期數據幀到達最后一個從站后,數據幀返回主站。 主從站之間發送的以太網數據幀被稱作過程數據對象。 另外,安裝在SylixOS 實時操作系統內核中的通用實時以太網驅動,是可以直接驅動以太網網卡的,能將標準以太網網口直接轉換成EtherCAT 總線以太網網口,從而獲得滿足要求的實時性。
SylixOS-IgH 提供實時網卡驅動rt_netcard.ko。 網絡設備驅動模塊應該在主站模塊注冊之后再進行注冊,因為主站模塊注冊后為孤立狀態,會等待網路設備連入,網絡設備驅動模塊注冊后, 就有一個真正的物理網絡接口負責收發EtherCAT 數據包。 在數控應用中的實時性要求至關重要,主要影響因素是操作系統和網卡驅動。 因此,SylixOS 實時操作系統需要周期性、準時的調用EtherCAT主站協議棧的發送函數,將過程數據準時送出,而實時網卡驅動需繞過LwIP 協議棧中安全性檢查、路由、出入隊列、分片和重組等相對非必要的網絡傳輸功能,充分保證EtherCAT 數據包的實時性。 其流程如圖4 所示。

圖4 網絡設備驅動流程
IgH 用戶層接口源代碼編譯后是一具體的動態庫,IgH 源代碼把對EtherCAT 主站字符設備的“ioctl”操作全部封裝成用戶層接口函數,這樣用戶不需要面對IgH 協議棧底層實現,只需要了解IgH 用戶層接口函數的意義和使用方式即可。
數控系統總線應用層是數控系統應用軟件和IgH 總線接口層之間的中間層,一側對數控系統應用軟件提供統一的接口函數進行總線數據的交互,使總線主站協議棧對應用模塊透明,另一側對IgH 用戶接口層函數進行調度和狀態轉化,IgHEtherCAT 主站有三種狀態, 分別是孤立狀態、空閑狀態和運行狀態。 孤立狀態是主機在等待其以太網設備連接時的狀態;空閑狀態是當主機已接受所有必需的從站設備但尚未被任何應用程序請求時的狀態;運行狀態即周期通訊階段, 可以通過提供總線配置并交換過程數據的應用程序請求主機。 三種狀態的轉化見圖5。

圖5 主站狀態和轉化
主站模塊注冊之后,主站處于孤立狀態;網絡設備驅動模塊注冊之后,主站處于空閑狀態;數控應用軟件執行時,先進行主站請求操作,接著配置從站并建立數控控制數據和協議棧數據緩沖區的映射關系, 最后激活主站進入運行狀態, 然后數控系統應用軟件周期性的調用接口函數,進行控制數據的收發。 通過總線應用層的設計,可使數據流程更清晰,方便以后實現多總線的支持。
整套設計方案已在廣州數控設備有限公司研發的國產車削中心數控系統GSK988TD 上完成設計和驗證。 該數控系統配套EtherCAT 總線連接伺服驅動器和IO 單元在機床上進行加工試驗,無論精度、表面粗糙度、工件加工一致性都能滿足設計要求, 與原有非國產軟硬件平臺數控系統性能相當。 下一步研發的重點放在軟件可靠性和穩定性上。