蘇 軍
(廣州數(shù)控信息科技有限公司, 廣東廣州 510535)
數(shù)控系統(tǒng)是機(jī)床母機(jī)的“大腦”,是現(xiàn)代裝備制造業(yè)的核心, 目前行業(yè)內(nèi)數(shù)控系統(tǒng)的基礎(chǔ)軟硬件對外依賴程度太高,存在斷供,“卡脖子”的風(fēng)險(xiǎn)。另外,隨著國民經(jīng)濟(jì)的發(fā)展和制造技術(shù)的迅猛發(fā)展,各行業(yè)對高性能,柔性加工的需求不斷提高,對數(shù)控行業(yè)的信息化、數(shù)字化、智能化要求也日益增加, 因此面向國產(chǎn)基礎(chǔ)軟硬件的數(shù)控系統(tǒng)的研究開發(fā)是具有十分重要意義[1]。
以全國產(chǎn)化的器件搭建數(shù)控系統(tǒng)硬件平臺, 基于國產(chǎn)實(shí)時(shí)操作系統(tǒng)SylixOS 搭建數(shù)控系統(tǒng)軟件架構(gòu), 使用開源的IgH EtherCAT 主站協(xié)議棧連接伺服從站和IO 單元從站。 系統(tǒng)總體方案框圖,見圖1。
圖1 系統(tǒng)總體方案框圖
數(shù)控系統(tǒng)硬件平臺完全由全國產(chǎn)化器件搭建,采用國產(chǎn)高性能CPU 處理器, 核心元器件包括FPGA、 驅(qū)動光耦、 總線PHY 芯片等均采用國產(chǎn)品牌產(chǎn)品, 具體產(chǎn)品型號此處不詳細(xì)列舉, 硬件框圖見圖2。
圖2 數(shù)控系統(tǒng)硬件框圖
數(shù)控系統(tǒng)軟件基于SylixOS 實(shí)時(shí)操作系統(tǒng)進(jìn)行部署,系統(tǒng)軟件根據(jù)應(yīng)用功能進(jìn)行劃分,根據(jù)實(shí)時(shí)性要求確定不同的優(yōu)先級,然后由操作系統(tǒng)進(jìn)行統(tǒng)一調(diào)度。
整體軟件架構(gòu)如圖3 所示。由SylixOS 實(shí)時(shí)操作系統(tǒng)實(shí)現(xiàn)對硬件接口及外設(shè)的驅(qū)動, 并移植IgH EtherCAT Master 協(xié)議棧,支持TCP/IP 等網(wǎng)絡(luò)協(xié)議,提供文件系統(tǒng)、圖形系統(tǒng)等接口; 各數(shù)控系統(tǒng)應(yīng)用軟件模塊根據(jù)實(shí)時(shí)性要求放入不同的進(jìn)程,由操作系統(tǒng)統(tǒng)一調(diào)度,不同實(shí)時(shí)性的進(jìn)程間,通過共享內(nèi)存進(jìn)行數(shù)據(jù)交互。
圖3 軟件架構(gòu)框圖
SylixOS 是大型搶占式多任務(wù)硬實(shí)時(shí)操作系統(tǒng),依據(jù)工信部評估報(bào)告,SylixOS 操作系統(tǒng)內(nèi)核自主化率達(dá)100%, 是完全自主的國產(chǎn)操作系統(tǒng), 支持ARM、MIPS、PowerPC、x86 等多種架構(gòu)處理器,支持主流國產(chǎn)通用處理器[3]。兼容IEEE 1003(ISO/IEC 9945)操作系統(tǒng)接口規(guī)范,兼容POSIX 1003.1b(ISO/IEC 9945-1)實(shí)時(shí)編程標(biāo)準(zhǔn)[6];支持國軍標(biāo)GJB7714-2012 操作系統(tǒng)接口規(guī)范, 因此數(shù)控系統(tǒng)應(yīng)用軟件可以很方便的基于SylixOS 進(jìn)行搭建和開發(fā)[4]。
SylixOS 提供不同實(shí)時(shí)性要求的進(jìn)程,滿足應(yīng)用軟件各模塊的需要,一方面在SMP 的用戶態(tài)下可以達(dá)到足夠的實(shí)時(shí)性, 支持EtherCAT 主站協(xié)議棧和實(shí)時(shí)網(wǎng)卡驅(qū)動,也可以提供實(shí)時(shí)進(jìn)程支持?jǐn)?shù)控應(yīng)用軟件強(qiáng)實(shí)時(shí)性功能模塊的部署;另一方面提供豐富的接口驅(qū)動,如USB 驅(qū)動、串口驅(qū)動、GPIO 驅(qū)動、SPI、普通網(wǎng)口驅(qū)動等,同時(shí)也支持完善的文件系統(tǒng)、圖形系統(tǒng)和TCP/IP 網(wǎng)絡(luò)協(xié)議棧、信號量等進(jìn)程間通信接口, 來滿足數(shù)控應(yīng)用軟件弱實(shí)時(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程的部署。
數(shù)控系統(tǒng)應(yīng)用軟件是數(shù)控系統(tǒng)的核心, 是實(shí)現(xiàn)數(shù)控機(jī)床零件加工的關(guān)鍵。 基于國產(chǎn)硬件平臺和國產(chǎn)操作系統(tǒng)的數(shù)控應(yīng)用軟件設(shè)計(jì)更是重中之重。 根據(jù)數(shù)控應(yīng)用功能將應(yīng)用軟件劃分為運(yùn)控模塊、 預(yù)處理模塊、PLC 模塊、界面模塊以及總線模塊。根據(jù)實(shí)時(shí)性要求不同,將上述模塊件歸納為弱實(shí)時(shí)模塊和強(qiáng)實(shí)時(shí)模塊, 分別進(jìn)行不同進(jìn)程的部署供操作系統(tǒng)調(diào)度, 不同進(jìn)程之間通過共享內(nèi)存進(jìn)行數(shù)據(jù)交互。 弱實(shí)時(shí)進(jìn)程包含預(yù)處理模塊、 界面模塊等;強(qiáng)實(shí)時(shí)進(jìn)程包含PLC 模塊、運(yùn)控模塊和總線模塊。
(1)預(yù)處理模塊。 預(yù)處理模塊包含譯碼模塊、刀補(bǔ)模塊及軌跡優(yōu)化模塊。 譯碼模塊把用戶編寫的標(biāo)準(zhǔn)G 代碼程序解釋成數(shù)控系統(tǒng)可以識別的數(shù)控指令信息。 刀補(bǔ)模塊功能包括刀具偏置補(bǔ)償和刀具半徑補(bǔ)償。 通常零件程序是以零件輪廓軌跡來編程, 刀具補(bǔ)償?shù)淖饔檬前蚜慵喞壽E轉(zhuǎn)換成刀具中心軌跡。軌跡優(yōu)化模塊對譯碼輸出的走刀軌跡進(jìn)行預(yù)處理, 優(yōu)化因CAM 軟件生成的奇異點(diǎn)或不合理的軌跡點(diǎn),給后續(xù)加減速控制和插補(bǔ)計(jì)算提供更合理的運(yùn)動路徑。
(2)界面模塊。 界面模塊是數(shù)控系統(tǒng)的外在呈現(xiàn),是用戶操作數(shù)控系統(tǒng)的入口, 其主要的功能包括系統(tǒng)參數(shù)管理、刀具管理、文件管理、程序輸入、加工仿真以及診斷信息監(jiān)視等。方便、合理的界面模塊設(shè)計(jì)能提高用戶的使用體驗(yàn)。
(1)運(yùn)控模塊。 運(yùn)控模塊是數(shù)控裝置控制核心,包含速度處理、加減速控制和插補(bǔ)計(jì)算。速度處理是對軌跡優(yōu)化后的刀位點(diǎn)進(jìn)行前瞻速度規(guī)劃, 避免機(jī)床頻繁啟停的沖擊;加減速控制是對加工軌跡,進(jìn)行基于數(shù)學(xué)公式算法的約束計(jì)算,使機(jī)床控制柔和、平順;插補(bǔ)模塊對上述規(guī)劃后的指令進(jìn)行細(xì)分和離散化, 而后周期性輸出給伺服驅(qū)動單元。
(2)PLC 模塊。 PLC 模塊是數(shù)控系統(tǒng)的可編程邏輯控制模塊,接管外部輸出/輸出信號,比如:機(jī)床周邊繼電器開關(guān),傳感器信號,以及操作面板按鍵信號、信號燈等,經(jīng)過可編程邏輯判斷和運(yùn)算,轉(zhuǎn)換為G/F 信號與CNC 數(shù)控系統(tǒng)內(nèi)部交互,實(shí)現(xiàn)數(shù)控裝置的邏輯控制。
(3)總線模塊。 總線模塊采用IgH 的EtherCAT 主站協(xié)議棧, 通過將數(shù)控裝置控制數(shù)據(jù)通過總線發(fā)給各從站設(shè)備。 從而實(shí)現(xiàn)伺服驅(qū)動單元、IO 單元等設(shè)備的控制。 主站總線模塊實(shí)現(xiàn)在本文第6 節(jié)中詳述。
通過共享內(nèi)存對兩進(jìn)程間交互的數(shù)據(jù)進(jìn)行交互。根據(jù)交互數(shù)據(jù)的數(shù)據(jù)量大小和交互頻率的要求,基于共享內(nèi)存設(shè)計(jì)兩種數(shù)據(jù)交互機(jī)制,對于數(shù)據(jù)量大小固定,交互頻率實(shí)時(shí)性要求較高的數(shù)據(jù),通過共享內(nèi)存固定地址映射進(jìn)行交互;對數(shù)據(jù)量較大,或交互實(shí)時(shí)性要求不高的數(shù)據(jù),通過設(shè)計(jì)阻塞型交互通信幀的方式,一收一發(fā)的進(jìn)行交互。
本數(shù)控系統(tǒng)是使用基于SylixOS 平臺深度優(yōu)化、修改的IgHEtherCAT 主站協(xié)議棧來實(shí)現(xiàn)總線連接。IgH 主站協(xié)議棧本身是完全開源免費(fèi)的, 在開發(fā)成本和開發(fā)效率方面極具優(yōu)勢。 IgH 具有良好的可移植性,本身被設(shè)計(jì)成一個(gè)支持Linux2.6/3.x 的內(nèi)核模塊,一般只要帶有網(wǎng)口的硬件的平臺(符合以太網(wǎng)物理層標(biāo)準(zhǔn)802.3u)都可以實(shí)現(xiàn)[2]。IgH 運(yùn)行在內(nèi)核態(tài)下,有較強(qiáng)的實(shí)時(shí)性,在實(shí)時(shí)穩(wěn)定性和同步精度方面都有非常好的表現(xiàn), 實(shí)時(shí)抖動可控制在us級別,同步精度達(dá)到ns 級別。 本系統(tǒng)的EtherCAT 總線主站實(shí)現(xiàn)主要包括IgH 主站協(xié)議棧、 網(wǎng)絡(luò)設(shè)備驅(qū)動、IgH 用戶層接口層和數(shù)控系統(tǒng)總線應(yīng)用層[5]。
SylixOS 下IgHEtherCAT 主站協(xié)議棧源代碼編譯成內(nèi)核模塊ec_master.ko, 總線協(xié)議功能由此模塊實(shí)現(xiàn),主站與從站的周期數(shù)據(jù)交互原理是,主站發(fā)出周期數(shù)據(jù)幀,從站依次從中提取各自的數(shù)據(jù), 同時(shí)把各自需要反饋的數(shù)據(jù)填回,當(dāng)周期數(shù)據(jù)幀到達(dá)最后一個(gè)從站后,數(shù)據(jù)幀返回主站。 主從站之間發(fā)送的以太網(wǎng)數(shù)據(jù)幀被稱作過程數(shù)據(jù)對象。 另外,安裝在SylixOS 實(shí)時(shí)操作系統(tǒng)內(nèi)核中的通用實(shí)時(shí)以太網(wǎng)驅(qū)動,是可以直接驅(qū)動以太網(wǎng)網(wǎng)卡的,能將標(biāo)準(zhǔn)以太網(wǎng)網(wǎng)口直接轉(zhuǎn)換成EtherCAT 總線以太網(wǎng)網(wǎng)口,從而獲得滿足要求的實(shí)時(shí)性。
SylixOS-IgH 提供實(shí)時(shí)網(wǎng)卡驅(qū)動rt_netcard.ko。 網(wǎng)絡(luò)設(shè)備驅(qū)動模塊應(yīng)該在主站模塊注冊之后再進(jìn)行注冊,因?yàn)橹髡灸K注冊后為孤立狀態(tài),會等待網(wǎng)路設(shè)備連入,網(wǎng)絡(luò)設(shè)備驅(qū)動模塊注冊后, 就有一個(gè)真正的物理網(wǎng)絡(luò)接口負(fù)責(zé)收發(fā)EtherCAT 數(shù)據(jù)包。 在數(shù)控應(yīng)用中的實(shí)時(shí)性要求至關(guān)重要,主要影響因素是操作系統(tǒng)和網(wǎng)卡驅(qū)動。 因此,SylixOS 實(shí)時(shí)操作系統(tǒng)需要周期性、準(zhǔn)時(shí)的調(diào)用EtherCAT主站協(xié)議棧的發(fā)送函數(shù),將過程數(shù)據(jù)準(zhǔn)時(shí)送出,而實(shí)時(shí)網(wǎng)卡驅(qū)動需繞過LwIP 協(xié)議棧中安全性檢查、路由、出入隊(duì)列、分片和重組等相對非必要的網(wǎng)絡(luò)傳輸功能,充分保證EtherCAT 數(shù)據(jù)包的實(shí)時(shí)性。 其流程如圖4 所示。
圖4 網(wǎng)絡(luò)設(shè)備驅(qū)動流程
IgH 用戶層接口源代碼編譯后是一具體的動態(tài)庫,IgH 源代碼把對EtherCAT 主站字符設(shè)備的“ioctl”操作全部封裝成用戶層接口函數(shù),這樣用戶不需要面對IgH 協(xié)議棧底層實(shí)現(xiàn),只需要了解IgH 用戶層接口函數(shù)的意義和使用方式即可。
數(shù)控系統(tǒng)總線應(yīng)用層是數(shù)控系統(tǒng)應(yīng)用軟件和IgH 總線接口層之間的中間層,一側(cè)對數(shù)控系統(tǒng)應(yīng)用軟件提供統(tǒng)一的接口函數(shù)進(jìn)行總線數(shù)據(jù)的交互,使總線主站協(xié)議棧對應(yīng)用模塊透明,另一側(cè)對IgH 用戶接口層函數(shù)進(jìn)行調(diào)度和狀態(tài)轉(zhuǎn)化,IgHEtherCAT 主站有三種狀態(tài), 分別是孤立狀態(tài)、空閑狀態(tài)和運(yùn)行狀態(tài)。 孤立狀態(tài)是主機(jī)在等待其以太網(wǎng)設(shè)備連接時(shí)的狀態(tài);空閑狀態(tài)是當(dāng)主機(jī)已接受所有必需的從站設(shè)備但尚未被任何應(yīng)用程序請求時(shí)的狀態(tài);運(yùn)行狀態(tài)即周期通訊階段, 可以通過提供總線配置并交換過程數(shù)據(jù)的應(yīng)用程序請求主機(jī)。 三種狀態(tài)的轉(zhuǎn)化見圖5。
圖5 主站狀態(tài)和轉(zhuǎn)化
主站模塊注冊之后,主站處于孤立狀態(tài);網(wǎng)絡(luò)設(shè)備驅(qū)動模塊注冊之后,主站處于空閑狀態(tài);數(shù)控應(yīng)用軟件執(zhí)行時(shí),先進(jìn)行主站請求操作,接著配置從站并建立數(shù)控控制數(shù)據(jù)和協(xié)議棧數(shù)據(jù)緩沖區(qū)的映射關(guān)系, 最后激活主站進(jìn)入運(yùn)行狀態(tài), 然后數(shù)控系統(tǒng)應(yīng)用軟件周期性的調(diào)用接口函數(shù),進(jìn)行控制數(shù)據(jù)的收發(fā)。 通過總線應(yīng)用層的設(shè)計(jì),可使數(shù)據(jù)流程更清晰,方便以后實(shí)現(xiàn)多總線的支持。
整套設(shè)計(jì)方案已在廣州數(shù)控設(shè)備有限公司研發(fā)的國產(chǎn)車削中心數(shù)控系統(tǒng)GSK988TD 上完成設(shè)計(jì)和驗(yàn)證。 該數(shù)控系統(tǒng)配套EtherCAT 總線連接伺服驅(qū)動器和IO 單元在機(jī)床上進(jìn)行加工試驗(yàn),無論精度、表面粗糙度、工件加工一致性都能滿足設(shè)計(jì)要求, 與原有非國產(chǎn)軟硬件平臺數(shù)控系統(tǒng)性能相當(dāng)。 下一步研發(fā)的重點(diǎn)放在軟件可靠性和穩(wěn)定性上。