盛燎原,何 方
(1.中國科學(xué)院 研究生院,北京 100049;2.中國科學(xué)院沈陽計(jì)算技術(shù)研究所,沈陽 110168;3.沈陽高精數(shù)控技術(shù)有限公司,沈陽 110168)
隨著工業(yè)現(xiàn)場環(huán)境和對(duì)象本身日益復(fù)雜,數(shù)控系統(tǒng)已從簡單的運(yùn)動(dòng)軌跡控制器轉(zhuǎn)變成貫穿數(shù)字化制造全過程的系統(tǒng)級(jí)平臺(tái)[1]。為了滿足工業(yè)領(lǐng)域?qū)Ω咚俑呔默F(xiàn)實(shí)需求,基于以太網(wǎng)的現(xiàn)場總線技術(shù)已經(jīng)得到廣泛的應(yīng)用。其中MECHATROLINK-III就是可以用于運(yùn)動(dòng)控制的現(xiàn)場總線技術(shù)。
現(xiàn)在對(duì)于MECHATROLINK-III總線型數(shù)控系統(tǒng)的測試一般采用伺服模擬器加開關(guān)量手動(dòng)輸入輸出的方式,針對(duì)數(shù)控裝置的IO點(diǎn)采用手動(dòng)的測試方法。這種傳統(tǒng)測試方法不能夠反映出機(jī)床的電氣特性。為了克服現(xiàn)有測試的缺點(diǎn),與數(shù)控機(jī)床形成閉環(huán)測試,模擬數(shù)控系統(tǒng)連接真實(shí)機(jī)床的狀態(tài),本文提出了機(jī)床模擬器的方法。
該機(jī)床模擬器具有以下特點(diǎn):
(1)支持MECHATROLINK-III通信協(xié)議;
(2)實(shí)現(xiàn)對(duì)伺服系統(tǒng)和機(jī)床IO電氣系統(tǒng)的模擬;
(3)實(shí)現(xiàn)一個(gè)測試平臺(tái)對(duì)多個(gè)伺服系統(tǒng)的監(jiān)測顯示;
(4)對(duì)通信中的錯(cuò)誤進(jìn)行檢測并進(jìn)行相應(yīng)處理。
MECHATROLINK-III是一種第三代工業(yè)以太網(wǎng)總線,通過一臺(tái)控制器來分開控制多個(gè)從屬裝置的現(xiàn)場網(wǎng)絡(luò),可實(shí)現(xiàn)實(shí)時(shí)、準(zhǔn)確地接收和發(fā)送用于控制的位置數(shù)據(jù)、速度數(shù)據(jù)、輸入輸出狀態(tài)等信息,完成靈活、高精度的運(yùn)動(dòng)控制的應(yīng)用[2]。MECHA-TROLINK-III的傳輸速率為100Mbps,最小傳輸周期為31.25us,最多可以連接62個(gè)從站。站間距離為0.2m到100m,無論系統(tǒng)的規(guī)模大小均可對(duì)應(yīng)而且連接方式靈活可以采用級(jí)聯(lián)或者星形。
MECHATROLINK-III網(wǎng)絡(luò)的基本協(xié)議棧相當(dāng)于OSI(Open System Interconnection)基本模型中的一二七層[3]。對(duì)應(yīng)關(guān)系如表1所示。
表1OSI與MECHATROLINK-III對(duì)應(yīng)表
物理層通過物理介質(zhì)實(shí)現(xiàn)各個(gè)節(jié)點(diǎn)間比特流的傳輸,使用IEEE802.3u標(biāo)準(zhǔn)。數(shù)據(jù)鏈路層利用物理層提供的服務(wù)進(jìn)行主站和從站之間的數(shù)據(jù)傳輸,提供非連接型的服務(wù)執(zhí)行傳輸周期內(nèi)重新發(fā)送控制和信息通信的流程控制。該層由介質(zhì)訪問控制子層(MAC)和邏輯鏈路控制子層(LLC)兩個(gè)子層組成。MAC功能由專用通信ASIC來實(shí)現(xiàn),LLC的功能由軟件來實(shí)現(xiàn)。應(yīng)用層提供主站與從站之間的通信和控制相關(guān)的服務(wù)。
本文提出的機(jī)床模擬器包括硬件板卡和機(jī)床模擬器軟件兩部分。硬件板卡采用工業(yè)CPU卡加模擬板卡的架構(gòu)設(shè)計(jì)。其中,工業(yè)CPU作為整個(gè)系統(tǒng)的模擬運(yùn)算平臺(tái);模擬板卡由MECHATROLINK-III通信接口模塊、SSB接口模塊、FPGA模塊和PCI接口模塊組成。模擬板卡中各個(gè)模塊的功能如下:MECHATROLINK-III通信接口模塊處理 MECHATRLINK-III通信,SSB接口模塊與數(shù)控系統(tǒng)交換機(jī)床電氣信息,F(xiàn)PGA模塊對(duì)通信模塊和SSB接口模塊進(jìn)行控制,PCI接口模塊用來橋接各個(gè)模塊。軟件運(yùn)行在設(shè)計(jì)的硬件系統(tǒng)上,與硬件系統(tǒng)相互配合完成伺服系統(tǒng)和機(jī)床IO電氣的模擬。
數(shù)控裝置通過MECHATROLINK-III總線傳輸伺服命令同時(shí)通過IO盒傳輸機(jī)床電氣IO信號(hào)。機(jī)床模擬與數(shù)控裝置的連接如圖1所示。系統(tǒng)的工作過程如下:數(shù)控裝置中的數(shù)控軟件按照 MECHATROLINK-III協(xié)議格式發(fā)出伺服命令,通過總線發(fā)送到機(jī)床模擬器硬件板卡;機(jī)床模擬器軟件對(duì)命令進(jìn)行解析并模擬執(zhí)行生成響應(yīng),再按照總線協(xié)議規(guī)范將生成的命令響應(yīng)返回給數(shù)控裝置。IO的電器特性模擬過程是數(shù)控裝置通過SSB遠(yuǎn)程IO盒收發(fā)來自機(jī)床模擬器的離散電器信號(hào),機(jī)床模擬器同樣通過一個(gè)SSB遠(yuǎn)程IO盒作為同數(shù)控裝置的離散電器接口。模擬器軟件通過對(duì)機(jī)床外部信號(hào)的模擬和響應(yīng)實(shí)現(xiàn)同數(shù)控裝置的信號(hào)交互。機(jī)床的的伺服狀態(tài)和模擬IO電氣狀態(tài)可通過人機(jī)接口界面進(jìn)行顯示。
圖1 模擬系統(tǒng)與數(shù)控裝置連接圖
在硬件設(shè)計(jì)中工業(yè)CPU卡采用工業(yè)用CPU板卡,所以硬件的設(shè)計(jì)與實(shí)現(xiàn)主要完成模擬板卡的設(shè)計(jì)與實(shí)現(xiàn)。
模擬板卡硬件電路由MECHATROLINK-III通信接口、FPGA模塊、PCI接口電路和SSB接口電路組成。MECHATROLINK-III通信接口電路主要完成MECHATROLINK-III通信的物理層和數(shù)據(jù)鏈路層。物理層采用國家半導(dǎo)體公司的DP83849,該芯片為單端口以太網(wǎng)收發(fā)芯片,以實(shí)現(xiàn)以太網(wǎng)接口;數(shù)據(jù)鏈路層采用安川電機(jī)的MECHATROLINK-III協(xié)議處理芯片JL101,該芯片通過MII(Medium Independent Interface,媒體獨(dú)立接口)同DP83849通信。為了增強(qiáng)抗干擾能力,在外部電路中采用隔離變壓器的隔離電路[4-5]。通信接口功能框圖如圖2所示。
圖2MECHATROLINK-III通信電路
FPGA模塊以FPGA芯片為核心,采用Altera公司的Cyclone系列芯片EP1C12Q240。FPGA芯片在整個(gè)系統(tǒng)中的作用主要是完成對(duì)通信接口和SSB接口電路的控制。SSB接口電路采用RS422驅(qū)動(dòng)電路,完成與IO盒的通信。PCI接口電路采用PLX公司的PCI9052接口芯片,該芯片可以與多種局部總線相連接[6]。
FPGA邏輯設(shè)計(jì)采用VHDL語言編程實(shí)現(xiàn),使用Quartus II軟件進(jìn)行編譯仿真和綜合適配后將生成的配置文件下載到FPGA中實(shí)現(xiàn)相應(yīng)的功能[7]。FPGA邏輯設(shè)計(jì)采用自上而下的模塊化設(shè)計(jì)方式,如圖3所示,F(xiàn)PGA內(nèi)部包括輸入寄存器組模塊、輸出寄存器組模塊、SSB電路控制模塊、時(shí)序控制模塊和總線接口模塊,模塊之間相互關(guān)聯(lián)并被頂層文件調(diào)用??刂瓶偩€接口模塊實(shí)現(xiàn)FPGA與外部的通信和數(shù)據(jù)連接。時(shí)序控制模塊控制FPGA內(nèi)部時(shí)序邏輯和時(shí)鐘頻率。輸入寄存器組模塊和輸出寄存器組模塊完成對(duì)MECHATROLINK-III通信模塊中 JL101的控制,可以實(shí)現(xiàn)復(fù)位、中斷和狀態(tài)等的控制。SSB電路控制模塊完成對(duì)SSB接口電路的控制功能,周期性的采集和發(fā)送機(jī)床IO電氣信號(hào)。
圖3 FPGA內(nèi)部模塊圖
軟件的設(shè)計(jì)開發(fā)環(huán)境采用RTLinux系統(tǒng),該系統(tǒng)在硬件板卡上搭建完成,程序編寫使用C語言。軟件的組成包括針對(duì)硬件板卡的專用驅(qū)動(dòng)程序、實(shí)現(xiàn)MECHATROLINK-III協(xié)議的協(xié)議軟件、模擬伺服和機(jī)床電氣信號(hào)的機(jī)床模擬軟件以及用于信息顯示的用戶界面。
專用驅(qū)動(dòng)程序主要完成PCI設(shè)備的注冊(cè)、設(shè)備地址映射、注冊(cè)中斷和中斷服務(wù),使系統(tǒng)能夠使用PCI總線連接工業(yè)CPU和通信ASIC。驅(qū)動(dòng)程序的實(shí)現(xiàn)采用模塊化編程方式,具體包括初始化設(shè)備模塊、設(shè)備打開模塊、數(shù)據(jù)讀寫和控制模塊、中斷處理模塊、設(shè)備釋放模塊、設(shè)備卸載模塊[8]。驅(qū)動(dòng)程序完整的工作流程如圖4所示。
圖4 PCI驅(qū)動(dòng)工作流程
通信協(xié)議軟件主要完成MECHATROLINK-III通信協(xié)議相關(guān)的處理,包括與主站建立連接,按照主站的要求進(jìn)行通信等。
協(xié)議軟件的處理過程如圖5所示。在初始化的時(shí)候捕獲ASIC的狀態(tài),檢查專用芯片是否準(zhǔn)備就緒,然后采用多次讀寫的方式來檢測通用SRAM是否可用。初始化設(shè)置主要完成站地址設(shè)置和通信參數(shù)的設(shè)置。在初始化設(shè)置過程中,把專用芯片配置成多地址從站方式,即一個(gè)從站擁有多個(gè)地址,從而可以模擬多個(gè)伺服電機(jī),以及實(shí)現(xiàn)對(duì)不同從站的監(jiān)控。通信模式分為周期通信和事件驅(qū)動(dòng)通信,根據(jù)主站的設(shè)置進(jìn)行選擇。在與數(shù)控系統(tǒng)建立連接后,把從數(shù)控系統(tǒng)接收的命令傳給模擬軟件,模擬軟件對(duì)該命令進(jìn)行處理后再經(jīng)過協(xié)議軟件返回給數(shù)控系統(tǒng)。在初始化和通信階段可以對(duì)模式設(shè)置錯(cuò)誤、用戶參數(shù)設(shè)置錯(cuò)誤等進(jìn)行檢測,可檢測的部分錯(cuò)誤返回碼如表2所示。
圖5 協(xié)議處理過程
表2 錯(cuò)誤類型及返回碼
模擬軟件主要是完成伺服系統(tǒng)和機(jī)床電氣的模擬。根據(jù)其功能特點(diǎn)模擬軟件主要包括伺服模擬和機(jī)床電氣模擬兩部分。為了完成伺服的模擬實(shí)現(xiàn)了完整的伺服命令集,在接收到數(shù)控軟件發(fā)送來的伺服命令后判斷命令的類型,然后模擬執(zhí)行相應(yīng)的命令,執(zhí)行完成之后按照命令格式生成響應(yīng)。機(jī)床電氣模擬主要通過機(jī)床離散信號(hào)發(fā)生器來實(shí)現(xiàn),在接收到機(jī)床電氣信號(hào)后,根據(jù)機(jī)床電氣執(zhí)行序列由機(jī)床離散信號(hào)發(fā)生器生成相應(yīng)的開關(guān)量等信息。
為了完成界面與模擬軟件的數(shù)據(jù)交換通過采用mbuff_alloc開辟一塊共享內(nèi)存,與界面交互的數(shù)據(jù)結(jié)構(gòu)定義如下:
其中stno是伺服電機(jī)編號(hào),rcv是接收的數(shù)據(jù),snd是發(fā)送的數(shù)據(jù),servo_status是伺服電機(jī)的狀態(tài),speed是速度信息,error是錯(cuò)誤信息,io_status是IO狀態(tài)。
顯示界面采用基于Linux Redhat9.0平臺(tái)的開發(fā)環(huán)境,選擇Trolltech公司的Qt GUI類庫作為API應(yīng)用程序接口,主要包括兩個(gè)功能模塊:主界面和圖形繪制界面。主界面可以分為兩組可以支持最多同時(shí)顯示16個(gè)機(jī)床模擬器的基本信息,包括狀態(tài)參數(shù)、實(shí)際反饋值以及速度值;按鍵觸發(fā)事件主要采用Qt里的Signal和Slot通信機(jī)制完成。圖形繪制界面通過在指定周期范圍內(nèi)采集特殊點(diǎn)并利用界面顯示的狀態(tài)參數(shù)來繪制圖形。刷新點(diǎn)的坐標(biāo)是利用Qt里的定時(shí)器QTimer來定時(shí)確定的;圖形渲染處理主要應(yīng)用QOpengl GUI開發(fā)包,其內(nèi)置了豐富的圖形渲染API接口[9-10]。
通過對(duì)MECHATROLINK-III通信協(xié)議的研究和前人工作的總結(jié)借鑒,本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)符合MECHATROLINK-III通信協(xié)議的機(jī)床模擬器。在數(shù)控系統(tǒng)的實(shí)際使用中,該模擬器可以避免批量化測試數(shù)控機(jī)床帶來的不便和采用伺服模擬器加開關(guān)量手動(dòng)輸入輸出的方式的缺點(diǎn)。
[1]徐秀敏,何方,等.MECHATROLINK-III總線I/O從站設(shè)計(jì)與實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2011(2):66-69,74.
[2]陳艷,何方.基于MECHATROLINK-III總線的伺服模擬器的設(shè)計(jì)與實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2012(9):72-75.
[3]YASKAWA Documents[Z].MECHATROLINK-III Protocol User’s Manual 2008.
[4]Xiumin Xu,F(xiàn)ang He,etc.Design and Implementation of MECHATROLINK-III Bus Slave Station Based on SOPC[C].The 2010 International Conference on Computational and information Science(ICCIS2010).2010,12.
[5]何方,徐秀敏,等.基于FPGA的M-III智能從站接口卡的設(shè)計(jì)與實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2011(12):41 -43,48.
[6]周潤景,劉夢(mèng)男,等.Cadence高速電路板設(shè)計(jì)與仿真:原理圖與PCB設(shè)計(jì)(第4版)[M].北京:電子工業(yè)出版社,2011.
[7]EDA先鋒工作室.Altera FPGA/CPLD設(shè)計(jì)(基礎(chǔ)篇)[M].北京:人民郵電出版社,2005.
[8]Jonathan Corbet,等著,魏永明,等譯.LINUX設(shè)備驅(qū)動(dòng)程序[M].北京:中國電力出版社,2011.
[9]成潔,盧紫毅.Linux窗口程序設(shè)計(jì)-Qt4精彩實(shí)例分析[M].北京:清華大學(xué)出版社,2008.
[10]Jasmin Blanchette,Mark Summerfield著,閆峰欣,曾泉人等譯.C++GUI Qt4編程(第二版)[M].北京:電子工業(yè)出版社,2011.