0 引言
制造業是國家綜合國力的基礎,而數控技術又是其關鍵基礎技術。信息技術的快速發展,使得傳統制造業發生深刻變革,尤其是數控系統在智能化、網絡化和集成化上得到大力發展。發展先進數控技術,提高裝備制造水平,將是構成企業制造系統現代化的關鍵,有利于提升企業在激烈的全球化經濟條件下對市場環境的生存能力。因此,發展先進數控技術對制造型企業的發展壯大起到關鍵作用。網絡數控技術即是一種將制造單元通過網絡技術互聯,從而實現在制造過程中共享所需資源的技術。
一方面,利用多個網絡數控系統可以構建網絡化生產車間,中心服務器管理者可以詳細準確監視并記錄每一臺設備的運行情況,可以實現遠程控制,合理調度生產設備資源,提高企業生產效率,降低工人勞動成本;另一方面,系統廠家可以通過 Internet 與客戶中心服務器連接,及時跟蹤客戶需求反饋,有助于遠程培訓和維護,減少維修人員的往來。隨著計算機輔助設計和制造系統大量應用于實際加工過程,需要快速方便地與數控系統進行大吞吐量數據交換,具備網絡功能的數控系統能夠很好地與辦公室中的 CAD/CAM系統聯系起來,快速高效生產加工,及時修正加工問題,實現網絡制造。目前,多家數控系統設備制造公司如德國西門子(Siemens)、日本山崎馬扎克(Mazak)相繼推出相關樣機和產品,很大程度上加快了數控系統網絡化的發展速度。
1 網絡數控系統體系結構
網絡數控系統大體分為基礎部分和網絡部分,基礎部分即完成數控系統本身基本功能運行,網絡部分與外部網絡設備連接完成交互數據的收發。
本文所設計的數控系統采用的是 TI 公司 OMAPL138B 作為主控芯片,該芯片同時集成 ARM 和 DSP 核心,二者能夠無縫協調工作,減少了總線延遲。其中,ARM 核心負責完成顯示、人機交互(HMI)、文件資源管理、數控 NC 譯碼任務以及網絡通信傳輸;而 DSP 核心則發揮其運算優勢,主要擔負數控系統核心插補算法、伺服驅動控制以及 PLC 邏輯控制運算。網絡電路接口則采用 WIZnet 公司生產的一款成熟且多功能的網絡芯片——W5100,實現 TCP/IP 通信協議傳輸,很大程度簡化了系統結構設計。
ARM 和 DSP 核心能夠同時工作于 456MHz,該芯片連接 DDR2 內存芯片,比其它傳統 SOC 連接 SDRAM 方式運行速度更快。圖 1 所示描述了基于 OMAPL138B 和 W5100 的數控系統體系結構,包括 SOC 外圍系統電路和網絡通信電路。
圖 1 網絡數控系統體系結構圖
1.1 OMAPL138B 處理器簡介
OMAPL138 DSP+ARM 處理器是一款基于一個 ARM926EJ-S 和一個 C674xDSP 核心的低功耗應用處理器,甚至比 TMS320C6000 平臺的其它 DSP 產品消耗功率更低。其雙核架構兼具了 RISC 和 DSP 技術的優點,并且采用流水線結構設計,因此能夠保證處理器和存儲器的所有部件有效運作。ARM 核心擁有協處理器 CP15,具有獨立的 16KB 指令 Cache 和 16KB 數據 Cache,同時集成了 8KB 內部 RAM 和 64KB 內部 ROM;DSP 內核采用 2 級高速緩存架構,1 級分別由 32KB 指令(L1P)和數據(L2P)高速緩存組成,2 級則包含一個 256KB內存空間,可由程序空間和數據空間共用。另外,ARM 和 DSP 之間有 128KB 的內部共享 RAM,可以互相實現數據無縫訪問。
OMAPL138B 集成了豐富的電路接口,有助于系統電路設計簡化。本文所用到的電路接口如下:
1)DDR2/mDDR 內存控制器;
2)通用輸入/輸出接口(GPIO);
3)LCD 控制器;
4)擴展存儲器接口(EMIFA);
5)通用異步接收/發送裝置(UART);
6)通用串行總線(USB)。
1.2 W5100 網絡芯片簡介
W5100 是目前比較流行的一款多功能的以太網網絡接口芯片,內部集成了 10/100 兆以太網控制器,能夠適用于高穩定、高集成、高性能和低成本的嵌入式系統。其內部集成了經過多年市場應用經驗驗證、且全硬件的 TCP/IP 協議棧、以太網介質傳輸層(MAC)以及物理層(PHY)。能夠支持普遍的以太網協議,如TCP、UDP、IPv4、ICMP、ARP、IGMP 和 PPPoE,使得用戶在使用 W5100 開發時不用過多了解以太網控制知識,主要具備簡單的 Socket 編程基礎就能夠快速應用,從而解決了軟件實現方式的穩定性和可靠性問題。簡化的電路接口可以將 W5100 當做外部存儲器一樣訪問,實現網絡通信功能。W5100 具備的突出特點如下:
1) 支持自動通信握手(全雙工和半雙工);
2) 支持自動 MDI/MDIX,并自動校正信號極性;
3) 支持 ADSL 連接(支持 PPPoE 中的 PAP/CHAP 認證模式);
4) 支持 4 個獨立端口同時運行;
5) 內部集成 16KB 數據收發緩存,默認每一個端口 4KB 緩沖大小。
通過訪問 W5100 內部寄存器實現控制,內部存儲器映射如表 1 所示:
表 1 W5100 內部存儲器映射
公共寄存器主要對網絡配置、中斷控制、超時處理參數以及緩沖區分配等進行設置,詳細信息如表 2所示。其中,本文用到中斷方式,W5100 提供 7 種中斷源,任意一個未屏蔽中斷觸發時,中斷輸出引腳INT會保持低電平,CPU 通過 IR 寄存器確定中斷源,得到處理后將 IR 相應位清零,完成中斷處理狀態。
表 2 W5100 公共寄存器功能描述
端口寄存器針對 4 個內部獨立的通信端口進行設置,以 Sn_xx 的形式表示,主要描述了端口工作模式、端口號、端口目的物理地址和 IP 地址以及端口相關狀態,具體功能可以參考有關用戶應用手冊。
1.3 硬件電路設計
由于 W5100 可以當做外部存儲器訪問,OMAPL138B 提供了一個外部存儲器接口(EMIFA,External MemoryInterface A),用于連接芯片到外部存儲器,比如同步動態存儲器(SDRAM)、低功耗 ROM 存儲器和異步存儲器,提供 8 位寬和 16 位寬訪問能力。網絡數控系統硬件電路設計主要涉及 EMIFA 與 W5100 連接,通過EMIFA 接口,使得 CPU 可以和 W5100 網絡芯片很方便地進行數據傳輸。W5100 提供 3 種電路接口:間接并行總線、直接并行總線和 SPI 總線。間接并行總線只使用 ADDR[1:0]兩個引腳,首先 CPU 將要讀寫的地址分別寫入 IDM_AR0 和 IDM_AR1 寄存器,選中指定的寄存器,然后再從IDM_DR 寄存器中讀寫數據。因此訪問單一寄存器時,間接并行總線方式需要 3 個總線周期,而直接并行總線方式訪問只需要一個總線周期,本文采用直接并行總線方式連接設計。OMAPL138B 與 W5100 相關接口以及硬件電路總體框圖如圖 2 所示。
圖 2 硬件電路總體框圖
EMIFA 接口中處于 EMA_CS[5 :2]范圍內的區間屬于異步存儲器控制器,本方案選擇EMA_CS[2]作為W5100 片選,因此將 0x6000 0000~0x61FF FFFF(32MB)的地址空間分配給 W5100,基地址為 0x6000 0000。EMIFA 支持 8 位寬和 16 位寬訪問,由于 W5100 寄存器為 8 位位寬,所以將 EMA_A[14:0]與 ADDR[14:0]相連。W5100 中斷引腳低電平有效,與 OMAPL138 中斷引腳 INT0連接。為了縮小電路接口設計的面積,采用10/100Mb/s 的 13F-60 自帶網絡變壓器的 RJ45 以太網電路接口,W5100 的 RXIP 對應 RJ45 的 RD+,RXIN 對應 RD-,TXOP 對應 TD+,TXON 對應 TD-。
EMIFA 默認處于正常模式,訪問時序有三個重要的階段:Setup、Strobe 和 Hold period,這些時間的設置關系到與外部存儲器進行讀寫操作的穩定性和正確性。EMIFA 讀寫時序圖如圖 3、4 所示,為了配合W5100 訪問,分別將三個階段設為 2、3、2 時間周期。在讀操作的 Setup 階段,地址總線引腳 EMA_A 開始有效并且EMA_CS[2]片選引腳為低電平,片選使能外部存儲器設備;Strobe 階段,EMA_OE讀使能引腳為低電平,在該階段最后一個周期 EMIFA 開始對數據總線引腳 EMA_D 進行采樣并且EMA_OE變為高電平;Hold 階段是數據的保持,EMIFA 將數據讀取到內部寄存器,并且在該階段最后一個周期地址總線引腳 EMA_A變為無效,EMA_CS[2]引腳變為高電平結束對外部存儲器設備的片選使能。三個階段時間周期通過 EMIFA寄存器 CEnCFG 的 R_SETUP、R_STROBE 和 R_HOLD 三個域進行設置,完成一次讀操作。
在寫操作的 Setup 階段,地址總線引腳 EMA_A 和數據總線引腳 EMA_D 開始有效并且EMA_CS[2]片選引腳為低電平,片選使能外部存儲器設備;Strobe 階段,EMA_WE 寫使能引腳為低電平,并將寄存器內數據寫入外部存儲器設備,在該階段最后一個周期變為高電平;Hold 階段最后一個周期地址總線引腳 EMA_A和數據總線引腳 EMA_D 變為無效,EMA_CS[2]引腳變為高電平結束對外部存儲器設備的片選使能。三個階段時間周期通過 EMIFA 寄存器 CEnCFG 的 W_SETUP、W_STROBE 和 W_HOLD 三個域進行設置,完成一次寫操作。
2 數控系統組網設計
網絡數控把與制造過程有關的設備(如數控機床)、主控計算機、通信設施等按一定的結構和層次組合起來成為一個整體,具有層次化的結構特征。如圖 5 所示,網絡數控系統組網可以分為三個層次:企業車間層、企業管理中心層和系統廠家管理層。數控系統配套的加工機床設備位于企業生產車間,通過網絡鏈路設備有機連接起來,每臺設備提供基本信息、系統狀態和控制信息等數據。企業管理中心層是數控系統數據中心,維護管理調度生產車間每一臺設備,對設備進行有效管理。系統廠家管理層建立用戶數據信息庫,通過 Internet 與企業用戶進行連接,實時跟蹤客戶需求及系統運行狀況,必要時可以對客戶進行遠程培訓和維修,一定程度上減少了系統廠家的生產成本。
圖 5 網絡數控系統組網
網絡數控系統組網與普通 PC 機局域網組網類似,將網絡數控系統看成局域網內的一個節點。鑒于生產車間環境比較惡劣,組網采用超五類雙絞線作為傳輸介質,具有串擾少、衰減小并且具有較高的衰減與串擾的比值和信噪比,性能能夠得到很大提高。另外,需要額外的網絡連接設備來滿足服務器與多個數控系統客戶端的連接。通過對比集線器、中繼器和交換機性能,最后選用具有有效隔離沖突的交換機作為網絡連接設備,能夠為每個客戶端口提供專用帶寬,能夠滿足全雙工數據傳輸。
3 軟件設計
系統硬件架構設計中,將 OMAPL138B 作為 W5100 的主控制芯片,系統軟件設計采用服務器/客戶端模式。以網絡數控系統作為客戶端,而 PC 機充當服務器,接受客戶端的連接,PC 基于 Windows7 操作系統運行,采用 Windows Socket 套接字網絡編程。在對 W5100 網絡芯片控制之前,微處理器首先復位上電完成初始化任務,主要完成系統及外部設備時鐘初始化、系統啟動運行模式及堆棧設置、中斷向量表及中斷控制器設置、GPIO 和 UART 等內部集成電路模塊接口進行配置、系統定時器及最重要的 EMIFA 控制器工作模式和時序配置。W5100 客戶端連接流程與 PC 服務器端軟件流程如圖 6、7 所示。
圖6 W5100 客戶端連接流程
圖7 PC 服務器端軟件流程
3.1 W5100 驅動程序設計
W5100 驅動程序設計主要包括初始化和 Socket 程序設計兩部分,初始化過程主要針對關鍵寄存器設置實現復位、工作模式、端口選擇及收發緩存大小設置等。初始化 W5100 關鍵步驟如下:
1) 設置模式寄存器 MR 軟件復位位為 1,自動清零所有內部寄存器,同時設置 IP 地址、子網掩碼、物理地址等;
2) 設置終端屏蔽寄存器 IMR 為 0xFF,開啟提供的所有中斷,任何時候中斷寄存器 IR 對應位置 1 時,將中斷 CPU,通過訪問 IR 獲得中斷源;
3) 設置發送 TMSR 和接收 RMSR 寄存器為 0x55,使每個端口發送和接收緩存大小為 2KB;
4) 設置重發計數寄存器 RCR 為 8,設定傳輸過程中的重發次數;
5) 設置重發時間寄存器 RTR 為 0x07DD,即 200 毫秒,當與服務器無法響應超過 200 毫秒時,將進行重發處理;
6) 設置端口模式寄存器 Sn_MR 為 0x21,關閉廣播功能并選用 TCP 模式;
7) 設置端口命令寄存器 Sn_CR,實現端口初始化、建立/斷開連接和數據傳輸;以上就是 W5100 初始化過程,其 Socket 編程主要涉及連接、讀數據和寫數據操作,以下是三個關鍵函數實現。
由于網絡數控系統作為客戶端,必須與服務器端先建立連接才能進行通信,Socket_Connect 函數負責與服務器端建立連接。端口打開完成連接命令后,需要等待端口終端判斷是否與遠端服務器建立連接,可以參考 W5100 數據手冊的 Socket 中斷狀態。
int Socket_Connect(int socket){ //端口號,0~3 共四個端口可選 W5100_WREG(W5100_S0_MR, S_MR_TCP|S_MR_MC); // TCP 模式,ND/MC 位置 W5100_WREG(W5100_S0_PORT, 8080); //本機端口號為 8080 ServerIPAddrSet(W5100_S0_DIPR, “192.168.1.2); //服務器 IP 地址 W5100_WREG(W5100_S0_DPORT, 8080); //服務器端口號 W5100_WREG(W5100_S0_CR, S_CR_OPEN); //打開端口 W5100_WREG(W5100_S0_CR, S_CR_CONNECT); //連接服務器 return true; }
W5100 讀操作首先從端口接收數據緩沖區讀取有效數據,將接收的數據量與讀指針寄存器 Sn_RX_RD 的值相加再寫回 Sn_RX_RD,最后將 RECV 讀命令操作標志寫入端口命令寄存器 Sn_CR,完成本次讀取操作,并等待下次接收。主要程序如下:
unsigned int Socket_Receive(int socket, unsigned char *buf){ unsigned int i,rx_size,rx_offset; unsigned char *ptr; rx_size=W5100_RREG(W5100_S0_RX_RSR ); //讀取接收數據的字節數 rx_size+=W5100_RREG(W5100_S0_RX_RSR+1 ); rx_offset= W5100_RREG(W5100_S0_RX_RR); //獲取接收緩存區偏移量 rx_offset+= W5100_RREG(W5100_S0_RX_RR+1); ptr=(unsigned char*)(W5100_RX+socket*S_RX_SIZE+rx_offset); for(i=0; i<rx_size; i++){ //讀數據到緩存區 buf[i]=*ptr++; } W5100_WREG(W5100_S0_CR, S_CR_RECV); //設置接收命令,等待下一次接收 return rx_size; //返回接收的數據字節數 }
W5100 發送數據操作時,首先檢查發送緩沖區剩余空間大小 Sn_TX_FSR,將要發送數據寫入端口發送數據緩沖區后,則將發送數據長度與端口傳輸寫指針寄存器 Sn_TX_WR 中的值相加并寫入 Sn_TX_WR,最后寫入發送命令 Sn_CR_SEND,完成本次發送。相關程序如下:
unsigned int Socket_Send(int socket, unsigned char *buf, int size){ unsigned int i,tx_free_size,tx_offset; unsigned char *ptr; tx_free_size=W5100_RREG(W5100_S0_TX_FSR ); //讀取發送緩存區剩余字節 tx_free_size +=W5100_RREG(W5100_S0_TX_FSR +1 ); tx_offset= W5100_RREG(W5100_S0_TX_WR); //獲取發送緩存區偏移量 tx_offset+= W5100_RREG(W5100_S0_TX_WR +1); ptr=(unsigned char*)( W5100_TX+socket*S_TX_SIZE+tx_offset); for(i=0; i< size; i++){ //將數據寫入發送緩存區 *ptr++= buf[i]; } W5100_WREG(W5100_S0_CR, S_CR_SEND); //設置發送命令,將數據發送出去 return size; //返回發送的數據字節數 }
3.2 PC 服務器軟件設計
PC 機服務器端采用 Microsoft Visual ++ 6.0 MFC 作為應用軟件框架開發工具,網絡服務器部分采用Windows Socket 編程,建立服務器并監聽客戶端連接。
Windows Socket 基于 TCP(面向連接)的服務器端程序首先創建套接字(socket)并將套接字綁定到一個本地地址和端口上(bind),同時將該套接字設置為監聽模式,準備接受客戶端連接請求(listen);當客戶端有連接請求時,返回一個用于該客戶端有效通信連接的套接字(accept),利用該通信套接字與客戶端進行通信(send/recv);最后,完成通信后關閉對應客戶端的通信套接字(closesocket)。服務器端建立監聽線程,專門處理客戶連接,關鍵程序如下:
ULONG WINAPI ListenThread(LPVOID p){ //監聽線程處理函數 SOCKET listenSocket; //服務器監聽套接字 BOOL bRet; SOCKADDR_IN addrSrv; SOCKADDR_IN addrClient; int len = sizeof(SOCKADDR) listenSocket = socket(AF_INET, SOCK_STREAM, 0); //創建監聽套接字 addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(8080); //綁定端口 bind(listenSocket, (SOCKADDR *)&addrSrv, sizeof(SOCKADDR)); listen(listenSocket, 5); //設置監聽模式 while(1){ //以下阻塞等待客戶端連接 SOCKET dataSocket=accept(listenSocket,(SOCKADDR*)&addrClient, &len); UserTransSaveSocket(dataSocket); //將客戶端通信套接字存儲 } return 0; }
功能部分采用 MFC 進行開發設計,與客戶端的通信傳輸主要采用數據包的形式。包頭第一個短整型是一個包標識符,表明該數據包的屬性字符和標識位,緊接著 4 字節為包有效數據長度,最后跟著是有效數據區,數據包格式如下所示。數據包屬性及服務器端功能如表 3 所示。
本文數控系統組網驗證采用兩臺數控系統通過路由器建立的局域網與 PC 機服務器連接,客戶端兩臺系統 IP 地址分別為:192.168.1.101 和 192.168.1.102,服務器 IP 地址為 192.168.1.2。PC 機服務器端能夠與網絡數控系統客戶端進行文件傳輸、DNC 在線加工、遠程診斷和協助控制以及伺服參數在線監控和修改。圖 8 所示為文件傳輸管理、DNC 在線加工和遠程診斷協助控制部分功能軟件連接測試結果,證明本方案組網可行,能夠實現數控系統網絡化管理。
圖8 部分軟件功能測試
4 結束語
目前,工業自動化的發展越來越多的依靠網絡技術,數控系統必然走向智能化、網絡化、集成化,原先單一數控系統生產方式將逐漸淘汰。數控系統通過以太網、TCP/IP 通信協議和 Socket 編程技術進行組網,可以實現服務器與多臺數控系統進行連接,滿足監視和控制要求,進一步促進車間有效利用資源和提高生產效率。本文以此為出發點,提出了具有網絡組網功能的數控系統體系結構、硬件平臺和軟件設計相關方案,并驗證了有關功能。該方案設計簡單、集成度高并且軟件開發過程短等優點,對數控系統網絡化應用具有較高的參考價值。
(審核編輯: 智匯胡妮)
分享