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

?

用于工業(yè)機(jī)器人控制的實時以太網(wǎng)的設(shè)計?

2020-12-23 11:50:40莫云杰林永才
計算機(jī)與數(shù)字工程 2020年11期
關(guān)鍵詞:主站以太網(wǎng)報文

莫云杰 林 明 林永才

(1.江蘇科技大學(xué)電子信息學(xué)院 鎮(zhèn)江 212000)(2.蘇州時運(yùn)機(jī)器人有限公司 蘇州 215600)

1 引言

隨著工業(yè)自動化的控制系統(tǒng)的發(fā)展,工業(yè)制造的設(shè)備不斷地朝著智能化,模塊化的方向發(fā)展。這種發(fā)展趨勢可以使整個控制系統(tǒng)有著成本降低,便于維護(hù),布線簡單的特點(diǎn)。目前,傳統(tǒng)的控制總線有CAN,SERCOS,RS232/485 等。這些現(xiàn)場總線協(xié)議并不統(tǒng)一,很難相互聯(lián)系,互相通行需要協(xié)議的轉(zhuǎn)換。作為控制總線的話,難以讓產(chǎn)品實現(xiàn)模塊化的發(fā)展。而且傳統(tǒng)控制總線控制周期長,而且傳輸速率只有10Mbit/s 左右,很難用于對實時性要求高的高端數(shù)控。從而無形中增加了控制的成本。

而用以太網(wǎng)作為控制總線,很容易解決上述問題。如今以太網(wǎng)傳輸速率有10/100/1000Mbps,用以太網(wǎng)可以滿足數(shù)控需要高度實時性的要求,而且以太網(wǎng)結(jié)構(gòu)簡單,價格便宜,通用性強(qiáng)。符合模塊化設(shè)計要求。通過TCP/IP 協(xié)議可以將設(shè)備的實時情報通過因特網(wǎng)進(jìn)行遠(yuǎn)程監(jiān)控[1]。如文獻(xiàn)[1]就采用工業(yè)以太網(wǎng)來監(jiān)控數(shù)控機(jī)床的工作狀態(tài)。因此選擇以太網(wǎng)作為控制總線是非常合適的。

由于以太網(wǎng)采用CSMA/CD 通訊機(jī)制使得以太網(wǎng)通訊周期具有不確定性,所以無法滿足實時性的要求所以要對以太網(wǎng)進(jìn)行改造。一般有三種實施以太網(wǎng)改造方案,改造的方法可以參考文獻(xiàn)[2]。這里對以太網(wǎng)的MAC 層進(jìn)行改造。在實時數(shù)據(jù)通道內(nèi)經(jīng)過修改的實時MAC 層接管通信過程,不再考慮以太網(wǎng)的CSMA/CD 通訊協(xié)議,所以可以從根本上解決以太網(wǎng)在高實時性要求下數(shù)據(jù)延遲以及數(shù)據(jù)傳輸?shù)牟淮_定性。徹底避免了網(wǎng)絡(luò)報文沖突與發(fā)送等待,簡化了通信數(shù)據(jù)處理過程?;谠摲椒▽崿F(xiàn)的的典型實時以太網(wǎng)有德國倍福的Ether-CAT、SERCOS III等[3]。

2 系統(tǒng)結(jié)構(gòu)及原理

工業(yè)機(jī)器人機(jī)械臂由6個控制軸組成[4~5],每個控制軸由一臺伺服電機(jī)組成??刂齐姍C(jī)的轉(zhuǎn)動即可以使機(jī)械臂的運(yùn)動,不同的控制數(shù)據(jù)可以讓機(jī)械臂完成特定動作。

