chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

一.硬件介紹

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

wKgZPGg_utOAOS4BAARSamow81c323.png

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


wKgZO2g_utSAYYZKAAKfkydS58A656.png


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

wKgZPGg_utSAfnzmAADiT8u8kog151.png

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

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



二.接線參考

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

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

wKgZO2g_utSASgF3AAECzlpByxg473.png

wKgZPGg_utWATWBfAAETulyawkI932.png

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

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

wKgZPGg_utWAcmOxAAEEsULS6bc654.png

wKgZO2g_utaAXUZaAAFuqQygFbE585.png

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

wKgZPGg_utaAK1ihAAG1wqdosh8950.png

單端脈沖接線圖

wKgZO2g_utaAGHvdAAHiCBCP7Rc153.png

差分脈沖接線圖


wKgZPGg_uteALReOAAEgHh5fBlQ508.png

單端編碼器接線圖


wKgZO2g_uteATWdPAAKJw8OeKiw299.png

差分編碼器接線圖


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


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

1.同步過(guò)程

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

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

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

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

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

2.同步指令

MOVESYNC -- 同步運(yùn)動(dòng),皮帶上物體跟隨

語(yǔ)法:

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

參數(shù)解釋?zhuān)?/strong>

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

wKgZPGg_uteAdf9wAABGmWNC1Tg503.png

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

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

(4)syncaxis:皮帶軸軸號(hào),-1表示沒(méi)有皮帶軸。

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

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

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

wKgZO2g_utiAPjilAACiH00p04E363.png

3.使用疑難點(diǎn)解析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.擴(kuò)展用法

MOVE_ADDAX運(yùn)動(dòng)緩沖疊加

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


四.C#語(yǔ)言進(jìn)行項(xiàng)目開(kāi)發(fā)

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

wKgZPGg_utiAIwaEAABijARkStc387.png

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

wKgZO2g_utiAPwTsAAJWnIAlwls571.png

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

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

wKgZPGg_utmAP74nAAHp2VYiglA350.png

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

wKgZO2g_utmAPCzKAAHVG--j7PY491.png

3)選擇“Windows平臺(tái)”文件夾。

wKgZPGg_utqAbX4tAAE4lCUl-eo937.png

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

wKgZO2g_utqAGXaIAAGut2yY43I668.png

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

wKgZPGg_utuACHEVAACo8t8ZoTs577.png

wKgZPGg_utuAH__kAADFSPBsInA055.png

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

1)將zmcaux.cs文件復(fù)制到新建的項(xiàng)目里面中。

wKgZO2g_utyANXIhAAExhCAiCTg918.png

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

wKgZPGg_utyAKnf8AABqWTaQuQI726.jpg

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

wKgZO2g_utyAcH6LAAKkND_TbTE043.png

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

1.在電腦里新建一個(gè)文件夾用來(lái)保存即將要建立的工程。打開(kāi)RTSys編程軟件。

wKgZPGg_ut2ABBhkAAEtnfut1-k839.png

2.新建項(xiàng)目:菜單欄“文件”→“新建工程”。

wKgZO2g_ut2AXnkbAAFEEvloBQs456.png

3.點(diǎn)擊“新建工程”后彈出“另存為”界面,選擇一個(gè)文件夾打開(kāi),輸入文件名后保存項(xiàng)目,后綴為“.zpj”。

wKgZPGg_ut6APjQnAAEDhWP3auk669.png

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

wKgZO2g_ut6AGUd9AAFQYtx8Coo738.png

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

wKgZPGg_ut6AVaAeAABHHWfNheQ009.jpg

Basic跟隨主體代碼:

globalsub reg_Task() '//鎖存線程
REG_INPUTS(belt) = $0000  '//指定皮帶軸的鎖存輸入口,這里R3 R2 R1 R0都用0號(hào)輸入口的信號(hào)
Reg_Count =0'// 清零鎖存計(jì)數(shù)循環(huán)量
WHILE 1
  REGIST(4)axis(belt) '//開(kāi)啟軸鎖存
 wait until(MARK(belt)) '//等待軸鎖存觸發(fā)
  Reg_Array(Reg_Count) = REG_POS(belt)  '//將鎖存到的軸位置存放到鎖存數(shù)組中
 reg_Flag(Reg_Count) =1 '//標(biāo)記觸發(fā)
  if(Reg_Count >= Reg_Space - 1) then  '//判斷鎖存緩存數(shù)組是否滿,滿了重新開(kāi)始計(jì)數(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 '// 清零 跟隨標(biāo)志
Over_Max_Count =0
Sync_Count_All =0
base(X_sync,Y_sync,Z_sync)
moveabs(X_Wait,Y_Wait,Z_Wait) '//移動(dòng)到待機(jī)位
WHILE 1
  if(reg_Flag(Sync_Count) = 1) then
    reg_Flag(Sync_Count) = -1  '//復(fù)位標(biāo)志
   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指令會(huì)根據(jù)跟隨軸位置控制跟隨從軸,此處填入鎖存時(shí)刻的位置即可
