使用 SDO 比對硬體與 ESI 檔案中的資料

使用 ESI 檔案配置 EtherCAT 從站時,此裝置可能會傳回 ESI 中定義的服務資料物件 (SDO) 錯誤,因此硬體和 ESI 檔案中的資料一致很重要。如果資料運作的方式與 ESI 描述的不符,硬體將無法正確配置,取得的值也會錯誤。欲檢查硬體和 ESI 資料的一致性,可使用 KINGSTAR 提供的 SDO Info API 函式。

RT/Win32 .NET API .NET Class
CoeReadSdoEntryDescription CoeReadSdoEntryDescription ISlave.CoeReadSdoEntryDescription
CoeReadSdoObjectDescription CoeReadSdoObjectDescription ISlave.CoeReadSdoObjectDescription
CoeReadSdoODList CoeReadSdoODList ISlave.CoeReadSdoODList

CoeReadSdoODList

要取得所要的物件,首先需讀取物件字典,使用 CoeSdoODList 讀取物件CoeReadSdoODList字典,該函式會傳回物件索引的陣列,取得索引後,可使用 CoeReadSdoObjectDescription 取得物件的詳細資訊。

CoeReadSdoObjectDescription

使用此函式前,需先定義 SdoObjectDescription 結構,需在結構中將從 CoeReadSdoODList 得到的物件索引填入 Index 欄位,其他欄位如 DataTypeMaxSubIndexObjectCode 會在呼叫此函式時自動填入。請注意,DataType 欄位的資料包含數字,需查看 ESI 檔案以瞭解這個數字的意義,因為物件的資料類型會依硬體而有所不同。

以 Kollmorgen AKD 驅動器為例,若請求 DataType 後得到「0」,這個 0 對應的是驅動器 ESI 檔案中 DataTypes 標籤下的第一個項目:32-bit DINT;若得到「1」,則對應的是第二個項目:16-bit INT。

CoeReadSdoEntryDescription

一個物件可能有很多項目,這些項目包含不同的資料,您可以使用 CoeReadSdoEntryDescription 來取得這些資料,如同 CoeReadSdoObjectDescription,需先定義 SdoEntryDescription 結構,再使用此函式。結構中必須將物件索引、項目索引、資料選取位元遮罩分別填入 IndexSubIndex ValueInfo 欄位,回傳的資料會出現在 Data 欄位。需檢查 ESI 檔案或硬體的使用手冊,以瞭解回傳資料代表的意義。