一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PCIe EtherCAT實時運動控制卡PCIE464同步跟隨/皮帶跟隨加工應(yīng)用

正運動技術(shù) ? 來源:正運動技術(shù) ? 作者:正運動技術(shù) ? 2025-06-04 11:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一.硬件介紹

PCIE464運動控制卡是正運動推出的一款EtherCAT總線+脈沖型、PCIE接口式的運動控制卡,可選6-64軸運動控制,支持多路高速數(shù)字輸入輸出,可輕松實現(xiàn)多軸同步控制和高速數(shù)據(jù)傳輸。

wKgZPGg_utOAOS4BAARSamow81c323.png

PCIE464運動控制卡適合于多軸點位運動、插補運動、軌跡規(guī)劃、手輪控制、編碼器位置檢測、IO控制、位置鎖存等功能的應(yīng)用。PCIE464運動控制卡適用于3C電子加工、檢測設(shè)備、半導體設(shè)備、SMT加工、激光加工、光通訊設(shè)備、鋰電及光伏設(shè)備、以及非標自動化設(shè)備等高速高精應(yīng)用場合。


wKgZO2g_utSAYYZKAAKfkydS58A656.png


PCIE4系列控制卡的應(yīng)用程序可以使用VC,VB,VS,C++,C#等軟件開發(fā),程序運行時需要動態(tài)庫zmotion.dll,調(diào)試時可以將RTSys軟件同時連接控制器,從而方便調(diào)試、方便觀察。

wKgZPGg_utSAfnzmAADiT8u8kog151.png

PCIE464產(chǎn)品介紹可點擊→“【EtherCAT同步周期快至100us】超高實時性PCIe EtherCAT控制卡PCIE464”查看。

更多關(guān)于PCIE464的詳情介紹,點擊“PCIE464 — 高速高精,超高實時性的PCIe EtherCAT實時運動控制卡”查看。



二.接線參考

1.IN數(shù)字量輸入接口

數(shù)字輸入分布在J400(IN0-IN7)和X400(IN8-IN39)信號接口中。

wKgZO2g_utSASgF3AAECzlpByxg473.png

wKgZPGg_utWATWBfAAETulyawkI932.png

2.OUT數(shù)字量輸出接口

數(shù)字輸出分布在J400(OUT0-7)和X400(OUT8-OUT39)信號接口中。

wKgZPGg_utWAcmOxAAEEsULS6bc654.png

wKgZO2g_utaAXUZaAAFuqQygFbE585.png

3.單端編碼器及單端脈沖接線

wKgZPGg_utaAK1ihAAG1wqdosh8950.png

單端脈沖接線圖

wKgZO2g_utaAGHvdAAHiCBCP7Rc153.png

差分脈沖接線圖


wKgZPGg_uteALReOAAEgHh5fBlQ508.png

單端編碼器接線圖


wKgZO2g_uteATWdPAAKJw8OeKiw299.png

差分編碼器接線圖


注:PCIE464的J400接口中有一個差分脈沖軸接口和三個單端脈沖軸接口,兩個差分編碼器接口(其中一個與差分脈沖軸接口復用,取決于固件設(shè)定)和兩個單端編碼器接口,具體引腳定義參見PCIE464硬件手冊。


三.同步指令解析及技巧解釋

1.同步過程

同步跟隨過程分為三部分:加速追趕、同步加工、結(jié)束歸位。

(1)加速追趕:動作機構(gòu)加速追上產(chǎn)品位置,并保持追趕末端速度與產(chǎn)品速度一致的過程。

(2)同步加工:動作機構(gòu)加速追趕上之后,繼續(xù)保持與產(chǎn)品同樣的速度運動的過程,即兩者相對靜止的過程;加工動作常在此過程中進行。

(3)結(jié)束歸位:加工完成后,打斷跟隨過程,回歸待機位的過程。

? 正運動技術(shù)提供了成熟的同步跟隨執(zhí)行指令MOVESYNC完成上述過程。

2.同步指令

MOVESYNC -- 同步運動,皮帶上物體跟隨

