
要件: Windows 上で、RS232 ポートを使用して外部デバイスと通信するソフトウェアを実行しています。ハードウェアは PC から送信されたコマンドを受信し、PC に応答します。コンピュータとハードウェアの間でアダプタを使用せずに通常のケーブルを使用すると、送受信は 50 ミリ秒で完了します。イーサネットから RS232 へのアダプタを使用すると、合計通信時間は (50 + x) ミリ秒で、遅延は x ミリ秒です。
オンラインで入手できる製品は多数あり、私はいくつかの製品のデータシートを確認しました。データ ビット、ボーレート、速度などのイーサネットおよびシリアル通信パラメータに関する情報はありましたが、レイテンシに関する情報はどこにも見つかりませんでした。
これまでのところ ソフトウェアをテストするためにアダプタ (最大ボーレート 230.4 kbps) を使用しましたが、シリアル ポート タイムアウト例外が発生しました。
質問
このレイテンシーはどのような基準に依存しますか?
レイテンシはボーレートに依存しますか?
レイテンシ(おおよその値)を判断するには、データシートで何を確認すればよいですか?
メーカーはレイテンシー情報を提供していますか?
答え1
このレイテンシーはどのような基準に依存しますか?
バッファリング、データ フレーミング、送信、プロトコル、タイムアウトなどが主なものだと思います。
他のコメント投稿者が述べたように、少なくともプロトコル変換の遅延があります。エンドポイントとブリッジのデータのバッファリング、再コーディング、プロトコルのオーバーヘッド、および送信時間を考慮する必要があります。遅延は、送信前にデータの完全なフレームがバッファリングされるかどうか、および内部タイムアウトが何であるかによって影響を受けます。これらは、一部のデバイスで構成できます。
また、イーサネット プロトコルが UDP、TCP、またはカスタム プロトコルを使用しているかどうかによっても異なります。プロトコルが再送信をサポートしているかどうか、および追加の整合性またはシグナリング情報を追加するかどうかによっても異なります。これらも、一部のデバイスで構成できます。調べたわけではありませんが、ローエンド デバイスは整合性や再送信なしで UDP を使用し、データ フローが停止した場合に部分的なフレームを送信するために、内部タイムアウトを使用して UDP フレーム全体をバッファリングする傾向があると推測します。
レイテンシはボーレートに依存しますか?
測定するレイテンシによって異なります。シリアルデータレートの違いは、おそらくスループットあなたのレイテンシーはい、レイテンシに影響しますが、9600bps では 1 バイトの送信に約 1 ミリ秒かかることに注意してください。
レイテンシ(おおよその値)を判断するには、データシートで何を確認すればよいですか?
メーカーはレイテンシー情報を提供していますか?
産業用アプリケーション用のブリッジは、遅延やスループットに関する情報を提供することがあります。たとえば、そのような製品ページレイテンシは2msとしている。また、以下のような企業主催のテストレポートもある。2003年の競合比較またはこの2002年の報告書複数のデバイスのレイテンシを比較するテストです。テストにおけるレイテンシは、平均で数ミリ秒から最大 861 ミリ秒の範囲です。
いずれにせよ、根本的な問題は遅延の問題ではなく、シリアル ポートのタイムアウトであるように思われます。あなたが述べたことのほんの一部から判断すると、暫定的にソフトウェアまたは構成エラーを疑っています。シリアル インターフェイス ライブラリでは、通常、インターバイト タイミング、マルチバイト読み取り時間、書き込み時間など、いくつかのタイムアウトが指定されています。また、バッファリングされたデータが十分な速さで空にならない場合は、バッファ オーバーフロー エラーが発生します。ご存知かもしれませんが、通常はシリアル クライアントで各タイムアウトを調整または無効にすることができます。
まず、エラーの発生源を特定することから始めます。安価なアダプタは定格の最大値で必ずしも良好なパフォーマンスを発揮するとは限らないので、速度を 9600 に下げることもできます。