整個系統(tǒng)采用精簡的三層協(xié)議結(jié)構(gòu):物理層,數(shù)據(jù)鏈路層和應(yīng)用層[6~8]。其中數(shù)據(jù)鏈路層中的一些協(xié)議是在FPGA 中實現(xiàn),通過網(wǎng)口由主站傳輸至各個從站,應(yīng)用層是通過對數(shù)據(jù)鏈路層的配置和一些數(shù)據(jù)的讀寫。系統(tǒng)環(huán)形拓?fù)浣Y(jié)構(gòu)的設(shè)計,如圖1所示,系統(tǒng)分為主站和從站設(shè)計,主站一般由工業(yè)計算機(jī)或者嵌入式系統(tǒng)計算出機(jī)器人的軌跡規(guī)劃,插補(bǔ),等一系列運(yùn)動控制算法,主要由主站CPU 負(fù)責(zé)計算,然后將數(shù)據(jù)通過實時以太網(wǎng)發(fā)送至各個從站,前從站接受數(shù)據(jù)將數(shù)據(jù)發(fā)送至下一個從站,直到一個循環(huán)。各個從站接根據(jù)指令通過分析后在對相應(yīng)的電機(jī)進(jìn)行控制,協(xié)同完成整個機(jī)械臂的運(yùn)動。

圖1 控制系統(tǒng)架構(gòu)模型

3 實時以太網(wǎng)傳輸協(xié)議

3.1 實時以太網(wǎng)傳輸幀設(shè)計

由于控制系統(tǒng)采用環(huán)形的拓?fù)浣Y(jié)構(gòu),數(shù)據(jù)報文采用集總幀的結(jié)構(gòu),集總幀即將所有的總站信息包含在一個數(shù)據(jù)幀里面,主站周期性的發(fā)送集總幀。集總幀沿著環(huán)形鏈路傳輸,每經(jīng)過一個從站,從站將該幀接收下來,提取到該從站控制數(shù)據(jù)之后,再將上一周期處理的反饋數(shù)據(jù)進(jìn)行數(shù)據(jù)交換,之后發(fā)送給下一個從站,集總幀遍歷所有的從站時候返回主站完成一次周期性的的實時通信。該集總幀如圖2 所示,可以看到該幀頭相對于傳統(tǒng)的以太網(wǎng)幀大大簡化,并利用了數(shù)據(jù)帶寬。

前導(dǎo)字符表示一段集總幀的開始;定界符:介于前導(dǎo)碼與幀有效信息之間;通訊狀態(tài)碼占用一個字節(jié),指示該幀的功能,表示該幀式初始化幀還是正常通信時的幀,在初始化過程中有表示初始化不同的狀態(tài)。數(shù)據(jù)部分則是各個從站控制數(shù)據(jù)的的集合,每個從站數(shù)據(jù)有16位數(shù)據(jù),以塊(block)來封裝,最多可以支持32個從站。其中第一個字節(jié)C/R表示該段數(shù)據(jù)是主站控制信息還是從站響應(yīng)信息,updatecounter 是更新計數(shù)器,用來區(qū)分相鄰的報文。MAC ID 表示從站的物理地址,可以表示0-31從站。命令代碼表示從站需要執(zhí)行的命令,有00h空指令、20h 位置指令、21h 控制芯片復(fù)位指令,控制字節(jié)和控制數(shù)據(jù)用于周期性和非周期性的控制。間隔符表示有效數(shù)據(jù)的結(jié)束,同步參數(shù)紀(jì)錄時鐘同步的時間戳,F(xiàn)CS表示該集總幀的校驗序列。

圖2 傳輸幀設(shè)計

3.2 時鐘同步

在主從設(shè)計的控制系統(tǒng)中,基于多軸協(xié)同的運(yùn)動要求,運(yùn)動控制不但要求要有很高的可靠性和實時性,而且主從站之間還要有嚴(yán)格的同步性,以實現(xiàn)各個控制軸的協(xié)同運(yùn)動,是實現(xiàn)復(fù)雜的高精度控制的關(guān)鍵。本設(shè)計采用速率100Mbps 的實時以太網(wǎng),其中的幀的時延主要有兩個主要因素:

1)網(wǎng)絡(luò)延時TC,集總幀報文在以太網(wǎng)傳輸線纜中的傳輸時間,與線纜的長度成正比,而且與傳輸?shù)慕橘|(zhì)有關(guān),如果從站之間采用的是10m的雙絞線的話則線路延時為50ns。

