|
錯誤處理 |
運算 |
Motion |
Motion Functio |
||
|
ACC載入 |
位元運算 |
加法 |
|||
|
點對點命令 |
|||||
|
流程控制 |
|||||
|
減法 |
|||||
|
Wait Function |
|||||
|
ACC存出 |
OP2運算 |
乘法 |
|||
|
Debug |
|||||
|
向量命令 |
|||||
|
除法 |
|||||
|
Other |
|||||
|
複合 |
|||||
|
|
|||||
|
|
|
比較 |
|
||
|
|
|
|
|||
|
|
|
命令Buffer |
|
||
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
高階數學延伸 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
其他 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
||
|
|
|
|
|
||
|
|
|
|
|
||
|
|
|
|
|
||
格式 {Label:} Instruction
{Operand1{,Operand2}} {;Comment} { }可選
|
Label: |
每列第一字寫起視為Label,第一字不得為數字。用於程式跳躍。 |
|
Instruction |
每列第二字寫起視為指令,故所有指令前至少要有一個空格。 |
|
Operand1{,Operand2} |
Operand1、Operand2為命令參數,視指令決定,逗號","前後不可有空格。 |
|
;Comment |
以分號";"作為開頭。 |
|
PLC |
執行時不會令PLC Ladder掃描中斷,可用於PLC Ladder。 |
|
偵錯 |
當發生錯誤時,會拋出錯誤訊號的指令。 |
|
功能說明
清除或設定告警,面板顯示「AL.警報碼」。若Int設0,則清除ALM;若Int設非零,可使驅動器輸出一個指定的告警碼。告警碼依照嚴重程度分區,以16進制表示,各區有其預設的Do反應行為,可以使用Do參數改變。
參數
|
Int |
將短整數(16
Bits)分成兩個部分,高4
Bits(12∼15 Bits)表示軸的選擇,低12 Bits(0∼11 Bits)表示欲輸出面板的ALM號碼。其格式如下:
定址方式
|
|||||||||||||||||||||||||||||||||
|
[Do] |
設定輸出Do,若不指定則依據ALM號碼輸出預設Do。
|
|||||||||||||||||||||||||||||||||
錯誤種類
無
影響旗標
無
程式範例
|
ALM_SET
0x1980[2] ;X-Axis LCD shows
AL.980, Do=WRN, Servo Off. DELAY 5000 ;Delay 5
sec. ALM_SET 0 ;Clear Alarm, Servo On。 |
|
功能說明
設定本TASK的錯誤處理程序位址,當後續偵錯指令執行時,若發生ERR,則跳躍至 $Label的位址執行指令。若要取消設定,則使用ERR_CATCH $NULL(代表空位址)。
參數
|
$Label |
錯誤處理程序的Label(程式位置)。 定址方式
|
錯誤種類
無
影響旗標
無
程式範例
|
ERR_CATCH $Prog01_Section02 Prog01_Section01: SELECT X_AXIS MOVL
@AccTimeOne,10000 TACC @AccTimeOne ;偵錯w
AL21, jump to Prog01_Section02. MOVL
@DecTimeOne,20000 TDEC @DecTimeOne MOVL
@SpeedOne,100000 SPD
@SpeedOne PINC 100000 JMP_C $Prog01_End,UNC Prog01_Section02: MOVW @Block01,1 Prog01_End: |
|
功能說明
條件跳躍,當ST暫存器的旗標條件與COND設定條件吻合,則跳躍至$Label的位址執行指令。
參數
|
$Label |
欲跳躍的目的位址。 |
||||||||||||||||||||||||||||||||||||||||||||||||
|
Cond |
跳躍條件,符號與編碼:
條件是否成立並非直接比較ST暫存器的數值與COND的編碼數值。例如:ST為0x0089 C P時,與0x11 NZ吻合。 |
錯誤種類
無
影響旗標
無
程式範例
|
;展示JMP_C根據ST旗標意義跳躍,最後ACC = 1971。 LACCL 100 ;ACC = 100。 SUBL 1 ;ACC 減去 1。 JMP_C $L_1,NZ ;如果減法後ACC不為0,ST滿足NZ條件,跳到L_1。 JMP_C $L_END,UNC ;無條件跳到L_END。 L_1: JMP_C $L_3,0x04 ;Cond 也可直接輸入數字,大於零跳到L_3。 JMP_C $L_2,0x04 ;大於零跳到L_2。 ALM_SET 0xF01 ;七段顯示器顯示AL.901。 JMP_C $L_END,UNC ;無條件跳到L_END。 L_2: ALM_SET 0xF02 ;七段顯示器顯示AL.902。 JMP_C $L_END,UNC ;無條件跳到L_END。 L_3: ALM_SET 0xF03 ;七段顯示器顯示AL.903。 JMP_C $L_END,UNC ;無條件跳到L_END。 L_END:
LACCL 0 |
|
JMP_AL $Label,Val |
|
功能說明
條件跳躍,當AL暫存器的內容與VAL相同時,則跳躍至$Label的位址執行指令。
參數
|
$Label |
欲跳躍的目的位址。 |
|
Val |
跳躍條件,AL的值。 |
錯誤種類
無
影響旗標
無
程式範例
|
;展示利用JMP_AL來進行件判斷邏輯,最後七段顯示器顯示AL.902。 LALW 2 ;將AL設定為2。 JMP_AL $L_1,1 ;跳躍至 $L_1 若 AL = 1。 JMP_AL $L_2,2 ;跳躍至 $L_2 若 AL = 2。 JMP_AL $L_3,3 ;跳躍至 $L_3 若 AL = 3。 JMP_C $L_END,UNC L_1: ;處理 ERR 1 區。 LACCL 1 ALM_SET 0x1F01 ;七段顯示器顯示AL.901。 JMP_C $L_END,UNC L_2: ;處理 ERR 2 區。 LACCL 2 ALM_SET 0x1F02 ;七段顯示器顯示AL.902。 JMP_C $L_END,UNC L_3: ;處理 ERR 3 區。 LACCL 3 ALM_SET 0x1F03 ;七段顯示器顯示AL.903。 JMP_C $L_END,UNC L_END: ;結束區。 LACCL 0 |
|
功能說明
條件跳躍,條件跳躍,當ACC暫存器的某一位元,符合Cond指定的內容,則跳躍至$Label的位址執行指令。
參數
|
$Label |
欲跳躍的目的位址。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Cond |
跳躍條件,MASK常用符號與編碼:
|
錯誤種類
無
影響旗標
無
程式範例
|
;展示利用JMP_BIT來進行件判斷邏輯,最後七段顯示器顯示AL.902。 LACCL 1 ;設定ACC的bit0=1,bit1~31=0。 JMP_BIT $L_1,ON_31 ;跳躍至$L_1若ACC的bit31=0。 JMP_BIT $L_2,ON_0 ;跳躍至$L_1若ACC的bit0=0。 JMP_C $L_END,UNC L_1: ALM_SET 0x1F01 ;七段顯示器顯示AL.901。 JMP_C $L_END,UNC L_2: ;從JMP_BIT $L_2,ON_0跳躍過來。 ALM_SET 0x1F02 ;七段顯示器顯示AL.902。 JMP_C $L_END,UNC L_END: ;結束區。
LACCL 0 |
|
功能說明
延遲短整數(16 Bits)資料指定的時間(0∼65535)。
參數
|
Int |
延遲的時間,單位是 1 msec。
|
錯誤種類
無
影響旗標
無
程式範例
|
;示範DELAY一段時間後,七段顯示器顯示不同的ALM。 DELAY 1 ;延遲 1 msec. ALM_SET 0x1F01 ;顯示AL.901. DELAY 1000 ;延遲 1 sec. ALM_SET 0x1F02 ;顯示AL.902. |
|
功能說明
迴圈指令,其中 ARn紀錄迴圈執行次數,當ARn值不為0,會重複執行$Label到LOOP指令中的所有指令,每執行一次ARn值減一,直到ARn為0時跳出迴圈。
參數
|
$Label |
迴圈起始位置。 |
|
ARn |
使用輔助暫存器(AR0~AR5)紀錄迴圈執行次數。 |
錯誤種類
無
影響旗標
無
程式範例
|
;此範例將ACC用迴圈從0開始每次加10總共10次,最後七段顯示器顯示AL.902。 LACCL 0 MOVW @AR3,10 ;紀錄迴圈次數,AR3 = 10。 LOOP_1: ;迴圈起始位置。 ADDL 10 ;迴圈內容,每次加 10。 LOOP $LOOP_1,AR3 ;AR3遞減後不為0則跳到LOOP_1重複執行。
CMPL 100 ;判斷ACC是否為100。 JMP_C $L_1,NEQ ;ACC不為100跳到L_1。 JMP_C $L_2,EQ ;ACC為100跳到L_2。 L_1: ALM_SET 0x1F01 JMP_C $L_END,UNC L_2: ;由JMP_C $L_2,EQ跳到此。 ALM_SET 0x1F02 JMP_C $L_END,UNC L_END:
LACCL 0 |
|
功能說明
暫停目前執行的 Task,通常用來搭配軟體進行除錯功能,可當作多重中斷點來使用。
請注意,必須先按下
進入除錯模式。
參數
無
錯誤種類
無
影響旗標
無
程式範例
|
LACCL 100 HOLD
;暫停此Task SELECT X_AXIS SET_BIT MV0.0 DELAY 1000 HOLD
;暫停此Task SELECT X_AXIS MODE PATH TACC 1000 TDEC 1000 JOG 200000 |
|
功能說明
在P5-00高位元寫入一個版本號碼,通常用於提示方案的版本。
參數
|
Int |
定址方式
|
錯誤種類
無
影響旗標
無
程式範例
|
VERSION 0,1 ;P5-00高位元顯示1. |
|
功能說明
將長整數(32 Bits)資料與ACC暫存器的內容,做位元AND運算,結果存於ACC暫存器。
參數
|
Dint |
長整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
若ACC原來是浮點數,轉換成長整數後超出範圍(-2147483648∼+2147483647)則溢位發生(V=1),ACC自動載入最大值:+2147483647或-2147483648,正負根據N旗號。 |
|
FLOAT |
若ACC原來是短整數,運算結果也是短整數;若ACC原來是浮點數,FLOAT=1,則會先依照無條件捨去法轉換成長整數,FLOAT=0,再做AND運算,運算結果也是長整數。 |
程式範例
|
;展示各種ANDL使用方式,以下的ACC結果只有AH+AL區。 LACCL 65535
;65535之16進位為0x0000FFFF。 ANDL 0x000000FF
;ACC=(ACC AND 0x000000FF),結果ACC=0x000000FF。
LACCL 65535
ANDL @var1
;ACC=(ACC AND VAR_1),結果ACC=0x0000AAAA。
LACCW #var2
SALW @AR4
LACCL 65535
ANDL *AR4[1]
;ACC=(ACC AND *(AR4+1)),結果ACC=0x000000FF。
MOVL @XAR3,0x0FFF LACCL 65535
ANDL @XAR3
;ACC=(ACC AND XAR4),結果ACC=0x00000FFF。 |
|
功能說明
將長整數(32 Bits)資料與ACC暫存器的內容,做位元OR運算,結果存於ACC暫存器。
參數
|
Dint |
長整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
若ACC原來是浮點數,轉換成長整數後超出範圍(-2147483648∼+2147483647)則溢位發生(V=1),ACC自動載入最大值:+2147483647或-2147483648,正負根據N旗號。 |
|
FLOAT |
若ACC原來是短整數,運算結果也是短整數;若ACC原來是浮點數,FLOAT=1,則會先依照無條件捨去法轉換成長整數,FLOAT=0,再做OR運算,運算結果也是長整數。 |
程式範例
|
;展示各種ORL使用方式,以下的ACC結果只有AH+AL區。 LACCL 65535
;65535之16進位為0x0000FFFF。 ORL 0x00FFFFFF
;ACC=(ACC AND 0x000000FF),結果ACC=0x00FFFFFF。
LACCL 65535
ORL @var1
;ACC=(ACC AND VAR_1),結果ACC=0xAAAAFFFF。
LACCW #var2
SALW @AR4
LACCL 15
ORL *AR4[1] ;ACC=(ACC
AND *(AR4+1)),結果ACC=0x000000FF。
MOVL @XAR3,0x0FFF LACCL 15
ORL @XAR3
;ACC=(ACC AND XAR4),結果ACC=0x00000FFF。 |
|
功能說明
將ACC暫存器(32位元)的內容做位移運算,不會影響EXP暫存器。
參數
|
Int |
指位移的位數,僅參考Int的最低5位元,代表可位移0∼31位元。
|
||||||||||||
|
Opt |
位移方式。
|
錯誤種類
無
影響旗標
|
N Z P |
視ACC內容而定。 |
|
C |
最後轉出的位元會放到C旗標。 |
|
V |
若ACC原來是浮點數,轉換成長整數後超出範圍(-2147483648∼+2147483647),則V=1,ACC自動載入最大值,-2147483648或+2147483647,正負號根據N旗標。 |
|
FLOAT |
如ACC原來是長整數,運算結果也是長整數,如ACC原來是浮點數,則會先轉換成長整數,再做位移運算,運算結果也是長整數。 |
程式範例
|
LACCL -536625146 SHF_ACC 3,LSL
;ACC向左邏輯位移3位元 SHF_ACC 2,LSR
;ACC向右邏輯位移2位元 MOVW AR0,1 SHF_ACC AR0,ASR
;ACC向右數學位移AR0位元 |
|
功能說明
將AL暫存器(16位元)的內容做位移運算,不會影響AH、EXP暫存器。
參數
|
Int |
指位移的位數,僅參考Int的最低5位元,代表可位移0∼31位元。位移前會先將Int÷16取餘數,才是最後實際的位移位數。
|
||||||||
|
Opt |
位移方式。
|
錯誤種類
無
影響旗標
|
N Z P |
視ACC內容而定。 |
|
C |
最後轉出的位元會放到C旗標。 |
|
V |
若ACC原來是浮點數,轉換成長整數後超出範圍(-2147483648∼+2147483647),則V=1,ACC自動載入最大值,-2147483648或+2147483647,正負號根據N旗標。 |
|
FLOAT |
若ACC原來是短整數,運算結果也是短整數;若ACC原來是浮點數,FLOAT=1,則會先依照無條件捨去法轉換成長整數,FLOAT=0,再做位移運算,運算結果也是長整數。 |
程式範例
|
LACCF -65535.5 ;0xFFFF0001 SHF_AL 3,LSL ;0xFFFF0008, AL向左邏輯位移3位元 SHF_AL 2,LSR ;0xFFFF0002, AL向右數學位移2位元 SHF_AL 20,LSL ;0xFFFF0020, AL向左數學位移20位元 LAHW 65450 MOVW AR0,1 SHF_AL @AR0,LSR ;AL向左邏輯位移AH個位元 SALW @AR1 |
|
功能說明
將AH暫存器(16位元)的內容做位移運算,不會影響AL、EXP暫存器。
參數
|
Int |
指位移的位數,僅參考Int的最低5位元,代表可位移0∼31位元。位移前會先將Int÷16取餘數,才是最後實際的位移位數。
|
||||||||
|
Opt |
位移方式。
|
錯誤種類
無
影響旗標
|
N Z P |
視ACC內容而定。 |
|
C |
最後轉出的位元會放到C旗標。 |
|
V |
若ACC原來是浮點數,轉換成長整數後超出範圍(-2147483648∼+2147483647),則V=1,ACC自動載入最大值,-2147483648或+2147483647,正負號根據N旗標。 |
|
FLOAT |
若ACC原來是短整數,運算結果也是短整數;若ACC原來是浮點數,FLOAT=1,則會先依照無條件捨去法轉換成長整數,FLOAT=0,再做位移運算,運算結果也是長整數。 |
程式範例
|
LAHW 15 SHF_AH 3,LSL ;AH向左邏輯位移
3位元 SHF_AH 2,ASR ;AH向右數學位移
2位元 LALW 4 SHF_AH @AL,LSR ;AH向左邏輯位移AL個位元 |
|
功能說明
將短整數(16 Bits)資料的指定位元,設定成1。
參數
|
Int |
短整數。
變數需是可以Bit定址區域;例如:Y區、MV區 |
||||||||
|
Bit_No |
指定位元編號(0∼15)。 |
錯誤種類
無
影響旗標
無
程式範例
|
SET_BIT @var1,6 ;設定@var1的bit6=1. SET_BIT @AL,0 ;設定AL的bit0=1. SET_BIT DV10,0 ;設定DV10的bit0=0. |
|
功能說明
將短整數(16 Bits)資料的指定位元,設定成0。
參數
|
Int |
短整數。
變數需是可以Bit定址區域;例如:Y區、MV區 |
||||||||
|
Bit_No |
指定位元編號(0∼15)。 |
錯誤種類
無
影響旗標
無
程式範例
|
RST_BIT @var1,6 ;設定@var1的bit6=0。 LALW 1 RST_BIT @AL,0 ;設定AL的bit0=0。 RST_BIT DV10.0 ;設定DV10的bit0=0。 |
|
功能說明
將16位元暫存器的位元,向左位移。移入的位元(低位)補零,移出的消失!
本指令之目的乃快速改變輔助暫存器的內容,因此只能當作整數的運算!雖然對AH/AL也可作用,但不會分辨ACC的內容是否為浮點數,也不會根據ACC結果設定ST狀態旗號,使用時須注意ACC的資料型態是否為整數!
利用本指令改變@SP,將造成堆疊中毀損,請不要使用!
參數
|
Reg16 |
16位元暫存器:AR0∼AR5;AR0H∼AR5H;AH/AL。
|
||||||||
|
SHF_No |
位移的位數;常數(0~15)。 |
錯誤種類
無
影響旗標
無
程式範例
|
MOVW @AR1,1 ;設定AR1=1。 REG_LSLW @AR1,1 ;@AR1 = @AR1 << 1,結果AR1=2。 REG_LSLW @AR5H,3 ;@AR5H = @AR5H << 3。 REG_LSLW @AL,10 ;@AL = @AL << 10。 REG_LSLW @AH,0x0F ;@AH = @AH << 15。 |
|
功能說明
將16位元暫存器的位元,向右位移。移入的位元(高位)補零,移出的消失!
本指令之目的乃快速改變輔助暫存器的內容,因此只能當作整數的運算!雖然對AH/AL也可作用,但不會分辨ACC的內容是否為浮點數,也不會根據ACC結果設定ST狀態旗號,使用時須注意ACC的資料型態是否為整數!
利用本指令改變@SP,將造成堆疊中毀損,請不要使用!
參數
|
Reg16 |
16位元暫存器:AR0∼AR5;AR0H∼AR5H;AH/AL。
|
||||||||
|
SHF_No |
位移的位數;常數(0~15)。 |
錯誤種類
無
影響旗標
無
程式範例
|
MOVW @AR1,15 ;設定AR1=15. REG_LSRW @AR1,1 ;@AR1 = @AR1 >> 1. REG_LSRW @AR5H,3 ;@AR5H = @AR5H >> 3. REG_LSRW @AL,10 ;@AL = @AL >> 10. REG_LSRW @AH,0x0F ;@AH = @AH >> 15. |
|
功能說明
將16位元暫存器的值,與Value做AND運算。
本指令之目的乃快速改變輔助暫存器的內容,因此只能當作整數的運算!雖然對AH/AL也可作用,但不會分辨ACC的內容是否為浮點數,也不會根據ACC結果設定ST狀態旗號,使用時須注意ACC的資料型態是否為整數!
利用本指令改變@SP,將造成堆疊中毀損,請不要使用!
參數
|
Reg16 |
16位元暫存器:AR0∼AR5;AR0H∼AR5H;AH/AL。
|
||||||||
|
Value |
短整數:-32768∼+32767。 |
錯誤種類
無
影響旗標
無
程式範例
|
REG_ANDW @AR1,0x0001 ;@AR1 = (@AR1 AND 0x0001) REG_ANDW @AR5H,0x00FF ;@AR5H = (@AR5H AND 0x00FF) REG_ANDW @AL,-4096 ;AL = @AL AND 0xF000 REG_ANDW @AH,0x0FFF ;@AH = (@AH AND 0x0FFF) |
|
功能說明
將16位元暫存器的值,與Value做OR運算。
本指令之目的乃快速改變輔助暫存器的內容,因此只能當作整數的運算!雖然對AH/AL也可作用,但不會分辨ACC的內容是否為浮點數,也不會根據ACC結果設定ST狀態旗號,使用時須注意ACC的資料型態是否為整數!
利用本指令改變@SP,將造成堆疊中毀損,請不要使用!
參數
|
Reg16 |
16位元暫存器:AR0∼AR5;AR0H∼AR5H;AH/AL。
|
||||||||
|
Value |
短整數:-32768∼+32767。 |
錯誤種類
無
影響旗標
無
程式範例
|
REG_ORW
@AR1,0x0001 ;@AR1 =
@AR1 OR 0x0001 REG_ORW
@AR5H,0x00FF ;@AR5H =
@AR5H OR 0x00FF REG_ORW
@AL,-4096
;@AL = (@AL OR 0xF000) REG_ORW @AH,0x0FFF ;@AH = @AH OR 0x0FFF |
|
功能說明
將32 Bits暫存器(Reg32_D)的內容,複製到另一32 Bits暫存器(Reg32_S)。
本指令之目的乃快速複製輔助暫存器(XAR0∼XAR5)的內容,不需要經過ACC!
雖然也可對ACC複製,但不會分辨ACC的內容是否為浮點數,也不會根據ACC結果設定ST狀態旗號,使用時須注意!
利用本指令改變@SP,將造成堆疊中毀損,請不要使用!
參數
|
Reg32_D |
目標32位元暫存器:XAR0∼XAR5;ACC。
|
||||||||
|
Reg32_S |
來源32位元暫存器:XAR0∼XAR5;ACC。 |
錯誤種類
無
影響旗標
無
程式範例
|
REG_CPYL @XAR1,@XAR2 ;@XAR1 = @XAR2 REG_CPYL @XAR5,@XAR3 ;@XAR5 = @XAR3 REG_CPYL @XAR2,@ACC ;@XAR2 =
@ACC REG_CPYL @ACC,@XAR3 ;@ACC =
@XAR3 |
|
功能說明
將16 bits暫存器(Reg32_S)的內容,複製到另一16 Bits暫存器(Reg32_D)。
本指令之目的乃快速複製輔助暫存器(AR0∼AR5、AR0H∼AR5H)的內容,不需要經過ACC!
雖然也可對ACC複製,但不會分辨ACC的內容是否為浮點數,也不會根據ACC結果設定ST狀態旗號,使用時須注意!
利用本指令改變@SP,將造成堆疊中毀損,請不要使用!
參數
|
Reg32_D |
目標16位元暫存器:AR0∼AR5;AR0H∼AR5H;AL/AH。
|
||||||||
|
Reg32_S |
來源16位元暫存器:AR0∼AR5;AR0H∼AR5H;AL/AH。 |
錯誤種類
無
影響旗標
無
程式範例
|
REG_CPYW @AR1,@AR2 ;@AR1 = @AR2 REG_CPYW @AR5H,@AR3 ;@AR5H = @AR3 REG_CPYW @AL,@AR2 ;@AL = @AR2 REG_CPYW @AR5H,@AH ;@AR5H = @AH |
|
功能說明
將暫存器(Reg32)的內容,正負符號改變。
本指令之目的乃快速複製輔助暫存器(XAR0~XAR5)的內容,不需要經過ACC!
雖然也可對ACC複製,但不會分辨ACC的內容是否為浮點數,也不會根據ACC結果設定ST狀態旗號,使用時須注意!
利用本指令改變@SP,將造成堆疊中毀損,請不要使用!
參數
|
Reg32 |
目標32位元暫存器:XAR0∼XAR5;ACC。
|
錯誤種類
無
影響旗標
無
程式範例
|
REG_NEGL @XAR1 ;@XAR1 =
-@XAR1 REG_NEGL @XAR5 ;@XAR5 =
-@XAR5 |
|
功能說明
將16位元暫存器的值,增加Value。
本指令之目的乃快速改變輔助暫存器的內容,因此只能當作整數的運算!雖然對AH/AL也可作用,但不會分辨ACC的內容是否為浮點數,也不會根據ACC結果設定ST狀態旗號,使用時須注意ACC的資料型態是否為整數!
利用本指令改變@SP,將造成堆疊中毀損,請不要使用!
參數
|
Reg16 |
16位元暫存器:AR0∼AR5;AR0H∼AR5H;AL/AH。
|
||||||||
|
Value |
短整數:-32768∼+32767。 |
錯誤種類
無
影響旗標
無
程式範例
|
REG_ADDW @AR1,10 ;@AR1 = @AR1 + 10 REG_ADDW @AR5H,-210 ;@AR5H = @AR5H - 210 REG_ADDW @AL,7 ;@AL =
@AL + 7 REG_ADDW @AH,-7 ;@AH = @AH - 7 |
|
功能說明
將浮點數(48 Bits)資料常數複製到REAL48定址的位置!若REAL48定址的位置是長整數變數,也會複製48位元,造成連續3個短整數數值改變!
請注意:
暫存器定址時不可使用AL/AH(操作AL/AH務必使用LALW、LAHW、LACCW)。
使用於DH或MH區時無法斷電保持。
參數
|
Real48 |
欲載入的數值、定址方式。
|
||||||||
|
Value |
載入的數值;48位元浮點數常數。 |
錯誤種類
無
影響旗標
無
程式範例
|
MOVF @var1,7.5 ;@var1 = 7.5 ;MOVF應用於陣列指標。 LACCW #var2 SALW AR1 MOVF *AR1[1],3.14 ;var2陣列第2個元素為3.14 |
|
功能說明
將32位元常數複製到Dint定址的位置!若Dint定址的位置是短整數變數,也會複製32位元,造成連續2個短整數數值改變!
請注意:
暫存器定址時不可使用ACC(操作ACC務必使用LACCL)。
使用於DH或MH區時無法斷電保持。
參數
|
Real48 |
欲載入的數值、定址方式。
|
||||||||
|
Value |
載入的數值;32位元常數(-2147483648∼+2147483647)。 |
錯誤種類
無
影響旗標
無
程式範例
|
MOVL @XAR1,123456 ;@XAR1 = 123456 MOVL @var1,65536 ;@var1 = 65536 ;MOVL應用於陣列指標。 LACCW #var2 SALW @AR1 MOVL *AR1[1],3310 ;var2陣列的第2個元素為3310 |
|
功能說明
將16位元常數複製到Int定址的位置!若Int定址的位置是長整數變數,也僅複製16位元,其餘位元則不改變!
請注意:
暫存器定址時不可使用AL/AH(操作AL/AH務必使用LALW、LAHW、LACCW)。
使用於DH或MH區時無法斷電保持。
參數
|
Int |
欲載入的數值、定址方式。
|
||||||||
|
Value |
載入的數值;16位元常數(-32768∼+32767)。 |
錯誤種類
無
影響旗標
無
程式範例
|
MOVW @AR1,10 ;AR1 = 10 MOVW @AR5H,-1 ;AR5H = -1 MOVW @var1,-7 ;var1 = - 7 MOVW @var2[1],12 ;var2陣列的第二個元素為12 ;MOVW於陣列指標的應用 LACCW #var3 SALW @AR1 MOVW *AR1[2],1971 ;var3陣列第三個元素為1971 |
|
功能說明
針對ACC的值執行對應的數學函式,所有的數學運算前會先將ACC轉為浮點數(48 Bits)型態,運算後結果儲存在ACC,其形態也是浮點數。有些數學運算除了第一運算元放在ACC外,還需要第二個運算元放在Value,例如POWER、ATAN2等,會將第二運算元放在Value,而Value的型態則根據不同的數學函式有不同的形態,若Value以變數跟指標定址的話,則會根據型態讀取指標指到的位址,但若以常數跟暫存器定址的話,Value只能輸入INT型態,但數學函式運算時會轉成預期的型態做運算。
目前POWER所需的第二運算元是INT型態且有數值限制0<Value<10,而ATAN2所需的第二運算元是REAL48型態,但指令無法接受直接輸入REAL48型態的常數,若需以REAL48型態的第二運算元必須以變數或指標定址方式傳遞。
參數
|
Int |
定址方式。
|
||||||||||||||||||||||||||||||||||||
|
FunID |
執行的數學函式:
|
錯誤種類
|
0x247 |
FunID
錯誤 |
|
0x251 |
Power
參數錯誤 |
影響旗標
|
N
Z P |
視ACC內容而定。 |
程式範例
|
LACCF 30.0 MATH_ACC 0,SIN
;ACC=SIN(30.0角度)=0.4999999981
LACCF 30.0
MATH_ACC 0,COS
;ACC=COS(30.0角度)=0.8660254041 LACCF 30.0
MATH_ACC 0,TAN
;ACC=TAN(30.0角度)=0.5773502667
LACCF 0.5773502667
MATH_ACC 0,ATAN
;ACC=ATAN(0.5773502667)=0.5235987725徑度 LACCF 2.0 MOVF @var1,1.0 MATH_ACC @var1,ATAN2
;ACC=ATAN2(2.0,1.0)=1.1071487172徑度 LACCF 0.5235987725 MATH_ACC 0,RADIAN_TO_DEGREE ;ACC=29.9999998212 LACCF 30.0 MATH_ACC 0,DEGREE_TO_RADIAN ;ACC=0.5235987753 LACCL 9 MATH_ACC 0,SQRT
;ACC=SQRT(9)=3.0
LACCL 2
MATH_ACC 3,POWER
;ACC=8
LACCF 0.4999999981 MATH_ACC 0,ASIN
;ACC=ASIN(0.4999999981)=0.5235987715徑度
LACCF 0.8660254041
MATH_ACC 0,ACOS
;ACC=ATAN(0.8660254041)=0.5235987753徑度 |
|
功能說明
將ACC暫存器(48 Bits)浮點數資料轉為長整數(32 Bits)。會依據小數第一位四捨五入。
參數
無
錯誤種類
無
影響旗標
|
FLOAT |
如ACC原來是長整數,運算結果也是長整數,如ACC原來是浮點數,則會先轉換成長整數,再做位移運算,運算結果也是長整數。FLAG
bit4=0。 |
程式範例
|
LACCF 12345.54321 F2L
;ACC=12346。 LACCF 12345.12345 F2L
;ACC=12345。 |
|
功能說明
將ACC暫存器(32 Bits)長整數資料轉為浮點數(48 Bits)。
參數
無
錯誤種類
無
影響旗標
|
FLOAT |
如ACC原來是長整數,運算結果也是長整數,如ACC原來是浮點數,則會先轉換成長整數,再做位移運算,運算結果也是長整數。FLAG
bit4=1。 |
程式範例
|
LACCL 12345 L2F
;ACC=12345.00 |
|
功能說明
將ACC暫存器內容(長整數32 Bits或浮點數),改變符號,結果存於ACC暫存器。
即:原來是正數→變成負數
原來是負數→變成正數
原來是零 →不改變
參數
無
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
C |
設定同Z,ACC為零則設定(C=1),否則(C=0)。 |
|
V |
此指令執行前,若ACC=-2147483648(整數),取負號則溢位!(V=1),ACC=+2147483647,因為長整數的範圍是:-2147483648∼+2147483647。 |
|
FLOAT |
若ACC原來是短整數,運算結果也是短整數;若ACC原來是浮點數,FLOAT=1,則會先依照無條件捨去法轉換成長整數,FLOAT=0,再做ANDL運算,運算結果也是長整數。 |
程式範例
|
LACCF -105.2312 ;ACC = -105.2312 NEG
;ACC = +105.2312 LACCL 253 ;ACC =
253 NEG
;ACC = -253 |
|
功能說明
將ACC暫存器內容取絕對值,長整數或浮點數均可執行。
參數
無
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
C |
C=0。 |
|
V |
此指令執行前,若ACC=-2147483648(整數),取絕對值則溢位!(V=1),ACC=+2147483647,因為長整數的範圍是:-2147483648∼+2147483647。 |
程式範例
|
LACCF -105.2312 ;ACC = -105.2312 ABS
;ACC = +105.2312 LACCL -253
;ACC = -253 ABS
;ACC = 253 |
|
功能說明
將ACC暫存器的內容除以長整數(32 Bits)資料,運算之餘數存於ACC暫存器。
運算結果一律是長整數.如ACC原來是浮點數,會自動轉換成長整數再運算。
參數
|
Dint |
要放進ACC的長整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
除法運算前,若ACC(整數)等於-2147483648或ACC(浮點數)小於等於-2147483648.0,則溢位(V=1)。 |
程式範例
|
LACCL 10000004; MODL 9999999
;ACC=5 LACCL 10000003; MODL @var1
;ACC=4 ;MODL應用於陣列指標 LACCW #var2 SALW @AR4 LACCL 10000002 MODL *AR4[1] ;ACC=3
LACCL 10000001
MOVL @XAR4,9999999 MODL @XAR4
;ACC=2 |
|
功能說明
將浮點數(48 Bits)資料載入ACC暫存器。
參數
|
Real48 |
要放進ACC的浮點數資料。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
程式範例
|
LACCF 123.456
;ACC=123.456 LACCF @var1
;ACC=1234.45678 ;LACCF應用於陣列指標 LACCW #var2 SALW AR4 LACCF *AR4[2]
;ACC=1234.56789 |
|
功能說明
將長整數(32 Bits)資料載入ACC暫存器。EXP暫存器不受影響。
參數
|
Dint |
要放進ACC的長整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
程式範例
|
LACCL 32768
;ACC = 32768,載入常數。 LACCL @var1
;ACC = var1,將變數var1的值拷貝到ACC。 LACCL @XAR5
;ACC = XAR7暫存器。 ;LACCL應用在陣列指標。 LALW #var2 SALW @AR4 LACCL *AR4[1]
;ACC <- *(AR4+3) (指標) |
|
功能說明
將長整數(16 Bits)資料載入ACC暫存器。EXP暫存器不受影響。
參數
|
Int |
要放進ACC的短整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
程式範例
|
LACCW 32767
;ACC = 32767 (常數) LACCW @var1
;ACC = var1 (變數) LACCW @AR4
;ACC = AR4 (暫存器) ;LALW應用於陣列指標 LALW #var2
;將var2陣列的起始地址放入AL。 SALW @AR1
;將AL中存放的var陣列起始地址,拷貝到AR1暫存器。 LACCW *AR1[1]
;ACC=2001。 |
|
功能說明
將短整數(16 Bits)資料載入AL暫存器,不影響AH。
參數
|
Dint |
要放進AL的短整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
程式範例
|
LALW 32767 ;AL = 32767 LALW @var1 ;AL = var1 LALW @AR4 ;AL = AR4 ;LALW於陣列指標應用 LALW #var2 SALW @AR1 LALW *AR1[1] ;AL = 999 |
|
功能說明
將短整數(16 Bits)資料載入AH暫存器。
參數
|
Int |
要放進AH的短整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
程式範例
|
LAHW 32767
;AH = 32767 LAHW @var1
;AH = var1 LAHW @AR1
;AH = AR1 ;LAHW於陣列指標應用 LALW #var2 SALW @AR2 LAHW *AR2[1]
;AH = 2001 |
|
功能說明
將參數PX-XX(長整數32 Bits)資料載入ACC暫存器。
參數
|
Int |
欲載入參數的索引值(IDX)。 定址方式:
|
|||||||||||||||
|
Axis_Grp |
用來指定本指令作用的軸(Axis)與參數群組(Grp)。
|
|||||||||||||||
錯誤種類
|
0x207 |
參數群組值錯誤 |
|
0x209 |
參數索引值錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
影響旗標
|
N
Z P |
視ACC內容而定。 |
程式範例
|
LACC_PR 4,X_P2 ;ACC = (axis X :P2-04) LACC_PR 3,Y_P5 ;ACC = (axis Y :P5-03) |
|
功能說明
將單一軸的系統變數載入ACC暫存器,存放成長整數(32 bits)。
參數
|
Int |
欲載入系統變數的編號(0∼254);編號參考參數P0-02或監控變數表。定義請參考編號定義表。 定址方式:
|
||||||||||
|
Axis |
用來指定本指令作用的(單一)軸(Axis)。
當Axis為0時,則軸別根據SELECT指令。 |
錯誤種類
|
0x231 |
系統變數索引值錯誤 |
|
0x227 |
設定的軸出錯 (設定多軸、軸值出錯、未選定軸) |
影響旗標
|
N
Z P |
視ACC內容而定。 |
程式範例
|
LACCL_SV 0,X_AXIS ;ACC = X軸回授位置 LACCL_SV 7,Y_AXIS ;ACC = Y軸馬達轉速 |
編號定義表
|
DEC |
HEX |
ALIAS |
變數名稱/屬性 |
內容說明 |
|
0 |
0x0 |
V00h_FB_PUU |
回授位置(PUU)B |
馬達編碼器目前回授的位置座標,單位為使用者單位PUU。 |
|
1 |
0x1 |
V01h_CMD_PUU |
位置命令(PUU)B |
位置命令的目前座標,單位為使用者單位PUU。 |
|
2 |
0x2 |
V02h_Err_PUU |
位置誤差(PUU)B |
位置命令與回授位置的差,單位為使用者單位PUU。 |
|
3 |
0x3 |
V03h_FB_Pulse |
回授位置(pulse)B |
馬達編碼器目前回授的位置座標,單位為編碼器單位pulse。 |
|
4 |
0x4 |
V04h_PT_CMD_Pulse |
位置命令(pulse)B |
位置命令的目前座標,單位為編碼器單位pulse。 |
|
5 |
0x5 |
V05h_Err_Pulse |
位置誤差(pulse)B |
位置命令與回授位置的差,單位為編碼器單位pulse。 |
|
6 |
0x6 |
V06h_Pls_Cmd_Freq |
脈波命令輸入頻率[Kpps] |
驅動器接收到脈波命令的頻率,單位為 Kpps。 |
|
7 |
0x7 |
V07h_Spd_Now_rpm_lpf |
馬達轉速 or 速度回授 [r/min] |
馬達目前轉速,單位為 0.1 r/min。 |
|
8 |
0x8 |
V08h_SCMD_Volt |
速度輸入命令(類比) [Volt] |
由類比通道輸入的速度命令,單位為 0.01 Volt。 |
|
9 |
0x9 |
V09h_SCMD_RPM |
速度輸入命令 (整合)[r/min] |
整合的速度命令,單位為 1 r/min。 |
|
10 |
0xA |
V0Ah_TCMD_Vot |
扭矩輸入命令(類比) [Volt] |
由類比通道輸入的扭力命令,單位為 0.01 Volt。 |
|
11 |
0xB |
V0Bh_TCMD_1Per |
扭矩輸入命令(整合) [%] |
整合的扭力命令,單位為 Percent (%)。 |
|
12 |
0xC |
V0Ch_AVG_LOAD |
平均負載率 [%] |
驅動器輸出的平均負載比率,單位為 Percent (%)。 |
|
13 |
0xD |
V0Dh_PEAK_Load |
峰值負載率 |
驅動器輸出的最大負載比率,單位為 Percent (%)。 |
|
14 |
0xE |
V0Eh_Bus_Volt |
DC Bus電壓 |
整流後的電容器電壓,單位為Volt。 |
|
15 |
0xF |
V0Fh_JL_RATIO |
負載慣量比 |
負載慣量與馬達慣量的比率,單位為 0.1倍。 |
|
16 |
0x10 |
V10h_IGBT_Temp |
IGBT溫度 |
IGBT的溫度,單位為°C。 |
|
17 |
0x11 |
V11h_Rsn_Freq |
共振頻率 |
系統的共振頻率,包含2組頻率:F1與F2 |
|
18 |
0x12 |
V12h_Z_Diff_pos |
與Z相偏移量 |
相對於編碼器Z相的絕對脈波數,也就是Z相原點處的數值為0 往前往後分別定為正負5000 pulse; |
|
27 |
0x1B |
V1Bh_Z_Diff_PUU |
|
|
|
28 |
0x1C |
V1Ch_Alm_Err |
|
|
|
29 |
0x1D |
V1Dh_AUX_FB_PUU |
|
|
|
30 |
0x1E |
V1Eh_AUX_Err_PUU |
|
|
|
31 |
0x1F |
V1Fh_MA_DIFF_PUU |
|
|
|
32 |
0x20 |
V20h_TACC |
加速度時間 |
0加速到 3000 RPM 時間,單位 ms |
|
33 |
0x21 |
V21h_TDEC |
減速度時間 |
3000減速到0 RPM 時間,單位 ms |
|
39 |
0x27 |
V27h_DI |
DI狀態(整合) |
整合的驅動器DI狀態,每一位元對應一DI通道。 |
|
40 |
0x28 |
V28h_DO |
DO狀態(硬體) |
驅動器DO硬體實際輸出的狀態,每一位元對應一DO通道。 |
|
41 |
0x29 |
V29h_Drv_STATUS |
驅動器狀態 |
傳回參數 P0-46,請參考該參數說明 |
|
43 |
0x2B |
代補上 ALIAS |
CAP抓取資料 |
最新一次由CAP硬體所抓取到的資料 |
|
48 |
0x30 |
V30h_Aux_ENC_Cnt |
輔助編碼器CNT |
輔助編碼器(CN5)輸入的脈波計數值。 |
|
49 |
0x31 |
V31h_Pls_Cmd_Cnt |
脈波命令CNT |
脈波命令(CN1)輸入的脈波計數值。 |
|
50 |
0x32 |
V32h_Spd_Cmd_rpm |
速度命令(整合) |
整合的速度命令,單位為 0.1 r/min。 |
|
51 |
0x33 |
V33h_Spd_Now_rpm |
速度回授(立即) |
馬達目前實際速度,單位為 0.1 r/min。 |
|
52 |
0x34 |
V34h_Spd_Now_rpm_lpf |
速度回授(濾波) |
馬達目前實際速度,單位為 0.1 r/min(經過低通濾波器)。 |
|
53 |
0x35 |
V35h_Trq_Cmd_0_1Per |
扭力命令(整合) |
整合的扭力命令,單位為 0.1 Percent (%)。 |
|
54 |
0x36 |
V36h_Trq_Now_0_1Per |
扭力回授 |
馬達目前實際扭力,單位為 0.1 Percent (%)。 |
|
55 |
0x37 |
V37h_Trq_Now_Amp |
電流回授 |
馬達目前實際電流,單位為 0.01 安培(Amp)。 |
|
56 |
0x38 |
V38h_DC_Bus_Volt |
DC Bus電壓 |
整流後的電容器電壓,單位為0.1 伏特(Volt)。 |
|
57 |
0x39 |
V39h_JL_RATIO_1 |
同 V0Fh_JL_RATIO |
|
|
58 |
0x3A |
V3Ah_Spd_Now_1_rpm |
|
|
|
59 |
0x3B |
V3Bh_ECAM_MST_CNT |
ECAM主動軸脈波 (累計) |
電子凸輪主動軸的累計脈波數,同參數P5-86。 |
|
60 |
0x3C |
V3Ch_ECAM_MST_INC |
ECAM主動軸脈波 (增量) |
電子凸輪主動軸的脈波數增量,每1 msec的增加量。 |
|
61 |
0x3D |
V3Dh_ECAM_MST_LEAD |
ECAM主動軸脈波 (前置量) |
電子凸輪主動軸脈波的前置量,用來判斷嚙合條件 |
|
62 |
0x3E |
V3Eh_ECAM_X_POS |
ECAM 凸輪主軸位置 |
電子凸輪主軸的位置,表格的輸入。 |
|
63 |
0x3F |
V3Fh_ECAM_Y_POS |
ECAM 從動軸位置 |
電子凸輪從動軸的位置,表格的輸出。 |
|
64 |
0x40 |
V40h_PCMD |
PR命令終點暫存器 |
位置命令的終點(Cmd_E) |
|
65 |
0x41 |
V41h_PCMD_OUT |
PR命令輸出暫存器 |
位置命令累計的輸出(Cmd_O) |
|
66 |
0x42 |
V42h_PCMD_AMF |
|
|
|
67 |
0x43 |
V43h_SCMD |
PR目標速度 |
PR模式路徑命令的目標速度,單位是PPS(Pulse Per Second)。 |
|
68 |
0x44 |
V44h_SCMD_AMF_IN |
PR當前速度-S型濾波器(輸入) |
|
|
69 |
0x45 |
V45h_SCMD_AMF_OUT |
PR當前速度-S型濾波器(輸出) |
|
|
70 |
0x46 |
V46h_SCMD_OUT_M |
PR輪廓速度命令(主插值) |
當前毫秒主插值器的輸出速度,單位:PUU/ms |
|
71 |
0x47 |
V47h_SCMD_OUT_A |
PR輪廓速度命令(副插值) |
當前毫秒副插值器的輸出速度,單位:PUU/ms |
|
72 |
0x48 |
V48h_TH_PCMD_OUT |
|
|
|
73 |
0x49 |
V49h_TH_SCMD_OUT |
|
|
|
74 |
0x4A |
V4Ah_CR_XC |
|
|
|
75 |
0x4B |
V4Bh_CR_YC |
|
|
|
76 |
0x4C |
V4Ch_SCMD_OUT |
PR輪廓速度命令(總和) |
當前毫秒插值器的輸出速度,單位:PUU/ms |
|
77 |
0x4D |
V4Dh_VTACC |
向量命令加速度時間 |
0加速到 3000 RPM 時間,單位 ms |
|
78 |
0x4E |
V4Eh_VTDEC |
向量命令減速度時間 |
3000減速到0 RPM 時間,單位 ms |
|
79 |
0x4F |
V4Fh_VSPD |
向量命令目標速度 |
PPS |
|
80 |
0x50 |
V50h_CSAX_GEAR_N |
|
|
|
81 |
0x51 |
V51h_CSAX_GEAR_M |
同步修正軸-脈波輸入增量 |
同步抓取修正軸作用時,相鄰兩次CAP之間,所收到的脈波數量,可用來量測標記(Mark)的實際距離! |
|
84 |
0x54 |
V54h_CSAX_GEAR_DIFF |
同步修正軸-同步誤差脈波數 |
同步抓取修正軸作用時,實際輸出脈波與目標脈波的累積誤差值。若同步達成,此數值接近0! |
|
85 |
0x55 |
V55h_ALG_ERR_RATE |
對位誤差率 (單位: 0.1%) |
DI:ALGN 觸發凸輪對位後計算出的對位誤差率。 |
|
87 |
0x57 |
V57h_CAP_TIME_OFS |
抓取事件發生點 (單位: us) |
無法使用韌體內建的高速抓取計算時間誤差的情況,可以參考此系統變數得到 DI:CAP 發生時間點是該毫秒(ms) 中哪一個微秒(us)。 |
|
88 |
0x58 |
V58h_CSAX_G_Rate |
同步修正軸-誤差率(即時) |
同步抓曲軸實際脈波與 P5-78 數值的誤差比例 (單位:
0.1 %) |
|
89 |
0x59 |
V59h_CSAX_G_LPF |
同步修正軸-誤差率(濾波後) |
同步抓曲軸實際脈波與 P5-78 數值的誤差比例,經過濾波處理較緩和 (單位: 0.1 %) |
|
91 |
0x5B |
V5Bh_FB_PUU_CR |
分度座標回授位置(PUU) |
根據 P2-52 定義的分度範圍,由直線座標回授所轉換過的分度座標回授值。單位: PUU,範圍 0 ∼ (P2-52-1) |
|
功能說明
將ACC暫存器(48 Bits)浮點數資料存入記憶體或暫存器。
參數
|
Real48 |
要放進ACC的浮點數資料。
|
錯誤種類
無
影響旗標
無
程式範例
|
SACCF @var1
;var1 = ACC ;SACCF應用於陣列指標 LALW #var2 SALW @AR4 SACCF *AR4[1]
;var2[1] = ACC |
|
功能說明
將ACC暫存器(32 Bits)浮點數資料存入記憶體或暫存器。
參數
|
Real48 |
將ACC暫存器(32 Bits)長整數資料存入記憶體或暫存器。
|
錯誤種類
無
影響旗標
|
V |
當ACC原來是浮點數,轉換成長整數後超出範圍,若發生溢位,ACC自動載入最大值:+2147483647或-2147483648,正負根據N旗號。 |
程式範例
|
SACCL @var1
;var1 = ACC SACCL @XAR1
;XAR4 = ACC ;SACCL應用於陣列指標 LALW #var2 SALW @AR2 SACCL *AR2[1] ;var2[1] = ACC |
|
功能說明
將AL暫存器(16 Bits)短整數資料存入記憶體或暫存器。
參數
|
Int |
要放進AL的短整數。
|
錯誤種類
無
影響旗標
無
程式範例
|
SALW @var1
;var1 = AL SALW @AR1
;AR1 = AL ;SALW應用於陣列指標 LALW #var2 SALW @AR2 SALW *AR2[1]
;var2[1] = AL |
|
功能說明
將AH暫存器(16 Bits)短整數資料存入記憶體或暫存器。
參數
|
Int |
要放進AH的短整數。
|
錯誤種類
無
影響旗標
無
程式範例
|
SAHW @VAR_1 ;VAR_1 <- AH (變數) SAHW *AR4[3] ;*(AR4+3) <- AH (指標) SAHW @AR4 ;AR4 <- AH
(暫存器) |
|
功能說明
將ACC暫存器(長整數32 Bits)資料存入P參數(PX-XX)。
參數寫入時,必須遵循P參數屬性,例如:有的參數無法於Servo On時設定。
參數
|
Int |
欲存入參數的索引值(IDX)。 定址方式:
|
|||||||||||||||
|
Axis_Grp |
用來指定本指令作用的軸(Axis)與參數群組(Grp)。
|
|||||||||||||||
錯誤種類
|
0x207 |
參數群組值錯誤 |
|
0x209 |
參數索引值錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
影響旗標
無
程式範例
|
LACCL 1
;ACC = 1 SACC_PR 30,X_P2 ;X軸
P2-30 = 1 (強制 X 軸 Servo ON) |
|
功能說明
將ACC暫存器(長整數32 Bits)資料存入系統變數。
參數寫入時,必須遵循P參數屬性,例如:有的參數無法於Servo On時設定。
參數
|
Int |
欲存入參數的索引值(IDX)。 定址方式:
|
||||||||||
|
Axis |
用來指定本指令作用的(單一)軸(Axis)。
當Axis為0時,則軸別根據SELECT指令。 |
錯誤種類
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
影響旗標
無
程式範例
|
LACCL 1
;ACC = 1 SACC_PR 30,X_P2 ;X軸
P2-30 = 1 (強制 X 軸 Servo ON) |
編號定義表
|
DEC |
HEX |
ALIAS |
變數名稱/屬性 |
內容說明 |
|
148 |
0x94 |
Extra_ECAM_Master_Pls |
額外的凸輪主軸脈波 |
|
|
149 |
0x95 |
DA_CH1 |
第一路類比輸出 |
ACC 內的數值單位為 0.001 Volt |
|
150 |
0x96 |
DA_CH2 |
第二路類比輸出 |
ACC 內的數值單位為 0.001 Volt |
|
功能說明
將浮點數(48 Bits)資料與ACC暫存器的資料相加,再存於ACC暫存器,運算結果仍為浮點數。
參數
|
Real48 |
欲相加的浮點數資料。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
C
V |
一律清除。 |
程式範例
|
LACCF 1.1 ADDF 1.2
;ACC = ACC + 1.2 ADDF @var1
;ACC = ACC + var1 ;ADDF應用於陣列指標 LALW #var2 SALW @AR1 LACCF 1.1 ADDF *AR1[1] ;ACC =
ACC + var2[1] |
|
功能說明
將長整數(32 Bits)資料與ACC暫存器的資料相加,再存於ACC暫存器。如ACC原來是整數,運算結果也是整數;如ACC原來是浮點數,運算結果則是浮點數。
參數
|
Dint |
欲相加的長整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
若運算後是長整數而加法運算後超出長整數範圍(-2147483648∼+2147483647),則溢位(V=1),若為浮點數則一律清除。 |
|
C |
若運算後是長整數則視ACC內容而定,若為浮點數則一律清除。 |
程式範例
|
LACCL 10000001 ADDL 10000002 ;ACC = ACC + 10000002 ADDL @var1 ;ACC =
ACC + var1 ;ADDL應用於陣列指標 LALW #var2 SALW @AR1 LACCL 1 ADDL *AR1[1] ;ACC = ACC + var2[1] |
|
功能說明
將短整數(16 Bits)資料與ACC暫存器的資料相加,再存於ACC暫存器(32 Bits)。如ACC原來是整數,運算結果也是整數;如ACC原來是浮點數,運算結果則是浮點數。
參數
|
Int |
欲相加的短整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
若運算後是長整數而加法運算後超出長整數範圍(-2147483648∼+2147483647),則溢位(V=1),若為浮點數則一律清除。 |
|
C |
若運算後是長整數則視ACC內容而定,若為浮點數則一律清除。 |
程式範例
|
LACCW 1 ADDW 1
;ACC = ACC + 1 ADDW @var1 ;ACC =
ACC + var1 ;ADDW應用於陣列指標 LALW #var2 SALW @AR1 LACCW 1 ADDW *AR1[1] ;ACC = ACC + var2[1] |
|
功能說明
ACC暫存器的資料減浮點數(48 Bits)資料,再存於ACC暫存器。運算結果仍為浮點數。
參數
|
Real48 |
欲相加的浮點數資料。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
C
V |
一律清除。 |
程式範例
|
LACCF 1.1 SUBF 0.2
;ACC = ACC - 0.2 SUBF @var1
;ACC = ACC - var1 ;SUBF應用於陣列指標 LALW #var2 SALW @AR1 LACCF 1.1 SUBF *AR1[1] ;ACC =
ACC - var2[1] |
|
功能說明
ACC暫存器的資料減長整數(32 Bits)資料,再存於ACC暫存器。如ACC原來是整數,運算結果也是整數;如ACC原來是浮點數,運算結果則是浮點數。
參數
|
Dint |
欲相減的長整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
若運算後是長整數而加法運算後超出長整數範圍(-2147483648∼+2147483647),則溢位(V=1),若為浮點數則一律清除。 |
|
C |
若運算後是長整數則視ACC內容而定,若為浮點數則一律清除。 |
程式範例
|
LACCL 10000001 SUBL 10000002 ;ACC = ACC - 10000002 SUBL @var1 ;ACC =
ACC - var1 ;ADDL應用於陣列指標 LALW #var2 SALW @AR1 LACCL 10000001 SUBL *AR1[1] ;ACC = ACC - var2[1] |
|
功能說明
ACC暫存器的資料減短整數(16 Bits)資料,再存於ACC暫存器。如ACC原來是整數,運算結果也是整數;如ACC原來是浮點數,運算結果則是浮點數。
參數
|
Int |
欲相減的短整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
若運算後是長整數而加法運算後超出長整數範圍(-2147483648∼+2147483647),則溢位(V=1),若為浮點數則一律清除。 |
|
C |
若運算後是長整數則視ACC內容而定,若為浮點數則一律清除。 |
程式範例
|
LACCW 1 SUBW 1
;ACC = ACC - 1 SUBW @var1 ;ACC =
ACC - var1 ;SUBW應用於陣列指標 LALW #var2 SALW @AR1 LACCW 1 SUBW *AR1[1] ;ACC = ACC - var2[1] |
|
功能說明
ACC暫存器的資料乘以浮點數(48 Bits)資料,再存於ACC暫存器。運算結果仍為浮點數。
參數
|
Real48 |
欲相乘的浮點數資料。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
一律清除。 |
程式範例
|
LACCF 1.1 MULF 0.2
;ACC = ACC x 0.2 MULF @var1
;ACC = ACC x var1 ;MULF應用於陣列指標 LALW #var2 SALW @AR1 LACCF 1.1 MULF *AR1[1] ;ACC =
ACC x var2[1] |
|
功能說明
ACC暫存器的資料乘以長整數(32 Bits)資料,再存於ACC暫存器。如ACC原來是整數,運算結果也是整數;如ACC原來是浮點數,運算結果則是浮點數。
參數
|
Dint |
欲相乘的長整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
若運算後是長整數而加法運算後超出長整數範圍(-2147483648∼+2147483647),則溢位(V=1),若為浮點數則一律清除。 |
|
C |
若運算後是長整數則視ACC內容而定,若為浮點數則一律清除。 |
程式範例
|
LACCL 2 MULL 10000002 ;ACC = ACC x 10000002 MULL @var1 ;ACC =
ACC x var1 ;MULL應用於陣列指標 LALW #var2 SALW @AR1 LACCL 2 MULL *AR1[1] ;ACC = ACC x var2[1] |
|
功能說明
ACC暫存器的資料乘以短整數(16 Bits)資料,再存於ACC暫存器。如ACC原來是整數,運算結果也是整數;如ACC原來是浮點數,運算結果則是浮點數。
參數
|
Int |
欲相乘的短整數。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
若運算後是長整數而加法運算後超出長整數範圍(-2147483648∼+2147483647),則溢位(V=1),若為浮點數則一律清除。 |
|
C |
若運算後是長整數則視ACC內容而定,若為浮點數則一律清除。 |
程式範例
|
LACCW 1 MULW 2
;ACC = ACC x 2 MULW @var1 ;ACC =
ACC x var1 ;MULW應用於陣列指標 LALW #var2 SALW @AR1 LACCW 3 MULW *AR1[1] ;ACC = ACC x var2[1] |
|
功能說明
將ACC暫存器的內容除以浮點數(48 Bits)資料,結果存於ACC暫存器。運算結果一律是浮點數。
參數
|
Real48 |
欲相乘的浮點數資料。
|
錯誤種類
無
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
一律清除。 |
程式範例
|
LACCF 1.1 DIVF 2.2
;ACC = ACC÷2.2 DIVF @var1
;ACC = ACC÷var1 ;DIVF應用於陣列指標 LALW #var2 SALW @AR1 LACCF 1.1 DIVF *AR1[1] ;ACC =
ACC÷var2[1] |
|
功能說明
ACC暫存器的資料除以長整數(32 Bits)資料,再存於ACC暫存器。如ACC原來是整數,運算結果也是整數;如ACC原來是浮點數,運算結果則是浮點數。
商不會四捨五入。
參數
|
Dint |
欲相除的長整數。
|
錯誤種類
除數為0(沒有ERROR CODE)
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
若運算後是長整數,運算前若ACC等於-2147483648,V=1;若為浮點數則一律清除。 |
程式範例
|
LACCL 20000002 DIVL 2
;ACC = ACC ÷ 2 DIVL @var1 ;ACC =
ACC ÷ var1 ;DIVL應用於陣列指標 LALW #var2 SALW @AR1 LACCL 40000004 DIVL *AR1[1] ;ACC = ACC ÷ var2[1] |
|
功能說明
ACC暫存器的資料除以短整數(16 Bits)資料,再存於ACC暫存器。如ACC原來是整數,運算結果也是整數;如ACC原來是浮點數,運算結果則是浮點數。
參數
|
Int |
欲相除的短整數。
|
錯誤種類
除數為0(FW 沒有 ERROR CODE)
影響旗標
|
N
Z P |
視ACC內容而定。 |
|
V |
若運算後是長整數,運算前若ACC等於-2147483648,V=1;若為浮點數則一律清除。 |
程式範例
|
LACCW 99 DIVW 9
;ACC = ACC x 2 DIVW @var1 ;ACC =
ACC x var1 ;DIVW應用於陣列指標 LALW #var2 SALW @AR1 LACCW 66 DIVW *AR1[1] ;ACC = ACC x var2[1] |
|
功能說明
ACC暫存器的資料與浮點數(48 Bits)資料作比較,ACC暫存器內容不變。
參數
|
Real48 |
欲相比較的浮點數資料。
|
錯誤種類
無
影響旗標
|
N
Z P |
視比較結果而定。 |
程式範例
|
LACCF
3.3
;ACC = 3.3。
CMPF 2.2 JMP_C
$L_END,GEQ
;ACC > 2.2,跳躍到L_END。 LACCF
4.4
;未執行。 JMP_C
$L_END,UNC
;未執行。 L_END: LACCF
0.0 |
|
功能說明
ACC暫存器的資料與長整數(32 Bits)資料作比較,ACC暫存器內容不變。
參數
|
Dint |
欲相比較的長整數資料。
|
錯誤種類
無
影響旗標
|
N
Z P C |
視ACC而定。 |
程式範例
|
LACCL
10000001
;ACC = 10000001。
CMPL 10000000 JMP_C
$L_END,GEQ
;ACC > 10000000,跳躍到L_END。 LACCL
10000002 ;未執行。 JMP_C
$L_END,UNC
;未執行。 L_END: LACCL 0 |
|
功能說明
AL暫存器的資料與短整數(16 Bits)資料作比較,AL暫存器內容不變。
參數
|
Int |
欲相比較的短整數資料。
|
錯誤種類
無
影響旗標
|
N
Z P C |
視ACC而定。 |
程式範例
|
LACCW
2
;ACC = 2。
CMPL 1 JMP_C
$L_END,GEQ
;ACC > 1,跳躍到L_END。 LACCL
3
;未執行。 JMP_C
$L_END,UNC
;未執行。 L_END: LACCL 0 |
|
功能說明
選擇座標系的組成軸,作為後續Motion命令的作用軸。
參數
|
Int |
每一個bit指定一個軸,定義如下:
參數OP1的內容(Bit 0、1、2)表示各軸是否有被選取,當作後續Motion的命令軸,若為0表示未選取,非零表示選取。各軸的命令,存於Motion命令陣列內,順序固定為X(0)、Y(1)、Z(2)。 定址方式:
|
錯誤種類
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
影響旗標
無
程式範例
|
;選擇X的Motion模式。 SELECT X_AXIS MODE PATH |
|
功能說明
設定 Motion 的命令模式。
參數
|
Int |
Motion
命令模式,mode定義如下:
定址方式:
|
錯誤種類
|
0x221 |
設定未定義模式號碼 |
影響旗標
|
N
Z P |
視ACC內容而定。 |
程式範例
|
;選擇X的Motion模式。 SELECT X_AXIS MODE PATH |
|
功能說明
在路徑模式下,以點對點運動方式將速度減速至0然後停止。永遠以插斷方式執行,因此不必執行指令: MC_OPT 0x01,停止過程以目前速度,遵循減速時間TDEC減速至零,根據參數決定要不要使用路徑S濾波器。向量運動用此指令停止時,合成路徑不會維持在原始路徑上。由於是在路徑中途停止,因此已輸出的命令位置並不等於終點位置,如果想要繼續未完成的路徑,可以執行PINC指令,並設定所有軸的增量命令為零即可。
參數
|
Dint |
設定停止過程是否使用路徑 S 濾波器: 0: 減速過程不使用路徑 S 濾波器。 1: 減速過程使用路徑 S 濾波器。 當參數使用常數跟暫存器設定,則所有選定的軸(SELECT)共用此參數;使用變數或指標方式則各別軸可以設定不同的是否使用路徑S濾波器設定。 定址方式:
|
錯誤種類
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
影響旗標
無
程式範例
1. 單軸指令:
|
SELECT X_AXIS
STOP 1
;Stop the Motion with S-Curve Filter. |
2. 多軸指令:
|
SELECT X_Y_AXIS
STOP @sCurveFilter[0] ;Stop the Motion with/without
S-Curve Filter. |
|
功能說明
在路徑模式下,設定點對點運動各軸的加速時間.單位msec,代表速度由0加速至3000
rpm所需的時間。設定範圍是1∼65536。
參數
|
Dint |
值為0加速3000 rpm加速時間,單位msec。 參數使用變數或指標定址時,不論單軸或多軸指令都使用連續3個長整數(32 bits)組成的命令陣列的開頭,用來儲存多軸加速時間,其中陣列第一個長整數存放X軸參數,第二個存放Y軸參數,第三個存放Z軸參數。 定址方式:
|
錯誤種類
|
0x211 |
多軸命令時,輸入參數不可為常數或是暫存器 |
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
警告種類
|
-11 |
加速參數超過容許範圍 |
影響旗標
無
程式範例
1. 單軸指令:
|
;選擇X軸進行JOG。 SELECT X_AXIS TACC 10000 TDEC 10000 JOG 200000 |
2. 多軸指令:
|
SELECT X_Y_Z_AXIS TACC @acc[0] TDEC @dec[0] JOG @speed[0] |
|
功能說明
將參數PX-XX(長整數32 Bits)資料載入ACC暫存器。
參數
|
Dint |
在路徑模式下,設定點對點運動各軸的減速時間.單位msec,代表速度由3000 rpm減速至0 rpm所需的時間。設定範圍是1∼65536。 定址方式:
|
錯誤種類
|
0x211 |
多軸命令時,輸入參數不可為常數或是暫存器 |
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
錯誤種類
|
-12 |
減速參數超過容許範圍 |
影響旗標
無
程式範例
1.
單軸指令:
|
SELECT X_AXIS TACC 10000 TDEC 10000 JOG 200000 |
2.
多軸指令:
|
SELECT X_Y_Z_AXIS TACC @acc[0] TDEC @dec[0] JOG @speed[0] |
|
功能說明
在路徑模式下,設定點對點運動各軸的目標速度。單位PPS(Pulse Per Second)。
參數
|
Dint |
代表點對點運動各軸的目標速度,單位為 PPS(Pulse Per Second),設定範圍是10∼2147483647。 參數使用變數或指標定址時,不論單軸或多軸指令都使用連續3個長整數(32 bits)組成的命令陣列的開頭,用來儲存多軸參數,其中陣列第一個長整數存放X軸參數,第二個存放Y軸參數,第三個存放Z軸參數。 PPS與rpm的轉換公式為: PPS*Gear Ratio*60/(pulse of 1 turn of the encoder)=rpm 定址方式:
|
錯誤種類
|
0x211 |
多軸命令時,輸入參數不可為常數或是暫存器 |
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
影響旗標
無
程式範例
1. 單軸指令:
|
SELECT X_AXIS TACC 10000 TDEC 10000 SPD 200000 PINC 400000 |
2. 多軸指令:
|
SELECT X_Y_Z_AXIS TACC @acc[0] TDEC @dec[0] SPD @speed[0] PINC @incPos[0] |
|
功能說明
在路徑模式下,執行獨立軸增量位置命令,單位為Pulse。
本命令只在Mode為路徑模式時有效。
命令以上次命令為起點,加上本次位移量作為本次命令。
參數
|
Dint |
值為增量位置量,單位為Pulse。 參數使用變數或指標定址時,不論單軸或多軸指令都使用連續3個長整數(32 bits)組成的命令陣列的開頭,用來儲存多軸參數,其中陣列第一個長整數存放X軸參數,第二個存放Y軸參數,第三個存放Z軸參數。 定址方式:
|
錯誤種類
|
0x211 |
多軸命令時,輸入參數不可為常數或是暫存器 |
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x237 |
在PLC Task執行不可等待 |
影響旗標
無
程式範例
1. 單軸指令:
|
SELECT X_AXIS TACC 10000 TDEC 10000 SPD 200000 PINC 400000 |
2. 多軸指令:
|
SELECT X_Y_Z_AXIS TACC @acc[0] TDEC @dec[0] SPD @speed[0] PINC @incPos[0] |
|
功能說明
在路徑模式下,執行獨立軸絕對位置命令,單位為Pulse。
本命令只在Mode為路徑模式時有效。
命令為相對於原點的絕對命令。
參數
|
Dint |
值為絕對位置量,單位為Pulse。 參數使用變數或指標定址時,不論單軸或多軸指令都使用連續3個長整數(32 bits)組成的命令陣列的開頭,用來儲存多軸參數,其中陣列第一個長整數存放X軸參數,第二個存放Y軸參數,第三個存放Z軸參數。 定址方式:
|
錯誤種類
|
0x211 |
多軸命令時,輸入參數不可為常數或是暫存器 |
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x235 |
絕對位置命令溢位 |
|
0x237 |
在PLC Task執行不可等待 |
影響旗標
無
程式範例
1. 單軸指令:
|
SELECT X_AXIS TACC 10000 TDEC 10000 SPD 200000 PABS 400000 |
2. 多軸指令:
|
SELECT X_Y_Z_AXIS TACC @acc[0] TDEC @dec[0] SPD @speed[0] PABS @incPos[0] |
|
功能說明
當Mode為路徑模式時,執行獨立軸分度位置命令,單位為PUU。本命令必須配合P2-52參數配置分度座標系大小及MC_OPT指令設定分度命令方向。
參數
|
Dint |
分度位置量,單位為PUU。
參數使用變數或指標定址時,不論單軸或多軸指令都使用連續3個長整數(32
bits)組成的命令陣列的開頭,用來儲存多軸參數。
|
錯誤種類
|
0x0227 |
選軸錯誤 |
|
0x0223 |
模式錯誤 |
|
0x227 |
未選擇操作軸 |
|
0x237 |
在 PLC Task執行不可等待 |
影響旗標
無
程式範例
|
SELECT X_AXIS MC_OPT 8 MODE PATH TACC 1000 TDEC 1000 SPD 1000000 PIDX 0 |
|
功能說明
在路徑模式下,執行獨立軸速度控制命令,單位為PPS(Pulse Per Second)。命令以目前速度為起點,根據加減速時間設定,造出速度曲線。當速度命令達到設定值時,本指令結束,但速度命令會持續輸出。
參數
|
Dint |
值為軸速度,單位PPS(Pulse Per Second)。 參數使用變數或指標定址時,不論單軸或多軸指令都使用連續3個長整數(32 bits)組成的命令陣列的開頭,用來儲存多軸參數,其中陣列第一個長整數存放X軸參數,第二個存放Y軸參數,第三個存放Z軸參數。 定址方式:
|
錯誤種類
|
0x211 |
多軸命令時,輸入參數不可為常數或是暫存器 |
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x237 |
在PLC Task執行不可等待 |
影響旗標
無
程式範例
1. 單軸指令:
|
SELECT X_AXIS TACC 10000 TDEC 10000 JOG 200000 |
2. 多軸指令:
|
SELECT X_Y_Z_AXIS TACC @acc[0] TDEC @dec[0] JOG @speed[0] |
|
功能說明
在路徑模式下,設定直線補間之增量位置命令,單位為Pulse。命令以上次命令為起點,加上本次位移量作為本次命令。
本命令只在Mode為路徑模式時有效。
參數
|
Dint |
值為直線補間之增量位置量,單位為Pulse。 須使用連續3個長整數(32 BITS)組成的命令陣列的開頭,用來儲存多軸參數,其中陣列第一個長整數存放 X 軸參數,第二個存放 Y 軸參數,第三個存放 Z 軸參數。 定址方式:
|
錯誤種類
|
0x211 |
多軸命令時,輸入參數不可為常數或是暫存器 |
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x237 |
在PLC Task執行不可等待 |
影響旗標
無
程式範例
|
SELECT X_Y_AXIS VTACC 500 VTDEC 600 VSPD 50000 LINE @ln[0] ;@ln[0]為長度3之陣列。 |
|
功能說明
在路徑模式下,設定圓弧插補命令,當以Set選擇兩個成員軸時,執行圓弧插補,若選三個成員軸,則圓弧過程中多了Z方向的運動,即執行螺旋插補。
本命令只在Mode為路徑模式時有效。
參數
|
Dint |
參數為一塊連續4個長整數(32 bits)組成的命令陣列,其命令陣列組成如下:
C[0] ~ C[3]代表4個長整數(32 bits)變數。 角度的計算,由選擇的座標系第一軸正向往第二軸正向旋轉。 定址方式:
|
|||||||||||||||||||||||||||||||||||
錯誤種類
|
0x211 |
多軸命令時,輸入參數不可為常數或是暫存器 |
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x237 |
在PLC Task執行不可等待 |
影響旗標
無
程式範例
1. 圓弧插補:
|
SELECT X_Y_AXIS VTACC 500 VTDEC 600 VSPD 50000 ;par[0]
圓弧半徑 = 10000 ;par[1]
圓弧起始角度=180(90 degree) ;par[2]
圓弧角度=720(1 turn) CIRC @par2[0],XY |
2. 螺旋插補:
|
SELECT X_Y_Z_AXIS VTACC 500 VTDEC 600 VSPD 50000 ;par[0]
圓弧半徑 = 10000 ;par[1]
圓弧起始角度=180(90 degree) ;par[2]
圓弧角度=720(1 turn) ;par[3]
Z軸移動距離 CIRC @par3[0],XY+Z |
|
功能說明
設定向量模式的加速時間。
參數
|
Dint |
參數為向量模式加速時間,代表直線/圓弧插補的合成速度由0加速至3000 rpm所需的時間,單位msec,設定範圍是1∼65535。 定址方式:
|
錯誤種類
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x237 |
在 PLC Task執行不可等待 |
警告種類
|
-11 |
加速參數超過容許範圍 |
影響旗標
無
程式範例
|
SELECT X_Y_AXIS VTACC 500 VTDEC 600 VSPD 50000 LINE @ln[0] |
|
功能說明
設定向量運動的減速時間。
參數
|
Dint |
參數為向量運動減速時間,代表直線/圓弧插補的合成速度由3000減速至0 rpm所需的時間,單位msec,設定範圍是1∼65535。 定址方式:
|
錯誤種類
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x237 |
在PLC Task執行不可等待 |
錯誤種類
|
-12 |
減速參數超過容許範圍 |
影響旗標
無
程式範例
|
SELECT X_Y_AXIS VTACC 500 VTDEC 600 VSPD 50000 LINE @ln[0] |
|
功能說明
設定向量運動的向量速度。
參數
|
Dint |
參數為向量運動速度值,代表直線/圓弧插補的合成速度,單位PPS(Pulse Per Second)。 參數使用變數或指標定址時,不論單軸或多軸指令都使用連續3個長整數(32 bits)組成的命令陣列的開頭,用來儲存多軸參數,其中陣列第一個長整數存放X軸參數,第二個存放Y軸參數,第三個存放Z軸參數。 PPS與rpm的轉換公式為: PPS*Gear Ratio*60/(pulse of 1 turn of the encoder)=rpm 定址方式:
|
錯誤種類
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x237 |
在PLC Task執行不可等待 |
影響旗標
無
程式範例
|
SELECT X_Y_AXIS VTACC 500 VTDEC 600 VSPD 50000 LINE @ln[0] |
|
功能說明
設定Motion路徑的執行方式。
參數
|
Int |
參數以位元方式表示各個路徑執行屬性,當Bit值為 1表示該屬性有勾選,屬性定義如下:
定址方式:
|
||||||||||||||||||||||||||||
錯誤種類
無
影響旗標
無
程式範例
|
MC_OPT SEQ ;路徑以依序方式執行 MC_OPT INS
;路徑以插斷方式執行 MC_OPT OVL
;路徑以重疊方式執行 MC_OPT INS_OVL ;路徑以插斷+重疊方式執行 |
|
功能說明
設定驅動器內部迴路的命令,用於手動規劃運動控制。
請注意,與MODE命令相比,LOOP_CMD會取消自動補償,例如:加減速的補償。所有時間點的所有輸出必須自己設計與規劃。
參數
|
Int |
迴路模式:
定址方式:
|
||||||||||||||||||||||||||
|
Axis |
等待的軸代號:
|
錯誤種類
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x239 |
參數錯誤 |
影響旗標
無
程式範例
|
SELECT X_AXIS LACCL 200 LOOP_CMD 0x20,1 ;Output position command from
X-Axis |
|
功能說明
將長整數(32 bits)的值設定為指定對象的位置,會影響目前位置命令計數器,與目前迴授位置,並清除溢位旗標。
1.若目前路徑正在行進中,則命令終點也會一同平移。
2.若目前路徑已經停止(正常停止或異常),則命令終點會設定成與PCMD_OUT相等,因此,本指令不會改變運動過程的命令,只是改變位置座標值。
3.HERE_IS命令執行後,依照選擇的軸,X_ModePr、Y_ModePr、Z_ModePr會觸發上升元。
參數
|
Dint |
設置的位置值。 定址方式:
|
|||||||||||||||||||||||||||||||||||||||||||||
|
Ax_When |
指定的軸與對象,其設定與編碼為:
|
|||||||||||||||||||||||||||||||||||||||||||||
錯誤種類
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x286 |
正極限 |
|
0x288 |
負極限 |
|
0x245 |
等待Z發生時等待超時 |
影響旗標
無
程式範例
|
;利用HERE_IS設定當前位置為HOME SELECT X_AXIS MODE PATH DELAY 100 HERE_IS 0,SEL_FDBK |
|
功能說明
設定指定軸路徑的自動保護功能。自動保護在相關事件發生時,會自動減速停止,達到保護的作用。
請注意,若其他指令會觸發Servo Off,會優先於PROTECT的取消效果。
參數
|
Int |
16 bits短整數,以各bit指定要開啟/取消的保護功能。(設定為0代表功能開啟,1為取消),每個位元定義無下:
定址方式:
|
||||||||||||||||||||||||||||||||||||||||||||
|
Axis |
指定的軸
|
||||||||||||||||||||||||||||||||||||||||||||
錯誤種類
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x286 |
正極限 |
|
0x288 |
負極限 |
|
0x245 |
等待Z發生時等待超時 |
影響旗標
無
程式範例
|
PROTECT 0x0000,X_AXIS ;X軸所有保護功能皆作用 PROTECT 0x0001,X_AXIS ;X軸正向極限保護取消 |
|
功能說明
某些指令具有等待的功能,例如:WT_CMDOK、WT_EV、WT_EMPTY、WT_MCOK、WT_INPOS,透過此指令可以設定超過時限(Time-Out)的時間限制,當超過期限則產生超時錯誤。
參數
|
Int |
等待時間,單位為100msec,若設定為0代表取消本功能。 定址方式:
|
錯誤種類
無
影響旗標
無
程式範例
|
;TIMEOUT發生後,會執行TIMEOUT_ERR_錯誤處理
SELECT X_AXIS ;選擇 X軸。
MODE
PATH ;PATH
MODE。
TACC
500
;ACC Time。
TDEC
600
;DEC Time。 SPD 200000 ;SPD (PPS)。
TIMEOUT 30
;3 sec time out.
PINC
1000000 ;下達增量運動命令。 WT_CMDOK
0
;根據SELECT等待 X 軸命令完成。
JMP_C
$L_END,UNC L_END:
SET_BIT DV1.3 |
|
功能說明
等待選擇軸(限單軸)的運動命令完成或指定的事件發生。
本指令結束的狀況有三:
1.運動命令發送完畢,且指定的事件未發生:AL暫存器是0。
2.運動命令尚未完成,但指定的事件已發生:AL暫存器是發生的事件。
3.產生錯誤:ERR暫存器內容為錯誤碼:AL暫存器內容不改變。
參數
|
Int |
等待的事件:各別Bit用來代表一個事件訊號,該位元為1代表該是件需要被檢察,反之則否。
定址方式:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Axis |
等待的軸代號:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
錯誤種類
|
0x223 |
模式錯誤 |
|
0x227 |
設定的軸出錯(設定多軸、軸值出錯、未選定軸) |
|
0x245 |
等待超時 |
影響旗標
無
程式範例
|
;若DI信號有發生,將之儲存至AL,不產生錯誤
SELECT X_AXIS
;選擇 X軸。
MODE PATH ;PATH
MODE。
TACC 500
;ACC Time。
TDEC 600
;DEC Time。 SPD 200000
;SPD (PPS)。 PROTECT
0x0001,SEL_AXIS
;關閉PL極限保護。 PINC 10000000
;下達增量運動命令。
LALW 0
;AL=0,清除所有事件。
WT_EV
0x1,SEL_AXIS
;等待觸發PL。 JMP_BIT
$L_PL_ON,ON_0
;PL ON 跳躍至 $L_PL_ON。
JMP_C $L_ERR,ER
;發生錯誤跳躍至$L_ERR,可能是TIME-OUT。
JMP_C $L_END,UNC L_PL_ON:
TDEC 50000
STOP
S-Curve_Filter
JMP_C $L_END,UNC L_ERR:
JMP_C $L_END,UNC L_END: |
|
功能說明
等待設定軸的馬達定位完成。馬達定位完成代表馬達的位置與命令的誤差在參數P1-54設定的範圍內,並不代表命令已經下達完成,須明辨之。
請注意,此指令在定位無法即時追上命令時,才會有等待效果,並非用於等待整個運動路徑的定位完成。
參數
|
Int |
等待的軸代號: 若Int為0 :便等待根據指令SELECT指定的軸。 若Int不為0:其值每位元代表一軸,該位元為1代表該軸被選定。
定址方式:
|
錯誤種類
|
0x223 |
模式錯誤 |
|
0x245 |
等待超時 |
影響旗標
無
程式範例
|
SELECT X_AXIS ;選擇 X軸。 MODE PATH ;PATH
MODE。 TACC 500
;ACC Time。 TDEC 600
;DEC Time。 SPD 200000 ;SPD (PPS)。 PINC 1000000 ;下達增量運動命令。 WT_CMDOK 0
;根據SELECT等待 X 軸命令完成 WT_INPOS 0
;根據SELECT等待 X 軸定位完成 SET_BIT DV1.0 |
|
功能說明
等待設定軸的運動命令完成且定位完成。運動命令完成是路徑產生器產生的命令已經完成,等待命令完成請參考指令WT_CMDOK。馬達定位完成代表馬達的位置與命令的誤差在參數P1-54設定的範圍內。
等待馬達定位完成請參考指令WT_INPOS。本指令等於先執行WT_CMDOK再執行WT_INPOS的合成效果。
參數
|
Int |
等待的軸代號: 若Int為0 :便等待根據指令SELECT指定的軸。 若Int不為0:其值每位元代表一軸,該位元為1代表該軸被選定。
定址方式:
|
錯誤種類
|
0x223 |
模式錯誤 |
|
0x245 |
等待超時 |
影響旗標
無
程式範例
|
SELECT X_AXIS ;選擇 X軸。 MODE PATH ;PATH
MODE。 TACC 500
;ACC Time。 TDEC 600
;DEC Time。 SPD 200000 ;SPD (PPS)。 PINC 1000000 ;下達增量運動命令。 WT_MCOK 0
;根據SELECT等待 X 軸命令與定位完成 SET_BIT DV1.0 |
|
功能說明
等待某軸的路徑命令曲線到達指定區域。
註:速度指令JOG也可用本指令檢查命令是否完成,當命令完成僅代表速度到達設定值,命令仍持續送出,並未停止,必須注意。
參數
|
Int |
等待的軸代號: 若Int為0 :便等待根據指令SELECT指定的軸。 若Int不為0:其值每位元代表一軸,該位元為1代表該軸被選定。
定址方式:
|
||||||||||||||||||
|
Step |
等待區域代號:
|
錯誤種類
|
0x223 |
模式錯誤 |
|
0x245 |
等待超時 |
影響旗標
無
程式範例
|
SELECT X_AXIS ;選擇 X軸。 MODE PATH ;PATH
MODE。 TACC 500
;ACC Time。 TDEC 60000 ;DEC Time。 SPD 200000 ;SPD (PPS)。 PINC 1000000 ;下達增量運動命令。 WT_PFILE 0,DEC ;等待到進入減速區。 SET_BIT DV1.0 |
|
功能說明
等待某軸的運動路徑命令緩衝區清空。運動指令執行後,會將路徑命令存入緩衝區內,等待路徑產生器來讀取,然後開始產生插值座標,作為伺服馬達的參考輸入。緩衝區清空,代表最後一個指令的路徑命令已被路徑產生器讀取,並開始輸出插值座標。
參數
|
Int |
等待的軸代號: 若Int為0 :便等待根據指令SELECT指定的軸。 若Int不為0:其值每位元代表一軸,該位元為1代表該軸被選定。
定址方式:
|
錯誤種類
|
0x223 |
模式錯誤 |
|
0x245 |
等待超時 |
影響旗標
無
程式範例
|
SELECT X_AXIS ;選擇 X軸。 MODE PATH ;PATH
MODE。 TACC 500
;ACC Time。 TDEC 600
;DEC Time。 SPD 200000 ;SPD (PPS)。 PINC 1000000 ;下達增量運動命令。 WT_EMPTY 0
;根據SELECT等待。 SET_BIT DV1.0 |
|
功能說明
等待某軸的運動命令完成。運動命令是路徑產生器產生的命令座標,作為伺服馬達的參考輸入,因此命令完成不代表馬達已經定位完成,須明辨之。等待馬達定位完成請參考指令WT_INPOS。
註:速度指令JOG也可用本指令檢查命令是否完成,當命令完成僅代表速度到達設定值,命令仍持續送出,並未停止,必須注意。
參數
|
Int |
等待的軸代號: 若Int為0 :便等待根據指令SELECT指定的軸。 若Int不為0:其值每位元代表一軸,該位元為1代表該軸被選定。
定址方式:
|
錯誤種類
|
0x223 |
模式錯誤 |
|
0x245 |
等待超時 |
影響旗標
無
程式範例
|
SELECT X_AXIS ;選擇 X軸。 MODE PATH ;PATH
MODE。 TACC 500
;ACC Time。 TDEC 600
;DEC Time。 SPD 200000 ;SPD (PPS)。 PINC 1000000 ;下達增量運動命令。 WT_CMDOK 0
;根據SELECT等待 X 軸命令完成 SET_BIT DV1.0 |
|
功能說明
等待PLC裝置的特定Bit High或Low,否則指令一直停在該指令。
參數
|
Int |
等待的PLC裝置(DH、DV、MH、MV、X、Y;其餘不支援)號。 定址方式:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Mask |
等待的Bit:
|
錯誤種類
|
0x211 |
參數定址錯誤 |
影響旗標
無
程式範例
|
WT_BIT DV2,1_ON ;DV2.1 ON時才會執行下面的程式。 SELECT X_AXIS ;選擇 X軸。 MODE PATH ;PATH MODE。 TACC 500
;ACC Time。 TDEC 600
;DEC Time。 SPD 200000 ;SPD (PPS)。 PINC 1000000 ;下達增量運動命令。 |
|
功能說明
取代巨集參數功能,巨集參數需填入Dint命令陣列,不同巨集(ID)的巨集參數解釋不同,參考文件說明。
巨集執行返回值儲存在ACC。
注意:需事先以SELECT軸設定巨集指令作用軸。
參數
|
Dint |
巨集參數為一塊連續4個長整數(32 Bits)組成的命令陣列,其命令陣列組成如下:
C[0] ~ C[3]代表4個連續長整數(32 Bits)命令陣列。 定址方式:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ID |
巨集號碼:
|
錯誤種類
|
0x8001 |
不支援此項巨集ID |
|
0x8005 |
巨集5參數#3 範圍錯誤 |
|
0x8071 |
建造表格時,凸輪不可以在嚙合狀態。 |
|
0x8072 |
P5-94 同步區超出範圍:(0 ~ 330) |
|
0x8073 |
P5-93.H16曲線等級超出範圍:(1 ~ 4) |
|
0x8074 |
P5-93.L16等待區角度超出範圍:(0 ~ 170) |
|
0x8075 |
P5-96超過範圍:(50000 ~ 5000000) |
|
0x8076 |
P5-82表格分區超過範圍:(30 ~ 72) |
|
0x8077 |
P5-81位址太大,資料陣列空間不足 |
|
0x8078 |
資料計算錯誤,請降低齒輪比數值:(P1-44,P1-45),維持比例即可 |
|
0x8079 |
加速角度不足,請縮小 等待區(W),同步區(Y) 或縮小 曲線等級(S)。 |
|
0x807A |
等待區太小,請增加 等待區(W) 或縮小 同步區(Y) |
|
0x80C1 |
執行本巨集時,凸輪不在嚙合狀態 |
|
0x80C2 |
P5-93資料錯誤,不可<0,必須>=0。 |
|
0x80C3 |
P5-93資料錯誤,必須<(P5-84/P5-83) |
|
0x80D1 |
執行本巨集時,凸輪不在嚙合狀態! |
|
0x80D2 |
P5-93.YX,PR編號超出範圍: 1 ~ 0x3F |
|
0x80D3 |
P5-95,正轉允許率超出範圍: 0 ~ 100 (%) |
|
0x80D9 |
P5-93.BA,P5-95資料格式超出範圍: 0 ~ 1 |
|
0x80DA |
P5-93.DC,反轉禁止超出範圍: 0 ~ 1 |
|
0x80DB |
反轉禁止作用失敗,請勿連續使用巨集#D,#10h。 |
|
0x80E1 |
執行本巨集時,凸輪不在嚙合狀態! |
|
0x80E2 |
P5-93.YX,PR編號超出範圍:0 ~ 0x3F |
|
0x80E3 |
P5-93.UZ,最大對位修正率超出範圍: 0~0x64(%) |
|
0x80E4 |
P5-94,DI時間補償超出範圍: -10000 ~ +10000 |
|
0x80E5 |
P5-95,正轉允許率超出範圍: 0 ~ 100 (%) |
|
0x80E6 |
P5-96,對位目的超出範圍:+/- (P5-84/P5-83)-1 |
|
0x80E7 |
P5-93.DCBA 設定超出範圍: 0x0000 ~ 0x1111 |
|
0x80E8 |
使用CAP對位時,凸輪未使用CAP軸當主軸! |
|
0x80E9 |
使用CAP對位時,本巨集太晚觸發(離CAP位置太遠)! 請使用CAP完成的PR#50 來自動觸發本巨集! |
|
0x80EA |
當P5-93.D=1時,P5-96指向的資料陣列超出範圍! * P5-96 + P5-38 必須小於 800 |
|
0x80F1 |
執行本巨集時,凸輪不在嚙合狀態! |
|
0x80F2 |
P5-93.YX,PR去程編號超出範圍:0 ~ 0x3F |
|
0x80F3 |
P5-93.UZ,PR回程編號超出範圍:0 ~ 0x3F |
|
0x80F5 |
P5-95,正轉允許率超出範圍: 0 ~ 100 (%) |
|
0x80F6 |
P5-96,目的位置超出範圍:0 ~ (P5-84/P5-83)-1 |
|
0x8101 |
執行本巨集時,凸輪不在嚙合狀態! |
|
0x8102 |
P5-93資料超出範圍: 必須為0 |
|
0x8103 |
凸輪必須為正方向運轉!請檢查凸輪表 與 P5-19>0! |
|
0x8104 |
累計暫停距離溢位(>2^31),請勿連續執行本巨集。 |
|
0x8110 |
P5-93功能碼錯誤 |
|
0x8111 |
設定CAP數量過大 |
|
0x8112 |
資料陣列不足 |
|
0x8113 |
P5-94 範圍錯誤 0~14 |
|
0x8114 |
P5-93副功能碼錯誤 |
影響旗標
|
N
Z P |
視ACC內容而定。 |
程式範例
|
LACCL 0 SELECT X_AXIS
;設定X軸為巨集作用軸 LACCL 100
;設定 X P5-81=100 SACC_PR 81,X_P5 LACCL 72
;設定 X
P5-82=72(巨集7最大造表個數) SACC_PR 82,X_P5 MOVL
@MarcoArray[0],0x0002FFFF ;S曲線等級=2;
由0速造表 MOVL @MarcoArray[1],100
;同步區角度 = 40 度 MOVL
@MarcoArray[2],0x00020001 ;切刀數 2;
減速比 1:1 MOVL
@MarcoArray[3],2000000
;切長比 2; 速度倍率 1 MACRO @MarcoArray[0],CAM_TBL_Free ;執行巨集7飛剪造表 SET_BIT DV1.0 |
造出的表如圖:

Copyright
© Delta. All rights reserved.