シリアルでのASCIIの伝送のための簡単なロバストエラー訂正(RS485)

StackOverflow https://stackoverflow.com/questions/3257238

質問

シリアルを介した非常に低速データ接続を持っています(RS485)。 9600ボー 実データ伝送速度はその約25%です。

シリアルラインは非常に高いEMRの領域を通過しています。ピーク変動は3000 kVに達することができます。

私は物理的媒体の変化を強制するために(まだ)位置にはありませんが、簡単な堅牢な前向き誤差訂正方式を入れることを容易に提供することができます。この方式は、PIC18シリーズマイクロで実装が容易である必要があります。

アイデア?

役に立ちましたか?

解決

このサイト PIC18にリードソロモンを実装するためのクレーム。私はそれを私自身を使ったことがないが、おそらくそれは役に立つ参照かもしれませんか?

他のヒント

Modbus ASCIIプロトコルで使用されるCRCアルゴリズムの検索。

PIC18デバイスで開発し、現在MCC18とPICC18コンパイラを使用しています。私は数週間前にPICC18の周辺ヘッダーがTRMT2ビットの代わりにBusy2Usart()マクロをTRMTビットに誤ってマッピングすることに気づいた。これは私が問題を発見する前に私の主要な頭痛を短くしました。例、簡単な伝送:

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

BUSY2USART()マクロがTRMTビットに誤ってマッピングされたとき、私は間違ったビットを監視していたので、私はバイトがシフトレジスタを離れるのを待っていませんでした。不正確なヘッダーファイルを実現する前に、485を超えるバイトを正常に送信できた唯一の方法は、バイト間で1 ms待つことでした。私のボーレートは91912で、バイト間の遅延は私のスループットを殺しました。 衝突検知とチェックサムの手段を実装することもお勧めします。チェックサムは、PIC18でも安いです。あなたがあなた自身の送信を聞くことができるならば、それを実行することを可能にするでしょう、それは同じループおよび誤ったタイミングで重複したアドレスから生じるかもしれない衝突を認識することを可能にします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top