2)從站處理延時Ts,這里包括從站接收到數(shù)據(jù)之后要將數(shù)據(jù)提取、處理、插入信息、發(fā)送的時間,這里時間一般為幾微秒。由于從站采用環(huán)形的拓?fù)浣Y(jié)構(gòu),從站數(shù)量n 越多延時越大,所以本設(shè)計最多可以有32個從站,以減少從站延時。

所以整個延時則有

為了解決延遲,這里需要對每個站進(jìn)行時鐘同步,使得所有的站時鐘保持一致,這樣就可以讓所有從站在同一時刻執(zhí)行指令,這里同步機(jī)制借鑒了IEEE1588 精確時鐘同步協(xié)議,其目的就是將分布式網(wǎng)絡(luò)內(nèi)的各個從站時鐘與參考時鐘進(jìn)行同步,只需要四幀數(shù)據(jù)就可以測量兩個時鐘的時鐘誤差和網(wǎng)絡(luò)延時[9~11]。

圖3 時鐘同步基本原理

如圖3 所示,主站先發(fā)送Sync 報文給從站,然后隨即發(fā)送FollowUp 報文,從站接收到Sync 報文的同時記錄到達(dá)時間Ts1,F(xiàn)ollowUp報文中包含主站發(fā)送Sync 報文的實際時間Tm1,從站接收到Follow-Up 報文之后記錄下Tm1,并在Ts2時刻發(fā)送DelayReq報文給主站,主站接收到DelayReq 報文之后記錄下接受時間Tm2,然后通過DelayResp 報文將該時間發(fā)送給從站。這里我們默認(rèn)雙向傳輸是對等的,即雙向傳輸?shù)难訒r一致。這里我們設(shè)主從站的時鐘偏差時間是φ,線路延時時間是σ,可以得到

這樣就可以得到主從時鐘的時鐘偏差和傳輸延遲。

4 設(shè)計與實現(xiàn)

4.1 FPGA MAC核的設(shè)計

主從站的MAC 芯片采用FPGA 設(shè)計,F(xiàn)PGA 設(shè)計具有靈活性高,資源豐富,成本低廉的特點(diǎn),而MAC 芯片需要具有數(shù)據(jù)收發(fā)功能,同時還要具有數(shù)據(jù)存儲功能,數(shù)據(jù)解析即傳送,所以對于這種復(fù)雜電路設(shè)計采用FPGA 模塊化的設(shè)計,將各個功能封裝成模塊,具有結(jié)構(gòu)清晰,功能明確,易于開發(fā),可維護(hù)性好等特點(diǎn)[11~15]。如圖4 所示整個MAC 芯片設(shè)計可以分為以下幾個模塊。

發(fā)送模塊(TX module)、接收模塊(RX module)、寄存器管理模塊(Register control module),內(nèi)存管理模塊(RAM management module),總線模塊(BUS interface module)。

發(fā)送模塊(TX module)和接收模塊(RX module)用于數(shù)據(jù)的發(fā)送和接受,采用MII 接口與PHY芯片連接,具有CRC校驗功能。

內(nèi)存管理模塊(RAM management module)數(shù)據(jù)收和發(fā)的數(shù)據(jù)保存在兩片RAM 中,通過寄存器來控制兩片RAM 的交替使用,完成數(shù)據(jù)的無縫緩沖與處理,提高數(shù)據(jù)收發(fā)的效率。

時序控制模塊(Timing control module)主要提供各個模塊的時鐘信號,還要提供從站同步信號(XSYNC),產(chǎn)生接受中斷信號(XINTRX)以及發(fā)送時序信號(XTXTIM)。

接收中斷信號則是數(shù)據(jù)接受完成后產(chǎn)生1.28us 的低電平用于被CPU 檢測從而做出相應(yīng)的中斷;發(fā)送時序信號用于主站在周期性控制時接受CPU 產(chǎn)生0.5ms 的周期發(fā)送信號,檢測到下降沿則開始發(fā)送數(shù)據(jù)給PHY 芯片;從站同步信號用于各個從站同步,當(dāng)同步的時候,產(chǎn)生下降沿信號并保持低電平1.28us 被從站CPU 捕獲從而做出相應(yīng)的控制功能。

