今天,正運動小助手給大家分享一下運動控制器位置鎖存功能的應用,以ZMC408CE運動控制器為例,介紹多種鎖存模式的用法,用戶可根據(jù)自身需求靈活選擇。
01 鎖存功能
鎖存功能的作用就是當外部io信號觸發(fā)時,立即響應,鎖定當前的電機/編碼器的位置,通常用來鎖定流水線上碰到光纖傳感器時的產(chǎn)品位置、鎖定包裝材料上色標的位置等。
一、鎖存功能的特點:
1.支持編碼器軸、總線軸、脈沖軸和虛擬軸鎖存(不同型號的控制器支持鎖存的軸類型不同);
2.支持單次鎖存和高速連續(xù)鎖存模式;
3.支持4通道同時鎖存,分別為R0、R1、R2、R3四個鎖存通道,最多支持8個鎖存口同時鎖存,鎖存響應速度快;
4.帶編碼器反饋時鎖存MPOS的值,沒有帶編碼器反饋時鎖存DPOS的值。
不同型號的控制器支持的鎖存通道數(shù)不同,是否支持鎖存功能與鎖存對應的輸入口參見硬件手冊。
本文例子基于ZMC408CE控制器測試,此型號支持4個鎖存通道,硬件接口為IN0-IN3。
通訊接口包含RS232、RS485、EtherNET以太網(wǎng)、CAN總線、EtherCAT總線和U盤接口,板載8路差分脈沖輸出接口(包含編碼器輸入),1個專用手輪接口,還提供了AD/DA模擬量接口。
ZMC408CE支持EtherCAT總線連接,支持最快500μs的刷新周期,支持最多達32軸運動控制(8脈沖軸+EtherCAT軸/編碼器軸/虛擬軸),支持直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨、虛擬軸設置等;采用優(yōu)化的網(wǎng)絡通訊協(xié)議可以實現(xiàn)實時的運動控制。
ZMC408CE還支持8通道PWM輸出,支持硬件比較輸出、硬件定時器、運動中精準輸出等。
二、實現(xiàn)鎖存的步驟
1.鎖存功能使用方法
(1)確定當前硬件條件是否滿足鎖存需求,需要確定鎖存位置的軸,IO信號接入支持鎖存的輸入口IN;
(2)設置鎖存輸入映射口REG_INPUT,作用是將鎖存的通道R0/R1/R2/R3對應到物理輸入口IN,需要輸入口支持鎖存功能;
(3)設置鎖存模式REGIST,需根據(jù)鎖存的軸類型選擇;
(4)等待鎖存觸發(fā)MARK / MARKB / MARKC / MARKD,鎖存觸發(fā)了變?yōu)檎妫?/p>
(5)鎖存完成打印鎖存位置信息REG_POS / REG_POSB / REG_POSC / REG_POSD;
(6)可讀取鎖存位置起始坐標和結束坐標,鎖存位置可被其他指令調(diào)用。
2.鎖存相關指令
鎖存相關指令一覽表:
指 令 | 說 明 | 用 法 |
REGIST | 設置鎖存模式 | REGIST(模式值) |
REG_INPUTS | 鎖存通道映射到輸入口 | REG_INPUTS=$輸入口編號 |
MARK | 判斷鎖存是否觸發(fā) | WAIT UNTIL MARK |
MARKB | 判斷第二個鎖存是否觸發(fā) | WAIT UNTIL MARKB |
MARKC | 判斷第三個鎖存是否觸發(fā) | WAIT UNTIL MARKC |
MARKD | 判斷第四個鎖存是否觸發(fā) | WAIT UNTIL MARKD |
REG_POS | 保存鎖存的測量反饋位置 | 讀取/打印REG_POS |
REG_POSB | 返回鎖存2的測量反饋位置 | 讀取/打印REG_POSB |
REG_POSC | 返回鎖存3的測量反饋位置 | 讀取/打印REG_POSC |
REG_POSD | 返回鎖存4的測量反饋位置 | 讀取/打印REG_POSD |
OPEN_WIN | 鎖存觸發(fā)的開始坐標范圍點 | OPEN_WIN=POS |
CLOSE_WIN | 鎖存觸發(fā)的結束坐標范圍點 | CLOSE_WIN=POS |
REG_INPUTS映射鎖存輸入、REGIST設置鎖存的模式、MARK / MARKB / MARKC / MARKD判讀鎖存是否觸發(fā)、REG_POS / REG_POSB / REG_POSC / REG_POSD成功鎖存之后位置存儲。
當鎖存產(chǎn)生時,對應鎖存通道的MARK / MARKB / MARKC / MARKD會被設置為ON,同時鎖存到的位置會被存儲在參數(shù)REG_POS / REG_POSB / REG_POSC / REG_POSD內(nèi)。
三、REG_INPUTS映射說明
REG_INPUTS映射規(guī)則如下,REGIST鎖存模式的設置需配合REG_INPUTS而設置。
例如:
REG_INPUTS = $3210,則表示R3,R2,R1,R0分別對應輸入口3,2,1,0
REG_INPUTS = $1023,則表示R3,R2,R1,R0分別對應輸入口1,0,2,3
REG_INPUTS = $1000,則表示R3,R2,R1,R0分別對應輸入口1,0,0,0之所以這樣設置是因為REGIST模式匹配R0、R1、R2、R3信號雖然不是物理的IO通道,卻能帶來最大的靈活性。輸出信號R0實際可以對應設備上的IN(0)...IN(7)中的任意一個(可選的輸入通道必須是硬件手冊指定的鎖存通道),或者R0和R3都對應同一個輸入口。
四、REG_POS鎖存位置說明
使用的本地IO,可以通過REG_INPUTS來鎖存通道的映射,不同的鎖存信號通道鎖存的數(shù)據(jù)存儲的位置不同,如下表,詳情參見REGIST指令說明。
R信號 | 鎖存狀態(tài) | 鎖存數(shù)值 |
R0 | Mark | Reg_Pos |
R1 | MarkB | Reg_PosB |
R2 | MarkC | Reg_PosC |
R3 | MarkD | Reg_PosD |
Z | 不定 | 不定 |
02 REGIST鎖存模式
REGIST設置鎖存模式,根據(jù)要鎖存的軸類型選擇合適的鎖存模式,鎖存模式參見下文,有單次鎖存和連續(xù)鎖存兩種。
不同的鎖存方式,鎖存信號的觸發(fā)標志不同,鎖存位置數(shù)據(jù)存儲的位置也不同。
不同軸類型支持的鎖存通道:
(1)編碼器軸、帶反饋的脈沖軸類型一般采用R0,R1,Z脈沖這三種鎖存;
(2)無反饋的脈沖軸和虛擬軸采用R0,R1鎖存;
(3)EtherCAT或RTEX總線軸類型采用R2,R3鎖存;
(4)另外EtherCAT總線可以使用驅動器自身的鎖存模式,詳情參見驅動器手冊說明。
語法一:單次鎖存
REGIST(mode)
mode:鎖存方式如下表。
值 | 描 述 |
1 | 當Z脈沖上升沿時的絕對位置送到REG_POS |
2 | 當Z脈沖下降沿時的絕對位置送到REG_POS |
3 | 當輸入信號R0上升沿的絕對位置送到REG_POS |
4 | 當輸入信號R0下降沿的絕對位置送到REG_POS |
6 | 輸入信號R0上升沿時的絕對位置送到REG_POS,Z信號上升沿時的絕對位置送到REG_POSB |
7 | 輸入信號R0上升沿時的絕對位置送到REG_POS,Z信號下降沿時的絕對位置送到REG_POSB |
8 | 輸入信號R0下降沿時的絕對位置送到REG_POS,Z信號上升沿時的絕對位置送到REG_POSB |
9 | 輸入信號R0下降沿時的絕對位置送到REG_POS,Z信號下降沿時的絕對位置送到REG_POSB |
10 | 輸入信號R0上升沿時的絕對位置送到REG_POS,輸入信號R1上升沿時的絕對位置送到REG_POSB |
11 | 輸入信號R0上升沿時的絕對位置送到REG_POS,輸入信號R1下降沿時的絕對位置送到REG_POSB |
12 | 輸入信號R0下降沿時的絕對位置送到REG_POS,輸入信號R1上升沿時的絕對位置送到REG_POSB |
13 | 輸入信號R0下降沿時的絕對位置送到REG_POS,輸入信號R1下降沿時的絕對位置送到REG_POSB |
14 | 輸入信號R1上升沿時的絕對位置送到REG_POSB(14以后150804以后版本支持,每個鎖存通道獨立,支持4通道鎖存) |
15 | 輸入信號R1下降沿時的絕對位置送到REG_POSB |
16 | Z信號上升沿時的絕對位置送到REG_POSB |
17 | Z信號下降沿時的絕對位置送到REG_POSB |
18 | 輸入信號R2上升沿時的絕對位置送到REG_POSC |
19 | 輸入信號R2下降沿時的絕對位置送到REG_POSC |
20 | 輸入信號R3上升沿時的絕對位置送到REG_POSD |
21 | 輸入信號R3下降沿時的絕對位置送到REG_POSD |
注意:上升沿和下降沿對應的是控制器內(nèi)部的硬件狀態(tài)。對于ZMC系列控制器而言,由于OFF狀態(tài)有效,故從無信號到有信號是下降沿;對于ECI系列控制器而言,由于ON狀態(tài)有效,從無信號到有信號是上升沿。
若仍然容易混淆,建議使用前先使用下文例程簡單測試一下鎖存邊沿,再應用于項目中。
語法二:連續(xù)鎖存
通過把模式加100來支持連續(xù)鎖存,鎖存結果存儲到TABLE里面。
REGIST(100+mode, tableindex, numes)
mode:鎖存方式。
tableindex:連續(xù)鎖存的內(nèi)容存儲的table位置,第一個table元素存儲鎖存的個數(shù),后面存儲鎖存的坐標,最多保存?zhèn)€數(shù)= numes-1,溢出時循環(huán)寫入。
numes:占用的table個數(shù)。
連續(xù)鎖存模式分別對兩個通道進行連續(xù)鎖存,可以實現(xiàn)上下邊沿的連續(xù)鎖存。
(ECI20150829以上固件支持,4系列控制器20170523以上固件支持)
100+mode:只能使用單一通道的mode,加100表示使用連續(xù)鎖存。
值 | 描述 |
101 | 當Z脈沖上升沿時的絕對位置送到REG_POS |
102 | 當Z脈沖下降沿時的絕對位置送到REG_POS |
103 | 當輸入信號R0上升沿的絕對位置送到REG_POS |
104 | 當輸入信號R0下降沿的絕對位置送到REG_POS |
114 | 輸入信號R1上升沿時的絕對位置送到REG_POSB |
115 | 輸入信號R1下降沿時的絕對位置送到REG_POSB |
116 | Z信號上升沿時的絕對位置送到REG_POSB |
117 | Z信號下降沿時的絕對位置送到REG_POSB |
118 | 輸入信號R2上升沿時的絕對位置送到REG_POSC |
119 | 輸入信號R2下降沿時的絕對位置送到REG_POSC |
120 | 輸入信號R3上升沿時的絕對位置送到REG_POSD |
121 | 輸入信號R3下降沿時的絕對位置送到REG_POSD |
123 | 當輸入信號R0上升沿的絕對位置送到REG_POSB |
124 | 當輸入信號R0下降沿的絕對位置送到REG_POSB |
133 | 當輸入信號R0上升沿的絕對位置送到REG_POS,下一次切換下降沿,輪流切換。 |
134 | 當輸入信號R0下降沿的絕對位置送到REG_POS,下一次切換上升沿,輪流切換。 |
135 | 當輸入信號R1上升沿的絕對位置送到REG_POSB,下一次切換下降沿,輪流切換。下一次切換下降沿,輪流切換。 |
136 | 當輸入信號R1下降沿的絕對位置送到REG_POSB,下一次切換上升沿,輪流切換。 |
03 鎖存例程
1.脈沖軸(不帶反饋)/虛擬軸鎖存
可使用R0或R1通道,脈沖軸ATYPE=1/7,虛擬軸ATYPE=0,鎖存MPOS的值(沒有反饋時MPOS為假,復制DPOS)。帶反饋的情況鎖存真實的編碼器反饋的MPOS值,若支持Z信號,則可使用Z信號的模式。
配置參考如下圖:
例程如下:
BASE(0) ATYPE=1 '脈沖軸 UNITS=100 DPOS=0 SPEED=10 ACCEL=100 DECEL=100 REG_INPUTS=0 '將R0-R3都對應輸入口0,信號接入IN(0) REGIST(4) '選擇R0鎖存模式 TRIGGER '觸發(fā)示波器 VMOVE(1) '軸運動 WAIT UNTIL MARK '等待鎖存觸發(fā) PRINT REG_POS '打印鎖存位置 END
從示波器采樣的波形可以看出,IN(0)有信號觸發(fā)鎖存,REGIST(4)生效鎖存此刻的DPOS位置,并存儲到REG_POS。
上例其他條件不變,鎖存模式改為REGIST(3),鎖存觸發(fā)的邊沿發(fā)生變化。
2.脈沖軸(帶反饋)/編碼器軸鎖存
可使用R0、R1或Z通道(必須帶Z信號的設備才支持),脈沖軸ATYPE=4/5,編碼器軸ATYPE=3/6,鎖存MPOS的值。
例程如下:
BASE(0) ATYPE=4 '脈沖帶編碼器反饋 UNITS=100 SPEED=10 ACCEL=100 DECEL=100 DPOS=0 MPOS=0 REG_INPUTS=$0 '將R0-R3都對應輸入口0 ,信號接入IN(0) REGIST(15) '選擇R1鎖存模式 TRIGGER VMOVE(1) '軸運動 WAIT UNTIL MARKB '等待鎖存觸發(fā) PRINT REG_POSB '打印鎖存位置 END
從示波器采樣的波形可以看出,IN(0)有信號觸發(fā)鎖存,鎖存此刻的MPOS位置,并存儲到REG_POSB。
3.多軸位置鎖存
鎖存多軸的位置時,需要分別對每個軸設置鎖存,下例插補運動中鎖存兩個軸的位置。
例程如下:
BASE(0,1) ATYPE=1,1 '脈沖軸 UNITS=100,100 DPOS=0,0 SPEED=10,10 ACCEL=100,100 DECEL=100,100 REG_INPUTS=$0 '將R0-R3都對應輸入口0,信號接入IN(0) REGIST(4) AXIS(0) '軸0選擇R0鎖存模式 REGIST(4) AXIS(1) '軸1選擇R0鎖存模式 TRIGGER '觸發(fā)示波器 MOVE(1000,800) '軸運動 WAIT UNTIL MARK(0) AND MARK(1) '等待鎖存觸發(fā) PRINT REG_POS(0), REG_POS(1) '打印軸0,軸1的鎖存位置 END
注意:多軸使用同一個鎖存硬件輸入口時,需采用相同的鎖存R通道(如上例,模式3/4均可),需要使用不同R通道時,則需要映射到不同的硬件輸入口上。
4.連續(xù)鎖存模式
持續(xù)鎖存信號觸發(fā)后的位置,以上的軸類型均支持連續(xù)鎖存模式,建議開單獨任務執(zhí)行連續(xù)鎖存程序,不干擾其他程序的運行,可通過TABLE寄存器隨時讀取到鎖存的次數(shù)和位置數(shù)據(jù)。
例程如下:
BASE(0) ATYPE=1 '脈沖軸 UNITS=100 DPOS=0 SPEED=10 ACCEL=100 DECEL=100 REG_INPUTS=$0 '將R0-R3都對應輸入口0,信號接入IN(0) TRIGGER '觸發(fā)示波器 VMOVE(1) '軸運動 REGIST(100+4,0,100) '連續(xù)鎖存,R0通道,table(0)保存鎖存次數(shù),table(1-100)存儲每次鎖存的數(shù)據(jù),超過99次后,table(0)清0,重新從table(1)記錄數(shù)據(jù)WAIT UNTIL MARK
示波器捕捉連續(xù)鎖存的位置數(shù)據(jù):不需要WHILE循環(huán)就能實現(xiàn)連續(xù)鎖存。
寄存器窗口讀取鎖存的次數(shù)和位置數(shù)據(jù)。
5.總線驅動器鎖存
可使用R2、R3通道,脈沖軸ATYPE=4/5,EtherCAT和RTEX總線均支持,軸類型ATYPE=65/50,鎖存MPOS的值。
采用EtherCAT總線驅動器,可使用控制器提供的鎖存模式,配置方法與前文類似;也可以使用EtherCAT總線驅動器自帶的鎖存模式(需參考驅動器手冊完成配置)。
采用EtherCAT總線驅動器自帶的鎖存模式,選擇驅動器支持鎖存的探針,接入鎖存信號;例如下方驅動器,有兩個探針信號輸入。
注意:驅動器PDO需包含60b8h鎖存的數(shù)據(jù)字典,DRIVE_PROFILE直接選擇帶鎖存的模式測試。
例如:DRIVE_PROFILE=11,PDO配置情況如下,更多模式參見DRIVE_PROFILE指令說明。
鎖存模式采用REGIST提供的模式(需測試哪些模式支持),觸發(fā)驅動器鎖存之后,驅動器自行將鎖存位置傳到對應的REG_POS / REG_POSB / REG_POSC / REG_POSD,對應MARK變?yōu)檎?,用戶無需通過驅動器數(shù)據(jù)字典獲知。
例程如下:
'******************************************************************************************** '總線初始化使能程序,初始化成功方可運行下方鎖存程序 '初始化配置驅動器PDO需包含鎖存的數(shù)據(jù)字典,DRIVE_PROFILE選擇帶鎖存的模式測試 '******************************************************************************************** RAPIDSTOP WAITIDLE DIM num,AXIS_Max,TEMP FOR num=0 TO 7 STEP 1 BASE(num) ATYPE(num)=0 AXIS_ADDRESS(num)=(-1<<16)+num ATYPE(num)=0 NEXT num=0 SLOT_SCAN(0) IF RETURN THEN ?"總線掃描成功","設備連接數(shù):"NODE_COUNT(0) 'i為槽位號,位軸數(shù) FOR i=0 to NODE_COUNT(0)-1 AXIS_Max=NODE_AXIS_COUNT(0,i)'單個設備連接總數(shù) ?"AXIS_Max="AXIS_Max IF AXIS_Max<>0 THEN FOR j=0 TO AXIS_Max-1 AXIS_ADDRESS(num)=(i<<16)+num+1 ATYPE(num)=65 '軸映射最后一步 'units(num)=2^23/360 '單軸脈沖當量設置 DRIVE_PROFILE(num)=11 '設置PDO功能 disable_group(num) '每軸單獨分組 num=num+1 '當前設備總軸數(shù) NEXT ELSE ?"當前設備無軸" END ENDIF NEXT ?"軸映射完成!總軸數(shù):"num ELSE ?"總線掃描失敗" END ENDIF DELAY(100) SLOT_START(0) IF RETURN THEN ?"總線開啟成功" DELAY(100) DATUM(0)'清除所有軸錯誤狀態(tài) DELAY(100) ?"開始進行軸使能" FOR i=0 to num-1 base(i) AXIS_ENABLE=1'單軸使能 NEXT WDOG=1'軸使能總開關開啟 ?"軸使能完成" ELSE ?"總線開啟失敗" ENDIF ?"配置完成" adasda() '調(diào)用鎖存函數(shù) END '******************************************************************************************** '鎖存函數(shù) '選擇驅動器支持鎖存的探針,接入鎖存信號 鎖存模式采用REGIST提供的模式,觸發(fā)鎖存之后,驅動器將鎖存位置傳到REG_POS '******************************************************************************************** WHILE 1 IF OP(0) = ON THEN OP(0, OFF) temp=-1 ENDIF temp=0 WEND GLOBAL sub adasda() dim num, temp num=1 temp=0 BASE(0) REGIST(100+3,0,100)AXIS(0)' 自動循環(huán),不需要再寫入到while循環(huán)中,table(0)保存鎖存次數(shù),table(1-100)存儲每次鎖存的數(shù)據(jù)超過99次后,table(0)清0,重新從table(1)記錄數(shù)據(jù) 'REGIST(3) WHILE 1 ?"*********************************************************" WA 10 ?"reg_pos="REG_POS,"鎖存值TABLE="TABLE(num),"占用TABLE="TABLE(0) '打印 ?"驅動器探針模式="NODE_PDOBUFF(0,0,$60B8,0,6) ?"驅動器探針狀態(tài)="NODE_PDOBUFF(0,0,$60B9,0,6) ?"驅動器鎖存值="NODE_PDOBUFF(0,0,$60BA,0,7) IF num=100 THEN num=1 ELSE num=num+1 ENDIF WA 100 '延時1ms,防抖 wend ENDSUB
采用連續(xù)鎖存模式REGIST(100+3,0,100),使用TABLE(0)開始的100個空間保存鎖存數(shù)據(jù),其中TABLE(0)保存的是連續(xù)鎖存的次數(shù),TABLE(1)- TABLE(99)保存每次鎖存的位置。
本次,正運動技術運動控制器位置鎖存功能的應用,就分享到這里。
審核編輯:湯梓紅
-
運動控制器
+關注
關注
2文章
390瀏覽量
24627 -
鎖存
+關注
關注
0文章
21瀏覽量
20617
發(fā)布評論請先 登錄
相關推薦
評論