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

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

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

快速入門 | 篇十五:運動控制器運動緩沖簡介?

正運動技術(shù) ? 2021-10-18 18:04 ? 次閱讀

之前正運動技術(shù)與大家分享了,運動控制器的固件升級、ZBasic程序開發(fā)、ZPLC程序開發(fā)、與觸摸屏通訊和輸入/輸出IO的應(yīng)用、運動控制器數(shù)據(jù)與存儲的應(yīng)用、運動控制器ZCAN、EtherCAT總線的使用、示波器的應(yīng)用、多任務(wù)運行的特點、運動控制器中斷的應(yīng)用、U盤接口的使用、ZDevelop 編程軟件的使用以及運動控制器的基礎(chǔ)軸參數(shù)與基礎(chǔ)運動控制指令等。

今天,我們來講解一下正運動技術(shù)運動控制器運動緩沖。

視頻教程:http://www.zmotion.com.cn/video/yemian/tvideos22.html

以下是圖文詳解

01 材料準(zhǔn)備與接線參考

1.jpg

02運動緩沖

1.運動緩沖原理

在運行運動指令時,為了防止程序堵塞,控制器提供了一個緩沖區(qū)來保存進入運動緩沖的運動緩沖隊列,把這個功能叫做運動緩沖,這樣程序就能正常向下掃描,不會堵塞。

ZMotion運動控制器具有多級的運動緩沖,當(dāng)運動緩沖開啟的時候,程序在掃描識別到程序任務(wù)的第一條運動指令時,將運動指令分配到指定軸的運動緩沖區(qū),電機開始運動,此時程序繼續(xù)向下掃描到第二條運動指令時,再往運動緩沖區(qū)中存,在不斷掃描存入運動指令的同時,從運動緩沖區(qū)中依次取出運動指令執(zhí)行。

MTYPE,NTYPE分別是當(dāng)前運行的運動指令和第一個緩沖運動指令。

任意一段程序的運動指令都可以進入任意軸的運動緩沖區(qū),由軸號指定。

每個軸的運動緩沖區(qū)都是獨立的,互不干擾。

2.jpg

緩沖多條運動指令時,為了判斷當(dāng)前運動執(zhí)行到哪一條,提供MOVE_MARK運動標(biāo)號和MOVE_CURMARK當(dāng)前運動標(biāo)號指令。MOVE_MARK運動標(biāo)號每掃描一條運動指令+1;MOVE_CURMARK指令為當(dāng)前運動的標(biāo)號,提示當(dāng)前運動到第幾條運動指令,所有運動完成后為-1。

當(dāng)前運動完成后會自動執(zhí)行運動緩沖區(qū)內(nèi)的下一條運動。運動指令全部執(zhí)行完后,運動緩沖區(qū)為空,或者使用CANCEL/RAPIDSTOP指令清空運動緩沖區(qū)。

SP指令也屬于運動指令,使用SP運動指令(如MOVESP、MOVECIRCSP等直接在運動指令后方加上SP)時,SP速度FORCE_SPEED、ENDMOVE_SPEED和STRATMOVE_SPEED會隨SP運動指令寫入運動緩存區(qū)。

SP運動指令與運動指令的區(qū)別:

MOVE(100)的速度是SPEED=100,MOVESP(100)的速度是FORCE_SPEED=200。

3.jpg

2.運動緩沖區(qū)堵塞

每個軸的運動緩沖空間是有限的,當(dāng)掃描太多運動指令放入運動緩沖區(qū)時,多級運動緩沖區(qū)全部被塞滿,如果程序繼續(xù)掃描到更多的運動指令,程序也會被堵塞,直到運動指令依次完成并退出,運動緩沖區(qū)有了空位,運動指令才會繼續(xù)進入運動緩沖區(qū)。

例:以V3.10版本仿真器為例,默認為4096個運動緩沖,下圖例程中顯示該控制器的運動緩沖區(qū)最多能存459條圓弧插補指令,下載程序后后打印i的值為458,表示當(dāng)前FOR循環(huán)并未執(zhí)行完,程序堵塞了。

4.jpg

下圖中,當(dāng)從運動緩沖區(qū)取出部分運動指令執(zhí)行之后,緩沖區(qū)有了空間,F(xiàn)OR循環(huán)繼續(xù)執(zhí)行,并存入運動指令到運動緩沖區(qū)。指令執(zhí)行退出運動緩沖區(qū)后,只要運動緩沖區(qū)的空間夠,新的運動指令一條條往運動緩沖區(qū)中存。