? ? ? ? ? ? ? ? MOVE_TASK(10,rectangel)AXIS(X_sync) ?'//開(kāi)啟異步線程10,執(zhí)行加工動(dòng)作
? ? ? ? ? ? ? ??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指令會(huì)根據(jù)跟隨軸位置控制跟隨從軸,此處填入鎖存時(shí)刻的位置即可
? ? ? ? ? ? ? ??MOVE_ADDAX(belt,?1,?UNITS(belt) /?UNITS(X_sync))axis(X_sync) ??'//使用move_addax替代MOVESYNC,使得跟隨動(dòng)作保持,將皮帶軸的運(yùn)動(dòng)疊加到跟隨軸上
? ? ? ? ? ? ? ? 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ā)距離"? ? ??'//此處簡(jiǎn)單做打印輸出提示,可以根據(jù)自己需求擴(kuò)展
? ? ? ? ? ? Over_Max_Count = Over_Max_Count + 1
? ? ? ?  endif
?? ? ? ? if(Sync_Count >= Reg_Space - 1) then  '//判斷跟隨觸發(fā)是否讀取完了全部數(shù)據(jù),滿了重新開(kāi)始計(jì)數(shù)
      Sync_Count =0
    else
      Sync_Count = Sync_Count +1
    endif
 endif
wend
endsub



六.效果演示

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

wKgZO2g_ut-ABzQ_AABmLc7xVMM002.png

C#同步跟隨界面圖


wKgZPGg_ut-AP3hqAAGyTfPkxy8309.png

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


wKgZO2g_uuCAWfGOAAHTTfx4vE0434.png

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

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


完整代碼獲取地址

wKgZPGg_uuGAdIDHAACfQRzl3Hg776.png

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

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

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

審核編輯 黃宇

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

    關(guān)注

    5

    文章

    810

    瀏覽量

    34405
  • ethercat
    +關(guān)注

    關(guān)注

    19

    文章

    1458

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    6路高性能PCIe EtherCAT運(yùn)動(dòng)控制卡XPCIE6032H#運(yùn)動(dòng)控制卡# 正運(yùn)動(dòng)# 正運(yùn)動(dòng)控制卡

    運(yùn)動(dòng)控制
    正運(yùn)動(dòng)技術(shù)
    發(fā)布于 :2025年12月05日 13:53:57

    PCIe兩路獨(dú)立主站高性能 EtherCAT運(yùn)動(dòng)控制卡XPCIE2032H# 運(yùn)動(dòng)控制卡# 正運(yùn)動(dòng)技術(shù)

    運(yùn)動(dòng)控制
    正運(yùn)動(dòng)技術(shù)
    發(fā)布于 :2025年12月05日 13:51:41

    PCIe-2E主站:高實(shí)時(shí)性,低門(mén)檻的EtherCAT開(kāi)發(fā)方案

    在傳統(tǒng)的EtherCAT主站開(kāi)發(fā)中,實(shí)時(shí)操作系統(tǒng)的復(fù)雜性常常給開(kāi)發(fā)團(tuán)隊(duì)帶來(lái)挑戰(zhàn)。本文將介紹一款創(chuàng)新的PCIe-2E主站,它如何通過(guò)簡(jiǎn)化開(kāi)發(fā)流程,降低對(duì)開(kāi)發(fā)人員的要求,從而提升團(tuán)隊(duì)協(xié)作
    的頭像 發(fā)表于 09-03 11:36 ?501次閱讀
    <b class='flag-5'>PCIe</b>-2E主站<b class='flag-5'>卡</b>:高<b class='flag-5'>實(shí)時(shí)</b>性,低門(mén)檻的<b class='flag-5'>EtherCAT</b>開(kāi)發(fā)方案

    高速高精運(yùn)動(dòng)控制!PCIe實(shí)時(shí)2通道EtherCAT運(yùn)動(dòng)控制卡上市!

    PCle超實(shí)用2通道EtherCAT運(yùn)動(dòng)控制卡助您實(shí)現(xiàn)更極速精準(zhǔn)的運(yùn)動(dòng)控制!
    的頭像 發(fā)表于 08-01 11:52 ?885次閱讀
    高速高精<b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>控制</b>!<b class='flag-5'>PCIe</b>超<b class='flag-5'>實(shí)時(shí)</b>2通道<b class='flag-5'>EtherCAT</b><b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>控制卡</b>上市!

    全球首創(chuàng)!PCIe實(shí)時(shí)6通道EtherCAT運(yùn)動(dòng)控制卡上市!

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

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

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

    EtherCAT運(yùn)動(dòng)控制卡應(yīng)用開(kāi)發(fā)教程之Java

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

    PCIe EtherCAT實(shí)時(shí)運(yùn)動(dòng)控制卡PCIE464點(diǎn)膠工藝中的同步/提前/延時(shí)開(kāi)關(guān)膠

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

    PCIe EtherCAT實(shí)時(shí)運(yùn)動(dòng)控制卡PCIE464的CAD導(dǎo)圖與刀向跟隨應(yīng)用

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

    機(jī)器視覺(jué)運(yùn)動(dòng)控制一體機(jī)在天地蓋同步跟隨貼合解決方案

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