[Ethercat Device]
説明
該当するEtherCATスレーブデバイスのインデックスで指定された特定のオブジェクトのオブジェクト記述を読み取ります。
構文
int getObjectDescription( uint16_t od_index, uint16_t * datatype, uint8_t * max_od_subindex, uint8_t * objcode, char * objname, size_t objname_size, uint32_t * abortcode = NULL, uint32_t timeout_us = 100000);
int getObjectDescription( uint16_t od_index, uint16_t & datatype, uint8_t & max_od_subindex, uint8_t & objcode, char * objname, size_t objname_size, uint32_t * abortcode = NULL, uint32_t timeout_us = 100000);
媒介変数
[in] uint16_t od_index
オブジェクトのインデックス。[out] uint16_t *datatype
データ型を格納するために使用される変数で、 Data Typeを参照ください.[out] uint8_t *max_od_subindex
オブジェクトのサブインデックスの最大数。[out] uint8_t *objcode
オブジェクト・コード:- 7: 変数
- 8: 配列
- 9: 記録
[out] char objname
オブジェクトの名前。オブジェクト名を格納するために使用されるバッファ。[in] size_t objname_size
オブジェクト名のためのバッファのサイズ。[out] uint32_t *abortcode
SDOアボート・コードを保存するために使用される変数のポインタ。[in] uint32_t timeout_us
タイムアウト値でマイクロ秒単位。
戻り値
error codeを返します。返された値が 0の場合、この関数が正常に完了したことを示します。
備考
この関数は、 EthercatMaster::begin()が正常に実行された後で呼び出す必要があります。この関数はブロッキングされているため、循環コールバック関数内で呼び出すことができません。
例
#include "Ethercat.h"
EthercatMaster master;
EthercatDevice_Generic slave;
uint16_t DataType;
uint8_t MaxSubindex, ObjectCode;
char ObjectName[64];
void setup() {
Serial.begin(115200);
master.begin();
slave.attach(0, master);
slave.getObjectDescription(0x1C12, DataType, MaxSubindex, ObjectCode, ObjectName, sizeof(ObjectName));
Serial.print("Data Type: ");
Serial.println(DataType);
Serial.print("Object Code: ");
Serial.println(ObjectCode);
Serial.print("Max Subindex: ");
Serial.println(MaxSubindex);
Serial.print("Object Name: ");
Serial.println(ObjectName);
}
void loop() {
// ...
}詳細は EtherCAT Library User Manual QEC EtherCAT命令とAPI使用法参照