RequestSlaveState
請求 EtherCAT 從站進入指定的 EtherCAT 狀態。例如,若狀態為 Op,而所請求的狀態為 PreOp,則從站狀態將會變更為 Op -> SafeOp -> PreOp;若狀態為 Init,而所請求的狀態為 Op,則從站狀態將會變更為 Init -> PreOp -> SafeOp -> Op。
語法
KsCommandStatus RequestSlaveState(
int SlaveId,
EthercatState State
);
參數
SlaveId:即從站索引 (Slave Index)。此索引是 KINGSTAR 主站於 EtherCAT 網路啟動時,根據實體連接順序自動指派的。直接連線到主站的第一個裝置會被指派為索引 0 (Index 0),接著是索引 1、索引 2,依此類推。即使新增、移除或重新連線裝置,這些索引在從站陣列中也會保持一致。請參閱 熱插拔 (HotConnect)、修復與重啟 中的使用案例以了解更多詳細資訊。
State:請求的 EtherCAT 狀態。請見 EthercatState 類型。
回傳值
回傳 KsCommandStatus 結構。
備註
- EtherCAT 主站與從站皆需處在支援的狀態中。
- 欲請求的 EtherCAT 狀態不得高於主站狀態。更多關於主站支援的狀態資訊請見 RequestState。
可用的 EtherCAT 狀態
ecatInit, ecatBoot, ecatPreOP, ecatSafeOP, ecatOP
範例
複製
SlaveStatus sStatus = { 0 };
nRet = GetSlaveById(0, &sStatus);
if (nRet == errNoError)
{
if (sStatus.State != ecatOffline) {
// You can follow the EtherCAT state diagram, or just enter the desired state.
// Switch to Init
WaitForCommand(3, TRUE, RequestSlaveState(0, ecatInit));
// Operate the slave in Init state
// Switch to Bootstrap
WaitForCommand(3, TRUE, RequestSlaveState(0, ecatBoot));
// Operate the slave in Bootstrap state
// Switch back to original state
WaitForCommand(3, TRUE, RequestSlaveState(0, sStatus.State));
}
}
使用需求
| RT | Win32 | |
|---|---|---|
| 最低支援版本 | 4.0 | 4.0 |
| 標頭檔 | ksapi.h | ksapi.h |
| 程式庫 | KsApi_Rtss.lib | KsApi.lib |
參見