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