도와주세요!!
글 수 15,339
2009.06.15 17:36:40 (*.137.3.194)
15607
프로토콜쪽으로 관심을 갖던중..
모드버스만 알면 거의 대부분의 장비와 통신이 가능하다기에
이래저래 하다보니 우선 CRC16 이라는 것을 알아야 하더군요
그래서 이것저것 찾다보니 몇가지 궁금증이 생겼습니다.
1. 제가 맞게 이해하고 있는지 궁금합니다.
- 우선 6개의 바이트를 전송 할경우 crc 함수에 6바이트를 집어넣으면 2바이트가 리턴되고
리턴된 2바이트를 뒤에 붙여서 총 8바이트를 전송하면 상대방은 받은 8바이트를 crc16 함수에
넣고 결과가 0이 리턴되었을 경우 데이터가 이상이 없이 전송된 것이다.?
--> 제가 맞게 이해한건가여?
2. crc 함수가 참조하는 헥사 테이블은 1종류만 있는게 아니다.
따라서 사전에 같은 테이블을 쓰는지 알아야 한다?
3. 전문적으로 하시는 분을 보니 아무 자료도 없이 온습도 센서와 모드버스 통신을 하시는것 같던데
어느 어드레스에 데이터가 있는줄 알고 통신을 하는 걸까여?
--> 공통적으로 많이 쓰는 어드레스가 있나여?
4. c# 으로 도 hmi 를 많이 구현하나여?
처음 글을 쓰면서 이래저래 질문이 많네여 ^^;
바쁘신데 답글 달아주시면 정말 고맙겠습니다.
다른 것은 모르겠습니다만, 2 번 항에 대해서는 답을 드릴 수 있을 것 같아 올립니다.
말씀과 같이 CRC를 사용하기 위해서는 먼저 상호간에 CRC 테이블을 먼저 맞추어 주어야 합니다.
아래의 글은 CCITT 표준 에서 사용하는 CRC16 프로그램 코딩을 소개하고 있습니다.
http://forum.falinux.com/zbxe/?document_srl=406152