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

?

基于Linux的EtherCAT主站的研究

2011-05-11 03:46馬春敏康存鋒黃旭東鄭學科楊建武費仁元
制造業(yè)自動化 2011年8期
關(guān)鍵詞:狀態(tài)機網(wǎng)絡設(shè)備主站

馬春敏,康存鋒,黃旭東,鄭學科,楊建武,費仁元

(北京工業(yè)大學 機械工程與應用電子技術(shù)學院,北京 100124)

基于Linux的EtherCAT主站的研究

馬春敏,康存鋒,黃旭東,鄭學科,楊建武,費仁元

(北京工業(yè)大學 機械工程與應用電子技術(shù)學院,北京 100124)

0 引言

隨著網(wǎng)絡技術(shù)的迅速發(fā)展,當今的工業(yè)現(xiàn)場總線技術(shù)均逐漸過渡到實時工業(yè)以太網(wǎng)階段。如西門子公司的PROFIBUS到PROFINET;博世力士樂公司的SERCOS[1]到SERCOSIII等。同時一些新興的工業(yè)實時以太網(wǎng)技術(shù)也以其全新的起點和優(yōu)越的性能脫穎而出。其中EtherCAT[2](Ethernet for Control Automation Technology)技術(shù)(也稱為以太網(wǎng)現(xiàn)場總線),便是其中較為突出的一個?,F(xiàn)場總線技術(shù)的實現(xiàn)主要依賴于主站與從站兩大部分,其中尤以主站技術(shù)最為復雜,同時也是控制系統(tǒng)中通訊部分的核心。從歷史上看現(xiàn)場總線主站技術(shù)的演變經(jīng)歷了主動卡(如SERCOS一代卡)、被動卡(如SoftSERCANS卡[3])、軟主站(不需要專門的硬件卡,如可支持EtherCAT總線的TwinCAT和Codesys軟件)。這使得運動控制器的開發(fā)對特殊硬件板卡的需求逐漸降低,直至徹底拋開,從而實現(xiàn)其開放性和靈活性。研究Linux下的EtherCAT主站系統(tǒng)在研究軟主站的基礎(chǔ)上又有兩個意義:一是Linux操作系統(tǒng)為開源系統(tǒng),在其基礎(chǔ)上的任何軟件方面的研究都可直至底層,為自主創(chuàng)新提供可能。二是Linux操作系統(tǒng)很容易移植到ARM處理器平臺上,而ARM架構(gòu)相對X86硬件系統(tǒng)具有諸多靈活性和開發(fā)性,方便國內(nèi)廠商開發(fā)出基于自身硬件平臺的高性能控制器。因而此項研究即有助于開發(fā)基于軟主站的開放式運動控制器,同時可為研制我國自主的工業(yè)實時以太網(wǎng)標準提供借鑒,具有較強的實際意義。

1 Linux下EtherCAT主站系統(tǒng)結(jié)構(gòu)[4]

Linux系統(tǒng)總體分為內(nèi)核層與應用層。其中內(nèi)核層運行系統(tǒng)的核心調(diào)度與驅(qū)動程序,內(nèi)核層中的程序稱為模塊,實時性較高。應用層運行各種桌面程序和應用程序,實時性差。Linux系統(tǒng)下EtherCAT軟主站系統(tǒng)結(jié)構(gòu)如圖1所示。

1)網(wǎng)絡設(shè)備部分。EtherCAT軟主站不使用特殊硬件,而是普通的網(wǎng)絡設(shè)備(如PCI網(wǎng)卡)。內(nèi)核層中含有網(wǎng)絡設(shè)備模塊,但為了實現(xiàn)EtherCAT協(xié)議,需要對普通網(wǎng)絡設(shè)備驅(qū)動進行修改。

2)主站模塊與應用程序。為了保證實時性的要求,EtherCAT主站模塊與應用程序模塊均在內(nèi)核層。其中EtherCAT主站模塊實現(xiàn)全部的協(xié)議解析、任務調(diào)度并為網(wǎng)絡設(shè)備與應用程序提供函數(shù)接口。應用程序模塊最終實現(xiàn)對各種自動化系統(tǒng)的控制,由用戶根據(jù)具體的控制對象和控制要求進行編寫。

3)EtherCAT工具。該程序提供了各種可以在Linux用戶層運行的命令??梢灾苯訉崿F(xiàn)對從站的訪問和設(shè)置。如:設(shè)置從站地址、顯示總線配置、顯示PDO數(shù)據(jù)、讀寫SDO參數(shù)等[2]。由于用戶層無法直接訪問內(nèi)核層的數(shù)據(jù),因此需要構(gòu)造Linux字符設(shè)備。通過對字符設(shè)備的訪問間接實現(xiàn)與EtherCAT主站模塊的通訊。

圖3 空閑階段與操作階段程序流程

