張建華 葛紅宇 李宏勝 方 力
(南京工程學院自動化學院,江蘇南京 211167)
網絡化是運動控制、數(shù)控技術等領域的重要發(fā)展方向。結合商業(yè)化的CAN總線、485總線等技術,相關的研究人員與機構推出一系列的網絡化運動控制器、數(shù)控系統(tǒng)網絡等工業(yè)化產品[1-2]。近年來,以太網技術的飛速進步,使基于串行通信協(xié)議的運動控制網絡受到業(yè)內各界的廣泛重視,先后出現(xiàn)了SERCOSII、Powerlink、Profinet等專用運動控制網絡協(xié)議。其硬件傳輸媒介主要采用RS-485、光纖、Fire Wire與以太網4種,各有自身獨特的優(yōu)勢,同時也都擁有一定的市場份額[3-5]。其中Synqnet運動控制網絡采用全雙工傳輸模式,通信周期小于25 μs,雙向傳輸速度可達200 Mb/s,突出的性能優(yōu)勢使其迅速得到相關專業(yè)廠商的認可,并迅速被市場采用[6]。
根據(jù)上述發(fā)展,本文在多軸聯(lián)動數(shù)控網絡研究中,參考商業(yè)化的Synqnet控制網絡結構與協(xié)議并進行適當?shù)暮喕?、修訂,同時結合數(shù)控系統(tǒng)的技術特點,基于大規(guī)??删幊踢壿嬈骷﨔PGA,研究多軸聯(lián)動高速運動控制網絡的拓撲結構、傳輸協(xié)議、聯(lián)動控制方法及其實現(xiàn)技術[7-9]。
本文所用運動控制網絡結構如圖1,主控計算機在完成指令輸入、譯碼、校驗、刀具補償后將得到的多軸運動控制指令直接通過局部總線傳給主節(jié)點Host,再由主節(jié)點Host通過本文所設計的類Synqnet協(xié)議傳至各從節(jié)點Slave。從節(jié)點不僅完成指令數(shù)據(jù)的接收、通信功能,還負責各運動軸的聯(lián)動控制。Slave節(jié)點上,各運動軸的插補控制信號由運動控制器內帶有類Synqnet協(xié)議的運動控制芯片實現(xiàn)。相對現(xiàn)有運動控制網絡,圖示的網絡結構將節(jié)點上各運動軸的插補控制算法集成到節(jié)點控制中,因此節(jié)點上的各軸聯(lián)動操作不需要額外的插補控制器;同時,節(jié)點間各軸的插補運動通過網絡的高速數(shù)據(jù)傳輸保證。因而,該種網絡結構易于實現(xiàn)多軸運動的強實時控制。
上述的控制網絡中,主節(jié)點通過主控芯片接收CPU送來的并行數(shù)據(jù),計算校驗碼,將二者轉換為網絡介質要求的四位數(shù)據(jù),根據(jù)專用數(shù)據(jù)傳輸協(xié)議發(fā)送至類Synqnet網絡。從節(jié)點利用運動控制芯片接收來自類Synqnet網絡的數(shù)據(jù),同時進行數(shù)據(jù)轉換、校驗,而后根據(jù)數(shù)據(jù)指令初始化運動參數(shù),驅動插補控制模塊,發(fā)出指令脈沖至相應驅動器。
本文的類Synqnet總線沿用商業(yè)以太網的雙絞線與物理層接口PHY,同時設計專門的通訊協(xié)議與節(jié)點邏輯控制電路與芯片,以簡化傳輸,提高效率。
主節(jié)點的邏輯控制電路基本結構如圖2,它主要完成數(shù)據(jù)發(fā)送及狀態(tài)監(jiān)控等功能,通過專門設計的專用節(jié)點控制芯片實現(xiàn)。整個控制芯片由CPU讀寫控制、FIFO、16-4位數(shù)據(jù)轉換、FIFO狀態(tài)監(jiān)控,數(shù)據(jù)發(fā)送與發(fā)送狀態(tài)監(jiān)控等模塊構成。
主控芯片通過CPU讀寫控制接收CPU的16位并行數(shù)據(jù)、計算16位循環(huán)冗余碼,根據(jù)網絡介質要求將其轉換為四位數(shù)據(jù),而后響應發(fā)送時鐘TXC,將數(shù)據(jù)發(fā)至類Synqnet網絡。從節(jié)點收到數(shù)據(jù),進行串并轉換、循環(huán)冗余校驗,傳輸錯誤,向主節(jié)點發(fā)出重發(fā)請求,請求重發(fā)數(shù)據(jù)封包。
2.2.1 數(shù)據(jù)格式
本文的數(shù)據(jù)傳輸過程分為參數(shù)設置與數(shù)據(jù)傳輸兩個階段,分別處理兩類數(shù)據(jù)封包-設置封包與數(shù)據(jù)封包。設置封包的數(shù)據(jù)格式如表1,起始字為4位數(shù)據(jù)“1000”,結束字“1001”,校驗采用取反校驗,傳送起始字、結束字、設置數(shù)據(jù)的同時,輸出反碼供校驗。
表1 設置封包結構
數(shù)據(jù)封包的結構與設置封包類似,也包括起始字、數(shù)據(jù)與結束字3個段,且起始字、結束字與校驗碼均與設置封包相同,只是所傳輸?shù)臄?shù)據(jù)采用16位循環(huán)冗余校驗。
2.2.2 發(fā)送時序邏輯設計
發(fā)送電路遵從IEEE802標準,響應發(fā)送時鐘TXC發(fā)送數(shù)據(jù)。根據(jù)兩類封包的數(shù)據(jù)格式,發(fā)送模塊設置芯片的10個狀態(tài),分別對應設置封包與數(shù)據(jù)封包各數(shù)據(jù)的發(fā)送過程,如表2。
表2 發(fā)送過程控制芯片狀態(tài)字
如果FIFO不空,主節(jié)點控制芯片根據(jù)FIFO讀寫指針計算待發(fā)數(shù)據(jù)長度(以字為單位),進入?yún)?shù)設置段,啟動一次傳送過程。而后,在發(fā)送時鐘TXC下降沿上,控制芯片檢測芯片狀態(tài)與網絡傳輸狀態(tài),若傳輸正常,根據(jù)狀態(tài)依次送出起始字及校驗碼、設置數(shù)據(jù)及校驗碼、結束字及校驗碼,同時依次修改芯片的相應狀態(tài)。發(fā)送過程中,檢測到網絡傳輸出錯,芯片重置空閑狀態(tài)S0,清出錯標志,重復上述過程,重發(fā)設置封包。
數(shù)據(jù)傳送段,控制芯片首先送出起始字與校驗碼,啟動數(shù)據(jù)封包發(fā)送,校驗無誤,從FIFO中取一字(2字節(jié))作為發(fā)送數(shù)據(jù)的高16位,同時計算16位循環(huán)冗余碼作為發(fā)送數(shù)據(jù)的低16位,從高到低,依次從發(fā)送數(shù)據(jù)中截取4位,在TXC下降沿上送至TXD。數(shù)據(jù)發(fā)送中,接收端出錯,芯片轉狀態(tài)S6,在下一個TXC降沿重發(fā)數(shù)據(jù)封包起始字“1000”,重新開始數(shù)據(jù)封包的傳送。
數(shù)據(jù)發(fā)送結束,模塊發(fā)送結束字“1001”及其校驗碼“0110”,完成整個數(shù)據(jù)封包的發(fā)送,實現(xiàn)一次完整的數(shù)據(jù)發(fā)送過程。
從節(jié)點控制電路的邏輯結構如圖3,它主要完成數(shù)據(jù)接收、插補控制及節(jié)點開關控制等功能,通過專用的從節(jié)點控制芯片實現(xiàn)。
從節(jié)點控制芯片由數(shù)據(jù)轉換、接收、校驗、FIFO及存取控制、插補控制、節(jié)點輸入/輸出控制等模塊構成。芯片接收來自運動控制網絡的指令數(shù)據(jù),而后進行16位轉換與循環(huán)冗余碼校驗。接收數(shù)據(jù)出錯,則置位通信出錯標志位,同時向主控芯片發(fā)出重發(fā)請求。反之,數(shù)據(jù)接收無誤,存入FIFO供插補控制或開關控制模塊讀取。取到軌跡控制指令,插補控制模塊初始化運動參數(shù),啟動相應的圓弧或直線插補功能,送出指令脈沖給相應驅動器;取到開關控制指令,開關量控制邏輯通過節(jié)點輸入/輸出控制模塊送出要求的開關量。
與前述發(fā)送過程相對應,數(shù)據(jù)接收過程分為參數(shù)與數(shù)據(jù)接收兩個階段。根據(jù)兩階段網絡所傳輸?shù)臄?shù)據(jù)及傳輸過程,接收電路同樣設定電路的10個相應狀態(tài),如表3。
表3 數(shù)據(jù)接收過程控制芯片狀態(tài)字
網絡數(shù)據(jù)接收過程中,控制芯片響應接收時鐘RXC的上升沿,從RXD接收數(shù)據(jù),進行4-16位數(shù)據(jù)轉換,取得數(shù)據(jù)及其校驗碼??臻e狀態(tài)下,數(shù)據(jù)接收模塊收到傳送起始字及其校驗碼,根據(jù)FIFO的讀寫指針計算芯片中的的空余存儲空間,進入?yún)?shù)設置段。而后,接收16位設置數(shù)據(jù)及校驗碼,校驗無誤,取設置數(shù)據(jù)高8位作為本次傳送地址,低8位作為數(shù)據(jù)封包長(以字為單位),若取得本機地址,接收模塊等待結束字及校驗碼,完成參數(shù)設置封包的接收;若非本機地址,接收電路恢復芯片空閑態(tài)S0,不作任何處理。校驗出錯,從節(jié)點錯誤標志位置‘1’,節(jié)點狀態(tài)監(jiān)控模塊發(fā)送重傳請求“1010”及校驗碼“0101”,請求發(fā)送端重發(fā)設置封包,從節(jié)點狀態(tài)轉空閑態(tài)S0。
參數(shù)設置段結束,接收電路等待數(shù)據(jù)封包起始字“1000”及校驗碼“0111”。而后響應RXC上升沿,按照先高后低的順序,依次讀入8組4位數(shù),得到16位的數(shù)據(jù)及循環(huán)冗余碼。校驗無誤,繼續(xù)傳輸過程直至數(shù)據(jù)傳送完成。與參數(shù)設置段類似,傳輸中數(shù)據(jù)出錯,節(jié)點錯誤標志位置位,節(jié)點狀態(tài)監(jiān)控模塊發(fā)送重傳請求,節(jié)點狀態(tài)轉S6,等待數(shù)據(jù)封包起始字與校驗碼,重新開始數(shù)據(jù)段的傳送。
數(shù)據(jù)傳送結束,模塊等待傳送結束字“1001”及其校驗碼“0110”,收到后調整接收隊列的讀寫指針,恢復各信號與寄存器,準備接收新的傳送請求。
利用上述邏輯控制芯片的邏輯結構、數(shù)據(jù)格式、狀態(tài)字以及數(shù)據(jù)傳輸過程,根據(jù)模塊設計不同的VHDL進程Process,完成主/從控制芯片邏輯設計。主節(jié)點控制芯片邏輯功能仿真如圖4所示。
圖4a為數(shù)據(jù)寫入過程,發(fā)送隊列空標志empty迅速拉低。WR的升沿上,16位數(shù)據(jù)總線將數(shù)據(jù)0000H-0007H依次寫入芯片F(xiàn)IFO,指針XWP遞加。圖4b的參數(shù)設置,發(fā)送允許TREN為高,TXD響應發(fā)送時鐘TXC降沿,依次送出封包起始字“1000”與校驗字“0111”,而后送出節(jié)點地址00H與數(shù)據(jù)封包長08H及其組合后的反碼0FFF7H,最后送出結束字“1001”與校驗碼“0110”,結束參數(shù)設置段。
數(shù)據(jù)封包的發(fā)送如圖4c,在TXC的降沿上,TXD依次送出起始字與校驗碼“1000”、“0111”,數(shù)據(jù)0000H及校驗碼0000H,數(shù)據(jù)0001H及16位循環(huán)冗余碼8005H,數(shù)據(jù)0002H及冗余碼800FH,輸出順序與圖4a中寫入的數(shù)據(jù)及順序嚴格對應。
從節(jié)點控制芯片功能仿真如圖5,圖中所述為空間直線運動指令的傳輸。傳輸結束前接收隊列空標志empty為1,實際上此時數(shù)據(jù)已經寫入隊列,為保證數(shù)據(jù)可靠性,此時不允許讀取正在傳送的數(shù)據(jù)封包。傳輸結束,隊列空標志復位,讀信號RD上升沿,接收隊列中數(shù)據(jù)送出,圖中運動模式XMOD=0,即直線運動,終點x坐標xxe=3(0011B),y坐標xye=4(0100B),z坐標xze=0,起點坐標全為0。
網絡節(jié)點的硬件結構如圖6所示。主節(jié)點硬件由CPU模塊、主節(jié)點控制芯片(FPGA)、USB控制、系統(tǒng)鍵盤、物理層接口PHY及必要的IO電路構成。CPU采用集成的 CPU板,板上集成嵌入式處理器S3C2410、64 MB 的 SDRAM、2 MB 的 Nor Flash與 64 MB的Nand Flash,顯示模塊為商用的3.5英寸TFT真彩屏,PHY器件采用常用網絡接口器件RTL8201。
上述硬件結構中,主節(jié)點處理器S3C2410通過U盤控制獲取U盤中的指令數(shù)據(jù),譯碼后將結果寫入主節(jié)點控制芯片(FPGA)的FIFO,經過網絡發(fā)至從節(jié)點,由從節(jié)點輸出相應的插補脈沖、方向信號以及其他開關控制信號。網絡硬件設計中采用兩組收發(fā)器,形成冗余網絡,增強網絡的可靠性。主節(jié)點TFT模塊顯示主節(jié)點以及從節(jié)點的狀態(tài)信息、正在運行的程序段等內容,節(jié)點選擇、文件操作等的通過主節(jié)點鍵盤完成。
圖7為網絡實驗的結果。根據(jù)圖6描述的硬件結構,不考慮CPU模塊,主/從節(jié)點具有相似的硬件結構,因而,本文的網絡實驗中從節(jié)點硬件與主節(jié)點的采用了同樣的控制板,只是從節(jié)點上省去了CPU板和TFT模塊。
根據(jù)運動控制網絡的發(fā)展,結合其在數(shù)控技術領域的應用,參考現(xiàn)有運動控制總線Synqnet網絡,提出適于數(shù)控領域的一套類Synqnet網絡結構及其實現(xiàn)技術,這種結構在節(jié)點上固化多軸聯(lián)動控制邏輯,使每個運動控制網絡節(jié)點成為一個獨立的多軸運動控制器,節(jié)點上的多軸聯(lián)動通過節(jié)點控制芯片實現(xiàn),無需專門的CPU。同時,節(jié)點帶有FIFO,能夠滿足聯(lián)動控制的高實時性要求及網絡化要求;結合數(shù)控技術,提出一整套的類Synqnet協(xié)議并提出其VHDL實現(xiàn)方法;在此基礎上,采用硬件描述語言VHDL,完成了主節(jié)點邏輯控制芯片與具有多軸聯(lián)動功能的從節(jié)點邏輯控制芯片設計。最后,利用商用的嵌入式S3C2410 CPU板,開發(fā)節(jié)點硬件對所提出的網絡與通信協(xié)議進行了驗證。
[1]劉麗松,殷蘇民,林新華,等.基于CAN總線的開放式數(shù)控系統(tǒng)控制網絡的設計[J].機床與液壓,2007,35(2):164-166.
[2]舒志兵,張杰.基于CAN總線的網絡化運動控制系統(tǒng)的研究[J].機械設計與制造,2008,30(1):181-183.
[3]許萬,陳幼平,陳冰,等.基于實時以太網的多軸運動控制網絡的研究[J].制造業(yè)自動化,2008,30(11):71-75.
[4]曹政,李磊,陳明宇.萬兆以太網媒體訪問控制層研究[J].計算機工程,2007,33(17):31-33.
[5]云利軍,孫鶴旭,雷兆明,等.運動控制網絡的研究現(xiàn)狀及發(fā)展趨勢[J].控制工程,2006,13(4):290-292.
[6]許俊,林水生.基于FPGA的以太網MII接口擴展設計與實現(xiàn)[J].電子設計應用,2005(5):110-113.
[7]云利軍,孫鶴旭,雷兆明,等.基于SynqNet的網絡化運動控制器研究[J].制造技術與機床,2006(2):40-43.
[8]葉懋,劉宇紅,劉橋.CRC碼的 FPGA實現(xiàn)[J].重慶工學院學報,2007,21(3):85-87.
[9]畢占坤,黃芝平,張羿猛,等.循環(huán)冗余校驗分布式算法的理論推導及 FPGA 實現(xiàn)[J].兵工學報,2006,27(6):1121-1125.