(天津電氣科學(xué)研究院有限公司,天津 300301)
在“中國制造2025”的背景下,數(shù)字化工廠、智能工廠的概念被人們熟知。數(shù)字化工廠的本質(zhì)是信息集成。在自動(dòng)化領(lǐng)域,通訊技術(shù)、工業(yè)以太網(wǎng)技術(shù)的突破是信息集成的關(guān)鍵。
工業(yè)以太網(wǎng)技術(shù)的應(yīng)用進(jìn)一步提高了生產(chǎn)效率、優(yōu)化利用資源、有利于生產(chǎn)規(guī)模的提升。在網(wǎng)絡(luò)連接方式上,需要更加靈活的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),具備更可靠的網(wǎng)絡(luò)冗余特性。在系統(tǒng)應(yīng)用中,需要更強(qiáng)的抗干擾能力和強(qiáng)大的系統(tǒng)診斷功能。
PROFINET是一種適用于自動(dòng)化領(lǐng)域的開放式以太網(wǎng)標(biāo)準(zhǔn),實(shí)現(xiàn)了更高的通訊傳輸速率、更強(qiáng)的數(shù)字化技術(shù)和靈活的網(wǎng)絡(luò)技術(shù)[1]。PROFINET為用戶提供了一個(gè)完整的解決方案,覆蓋所有自動(dòng)化領(lǐng)域的應(yīng)用,可無縫集成現(xiàn)場(chǎng)總線系統(tǒng),目前在自動(dòng)化領(lǐng)域應(yīng)用最為廣泛。
本文介紹了一種基于ERTEC200P芯片的PROFINET IO工業(yè)以太網(wǎng)接口開發(fā)設(shè)計(jì)方案,包括硬件設(shè)計(jì)、軟件實(shí)現(xiàn)以及通訊測(cè)試?;谠摲桨缚煽焖賹?shí)現(xiàn)PROFINET IO接口開發(fā),對(duì)于拓展產(chǎn)品應(yīng)用領(lǐng)域,提高產(chǎn)品競(jìng)爭(zhēng)力具有很強(qiáng)的實(shí)際意義。
PROFINET基于標(biāo)準(zhǔn)以太網(wǎng)實(shí)現(xiàn),是一種實(shí)時(shí)的自動(dòng)化技術(shù)。其中,PROFINET IO對(duì)應(yīng)的中國國家標(biāo)準(zhǔn)為GB/T 25105.1—3—2014。
PROFINET采用100 Mb/s以太網(wǎng),使用全雙工通信,在一條電纜上實(shí)現(xiàn)更多應(yīng)用[2]。PROFINET是100%交換網(wǎng)絡(luò),不需要中繼器就可以實(shí)現(xiàn)靈活的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。此外,PROFINET網(wǎng)絡(luò)為所有PROFINET設(shè)備提供設(shè)備診斷和網(wǎng)絡(luò)診斷,減少設(shè)備停機(jī)時(shí)間。
PROFINET采用獨(dú)立的通道用于IO數(shù)據(jù)輸出和TCP/IP,無需為TCP/IP準(zhǔn)備額外網(wǎng)絡(luò)。PROFINET包含三種數(shù)據(jù)通訊方式,數(shù)據(jù)通道圖如圖1所示。
圖1 PROFINET數(shù)據(jù)通道圖Fig.1 Diagram of PROFINET data channel
1)標(biāo)準(zhǔn)數(shù)據(jù)通訊。基于TCP/IP協(xié)議,實(shí)現(xiàn)非實(shí)時(shí)(non real-time,NRT)數(shù)據(jù)通訊。用于傳遞參數(shù)化與配置信息,或讀取診斷數(shù)據(jù)。
2)實(shí)時(shí)(real-time,RT)數(shù)據(jù)通訊。RT通訊是非同步的,循環(huán)周期縮短至250 μs,支持100 Mb/s通信,適用于超過90%的自動(dòng)化領(lǐng)域。PROFINET基于TCP/IP第二層協(xié)議,提供了優(yōu)化的實(shí)時(shí)通訊通道,縮短數(shù)據(jù)處理時(shí)間。
3)同步實(shí)時(shí)(isochronous real-time,IRT)數(shù)據(jù)通訊。IRT技術(shù)保證確定性數(shù)據(jù)和互聯(lián)網(wǎng)協(xié)議數(shù)據(jù)同時(shí)傳輸,循環(huán)周期縮短至31.25 μs。數(shù)據(jù)傳輸和設(shè)備周期是同步的,循環(huán)時(shí)間縮短至125 μs,滿足高性能(如伺服)控制系統(tǒng)的要求。
ERTEC200P是由西門子公司開發(fā)的增強(qiáng)型實(shí)時(shí)以太網(wǎng)控制器。主要特點(diǎn)為:集成了支持IRT的雙端口交換機(jī),符合C類,循環(huán)時(shí)間可達(dá)31.25 μs。
ERTEC200P內(nèi)部集成標(biāo)準(zhǔn)250 MHz ARM926 EJ-S處理器,可以作為單片系統(tǒng),所有應(yīng)用程序都在ERTEC200P實(shí)現(xiàn)[3]。其次,外部主機(jī)可以通過16/32位并行接口直接訪問片內(nèi)地址空間IORAM,相當(dāng)于內(nèi)置的雙口RAM,將應(yīng)用程序和通訊處理分開,構(gòu)成雙核系統(tǒng)。
ERTEC200P包含PROFINET IP核(PN-IP),用于實(shí)現(xiàn)高速PROFINET通訊。PN-IP內(nèi)核包含性能升級(jí)的“快速轉(zhuǎn)發(fā)”,“動(dòng)態(tài)幀封裝”和“碎片”機(jī)制。因此,ERTEC200P支持開發(fā)IRT等實(shí)時(shí)通訊應(yīng)用,PN-IP提供最小設(shè)備處理周期為31.25 μs的同步輸出。ERTEC 200P還允許無限制地訪問TCP/IP數(shù)據(jù)和服務(wù),以便可以并行傳輸非時(shí)間關(guān)鍵數(shù)據(jù)。
ERTEC 200P適用于各種現(xiàn)場(chǎng)設(shè)備類型:快速IO設(shè)備、高精測(cè)量?jī)x器、同步伺服驅(qū)動(dòng)和編碼器以及所有高性能和智能自動(dòng)化設(shè)備。
基于ERTEC200P以太網(wǎng)控制器專用芯片,西門子提供完整的PROFINET IO協(xié)議棧,支持全部PROFINET規(guī)范內(nèi)容。用戶無需關(guān)注協(xié)議棧具體實(shí)現(xiàn),即可實(shí)現(xiàn)RPFOINET IO工業(yè)以太網(wǎng)接口開發(fā)。
PROFINET IO協(xié)議棧實(shí)現(xiàn)的主要功能包括:與PROFINET IO控制器之間的周期及非周期數(shù)據(jù)交互;處理診斷和硬件中斷,通訊模塊動(dòng)態(tài)增加、刪除中斷;分配以太網(wǎng)使用IP地址及設(shè)備名。
PROFINET IO協(xié)議棧主要技術(shù)參數(shù)包括:協(xié)議棧版本為V4.5.0;通訊模式為支持RT,IRT;支持協(xié)議包括DCP,LLDP,MRP,CLRPC等;IO數(shù)據(jù)長(zhǎng)度為單向最大1 440 B。
基于ERTEC200P構(gòu)建PROFINET IO設(shè)備開發(fā)方案。系統(tǒng)主要由基于ERTEC200P的PROFINET IO設(shè)備和TCU1變頻器控制單元組成。如圖2所示。
圖2 硬件結(jié)構(gòu)圖Fig.2 Diagram of hardware structure
圖2中,ERTEC200P+SDRAM+SPI FLASH組成PROFINET IO設(shè)備核心部分,構(gòu)成PROFINET協(xié)議棧和用戶程序運(yùn)行的最小系統(tǒng)。ERTEC200P和SDRAM之間通過16位數(shù)據(jù)寬度實(shí)現(xiàn)高速讀寫。SDRAM存儲(chǔ)器容量為64 MB,SPI FLASH容量為32 MB,滿足PROFINET協(xié)議棧和用戶程序的需求。
PROFINET IO設(shè)備外部接口:
1)通過20針2.54 mm標(biāo)準(zhǔn)JTAG接口,為ERTEC200P提供程序下載與調(diào)試功能。
2)通過3.3 V TTL UART,提供PROFINET協(xié)議棧系統(tǒng)運(yùn)行調(diào)試接口。
3)通過網(wǎng)絡(luò)變壓器,RJ45接口等,實(shí)現(xiàn)2路100 Mb/s PROFINET以太網(wǎng)接口。
4)通過GPIO接口拓展3個(gè)LED發(fā)光二極管,指示協(xié)議棧和系統(tǒng)運(yùn)行狀態(tài)。
5)通過SPI接口連接ERTEC200P與變頻器控制單元,兼容控制器原有接口。
ERTEC200P基于eCos實(shí)時(shí)操作系統(tǒng)創(chuàng)建系統(tǒng)任務(wù),實(shí)現(xiàn)時(shí)鐘處理、串口通訊、網(wǎng)絡(luò)參數(shù)設(shè)置、通訊連接處理、PROFINET IO數(shù)據(jù)更新、通訊狀態(tài)顯示、控制器數(shù)據(jù)處理與交互[4]。系統(tǒng)軟件結(jié)構(gòu)圖如圖3所示。
圖3 軟件結(jié)構(gòu)圖Fig.3 Diagram of software structure
圖3中,各主要組成部分功能如下:
1)Task_MainApp任務(wù)負(fù)責(zé)系統(tǒng)控制,創(chuàng)建PNIO協(xié)議棧,初始化PNIO設(shè)備信息,檢測(cè)協(xié)議棧工作狀態(tài)。
2)Task_PNPB是PNIO協(xié)議棧任務(wù),用于事件處理,如通訊連接關(guān)系的建立與斷開,模塊與子模塊的動(dòng)態(tài)插入與刪除,數(shù)據(jù)處理的更新。Task_PNPB任務(wù)負(fù)責(zé)處理與Task_CycleIO任務(wù)的數(shù)據(jù)交互。
3)Task_RS232任務(wù),用于串口調(diào)試,根據(jù)串口命令執(zhí)行相應(yīng)操作對(duì)應(yīng)的狀態(tài)信息。
4)Task_LED任務(wù),根據(jù)PROFINET協(xié)議棧運(yùn)行狀態(tài)和控制器通訊狀態(tài),控制指示燈的工作狀態(tài)。
5)Task_CycleIO任務(wù),根據(jù)觸發(fā)信號(hào),周期執(zhí)行PROFINET協(xié)議棧與用戶緩存區(qū)之間的IO數(shù)據(jù)交互。根據(jù)TRANS_END事件作為觸發(fā)信號(hào),或者是固定周期產(chǎn)生的觸發(fā)信號(hào),更新設(shè)備輸入輸出數(shù)據(jù)。
IRT通訊模式中,在周期數(shù)據(jù)的傳輸結(jié)束時(shí)刻,當(dāng)所有的控制器IO CR和所有用戶IO CR連接全部完成時(shí)生成TRANS_END事件。
6)Task_EXCH任務(wù),根據(jù)PROFINET IO設(shè)備輸入輸出模型,控制PROFINET IO數(shù)據(jù)到通訊數(shù)據(jù)區(qū)的轉(zhuǎn)換。
PROFINET IO設(shè)備數(shù)據(jù)存取模型如圖4所示。
圖4 數(shù)據(jù)存取模型Fig.4 Diagram of data access model
PROFINET IO設(shè)備與PROFINET IO控制器建立通訊連接后,在PNIO_cbf_ar_ownership_ind中獲取所有設(shè)備組態(tài)信息。其中,槽(slot)對(duì)應(yīng)模塊(module),子槽(subslot)對(duì)應(yīng)子模塊(submodule)。然后通過PNIO_sub_plug添加必要的模塊信息。
PROIFNET IO設(shè)備調(diào)用PNIO_initiate_data_read,接收PROFINET IO控制器下發(fā)數(shù)據(jù),將PNIO緩沖區(qū)數(shù)據(jù),根據(jù)對(duì)應(yīng)關(guān)系放到槽和子槽中。同時(shí),調(diào)用PNIO_initiate_data_write,把槽和子槽中數(shù)據(jù)更新到PNIO緩沖區(qū),上傳給PROFINET IO控制器。
PROFINET IO設(shè)備根據(jù)通信連接關(guān)系和子模塊屬性,按照模塊順序、輸入輸出類型和IO長(zhǎng)度,將輸入輸出數(shù)據(jù)存儲(chǔ)到過程數(shù)據(jù)緩存區(qū)[5]。子模塊屬性在設(shè)備GSD文件中定義,表明PROFINET IO設(shè)備支持的輸入輸出模塊信息。通過過程緩存區(qū),PROFINET IO設(shè)備通過SPI接口實(shí)現(xiàn)與變頻器控制單元的數(shù)據(jù)交換。SPI為全雙工通信。PROFINET IO設(shè)備將基于PROFINET IO控制器產(chǎn)生的輸出數(shù)據(jù)傳送到控制單元,同時(shí)將控制單元返回?cái)?shù)據(jù)傳送到PROFINET IO控制器。
PROFINET IO與變頻器控制單元通過SPI通信方式實(shí)現(xiàn)數(shù)據(jù)交換。一方面ERTEC200P提供SPI外設(shè),開發(fā)方便;另一方面,兼容控制器原有接口,根據(jù)不同應(yīng)用場(chǎng)合,可以實(shí)現(xiàn)外部通訊模塊無縫替換。
SPI通信協(xié)議根據(jù)傳輸類型分為兩類,一種是周期性傳輸?shù)耐ㄐ艛?shù)據(jù)幀,一種是非周期傳輸?shù)耐ㄐ艆?shù)幀,SPI通信協(xié)議如圖5所示。
圖5 SPI通信協(xié)議Fig.5 SPI communication protocol
3.3.1 通信數(shù)據(jù)幀
命令字為0x01,表示當(dāng)前傳輸為數(shù)據(jù)幀。
模塊ID說明當(dāng)前通訊模塊類型,SPI協(xié)議設(shè)計(jì)兼容原有通訊模塊,如PROFIBUS DP,對(duì)于底層設(shè)備而言,可實(shí)現(xiàn)無縫替換。
狀態(tài)字指示PROFINET IO設(shè)備與PROFINET IO控制器的通訊連接狀態(tài)。連接關(guān)系建立后,從通訊斷開狀態(tài)切換到通訊連接狀態(tài)。根據(jù)數(shù)據(jù)有效性,在通訊連接狀態(tài),當(dāng)數(shù)據(jù)傳輸內(nèi)容不符時(shí),切換到通訊報(bào)警狀態(tài)。
根據(jù)模塊屬性計(jì)算數(shù)據(jù)區(qū)長(zhǎng)度,根據(jù)過程數(shù)據(jù)填充數(shù)據(jù)區(qū)內(nèi)容。通信數(shù)據(jù)幀為周期性傳輸,當(dāng)PROFINET IO數(shù)據(jù)更新后,立即發(fā)起和控制單元的數(shù)據(jù)交換??刂破骰貜?fù)的數(shù)據(jù)幀格式與發(fā)送格式一致,除了模塊ID對(duì)應(yīng)為設(shè)備ID,表明當(dāng)前連接的底層設(shè)備信息。
3.3.2 通信參數(shù)幀
命令字為0x02,表示當(dāng)前傳輸為參數(shù)幀。
參數(shù)幀為非周期數(shù)據(jù)幀,當(dāng)PROFINET IO設(shè)備初始化,或設(shè)備參數(shù)信息發(fā)生變化時(shí)發(fā)起傳輸。
參數(shù)幀的數(shù)據(jù)傳輸內(nèi)容固定,包含6個(gè)B的MAC地址和6個(gè)B的IP地址,因此無需額外說明數(shù)據(jù)區(qū)長(zhǎng)度。
控制器解析到有效數(shù)據(jù)后,通過外部接口顯示PROFINET設(shè)備信息,方便觀測(cè)與配置。
通過PROFINET IO控制器到底層設(shè)備之間的通信測(cè)試,驗(yàn)證PROFINET IO接口開發(fā)功能。測(cè)試環(huán)境硬件結(jié)構(gòu)圖如圖6所示。
圖6 測(cè)試環(huán)境結(jié)構(gòu)圖Fig.6 Diagram of test environment
測(cè)試環(huán)境由PLC S7-1500(PROFINET IO控制器)、PROFINETIO接口設(shè)備(ERTEC200P)、TCU1控制板、具備端口鏡像功能的交換機(jī)以及安裝TIA Portal V13軟件和wireshark軟件的PC機(jī)組成。
首先,將PROFINET IO控制器(PLC S7-1500)經(jīng)交換機(jī)連接ERTEC200P與TCU1控制單元。然后將交換機(jī)右側(cè)兩個(gè)端口配置為鏡像端口,其中一個(gè)端口連接到PC機(jī),以便通過wireshark軟件抓取PROFINET通信報(bào)文,分析網(wǎng)絡(luò)數(shù)據(jù)包。
通過博圖軟件配置設(shè)備組態(tài)信息,將PLC S7-1500的IP地址設(shè)置為192.168.0.1,PROFINET IO設(shè)備的IP地址設(shè)置為192.168.0.2,設(shè)備通訊模塊Slot1Subslot1選擇64 B輸入,輸入地址IW0-63;Slot2Subslot1選擇64 B輸出,輸出地址QW0-63;如圖7所示。
設(shè)置TCU1控制單元,將PLC-1500下發(fā)數(shù)據(jù)回傳。通過博圖軟件在線觀測(cè),比較輸出數(shù)據(jù)(強(qiáng)制參數(shù)值表)與輸入數(shù)據(jù)(觀測(cè)參數(shù)值表)二者對(duì)應(yīng)關(guān)系,如圖8所示。
圖7 設(shè)備組態(tài)圖Fig.7 Diagram of device configuration
圖8 輸入數(shù)據(jù)與輸出數(shù)據(jù)Fig.8 Diagram of input data and output data
圖8中,將輸出參數(shù)值QW8~QW14依次強(qiáng)制為0x5566,0x7788,0x99AA,0xBBCC。輸入?yún)?shù)值與下方的輸出參數(shù)值是一致的,說明PLC到TCU1控制器之間數(shù)據(jù)交互正常,PROFINET IO設(shè)備的協(xié)議轉(zhuǎn)換功能實(shí)現(xiàn)。
通過wireshark軟件抓取PROFINET通信報(bào)文,如圖9所示。
分析抓取數(shù)據(jù)包,前6個(gè)字節(jié)0x28,0x63,0x36,0x8b,0xc5,0x66為目的MAC地址,是西門子PLC的MAC地址。接下來的6個(gè)字節(jié)0x80,0x20,0xcb,0x30,0x06,0xfc為目的MAC地址,是PROFINET IO設(shè)備的MAC地址。表明當(dāng)前數(shù)據(jù)傳輸方向?yàn)閺腜ROFINET IO設(shè)備到PLC。接下來的兩個(gè)字節(jié)0x88,0x92表明當(dāng)前數(shù)據(jù)幀為PROFINET 協(xié)議幀。中間的 0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc對(duì)應(yīng)輸入數(shù)據(jù)。同樣,說明RPFOIENT IO設(shè)備轉(zhuǎn)換功能正常。
圖9 數(shù)據(jù)包分析Fig.9 Packet analysis
本文從開發(fā)的角度介紹了一種基于ERTEC200P的PROFINET IO接口的快速實(shí)現(xiàn)方案,包括硬件設(shè)計(jì)、軟件實(shí)現(xiàn)與通信測(cè)試。本通訊模塊及其配套應(yīng)用產(chǎn)品TAC1系列變頻器已委托中國PROFIBUS & PROFINET協(xié)會(huì)(PI-China)進(jìn)行檢測(cè)并順利通過認(rèn)證測(cè)試,充分驗(yàn)證了方案設(shè)計(jì)的合理性。通過該設(shè)計(jì)方案將TACI變頻器產(chǎn)品快速集成到PROFINET網(wǎng)絡(luò),滿足了現(xiàn)場(chǎng)應(yīng)用的需求,具有很強(qiáng)的實(shí)際意義。