圖1 主站系統(tǒng)結(jié)構(gòu)

2 數(shù)據(jù)幀的傳輸過程

數(shù)據(jù)幀的傳輸是EtherCAT主站模塊的重要功能,是實現(xiàn)EtherCAT協(xié)議傳輸?shù)幕A(chǔ)。EtherCAT主站的工作主要分為三個階段如圖2所示。

圖2 主站線程工作狀態(tài)

2.1 孤兒階段

當EtherCAT主站模塊被加載到內(nèi)核后,狀態(tài)處于孤兒階段,等待網(wǎng)絡設(shè)備模塊的加載與正常啟動。

2.2 空閑階段

當存在可用的網(wǎng)絡設(shè)備后,主站進入空閑階段,并啟動線程發(fā)送廣播數(shù)據(jù)幀,對從站進行循環(huán)掃描。當掃描到可用從站,便對其進行配置。同時隨時以掃描的方式監(jiān)控總線上的變化。實現(xiàn)方法如圖3(a)所示。主要過程分為接收數(shù)據(jù)幀、執(zhí)行當前狀態(tài)機(詳見數(shù)據(jù)通訊管理的實現(xiàn)一節(jié))、將數(shù)據(jù)幀添加至鏈表、發(fā)送數(shù)據(jù)幀鏈表中的全部數(shù)據(jù)。

2.3 操作階段

當有應用程序模塊運行時,主站進入操作階段。如圖3(c)所示,應用程序通過調(diào)用ecrt_master_activate()函數(shù),停止主站模塊中運行的“空閑線程”,啟動“操作線程”。該線程只調(diào)用了執(zhí)行當前狀態(tài)機的函數(shù),如圖3(b)所示,以便監(jiān)控總線中的變化,而將原本主站模塊執(zhí)行的收發(fā)數(shù)據(jù)幀的函數(shù)放到了應用程序中,為實現(xiàn)實時控制提供條件。

3 數(shù)據(jù)幀通訊管理的實現(xiàn)

主站實現(xiàn)通訊管理的核心是有限狀態(tài)機(FMS)理論[5]。有限狀態(tài)機又稱為有限狀態(tài)自動機或簡稱狀態(tài)機,是表示有限個狀態(tài)以及這些狀態(tài)之間的轉(zhuǎn)移和動作等行為的數(shù)學模型。這一數(shù)學模型具有輸入與輸出,輸出不僅依賴于輸入而且依賴于輸入的歷史情況。作為承擔了主要數(shù)據(jù)管理工作的主站的工作內(nèi)容,取決于用戶的輸入以及與從站的通訊狀態(tài),亦即通過分析用戶的輸入與接收到的來自從站的數(shù)據(jù)報文后再調(diào)用相應的函數(shù)。主站程序中包含的狀態(tài)機有:主站狀態(tài)機、從站掃描狀態(tài)機、從站配置狀態(tài)機、狀態(tài)切換狀態(tài)機(管理從站應用層的狀態(tài)切換)、讀寫SII(從站信息)狀態(tài)機、讀寫SDO(如COE協(xié)議中的非周期數(shù)據(jù))等。主站狀態(tài)機(如圖4所示)又是實現(xiàn)其他狀態(tài)機功能的基礎(chǔ),它的主要用途是:

1)監(jiān)控總線上設(shè)備的變化。如:當有新的從站設(shè)備接入時,便對其進行掃描和配置。

圖4 主站狀態(tài)機

2)監(jiān)控從站應用層狀態(tài)。若從站狀態(tài)與要求不符便對其進行重新配置。

3)接收用戶層的指令,進行狀態(tài)的切換。

4)處理對SII和SDO等的請求操作。

4 應用程序開發(fā)的流程

應用程序是用戶針對自身控制系統(tǒng)的控制要求編寫的控制程序模塊,運行于內(nèi)核層。包括對主站和從站的配置以及周期性實時運行的任務。在實時任務程序中實現(xiàn)主從站間通訊以及各種數(shù)控算法。

4.1 主站和從站的配置

如圖5所示,應用程序的module_init()函數(shù)中首先要對主、從站的通訊進行配置。其中的幾個關(guān)鍵技術(shù)與重要概念如下:

4.1.1 數(shù)據(jù)域指針

數(shù)據(jù)域是EtherCAT過程數(shù)據(jù)(PDO)向程序中的數(shù)據(jù)結(jié)構(gòu)的映射,它提供了用戶程序?qū)偩€上各個從站進行數(shù)據(jù)訪問的入口。當從站PDO入口注冊成功后,不同從站都將獲得一個屬于自己的地址偏移量,用戶可通過“數(shù)據(jù)域指針+地址偏移量”的方法對所需PDO進行讀寫操作。

4.1.2 從站配置信息