語法:

MOVESYNC(mode,synctime,syncposition,syncaxis,pos1[,pos2, pos3…])

參數(shù)解釋:

(1)mode:mode=0 + angle,angle:皮帶旋轉(zhuǎn)角度,角度=皮帶軸dpos正向與BASE軸正向的夾角。使用時需要將角度轉(zhuǎn)換為弧度(0~2PI)。

wKgZPGg_uteAdf9wAABGmWNC1Tg503.png

(2)synctime:同步時間,ms單位。

(3)syncposition:皮帶軸物體被感應(yīng)到時皮帶軸的位置。

(4)syncaxis:皮帶軸軸號,-1表示沒有皮帶軸。

(5)pos1:皮帶軸物體被感應(yīng)到時的BASE第1個軸絕對位置。

(6)posn:皮帶軸物體被感應(yīng)到時的BASE第n個軸絕對位置。

上位機指令參數(shù)排列一樣。

wKgZO2g_utiAPjilAACiH00p04E363.png

3.使用疑難點解析

(1)如何獲知syncposition:皮帶軸物體被感應(yīng)到時皮帶軸的位置?

首先,我們先了解跟隨的完整實現(xiàn)流程,如下:

光電傳感器產(chǎn)生信號→控制器收到信號,鎖存獲取跟隨坐標→產(chǎn)品流到到位,跟隨觸發(fā)→追趕產(chǎn)品,進入同步加工,走軌跡→進入下一次跟隨。

那么按照流程看,物體被感應(yīng)到時的位置就由鎖存產(chǎn)生并記錄,我們只需要將鎖存數(shù)據(jù)記錄就獲取到了參數(shù)syncposition的值。

(2)如何獲知同步跟隨所需的POSN:皮帶軸物體被感應(yīng)到時跟隨軸的位置?

syncposition與POSN都是在物體被感應(yīng)到時的位置,兩者的關(guān)系是同時相對靜止的;所以此處的POSN:皮帶軸物體被感應(yīng)到時跟隨軸的位置并不是感應(yīng)到產(chǎn)品時跟隨軸所處的位置,而是感應(yīng)到產(chǎn)品時跟隨軸應(yīng)該走到的位置,也就是我們想要的產(chǎn)品同步跟隨位置點。

在上一步,我們獲知了皮帶軸的感應(yīng)位置是在鎖存的時候獲取到,那么可以在程序中設(shè)計,產(chǎn)品經(jīng)過傳感器后停下來,獲取當前皮帶軸位置,用鎖存到的值-皮帶軸當前位置=跟隨方向的位移量→移動歸零后的跟隨軸組到產(chǎn)品上標記的需要加工的起點位置,記錄下軸組位置數(shù)據(jù)→將軸組中跟隨方向軸的坐標-計算出來的跟隨方向的位移量=鎖存時跟隨軸組中跟隨方向的軸位置→記錄下數(shù)據(jù)就得到了皮帶軸物體被感應(yīng)到時跟隨軸的位置POSN。

(3)跟隨三個過程中的數(shù)據(jù)怎么填?是否需要重新計算?

跟隨三個過程中的參數(shù)數(shù)據(jù)不需要重新計算;三個過程中唯一需要變化的參數(shù)是synctime,其他的參數(shù)保持不變;而synctime參數(shù)根據(jù)實際加工需要設(shè)定即可,一般會將同步加工時間設(shè)置大。

(4)在同步加工段中,怎么去走加工軌跡?能直接控制跟隨軸組走軌跡嗎?

在同步過程中一般是不能直接使用運動指令去操控跟隨軸組走軌跡的,不然會打斷跟隨的狀態(tài);可以使用疊加運動的方式間接走軌跡;通過addax指令將幾個沒有用到的虛擬軸,疊加到跟隨軸組上,使用運動指令控制虛擬軸執(zhí)行加工軌跡,就能實現(xiàn)在保持跟隨狀態(tài)下走加工軌跡。

(5)不同產(chǎn)品軌跡所需時間不一樣,同步加工段的時間怎么計算?

