다이나믹셀 xw540-t260-r 패킷 통신 질문입니다

모델: XW540-T260-R
사용중인 소프트웨어: 자사에서 개발. C#으로 개발 중
환경: windows11

안녕하세요. 다이나믹셀을 제어해보려고 하고 있는 초보입니다.
현재 다이나믹셀을 protocol2.0 가이드를 참고하여 패킷을 만들어 TCP 통신하고 있습니다.
다이나믹셀은 직접적으로 cerial ethernet 컨버터를 통해서 LTE와 연결되어있고 C#으로 개발한 프로그램으로 해당 LTE로 연결하여 다이나믹셀을 제어합니다.
그리고 goal position명령어를 통해 다이나믹셀을 원하는 목표만큼 움직이고 그 움직임을 실시간으로 파악하기위해 present position 명령어 패킷을 만들어 0.5초 또는 1초의 간격으로 송신하는 폴링하였습니다. 하지만 생각하는만큼 쉽게 되지 않았습니다.

현재까지 파악한 문제점 및 현황은 아래와 같습니다.

  • 다이나믹셀이 아무런 작동도 하지 않을때(goal position 명령을 하지않은 경우) present position을 폴링하면 정상적으로 현재 위치 데이터를 수신받을 수 있어 정상작동 합니다.
  • 그러나 다이나믹셀에게 goal position명령을 송신해서 모터가 움직이는 상태로 폴링을 하면 정상적으로 데이터가 어느정도 오는 듯 하다가 랜덤한 시점에 현재 위치 데이터가 오지 않습니다. 한 번 오지 않으면 그 이후에 데이터가 아무것도 오지않고 다른 명령어를 보내도 응답이 없습니다. 그러다가 goal position까지 도착 후 모터가 다시 움직이지 않는 상태가 되면 그 이후 10초~30초 사이에 다시 명령어에 대한 응답이 옵니다.
  • 폴링 간격을 0.5초로 한 것이 문제인건가 싶어 1초로도 시도해보았으나 에러가 나는 시점이 좀 더 늦춰지지 않았습니다. 0.5초와 1초 간격의 폴링을 했을 때 에러가 생기는 시점은 차이가 없었습니다.

이 문제는 다이나믹셀 뿐만 아니라 저희가 설계한 구조적으로 잘못되어있을 수도 있습니다… 그러나 저의 실력이 부족함을 감안하시고 조언해주시면 감사하겠습니다.

1 Like

패킷이 정상적으로 전달되는지를 먼저 확인해보는게 좋을 것 같습니다.
Dynamixel은 오작동을 방지하기 위해, 패킷이 일정시간 내에 도달하지 않을 경우 해당 패킷을 무시하게 됩니다.
보유하신 장비를 기준으로 다음과 같은 방법을 제안드립니다.

  1. Ethernet 컨버터 대신, U2D2를 사용해서 Dynamixel 통신을 테스트해보시는걸 추천드립니다.
  2. 컨버터의 출력이 정상적인지 관찰해볼 수 있습니다. (오실로스코프 또는 패킷어넬라이저)
  3. U2D2나 USB2RS485 컨버터를 보유하고 계신 경우, 통신라인을 분기해서 패킷을 관찰하실 수 있습니다. 이 경우, Wizard2.0의 패킷창 또는 Putty와 같은 시리얼 모니터 프로그램을 사용할 수 있습니다.
1 Like

안녕하세요 답변해주셔서 감사합니다. 죄송하지만 제가 질문에서 빠트린 부분이 있습니다. 저희쪽에서 연결한 다이나믹셀과 cerial ethrnet 컨버터 사이에 U2D2가 중간에 연결되어있습니다. 먼저 조언해주신 말씀대로 테스트해보겠습니다. 감사합니다.

1 Like

다이나믹셀과 통신할 때 발생하는 문제 중 하나는 데이터 충돌입니다. 만약 다이나믹셀과 통신하는 다른 장치가 있다면, 둘 이상의 장치가 동시에 데이터를 보내면 충돌이 발생할 수 있습니다. 데이터 충돌이 발생하면 데이터가 손실되거나 손상될 수 있습니다.

1 Like

답변해주셔서 감사합니다. 현재 저희 구조 상 다이나믹셀에 동시에 2곳에서 명령을 하고 있진 않습니다… 대략적인 구조는 아래와 같습니다.
c# 프로그램 ----(tcp 연결)-----LTEEthernetConverterU2D2Dynamixel

1 Like