5.jpg

每個軸的運動緩沖都是獨立的,互不干擾,且緩沖區(qū)大小相同,通過指令REMAIN_BUFFER(MTYPE) AXIS(n)查看某個軸的剩余可用緩沖區(qū)的個數(shù)。

ZMC4系列運動控制器每個軸可支持多達4096段運動緩沖(不同型號的控制器緩沖個數(shù)有區(qū)別,具體情況參見控制器硬件手冊說明或使用?*max打印查看),可以手動設(shè)置LIMIT_BUFFERED運動緩沖限制。

不同的運動指令占用的緩沖空間是不同的,越復(fù)雜的運動占用的運動緩沖空間越多。

例如:

ZMC432控制器,運動緩沖區(qū)大小為4096,緩沖區(qū)一次性可緩沖的MOVE直線插補指令和MOVECIRC圓弧插補指令個數(shù)是不同的。

插補運動緩沖在主軸的運動緩沖區(qū)。

6.jpg

3.運動緩沖例程

RAPIDSTOP(2)

WAIT IDLE(0)

WAIT IDLE(1)

BASE(0,1)

ATYPE=1,1

UNITS=100,100

SPEED=100,100

ACCEL=1000,1000

DECEL=1000,1000

DPOS=0,0

MERGE=OFF '關(guān)閉連續(xù)插補

TRIGGER

LIMIT_BUFFERED=3 '軸0/1運動緩沖區(qū)可緩沖運動指令個數(shù)設(shè)為3

