機器自動化控制器——第三章 軸指令 17
- MC_GearInPos
- 變量
- ?輸入變量
- ?輸出變量
- ?輸入輸出變量
- 功能說明
- ?時序圖
- ?重啟運動指令
- ?多重啟動運動指令
- ?異常
- 示例程序
- ?動作示例
- ?梯形圖
- ?結構文本(ST)
MC_GearInPos
-
設定主軸和從軸間的齒輪比,進行電子齒輪動作。
-
指定開始同步的主軸及從軸的位置。
指令 | 名稱 | FB/ FUN | 圖形表現 | ST表現 |
---|---|---|---|---|
MC_GearInPOS | 位置指定 齒輪動作 | FB | ![]() | MC_GearInPos_instance ( Master :=《參數》 , Slave :=《參數》 , Execute :=《參數》 , RatioNumerator :=《參數》 , RatioDenominator :=《參數》 , ReferenceType :=《參數》 , MasterSyncPosition :=《參數》 , SlaveSyncPosition :=《參數》 , Velocity :=《參數》 , Acceleration :=《參數》 , Deceleration :=《參數》 , Jerk :=《參數》 , BufferMode :=《參數》 , StartSync =>《參數》 , InSync =>《參數》 , Busy =>《參數》 , Active =>《參數》 , CommandAborted =>《參數》 , Error =>《參數》 , ErrorID =>《參數》 ); |
變量
?輸入變量
輸入變量 | 名稱 | 數據類型 | 有效范圍 | 初始值 | 內容 |
---|---|---|---|---|---|
Execute | 啟動 | BOOL | TRUE, FALSE | FALSE | 在上升沿開始指令。 |
Ratio Numerator | 齒輪比分子 | DINT*1 | 正數或負數 *1 | 10000 | 指定主軸和從軸間的電子齒輪的 分子。 |
Ratio Denominator | 齒輪比分母 | UDINT*2 | 正數 | 10000 | 指定主軸和從軸間的電子齒輪的 分母。 |
Reference Type*3 | 位置類型選擇 | _eMC_ REFERENCE_ TYPE | 0: _mcCommand 1: _mcFeedback 2: _mcLatestCommand | 0 *4 | 指定位置類型。 0:指令位置(最近任務周期*5下的計 算值) 1:反饋位置(同一任務周期 *5下的 取值) 2:指令位置(同一任務周期*5下的計 算值) |
MasterSync Position | 主軸同步位置 | LREAL | 負數、正數、“0” | 0 | 指定絕對坐標的主軸同步位置。 單位為[指令單位]。 *6 |
SlaveSync Position | 從軸同步位置 | LREAL | 負數、正數、“0” | 0 | 指定絕對坐標的從軸同步位置。 單位為[指令單位]。*3 |
Velocity | 目標速度 | LREAL | 正數 | 0 | 指定目標速度。請務必設定目標速 度。不作設定就執行動作,將發生 異常。 單位為[指令單位/s] 。*3 |
Acceleration | 加速度 | LREAL | 正數或“0” | 0 | 指定加速度。 單位為[指令單位/s2]。*3 |
Deceleration | 減速度 | LREAL | 正數或“0” | 0 | 指定減速度。 單位為[指令單位/s2]。*3 |
Jerk (Reserved) | 躍度 | LREAL | 0 | 0 | (Reserved) |
BufferMode (Reserved) | 緩存 模式選擇 | _eMC_ BUFFER_ MODE | 0: _mcAborting | 0 *2 | (Reserved) |
- 1.Ver.1.02以上的CPU單元和Ver.1.03以上的SysmacStudio組合時可使用。上述以下版本進行組合時,數據類型為“UINT”,有效范圍為“正數”。
- 2.Ver.1.02以上的CPU單元和Ver.1.03以上的SysmacStudio組合時可使用。上述以下版本進行組合時,數據類型為“UINT”。
- 3.使用_mcLatestCommand時,必須在滿足以下關系的條件下使用主軸、從軸。Master(主軸)設定的運動控制系統變量的軸號<Slave(從軸)設定的運動控制系統變量的軸號
- 4.有效范圍為枚舉體的變量,其實際初始值不是數值,而是枚舉元素。
- 5.任務周期分為原始恒定周期任務的周期和固定周期任務(執行優先度5)的周期。
- 6.關于指令單位,請參閱“NJ/NX系列CPU單元用戶手冊運動控制篇(SBCE-363)”或“NY系列工業用平板電腦/工業用臺式電腦用戶手冊運動控制篇(SBCE-379)”的“單位轉換設定”。
?輸出變量
輸入變量 | 名稱 | 數據類型 | 有效范圍 | 初始值 | 內容 |
---|---|---|---|---|---|
Velocity | 目標速度 | LREAL | 正數 | 0 | 指定目標速度。請務必設定目標速 度。不作設定就執行動作,將發生 異常。 單位為[指令單位/s] 。*3 |
Acceleration | 加速度 | LREAL | 正數或“0” | 0 | 指定加速度。 單位為[指令單位/s2]。*3 |
Deceleration | 減速度 | LREAL | 正數或“0” | 0 | 指定減速度。 單位為[指令單位/s2]。*3 |
Jerk (Reserved) | 躍度 | LREAL | 0 | 0 | (Reserved) |
BufferMode (Reserved) | 緩存 模式選擇 | _eMC_ BUFFER_ MODE | 0: _mcAborting | 0 *2 | (Reserved) |
- 請參閱“A-1錯誤代碼一覽(P.A-2)”。
????? 輸出變量的反映時間
變量 | 變為TRUE的時間 | 變為FALSE的時間 |
---|---|---|
StartSync | 軸開始移動后 | ? Error變為TRUE時 ? CommandAborted變為TRUE時 |
InSync | 從軸位置達到SlaveSyncPosition時 | ? Error變為TRUE時 ? CommandAborted變為TRUE時 |
Busy | Execute的上升沿 | ? Error變為TRUE時 ? CommandAborted變為TRUE時 |
Active | 接收指令時 | ? Error變為TRUE時 ? CommandAborted變為TRUE時 |
CommandAborted | ? 利用其它指令多重啟動運動指令(中斷),中止本 指令時 ? 因發生異常,中止本指令時 ? 發生異常過程中,啟動本指令時 ? 執行MC_Stop指令中,啟動本指令時 ? 啟動MC_GearOut指令時 | ? Execute為TRUE時,與Execute的FALSE同時 ? Execute為FALSE時,1個周期后 |
Error | 本指令的啟動條件或輸入參數中含有異常因素時 | 異常已解除時 |
?輸入輸出變量
輸入輸出變量 | 名稱 | 數據類型 | 有效范圍 | 內容 |
---|---|---|---|---|
Master | 主軸 | _sAXIS_REF | - | 指定主軸。 *1 |
Slave | 從軸 | _sAXIS_REF | - | 指定從軸。*1 |
- 使用注意事項
- 主軸和從軸指定同一軸時,會發生輕度故障等級的“主軸從軸相同(錯誤代碼:5436 Hex)”的異常。
功能說明
- 通過Slave(從軸)指定動作對象軸,指定RatioNumerator(齒輪比分子)、RatioDenominator(齒輪比分母) 、ReferenceType(位置類型選擇) 、Acceleration(加速度) 、Deceleration(減速度),進行齒輪動作。
- 可對Master(主軸)指定指令位置和反饋位置、最新的指令位置。
- 開始動作后,Slave(從軸)通過追趕動作,與Master(主軸)同步進行加減速動作。
- 從軸到達從軸同步位置之前稱為Catching phase(追趕中)、到達后稱為InGear phase(齒輪同步中)。
- 任何區間均與主軸的位置同步。
- 輸入變量的Velocity(目標速度)即為Catching phase(追趕中)時的目標速度。
- 從軸沿開始動作時主軸的相同方向進行動作。
- 開始動作時,如果主軸速度為“0”,會發生異常。
- 此外,主軸正方向動作,且SlaveSyncPosition(從軸同步位置)比啟動時的從軸位置小時,從軸進行反轉動作。
- 同樣,主軸負方向動作,且SlaveSyncPosition(從軸同步位置)比啟動時的從軸位置大時,從軸也進行反轉動作。
- 主軸速度不同周期變化較大時,從軸的速度也不固定。
- 齒輪比為正數時,Slave(從軸)沿Master(主軸)的同方向移動。
- 使用注意事項
- Ver.1.09以下的CPU單元使用本指令時,請勿對Master(主軸)執行MC_SetPosition(當前位置變更)指令。
- 對Master(主軸)執行MC_SetPosition(當前位置變更)指令時,可能出現Slave(從軸)急速跟蹤的情況,非常危險。
- 要對Master(主軸)使用MC_SetPosition(當前位置變更)指令時,請解除Master(主軸)和Slave(從軸)的關系后執行該指令。
- MC功能模塊通過以下3種速度,對利用Acceleration(加速度)和Deceleration(減速度)直線加減速的速度曲線進行計算。
- 以啟動指令時的Slave(從軸)的速度為初速度 以啟動指令時的Master(主軸)的速度乘以齒輪比得到的速度為終速度 以Velocity(目標速度)為目標速度追趕中的移動量較短時,可能達不到目標速度。
- 在MasterSyncPosition(主軸同步位置)、SlaveSyncPosition(從軸同步位置),為使Slave(從軸)追上Master(主軸),Velocity(目標速度)必須滿足下列條件。
- 作為主軸速度使用的信息,因位置類型ReferenceType的設定而異。
- 在MasterSyncPosition(主軸同步位置)、SlaveSyncPosition(從軸同步位置),Slave(從軸)追不上Master(主軸)時,會發生“位置指定齒輪動作目標速度不足(錯誤代碼:5447 Hex)”的錯誤。
- 計數模式為旋轉模式時,根據CPU單元的版本,存在如下差異。
- Ver.1.10以上版本的CPU單元時主軸計數模式為旋轉模式時,可指定超出環計數器上下限設定值范圍的MasterSyncPosition(主軸同步位置)。
- 此時,主軸當前位置和主軸同步位置的關系與通過MC_MoveAbsolute(絕對值定位)指令在Direction(方向選擇)中指定“無方向指定”時相同。
- MC_MoveAbsolute(絕對值定位)指令請參閱“MC_MoveAbsolute(P.3-47)”。
- 同樣,從軸計數模式為旋轉模式時,可指定超出環計數器上下限設定值范圍的SlaveSyncPosition(從軸同步位置)。
- Ver.1.09以下版本的CPU單元時計數模式為旋轉模式時,請確保在環計數器1周以內開始同步動作。
- 使用注意事項
- 有關對于主軸的注意事項,請參閱“同步控制的主軸及輔軸的注意事項(P.1-6)”。
????? ReferenceType(位置類型選擇)
- 可從下列選項中選擇位置的類型。
- _mcCommand:指令位置(最近任務周期下的計算值)對當前周期,使用之前任務周期時計算的主軸指令位置。
- 在計算從軸指令位置之前的固定周期任務中,使用計算的主軸指令位置。
- _mcFeedback:同一任務周期下的取值使用同一任務周期時獲取的主軸反饋位置。
- _mcLatestCommand:指令位置(同一任務周期下的計算值)使用同一任務周期時計算的主軸指令位置。
- 也可通過_mcCommand使用最新信息。
- 但是,設定時必須保證主軸編號比從軸編號小。
- 否則,本指令的Error(錯誤)將變為TRUE。
- ErrorID(錯誤代碼)輸出“主軸/從軸 軸號非升序(錯誤代碼:5438 Hex)”。
- 使用注意事項
- 這里的任務周期分為原始恒定周期任務的周期和固定周期任務(執行優先度5)的周期。
- 同樣,固定周期任務表示原始恒定周期任務或固定周期任務(執行優先度5)。
- 參考
- 相比選擇之前任務周期時的計算值,選擇同一任務周期時計算的指令位置時,同步精度更高。
- 但是必須使用主軸、從軸,確保“Master(主軸)設定的運動控制系統變量的軸號 < Slave(從軸)設定的運動控制系統變量的軸號”。
????? 軸種類與位置類型的關系
- 可監控的軸種類和要監控的位置類型的關系如下所示。
軸種類 | ReferenceType | |
---|---|---|
_mcCommand、或 _mcLatestCommand | _mcFeedback | |
伺服軸 | ○ | ○ |
編碼器軸 | × *1 | ○ |
虛擬伺服軸 | ○ | ○ |
虛擬編碼器軸 | × *1 | ○ |
- 1.啟動指令時,發生 “超過位置類型選擇范圍(錯誤代碼:5430 Hex)”錯誤。
?時序圖
- 在Execute(啟動)的上升沿,開始電子齒輪動作。
- 在啟動Execute(啟動)的同時,Busy(執行中)變為TRUE。
- 開始動作后,Active(控制中)和StartSync(跟蹤中)變為TRUE,Slave(從軸)開始齒輪動作。
- 到達MasterSyncPosition(主軸同步位置)、SlaveSyncPosition(從軸同步位置)時,InSync(同步中)變為TRUE。
- 利用其它指令中斷本指令時,CommandAborted(執行中斷)變為TRUE,Busy(執行中)、Active(控制中)、StartSync(跟蹤中)、InSync(同步中)變為FALSE。
- 利用其它指令中斷本指令的情形如下所示。
- 根據SlaveSyncPosition的設定不同,可能達不到目標速度。
- 該時的示例如下所示。
- 此外,在達到InSync phase之前,也跟蹤主軸位置。
- 該時的示例如下所示。
- 可在輸入變量中指定Acceleration(加速度)、Deceleration(減速度)。
- 電子齒輪的動作示例如下所示。
?重啟運動指令
- 無法重啟本指令。
- 重啟后,將發生“無法重啟運動指令(錯誤代碼:543B Hex)”錯誤。
?多重啟動運動指令
- 包含異常停止中、減速停止中的主軸軸指令狀態下,不影響本指令的執行。
- 多重啟動運動指令的詳情,請參閱“NJ/NX系列 CPU單元 用戶手冊 運動控制篇(SBCE-363)”或“NY系列 工業用平板電腦/工業用臺式電腦 用戶手冊 運動控制篇(SBCE-379)”。
????? 本指令執行中的其它指令啟動
- 多重啟動時的本指令的動作由BufferMode(緩存模式選擇)指定。
緩存模式選擇 | 說明 |
---|---|
中斷 | 立即中止當前正在執行的指令,切換為本指令。 軸的動作方向因指令切換而反轉時,根據軸參數中的 “反轉時動作”進行反轉。 |
- 關于BufferMode(緩存模式選擇),請參閱“NJ/NX系列 CPU單元 用戶手冊 運動控制篇(SBCE-363)”或“NY系列 工業用平板電腦/工業用臺式電腦 用戶手冊 運動控制篇(SBCE-379)”。
- 使用注意事項
- 以BufferMode(緩存模式選擇)的“0:中斷”以外的方式啟動其它指令時,其它指令會發生異常。
?異常
- 啟動本指令發生異常時,Error(錯誤)變為TRUE。
- 可查看ErrorID(錯誤代碼)的輸出值,了解發生異常的原因。
????? 發生異常時的時序圖
- 同步控制中,不受主軸的異常狀態的影響。
- 主軸的異常狀態解除,正常動作時,從軸繼續進行電子齒輪動作。
- 啟動本指令時以及執行本指令中,從軸發生異常時,不會對主軸產生影響。
????? 錯誤代碼
- 關于指令發生的異常,請參閱“A-1 錯誤代碼一覽(P.A-2)”。
示例程序
- 下面,對以主軸同步位置為Pos1、從軸同步位置為Pos2進行動作的示例程序進行說明。
????? 軸參數的設定
??????軸種類
軸 | 軸種類 |
---|---|
軸1 | 伺服軸(主軸) |
軸2 | 伺服軸(從軸) |
??????計數器模式
軸 | 計數器模式 |
---|---|
軸1 | 旋轉模式 |
軸2 | 旋轉模式 |
??????環計數器
軸 | 上限值 | 下限值 |
---|---|---|
軸1 | 360 | 0 |
軸2 | 360 | 0 |
??????坐標單位選擇
軸 | 坐標單位 |
---|---|
軸1 | degree |
軸2 | degree |
?動作示例
????? 動作模式
1 主軸的開始
- 主軸(軸1)是實際上的伺服軸,控制速度進行動作。
2 主軸達到目標速度
- 主軸的指令速度達到目標速度時,主軸的InVelocity(達到目標速度)變為TRUE。
3 從軸的啟動
- 主軸的InVelocity(達到目標速度)變為TRUE后,相對主軸的反饋位置,從軸(軸2)以齒輪比1:2進行齒輪動作。
- 同步位置主軸為Pos1、從軸為Pos2。
?梯形圖
????? 主要變量
名稱 | 數據類型 | 初始值 | 注釋 |
---|---|---|---|
MC_Axis000 | _sAXIS_REF | - | 是主軸軸1的軸變量。 |
MC_Axis000.Details.Homed | BOOL | FALSE | 軸1為原點確定狀態時變為TRUE。 |
MC_Axis000.MFaultLvl.Active | BOOL | FALSE | 軸1發生輕度故障等級的異常時變為TRUE。 |
MC_Axis001 | _sAXIS_REF | - | 是從軸軸2的軸變量。 |
MC_Axis001.Details.Homed | BOOL | FALSE | 軸2為原點確定狀態時變為TRUE。 |
MC_Axis001.MFaultLvl.Active | BOOL | FALSE | 軸2發生輕度故障等級的異常時變為TRUE。 |
Pwr1_Status | BOOL | FALSE | 分配給MC_Power的實例PWR1的輸出變量Status的 變量。進入伺服ON狀態時,該變量變為TRUE。 |
Pwr2_Status | BOOL | FALSE | 分配給MC_Power的實例PWR2的輸出變量Status的 變量。進入伺服ON狀態時,該變量變為TRUE。 |
Hm1_D | BOOL | FALSE | 分配給MC_Home的實例HM1的輸出Done的變量。 |
Hm2_D | BOOL | FALSE | 分配給MC_Home的實例HM2的輸出Done的變量。 |
Vel_InVel | BOOL | FALSE | 分配給MC_MoveVelocity的實例VEL的輸出 InVelocity的變量。達到目標速度時,該變量變為 TRUE。 |
Pos1 | LREAL | - | 是表示主軸同步位置的變量。 |
Pos2 | LREAL | - | 是表示從軸同步位置的變量。 |
StartPg | BOOL | FALSE | 如果該變量為TRUE,EtherCAT的過程數據通信已 建立,則進入伺服ON狀態。 |
????? 時序圖
????? 示例程序
?結構文本(ST)
????? 主要變量
名稱 | 數據類型 | 初始值 | 注釋 |
---|---|---|---|
MC_Axis000 | _sAXIS_REF | - | 是主軸軸1的軸變量。 |
MC_Axis000.Details.Homed | BOOL | FALSE | 軸1為原點確定狀態時變為TRUE。 |
MC_Axis000.MFaultLvl.Active | BOOL | FALSE | 軸1發生輕度故障等級的異常時變為TRUE。 |
MC_Axis001 | _sAXIS_REF | - | 是從軸軸2的軸變量。 |
MC_Axis001.Details.Homed | BOOL | FALSE | 軸2為原點確定狀態時變為TRUE。 |
MC_Axis001.MFaultLvl.Active | BOOL | FALSE | 軸2發生輕度故障等級的異常時變為TRUE。 |
Pwr1_Status | BOOL | FALSE | 分配給MC_Power的實例PWR1的輸出變量Status的 變量。進入伺服ON狀態時,該變量變為TRUE。 |
Pwr2_Status | BOOL | FALSE | 分配給MC_Power的實例PWR2的輸出變量Status的 變量。進入伺服ON狀態時,該變量變為TRUE。 |
Hm1_D | BOOL | FALSE | 分配給MC_Home的實例HM1的輸出Done的變量。 |
Hm2_D | BOOL | FALSE | 分配給MC_Home的實例HM2的輸出Done的變量。 |
Vel_InVel | BOOL | FALSE | 分配給MC_MoveVelocity的實例VEL的輸出 InVelocity的變量。達到目標速度時,該變量變為 TRUE。 |
Pos1 | LREAL | - | 是表示主軸同步位置的變量。 |
Pos2 | LREAL | - | 是表示從軸同步位置的變量。 |
StartPg | BOOL | FALSE | 如果該變量為TRUE,EtherCAT的過程數據通信已 建立,則進入伺服ON狀態。 |
Gearinpos_Ex | BOOL | FALSE | 該變量由FALSE→TRUE時,啟動MC_GearInPos的 實例GEARIN1。 |
Vel_Ex | BOOL | FALSE | 該變量由FALSE→TRUE時,啟動MC_MoveVelocity 的實例VEL。 |
InitFlag | BOOL | FALSE | 表示輸入參數設定完成。 FALSE時,設定輸入參數。輸入參數設定完成后, 變為TRUE。 |
????? 時序圖