国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Windows 套接字的Ethercat 主站協(xié)議棧設計與實現

2021-10-26 07:19:46
關鍵詞:主站線程以太網

柳 青

(北京電子科技職業(yè)學院, 北京 100176)

0 引言

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é)議棧配置靈活,可移植性好。

1 整體架構設計

Ethercat 主站的主要功能是對從站的配置、 數據交換、為應用程序提供編程接口,因此該將協(xié)議棧設計為三個線程模塊和一個數據模塊。 三個工作線程分別負責應用程序接口、Ethercat 報文生成、解析與收發(fā)、配置服務通信。 每個線程都可以訪問數據模塊中的數據,線程之間通過數據模塊交互信息,協(xié)議棧架構見圖1。

圖1 Ethercat 主站協(xié)議棧框架

數據模塊包含了每個從站的信息,包括:基本信息,如從站位置、生產廠商、版本號等;配置信息,主站對從站初始化時,需要對其SM 和FMMU 進 行 配置,否則在從站狀態(tài)轉換時會出錯,另外在使用PDO 通信時,也必須對從站1C12、1C13 等對象進行配置[3],以映射報文中的數據到從站的字典對象中。 從站結構體代碼如下所示:

2 Ethercat 報文解析

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 報文生成函數如下:

3 配置與服務線程

Ethercat 主站在初始化階段需要掃描網絡,并對各個從節(jié)點進行配置[5],另外應用程序對界面服務數據的讀寫需要SDO 通信, 這些任務都需要通過幾個階段來完成,會消耗比較多的時間, 為了避免執(zhí)行這些任務導致應用程序阻塞,將這些任務在一個單獨的線程中執(zhí)行,應用程序可以很快得到返回。

該線程不斷查詢數據模塊中的控制字, 輪詢應用程序請求類型,收到請求則會調用相應的處理函數,在處理函數中,不斷改變處理狀態(tài),以使應用層可以掌握處理進度及結果。 處理完成后,將請求字段復位,以便接受下一次請求。 配置流程如下:

(1)采用FBWR 指令掃描總線網絡,讀取設備ID 等。

(2)配置SM 寄存器。

(3)計算FMMU,并配置FMMU 寄存器。

(4)配置SDO、PDO。

(5)狀態(tài)轉換。

4 通信實驗

為了驗證協(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é)議棧可以和從站正常進行數據交互。

5 結論

闡述了基于Windows 套接字的Ethercat 主站協(xié)議棧設計方法,根據Ethercat UDP/IP 規(guī)范,將Ethercat 報文嵌入到udp 報文中, 避免了使用專門硬件或者開發(fā)特殊網卡驅動,實現了主站對從站的寄存器讀寫,并詳細設計了主站對從站的配置流程,最后通過Wireshark 軟件抓取通信數據包,實驗表明:協(xié)議棧能夠與從站進行數據交互,設計簡單、配置靈活,有利于Ethercat 協(xié)議在通用Windows平臺上的應用。

猜你喜歡
主站線程以太網
基于1500以太網養(yǎng)豬場的智能飼喂控制系統(tǒng)的設計與實現
淺談linux多線程協(xié)作
基于OS2主站系統(tǒng)的海量數據共享技術研究
多表遠程集抄主站系統(tǒng)
電子制作(2017年23期)2017-02-02 07:17:07
談實時以太網EtherCAT技術在變電站自動化中的應用
電子制作(2017年24期)2017-02-02 07:14:44
一種90W高功率以太網供電系統(tǒng)的設計
電源技術(2015年7期)2015-08-22 08:48:48
淺談EPON與工業(yè)以太網在貴遵高速公路中的應用
基于改進經濟壓差算法的主站AVC的研究
關口電能計量故障監(jiān)測報警裝置及主站研究
Linux線程實現技術研究
新竹县| 黔东| 石嘴山市| 云林县| 左云县| 广水市| 南陵县| 九龙坡区| 镇原县| 广元市| 南皮县| 江阴市| 潮州市| 腾冲县| 临城县| 太康县| 普兰县| 攀枝花市| 大城县| 平定县| 嘉荫县| 牡丹江市| 周宁县| 万盛区| 宁南县| 荆门市| 呼伦贝尔市| 图们市| 容城县| 易门县| 长泰县| 九龙城区| 许昌市| 门源| 平潭县| 元谋县| 洪湖市| 盐边县| 罗江县| 铜川市| 新郑市|