Windows PC で「UDP Receive」ブロックを使用しても Simulink で受信データを読み取​ることができないのは​なぜですか?

Simulink モデルを Windows PC で実行しています。Ethernet 経由で PC に接続された外部センサーとデータを交換したいと考えています。低レイテンシを実現するために、UDP プロトコルを使用しています。
「UDP Send」ブロックを使用して Simulink からセンサーに UDP パケットを送信することはできますが「UDP Receive」ブロックで Simulink で受信データを読み取りできません。

 Accepted Answer

MathWorks Support Team
MathWorks Support Team about 3 hours ago
デスクトップ PC で実行されている Simulink モデルで UDP 通信を使用する場合は、デスクトップ向けの UDP 通信をサポートする適切な UDP Receive ブロックと UDP Send ブロックを使用します。これらのブロックは、以下の 3 つのツールボックスから提供されています。
その他のUDPブロックは外部のハードウェア向けに設計されているため PC 上でのシミュレーションには使用できません。
受信データを読み込めない場合、受信 UDP パケットがウイルス対策ソフトウェアまたはファイアウォールによってブロックされている可能性があります。これらの機能を一時的に無効化いただき MATLAB がファイアウォールを通過できるようにします。手順は以下の通りです。
なお、上記で解決しない場合は以下の点をお試しください。
・ネットワーク接続が正しく設定されていることを確認します。Windows のコマンドプロンプト等で外部デバイスの IP アドレスに ping が通るかを確認します。また「ipconfig」コマンドを使用すると、コンピュータが接続されているすべてのネットワークとそれぞれのIPアドレスを確認できます。
・PC に複数のネットワークインターフェース(複数のイーサネットカード、USB-イーサネットコンバータ、Wi-Fi接続など)が搭載されている場合、Windows ネットワークドライバーが UDP パケットを誤ったネットワークインターフェースにルーティングしている可能性があります。他のネットワークインターフェースをすべて無効にし、そのうちの1つ(ホストとターゲット間の通信に使用するイーサネットインターフェース)だけをアクティブにして、問題が解決するかどうかを確認します。
・別のポート(たとえば、25001 ではなく 25002)にデータを送信するように外部デバイスを構成して問題が解決するかどうかを確認します。
・Wireshark などのサードパーティツールを使用してネットワークトラフィックを確認します。
・Instrument Control Toolbox の UDP Receive ブロックを使用して「ブロッキングモードを有効にする」のチェックを外してステータスを出力します。生データが正常に受信されているかどうかを確認します。場合によってはデータは正常に受信されていても正しく解釈されずにゼロになってしまうことがあります。
・UDP ブロックが正しい形式でデータを読み取っていない可能性があります。UDP Receive ブロックではデータを正しく受信するために、Data Type と Receive buffer size も正しく指定します。

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!