柳 青
(北京電子科技職業(yè)學院, 北京 100176)
Ethercat 作為一種開放式高速實時以太網廣泛應用于運動控制、自動化等領域。在當前Ethercat 主站的研究中為了追求實時性能和高精度時鐘同步, 對系統(tǒng)的軟件或硬件都提出了特殊要求。 蔣杰等通過改造Linux 內核在X86 平臺上實現了Ethercat 主站[1],孫躍祥等在Xilinx Zynq-7000 處理器構建了嵌入式Ethercat 主站[2]。
然而在物料傳輸、 工件檢測等對實時性要求不高的系統(tǒng)中,如果采用上述方案則存在系統(tǒng)復雜,成本高,開發(fā)周期長等問題。 因此提出了這一種在Windows 平臺上采用網絡套接字來實現Ethercat 主站協(xié)議棧的方法。 該方法基于Ethercat 規(guī)范中Ethercat UDP/IP 報文格式,將Ethercat 報文嵌入udp 數據包的方式,不需要專用硬件或者特殊網卡驅動,協(xié)議棧配置靈活,可移植性好。
Ethercat 主站的主要功能是對從站的配置、 數據交換、為應用程序提供編程接口,因此該將協(xié)議棧設計為三個線程模塊和一個數據模塊。 三個工作線程分別負責應用程序接口、Ethercat 報文生成、解析與收發(fā)、配置服務通信。 每個線程都可以訪問數據模塊中的數據,線程之間通過數據模塊交互信息,協(xié)議棧架構見圖1。
圖1 Ethercat 主站協(xié)議棧框架
數據模塊包含了每個從站的信息,包括:基本信息,如從站位置、生產廠商、版本號等;配置信息,主站對從站初始化時,需要對其SM 和FMMU 進 行 配置,否則在從站狀態(tài)轉換時會出錯,另外在使用PDO 通信時,也必須對從站1C12、1C13 等對象進行配置[3],以映射報文中的數據到從站的字典對象中。 從站結構體代碼如下所示:
Ethercat 協(xié)議使用標準的IEEE 802.3 以太網幀傳輸數據,作為一種開放式實時以太網協(xié)議,支持UDP/IP 傳輸協(xié)議[3],在這種模式下,將Ethercat 報文作為UDP 的數據,Ethercat 從站控制器就可以識別并處理數據包。 為了能夠區(qū)分Ethercat 報文和其他報文, 協(xié)議規(guī)定了Ethercat 使用的UDP 端口為0x88A4,Ethercat UDP/IP 報文格式如下:
報文頭規(guī)定了該報文的指令類型、 數據地址以及數據長度,數據部分是報文攜帶的數據信息,對于讀報文,從站控制器將從站數據復制到該區(qū)域,對于寫報文,從站控制器將該區(qū)域的數據復制到從站對應的內存中。 從站控制器會根據每次報文的執(zhí)行結果更新該字段, 主站通過檢查該字段來判斷報文指令是否執(zhí)行成功。Ethercat 報文生成函數如下:
Ethercat 主站在初始化階段需要掃描網絡,并對各個從節(jié)點進行配置[5],另外應用程序對界面服務數據的讀寫需要SDO 通信, 這些任務都需要通過幾個階段來完成,會消耗比較多的時間, 為了避免執(zhí)行這些任務導致應用程序阻塞,將這些任務在一個單獨的線程中執(zhí)行,應用程序可以很快得到返回。
該線程不斷查詢數據模塊中的控制字, 輪詢應用程序請求類型,收到請求則會調用相應的處理函數,在處理函數中,不斷改變處理狀態(tài),以使應用層可以掌握處理進度及結果。 處理完成后,將請求字段復位,以便接受下一次請求。 配置流程如下:
(1)采用FBWR 指令掃描總線網絡,讀取設備ID 等。
(2)配置SM 寄存器。
(3)計算FMMU,并配置FMMU 寄存器。
(4)配置SDO、PDO。
(5)狀態(tài)轉換。
為了驗證協(xié)議棧的正確性, 采用德國倍福公司的Ethercat 從站模塊進EL2889、EL1889 進行通信測試,實驗實物見圖2。 采用Wireshark 軟件抓取通信數據包,抓取的數據包見圖3。
圖2 Ethercat 通信實驗平臺
圖3 Wireshark 抓包數據
在圖3 中,以第497 個數據包為例,主站計算的IP地址為192.168.0.100, 目 的IP 設置為192.168.0.255,目的端口號設置為0X88A4, 十進制表示為33980,該數據包為協(xié)議棧發(fā)出的APWR 指令,數據長度為2,WKC 為0。 第498 個數據包為從站返回的應答包, 可以看出數據部分發(fā)生變化,WKC 也變?yōu)?, 說明Ethercat 從站已經成功處理該數據包,協(xié)議棧可以和從站正常進行數據交互。
闡述了基于Windows 套接字的Ethercat 主站協(xié)議棧設計方法,根據Ethercat UDP/IP 規(guī)范,將Ethercat 報文嵌入到udp 報文中, 避免了使用專門硬件或者開發(fā)特殊網卡驅動,實現了主站對從站的寄存器讀寫,并詳細設計了主站對從站的配置流程,最后通過Wireshark 軟件抓取通信數據包,實驗表明:協(xié)議棧能夠與從站進行數據交互,設計簡單、配置靈活,有利于Ethercat 協(xié)議在通用Windows平臺上的應用。