SmartMotor碰到韌體極限時自動反彈功能
問題描述(以直線運動滑台為例):
當滑塊每次觸碰到韌體正負極限時,馬達會跳錯誤並停止運動,此時需要將馬達斷電,並手動將滑塊移開極限位置,再將馬達重新上電,過程繁複且耗時間。
解決辦法:
碰到正負極限時,馬達FAULT停止動作,進入中斷指令副程式,清除錯誤且關閉韌體極限功能,滑塊自動移動離開極限位置後,啟動韌體極限功能,並回到主程式。
'Bms: 觸發負(左)極限即時訊號
'Bps: 觸發正(右)極限即時訊號
EIGN(2) EIGN(3) ZS
t=1000
GOSUB0 '原點復歸
ITR(0,1,15,1,10) '設定第0組中斷,在Bms狀態為1時,跳至中斷副程式C10
ITR(1,1,14,1,10) '設定第1組中斷,在Bps狀態為1時,跳至中斷副程式C10
'Bps: 觸發正(右)極限即時訊號
EIGN(2) EIGN(3) ZS
GOSUB0 '原點復歸
ITR(0,1,15,1,10) '設定第0組中斷,在Bms狀態為1時,跳至中斷副程式C10
EITR(0) '設定第0組中斷可用
EITR(1) '設定第1組中斷可用
ITRE '啟動中斷功能
C1 '製造不結束主程式的迴圈副程式C1
GOTO1
END
C0 '滑台做原點復歸
SLD '關閉韌體極限功能
MT T=-1800 G
c=100
WHILE c>5
a=PA
WAIT=t/10
b=PA
WAIT=t/10
c=a-b
LOOP
WAIT=t/2
MP
ADT=1000
VT=327680
PRT=4000
G
TWAIT
WAIT=t
O=0 '設定位置為原點
SLN=-2500 '設定韌體極限負極限位置
SLP=130000 '設定韌體極限正極限位置
SLE '啟動韌體極限功能
RETURN
C10 '中斷副程式
EITR(1) '設定第1組中斷可用
ITRE '啟動中斷功能
C1 '製造不結束主程式的迴圈副程式C1
GOTO1
END
SLD '關閉韌體極限功能
MT T=-1800 G
WHILE c>5
WAIT=t/10
b=PA
WAIT=t/10
LOOP
WAIT=t/2
ADT=1000
TWAIT
WAIT=t
SLN=-2500 '設定韌體極限負極限位置
SLP=130000 '設定韌體極限正極限位置
SLE '啟動韌體極限功能
RETURN
WAIT=t/2
ZS '清除錯誤訊號
SLD '關閉韌體極限功能
IF PA>0
MP PRT=-4000 G TWAIT WAIT=t/2 '馬達往負方向轉一圈
ELSE
MP PRT=4000 G TWAIT WAIT=t/2 '馬達往正方向轉一圈
ENDIF
SLE '啟動韌體極限功能
RETURNI
SLD '關閉韌體極限功能
IF PA>0
ELSE
MP PRT=4000 G TWAIT WAIT=t/2 '馬達往正方向轉一圈
ENDIF
SLE '啟動韌體極限功能
RETURNI