其實在實際應(yīng)用中,同步加工段的時間通常會設(shè)置一個很大很大的時間值確保加工完成,加工完成后,用MOVESYNC的-2模式強制結(jié)束即可。

(6)加工中產(chǎn)品不斷進來,怎么實現(xiàn)跟隨軸組不回待機,連續(xù)跟隨加工產(chǎn)品?

只需要注意不要在程序中每一段的跟隨加工返回待機位的后面加入等待或者其他進運動緩沖的指令即可;因為復位用-1模式時,其會被后面的緩沖MOVESYNC覆蓋,也就是當下一個產(chǎn)品的MOVESYNC跟隨指令已經(jīng)壓進運動緩沖之后,當前產(chǎn)品加工完的復位MOVESYNC就會被覆蓋,無效。

4.擴展用法

MOVE_ADDAX運動緩沖疊加

使用MOVESYNC+MOVE_ADDAX,可以實現(xiàn)在保持跟隨狀態(tài)下直接操作跟隨軸組走軌跡。


四.C#語言進行項目開發(fā)

1.在VS2010菜單“文件”→“新建”→“項目”,啟動創(chuàng)建項目向?qū)А?/p>

wKgZPGg_utiAIwaEAABijARkStc387.png

2.選擇開發(fā)語言為“Visual C#”和.NET Framework 4以及Windows窗體應(yīng)用程序。

wKgZO2g_utiAPwTsAAJWnIAlwls571.png

3.找到廠家提供的光盤資料里面的C#函數(shù)庫,路徑如下(32位庫為例)。

1)進入廠商提供的光盤資料找到“04PC函數(shù)”文件夾,并點擊進入。

wKgZPGg_utmAP74nAAHp2VYiglA350.png

2)選擇“01PC函數(shù)庫V2.1”文件夾。

wKgZO2g_utmAPCzKAAHVG--j7PY491.png

3)選擇“Windows平臺”文件夾。

wKgZPGg_utqAbX4tAAE4lCUl-eo937.png

4)選擇“C#”文件夾。

wKgZO2g_utqAGXaIAAGut2yY43I668.png

5)根據(jù)需要選擇對應(yīng)的函數(shù)庫,這里選擇32位庫。

wKgZPGg_utuACHEVAACo8t8ZoTs577.png

wKgZPGg_utuAH__kAADFSPBsInA055.png

4.將廠商提供的C#的庫文件以及相關(guān)文件復制到新建的項目中。

1)將zmcaux.cs文件復制到新建的項目里面中。

wKgZO2g_utyANXIhAAExhCAiCTg918.png

2)將zauxdll.dll和zmotion.dll文件放入bindebug文件夾中。

wKgZPGg_utyAKnf8AABqWTaQuQI726.jpg

5.雙擊Form1.cs里面的Form1,出現(xiàn)代碼編輯界面,在文件開頭寫入using cszmcaux,并聲明控制器句柄g_handle。

wKgZO2g_utyAcH6LAAKkND_TbTE043.png

6.至此,項目新建完成,可進行C#項目開發(fā)。

C#跟隨主體代碼:

