郭翠娟,李中原,榮 鋒
(1.天津工業(yè)大學(xué)電子與信息工程學(xué)院,天津 300387;2.天津市光電檢測技術(shù)與系統(tǒng)重點實驗室,天津 300387)
傳統(tǒng)以太網(wǎng)的數(shù)據(jù)傳輸延時一般都在100 ms以上,而自動化行業(yè)所需的延時一般都要求10 ms以下,傳統(tǒng)以太網(wǎng)無法滿足自動化領(lǐng)域?qū)崟r性的需求,因此PROFIBUS國際組織提出了PROFINET標(biāo)準(zhǔn),此標(biāo)準(zhǔn)涵蓋了安裝技術(shù)、實時通信、網(wǎng)絡(luò)管理以及Web集成功能等方面。[1-2]
PROFINET是基于工業(yè)以太網(wǎng)的現(xiàn)場總線通信系統(tǒng),它包涵一整套完整的標(biāo)準(zhǔn),PROFINET可以實現(xiàn)工業(yè)現(xiàn)場領(lǐng)域?qū)σ蕴W(wǎng)實時性的需求。PROFINET是一種性能卓越的現(xiàn)場總線標(biāo)準(zhǔn),PROFINET總線具有顯著優(yōu)勢。由于PROFINET技術(shù)是由傳統(tǒng)以太網(wǎng)改進而來的,并且所涉及的通信協(xié)議比較復(fù)雜,而目前工廠企業(yè)廣泛使用的傳感器、執(zhí)行器、儀器儀表設(shè)備大多是通過單片機的串行接口與外部系統(tǒng)進行通信,企業(yè)若放棄原有設(shè)備而直接使用PROFINET接口設(shè)備,這樣會對原有投資造成很大的浪費。短期內(nèi)如果想要實現(xiàn)PROFINET總線與現(xiàn)有的總線之間的通信,通過網(wǎng)關(guān)橋接是一個很好的選擇。[3]因此,研發(fā)一種高性能,低成本的PROFINET網(wǎng)關(guān)設(shè)備,將現(xiàn)階段工廠大量使用的設(shè)備接入PROFINET網(wǎng)絡(luò)。[4-5]
本文在研究了PROFINET通信協(xié)議的基礎(chǔ)上,提出了PROFINET協(xié)議和Modbus協(xié)議相互轉(zhuǎn)換的網(wǎng)關(guān)硬件設(shè)計方案,編寫了網(wǎng)關(guān)協(xié)議轉(zhuǎn)換程序,實現(xiàn)了PROFINET網(wǎng)絡(luò)和Modbus網(wǎng)絡(luò)之間數(shù)據(jù)的雙向傳輸。[6]網(wǎng)關(guān)的軟件設(shè)計是基于eCos操作系統(tǒng),eCos是一種可配置實時操作系統(tǒng),它具有高度可配置性,占用資源少、實時性強、開源,并且完全免費。[7-8]其最大的特點是可配置性高,這樣極大提高了系統(tǒng)的靈活性與可靠性,能有效縮短開發(fā)的周期。測試結(jié)果表明,本文設(shè)計的網(wǎng)關(guān)實現(xiàn)了PROFINET總線與Modbus總線之間的數(shù)據(jù)交換,從而實現(xiàn)了兩種總線的互聯(lián)互通。[9-10]
網(wǎng)關(guān)整體由系統(tǒng)核心模塊、PROFINET接口模塊、FLASH存儲模塊、SDRAM存儲模塊、Modbus接口模塊組成。系統(tǒng)核心模塊由ERTEC200處理器和電源電路、JTAG調(diào)試接口組成。處理器是ERTEC200P芯片,它負(fù)責(zé)eCos操作系統(tǒng)的運行,協(xié)議數(shù)據(jù)包的解析,協(xié)議棧的轉(zhuǎn)換和信息的處理。圖1為系統(tǒng)整體結(jié)構(gòu)框圖。
圖1 系統(tǒng)整體結(jié)構(gòu)框圖
ERTEC200P是一款專用的高性能ARM處理器,其內(nèi)部有2路集成PHY的百兆以太網(wǎng)接口,具有強大的運算能力和協(xié)議處理能力,其支持IO設(shè)備循環(huán)通信時間最小間隔為32.25 μs,其同步傳輸時循環(huán)速率小于1 ms。ERTEC200P性能可以達到網(wǎng)關(guān)系統(tǒng)設(shè)計的要求。
PROFINET協(xié)議轉(zhuǎn)Modbus協(xié)議網(wǎng)關(guān)可以實現(xiàn)RPOFINET數(shù)據(jù)與Modbus數(shù)據(jù)的交換,當(dāng)進行數(shù)據(jù)交換時,可以通過TIA PORTAL軟件實時監(jiān)測數(shù)據(jù)的傳輸。網(wǎng)關(guān)在PROFINET一側(cè)作為從站,在Modbus側(cè)作為主站,當(dāng)網(wǎng)關(guān)作為Modbus主站時,即網(wǎng)關(guān)主動向Modbus設(shè)備發(fā)送通信信息,等待設(shè)備應(yīng)答。PROFINET控制器組態(tài)完成之后向網(wǎng)關(guān)發(fā)送組態(tài)信息,網(wǎng)關(guān)主站解析組態(tài)信息,并按組態(tài)信息設(shè)置波特率、數(shù)據(jù)長度、奇偶校驗、停止位、發(fā)送間隔等參數(shù),參數(shù)信息設(shè)置完成之后網(wǎng)關(guān)作為Modbus主站開始與網(wǎng)絡(luò)中的從站設(shè)備進行通信。
PROFINET轉(zhuǎn)Modbus網(wǎng)關(guān)硬件部分主要包含ERTEC200P模塊、PROFINET接口模塊、FLASH存儲模塊、SDRAM存儲模塊、RS-485模塊、GPIO模塊。網(wǎng)關(guān)硬件電路設(shè)計如圖2所示。
圖2 網(wǎng)關(guān)硬件電路框圖
ERTEC200P是一款增強的實時以太網(wǎng)控制器,ERTEC200P內(nèi)置了1個PN-IP內(nèi)核,內(nèi)部集成了高性能PROFINET通信PHY。ERTEC200P芯片內(nèi)部還包括ARM926EJ-S處理器,支持125/250 MHz的核心頻率、16KB的數(shù)據(jù)緩存、16KB的指令緩存;片上設(shè)備包括6個定時器、 4個UART、2個SPI接口;存儲控制器支持8/16/32位數(shù)據(jù)總線。
ERTEC200P處理器內(nèi)部集成兩個以太網(wǎng)接口,支持100Base-TX和100Base-FX并且支持自動交互。芯片內(nèi)部集成了雙端口的 IRT交換機,支持100 Mbps以太網(wǎng)通訊速率,能夠工作在全雙工和半雙工模式。其內(nèi)部集成的雙端口 IRT交換機,可以滿足實時性要求苛刻的IRT通信。使用芯片內(nèi)部的PHY功能不僅可以節(jié)省硬件成本,還可以減小板卡的面積;除此之外,選用帶有網(wǎng)絡(luò)隔離變壓器的RJ45接口,不但可以實現(xiàn)信號的有效隔離,提高其抗干擾能力,還能通過外圍器件實現(xiàn)阻抗匹配。圖3為PROFINET接口電路圖。
圖3 PROFINET接口電路
RS-485接口電路采用的芯片是MAX13487,它是一款低功耗半雙工 RS-485收發(fā)器。該芯片在數(shù)據(jù)傳輸時可以自動實現(xiàn)方向控制,芯片采用1/4單元負(fù)荷允許在總線上最多掛載128個收發(fā)器,MAX13487的最大傳輸速率可以達到16 Mbps,符合系統(tǒng)設(shè)計的要求。具體電路圖如圖4所示。
圖4 RS-485接口電路
FLASH芯片選用W25Q128FV,其容量為128 Mbit,工作電壓為 2.7~3.6 V,正常工作時電流僅為4 mA,該FLASH芯片支持標(biāo)準(zhǔn)的SPI總線接口,與處理器的SPI接口相連接,操作簡單。該芯片性能優(yōu)越,而且可以降低網(wǎng)關(guān)的成本。 W25Q128FV主要用來存儲 eCos操作系統(tǒng)、 PROFINET協(xié)議棧和應(yīng)用程序。具體電路如圖5所示。
圖5 FLASH存儲模塊電路
SDRAM存儲芯片作為程序運行的內(nèi)存空間,系統(tǒng)上電后會把FLASH中的程序代碼復(fù)制到SDRAM芯片中,由于本系統(tǒng)需要運行eCos操作系統(tǒng)和PROFINET協(xié)議棧,故程序需要的運行內(nèi)存較大,所以本系統(tǒng)選取外置SDRAM。本系統(tǒng)選用的MT48H32M16LF作為SDRAM芯片,該芯片的工作電壓為1.8 V,與ERTEC200P處理器通過EMC(external memory controller)接口相連接,原理圖中的地址線 EMC_AB2~EMC_AB14分別連接至SDRAM芯片的A0~A12引腳。系統(tǒng)上電后eCos操作系統(tǒng)、 PROFINET協(xié)議棧和應(yīng)用程序都將在SDRAM中運行。具體電路如圖 6所示。
圖6 SDRAM存儲模塊電路
圖7為PROFINET網(wǎng)關(guān)的軟件系統(tǒng)架構(gòu),PROFINET IO協(xié)議棧主要由具有統(tǒng)一接口與系統(tǒng)無關(guān)的基本軟件包、系統(tǒng)整合包、操作系統(tǒng)抽象層、 eCos實時操作系統(tǒng)和eCos板級包、應(yīng)用程序部分組成?;拒浖?ACP、CM、CLRPC、DCP、 EDD、GSY、POF、LLDP、MRP、OHA、TCP/IP Stack和SOCK組成,這些基本包只提供各種庫函數(shù)功能,只有與系統(tǒng)整合包結(jié)合才能成為系統(tǒng)實際可執(zhí)行部分;系統(tǒng)整合包主要由SYS、LSAS、TSKMA組成,它管理操作系統(tǒng)服務(wù)與系統(tǒng)獨立基礎(chǔ)包之間的通信接口,例如內(nèi)存管理、任務(wù)管理、進程間通信和時間管理等,系統(tǒng)適配器還實現(xiàn)了IO堆棧的軟件結(jié)構(gòu),它決定了每個基礎(chǔ)包在哪個任務(wù)之中執(zhí)行以及任務(wù)之間相互通信的機制;操作系統(tǒng)抽象層的作用是在系統(tǒng)適配器和特定的操作系統(tǒng)之間形成一個低層的抽象接口,當(dāng)軟件被移植到一個不同的操作系統(tǒng)時,只需要更改操作系統(tǒng)抽象層即可;eCos實時操作系統(tǒng)主要用來管理設(shè)備的網(wǎng)卡、串口、 SDRAM、FLASH存儲系統(tǒng)以及任務(wù)之間的調(diào)度等;應(yīng)用程序部分主要完成PROFINET數(shù)據(jù)與Modbus數(shù)據(jù)之間的轉(zhuǎn)換,數(shù)據(jù)的打包或數(shù)據(jù)的重組。
圖7 網(wǎng)關(guān)軟件系統(tǒng)架構(gòu)
PROFINET協(xié)議與 Modbus協(xié)議通信主要包括兩個部分:PROFINET控制器與IO設(shè)備之間的通信,IO設(shè)備與Modbus設(shè)備之間的通信,IO設(shè)備即為PROFINET網(wǎng)關(guān)設(shè)備。為了實現(xiàn) IO設(shè)備與PROFINET控制器之間的通信功能,需要PROFINET網(wǎng)關(guān)設(shè)備能夠正確處理PROFINET控制器下發(fā)的組態(tài)信息;在自動化系統(tǒng)中PROFINET系統(tǒng)啟動是由控制器發(fā)起,控制器一般是PLC,圖8為PROFINET組態(tài)信息的處理過程示意圖。
圖8 PROFINET組態(tài)信息處理示意圖
當(dāng)所有的組態(tài)參數(shù)都已經(jīng)下載到設(shè)備,則控制器使用參數(shù)化結(jié)束幀(end of par.req)來標(biāo)記參數(shù)化結(jié)束。當(dāng)設(shè)備中所有的數(shù)據(jù)結(jié)構(gòu)都已經(jīng)創(chuàng)建并已完成必要的檢查,則設(shè)備向控制器發(fā)送 Appl Ready響應(yīng),告知控制器其已準(zhǔn)備好進行數(shù)據(jù)通信。
Modbus網(wǎng)絡(luò)中有一個主站和多個從站,每個從站都有一個唯一的地址,主站向從站發(fā)出命令請求,從站響應(yīng)主站的請求。Modbus幀由地址域、功能碼、數(shù)據(jù)和差錯校驗組成,Modbus PDU的定義為功能碼加數(shù)據(jù)。圖9為通用Modbus幀結(jié)構(gòu)示意圖。
圖9 通用Modbus幀結(jié)構(gòu)示意圖
Modbus指令分為讀指令和寫指令兩種,讀指令包括讀線圈和讀寄存器指令,寫指令包括寫線圈和寫寄存器指令,具體的指令由通過Modbus數(shù)據(jù)幀中的功能碼決定。當(dāng)Modbus指令為讀指令時,系統(tǒng)發(fā)出讀請求命令,同時啟動讀請求超時函數(shù),若在規(guī)定的時間內(nèi)收到應(yīng)答,則接收數(shù)據(jù),若數(shù)據(jù)校驗正確則返回讀取的數(shù)據(jù);當(dāng)Modbus指令為寫指令時,系統(tǒng)發(fā)出寫指令請求,同時啟動寫請求超時函數(shù),若在規(guī)定的時間內(nèi)收到應(yīng)答,則接收數(shù)據(jù),若接收到數(shù)據(jù)校驗正確,則返回寫成功。Modbus讀寫線圈和寄存器的流程如圖10所示。
PROFINET循環(huán)數(shù)據(jù)交換主要是實現(xiàn)IO控制器與IO設(shè)備之間數(shù)據(jù)的雙向交換功能,以便用來監(jiān)視及控制現(xiàn)場設(shè)備。PROFINET數(shù)據(jù)與Modbus數(shù)據(jù)交換示意圖如圖11所示。網(wǎng)關(guān)設(shè)備開始輪詢Modbus設(shè)備是否有要發(fā)送的數(shù)據(jù),若有Modbus數(shù)據(jù)存在,網(wǎng)關(guān)設(shè)備接收其數(shù)據(jù),然后將接收到的數(shù)據(jù)通過以太網(wǎng)發(fā)送給IO控制器;若網(wǎng)關(guān)設(shè)備接收到PROFINET網(wǎng)絡(luò)中IO控制器發(fā)送的數(shù)據(jù),網(wǎng)關(guān)設(shè)備將PROFINET數(shù)據(jù)重新打包為Modbus數(shù)據(jù)幀,然后通過RS-485總線發(fā)送給Modbus設(shè)備。
圖11 網(wǎng)關(guān)數(shù)據(jù)交換示意圖
PROFINET IO設(shè)備和IO控制器之間進行數(shù)據(jù)交換時,是通過PROFINET IO協(xié)議棧中的輸入/輸出緩沖區(qū)完成的,輸入/輸出緩沖區(qū)分為Indata區(qū)和Outdata區(qū),Indata和Outdata是針對IO控制器來說的,Indata區(qū)用來存儲從網(wǎng)關(guān)設(shè)備讀取的數(shù)據(jù),Outdata區(qū)用來存儲發(fā)往網(wǎng)關(guān)設(shè)備的數(shù)據(jù)。網(wǎng)關(guān)協(xié)議轉(zhuǎn)換流程圖如圖12所示。
圖12 網(wǎng)關(guān)協(xié)議轉(zhuǎn)換流程圖
本設(shè)計采用S7-1200 PLC作為IO控制器,完成PROFINET IO控制器與Modbus從站設(shè)備之間動態(tài)網(wǎng)關(guān)的通信測試。本設(shè)計使用TIA Portal V15軟件通過以太網(wǎng)向S7-1200 PLC發(fā)送組態(tài)信息,S7-1200作為IO控制器通過以太網(wǎng)向IO設(shè)備即網(wǎng)關(guān)發(fā)送數(shù)據(jù),網(wǎng)關(guān)設(shè)備收到PROFINET數(shù)據(jù)后將其轉(zhuǎn)換打包為Modbus幀格式,通過RS-485接口將數(shù)據(jù)發(fā)送給Modbus從機設(shè)備。同時使用Wireshark及Modbus Slave協(xié)議工具來監(jiān)視網(wǎng)關(guān)通信過程中傳輸?shù)臄?shù)據(jù),以驗證其通信的正確性及可靠性。測試環(huán)境的結(jié)構(gòu)如圖13所示。
圖13 網(wǎng)關(guān)測試環(huán)境框圖
系統(tǒng)測試工具為:SIMATICH S7-1200,其是一款緊湊型、模塊化的PLC,可擴展性強、靈活性高,帶有PROFINET接口,可以實現(xiàn)與網(wǎng)關(guān)設(shè)備之間的PROFINET通信。
MERCURY交換機: MERCURY SG105 Pro交換機帶有端口鏡像功能,可以將PC、S7-1200、網(wǎng)關(guān)設(shè)備連接起來,通過端口鏡像功能將PROFINET數(shù)據(jù)映射到交換機特定的端口,通過Wireshark可以方便的監(jiān)聽傳輸?shù)膱笪摹?/p>
Modbus Slave協(xié)議軟件:該軟件是一款集成的Modbus Slave協(xié)議工具,通過配置可以設(shè)置為從站模式,并且能夠進行 Modbus數(shù)據(jù)的接收和發(fā)送,該軟件可以實時顯示Modbus主站和Modbus從站之間的數(shù)據(jù)傳輸過程,同時能夠顯示和存儲要傳輸?shù)臄?shù)據(jù)。
TIA Protal V15軟件:該軟件是全集成自動化編程軟件,內(nèi)部集成了STEP7、WINCC等,通過該軟件可以實現(xiàn)PLC的組態(tài)以及系統(tǒng)的在線監(jiān)測。
圖14為Modbus Slave從站模擬軟件要傳輸?shù)?4字節(jié)的數(shù)據(jù),從機地址是1,功能碼是0x03,傳輸?shù)臄?shù)據(jù)為0x0001~0x0020共計64字節(jié)的數(shù)據(jù)。
圖14 Modbus Slave從站3號功能碼數(shù)據(jù)傳輸
圖15為Wireshark捕獲的PROFINET網(wǎng)絡(luò)中傳輸?shù)腜ROFINET數(shù)據(jù),由圖15可知,網(wǎng)關(guān)的 MAC源地址是 08:00:06:02:01:10,PLC的MAC地址是e0:dc:a0:4f:6c:c8,PROFIENT幀標(biāo)識是0x8892,數(shù)據(jù)傳輸類型是PROFINET周期實時數(shù)據(jù)。
圖15 Wireshark捕獲PROFINET數(shù)據(jù)
圖16為TIA在線監(jiān)測PLC中傳輸?shù)臄?shù)據(jù),由圖16可以驗證PROFINET控制器通過網(wǎng)關(guān)設(shè)備可以與Modbus從機設(shè)備之間正常通信。
圖16 PLC在線監(jiān)測3號功能碼數(shù)據(jù)傳輸
本文提出了一種基于PROFINET協(xié)議的動態(tài)網(wǎng)關(guān)的設(shè)計方案,實現(xiàn)了PROFINET數(shù)據(jù)與Modbus數(shù)據(jù)之間的循環(huán)交換,該網(wǎng)關(guān)使用ERTEC200P處理器為核心,通過PROFINET協(xié)議棧實現(xiàn)PROFINET協(xié)議與Modbus協(xié)議之間的相互轉(zhuǎn)換。測試結(jié)果表明該網(wǎng)關(guān)可以實時、可靠的完成數(shù)據(jù)的通信與轉(zhuǎn)換,解決了PROFINET總線與Modbus總線之間數(shù)據(jù)通信的問題,推動了傳統(tǒng)工業(yè)總線通信向工業(yè)以太網(wǎng)的發(fā)展進程。