總線接口模塊(BUS interface module)用于數(shù)據(jù)與CPU的傳遞。

寄存器控制模塊(Register control module)則是用過實現(xiàn)寄存器的訪問管理芯片各個功能,通過MDIO實現(xiàn)與PHY芯片片內(nèi)寄存器讀寫。

圖4 MAC芯片設(shè)計結(jié)構(gòu)

4.2 控制程序設(shè)計

程序部分為主站和從站程序設(shè)計,主站程序狀態(tài)圖5所示。

圖5 主站控制狀態(tài)圖

主站主要由芯片復(fù)位,芯片初始化,網(wǎng)絡(luò)配置,發(fā)送準(zhǔn)備,和循環(huán)發(fā)送這幾個狀態(tài),轉(zhuǎn)化關(guān)系如上圖。CPU 通過讀取芯片內(nèi)部的狀態(tài)寄存器來判斷當(dāng)前的狀態(tài),在不同的狀態(tài)下,CPU 分別對MAC 芯片采取不同的操作。主站主要是給從站發(fā)送配置幀以及在運(yùn)行狀態(tài)下循環(huán)發(fā)送控制數(shù)據(jù)集總幀。在網(wǎng)絡(luò)配置的狀態(tài)下,主站主要發(fā)送兩個配置幀,配置幀A 和配置幀B。用來建立總站信息。進(jìn)入循環(huán)發(fā)送狀態(tài),主站CPU 定時器會以0.5ms 定時中斷周期循環(huán)的發(fā)送數(shù)據(jù)幀,同時要以外部中斷方式接收處理從站傳回來的反饋信息。

整個狀態(tài)的轉(zhuǎn)換是在ctrl_eth_m()函數(shù)中定義phase實現(xiàn)狀態(tài)轉(zhuǎn)換:

發(fā)送和接收控制數(shù)據(jù)緩定義的結(jié)構(gòu)體為

Typedef struct{

usigned short data[WORD_SIZE_OF_BLOCK]

}Com_buf;

WORD_SIZE_OF_BLOCK 值為8

在循環(huán)發(fā)送狀態(tài)下發(fā)送tx_buf,tx_buf 的定義如下:

Com_buf tx_buf[MAX_NS];MAX_NS為32。

從站的控制狀態(tài)如圖6。

圖6 從站控制狀態(tài)圖

從站接受主站配置,其區(qū)別是主站主要是用于接收幀信號,接收到主站發(fā)送配置幀A,B后立馬進(jìn)入正常運(yùn)行狀態(tài),開始循環(huán)的接收集總幀。接受完幀信號,XSYNC 向從站CPU 觸發(fā)處理中斷,運(yùn)行中斷程序int_sync_eth_s(),中斷程序的流程圖如圖7所示。

圖7 int_sync_eth_s()程序流程圖

進(jìn)入中斷程序之后,如果是第一次收到幀信號,為了提高效率,從站設(shè)置該從站的讀出指針,用來下次接收到信號之后直接從集總幀中讀取改從站的信息,執(zhí)行g(shù)et_cmd()。最后再通過set_rsp()函數(shù)將反饋數(shù)據(jù)添加到發(fā)送寄存器中,隨著幀一起發(fā)出給下一個從站。

5 實驗驗證

首先用Modelsim 軟件對MAC IP 核進(jìn)行仿真。如圖8 所示,當(dāng)MII 發(fā)送數(shù)據(jù)使能端(MTxEn)端口有效時,發(fā)送數(shù)據(jù)端口(MTxD)以4bit 數(shù)據(jù)開始發(fā)送至PHY芯片,送至各個從站。