主站對從站的掃描識別由四個參數(shù)決定:化名(保存在EEPROM中,可由主站修改)、位置(決定于從站在總線中連接的順序)、廠商ID號和產(chǎn)品號。這些信息構(gòu)成從站配置信息。

4.1.3 從站同步管理信息這一信息可從EEPROM中的SII或者廠商提供的設(shè)備描述文件(即xml文件)獲得。以Copley公司的Accelnet伺服驅(qū)動器為例,其設(shè)備描述文件的一部分為:前4行信息表明該設(shè)備擁有4個同步管理通道。前兩個為郵箱傳輸方式,用于COE協(xié)議的通訊,負責對SDO的傳輸。后兩個為過程數(shù)據(jù)傳輸方式,負責對PDO的傳輸。其中StartAddress參數(shù)為物理起始地址,即該同步管理通道在雙口RAM上的起始地址;ControlByte參數(shù)為控制字,包含了該通道的傳輸箱傳輸方式)。通過SDO可實現(xiàn)參數(shù)的設(shè)置與讀取。為了能夠在周期任務程序中直接對某個參數(shù)進行操作,應用程序需要在配置階段創(chuàng)建一個針對該參數(shù)的SDO請求,并設(shè)置請求超時的時間。

圖5 應用程序?qū)χ鲝恼镜呐渲昧鞒?/p>

4.2 周期任務的實現(xiàn)

4.2.1 實時性的實現(xiàn)

應用程序需要一個高實時性的定時器,定時調(diào)用周期任務。在不采用RTLinux和RTAI等實時內(nèi)核的情況下,為了保證高的實時性可以采用內(nèi)核定時器[6]。其使用方法如下:

1)在應用程序模塊初始化階段初始化內(nèi)核定時器

圖6 從站同步管理信息

static struct timer_list timer;//定義一個定時器列表方式、傳輸方向等信息。之后的三個參數(shù)規(guī)定了該通道的大小。第5行起開始定義RxPdo,與CANopen協(xié)議類似,EtherCAT的PDO也通過索引號和子索引號進行識別。將x1600——x1607定義為RxPdo(接收PDO),在這8個接收PDO中安排被主站接收的參數(shù)。將x1A00——x1A07定義為TxPdo(發(fā)送PDO),在這8個發(fā)送PDO中安排向主站發(fā)送的參數(shù)。由于該款Accelnet伺服驅(qū)動器支持COE,因此其原有的CAN總線中使用的參數(shù)可保持不變。圖6表明將控制字x6040的0號子索引,長度為2個字節(jié),映射到RxPdo0中。應用程序?qū)⒁陨贤焦芾硇畔懭霐?shù)據(jù)結(jié)構(gòu)ec_sync_info_t中,作為ecrt_slave_config_pdos()的參數(shù),通過調(diào)用該函數(shù)最終完成完整的PDO配置。

4.1.4 SDO配置

SDO是COE協(xié)議的非周期數(shù)據(jù)傳輸方式(郵

init_timer(&timer);//初始化一個內(nèi)核定時器節(jié)點

timer.function = cyclic_task;//掛載周期性函數(shù)

timer.expires = jiffies + 10;//設(shè)置定時中斷的時間

add_timer(&timer);//激活內(nèi)核定時器節(jié)點

2)在周期任務函數(shù)cyclic_task中重啟定時器

timer.expires += HZ / 1000;//設(shè)置定時中斷的時間

add_timer(&timer);//激活內(nèi)核定時器節(jié)點

其中jiffies為系統(tǒng)自啟動到當前時刻為止系統(tǒng)時鐘產(chǎn)生的滴答數(shù)。timer.expires為定時中斷啟動的預期時刻,以滴答數(shù)為單位。宏定義HZ記錄了系統(tǒng)時鐘所要求的可編程定時器產(chǎn)生滴答數(shù)的頻率。其值可在內(nèi)核配置選項CONFIG_HZ選配。最大值則決定于硬件特性。假設(shè)HZ為1000則(2)中定時中斷的時間為1毫秒。由于cyclic_task函數(shù)被掛載在timer.function上,因此每到該內(nèi)核定時器節(jié)點達到預設(shè)定的中斷時間便進行中斷調(diào)用,而調(diào)用cyclic_task函數(shù)中又再次預設(shè)定了timer的中斷時間,故而形成周期為1毫秒的周期性任務。

4.2.2 周期任務中的工作

如圖3(c)所示,周期任務用于通過主站實時發(fā)送和獲取從站的信息,并對信息進行實時的處理,如邏輯控制中邏輯運算和運動控制中的各種算法。處理的信息包括過程數(shù)據(jù)對象PDO和郵箱傳輸方式的數(shù)據(jù)對象(如COE中的SDO)。其中PDO通過“數(shù)據(jù)域指針+地址偏移量”方式直接讀寫;SDO訪問方法(以讀SDO為例)如下:

圖7 實驗平臺

sdo為通過調(diào)用ecrt_slave_config_create_sdo_request()函數(shù)(如圖5所示)所返回的sdo請求對象。

5 實驗與結(jié)論

圖7為研究基于Linux的EtherCAT主站的實驗平臺。IPC(工業(yè)級計算機)主頻為1.2G,運行l(wèi)inux系統(tǒng)為Fedora 8。ARM開發(fā)板采用PAX270,運行l(wèi)inux-2.6.9內(nèi)核,交叉編譯器為arm-linuxgcc-3.4.3。EtherCAT從站設(shè)備包括Beckhoff公司出品的EK1100和Copley公司的Accelnet伺服驅(qū)動器。在此平臺的基礎(chǔ)上開發(fā)出了基于ARM的嵌入式運動控制器。由于ARM中Linux內(nèi)核版本較低,周期任務的最快速度目前為10ms。若直接采用IPC進行控制,則速度可達1ms。

[1]陳衛(wèi)福, 楊建武. 開放式數(shù)控系統(tǒng)及SERCOS接口應用技術(shù), 1版[M], 北京: 機械工業(yè)出版社, 2003.

[2]郇極, 劉艷強. 工業(yè)以太網(wǎng)現(xiàn)場總線EtherCAT驅(qū)動程序設(shè)計及應用, 1版[M]. 北京: 北京航空航天大學出版社, 2010.

[3]馬春敏, 李平, 康存鋒, 等. 基于實時Linux的SERCOS接口—LIN-SERCANS及應用[J]. 現(xiàn)代制造工程, 2005,7: 13-15.

[4]IgH EtherCAT Master 1.4.0 Preliminary Documentation,Essen, 2009.

[5]Hopcroft, J. E. / Ullman, J.D.: Introduction to Automata Theory, Languages and Computation. Adison-Wesley,Reading, Mass. 1979.

[6]河秦, 王洪濤. Linux 2.6內(nèi)核標準教程, 1版[M]. 北京:北京人民郵電出版社, 2008.

[7]周敬瓊, 周鳳星. 基于 ARM 的 Linux 網(wǎng)絡設(shè)備驅(qū)動程序開發(fā)[J]. 計算機工程與設(shè)計, 2009, 30(22): 5124-5127.

Research on the EtherCAT master under Linux

MA Chun-min, KANG Cun-feng, HUANG Xu-dong, ZHENG Xue-ke, YANG Jian-wu, FEI Ren-yuan

實時工業(yè)以太網(wǎng)已經(jīng)成為當今工業(yè)用現(xiàn)場總線的主流,本文研究了Linux下EtherCAT主站的結(jié)構(gòu),為開發(fā)基于軟主站的開放式運動控制器提供了技術(shù)儲備。進而為研制我國自己的工業(yè)實時以太網(wǎng)標準提供借鑒。

實時工業(yè)以太網(wǎng);現(xiàn)場總線;EtherCAT;軟主站

馬春敏(1974-),男,上海人,講師,在讀博士研究生,研究方向為工業(yè)自動化、開放式數(shù)控系統(tǒng)。

TP391

A

1009-0134(2011)4(下)-0078-05

10.3969/j.issn.1009-0134.2011.4(下).23

2010-08-10

猜你喜歡
狀態(tài)機網(wǎng)絡設(shè)備主站
網(wǎng)絡設(shè)備的安裝與調(diào)試課程思政整體設(shè)計
一種基于C# 的網(wǎng)絡設(shè)備自動化登錄工具的研制
基于S7-1200 PLC的DP總線通信技術(shù)在馬里古伊那水電站泄洪沖沙孔門機上的應用
基于有限狀態(tài)機的交會對接飛行任務規(guī)劃方法
基于Spring StateMachine的有限狀態(tài)機應用研究
EtherCAT主站與主站通信協(xié)議的研究與實現(xiàn)*
多表遠程集抄主站系統(tǒng)
縣級配電自動化主站系統(tǒng)的設(shè)計
地鐵通信網(wǎng)絡設(shè)備的維護
基于反熔絲FPGA的有限狀態(tài)機加固設(shè)計
望江县| 富裕县| 珠海市| 佛山市| 长岭县| 潼南县| 沿河| 安达市| 镇雄县| 武强县| 淮北市| 湘潭市| 南江县| 万源市| 六盘水市| 沙雅县| 民勤县| 乌兰县| 毕节市| 临洮县| 屏东市| 达日县| 石渠县| 瑞安市| 札达县| 监利县| 高阳县| 延安市| 来凤县| 织金县| 彩票| 丰城市| 通渭县| 达拉特旗| 荆州市| 简阳市| 任丘市| 巴马| 绥阳县| 三台县| 阜南县|