使用 SDO 比对硬体与 ESI 档案中的资料
使用 ESI 档案配置 EtherCAT 从站时,此装置可能会传回 ESI 中定义的服务资料物件 (SDO) 错误,因此硬体和 ESI 档案中的资料一致很重要。如果资料运作的方式与 ESI 描述的不符,硬体将无法正确配置,取得的值也会错误。欲检查硬体和 ESI 资料的一致性,可使用 KINGSTAR 提供的 SDO Info API 函式。
CoeReadSdoODList
要取得所要的物件,首先需读取物件字典,使用 CoeSdoODList 读取物件CoeReadSdoODList字典,该函式会传回物件索引的阵列,取得索引后,可使用 CoeReadSdoObjectDescription 取得物件的详细资讯。
CoeReadSdoObjectDescription
使用此函式前,需先定义 SdoObjectDescription 结构,需在结构中将从 CoeReadSdoODList 得到的物件索引填入 Index 栏位,其他栏位如 DataType、MaxSubIndex、ObjectCode 会在呼叫此函式时自动填入。请注意,DataType 栏位的资料包含数字,需查看 ESI 档案以了解这个数字的意义,因为物件的资料类型会依硬体而有所不同。
以 Kollmorgen AKD 驱动器为例,若请求 DataType 后得到「0」,这个 0 对应的是驱动器 ESI 档案中 DataTypes 标签下的第一个项目:32-bit DINT;若得到「1」,则对应的是第二个项目:16-bit INT。
CoeReadSdoEntryDescription
一个物件可能有很多项目,这些项目包含不同的资料,您可以使用 CoeReadSdoEntryDescription 来取得这些资料,如同 CoeReadSdoObjectDescription,需先定义 SdoEntryDescription 结构,再使用此函式。结构中必须将物件索引、项目索引、资料选取位元遮罩分别填入 Index、SubIndex 和 ValueInfo 栏位,回传的资料会出现在 Data 栏位。需检查 ESI 档案或硬体的使用手册,以了解回传资料代表的意义。