劉澤1,2,熊皚1,武繼瑞1.2
(1. 中國科學院光電技術研究所,四川 成都 610209;2. 中國科學院大學,北京 100190)
摘要:分析了一種全新的工業以太網協議EtherNet/IP,并從源代碼的角度闡明了其基本原理。基于TI的DSP+ARM雙核芯片F28M36設計了一款采用以太網傳輸的伺服控制系統控制卡,移植了UCOSII操作系統、CIP協議、嵌入式TCP/IP協議和網絡芯片驅動,最終實現了工業以太網協議EtherNet/IP協議的成功移植。
關鍵詞:EtherNet/IP;F28M36;CIP ;伺服控制
0引言
近年來,隨工業控制對于組網和信息傳輸速率與精度的要求越來越高,傳統的工業現場總線技術已經很難滿足現代和未來的工業控制系統要求。現在,工業以太網已經成為了一種確定性的網絡。通過和現場總線的對比,其在組網、傳輸速率、價格等方面顯示出來的優勢越來越明顯,成為未來工業控制系統通信接口的發展方向。
不同于傳統的工業以太網協議,例如最普及的EtherCAT或者是高端的SERCOSIII等協議,EtherNet/IP協議只規定了應用層協議CIP的規范,在網絡層和傳輸層上使用了事實上的標準網絡協議TCP/IP協議,這使得EtherNet/IP協議在組網上有巨大的優勢,可以一網到底,靈活組網,而不是傳統工業以太網或者現場總線技術的專網專用。
目前國內對于EtherNet/IP協議的研究還是停留在直接購買商業代碼或者是購買專用的ASIC模塊芯片進行研究階段。可以說國內對應EtherNet/IP的研究還處于起步階段。
1EtherNet/IP協議的簡介
1.1EtherNet/IP協議的模型
相比較于傳統的現場總線技術等工業控制協議,EtherNet/IP在本質上也都是基于IEEE802.3的規范以制定的標準,ODVA給出的EtherNet/IP協議規范就指出,EtherNet/IP由應用層的CIP、傳輸和網絡層的TCP/IP協議以及底層的電氣協議規范構成[1], EtherNet/IP的通信模型如圖1所示。
1.2EtherNet/IP的特點
(1)EtherNet/IP是一種面向連接的協議,相互的設備間只用建立可靠連接才能通信。
(2)EtherNet/IP能夠傳輸各種類型的報文,并且對于不同類型的數據采用不同的傳輸方式,具體分為顯示報文的傳輸、I/O數據報文的傳輸以及未連接數據報文的傳輸(UCMN)。
(3)協議是基于生產者和消費者的模型通信,不僅支持多播通信,還支持很多種I/O數據觸發方式,如:周期觸發方式、中斷方式等。
(4)EtherNet/IP協議用幾種對象模型來描述各種動作和參數,采用面向對象的方式編程是現在各種協議規范通常采用的辦法。
1.3EtherNet/IP的結構
在幾種常見的工業以太網協議和現場總線技術中,EtherNet/IP和ControlNet以及DeviceNet一樣,使用的規范都是基于CIP協議,這就保證了EtherNet/IP設備在和使用了CIP作為應用層的設備能夠很好地互聯通信,而這三種協議不同的地方在于,EtherNet/IP在網絡層和傳輸層協議上就使用了TCP/IP協議[2] ,如圖2所示。
1.4EtherNet/IP的對象參考模型
EtherNet/IP協議使用了一系列的對象模型用來描述EtherNet/IP網絡中的各種特征以及參數,通過使用對象模型的方式使得在具體的通信過程中,設備之間能夠更加方便地識別和通信[1]。
1.5EtherNet/IP的數據封裝格式
EtherNet/IP的數據封裝格式如圖3所示。
2伺服驅動器通信接口的硬件設計
2.1伺服驅動器設計的整體架構
由于設計的最終目的是實現通過EtherNet/IP網絡控制兩個電機的轉動,因此采取的設計思路就是實現ARM和PC主站之間的通信,DSP控制電機轉動,FPGA進行編碼器數據的運算,如圖4所示。
2.2網絡通信接口的設計
由于F28M36芯片自帶了EMAC模塊的功能,所以只需要加入一個PHY芯片就可以了。采用TI公司的TLK110芯片作為PHY芯片,RJ45接口采用普通的8pin的網口,采用兩組差分信號進行傳輸,并且預留了能夠采用4組差分信號進行傳輸的接口。采用3.3 V進行供電[3],如圖5所示。
3伺服驅動器控制卡從站的軟件設計
按照EtherNet/IP的協議規范,移植EtherNet/IP協議需要滿足如下的軟件條件:
(1)應用層協議CIP代碼,這里采用的是ODVA官網給出的示例源碼ENetIP_EC。
(2)嵌入式TCP/IP協議,這里采用的是輕量級支持操作系統的Lwip協議。
(3)實時操作系統采用的是UCOSII。
(4)整個移植過程中采用的是免費TCP/IP協議+示例從站應用層代碼+RTOS的結構,具體的軟件架構如圖6所示。
3.1嵌入式操作系統UCOSII的移植
UCOSII操作系統是一款大家比較熟悉的嵌入式操作系統,關于UCOSII操作系統在ARM上的移植成功的例子很多,本文的創新之處在于在TI的芯片F28M36上成功進行了移植,主要的工作除了將圖6EtherNet/IP的軟件架構
M3核移植到F28M36以外,還需要滿足CCS6.1編譯器的代碼規范。
3.2嵌入式TCP/IP協議Lwip的移植
Lwip采用的是分層進行結構設計的思想,每一個協議都采用一個模塊來進行實現,然后提供了與對應模塊進行交互的接口。Lwip協議中所有的進程模塊都在一個進程中,這樣就保證了應用程序既可以是一個單獨的進程也可以圖7lwip的在F28M36上的通信流程嵌入到TCP/IP進程中,如果應用程序駐留在TCP/IP內部,那么就利用內部回調函數和TCP/IP通信,如圖7所示。
3.3CIP協議的移植
EtherNet/IP協議的初始化過程中,必須先注冊一個CIP類,CIP類中包括了應用對象的各種特征屬性,例如ID、實例結構、類代碼等。整個過程是通過一個全局公共變量gUserDefined以及MR維持的路由來實現的。首先需要判斷CIP類注冊的個數,然后給不同的注冊類分配不同的內存空間,EtherNet/IP協議在代碼實現上,通過調用不同的CIP注冊類的接口函數來實現對于單個或多個CIP對象的操作。當創建完成一個CIP類之后,通過調用函數GSPutTrrbl()向消息路由發送一個MR_RegistrationtrrblType類型的trribble消息。
進入傳輸層和網絡層連接以后,程序按照下列步驟來進行:
(1)首先協議棧進入函數en_PassiWaitTSK()運行,這個任務函數只有在初始連接階段才會運行,等待任務執行完畢后,執行一個接收報文的封裝任務函數en_cd_EncaRecvTASK(),它是一個中低級優先級的任務,主要的作用就是接收從底層網絡(傳輸層)上傳過來的報文信息并進行CIP格式的封裝處理,然后產生一個伙伴任務en_cd_EncaSendTASK(),當接收到完整消息以后,en_cd_ProcessEncaMSG()就用來解析消息,然后返回響應。
(2)未連接的消息由en _TXfpacket()來進行解析,然后通過en模塊里面的函數en_cd_TxUnscheduledTask()來完成消息解析。針對消息的回復可以由UCMN來進行, 3類消息的處理則是通過函數en_cd_TxClass3Packet()來完成的,一旦消息被格式化完成,它就會被送到發送隊列中等待發送,程序流程如圖8所示。
4協議移植的驗證
4.1驗證方案的確定
EtherNet/IP協議的功能十分強大,但是由于沒有購買商業代碼,采用的是移植的免費的示例代碼,所以關于移植方案只能確定移植的成功與否,而對工業以太網協議的眾多技術指標并沒有要求。
判斷協議移植成功的兩個重要的技術指標是:
(1)能夠識別從站的IP地址,表明Lwip協議移植成功.
(2)能夠識別滿足ODVA給出的EtherNet/IP規范的十六進制數據包,并返回EtherNet/IP數據包。
4.2測試主站的選擇
測試EtherNet/IP從站移植的正確性,需要選擇一個EtherNet/IP的主站,這里采用EtherNet/IP給出的一個簡單的示例主站測試,其方法就是通過向主站發送一系列的EtherNet/IP主站數據包,看從站的反饋數據包是否是EtherNet/IP格式的數據包。
4.3IP地址的確定
Lwip可以使用固定IP地址,也可以采用DHCP自動分配IP地址,然后通過串口打印出來。采用DHCP自動分配的IP地址為169.254.169.99,然后ping IP地址。具體的過程如圖9和圖10所示。
圖10表明Lwip協議移植成功。
4.4主從站的測試
向主站發送固定的EtherNet/IP數據包,如圖11所示。
ODVA給了CIP報文的一個參考格式。CIP的數據包存儲是先低位,再高位,逐條分析整個數據包的結構,整個數據表達的意思就是:通過UCMN未連接管理器發送rdtag1,通過連接管理對象去請求一個對象實例ID為01的對象,該對象去響應一個CIP讀取數據的命令,給定數據讀取的路徑,然后只需要讀取一個字節的數據。
然后點擊Request命令,再等待,當連接完成以后,最上面的Connection_FLAG由灰色變為黃色,表明連接成功。
連接成功以后就會反饋一個EtherNet/IP的數據包,如果發送的數據包不是EtherNet/IP格式或者從站不遵循EtherNet/IP的數據格式,則不會有數據反饋。其中前4位是00D2,表明反饋回來的是第3類數據,即I/O數據,B2表明是UCMN數據,C2表明是第1類數據;00D2后面的數據表明是數據長度和數據大小,EtherNet/IP沒有給出相應的規范,在商用驅動器中,用戶不需要解析十六進制代碼,主站會直接識別信息。
5結論
通過測試分析一種全新的工業以太網協議EtherNet/IP,熟悉其架構和數據格式,通過ODVA給出的移植建議,設計了基于F28M36的網絡接口硬件,自己選擇了RTOS、TCP/IP協議棧和示例從站代碼,在雙核芯片F28M36的ARM核上成功移植了EtherNet/IP從站,結合示例的主站代碼,測試TCP/IP協議和CIP協議移植的效果,并取得成功,證明了移植的有效性。由于EtherNet/IP是一種全新的工業以太網協議,且本文的所有移植都采用的是免費代碼,因此本文沒有測試很多重要的工業以太網的技術指標,只是驗證了移植的有效性,今后將購買商業代碼進行測試。
參考文獻
[1] CIP Common Specification. Release 1.0.2001 by ControlNet International and Open DeviceNet Vendor Association[S].2001.
[2] 薛吉,邱浩,奚培鋒,等.工業以太網EtherNet/IP介紹及其產品開發[J].低壓電器, 2009 (5):3235.
[3] 鄒靖波,熊皚.EtherCAT從站硬件設計方法[J].微型機與應用,2015,34(7):2729.