本發(fā)明涉及通信協(xié)議領(lǐng)域,尤其涉及一種基于EtherCAT總線的通信協(xié)議方法及系統(tǒng)。
背景技術(shù):
現(xiàn)有的以太網(wǎng)通信協(xié)議中,從站的傳輸方式一般采用存儲(chǔ)轉(zhuǎn)發(fā)的模式,當(dāng)主站發(fā)送報(bào)文、數(shù)據(jù)包時(shí),在每個(gè)從站(連接點(diǎn))接收以太網(wǎng)數(shù)據(jù)包,然后進(jìn)行解碼并復(fù)制為過程數(shù)據(jù),并進(jìn)行轉(zhuǎn)發(fā)至下一個(gè)從站,使得報(bào)文在傳輸?shù)倪^程中是逐個(gè)往下傳輸。然而,此種傳輸方式在報(bào)文數(shù)據(jù)包數(shù)據(jù)量龐大的時(shí)候,從站所需的解碼復(fù)制時(shí)間較長(zhǎng),會(huì)導(dǎo)致數(shù)據(jù)包傳輸?shù)臅r(shí)間過長(zhǎng),造成較大的延遲。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種基于EtherCAT總線的通信協(xié)議方法及系統(tǒng),解決了現(xiàn)有的以太網(wǎng)通信協(xié)議中,從站的傳輸方式一般采用存儲(chǔ)轉(zhuǎn)發(fā)的模式,在報(bào)文數(shù)據(jù)包數(shù)據(jù)量龐大的時(shí)候,從站所需的解碼復(fù)制時(shí)間較長(zhǎng),會(huì)導(dǎo)致數(shù)據(jù)包傳輸?shù)臅r(shí)間過長(zhǎng),造成較大的延遲的技術(shù)問題。
本發(fā)明實(shí)施例提供的一種基于EtherCAT總線的通信協(xié)議方法,包括:
主站和從站;
方法步驟包括:從站獲取到由主站發(fā)送的數(shù)據(jù)幀,并對(duì)數(shù)據(jù)幀的MAC地址及數(shù)據(jù)幀的數(shù)據(jù)類型進(jìn)行判斷,若數(shù)據(jù)幀的MAC地址為從站的MAC地址且數(shù)據(jù)幀為EtherCAT數(shù)據(jù)類型時(shí),接收數(shù)據(jù)幀并分析數(shù)據(jù)幀,否則不接收數(shù)據(jù)幀。
可選地,從站獲取到由主站發(fā)送的數(shù)據(jù)幀之前還包括:
主站將獲取到的要發(fā)送的數(shù)據(jù)幀儲(chǔ)存于RAM中,并在獲取到數(shù)據(jù)幀發(fā)送指令時(shí)將儲(chǔ)存于RAM中的數(shù)據(jù)幀讀出并發(fā)送至從站。
可選地,數(shù)據(jù)幀包括以太網(wǎng)幀頭、EtherCAT數(shù)據(jù)和FCS。
可選地,從站獲取到由主站發(fā)送的數(shù)據(jù)幀,并對(duì)數(shù)據(jù)幀的MAC地址及數(shù)據(jù)幀的數(shù)據(jù)類型進(jìn)行判斷,若數(shù)據(jù)幀的MAC地址為從站的MAC地址且數(shù)據(jù)幀為EtherCAT數(shù)據(jù)類型時(shí),接收數(shù)據(jù)幀并分析數(shù)據(jù)幀之后還包括:
若分析得數(shù)據(jù)幀的地址命令段為從站自增寫操作命令時(shí),從站將數(shù)據(jù)幀保存到內(nèi)存空間中。
可選地,從站獲取到由主站發(fā)送的數(shù)據(jù)幀,并對(duì)數(shù)據(jù)幀的MAC地址及數(shù)據(jù)幀的數(shù)據(jù)類型進(jìn)行判斷,若數(shù)據(jù)幀的MAC地址為從站的MAC地址且數(shù)據(jù)幀為EtherCAT數(shù)據(jù)類型時(shí),接收數(shù)據(jù)幀并分析數(shù)據(jù)幀之后還包括:
若分析得數(shù)據(jù)幀的地址命令段為寫入操作命令時(shí),從站將內(nèi)存空間中的數(shù)據(jù)寫入到數(shù)據(jù)幀。
可選地,從站采用寄存器保存數(shù)據(jù)幀。
本發(fā)明實(shí)施例提供的一種基于EtherCAT總線的通信協(xié)議系統(tǒng),包括:
主站和從站;
從站包括獲取判斷模塊,用于獲取到由主站發(fā)送的數(shù)據(jù)幀,并對(duì)數(shù)據(jù)幀的MAC地址及數(shù)據(jù)幀的數(shù)據(jù)類型進(jìn)行判斷,若數(shù)據(jù)幀的MAC地址為從站的MAC地址且數(shù)據(jù)幀為EtherCAT數(shù)據(jù)類型時(shí),接收數(shù)據(jù)幀并分析數(shù)據(jù)幀,否則不接收數(shù)據(jù)幀。
可選地,主站包括:
儲(chǔ)存模塊,用于將獲取到的要發(fā)送的數(shù)據(jù)幀儲(chǔ)存于RAM中,并在獲取到數(shù)據(jù)幀發(fā)送指令時(shí)將儲(chǔ)存于RAM中的數(shù)據(jù)幀讀出并發(fā)送至從站。
可選地,從站包括:
第一分析模塊,用于若分析得數(shù)據(jù)幀的地址命令段為從站自增寫操作命令時(shí),從站將數(shù)據(jù)幀保存到內(nèi)存空間中。
可選地,從站還包括:
第二分析模塊,用于若分析得數(shù)據(jù)幀的地址命令段為寫入操作命令時(shí),從站將內(nèi)存空間中的數(shù)據(jù)寫入到數(shù)據(jù)幀。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
本發(fā)明實(shí)施例提供了一種基于EtherCAT總線的通信協(xié)議方法及系統(tǒng),包括:從站獲取到由主站發(fā)送的數(shù)據(jù)幀,并對(duì)數(shù)據(jù)幀的MAC地址及數(shù)據(jù)幀的數(shù)據(jù)類型進(jìn)行判斷,若數(shù)據(jù)幀的MAC地址為從站的MAC地址且數(shù)據(jù)幀為EtherCAT數(shù)據(jù)類型時(shí),接收數(shù)據(jù)幀并分析數(shù)據(jù)幀,否則不接收數(shù)據(jù)幀,本發(fā)明實(shí)施例中通過從站在數(shù)據(jù)幀的傳輸過程中對(duì)數(shù)據(jù)幀的MAC地址及數(shù)據(jù)幀的數(shù)據(jù)類型進(jìn)行判斷,在數(shù)據(jù)幀的MAC地址為從站的MAC地址且數(shù)據(jù)幀為EtherCAT數(shù)據(jù)類型時(shí)才接收該數(shù)據(jù)幀并進(jìn)行分析,否則直接將數(shù)據(jù)幀傳輸至下一個(gè)從站,大大降低了數(shù)據(jù)幀的傳輸延遲,解決了現(xiàn)有的以太網(wǎng)通信協(xié)議中,從站的傳輸方式一般采用存儲(chǔ)轉(zhuǎn)發(fā)的模式,報(bào)文數(shù)據(jù)包數(shù)據(jù)量龐大的時(shí)候,從站所需的解碼復(fù)制時(shí)間較長(zhǎng),會(huì)導(dǎo)致數(shù)據(jù)包傳輸?shù)臅r(shí)間過長(zhǎng),造成較大的延遲的技術(shù)問題。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1為本發(fā)明實(shí)施例提供的一種基于EtherCAT總線的通信協(xié)議方法的流程示意圖;
圖2(a)為本發(fā)明實(shí)施例提供的一幀數(shù)據(jù)的示意圖;
圖2(b)為本發(fā)明實(shí)施例提供的一幀數(shù)據(jù)的另一個(gè)示意圖;
圖2(c)為本發(fā)明實(shí)施例提供的一幀數(shù)據(jù)的另一個(gè)示意圖;
圖2(d)為本發(fā)明實(shí)施例提供的一幀數(shù)據(jù)的另一個(gè)示意圖;
圖2(e)為本發(fā)明實(shí)施例提供的一幀數(shù)據(jù)的另一個(gè)示意圖;
圖3為本發(fā)明實(shí)施例提供的一種偽雙口RAM的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實(shí)施例提供的從站的數(shù)據(jù)幀判斷流程示意圖;
圖5為本發(fā)明實(shí)施例提供的一種基于EtherCAT總線的通信協(xié)議系統(tǒng)。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種基于EtherCAT總線的通信協(xié)議方法及系統(tǒng),用于解決現(xiàn)有的以太網(wǎng)通信協(xié)議中,從站的傳輸方式一般采用存儲(chǔ)轉(zhuǎn)發(fā)的模式,報(bào)文數(shù)據(jù)包數(shù)據(jù)量龐大的時(shí)候,從站所需的解碼復(fù)制時(shí)間較長(zhǎng),會(huì)導(dǎo)致數(shù)據(jù)包傳輸?shù)臅r(shí)間過長(zhǎng),造成較大的延遲的技術(shù)問題。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖1,本發(fā)明實(shí)施例提供的一種基于EtherCAT總線的通信協(xié)議方法包括:
101、主站將獲取到的要發(fā)送的數(shù)據(jù)幀儲(chǔ)存于RAM中,并在獲取到數(shù)據(jù)幀發(fā)送指令時(shí)將儲(chǔ)存于RAM中的數(shù)據(jù)幀讀出并發(fā)送至從站。
首先,由主站將需要發(fā)送的一個(gè)完整的數(shù)據(jù)幀儲(chǔ)存到RAM中,并在獲取到數(shù)據(jù)幀發(fā)送指令時(shí)將儲(chǔ)存于RAM中的數(shù)據(jù)幀讀出并發(fā)送至從站。其中,一個(gè)完整的數(shù)據(jù)幀包括有以太網(wǎng)幀頭、EtherCAT數(shù)據(jù)和FCS。請(qǐng)參閱圖2(a)至圖2(e),為根據(jù)協(xié)議幀的格式所定義的一幀完整的數(shù)據(jù):包括在RAM中所保存的地址和所代表的意思,包括了前導(dǎo)序,數(shù)據(jù)和幀尾,一共是71個(gè)數(shù)據(jù)。請(qǐng)參閱圖3,主站采用偽雙口RAM來進(jìn)布于存儲(chǔ)數(shù)據(jù),數(shù)據(jù)先從Data端寫入,寫入到相應(yīng)的地址中,當(dāng)要發(fā)送數(shù)據(jù)時(shí)根據(jù)讀時(shí)鐘和讀地址將數(shù)據(jù)從RAM中讀出,從端口Q輸出。
102、從站獲取到由主站發(fā)送的數(shù)據(jù)幀,并對(duì)數(shù)據(jù)幀的MAC地址及數(shù)據(jù)幀的數(shù)據(jù)類型進(jìn)行判斷,若數(shù)據(jù)幀的MAC地址為從站的MAC地址且數(shù)據(jù)幀為EtherCAT數(shù)據(jù)類型時(shí),接收數(shù)據(jù)幀并分析數(shù)據(jù)幀,否則不接收數(shù)據(jù)幀。
在從站獲取到由主站發(fā)送的數(shù)據(jù)幀之后,從站先判斷這個(gè)數(shù)據(jù)幀的目的地址,如果是從站自身的MAC地址,就接收并繼續(xù)判斷數(shù)據(jù)的類型是不是EtherCAT的類型,若是就接收該數(shù)據(jù)幀并對(duì)該數(shù)據(jù)幀進(jìn)行分析,在判斷過程中,如果接收數(shù)據(jù)的MAC地址不是從站自身MAC地址的,或者數(shù)據(jù)類型不是EtherCAT的類型時(shí),就結(jié)束判斷并且不接收數(shù)據(jù)。請(qǐng)參閱圖4,為從站的數(shù)據(jù)幀判斷流程示意圖。從站在進(jìn)行接收的整個(gè)過程中采用狀態(tài)機(jī)的形式來實(shí)現(xiàn)。
103、若分析得數(shù)據(jù)幀的地址命令段為從站自增寫操作命令時(shí),從站將數(shù)據(jù)幀保存到內(nèi)存空間中。
在從站分析得數(shù)據(jù)幀的地址命令段為從站自增寫操作命令時(shí),如當(dāng)?shù)刂?0處的命令段為02的時(shí)候,即將主站發(fā)來的數(shù)據(jù)幀的內(nèi)容保存到從站的內(nèi)存空間中。
104、若分析得數(shù)據(jù)幀的地址命令段為寫入操作命令時(shí),從站將內(nèi)存空間中的數(shù)據(jù)寫入到數(shù)據(jù)幀。
在從站分析得數(shù)據(jù)幀的地址命令段為寫入操作命令時(shí),如當(dāng)?shù)刂?0處的命令段為01的時(shí)候,從站將內(nèi)存空間中的數(shù)據(jù)寫入到數(shù)據(jù)幀的某個(gè)地址中去。
以上為對(duì)本發(fā)明實(shí)施例提供的一種基于EtherCAT總線的通信協(xié)議方法的詳細(xì)描述,為便于理解,以下將對(duì)主站發(fā)送數(shù)據(jù)包至從站的過程進(jìn)行仿真演示。
仿真采用Modlelsim仿真軟件,時(shí)鐘選用100M的時(shí)鐘,數(shù)據(jù)的采樣時(shí)鐘也是100M。數(shù)據(jù)包括前導(dǎo)序六個(gè)字節(jié)的0x“BC”,MAC地址中的目的地址和源地址,和第一個(gè)EtherCAT數(shù)據(jù)報(bào)文,包括有EtherCAT報(bào)文的幀頭和從站所要接收的8個(gè)字節(jié)的數(shù)據(jù):0x“0203040506070809”。第二個(gè)從站的數(shù)據(jù)沒有MAC地址的信息,一個(gè)EtherCAT系統(tǒng)中只有第一個(gè)被尋址的從站可以用MAC地址來尋址,其他的從站對(duì)于MAC數(shù)據(jù)都沒有識(shí)別能力的,如果隨便的一個(gè)從站被放到不是EtherCAT系統(tǒng)中使用的話將會(huì)引起廣播風(fēng)暴,因?yàn)樗鼤?huì)接收所有的包。從第二個(gè)數(shù)據(jù)報(bào)文開始將依靠從站內(nèi)部的尋址方式來實(shí)現(xiàn)尋址,本仿真只是對(duì)于第一個(gè)從站接收數(shù)據(jù)的過程仿真。
在以上所定義的數(shù)據(jù)的幀結(jié)構(gòu)中,定義了從站將要接收的數(shù)據(jù)的個(gè)數(shù)是8個(gè)字節(jié)的數(shù)據(jù)0x“0203040506070809”。從站要接收的數(shù)據(jù),最后將會(huì)被保存到從站的寄存器中,寄存器采用移位寄存器的形式來保存數(shù)據(jù)。在沒有接收數(shù)據(jù)的時(shí)候,移位寄存器中一直都是“0”的,一共是8個(gè)字節(jié)的“0”。當(dāng)有數(shù)據(jù)要保存到寄存器中的時(shí)候,首先是數(shù)據(jù)0x“02”被保存到寄存器的最低位,然后是0x“03”被保存到最低位,同時(shí)0x“02”向高位移動(dòng)了一個(gè)字節(jié),依次類推,直到數(shù)據(jù)0x“09”被保存到寄存器為止。最后在寄存器data_slave_reg中保存的數(shù)據(jù)就是0x“0203040506070809”。至此數(shù)據(jù)保存到從站的過程就結(jié)束了。還可以看到進(jìn)入到從站中的數(shù)據(jù)和被從站寄存器保存的數(shù)據(jù)之間只有1.5個(gè)周期的延遲,即15ns的延遲。整個(gè)數(shù)據(jù)接收的過程用時(shí)為8個(gè)周期即80ns。
狀態(tài)機(jī)在數(shù)據(jù)和計(jì)數(shù)器到達(dá)指定的條件的時(shí)候就進(jìn)行跳變,在寫狀態(tài)的時(shí)候,從站的數(shù)據(jù)寄存器中的數(shù)據(jù)是有變化的,數(shù)據(jù)幀中的數(shù)據(jù)被寫入到從站寄存器,其他狀態(tài)的時(shí)候寄存器都是處于“0”狀態(tài)的,當(dāng)數(shù)據(jù)存放完之后就會(huì)自動(dòng)的跳轉(zhuǎn)到空閑狀態(tài)。
以上為對(duì)主站發(fā)送數(shù)據(jù)包至從站的過程進(jìn)行仿真的過程所進(jìn)行的詳細(xì)描述,以下將對(duì)本發(fā)明實(shí)施例中提供的一種基于EtherCAT總線的通信協(xié)議系統(tǒng)進(jìn)行詳細(xì)的描述。
請(qǐng)參閱圖5,本發(fā)明實(shí)施例提供的一種基于EtherCAT總線的通信協(xié)議系統(tǒng),包括:
主站和從站;
從站包括獲取判斷模塊,用于獲取到由主站發(fā)送的數(shù)據(jù)幀,并對(duì)數(shù)據(jù)幀的MAC地址及數(shù)據(jù)幀的數(shù)據(jù)類型進(jìn)行判斷,若數(shù)據(jù)幀的MAC地址為從站的MAC地址且數(shù)據(jù)幀為EtherCAT數(shù)據(jù)類型時(shí),接收數(shù)據(jù)幀并分析數(shù)據(jù)幀,否則不接收數(shù)據(jù)幀。
主站包括:
儲(chǔ)存模塊,用于將獲取到的要發(fā)送的數(shù)據(jù)幀儲(chǔ)存于RAM中,并在獲取到數(shù)據(jù)幀發(fā)送指令時(shí)將儲(chǔ)存于RAM中的數(shù)據(jù)幀讀出并發(fā)送至從站。
從站還包括:
第一分析模塊,用于若分析得數(shù)據(jù)幀的地址命令段為從站自增寫操作命令時(shí),從站將數(shù)據(jù)幀保存到內(nèi)存空間中。
第二分析模塊,用于若分析得數(shù)據(jù)幀的地址命令段為寫入操作命令時(shí),從站將內(nèi)存空間中的數(shù)據(jù)寫入到數(shù)據(jù)幀。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,RandomAccess Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。