문제

Serial (RS485)을 통해 매우 낮은 속도 데이터 연결이 있습니다. 9600 보드 실제 데이터 전송 속도는 그 중 약 25 %입니다.

직렬 선은 매우 높은 EMR의 영역을 통과합니다.피크 변동은 3000kV에 도달 할 수 있습니다.

나는 물리적 매체의 변화를 강제하는 위치 (아직)에 있지 않지만 간단한 강력한 순방향 오류 수정 체계에 쉽게 제공 할 수 있습니다.계획은 PIC18 시리즈 마이크로에서 구현하기 쉽습니다.

아이디어?

도움이 되었습니까?

해결책

이 사이트 는 PIC18에 리드 솔로몬을 구현하는 것을 주장합니다.나는 그것을 직접 사용한 적이 없지만, 아마도 그것은 유용한 참조가 될 수 있습니까?

다른 팁

Modbus ASCII 프로토콜에서 사용되는 CRC 알고리즘을 검색합니다.

PIC18 장치로 개발하고 현재 MCC18 및 PICC18 컴파일러를 사용합니다. 몇 주 전에 PICC18의 주변 장치 헤더가 TRMT2 비트 대신 TRMT 비트에 BUSY2USART () 매크로를 잘못 매핑한다는 것을 알아 차렸다. 이것은 문제를 발견하기 전에 짧은 시간 동안 주요 두통을 일으켰습니다. 예제, 간단한 전송 :

putc2USART(*p_value++);
while Busy2USART();
putc2USART(*p_value);
.

busy2USART () 매크로가 TRMT 비트에 잘못 맵핑되었을 때, 내가 잘못된 비트를 모니터링했기 때문에 바이트가 시프트 레지스터를 떠나기를 기다리지 않았습니다. 부정확 한 머리글 파일을 깨달기 전에 485 개 이상의 바이트를 성공적으로 전송할 수 있었던 유일한 방법은 바이트 사이에서 1ms를 기다리는 것이 었습니다. 나의 전송 속도는 91912 년이었고 바이트 사이의 지연은 내 처리량을 죽였다. 또한 충돌 탐지 및 체크섬 수단을 구현하는 것이 좋습니다. Checksums는 PIC18에서도 저렴합니다. 자신의 변속기를들을 수 있다면 동일한 루프 및 잘못된 타이밍에 중복 된 주소로 인해 발생할 수있는 충돌을 알고있을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top