2011-10-12 2 views
3

우리는 로봇 공학 과정을 운영하고 있으며 Xbee는 학생에게 가장 선호되는 의사 소통 프로토콜입니다. 지난 2 년 동안 우리는 그들이 62 개의 다양한 프로젝트를 건설하는 것을 도왔습니다.직렬 포트 통신을 통한 상위 프로토콜?

대부분의 프로젝트는 모두 봇에 다른 종류의 데이터를 보내는 것과 관련이 있습니다. 때로는 긴 문자열로 해석되는 1 바이트 명령 인 경우도 있습니다. 때로 우리는 한 xbee가 브로드 캐스트 모드에서 여러 봇 중 특정 봇에 메시지를 보낼 때 봇 주소 문제에 직면합니다. 학생들은 창의력을 발휘하여 매번이 문제를 해결합니다.

나는 개인적으로 이것이 바퀴를 재투자하고 있다고 느낍니다. 직렬 포트 통신에 대해 더 높은 수준의 프로토콜 제안이 있는지 궁금해하며 특정 프로토콜 설계가없는 경우 학생용으로 가치있는 설계가 필요한지 궁금합니다.

+2

그것은 대답이 아니지만, 개인적으로, 유니에서 esp, 나는 너무 많은 것들이 나를 위해 일한 프로젝트와 함께 나를 좋아하지 않았다. 이러한 통신 문제를 해결하는 방법을 배우는 것이 학습 경험의 일부가 될 수 있습니다 - 다중 노드 브로드 캐스트 통신을 어떻게 해결합니까? 당신이 그면을 제거한다면, 아마도 당신의 학생들은 당신의 코스에서 그다지 복용하지 않을 것입니다. 1 개는 강사의 코드만으로 손톱이 달린 가방에 넣어 두었습니다. 이것은 당신의 것을 의미하지는 않을 것입니다 ;-) – RichColours

+0

ppp 라인이나 slip을 생각하고 있습니까? –

+0

@RichColours 나는 학생들이 많이 배운 커뮤니케이션 문제를 해결함으로써 당신에게 동의한다. 그런 프로토콜을 디자인하기 위해 마음을 정하면 공동 작업하고 스스로 구축 할 학생이 될 것입니다. 일단 개발되면 다음 배치의 프로젝트 개발을 가속화 할 것이고, 아마도 그 배치는 어떤 문제가 그들의 연장자가 돌보 았기 때문에 더 어려운 문제를 떠맡을 수있을 것입니다. –

답변

4

이미 열려있는 표준 프로토콜로 이동하려면 Modbus ASCII를 구현할 수 있습니다.

+1

코드를 단순하게 유지하고 대역폭을 줄이려는 경우 Modbus RTU. 필자는 근무일보다 적은 시간에 저 발열의 Modbus 서버를 작성했습니다. 사양은 http://modbus.org에서 무료로 제공됩니다. –

2

Comli는 일부 구형 장치 또는 이더넷을 사용할 수없는 경우에 사용되는 마스터/슬레이브 프로토콜입니다. 요청하면 ABB에서 사양을 얻을 수 있습니다 - 비밀이 아닙니다.

그렇다면 OPC 서버/클라이언트 아키텍처를 사용하여 좀 더 강력한 의사 소통을 얻을 수 있다고합니다.

+--------------+ +--------------+   +--------+ 
| OPC UA Client| -- | OPC UA Server| -comli- | Device | 
+--------------+ +--------------+   +--------+ 

이렇게하면 OPC UA 클라이언트 프로토콜이 독립 실행 형으로 만들어지기 쉽습니다.

모드 버스 내가 OPC는 당신에게 당신이 원하는 고위급 작업을 줄 것이다 생각을 많이

를 사용하는 다른 직렬 프로토콜이다.

www.opcfoundation.org www.abb.com

PS를 참조. OPC UA는 이전 OLE 버전과 같지 않으므로 COM/DCOM과 아무런 관련이 없습니다.

5

내부 시스템의 프로토콜을 의미합니까? 그렇다면 임베디드 소프트웨어 엔지니어가 자체 프로토콜을 사용하는 경향이 있습니다. 대부분의 사람들은 그들이 최적의 시스템을 만들 수 있다고 말한다.

이상적인 방법은 아닙니다. 나는 학생들이 좋은 모범을 배우는 것이 좋다는 것에 동의한다.

불행히도 나는 잘 로보트 응용 프로그램에 맞는 프로토콜 스택을 몰라요. 하지만 google's protocol buffer 시스템을 사용해 보도록 권하고 싶습니다. 프로토콜 엔진 구축에 대한 대부분의 노력을 단순화 할 수 있으며, 일반 C로도 작동합니다.

+0

우리는 무엇이든 소스를 공개 할 것입니다. –

2

mjh2007처럼 Modbus는 표준적이고 개방적이며 쉽게 사용할 수 있습니다. 내가 볼 수있는 유일한 문제는 직렬 Modbus가 타임 아웃을 사용하여 패킷의 끝을 감지하기 때문에 로봇이 명령에 "신속하게"응답하도록하려는 경우입니다. 시간 초과 요구 사항을 무시하고 수신 한 기능 코드 및 매개 변수를 기반으로 패킷의 예상 크기를 계산하여 마지막 바이트를 수신하고 체크섬을 확인한 후 즉시 명령 처리를 시작할 수 있습니다. This page에는 이러한 체계를 구현하는 데 대한 몇 가지 세부 정보가 있습니다.

0

ATAO가 1로 설정된 API 모드에서 XBee 모듈의 "Transmit Explicit"프레임 (유형 0x11)을 사용해야합니다.항상 프레임을 브로드 캐스트하는 대신 네트워크의 특정 봇에 유니 캐스트 할 수 있습니다. 메쉬 지그비 네트워크에서는 가능한 한 브로드 캐스트를 피하고자합니다.

"AT 모드"를 사용하여 원시 데이터를 보내거나 ATAO가 0으로 설정된 "API 모드"("투명 직렬"이라고도 함)를 사용하고있는 것 같습니다.

해당 프레임 유형 (0x11)을 보면받는 사람이 이미 여러 필드 (원본/대상 끝점, 클러스터, 프로필 ID)가 포함 된 0x91 프레임을 얻는 것을 알 수 있습니다. ZigBee 네트워킹을 시도하지 않으므로이 필드를 다시 사용할 수 있습니다.