LabVIEW에서 제작된 센서 모듈과 시리얼 통신으로 센서동작시작 명령을 내리고 그것에 따른 응답을 받는 간단한 데이터 통신 프로그램을 작성하고 있습니다.
-통신 프로토콜
.통신사양 : 115200bps, parity none, data-bits 8, stop bits 1, flow control none
.프레임 기본 포맷 : 9byte
-센서 모듈 동작 정의
.센서동작시작 명령 :0x02 0xff 0x51 0x00 0x00 0x01 0x01 0x03 0xAF
.센서동작시작 응답 :0x02 0xff 0x52 0x00 0x00 0x01 0x01 0x03 0xAC
-테스트 결과
.실행 메시지에 에러 없음으로 표시
.bytes read 가 0(zero)
.센서동작시작 응답 없음.
-문의
.작성된 VI에 문제가 없는지 궁금합니다.
.센서모듈과 통신에서 어떤 부분을 확인해야 하나요?
.끝으로 MAX에서 확인할 수 있는 방법이 있나요?
제가 생각했을땐, 통신의 흐름대로 차근차근 하나씩 살펴봐야할 것 같습니다.
1. 랩뷰에서 원하는 명령대로 잘 전송이 되는지?
(혹시 아스키로 전송하진 않는지? 다른 상용 통신프로그램으로 확인해 볼 수 있겠지요)
2.랩뷰에선 잘 쏘지만, MCU에서 잘 받아들이는지?
(프로토콜대로 잘 받아들였다면, 비프음을 낸다던지. 등등 / 혹은 못받아들인다면 선로문제는 아닌지? 확인점검)
3. MCU에서 잘 받아들였지만 응답을 제대로 하는지?
(원하는 타이밍에 원하는 포맷대로 MCU가 잘 쏘는지)
4. MCU가 잘 받아들였고 잘 쐈음에도 불구하고 랩뷰에서 못한다면?
(통신선로 혹은 규격을 다시한번더 확인해보고, 랩뷰에서도 원하는 타이밍 그 이상의 충분한 딜레이를 주었는지 확인 등등...)
위에 답변관련 확인이 끝나고 배선연결과 프로토콜이 정확한데도 해결이 안되신다면 아래 항목도 의심해보시길 바랍니다.
1) 구분자 - 랩뷰 시리얼통신 관련함수에서 통신 구분자는 기본값은 라인피드인데
실제로는 캐리지리턴을 사용하거나 둘다 사용하는 경우
2) 센서측 시리얼 통신부품 의사양문제 - 간혹 저가형 부품의 경우, 한번에 수신하지 못하고
한바이트씩 보내야 정상 수신하는 경우가 있음