Opencm 9.04 와 exp485 를 이용한 3개의 모터 sync_read 안됨

아래와 같은 코드로
OPENCM 9.04 와 EXP485,
모터는
ID1 : XM430-W350
ID2 : XM430-W210
ID3 : XM430-W350
을 사용하여 토크가 꺼진 모터들을 손으로 움직이며 해당 위치 값을 SYNC_READ를 통해 받고 싶습니다.
예제 코드를 참고하여 아래와 같은 코드를 작성하였는데 ID3의 위치는 받아오지 않습니다.
방법이 무엇일까요??

또, ID1을 제외하고 2,3번에 관한 것만 받아오도록 하면 받아와집니다. 혹시, SYNC_READ는 2개의 모터만 받아올 수 있는 건가요???

코드 전문
#include <DynamixelWorkbench.h>

#define DEVICE_NAME “3” //Dynamixel on Serial3(USART3) <-OpenCM 485EXP

#define BAUDRATE 1000000
#define DXL_ID_1 1
#define DXL_ID_2 2
#define DXL_ID_3 3

DynamixelWorkbench dxl_wb;

uint8_t dxl_id[3] = {DXL_ID_1, DXL_ID_2, DXL_ID_3};

const uint8_t handler_index = 0;

void setup()
{
Serial.begin(57600);
Serial2.begin(57600);

const char *log;

uint16_t model_number = 0;

dxl_wb.init(DEVICE_NAME, BAUDRATE, &log);

for (int cnt = 0; cnt < 3; cnt++)
{
dxl_wb.ping(dxl_id[cnt], &model_number, &log);
}

dxl_wb.addSyncReadHandler(dxl_id[0], “Present_Position”, &log);
}

void loop()
{
const char *log;

int32_t present_position[3] = {0, 0, 0};

dxl_wb.syncRead(handler_index, &log);
dxl_wb.getSyncReadData(handler_index, &present_position[0], &log);

Serial.print(" Present Position : “);
Serial.print(present_position[0]);
Serial.print(”,“);
Serial.print(present_position[1]);
Serial.print(”,");
Serial.println(present_position[2]);
}

안녕하세요.

사용하시는 다이나믹셀이 TTL, RS485가 섞여있나요?

하나의 통신 방식으로 통일해서 사용해주세요.
(* 다이나믹셀 커뮤니케이션 브릿지를 사용하시면 통신 변환이 가능합니다.)

또한, 사용하시는 다이나믹셀의 통신속도 및 ID가 맞는지 확인을 해주세요.

통일된 통신 방식의 ID1, ID2, ID3 모두 연결한 상태에서 정상 동작하는 것을 확인했습니다.
(* 첨부하신 코드 상으로는 ID1 이 무조건 연결되어 있어야 정상 동작합니다.)

감사합니다.

모두 TTL 방식입니다!!
통신 속도와 ID도 확인 했는데 안되네요 ㅜㅜ

사용하신 코드 보내주실 수 있으실까요??
goodsjlee@koreatech.ac.kr
로 보내주시면 감사하겠습니다. ㅜㅜ

첨부 하신 코드로 테스트 했습니다.

코드에 문제는 없습니다.

사용하시는 OpenCM9.04의 납땜 상태를 확인해주세요.

연결이 불안정하여 통신에 문제가 있을 수 있습니다.

image

image


모터는 위의 사진 처럼 연결되어있고
dxl_wb.getPresentPositionData(DXL_ID_3, &present_position[2], &log); //ID3
구문을 추가해서 ID3의 위치가 불러와 지는 것을 확인했습니다.
해당 구문이 없으면 초기 present_position을 선언 할 때의 값 0이 ID3에 표시됩니다.
혹시 모터 연결 방식이 모터에서 모터로 연결되기 때문에 생기는 문제 일까요?

추가로 Sync_Write는 예제처럼 한번에 업로드 되는 것을 확인 했습니다.