セーフティランタイムは、ログファイルにタイミングエラーを表示します。
準備:
実行しています 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 Provider と CODESYS 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 ]
フラッグ (ショート/ロング) | [説明] |
---|---|
| システム上で利用可能なネットワークインターフェースのリストを返します。ここで |
| インターフェースに問い合わせて、次の情報を返します。
|
|
|
| アドレス (ホストアドレス、ポート番号など) が名前に変換されないようにします。 |
| 各パケット (リンクレベルヘッダーを除く) を ASCII で出力します |
| 解析時には、各パケットのヘッダーに加えて、各パケットのデータ (リンクレベルのヘッダーを除く) が 16 進数で出力されます。 |
| デフォルト値の262144バイトではなく、各パケットから |
| 未処理のデータパケットを分析して印刷する代わりにファイルに書き込みます |
| 各ダンプラインにタイムスタンプが出力されないようにします |
| 各ダンプラインのタイムスタンプを、1970 年 1 月 1 日 00:00:00 からの秒数、UTC、およびそれ以降の 1 秒の端数で返します。 |
| 次に応じて、デルタ (マイクロ秒またはナノ秒) の解像度を出力します。 |
| 各ダンプラインに、午前 0 時からの時間、分、秒、および秒の端数でタイムスタンプを出力します。出力の前には日付が付きます |
| 追加情報 (詳細) を出力します |
パッケージをトレースする
コンソールでの簡単なキャプチャと出力:
> 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 トレースファイルのデフォルトのファイル拡張子です。)
> sudo tcpdump -i eno1 -w myfirsttrace.cap -s 200 udp port 60000
調査/分析
上の例のように、セーフコントロール SL のホスト (タイムプロバイダー通信の受信側) にトレースを記録します。
次に、Wireshark を使用して*.pcap ファイルを開きます。このようになっているはずです
パッケージは通常、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 (タイムスタンプの送信)。