XPLC006E功能簡(jiǎn)介
XPLC006E是正運(yùn)動(dòng)運(yùn)動(dòng)控制器推出的一款多軸經(jīng)濟(jì)型EtherCAT總線運(yùn)動(dòng)控制器,XPLC系列運(yùn)動(dòng)控制器可應(yīng)用于各種需要脫機(jī)或聯(lián)機(jī)運(yùn)行的場(chǎng)合。
?
XPLC006E自帶6個(gè)電機(jī)軸,最多12軸運(yùn)動(dòng)控制(含虛擬軸數(shù)),支持12軸直線插補(bǔ)、電子凸輪、電子齒輪、同步跟隨、虛擬軸設(shè)置等功能。
XPLC006E支持多任務(wù)同時(shí)運(yùn)行,同時(shí)可以在PC上直接仿真運(yùn)行,編程方式多種可選,支持ZDevelop軟件的Basic/PLC梯形圖/HMI組態(tài)和常用上位機(jī)軟件編程。
XPLC006E只支持EtherCAT總線軸,不支持脈沖軸和編碼器軸。采用EtherCAT總線與驅(qū)動(dòng)器通訊,1ms的刷新周期。
XPLC006E支持PLC、Basic、HMI組態(tài)三種編程方式。PC上位機(jī)API編程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
?
→此款產(chǎn)品有XPLC004E、XPLC006E、XPLC008E三個(gè)不同軸數(shù)的型號(hào)可選。
?
XPLC864E功能簡(jiǎn)介
XPLC864E在XPLC006E的功能基礎(chǔ)上做了升級(jí)(即上節(jié)介紹的XPLC006E的功能都支持),部分資源空間優(yōu)于XPLC006E,使用方法基本一致,不同之處在于XPLC864E,硬件支持32點(diǎn)輸入、32點(diǎn)輸出、2個(gè)ADC、2個(gè)DAC,支持脈沖軸和總線軸混合使用,總實(shí)軸軸數(shù)為8,除了帶EtherCAT接口之外,輸出口硬件上可配置為8個(gè)軸的脈沖方向信號(hào)輸出,另帶兩路編碼器輸入,可由輸入口配置
XPLC864E支持PLC、Basic、HMI組態(tài)三種編程方式。PC上位機(jī)API編程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
?
?
XPLC系列經(jīng)濟(jì)型EtherCAT總線運(yùn)動(dòng)控制器支持多種編程方式,支持使用正運(yùn)動(dòng)技術(shù)自主研發(fā)的ZDevelop開(kāi)發(fā)環(huán)境的Basic語(yǔ)言和PLC梯形圖,上一節(jié)講解了控制器的數(shù)據(jù)存儲(chǔ),本節(jié)內(nèi)容主要講解控制器的運(yùn)動(dòng)緩存。
?
一、運(yùn)動(dòng)緩沖概念
?
在運(yùn)行運(yùn)動(dòng)指令時(shí),為了防止程序堵塞,控制器提供了一個(gè)緩沖區(qū)來(lái)保存進(jìn)入運(yùn)動(dòng)緩沖的運(yùn)動(dòng)緩沖隊(duì)列,把這個(gè)功能叫做運(yùn)動(dòng)緩沖,這樣程序就能正常向下掃描,不會(huì)堵塞。
ZMotion運(yùn)動(dòng)控制器具有多級(jí)的運(yùn)動(dòng)緩沖,如下圖。當(dāng)運(yùn)動(dòng)緩沖開(kāi)啟的時(shí)候,程序掃描識(shí)別到程序任務(wù)的第一條運(yùn)動(dòng)指令時(shí),將運(yùn)動(dòng)指令分配到指定軸的運(yùn)動(dòng)緩沖區(qū),電機(jī)開(kāi)始運(yùn)動(dòng),此時(shí)程序會(huì)繼續(xù)向下掃描。掃描到第二條運(yùn)動(dòng)指令時(shí),再往運(yùn)動(dòng)緩沖區(qū)中存,且在不斷掃描存入運(yùn)動(dòng)指令的同時(shí),從運(yùn)動(dòng)緩沖區(qū)中依次取出運(yùn)動(dòng)指令執(zhí)行。
MTYPE,NTYPE分別是當(dāng)前運(yùn)行的運(yùn)動(dòng)指令和第一個(gè)緩沖運(yùn)動(dòng)指令。任意一段程序的運(yùn)動(dòng)指令都可以進(jìn)入任意軸的運(yùn)動(dòng)緩沖區(qū),由軸號(hào)指定。每個(gè)軸的運(yùn)動(dòng)緩沖區(qū)都是獨(dú)立的,互不干擾。
?
二、運(yùn)動(dòng)緩沖區(qū)緩沖原理
?
程序掃描過(guò)程中,將掃描到的運(yùn)動(dòng)指令存入對(duì)應(yīng)軸的運(yùn)動(dòng)緩沖區(qū),再?gòu)倪\(yùn)動(dòng)緩沖區(qū)中按先進(jìn)先出的順序,依此取出運(yùn)動(dòng)指令執(zhí)行。能進(jìn)入運(yùn)動(dòng)緩沖區(qū)的指令除了運(yùn)動(dòng)指令之外,還包括一系列運(yùn)動(dòng)緩沖中輸出指令。
插補(bǔ)運(yùn)動(dòng)緩沖在主軸的運(yùn)動(dòng)緩沖區(qū)。
緩沖多條運(yùn)動(dòng)指令時(shí),為了判斷當(dāng)前運(yùn)動(dòng)執(zhí)行到哪一條,提供MOVE_MARK運(yùn)動(dòng)標(biāo)號(hào)和MOVE_CURMARK當(dāng)前運(yùn)動(dòng)標(biāo)號(hào)指令查詢。MOVE_MARK運(yùn)動(dòng)標(biāo)號(hào)每掃描一條運(yùn)動(dòng)指令+1;MOVE_CURMARK指令為當(dāng)前運(yùn)動(dòng)的標(biāo)號(hào),提示當(dāng)前運(yùn)動(dòng)到第幾條運(yùn)動(dòng)指令,所有運(yùn)動(dòng)完成后為-1。
當(dāng)前運(yùn)動(dòng)完成后會(huì)自動(dòng)執(zhí)行運(yùn)動(dòng)緩沖區(qū)內(nèi)的下一條運(yùn)動(dòng)。運(yùn)動(dòng)指令全部執(zhí)行完后,運(yùn)動(dòng)緩沖區(qū)為空,或者使用CANCEL/RAPIDSTOP指令清空運(yùn)動(dòng)緩沖區(qū)。
如下圖,若程序中有多條運(yùn)動(dòng)指令,依據(jù)軸號(hào)的指示,按從上到下的順序依次掃描進(jìn)運(yùn)動(dòng)緩沖區(qū),按先進(jìn)先出的順序依次執(zhí)行,例如軸0,第一條執(zhí)行MOVE(100)直線運(yùn)動(dòng)指令,可使用MTYPE指令查詢運(yùn)動(dòng)指令的類型,MOVE(100)執(zhí)行完成退出緩沖區(qū),釋放緩沖空間,接著執(zhí)行下一條MOVE(150,200)直線插補(bǔ)指令,以此類推。
?
SP運(yùn)動(dòng)指令會(huì)寫(xiě)入運(yùn)動(dòng)緩存區(qū),使用SP運(yùn)動(dòng)指令時(shí)(MOVESP、MOVECIRCSP等直接在運(yùn)動(dòng)指令后方加上SP),SP指令的速度按SP速度參數(shù)運(yùn)動(dòng),而不是SPEED速度,SP速度包含F(xiàn)ORCE_SPEED強(qiáng)制速度、ENDMOVE_SPEED結(jié)束速度和STRATMOVE_SPEED開(kāi)始速度,設(shè)置的SP速度參數(shù)會(huì)在運(yùn)動(dòng)緩存區(qū)中生效。
SP指令與非SP指令的運(yùn)行效果如下圖所示,MOVE(100)的速度是SPEED=100,MOVESP(100)的速度是FFORCE_SPEED=150。
?
三、運(yùn)動(dòng)緩沖區(qū)查詢
?
例如ZMC4系列及以上運(yùn)動(dòng)控制器每個(gè)軸可支持多達(dá)4096段運(yùn)動(dòng)緩沖(不同型號(hào)的控制器緩沖個(gè)數(shù)有區(qū)別,具體情況參見(jiàn)控制器硬件手冊(cè)說(shuō)明或使用“?*max”打印查看max_movebuff參數(shù)),可以手動(dòng)設(shè)置LIMIT_BUFFERED運(yùn)動(dòng)緩沖限制。
?
每個(gè)軸的運(yùn)動(dòng)緩沖都是獨(dú)立的,互不干擾,且軸的緩沖區(qū)大小相同,通過(guò)指令REMAIN_BUFFER(MTYPE) AXIS(n)查看某個(gè)軸的剩余可用緩沖區(qū)的個(gè)數(shù)。
不同的運(yùn)動(dòng)指令占用的緩沖空間是不同的,越復(fù)雜的運(yùn)動(dòng)占用的運(yùn)動(dòng)緩沖空間越多。例如:ZMC432控制器,運(yùn)動(dòng)緩沖區(qū)大小為4096,緩沖區(qū)一次性可緩沖的MOVE直線插補(bǔ)指令和MOVECIRC圓弧插補(bǔ)指令個(gè)數(shù)是不同的。
?
LOADED指令用于判斷軸的運(yùn)動(dòng)緩沖區(qū)是否為空,只讀參數(shù),返回值0表示運(yùn)動(dòng)緩沖區(qū)還有指令,返回值為-1表示運(yùn)動(dòng)緩沖區(qū)空,一般用法為WAIT LOADED。
?
四、運(yùn)動(dòng)緩沖區(qū)堵塞
?
由于每個(gè)軸的運(yùn)動(dòng)緩沖空間是有限的,當(dāng)掃描太多運(yùn)動(dòng)指令放入運(yùn)動(dòng)緩沖區(qū)時(shí),多級(jí)運(yùn)動(dòng)緩沖區(qū)全部被塞滿,如果程序繼續(xù)掃描到更多的運(yùn)動(dòng)指令,程序也會(huì)被堵塞,直到運(yùn)動(dòng)指令依次完成并退出,運(yùn)動(dòng)緩沖區(qū)有了空位,運(yùn)動(dòng)指令才會(huì)繼續(xù)進(jìn)入運(yùn)動(dòng)緩沖區(qū)。
例:以ZDevelopV3.10版本的仿真器為例,默認(rèn)為4096個(gè)直線插補(bǔ)的運(yùn)動(dòng)緩沖,一個(gè)圓弧插補(bǔ)/螺旋線插補(bǔ)/樣條插補(bǔ)等插補(bǔ)運(yùn)動(dòng)會(huì)占用多個(gè)直線插補(bǔ)的運(yùn)動(dòng)緩沖。
下圖例程中顯示該控制器的運(yùn)動(dòng)緩沖區(qū)最多能存459條圓弧插補(bǔ)指令,下載程序后后打印i的值為458,表示當(dāng)前FOR循環(huán)并未執(zhí)行完,程序堵塞了,下圖為直線插補(bǔ)指令過(guò)多導(dǎo)致堵塞的效果。
?
?
下圖表示當(dāng)從運(yùn)動(dòng)緩沖區(qū)取出部分圓弧運(yùn)動(dòng)指令執(zhí)行之后,緩沖區(qū)有了空間,F(xiàn)OR循環(huán)繼續(xù)執(zhí)行,并存入運(yùn)動(dòng)指令到運(yùn)動(dòng)緩沖區(qū)。指令執(zhí)行退出運(yùn)動(dòng)緩沖區(qū)后,只要運(yùn)動(dòng)緩沖區(qū)的空間夠,新的運(yùn)動(dòng)指令再進(jìn)運(yùn)動(dòng)緩沖區(qū)。
?
五、運(yùn)動(dòng)緩沖中輸出
?
運(yùn)動(dòng)緩沖中輸出指令能進(jìn)入運(yùn)動(dòng)緩沖區(qū),可在運(yùn)動(dòng)緩沖中開(kāi)啟OP口、延時(shí)、輸出參數(shù),輸出PWM、開(kāi)啟任務(wù)等,詳細(xì)指令說(shuō)明參見(jiàn)Basic編程手冊(cè)第六章。
?
1.普通輸出與運(yùn)動(dòng)緩沖中輸出的區(qū)別。
(1)普通輸出指令程序掃描到該行指令便執(zhí)行輸出。
(2)運(yùn)動(dòng)緩沖中輸出指令在程序掃描之后,將其存入運(yùn)動(dòng)緩沖區(qū),運(yùn)動(dòng)緩沖區(qū)按先進(jìn)先出的順序依此取出指令執(zhí)行,直到取出該輸出指令時(shí)才會(huì)執(zhí)行輸出。
?
2.示例:對(duì)比OP和MOVE_OP的輸出效果。
RAPIDSTOP(2)
WAIT IDLE(0)
BASE(0) '選擇軸0
DPOS=0
UNITS=1000 '脈沖當(dāng)量
ATYPE=1 '脈沖軸類型
SPEED=100 '速度
ACCEL=1000 '加速度
DECEL=1000 '減速度
SRAMP=100 'S曲線
TRIGGER '觸發(fā)示波器采樣
OP(0,3,$0) '關(guān)閉輸出口0-3
DELAY(100) '延時(shí)
MOVE(100)
MOVE_OP(1,ON) '運(yùn)動(dòng)緩沖中輸出
OP(0,ON) '普通輸出
3.例子運(yùn)行效果如下圖。
延時(shí)1s之后,程序掃描到OP指令,輸出口0立即執(zhí)行輸出。
MOVE_OP把IO操作指令填入運(yùn)動(dòng)緩沖區(qū),所以在運(yùn)行完MOVE(100)之后,輸出口1才輸出。
?
4.控制器支持的運(yùn)動(dòng)緩沖中輸出指令一覽表如下。
?
了解了運(yùn)動(dòng)緩沖中輸出概念,我們可以實(shí)現(xiàn)下圖功能,隨著運(yùn)動(dòng)精準(zhǔn)控制OP口開(kāi)關(guān)光,使用MOVE_PWM指令調(diào)節(jié)光的能量。
?
5.實(shí)現(xiàn)代碼如下,此功能需要支持直線插補(bǔ)、圓弧插補(bǔ)和PWM功能的控制器,并采用連續(xù)插補(bǔ)功能提升效率。
RAPIDSTOP(2) WAIT IDLE(0) BASE(0,1) '選擇運(yùn)動(dòng)軸號(hào)
DPOS=0,0
UNITS=1000,1000
ATYPE=1,1
SPEED=200,200
ACCEL=1000,1000
DECEL=1000,1000 '減速度設(shè)為1000
FASTDEC=10000,10000 '快減減速度設(shè)為10000
MERGE=ON, ON '開(kāi)啟連續(xù)插補(bǔ)
SRAMP=100,100
MOVE_OP(0,OFF)
TRIGGER '開(kāi)啟運(yùn)動(dòng)波形采集
MOVEABS(100,0) '第一段直線,空走
MOVE_OP(0,ON) '開(kāi)關(guān)
MOVE_PWM(0, 1, 2000) 'PWM輸出占空比為1,頻率2K MOVEABS(400,0) '第二段直線
MOVE_PWM(0, 0.7, 2000) '調(diào)光,占空比為0.7 MOVECIRCABS(400,-200,400,-100,1) '第三段圓弧
MOVE_PWM(0, 0.5, 2000) '調(diào)光,占空比為0.5
MOVEABS(250,-200) '第四段直線
MOVE_OP(0,OFF) '關(guān)光
MOVE_DELAY(1000) '延時(shí)
MOVEABS(0,0) '第五段直線,空走回到原點(diǎn) END
?
6.示波器采樣運(yùn)動(dòng)波形如下圖。
?
(1)XY模式下的平面插補(bǔ)軌跡如下圖。
?
(2)XYZ模式下的合成軌跡如下圖:清晰看出輸出口的電平變化。
?
六、運(yùn)動(dòng)緩沖區(qū)清空
?
運(yùn)動(dòng)指令等執(zhí)行完便會(huì)退出運(yùn)動(dòng)緩沖區(qū),進(jìn)入運(yùn)動(dòng)緩沖區(qū)的命令全部執(zhí)行完成后,運(yùn)動(dòng)緩沖區(qū)為空。
用戶想要清空運(yùn)動(dòng)緩沖區(qū),使用CANCEL或RAPIDSTOP指令,兩個(gè)指令都有如下四種不同的模式,區(qū)別在于,CANCEL針對(duì)單個(gè)軸,RAPIDSTOP針對(duì)所有的軸,每個(gè)軸都要一個(gè)緩沖區(qū),互不干擾。
?
1.示例:清空運(yùn)動(dòng)緩沖,立即停止軸。
RAPIDSTOP(2)
WAIT IDLE(0)
BASE(0,1)
DPOS=0,0
UNITS=1000,1000
ATYPE=1,1
SPEED=200,200
ACCEL=1000,1000
DECEL=1000,1000 '減速度設(shè)為1000
FASTDEC=10000,10000 '快減減速度設(shè)為10000
SRAMP=100,100
TRIGGER
MOVE(1000,500) '插補(bǔ)運(yùn)動(dòng)
DELAY(1000) '延時(shí)1秒后取消運(yùn)動(dòng)
RAPIDSTOP(2) '清空運(yùn)動(dòng)緩沖區(qū),快速停止軸,減速度為10000
?
2.示波器采樣運(yùn)動(dòng)波形。
?
本次,正運(yùn)動(dòng)技術(shù)經(jīng)濟(jì)型EtherCAT運(yùn)動(dòng)控制器(七):運(yùn)動(dò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ù)銷售工程師。
審核編輯:湯梓紅
?
?
評(píng)論
查看更多