Skip to main content

セーフティランタイムは、ログファイルにタイミングエラーを表示します。

準備:

実行しています CODESYS Safe Control SL または CODESYS Virtual Safe Control SL と組み合わされた CODESYS Safe Time Provider

トラブルシューティング

から報告された問題が発生した場合 CODESYS Safe Control SL ランタイム環境とタイミングに関する問題 (から) CmpSIL3 component) の場合、セーフタイムネットワークでタイミングの問題が発生している可能性があり、調査する必要があります。

. ログメッセージは次のようになります。
  • #### Exception: ID: 0x40000066 <p0>0xb633</p0> <p1>0xbcdd</p1> <p2>0xbce1</p2> <p3>0xb2fd</p3> <p4>0x0</p4>

. 例外エラーには以下の意味があります。
  • 0x40000065: 例外チャネル x: サイクルタイムのローカルタイムスタンプの妥当性チェック

  • 0x40000066: 例外チャネル x: サイクルタイムまでのリモートタイムスタンプの妥当性チェック

  • 0x40000067: 例外チャネル x: リモートタイムスタンプとローカルタイムスタンプの妥当性チェック

注記

セーフタイムネットワーク(間 CODESYS Safe Time ProviderCODESYS Safe Control ランタイム環境) には、フィールドバスネットワーク (EtherCAT や Profinet など) と同じ高い安定性とリアルタイム性に対する要件があります。

によるトレース tcpdump

Linux コマンドラインでは、次の方法で簡単にトレースを作成できます。 tcpdump ツール。すでに Wireshark またはハードウェアトレースデバイスに慣れている場合は、これを使用してトレースを作成することもできます

. 従う必要のある基本的な手順:
  • トレースするネットワークアダプタを決定します。

  • トレースを小さくするには、トレースしたい内容 (内容、パッケージタイプ、ログなど) を確認します。

便利なコマンド

インストール tcpdump (お使いのディストリビューション/ソフトウェアパッケージ管理によって異なります)

  • 例えば、Debian/Ubuntu の「apt」ベースの場合: sudo apt install tcpdump

  • レッドハット-「Yum/DNF」ベース: sudo yum install tcpdump

使用可能なすべてのネットワークアダプタが表示されます。 tcpdump 監視可能:

> tcpdump -D 
1.eno1 [Up, Running, Connected]
2.any (Pseudo-device that captures on all interfaces) [Up, Running]
3.lo [Up, Running, Loopback]

注記

実行することは可能です tcpdump 通常のユーザーとして。これを実行したい場合は、以下をお読みください tcpdump 詳細については、ドキュメンテーションを参照してください。

tcpdump コマンドライン引数

で可能なすべてのコマンドの詳細 tcpdump 次の場所にあります tcpdump マニュアルページ: https://www.tcpdump.org/manpages/tcpdump.1.html

または電話 tcpdump:

> tcpdump --help 

tcpdump version 4.99.3
libpcap version 1.10.3 (with TPACKET_V3)
OpenSSL 3.0.15 3 Sep 2024
Usage: tcpdump [-AbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [--count]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ --immediate-mode ] [ -j tstamptype ]
                [ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ]
                [ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
                [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
                [ --time-stamp-precision precision ] [ --micro ] [ --nano ]
                [ -z postrotate-command ] [ -Z user ] [ expression ]
9. 最も重要なフラグとフィルター:

フラッグ (ショート/ロング)

[説明]

-D

--list-interfaces

システム上で利用可能なネットワークインターフェースのリストを返します。ここで tcpdump コマンドでパケットをキャプチャできる

-i <interface>

--interface <interface>

インターフェースに問い合わせて、次の情報を返します。

  • リンクレイヤータイプのリスト

  • タイムスタンプタイプのリスト

  • フィルター式をコンパイルした結果

-c <Count>

<count> 個のパケットを受信または読み込んだ後、問い合わせを終了する。

-n

アドレス (ホストアドレス、ポート番号など) が名前に変換されないようにします。

-A

各パケット (リンクレベルヘッダーを除く) を ASCII で出力します

-x

解析時には、各パケットのヘッダーに加えて、各パケットのデータ (リンクレベルのヘッダーを除く) が 16 進数で出力されます。

-s <snaplen>

--snapshot-length=<snaplen>

デフォルト値の262144バイトではなく、各パケットから <snaplen> バイトのデータを使用する。

-w <file>

未処理のデータパケットを分析して印刷する代わりにファイルに書き込みます

-t

各ダンプラインにタイムスタンプが出力されないようにします

-tt

各ダンプラインのタイムスタンプを、1970 年 1 月 1 日 00:00:00 からの秒数、UTC、およびそれ以降の 1 秒の端数で返します。

-ttt

次に応じて、デルタ (マイクロ秒またはナノ秒) の解像度を出力します。 --time-stamp-precision オプション) 各ダンプラインの現在の行と前の行の間。デフォルト設定はマイクロ秒単位の解像度です

-tttt

各ダンプラインに、午前 0 時からの時間、分、秒、および秒の端数でタイムスタンプを出力します。出力の前には日付が付きます

-v

追加情報 (詳細) を出力します



パッケージをトレースする

コンソールでの簡単なキャプチャと出力:

> sudo tcpdump -i <interfacename>

# e.g. with interface "eno1":
> sudo tcpdump -i eno1

Wireshark 互換ファイルとしてキャプチャして出力する

> sudo tcpdump -i <interfacename> -w <file>
 
# e.g.
> sudo tcpdump -i eno1 -w myfirsttrace.pcap

次に、ファイル myfirsttrace.pcap Wireshark で開くことができます。(.pcap は Wireshark トレースファイルのデフォルトのファイル拡張子です。)

5.
> sudo tcpdump -i eno1 -w myfirsttrace.cap -s 200 udp port 60000


調査/分析

. トレースを作成したら、それを分析する必要があります。これは tcpdump を使用して行うことも、Wireshark を使用してグラフィカルに実行することもできます
  1. 上の例のように、セーフコントロール SL のホスト (タイムプロバイダー通信の受信側) にトレースを記録します。

  2. 次に、Wireshark を使用して*.pcap ファイルを開きます。このようになっているはずです

    _rtsl_img_iec_wireshark.png

    パッケージは通常、1 ミリ秒 (パッケージ間の時差) の間隔で送信されることがわかります。(パケット番号 58 以降を参照してください)。

    典型的な問題のある状況 CODESYS Safe Control SL で例外が発生する/タイミングの問題はパケット番号 74 で確認できます。このパケットは前のパケットの 2 ミリ秒後に受信されるため、遅延は 1 ミリ秒程度です。このような状況は、次のような場合には受け入れられません CODESYS Safe Control 信頼性が高くリアルタイム対応のタイムスタンプとしての SL。

    . 遅延を減らすためのアクション
    • 問題が受信側と送信側のどちらで発生しているかを確認します。受信側の両方を考慮する必要があります (CODESYS Safe Control ホスト) と送信側 (CODESYS Safe Time Provider ホスト)。

    • このタイムスタンプ通信全般のリアルタイム機能と堅牢性を向上させてください。そのためには、他の干渉する通信や負荷をこのネットワークから取り除きます (タイムスタンプを安全にするためだけに使用)

    • (ネットワークドライバの) 対応する IRQ の処理優先順位を設定することで、送受信のパフォーマンスを向上させます。

    • これ以上改善できず、安全プロセスで改善できる場合は、サイクルタイムを長くすることができます CODESYS Safe Time Provider (タイムスタンプの送信)。