CANOPEN初心者です。PDO1を介して実際の位置を読み取るプログラムを作成しました(デフォルトはステータスワード+実際の位置です)。
void canopen_init() {
// code1 setup PDO mapping
nmtPreOperation();
disablePDO(PDO_TX1_CONFIG_COMM);
setTransmissionTypePDO(PDO_TX1_CONFIG_COMM, 1);
setInhibitTimePDO(PDO_TX1_CONFIG_COMM, 0);
setEventTimePDO(PDO_TX1_CONFIG_COMM, 0);
enablePDO(PDO_TX1_CONFIG_COMM);
setCyclePeriod(1000);
setSyncWindow(100);
//code 2: enable OPeration
readyToSwitchOn();
switchOn();
enableOperation();
motionStart();
// code 3
nmtActiveNode();
}
int main (void) {
canopen_init();
while {
delay_ms(1);
send_sync();
}
}
コード 2 (サーボが Switch_on_disable 状態) を削除すると、同期送信のたびに位置を読み取ることができます。しかし、「コード 2」を使用すると、ドライバに「同期フレーム タイムアウト」というエラーが表示されます。ドライバーに問題があるか、コードに問題があるかわかりません。私のコードに問題はありますか? ありがとう!