從站PHY 接收到數(shù)據(jù)后,將數(shù)據(jù)按4bit(MRxD)發(fā)送至MAC 芯片,如圖9 所示,開始接收數(shù)據(jù),當(dāng)(MRxDV)有效時,開始發(fā)送數(shù)據(jù)。數(shù)據(jù)經(jīng)過處理之后將數(shù)據(jù)發(fā)送至下一個從站。主站和從站的功能不同,所以MAC 芯片在設(shè)計也要有所區(qū)分。這里的仿真只是仿真收發(fā)過程,實際應(yīng)用會有一些收發(fā)過程上的區(qū)別。

圖8 數(shù)據(jù)發(fā)送仿真

圖9 數(shù)據(jù)接收仿真

通過實驗對提出的實時以太網(wǎng)進(jìn)行驗證,系統(tǒng)主站CPU 采用TI AM3358,F(xiàn)PGA 芯片 采用Xilinx Spartan3A XC3S200A。 從 站 采 用 NXP LPC4357JET256 作為控制芯片,和主站采用相同的FPGA 芯片。主站和從站均有兩個百兆以太網(wǎng)接口。圖10 為從站控制器實物圖。PHY 芯片均采用Micrel KSZ8041MLLI。

圖10 從站控制器

通過網(wǎng)線將1個主站和2個從站連接。發(fā)送數(shù)據(jù)大小為55Byte,440bit,主站每隔0.5s 發(fā)送一次幀信號,數(shù)據(jù)經(jīng)過一個環(huán)路傳回主站,通過對從站持續(xù)的觀測,運(yùn)行狀態(tài)良好,圖11 是通過測量從站同步信號來測量出來的同步信號抖動時間,通過十次的觀察,發(fā)現(xiàn)同步抖動時間平均為94.2ns,滿足工業(yè)機(jī)器人高精度的同步要求。

圖11 同步信號抖動時間

6 結(jié)語

本從工業(yè)機(jī)器人控制角度出發(fā),設(shè)計了一種用于簡單高效的實時以太網(wǎng)控制總線,設(shè)計了相關(guān)的以太網(wǎng)幀協(xié)議,用FPGA設(shè)計了相關(guān)的MAC層芯片以及CPU相應(yīng)的控制過程,在實驗室內(nèi)將控制周期控制在1ms以下達(dá)到了0.5ms。并且具有很小的同步誤差,滿足工業(yè)機(jī)器人控制要求。在投入實際產(chǎn)品應(yīng)用中還是需要進(jìn)一步的設(shè)計與驗證。

猜你喜歡
主站以太網(wǎng)報文
基于J1939 協(xié)議多包報文的時序研究及應(yīng)用
汽車電器(2022年9期)2022-11-07 02:16:24
基于1500以太網(wǎng)養(yǎng)豬場的智能飼喂控制系統(tǒng)的設(shè)計與實現(xiàn)
CTCS-2級報文數(shù)據(jù)管理需求分析和實現(xiàn)
淺析反駁類報文要點(diǎn)
中國外匯(2019年11期)2019-08-27 02:06:30
基于OS2主站系統(tǒng)的海量數(shù)據(jù)共享技術(shù)研究
多表遠(yuǎn)程集抄主站系統(tǒng)
電子制作(2017年23期)2017-02-02 07:17:07
談實時以太網(wǎng)EtherCAT技術(shù)在變電站自動化中的應(yīng)用
電子制作(2017年24期)2017-02-02 07:14:44
ATS與列車通信報文分析
一種90W高功率以太網(wǎng)供電系統(tǒng)的設(shè)計
淺談EPON與工業(yè)以太網(wǎng)在貴遵高速公路中的應(yīng)用
苍南县| 平南县| 建德市| 阜宁县| 库尔勒市| 山丹县| 洞口县| 哈尔滨市| 务川| 邳州市| 清远市| 贡山| 霍山县| 许昌市| 灵宝市| 忻城县| 贺州市| 德江县| 宣化县| 手游| 延庆县| 阿克苏市| 葵青区| 屏东县| 曲麻莱县| 镇安县| 旺苍县| 奉贤区| 万荣县| 日喀则市| 许昌县| 九龙城区| 铅山县| 两当县| 漳州市| 常熟市| 修武县| 徐闻县| 隆林| 辛集市| 扎兰屯市|