機器自動化控制器——第三章 軸指令 11
- MC_SetPosition
- 變量
- ?輸入變量
- ?輸出變量
- ?輸入輸出變量
- 功能說明
- ?時序圖
- ?重啟動運動指令
- ?多重啟運動指令
- ?異常
MC_SetPosition
- 將軸的指令當前位置和反饋當前位置變更為任意值。
指令 | 名稱 | FB/ FUN | 圖形表現 | ST表現 |
---|---|---|---|---|
MC_SetPosition | 當前位置變更 | FB | ![]() | MC_SetPosition_instance ( Axis :=《參數》 , Execute :=《參數》 , Position :=《參數》 , ReferenceType :=《參數》 , Relative :=《參數》 , ExcutionMode :=《參數》 , Done =>《參數》 , Busy =>《參數》 , CommandAborted =>《參數》 , Error =>《參數》 , ErrorID =>《參數》 ); |
變量
?輸入變量
輸入變量 | 名稱 | 數據類型 | 有效范圍 | 初始值 | 內容 |
---|---|---|---|---|---|
Execute | 啟動 | BOOL | TRUE, FALSE | FALSE | 在上升沿開始指令。 |
Position | 目標位置 | LREAL | 負數、正數、“0” | 0 | 指定絕對坐標的目標位置。 單位為[指令單位]。 *1 |
ReferenceType | 位置類型選擇 | _eMC_ REFERENCE_ TYPE | 0: _mcCommand 1: _mcFeedback | 0 *2 | 指定位置類型。 0:指令位置(伺服軸、虛擬伺服軸) 1:反饋位置(編碼器軸、虛擬編碼器 軸) |
Relative (Reserved) | 相對位置選擇 | BOOL | TRUE, FALSE | FALSE | (Reserved) |
ExecutionMode (Reserved) | 執行模式 選擇 | _eMC_ EXECUTION_ MODE | 0: _mcImmediately | 0 *2 | (Reserved) |
- 1.關于指令單位,請參閱“NJ/NX系列CPU單元用戶手冊運動控制篇(SBCE-363)”或“NY系列工業用平板電腦/工業用臺式電腦用戶手冊運動控制篇(SBCE-379)”的“單位轉換設定”。
- 2.有效范圍為枚舉體的變量,其實際初始值不是數值,而是枚舉元素。
?輸出變量
輸出變量 | 名稱 | 數據類型 | 有效范圍 | 內容 |
---|---|---|---|---|
Done | 完成 | BOOL | TRUE, FALSE | 指令執行完畢時變為TRUE。 |
Busy | 執行中 | BOOL | TRUE, FALSE | 接收指令后變為TRUE。 |
CommandAborted | 執行中斷 | BOOL | TRUE, FALSE | 指令中止時,變為TRUE。 |
Error | 錯誤 | BOOL | TRUE, FALSE | 發生異常時變為TRUE。 |
ErrorID | 錯誤代碼 | WORD | *1 | 發生異常時,輸出錯誤代碼。16#0000為正常。 |
-
- 請參閱 “A-1 錯誤代碼一覽(P.A-2)”
????? 輸出變量的反映時間
變量 | 變為TRUE的時間 | 變為FALSE的時間 |
---|---|---|
Done | 指令當前位置和反饋當前位置的變更已完成時 | ? Execute為TRUE時,與Execute的FALSE同時 ? Execute為FALSE時,1個周期后 |
Busy | Execute的上升沿 | ? Done變為TRUE時 ? Error變為TRUE時 |
CommandAborted | ? 因發生異常,中止本指令時 ? 發生異常過程中,啟動本指令時 ? 執行MC_Stop指令中,啟動本指令時 | ? Execute為TRUE時,與Execute的FALSE同時 ? Execute為FALSE時,1個周期后 |
Error | 本指令的啟動條件或輸入參數中含有異常因素時 | 異常已解除時 |
?輸入輸出變量
輸入輸出變量 | 名稱 | 數據類型 | 有效范圍 | 內容 |
---|---|---|---|---|
Axis | 軸 | _sAXIS_REF | - | 指定軸。 *1 |
- 1.請使用在Sysmac Studio的軸基本設定畫面中創建的用戶定義變量的軸變量名稱(默認 “MC_Axis***”)或系統定義變量的 軸變量名稱(_MC_AX[], _MC1_AX[], _MC2_AX[*])。
功能說明
- 將伺服軸的指令當前位置變更為指定的目標位置。
- 此外,對編碼器軸執行指令后,將反饋當前位置變更為指定的目標位置。
- 以絕對坐標的位置指定目標位置。
- 在指令當前位置變更的同時,反饋當前位置也會變更,保持該時的位置偏差進行變更。
- 對指令伺服軸執行指令后,保持當前位置和反饋當前位置的差,進行變更。
- 因此,執行本指令后,軸的反饋當前位置變為下列計算公式所示的值。
- 變更后的反饋當前位置 = 目標位置 - 變更前的位置偏差 對伺服軸指定反饋位置時,或者對編碼器軸指定指令位置時,發生位置類型選擇異常。
- 計數模式為[旋轉模式]時,在環計數器下限值以上、低于環計數器上限值的范圍內設定目標位置。
- 如果目標位置超出該范圍,則環計數器發生異常。
- 計數模式為[線性模式]時,即使超出軟件限制的范圍,也可設定目標位置。
- 無論軸停止還是動作中,均可使用本指令。
- 使用注意事項
- 本指令完成后,指定軸的原點未確定。
- 因此,本指令完成后,無法使用如下功能和指令,敬請注意。
- 軟件限制功能
- MC_MoveZeroPosition(高速原點復位)指令
- 多軸協調動作指令(直線插補和圓弧插補)
????? ReferenceType(位置類型選擇)
- 使用伺服軸或虛擬伺服軸時,請選擇“0: _mcCommand(指令位置)”。
- 使用編碼器軸或虛擬編碼器軸時,請選擇“1: _mcFeedback(反饋位置)”。
????? 軸種類與位置類型的關系
- 可監控的軸種類和要監控的位置類型的關系如下所示。
軸種類 | ReferenceType | |
---|---|---|
_mcCommand | _mcFeedback | |
伺服軸 | ○ | × |
編碼器軸 | × *1 | ○ |
虛擬伺服軸 | ○ | × |
虛擬編碼器軸 | × *1 | ○ |
- 1.啟動指令時,發生“超過位置類型選擇范圍(錯誤代碼:5430Hex)”錯誤。
?時序圖
????? 軸處于停止狀態下使用本指令時
- 在Execute(啟動)的上升沿,開始當前位置的變更。
- 在啟動Execute(啟動)的同時,Busy(執行中)變為TRUE。
- 當前位置的變更完成時,Done(完成)變為TRUE。
????? 軸動作中使用本指令時
- 在絕對位置定位中執行本指令后,隨著位置的變更,動作的目標值也會變更。
- 例如,利用MC_MoveAbsolute(絕對值定位)指令,在移動到400(mm)的過程中,將當前位置由200(mm)變更為800(mm)后的軸的動作和時序圖如下所示。
- 此時,由于當前值為800(mm)、目標值為400(mm),因此軸反轉。
- 如下圖所示,即使利用MC_MoveAbsolute(絕對值定位)指令變更了當前位置,在從新的當前位置向MC_MoveAbsolute(絕對值定位)指令指定的目標位置定位完成后,Done(完成)也變為TRUE。
- 參考
- 在MC_MoveRelative(相對值定位)指令動作中或MC_MoveVelocity(速度控制)指令動作中執行本指令后,當前位置發生變更。
- 但是,對MC_MoveRelative(相對值定位)指令和MC_MoveVelocity(速度控制)指令的動作沒有影響。
- 存在已緩存指令時,切換緩存時相對變更后的位置進行定位。
?重啟動運動指令
- 無法重啟本指令。
- 重啟后,將發生“無法重啟運動指令(錯誤代碼:543B Hex)”錯誤。
?多重啟運動指令
- 多重啟動運動指令的詳情,請參閱“NJ/NX系列 CPU單元 用戶手冊 運動控制篇(SBCE-363)”或“NY系列 工業用平板電腦/工業用臺式電腦 用戶手冊 運動控制篇(SBCE-379)”。
????? 其它指令執行中的本指令啟動
- 不能對下一個指令執行中的軸使用MC_SetPosition(當前位置變更)指令。
- 否則,會發生多重啟動異常。
MC_MoveJog(微動移動)指令 | MC_MoveLink(梯形模式凸輪)指令 |
---|---|
MC_Home(原點復位)指令 | MC_CombineAxes(加減運算定位)指令 |
MC_HomeWithParameter(參數指定原點復位)指令 | MC_MoveZeroPosition(高速原點復位)指令 |
MC_CamIn(凸輪動作開始)指令 | MC_TorqueControl(轉矩控制)指令 |
MC_GearIn(齒輪動作開始)指令 | MC_SyncMoveVelocity(周期同步速度控制)指令 |
MC_GearInPos(位置指定齒輪動作)指令 |
- 使用注意事項
- Ver.1.09以下版本的CPU單元時
- 請勿對MC_GearIn(齒輪動作開始)指令等的同步用指令的Master(主軸)使用MC_SetPosition(當前位置變更)指令。
- 如果對Master(主軸)使用了該指令,Master(主軸)的指令當前位置和反饋當前位置變化時,將判斷為Master(主軸)發生了移動。
- 此時,Slave(從軸)將根據Master(主軸)的移動量進行動作。
- 因此,可能出現Slave(從軸)的動作急劇變化、或者凸輪結束動作等情況。
- 要對Master(主軸)使用MC_SetPosition(當前位置變更)指令時,請解除Master(主軸)和Slave(從軸)的關系后執行該指令。
- 要解除Master(主軸)與Slave(從軸)的關系時,請執行MC_GearOut(齒輪動作解除)指令等。
- 有關對于主軸的注意事項,請參閱“同步控制的主軸及輔軸的注意事項(P.1-6)”。
????? 本指令執行中的其它指令啟動
- 在MC_SetPosition(當前位置變更)指令執行中,執行其它的MC_SetPosition(當前位置變更)指令時,優先執行后一個MC_SetPosition(當前位置變更)指令。
- 此時,已處于執行中的前一個MC_SetPosition(當前位置變更)指令的Done(完成)變為TRUE,但是無法變更為先前設定的位置。
- 敬請注意。
?異常
- 在執行本指令中發生異常時,Error(錯誤)變為TRUE,軸停止動作。
- 可查看ErrorID(錯誤代碼)的輸出值,了解發生異常的原因。
- 參考
- 在軸動作中執行本指令時,將會重啟當前動作中軸的指令,重新計算定位用數據。
- 此時,如果發生異常,則當前動作中軸的指令也發生異常,本指令不會異常。
????? 發生異常時的時序圖
????? 錯誤代碼
- 關于指令發生的異常,請參閱“A-1 錯誤代碼一覽(P.A-2)”。