1

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」を使用すると、ドライバに「同期フレーム タイムアウト」というエラーが表示されます。ドライバーに問題があるか、コードに問題があるかわかりません。私のコードに問題はありますか? ありがとう!

4

2 に答える 2