publicvoidSubMoveSync()
{
 intiret =0;
 int[]iAxisList =newint[2]{0,1} ;
 int[]iTime =newint[3];
  iTime[0] = Convert.ToInt32(TextAccTime.Text);
  iTime[1] = Convert.ToInt32(TextSyncTime.Text);
  iTime[2] = Convert.ToInt32(TextBackTime.Text);
 float[]fWaitPos =newfloat[2];
  fWaitPos[0] = Convert.ToSingle (TextXpos.Text);
  fWaitPos[1] = Convert.ToSingle(TextYpos.Text);
 floatfOffPos= Convert.ToSingle(TextOffpos.Text);
 floatfPdAxisPos =0;   //當前皮帶軸位置
 float[] fMakrPos = newfloat[2];     //當前加工產(chǎn)品鎖存編碼器的位置
 intiMaxNum = Convert.ToInt32(Text_TabNum.Text);
 floatimode =0;
  imode =0;    //X方向跟隨
 if(m_SyncMode ==1)        //同步軌跡運動
  {
    iret = zmcaux.ZAux_Direct_SetMerge(G_CardHandle,4,1);     //打開虛擬X軸連續(xù)插補
    iret = zmcaux.ZAux_Direct_Single_Addax(G_CardHandle,0,4);     //虛擬4號軸X軸的運動疊加到實際X軸
    iret = zmcaux.ZAux_Direct_Single_Addax(G_CardHandle,1,5);     //虛擬5號軸Y軸的運動疊加到實際Y軸
  }
 float[] Units =newfloat[2];
  zmcaux.ZAux_Direct_GetUnits(G_CardHandle,2,refUnits[0]);
  zmcaux.ZAux_Direct_GetUnits(G_CardHandle,0,refUnits[1]);
 float[] ratio =newfloat[1] { Units[0] / Units[1] };
 int[] scraxis =newint[1] {2};
 while(true)
  {
   if( (m_RegistCount !=0) && (iWorkCount  iMaxNum)  //鎖存坐標已經(jīng)溢出,數(shù)據(jù)保存在鎖存前面
    {
      iWorkCount = iWorkCount - m_RegistCount;    //從下個循環(huán)開始取值
     if(iWorkCount < m_RegistCount)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? iret = zmcaux.ZAux_Direct_GetTable(G_CardHandle, Convert.ToInt32(Text_TabStart.Text) +?1?+ iWorkCount,?1, fMakrPos);	//獲取當前準備加工的鎖存位置
? ? ? ? ? ? }
? ? ? ? ? ??else
? ? ? ? ? ? {
? ? ? ? ? ? ? ??continue;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ??//鎖存事件未觸發(fā)
? ? ? ??if?(m_RegistCount ==?0?|| m_RegistCount == iWorkCount)
 ? ? ?? {
? ? ? ? ? ??continue;
? ? ? ? }
? ? ? ??//等待傳送帶位置運動超過開始跟隨位置
? ? ? ??do
? ? ? ? {
? ? ? ? ? ? iret = zmcaux.ZAux_Direct_GetMpos(G_CardHandle,?2,?ref?fPdAxisPos); ? ? ? ? ? ?//獲取當前編碼軸位置
? ? ? ? }?while?(fPdAxisPos < fOffPos + fMakrPos[0]);
? ? ? ? iret = zmcaux.ZAux_Direct_MoveSync(G_CardHandle, imode, iTime[0], fMakrPos[0] + fOffPos,?2,?2, iAxisList, fWaitPos); ? ? ?//同步啟動加速段,
? ? ? ??if?(Sync_Mode ==?0)
? ? ? ? {
? ? ? ? ? ??if?(m_SyncMode ==?1) ? ? ? ? ? ? ? ?//同步軌跡運動
? ? ? ? ? ? {
? ? ? ? ? ? ? ? SubVirAxisMove(); ? ? ? ? ? ? ??//調(diào)用虛擬軸軌跡
? ? ? ? ? ? ? ? iret = zmcaux.ZAux_Direct_MoveTable(G_CardHandle, (uint)iAxisList[0],?0, (float)1); ? ? ?//寫TABLE數(shù)據(jù)到實際軸緩沖區(qū),速度同步后修改TABLE觸發(fā)虛擬軸
? ? ? ? ? ? ? ??if?(iret !=?0)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? MessageBox.Show("ZAux_Direct_MoveTable失敗 錯誤碼:"?+ iret.ToString());
? ? ? ? ? ? ? ? ? ??continue;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? iret = zmcaux.ZAux_Direct_MoveSync(G_CardHandle, imode, iTime[1], fMakrPos[0] + fOffPos,?2,?2, iAxisList, fWaitPos); ? ? ?//同步啟動勻速速段,勻速時間
? ? ? ? ? ? ? ??//同步結(jié)束
? ? ? ? ? ? ? ? iret = zmcaux.ZAux_Direct_MoveTable(G_CardHandle, (uint)iAxisList[0],?0, (float)0); ? ? ?//寫TABLE數(shù)據(jù)到實際軸緩沖區(qū),速度同步后修改TABLE觸發(fā)虛擬軸
? ? ? ? ? ? ? ??//iret = zmcaux.ZAux_Direct_MoveCancel(G_CardHandle, iAxisList[0], 4, 2); ? ? ? ? ? ? ? ? //運動完成強制停止未完成的虛擬軸運動
? ? ? ? ? ? }
? ? ? ? ? ??else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? iret = zmcaux.ZAux_Direct_MoveSync(G_CardHandle, imode, iTime[1], fMakrPos[0] + fOffPos,?2,?2, iAxisList, fWaitPos); ? ? ?//同步啟動勻速速段,勻速時間
? ? ? ? ? ? }
? ? ? ? }
? ? ? ??else?if(Sync_Mode ==?1)
? ? ? ? {
? ? ? ? ? ??if?(m_SyncMode ==?1) ? ? ? ? ? ? ? ?//同步軌跡運動
? ? ? ? ? ? {
? ? ? ? ? ? ? ? iret = Motion_MoveAddax(G_CardHandle, iAxisList[0], iAxisList,?2, ratio, scraxis);?//建立疊加關(guān)系
? ? ? ? ? ? ? ? SubVirAxisMove_Dirct(); ? ? ? ? ? ? ??//直接控制實際軸走軌跡
? ? ? ? ? ? ? ??//同步結(jié)束
? ? ? ? ? ? ? ? iret = zmcaux.ZAux_Direct_MoveTable(G_CardHandle, (uint)iAxisList[0],?0, (float)0); ? ? ?//寫TABLE數(shù)據(jù)到實際軸緩沖區(qū),速度同步后修改TABLE觸發(fā)虛擬軸
? ? ? ? ? ? ? ? iret = Motion_MoveAddax(G_CardHandle, iAxisList[0], iAxisList,?0, ratio, scraxis);
? ? ? ? ? ? }
? ? ? ? ? ??else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? iret = Motion_MoveAddax(G_CardHandle, iAxisList[0], iAxisList,?2, ratio, scraxis);?//建立疊加關(guān)系
? ? ? ? ? ? ? ? iret = zmcaux.ZAux_Direct_MoveDelay(G_CardHandle, iAxisList[0], iTime[1]); ? ?//運行延時時間
? ? ? ? ? ? ? ? iret = Motion_MoveAddax(G_CardHandle, iAxisList[0], iAxisList,?0, ratio, scraxis); ??//取消疊加
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? iret = zmcaux.ZAux_Direct_MoveSync(G_CardHandle, imode, iTime[2],?0,?-1,?2, iAxisList, fWaitPos); ? ? ?//結(jié)束同步走到待機位置
? ? ? ??int?Axisidle =?0;
? ? ? ??//此處判斷并實現(xiàn)是否每次都強制回待機位之后再執(zhí)行下一次跟隨動作,由于MOVESYNC在-1模式下的特殊性,會被緊接的MOVESYNC取代,不需要其他邏輯,即可以實現(xiàn)連續(xù)跟隨
? ? ? ??if?(Force_Back_Flag ==?1)
? ? ? ? {
? ? ? ? ? ??do
? ? ? ? ? ? {
? ? ? ? ? ? ? ? iret = zmcaux.ZAux_Direct_GetIfIdle(G_CardHandle, iAxisList[0],?ref?Axisidle); ? ? ? ? ? ?//等待主軸跟隨完畢
 ??? ? ? ? ?}?while?(Axisidle ==?0);
? ? ? ? }
? ? ? ? iWorkCount++;
? ? }
}



五.Basic編程進行項目開發(fā)

1.在電腦里新建一個文件夾用來保存即將要建立的工程。打開RTSys編程軟件。

wKgZPGg_ut2ABBhkAAEtnfut1-k839.png

2.新建項目:菜單欄“文件”→“新建工程”。

wKgZO2g_ut2AXnkbAAFEEvloBQs456.png

3.點擊“新建工程”后彈出“另存為”界面,選擇一個文件夾打開,輸入文件名后保存項目,后綴為“.zpj”。

wKgZPGg_ut6APjQnAAEDhWP3auk669.png

4.新建文件:點擊菜單欄“文件”→“新建”,新建彈出窗口支持Basic/Plc/Hmi混合編程,這里選擇新建的文件類型為Basic后確認。

wKgZO2g_ut6AGUd9AAFQYtx8Coo738.png

5.設(shè)置文件自動運行:如下圖,雙擊文件右邊自動運行的位置,輸入任務(wù)號“0”。

wKgZPGg_ut6AVaAeAABHHWfNheQ009.jpg

Basic跟隨主體代碼:

globalsub reg_Task() '//鎖存線程
REG_INPUTS(belt) = $0000  '//指定皮帶軸的鎖存輸入口,這里R3 R2 R1 R0都用0號輸入口的信號
Reg_Count =0'// 清零鎖存計數(shù)循環(huán)量
WHILE 1
  REGIST(4)axis(belt) '//開啟軸鎖存
 wait until(MARK(belt)) '//等待軸鎖存觸發(fā)
  Reg_Array(Reg_Count) = REG_POS(belt)  '//將鎖存到的軸位置存放到鎖存數(shù)組中
 reg_Flag(Reg_Count) =1 '//標記觸發(fā)
  if(Reg_Count >= Reg_Space - 1) then  '//判斷鎖存緩存數(shù)組是否滿,滿了重新開始計數(shù)
    Reg_Count =0
 else
    Reg_Count = Reg_Count +1
 endif
  Reg_Count_All = Reg_Count_All +1
WEND
endsub
globalsub movesync_Task(Mode) '//mode 0- 三段式跟隨  1- 直接跟隨
Sync_Count = 0 '// 清零 跟隨標志
Over_Max_Count =0
Sync_Count_All =0
base(X_sync,Y_sync,Z_sync)
moveabs(X_Wait,Y_Wait,Z_Wait) '//移動到待機位
WHILE 1
  if(reg_Flag(Sync_Count) = 1) then
    reg_Flag(Sync_Count) = -1  '//復位標志
   wait until(MPOS(belt) >Reg_Array(Sync_Count) + Diff_Pos) '//等待滿足觸發(fā)跟隨距離
    if(MPOS(belt) <= Reg_Array(Sync_Count) + Max_Diff) then ? '//滿足跟隨觸發(fā)的最大距離,也就是在跟隨觸發(fā)的最小距離和最大距離之間
? ? ? ? ? ??if(Mode =?0) then
?? ? ? ? ? ? ? ?base(X_sync,Y_sync,Z_sync)
? ? ? ? ? ? ? ??MOVESYNC(0,catch_time,Reg_Array(Sync_Count),belt,X_POS,Y_POS,Z_POS)axis(X_sync) ??'// 同步追趕段 ?由于MOVESYNC指令會根據(jù)跟隨軸位置控制跟隨從軸,此處填入鎖存時刻的位置即可
? ? ? ? ? ? ? ? MOVE_TASK(10,rectangel)AXIS(X_sync) ?'//開啟異步線程10,執(zhí)行加工動作
? ? ? ? ? ? ? ??MOVESYNC(0,work_time,Reg_Array(Sync_Count),belt,X_POS,Y_POS,Z_POS)axis(X_sync) ??'//保持跟隨狀態(tài)
? ? ? ? ? ? ? ? wait until(PROC_STATUS(10) = 1)? ? ? ? ? ? ? ? wait until(PROC_STATUS(10) = 0)
? ? ? ? ? ? ? ? MOVESYNC(-1,back_time,Reg_Array(Sync_Count),-1, X_Wait,Y_Wait,Z_Wait)AXIS(X_sync)
? ? ? ? ? ? ? ? Sync_Count_All = Sync_Count_All + 1
? ? ? ? ? ? elseif(mode = 1) then
?? ? ? ? ? ? ? ?base(X_sync,Y_sync,Z_sync)
? ? ? ? ? ? ? ? MOVESYNC(0,catch_time,Reg_Array(Sync_Count),belt,X_POS,Y_POS,Z_POS)axis(X_sync) ? '// 同步追趕段 ?由于MOVESYNC指令會根據(jù)跟隨軸位置控制跟隨從軸,此處填入鎖存時刻的位置即可
? ? ? ? ? ? ? ??MOVE_ADDAX(belt,?1,?UNITS(belt) /?UNITS(X_sync))axis(X_sync) ??'//使用move_addax替代MOVESYNC,使得跟隨動作保持,將皮帶軸的運動疊加到跟隨軸上
? ? ? ? ? ? ? ? rectangel2 ? '//加工
? ? ? ? ? ? ? ??MOVESYNC(-1,back_time,Reg_Array(Sync_Count),-1, X_Wait,Y_Wait,Z_Wait)AXIS(X_sync)
? ? ? ? ? ? ? ? Sync_Count_All = Sync_Count_All +?1
? ? ? ? ? ??endif
?? ? ? ??else
? ? ? ? ? ? ?"位置超出最大觸發(fā)距離"? ? ??'//此處簡單做打印輸出提示,可以根據(jù)自己需求擴展
? ? ? ? ? ? Over_Max_Count = Over_Max_Count + 1
? ? ? ?  endif
?? ? ? ? if(Sync_Count >= Reg_Space - 1) then  '//判斷跟隨觸發(fā)是否讀取完了全部數(shù)據(jù),滿了重新開始計數(shù)
      Sync_Count =0
    else
      Sync_Count = Sync_Count +1
    endif
 endif
wend
endsub



六.效果演示

下面以C#代碼跑測試和RTSys示波器抓取波形分析。

wKgZO2g_ut-ABzQ_AABmLc7xVMM002.png

C#同步跟隨界面圖


wKgZPGg_ut-AP3hqAAGyTfPkxy8309.png

單次觸發(fā)和連續(xù)多次觸發(fā)圖


wKgZO2g_uuCAWfGOAAHTTfx4vE0434.png

單次觸發(fā)與連續(xù)多次觸發(fā)速度分析圖

視頻講解可點擊→“PCIe EtherCAT實時運動控制卡PCIE464同步跟隨皮帶跟隨加工應(yīng)用”查看。


完整代碼獲取地址

wKgZPGg_uuGAdIDHAACfQRzl3Hg776.png

本次,正運動技術(shù)PCIe EtherCAT實時運動控制卡PCIE464同步跟隨/皮帶跟隨加工應(yīng)用,就分享到這里。

更多精彩內(nèi)容請關(guān)注“正運動小助手”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運動技術(shù)銷售工程師:400-089-8936。

本文由正運動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學習,一起提高中國智能制造水平。文章版權(quán)歸正運動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 運動控制
    +關(guān)注

    關(guān)注

    4

    文章

    721

    瀏覽量

    33562
  • ethercat
    +關(guān)注

    關(guān)注

    19

    文章

    1124

    瀏覽量

    40042
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    全球首創(chuàng)!PCIe實時6通道EtherCAT運動控制卡上市!

    PCle超實用6通道EtherCAT運動控制卡助您實現(xiàn)更極速精準的運動控制
    的頭像 發(fā)表于 07-18 10:32 ?101次閱讀
    全球首創(chuàng)!<b class='flag-5'>PCIe</b>超<b class='flag-5'>實時</b>6通道<b class='flag-5'>EtherCAT</b><b class='flag-5'>運動</b><b class='flag-5'>控制卡</b>上市!

    圖像信號分析處理設(shè)計原理圖:536-基于FMC接口的XCZU7EV 通用PCIe 視覺處理 工業(yè)控制卡

    XCZU7EV 通用PCIe , 圖像信號分析處理 , 視覺處理 , 工業(yè)控制卡 , 存儲擴展
    的頭像 發(fā)表于 07-08 10:47 ?719次閱讀
    圖像信號分析處理<b class='flag-5'>卡</b>設(shè)計原理圖:536-基于FMC接口的XCZU7EV 通用<b class='flag-5'>PCIe</b><b class='flag-5'>卡</b> 視覺處理<b class='flag-5'>卡</b> 工業(yè)<b class='flag-5'>控制卡</b>

    EtherCAT運動控制卡應(yīng)用開發(fā)教程之Java

    運動控制卡的Java開發(fā)及DLL調(diào)用
    的頭像 發(fā)表于 06-13 14:29 ?228次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>運動</b><b class='flag-5'>控制卡</b>應(yīng)用開發(fā)教程之Java

    PCIe EtherCAT實時運動控制卡PCIE464點膠工藝中的同步/提前/延時開關(guān)膠

    運動緩中實現(xiàn)同步/提前/延時開關(guān)膠
    的頭像 發(fā)表于 05-29 13:49 ?148次閱讀
    <b class='flag-5'>PCIe</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b><b class='flag-5'>PCIE464</b>點膠工藝中的<b class='flag-5'>同步</b>/提前/延時開關(guān)膠

    PCIe EtherCAT實時運動控制卡PCIE464點膠工藝中的同步/提前/延時開關(guān)膠 #正運動技術(shù)

    運動技術(shù)
    正運動技術(shù)
    發(fā)布于 :2025年05月29日 09:06:55

    PCIe EtherCAT實時運動控制卡PCIE464的CAD導圖與刀向跟隨應(yīng)用

    MFC與C++編程實現(xiàn)CAD導圖與刀向跟隨功能
    的頭像 發(fā)表于 05-08 14:42 ?1503次閱讀
    <b class='flag-5'>PCIe</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b><b class='flag-5'>PCIE464</b>的CAD導圖與刀向<b class='flag-5'>跟隨</b>應(yīng)用

    機器視覺運動控制一體機在天地蓋同步跟隨貼合解決方案

    運動天地蓋同步跟隨貼合解決方案
    的頭像 發(fā)表于 03-06 14:29 ?327次閱讀
    機器視覺<b class='flag-5'>運動</b><b class='flag-5'>控制</b>一體機在天地蓋<b class='flag-5'>同步</b><b class='flag-5'>跟隨</b>貼合解決方案

    運動控制卡周期上報實時數(shù)據(jù)IO狀態(tài)之C++篇

    使用C++進行運動控制卡的周期上報功能實現(xiàn)
    的頭像 發(fā)表于 12-17 13:59 ?832次閱讀
    <b class='flag-5'>運動</b><b class='flag-5'>控制卡</b>周期上報<b class='flag-5'>實時</b>數(shù)據(jù)IO狀態(tài)之C++篇

    機器視覺運動控制一體機在PCB跟隨點膠上的應(yīng)用

    運動PCB同步跟隨視覺點膠解決方案
    的頭像 發(fā)表于 11-23 17:16 ?762次閱讀
    機器視覺<b class='flag-5'>運動</b><b class='flag-5'>控制</b>一體機在PCB<b class='flag-5'>跟隨</b>點膠上的應(yīng)用

    PCIe實時運動控制卡的雙盤視覺篩選機上位機開發(fā)應(yīng)用

    PCIe實時運動控制卡的雙盤視覺篩選機上位機開發(fā)應(yīng)用
    的頭像 發(fā)表于 10-10 10:15 ?770次閱讀
    <b class='flag-5'>PCIe</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>的雙盤視覺篩選機上位機開發(fā)應(yīng)用

    pcie接口反射內(nèi)存

    pci反射內(nèi)存是一種用于實時網(wǎng)絡(luò)的硬件設(shè)備,他將反射內(nèi)存集成到上,通過計算機的PCIe槽與計算機連接
    發(fā)表于 09-06 14:44 ?0次下載

    PCIe EtherCAT實時運動控制卡PCIE464的IO與編碼器讀寫應(yīng)用# 正運動技術(shù)# 運動控制卡

    編碼器運動控制卡
    正運動技術(shù)
    發(fā)布于 :2024年07月23日 09:37:31