基于EtherCAT實(shí)時(shí)以太網(wǎng)的伺服驅(qū)動(dòng)器同步方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及基于EtherCAT實(shí)時(shí)以太網(wǎng)的伺服驅(qū)動(dòng)器同步方法。
【背景技術(shù)】
[0002]運(yùn)動(dòng)控制系統(tǒng)的發(fā)展水平?jīng)Q定了一個(gè)國(guó)家裝備制造業(yè)的水平。隨著現(xiàn)場(chǎng)總線和網(wǎng)絡(luò)技術(shù)的發(fā)展,分布式運(yùn)動(dòng)控制系統(tǒng)是數(shù)控系統(tǒng)的重要發(fā)展方向。高水平的分布式運(yùn)動(dòng)控制系統(tǒng)需要實(shí)現(xiàn)高精度的電流、速度及位置全閉環(huán)控制,需要實(shí)現(xiàn)高效、高速的信息交互。
[0003]傳統(tǒng)伺服驅(qū)動(dòng)器接口需配備額外的運(yùn)動(dòng)控制卡,運(yùn)動(dòng)控制卡和伺服和驅(qū)動(dòng)器之間以脈沖命令和模擬信號(hào)連接。這種方法布線復(fù)雜、通信速率低、集中控制方式復(fù)雜、可擴(kuò)展性差,嚴(yán)重制約了中高檔伺服技術(shù)的發(fā)展和應(yīng)用。
[0004]相較而言,伺服驅(qū)動(dòng)器采用現(xiàn)場(chǎng)總線通過(guò)全數(shù)字式信息傳輸可以實(shí)現(xiàn)分布式多軸控制。系統(tǒng)復(fù)雜性有所降低、擴(kuò)展性較好、性能有所提升。較為廣泛采用的伺服接口總線有PROFIBUS-DP、CANopen, DeviceNET等傳統(tǒng)現(xiàn)場(chǎng)總線。。但傳統(tǒng)現(xiàn)場(chǎng)總線通信速率較低、通信周期長(zhǎng)、通信距離短;現(xiàn)場(chǎng)總線協(xié)議標(biāo)準(zhǔn)難以統(tǒng)一、兼容性差,主從站均需采用專用硬件;采用短幀通信,有效數(shù)據(jù)負(fù)載效率低。上述原因決定了傳統(tǒng)現(xiàn)場(chǎng)總線接口的伺服驅(qū)動(dòng)器難以滿足中高端復(fù)雜運(yùn)動(dòng)控制系統(tǒng)的硬實(shí)時(shí)、高同步性、高效高速等要求。
[0005]如何實(shí)現(xiàn)通信和伺服的協(xié)同處理并保障不同伺服電流環(huán)周期的同步執(zhí)行,是在高速通信基礎(chǔ)上實(shí)現(xiàn)多軸伺服系統(tǒng)高精度、高同步執(zhí)行要解決的問(wèn)題。
[0006]近年來(lái),誕生了實(shí)時(shí)以太網(wǎng)技術(shù),該技術(shù)不僅傳播速率快、數(shù)據(jù)包容量大、傳輸距離長(zhǎng)、拓?fù)浣Y(jié)構(gòu)靈活而且保障較高的實(shí)時(shí)和同步性能,因而成為解決上述問(wèn)題的新方案?;贓therCAT實(shí)時(shí)以太網(wǎng)的伺服就是這樣一種新方案。
[0007]EtherCAT實(shí)時(shí)以太網(wǎng)采用主從通信機(jī)制。一個(gè)完整的EtherCAT控制網(wǎng)絡(luò)包含主站和從站。EtherCAT實(shí)時(shí)以太網(wǎng)的數(shù)據(jù)傳輸原理如圖1所示:主站發(fā)送以太網(wǎng)幀給各個(gè)從站,接收到以太網(wǎng)幀的從站可以直接處理接收到的數(shù)據(jù)幀,并從中提取輸出數(shù)據(jù)和插入對(duì)應(yīng)的輸入數(shù)據(jù),然后將以太網(wǎng)幀傳輸?shù)较乱粡恼?。網(wǎng)絡(luò)上的最后一個(gè)EtherCAT從站發(fā)回經(jīng)過(guò)各從站處理的數(shù)據(jù)幀,直到第一個(gè)從站將其發(fā)回給主控制器。通過(guò)這種方式,EtherCAT充分利用了以太網(wǎng)的全雙工特性,通過(guò)發(fā)送一個(gè)數(shù)據(jù)幀完成所有從站的數(shù)據(jù)交互。
[0008]EtherCAT從站設(shè)備由負(fù)責(zé)實(shí)現(xiàn)網(wǎng)絡(luò)通信的EtherCAT從站控制器(ESC,EtherCATSlave Controller)和負(fù)責(zé)伺服控制應(yīng)用的從站控制微處理器(MCU)組成。ESC硬件上由FPGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)或通信專用ASIC芯片實(shí)現(xiàn)。FPGA負(fù)責(zé)通信的數(shù)據(jù)鏈路層處理,而MCU則負(fù)責(zé)實(shí)現(xiàn)應(yīng)用層和伺服驅(qū)動(dòng)控制程序。
[0009]EtherCAT實(shí)時(shí)以太網(wǎng)通過(guò)分布時(shí)鐘(DC,Distributed Clock)使網(wǎng)絡(luò)上的ESC使用相同的系統(tǒng)時(shí)間來(lái)滿足各個(gè)節(jié)點(diǎn)間的高同步性能需求。各從站分布時(shí)鐘會(huì)以第一個(gè)從站為參考測(cè)量和計(jì)算傳輸延時(shí)和本地時(shí)鐘偏移,并進(jìn)行補(bǔ)償。ESC通過(guò)分布時(shí)鐘按照主站配置的同步周期向伺服應(yīng)用控制MCU發(fā)送同步信號(hào),以實(shí)現(xiàn)精確的同步控制。通常采用基于EtherCAT的伺服多軸同步實(shí)現(xiàn)方案如下ESC在接收到數(shù)據(jù)幀時(shí),取出輸出過(guò)程數(shù)據(jù)并保存到DPRAM的接收數(shù)據(jù)緩存區(qū)中,同時(shí)將DPRAM的發(fā)送數(shù)據(jù)緩存的數(shù)據(jù)插入數(shù)據(jù)幀發(fā)送到下一從站。ESC完成和以太網(wǎng)的數(shù)據(jù)交互后向MCU發(fā)起數(shù)據(jù)交互ΗΠ (Process DataInterface)中斷請(qǐng)求,更新接收數(shù)據(jù)緩存區(qū)中的數(shù)據(jù)到MCU中的伺服應(yīng)用變量。各從站ESC在分布時(shí)鐘定時(shí)觸發(fā)后,向伺服應(yīng)用MCU發(fā)起SYNC同步中斷請(qǐng)求。MCU進(jìn)入SYNC同步中斷后執(zhí)行伺服應(yīng)用程序,并將執(zhí)行結(jié)果鎖存并更新到ESC的送數(shù)據(jù)緩存等待下一周期發(fā)送至主站。
[0010]EtherCAT實(shí)時(shí)以太網(wǎng)提供了同步于主站的高速實(shí)時(shí)通信,不需要額外增加同步線纜,通過(guò)標(biāo)準(zhǔn)網(wǎng)線即可實(shí)現(xiàn)系統(tǒng)集成(如圖2所示),并且提供了多軸伺服系統(tǒng)的同步樣例方案。但仍存在以下不足:
[0011]I)現(xiàn)有的EtherCAT伺服驅(qū)動(dòng)器方案,伺服控制程序在SYNC同步中斷中執(zhí)行,SYNC同步中斷的產(chǎn)生由分布時(shí)鐘觸發(fā),電流環(huán)控制周期由伺服定時(shí)器時(shí)鐘產(chǎn)生,兩者存在定時(shí)偏移。在SYNC同步中斷發(fā)生時(shí),上一周期的伺服程序執(zhí)行狀態(tài)可能為已完成等待或未完成狀態(tài)。此時(shí)強(qiáng)制更新伺服程序數(shù)據(jù)會(huì)造成系統(tǒng)誤差。且各軸對(duì)SYNC同步中斷響應(yīng)延時(shí)存在一定誤差,未進(jìn)行補(bǔ)償;
[0012]2) MCU響應(yīng)ESC發(fā)起數(shù)據(jù)交互PDI中斷請(qǐng)求,更新ESC接收數(shù)據(jù)緩存區(qū)中的數(shù)據(jù)到MCU中的伺服應(yīng)用變量。ESC只對(duì)同步中斷進(jìn)行了延時(shí)和計(jì)數(shù)補(bǔ)償,各從站發(fā)起roi中斷的時(shí)間未同步處理,即MCU中的伺服應(yīng)用變量更新是非同步的。當(dāng)分布時(shí)鐘周期不等同于通信周期時(shí),各從站上的伺服應(yīng)用變量非同步,其更新和執(zhí)行可能偏差一個(gè)周期。且同步中斷具有更高優(yōu)先級(jí),可以把roi中斷打斷,導(dǎo)致數(shù)據(jù)更新不完整出錯(cuò);
【發(fā)明內(nèi)容】
[0013]本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種基于EtherCAT實(shí)時(shí)以太網(wǎng)的伺服驅(qū)動(dòng)器同步方法,其能對(duì)各從站的同步中斷響應(yīng)延時(shí)補(bǔ)償,實(shí)現(xiàn)伺服控制數(shù)據(jù)同步更新和執(zhí)行,對(duì)各從站的伺服程序定時(shí)器和分布時(shí)鐘計(jì)數(shù)器的偏差進(jìn)行補(bǔ)償,對(duì)伺服中斷和實(shí)時(shí)以太網(wǎng)同步中斷進(jìn)行協(xié)調(diào),使兩個(gè)中斷的觸發(fā)互不干擾,保證數(shù)據(jù)更新不被打斷。
[0014]本發(fā)明所采用的技術(shù)方案是:
[0015]一種基于EtherCAT實(shí)時(shí)以太網(wǎng)的伺服驅(qū)動(dòng)器同步方法,該伺服驅(qū)動(dòng)器設(shè)有基于EtherCAT實(shí)時(shí)以太網(wǎng)的從站,該基于EtherCAT實(shí)時(shí)以太網(wǎng)的伺服驅(qū)動(dòng)器同步方法包括:
[0016]從站的鏈路層控制模塊在分布時(shí)鐘觸發(fā)時(shí),向從站的應(yīng)用層控制模塊請(qǐng)求同步中斷;
[0017]應(yīng)用層控制模塊在每次進(jìn)入同步中斷時(shí)讀取當(dāng)前系統(tǒng)時(shí)刻Tsys以及伺服定時(shí)器的計(jì)數(shù)值T。,并計(jì)算中斷響應(yīng)延時(shí)a t1;其中,Δ t i= T sys-Td。sys,所述的中斷響應(yīng)延時(shí)At1為鏈路層控制模塊在分布時(shí)鐘觸發(fā)的時(shí)刻與當(dāng)前系統(tǒng)時(shí)刻之間的偏移量,Tdc sys為從鏈路層控制模塊讀取的本次分布時(shí)鐘觸發(fā)時(shí)刻;
[0018]在第一次進(jìn)入同步中斷時(shí),應(yīng)用層控制模塊計(jì)算Tset= T 0ffset+ (Tc- Δ tl),其中,Tset為應(yīng)用層控制模塊在第一次接收到同步中斷請(qǐng)求后的下一次伺服中斷發(fā)起時(shí)刻,TMfsJ%應(yīng)用層控制模塊接收到同步中斷請(qǐng)求后的下一次伺服中斷發(fā)起時(shí)刻與接收到該同步中斷請(qǐng)求的時(shí)刻之間的時(shí)間偏差值,Tl3ffset= Transt;其中Transt為預(yù)先設(shè)定的常量,Transt需滿足Tsync<Tconst<Tper1d-Tservo;T s胃為同步中斷的執(zhí)行時(shí)間;T SCTV。為伺服中斷的執(zhí)行時(shí)間,T PCT1C]dS伺服定時(shí)器的伺服程序理論定時(shí)周期;
[0019]應(yīng)用層控制模塊根據(jù)計(jì)算出的!;^.周整在第一次進(jìn)入同步中斷時(shí)的那一個(gè)伺服定時(shí)器的伺服程序定時(shí)周期;
[0020]應(yīng)用層控制模塊將處于第一次同步中斷所在的那一個(gè)通信周期內(nèi)的其余伺服定時(shí)器的伺服程序定時(shí)周期恢復(fù)為伺服程序理論定時(shí)周期TpCT1C]d。
[0021]上述的基于EtherCAT實(shí)時(shí)以太網(wǎng)的伺服驅(qū)動(dòng)器同步方法,其中,應(yīng)用層控制模塊從第二次進(jìn)入同步中斷開始,每次進(jìn)入同步中斷時(shí)均計(jì)算接收到同步中斷請(qǐng)求時(shí)的伺服定時(shí)器的實(shí)際計(jì)數(shù)值T2與理論計(jì)數(shù)值T i之間的偏差Δ τ: Δ T = T 2-1\= (T.-At1)-(Tper1d-TOffset) = !>TMfset-TpCT1C]d-A t1;并將本次同步中斷所在通信周期內(nèi)的伺服定時(shí)器的伺服程序定時(shí)周期設(shè)為 Tper1dNewj ^per1dNew T per1d+
ΔΤ/m,其中m為通信周期除以伺服程序理論定時(shí)周期的整數(shù)倍數(shù)。
當(dāng)前第1頁(yè)
1 
2 
3