MOVE(60,40 '進入MTYPE,Buffer0

MOVE(70,50) '進入NTYPE,Buffer1

MOVE(50,40) 'Buffer2

MOVE(60,50) '緩沖區(qū)滿,暫不進入

?"軸0當(dāng)前緩沖指令個數(shù)=" MOVES_BUFFERED(0) '結(jié)果2

?"軸0剩余緩沖區(qū)個數(shù)=" REMAIN_BUFFER(1) AXIS(0) '結(jié)果0

?"軸1剩余緩沖區(qū)個數(shù)=" REMAIN_BUFFER(1) AXIS(1) '結(jié)果3

END

將軸的運動緩沖區(qū)可緩沖運動指令個數(shù)限制為3,此時運動緩沖區(qū)最多能裝3條直線插補指令。

共有4個直線插補指令,MOVE(60,40)占用軸0的MTYPE,軸0還能緩沖2個運動指令,軸0剩余緩沖數(shù)為0,且還有1條直線指令因為主軸軸0的運動緩沖區(qū)已滿,還未進入運動緩沖區(qū)。

等到MOVE(60,40)運動完成,MOVE(60,50)才能進軸0的運動緩沖區(qū)。

7.jpg

插補運動緩沖在主軸軸0里,故軸1的運動緩沖區(qū)是沒有指令的,剩余緩沖大小為3。每條MOVE指令占用一個緩沖空間。

8.jpg

4.普通輸出與運動緩沖中輸出的區(qū)別

普通輸出指令程序掃描到該行指令便執(zhí)行輸出。

運動緩沖中輸出指令在程序掃描之后,將其存入運動緩沖區(qū),運動緩沖區(qū)按先進先出的順序依此取出指令執(zhí)行,直到取出該輸出指令時才會執(zhí)行輸出。

RAPIDSTOP(2)

WAIT IDLE(0)

BASE(0) '選擇軸0

DPOS=0

UNITS=100 '脈沖當(dāng)量

SPEED=100 '速度

ACCEL=1000 '加速度

DECEL=1000 '減速度

TRIGGER '觸發(fā)示波器采樣

OP(0,3,$0) '關(guān)閉輸出口0-3

DELAY(1000) '延時

MOVE(100)

MOVE_OP(1,ON) '運動緩沖中輸出

OP(0,ON) '普通輸出

例子運行效果:延時1s之后,程序掃描到OP指令,輸出口0立即執(zhí)行輸出。

MOVE_OP把IO操作指令填入運動緩沖區(qū),所以在運行完MOVE(100)之后,輸出口1才輸出。

9.jpg

03 運動緩沖相關(guān)指令

10.jpg

1.MOVE_OP -- 緩沖輸出

語法:MOVE_OP (輸出編號,輸出狀態(tài))

此指令隨其他運動指令一起進入運動緩沖區(qū),從運動緩沖區(qū)中取出執(zhí)行時才操作OP輸出,可以控制某個輸出口單獨輸出信號,也可以批量輸出,不會打斷插補運動的連續(xù)性。

BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=100

ACCEL=1000

DECEL=1000

MERGE=ON'開啟連續(xù)插補

TRIGGER '自動觸發(fā)示波器

OP(0,3,0) '關(guān)閉輸出口0-3

MOVE(100)

MOVE_OP (0,ON) '等待上條運動完成后,OUT0輸出信號

MOVE(100)

MOVE_OP (0,OFF) '等待上條運動完成后,OUT0關(guān)閉信號

MOVE_OP(1,3,5) '批量輸出,OUT1,3輸出信號,OUT2不輸出,5對應(yīng)二進制101

例子運行效果:第11-15行的運動指令依此存入運動緩沖區(qū),按先進先出的順序執(zhí)行,MOVE(100)運動完后,MOVE_OP操作OUT0輸出,繼續(xù)執(zhí)行第二個MOVE(100),然后MOVE_OP操作OUT0關(guān)閉,緊接著控制OUT1-3批量輸出。

11.jpg

2.MOVE_OP2 -- 緩沖輸出2

語法:MOVE_OP2(輸出編號,輸出狀態(tài),輸出多少ms后翻轉(zhuǎn))

BASE軸運動緩沖加入一個輸出口操作,指定時間后輸出狀態(tài)翻轉(zhuǎn)。

此指令隨其他運動指令一起進入運動緩沖區(qū),從運動緩沖區(qū)中取出執(zhí)行時才操作OP輸出,保持輸出一定時間后關(guān)閉輸出。

單個軸同一時間只支持一個脈沖輸出,第二個MOVE_OP2指令會自動關(guān)閉前面指令的脈沖。不會打斷插補運動的連續(xù)性。

RAPIDSTOP(2)

WAIT IDLE(0)

BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=200

ACCEL=1000

DECEL=1000

MERGE=ON '開啟連續(xù)插補

OP(0,OFF) '關(guān)閉OUT0口

TRIGGER '自動觸發(fā)示波器

MOVE(500)

MOVE_OP2 (0,ON,1000) '等待上條運動完成,輸出口0保持輸出1s后關(guān)閉,輸出時不會阻礙下一條運動執(zhí)行

MOVE(-300)

12.jpg

3.MOVE_DELAY -- 緩沖延時

語法:MOVE_DELAY(延時ms數(shù))

BASE軸運動緩沖加入一個延時。

這個指令緩沖執(zhí)行時不做任何運動,只延時指定時間。

延時使前面的運動指令結(jié)束時速度會自動降為0,會打斷插補運動的連續(xù)性。?

RAPIDSTOP(2)

WAIT IDLE(0)

BASE(0)

ATYPE=1

UNITS=100

SPEED=100

ACCEL=1000

DECEL=1000

DPOS=0

MERGE=ON '開啟連續(xù)插補

TRIGGER '自動觸發(fā)示波器

MOVE(100)

MOVE_DELAY(500) '兩個MOVE中間等待500ms

MOVE(200)

13.jpg

4.MOVE_AOUT -- 緩沖輸出模擬

語法:MOVE_AOUT(DA編號,輸出值)

BASE軸運動緩沖加入一個AOUT指令。

這個指令緩沖執(zhí)行時不做任何運動,只修改AOUT值,不會打斷插補運動的連續(xù)性。

// 例子

RAPIDSTOP(2)

WAIT IDLE(0)

BASE(0)

ATYPE=1

UNITS=100

SPEED=100

ACCEL=1000

DECEL=1000

DPOS=0

MERGE=ON '開啟連續(xù)插補

AOUT(0)=0 'DA0通道賦值0

TRIGGER '自動觸發(fā)示波器

MOVE(200)

MOVE_AOUT(0, 30.5) '第一個運動完成后,將DA0通道賦值30.5

MOVE(200)

14.jpg

5.MOVE_PAUSE——運動暫停

暫停軸運動,只有在單軸或多軸插補運動時有效,多軸聯(lián)動時一起暫停。

可以通過AXISSTATUS來查詢是否有暫停,暫停中軸的IDLE狀態(tài)為0。

當(dāng)軸已經(jīng)暫?;虿辉谶\動中時,調(diào)用這個指令會有警告輸出,但不影響程序運行。某些運動不支持暫停,如VMOVE、同步運動指令等。

語法:MOVE_PAUSE(模式值)

15.jpg

模式值0例子:MOVE_PAUSE(3)的執(zhí)行效果與MOVE_PAUSE(0)類似。

RAPIDSTOP(2)

WAIT IDLE(0)

BASE(0)

ATYPE=1

UNITS=100

SPEED=100

ACCEL=1000

DECEL=1000

DPOS=0

MERGE=ON '開啟連續(xù)插補

MOVE(100) '當(dāng)前運動

MOVE(200)

MOVE_PAUSE(0) '暫停當(dāng)前運動

DELAY(1000)

?DPOS(0) '打印結(jié)果:0,此時當(dāng)前運動只運行了極短時間,掃描到MOVE_PAUSE時直接暫停

模式值1例子:模式2在運動標(biāo)號MOVE_MARK自動編號時效果與模式1類似,因為每條運動的標(biāo)號都是不同的,運動完一條運動指令后,運動標(biāo)號發(fā)生改變,MOVE_MARK(2)生效,立即暫停。

模式2在手動設(shè)置MOVE_MARK時才與模式1不同。

RAPIDSTOP(2)

WAIT IDLE(0)

BASE(0)

ATYPE=1

UNITS=100

SPEED=100

ACCEL=1000

DECEL=1000

DPOS=0

MERGE=ON '開啟連續(xù)插補

TRIGGER '自動觸發(fā)示波器

MOVE(100) '當(dāng)前運動

MOVE(200)

MOVE_PAUSE(1) '當(dāng)前運動運行完暫停

DELAY(2000)

?DPOS(0) '打印結(jié)果:100

16.jpg

MOVE_PAUSE(1)或MOVE_PAUSE(2)

模式值2例子:手動設(shè)置MOVE_MARK,通過MOVE_PAUSE(2)指令可以在MARK不同的邊界處暫停。

BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=100

ACCEL=1000

DECEL=1000

MERGE=ON

TRIGGER

MOVE_MARK =1 '設(shè)置為標(biāo)號1

MOVE(100)

MOVE_MARK =1 '設(shè)置為標(biāo)號1

MOVE(150)

MOVE_MARK =2 '設(shè)置為標(biāo)號2

MOVE(200)

MOVE_PAUSE (2) '標(biāo)號不一樣時暫停

DELAY(5000)

?DPOS(0) '打印結(jié)果:250

17.jpg

MOVE_PAUSE(2)


6.MOVE_RESUME -- 運動恢復(fù)

當(dāng)BASE軸暫停暫停時,從暫停處繼續(xù)運動。

可以通過AXISSTATUS來查詢是否有暫停,AXISSTATUS顯示800000h,表示軸進入了暫停狀態(tài)。

BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=100

ACCEL=1000

DECEL=1000

MERGE=ON

TRIGGER

MOVE(100) '當(dāng)前運動

MOVE(200) '緩沖運動

MOVE_PAUSE(1) '當(dāng)前運動完成后暫停

DELAY(2000) '等待當(dāng)前運動完成

?DPOS(0) '打印結(jié)果:100

MOVE_RESUME '繼續(xù)運行

WAIT IDLE(0)

?DPOS(0) '打印結(jié)果:300

18.jpg

7.MOVE_TABLE -- 緩沖輸出TABLE

BASE軸運動緩沖加入一個TABLE。

指令緩沖執(zhí)行時不做任何運動,只修改TABLE,不會打斷插補運動的連續(xù)性。

語法:MOVE_TABLE(TABLE編號, 要修改的值)

BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=100

ACCEL=1000

DECEL=1000

MERGE=ON

TABLE(0)=0 '初始值設(shè)為0

TRIGGER '自動觸發(fā)示波器

MOVE(100)

MOVE_TABLE(0, 60) '等待運動完成后,TABLE(0)賦值60

MOVE(160)

WAIT IDLE(0)

?TABLE(0) '打印修改后TABLE(0)的值,打印結(jié)果,60

19.jpg

軸0運動100后,TABLE(0)賦值60


8.MOVE_PARA -- 緩沖參數(shù)

BASE軸運動緩沖修改參數(shù)。

這個指令緩沖執(zhí)行時不做任何運動,只修改參數(shù),不會打斷插補運動的連續(xù)性。

語法:MOVE_PARA(參數(shù)名,參數(shù)編號,參數(shù)值)

參數(shù)名必須是?*set里面的非只讀參數(shù)。

RAPIDSTOP(2)

WAIT IDLE(0)

BASE(0)

ATYPE=1

UNITS=100

SPEED=100 '初始速度

ACCEL=1000

DECEL=1000

DPOS=0

MERGE=ON '開啟連續(xù)插補

TRIGGER '自動觸發(fā)示波器

MOVE(200) '速度100

MOVE_PARA(SPEED,0,200) '修改軸0的SPEED參數(shù)值為200

MOVE(200) '速度200

WAIT IDLE(0) '等待軸0停止

?SPEED '打印結(jié)果:200

20.jpg

9.MOVE_PWM -- 緩沖PWM

BASE軸運動緩沖操作PWM。

指令緩沖執(zhí)行時不做任何運動,只操作PWM。

PWM只能通過設(shè)置占空比為0來關(guān)閉,不能通過設(shè)置PWM頻率為0實現(xiàn),PWM頻率一定要在PWM開啟之前調(diào)整。

語法:MOVE_PWM(編號,占空比[,頻率])

編號為支持PWM功能的輸出口編號,查看硬件手冊確認。

占空比指有效電平占整個周期的比例;范圍0-1,設(shè)置0時關(guān)閉pwm;一個周期中先輸出有效電平,再輸出無效電平。

頻率缺省為1KHz,硬件最大為1MHz,軟件最大為2KHz。

RAPIDSTOP(2)

WAIT IDLE(0)

MOVE_PWM(0, 0, 1000) '關(guān)閉PWM

BASE(0)

ATYPE=1

UNITS=100

SPEED=100 '初始速度

ACCEL=1000

DECEL=1000

DPOS=0

TICKS = 10000

MOVE(10)

MOVE_PWM(0, 0.111, 2000) '軸0運行到10時,操作PWM0輸出

MOVE_DELAY(100)

MOVE_PWM(0, 0.555, 3000) '延時100ms,修改PWM0輸出

MOVE(20)

MOVE_PWM(0, 0, 1000) '關(guān)閉PWM

WHILE NOT IDLE(0) 'IDLE(0)=-1后退出while循環(huán)

? -TICKS,PWM_DUTY(0),PWM_FREQ(0)

DELAY(30)

WEND

例子運行效果:初始化關(guān)閉PWM輸出,MOVE(10)運動完后,操作PWM0輸出,保持100ms之后,修改PWM0輸出的占空比和頻率,再運行MOVE(20)后關(guān)閉PWM輸出。WHILE循環(huán)在軸0運行時,每隔30ms打印一次PWM輸出的占空比和頻率,在軸0停止后,退出WHILE循環(huán),不在打印。

21.jpg

10.MOVE_SYNMOVE -- 緩沖觸發(fā)其他軸

BASE軸運動緩沖觸發(fā)其他軸運動,當(dāng)前軸等待,等待其他軸運動完成,當(dāng)前軸才繼續(xù)運動。

語法:MOVE_SYNMOVE(axisnum,dis[,ifsp])

axisnum:需要同步運動的軸號

dis:相對運動距離

ifsp:是否使用SP運動, 缺省值0不使用,設(shè)為其他值使用

RAPIDSTOP(2)

WAIT IDLE(0)

WAIT IDLE(1)

BASE(0,1)

DPOS=0,0

ATYPE=1,1

UNITS=100,100

SPEED=100,100

ACCEL=1000,1000

DECEL=1000,1000

MERGE=ON,ON

TRIGGER

MOVE(100)

MOVE_SYNMOVE(1,120,0) '軸0運行到100時,軸1開始運動120

MOVE(100) '待軸同步完成,軸0再繼續(xù)運動

22.jpg

使用SP運動后的效果如下,將最后一位參數(shù)設(shè)置非0值 ,此時觸發(fā)軸1的運動速度為FORCE_SPEED=200。

23.jpg

11.MOVE_ASYNMOVE -- 緩沖觸發(fā)其他軸2

BASE軸運動緩沖觸發(fā)其他軸運動,當(dāng)前軸不等待,仍繼續(xù)運動。

語法:MOVE_ASYNMOVE(axisnum,dis[,ifsp])

axisnum:需要同步運動的軸號

dis:相對運動距離

ifsp:是否使用SP運動, 缺省值0不使用,設(shè)為其他值使用

RAPIDSTOP(2)

WAIT IDLE(0)

WAIT IDLE(1)

BASE(0,1)

DPOS=0,0

ATYPE=1,1

UNITS=100,100

SPEED=100,100

ACCEL=1000,1000

DECEL=1000,1000

MERGE=ON,ON

TRIGGER

MOVE(100)

MOVE_ASYNMOVE(1,120,0) '軸0運行到100時,軸1開始運動120

MOVE(100) '待軸同步完成,軸0再繼續(xù)運動

24.jpg

12.MOVE_TASK -- 緩沖開啟任務(wù)

BASE軸運動緩沖加入啟動TASK。

這個指令緩沖執(zhí)行時不做任何運動,只啟動任務(wù),不會打斷插補運動的連續(xù)性。

語法:MOVE_TASK(任務(wù)號, 函數(shù)名)

從運動緩沖全區(qū)取出MOVE_TASK指令執(zhí)行時,將task_move標(biāo)記的程序作為任務(wù)1開啟,在任務(wù)窗口可以看到任務(wù)1已啟動。

25.jpg

RAPIDSTOP(2)

WAIT IDLE(0)

BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=100

ACCEL=1000

DECEL=1000

MERGE=ON

TRIGGER

MOVE(100)

MOVE_TASK(1,task_move) '第一個運動完成后,將task_move作為任務(wù)1啟動

MOVE(100)

END

'任務(wù)1

task_move:

PRINT "TASK_MOVE"

END

26.jpg

13.MOVE_WAIT -- 緩沖等待

BASE軸運動緩沖加入一個條件判斷。

指令緩沖執(zhí)行時不做任何運動,只等待指定的條件滿足,前面的運動指令結(jié)束時速度會自動降為0。

語法:MOVE_WAIT(參數(shù)名, 參數(shù)編號, 比較條件, 比較值)

參數(shù)可以為:DPOS,MPOS,IN,AIN,VPSPEED,MSPEED,MODBUS_REG,MODBUS_IEEE,MODBUS_BIT,VECTOR_BUFFERED,REMAIN

比較條件:1 參數(shù)值≥比較值;-1 參數(shù)值≤比較值;0 不建議使用

RAPIDSTOP(2)

WAIT IDLE(0)

BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=100

ACCEL=1000

DECEL=1000

TRIGGER

MOVE(100)

MOVE_WAIT(IN, 0, 1, 1) '等待IN(0)有信號,才執(zhí)行下一條運動

MOVE(100)

27.jpg

14.MOVE_CANCEL--緩沖停止

把CANCEL指令寫入運動緩沖。

語法:MOVE_CANCEL(軸號,模式值)

0:取消當(dāng)前運動,繼續(xù)取緩沖區(qū)指令指令

1:取消緩沖區(qū)的運動,當(dāng)前運動仍然要執(zhí)行完

2:取消當(dāng)前運動和緩沖區(qū)的運動,軸立即停止

3:立即中斷脈沖的發(fā)送

RAPIDSTOP(2)

WAIT IDLE(0)

WAIT IDLE(1)

BASE(0,1)

DPOS=0,0

ATYPE=1,1

UNITS=100,100

SPEED=100,100

ACCEL=1000,1000

DECEL=1000,1000

MERGE=ON,ON:

TRIGGER

MOVE(50) AXIS(0) '軸0當(dāng)前運動

MOVE(80) AXIS(1) '軸1當(dāng)前運動

MOVE_CANCEL(1,2) AXIS(0) '軸0緩沖里面寫入停止軸1的指令

MOVE(60) AXIS(0) '軸0緩沖運動

MOVE(70) AXIS(1) '軸1緩沖運動,被取消

例子運行效果:軸0運動50后,MOVE_CANCEL(1,2) AXIS(0)指令生效,CANCEL(2)模式取消軸1的當(dāng)前運動和緩沖運動,軸1立刻停止,軸0繼續(xù)運動。

28.jpg

15.LOADED -- 緩沖空

用于判斷軸的運動緩沖區(qū)是否為空,只讀參數(shù),返回值0表示運動緩沖區(qū)還有指令,返回值為-1表示運動緩沖區(qū)空。

BASE(0)

ATYPE=1

UNITS=100

SPEED=100

ACCEL=1000

DECEL=1000

DPOS=0

MERGE=ON '開啟連續(xù)插補

OP(0,OFF)

TRIGGER

MOVE(100) '當(dāng)前運動

MOVE(50) '緩沖運動,此時緩沖區(qū)只有這一條運動

'當(dāng)本條運動執(zhí)行時,緩沖區(qū)就已經(jīng)清空

WAIT LOADED '運動緩沖空即可往下執(zhí)行

OP(0,ON) '打開OP0

29.jpg

WAIT LOADED 等待緩沖區(qū)空

30.jpg

WAIT IDLE 等待軸停止


16.MOVE_MARK -- 運動標(biāo)號

下一條要調(diào)用的運動指令的MARK標(biāo)號,這個標(biāo)號會和運動指令一起寫入運動緩沖。

每調(diào)用一條運動指令,MOVE_MARK會自動加一。

如果要強制指定MOVE_MARK,需要每次運動前都設(shè)定一次。

通過MOVE_PAUSE (2)指令可以在MARK不同的邊界處暫停。

BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=100

ACCEL=1000

DECEL=1000

MERGE=OFF '關(guān)閉連續(xù)插補

OP(0,OFF)

TRIGGER

MOVE_MARK=0 '初始值:0

MOVE(100) '運動指令1

MOVE_DELAY(1000) '運動指令2

MOVE(50) '運動指令3

MOVE_OP(0,ON) '運動指令4

MOVE(80) '運動指令5

PRINT MOVE_MARK '打印結(jié)果:5

31.jpg

17.MOVE_CURMARK -- 當(dāng)前運動標(biāo)號

返回當(dāng)前軸正在運動指令的MOVE_MARK標(biāo)號,編號默認從0開始,到運動指令總數(shù)減1。

在軸參數(shù)窗口可以監(jiān)控當(dāng)前程序掃描到的運動指令個數(shù),查看MOVE_MARK;和軸當(dāng)前運行到了第幾個運動指令,查看MOVE_CURMARK。

BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=100

ACCEL=1000

DECEL=1000

MERGE=ON

OP(1,OFF)

TRIGGER

MOVE_MARK =1

MOVE(50)

MOVE_MARK =2

MOVE(100)

MOVE_MARK =3

MOVE(150)

WAIT UNTIL MOVE_CURMARK = 2 '等待MOVE(100)開始執(zhí)行的時候,開輸出口1

OP(1,ON)

32.jpg

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

    關(guān)注

    2

    文章

    402

    瀏覽量

    24729
  • 運動控制
    +關(guān)注

    關(guān)注

    4

    文章

    581

    瀏覽量

    32872
  • 正運動技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    101

    瀏覽量

    408
收藏 人收藏

    評論

    相關(guān)推薦

    EtherCAT運動控制器配套用手持示教盒快速入門 #正運動技術(shù) #運動控制器 #示教盒 #正運動

    運動控制器
    正運動技術(shù)
    發(fā)布于 :2024年11月05日 14:08:22

    EtherCAT運動控制器上位機之Python+Qt(一):鏈接與單軸運動# 正運動技術(shù)# 運動控制器

    運動控制器
    正運動技術(shù)
    發(fā)布于 :2024年07月31日 14:35:13

    什么是網(wǎng)絡(luò)運動控制器?運動控制器控制伺服電機的方式有哪些?

    運動控制器就是控制電動機的運行方式的專用控制器:比如電動機在由行程開關(guān)控制交流接觸而實現(xiàn)電動機
    的頭像 發(fā)表于 07-10 08:40 ?349次閱讀

    運動控制器的種類和特點

    運動控制器是工業(yè)自動化領(lǐng)域中的關(guān)鍵組件,負責(zé)對機器的運動進行精確控制。隨著工業(yè)自動化技術(shù)的不斷發(fā)展,運動
    的頭像 發(fā)表于 06-13 09:27 ?756次閱讀

    運動控制器的代碼運行順序是什么

    運動控制器是一種用于控制機械運動的設(shè)備,它可以接收輸入信號并根據(jù)這些信號控制機械的運動。
    的頭像 發(fā)表于 06-13 09:25 ?482次閱讀

    運動控制器的主要功能是什么?

    精確的控制,實現(xiàn)復(fù)雜的運動路徑。這包括直線運動、圓弧運動、螺旋運動等多種運動形式。 速度
    的頭像 發(fā)表于 06-13 09:21 ?798次閱讀

    Windows實時運動控制軟核:LOCAL高速接口測試之Labview# 正運動技術(shù)# 運動控制器# 運動控制

    運動控制器
    正運動技術(shù)
    發(fā)布于 :2024年04月16日 14:40:48