基于Linux的EtherCAT主站的研究
引言
本文引用地址:http://www.104case.com/article/201612/332312.htm隨著網絡技術的迅速發展,當今的工業現場總線技術均逐漸過渡到實時工業以太網階段。如西門子公司的PROHBUS到PROFINET;博世力士樂公司的SERCOS?到SERCOSIII等。同時一些新興的工業實時以太網技術也以其全新的起點和優越的性能脫穎而出。其中EtherCAT(Ethernetfor Control Automation Technology)技術(也稱為以太網現場總線),便是其中較為突出的一個。現場總線技術的實現主要依賴于主站與從站兩大部分,其中尤以主站技術最為復雜,同時也是控制系統中通訊部分的核心。從歷史上看現場總線主站技術的演變經歷了主動卡(如SERCOS一代卡)、被動卡(如SoftSERCANS卡)、軟主站(不需要專門的硬件卡,如可支持Eme疋AT總線的TwinCAT和Codesys軟件)。這使得運動控制器的開發對特殊硬件板卡的需求逐漸降低,直至徹底拋開,從而實現其開放性和靈活性。研究Linux下的EtherCAT主站系統在研究軟主站的基礎上又有兩個意義:一是Linux操作系統為開源系統,在其基礎上的任何軟件方面的研究都可直至底層,為自主創新提供可能。二是Linux操作系統很容易移植到ARM處理器平臺上,而ARM架構相對X86硬件系統具有諸多靈活性和開發性,方便國內廠商開發出基于自身硬件平臺的高性能控制器。因而此項研究即有助于開發基于軟主站的開放式運動控制器,同時可為研制我國自主的工業實時以太網標準提供借鑒,具有較強的實際意義。
1 Linux-FEtherCAT主站系統結構
Linux系統總體分為內核層與應用層。其中內核層運行系統的核心調度與驅動程序,內核層中的程序稱為模塊,實時性較高。應用層運行各種桌面程序和應用程序,實時性差。Linux系統下EtherCAT軟主站系統結構如圖1所示。
1)網絡設備部分。EtherCAT軟主站不使用特殊硬件,而是普通的網絡設備(如PCI網卡)。內核層中含有網絡設備模塊,但為了實現EtherCAT協議,需要對普通嘲絡設備驅動進行修改。
2)主站模塊與應用程序。為了保證實時性的要求,EtherCAT主站模塊與應用程序模塊均在內核層。其中EtherCAT主站模塊實現全部的協議解析、任務調度并為網絡設備與應用程序提供函數接口。應用程序模塊最終實現對各種自動化系統的控制,由用戶根據具體的控制對象和控制要求進行編寫。
3)EtherCAT工具。該程序提供了各種可以在Linux用戶層運行的命令。可以直接實現對從站的訪問和設置。如:設置從站地址、顯示總線配置、顯示PDO數據、讀寫SDO參數等。由于用戶層無法直接訪問內核層的數據,因此需要構造Linux字符設備。通過對字符設備的訪問間接實現與EtherCAT主站模塊的通汛。
圖1主站系統結構
2數據幀的傳輸過程
數據幀的傳輸是EtherCAT主站模塊的重要功能,是實現EtherCAT協議傳輸的基礎。EtherCAT主站的工作主要分為三個階段如圖2所示。
圖2主站線程工作狀態
2.1孤兒階段
當EtherCAT主站模塊被加載到內核后,狀態處于孤兒階段,等待網絡設備模塊的加載與正常啟動。
2.2空閑階段
當存在可用的網絡設備后,主站進入空閑階段,并啟動線程發送廣播數據幀,對從站進行循環掃描。當掃描到可用從站,便對其進行配置。同時隨時以掃描的方式監控總線上的變化。實現方法如圖3(a)所示。主要過程分為接收數據幀、執行當前狀態機(詳見數據通訊管理的實現一節)、將數據幀添加至鏈表、發送數據幀鏈表中的全部數據。
2.3操作階段
當有應用程序模塊運行時,主站進入操作階段。如圖3(C)所示,應用程序通過調用ecrt_master_activate()函數,停止主站模塊中運行的“空閑線程”,啟動“操作線程”。該線程只調用了執行當前狀態機的函數,如圖3(b)所示,以便監控總線中的變化,而將原本主站模塊執行的收發數據幀的函數放到了應用程序中,為實現實時控制提供條件。
評論