...
POST No. 2591607
다이나믹셀 실행 주기 조정 문의
2021-07-20 10:19:22 sehyuky80

안녕하세요, 이번 프로젝트에서 다이나믹셀 XM540-W270-T 모델을 사용중인데, sync read write예제를 보면 while 루프 문을 사용해서 패킷을 계속해서 전송하는 것으로 보입니다. 

이 때 혹시 while 문의 실행 주기를 일정하게 맞출 수 있는 방법이 있을까요? 예를 들어, 이 while문을 1ms마다 실행시킬 수 있는지 , 즉 모터 제어 루프가 정시성을 가지고 돌게 할 수 있는지 궁금합니다.

감사합니다.

 

 

2021-07-20 10:19:22
sehyuky80
2021-07-20 13:40:39 최대성

제가 보기에 Sync Read Write 예제의 흐름은 1단계(목표위치를 전달, SyncWrite)하고, 2단계(현재위치를 읽어서 목표위치에 근접했는지를 검사, SyncRead)하고 있는 것 같습니다.

예제를 구성하다보니 2단계에서 잡혀있게 됩니다.

 

보통 제어주기 정시성 확보를 위해서는 다음과 같이 수행할것 같습니다.

SyncRead를 제어주기의 마지막에 배치해서, 다음 제어주기 시작위치에서 SyncRead에 대한 응답 패킷을 확인하는 형태입니다.

제어주기는 Baudrate와 Return Delay, USB Latency, 다이나믹셀의 개수 등이 고려되어야 할 것 같습니다.

더불어 제어주기 내에 SyncRead 응답 패킷이 모두 수신되는지 확인이 필요할 것 같습니다.

보통 적당히 큰 제어주기를 설정하고 줄여가는 방식으로 튜닝하는 것이 편합니다.

오실로스코프가 있다면, SyncRead 패킷과 다이나믹셀의 응답 패킷을 관찰해서 제어주기를 설정할 수도 있습니다.

 

1) SyncRead 패킷으로 파악된 현재위치를 기준으로 목표위치를 계산해서 명령패킷 전달(SyncWrite)

2) 현재위치를 읽는 패킷전송(SyncRead)

.....(제어주기만큼 대기)

1), 2) 반복

.....(제어주기만큼 대기) 

 

2021-07-20 13:40:39
gaiajoypop@gmail.com
답변달기
웹에디터 시작 웹 에디터 끝