今回の記事はSysmac Stuidoの関数EC_GetMasterStatisticsとEC_ClearMasterStatisticsを使用し、NX502-1300 EtherCATマスターの現在統計データの取得とクリア操作を行います。
さ、FAを楽しもう!

前書き
いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。
技術は独り占めせず、届けるもの
私たちは工場の生産技術や制御に関する技術情報を、ブログや動画などで無料公開しています。「知識は誰でもアクセスできるべき」という信念のもと、現場で役立つ具体的なノウハウやトラブル事例などを発信してきました。すべて無料で続けているのは、「知らなかったせいで困る人」を少しでも減らしたいからです。
また、もしあなたの現場で…
- 「このPLCとデバイスの組み合わせ、ちゃんと動くのかな?」
- 「EtherCAT通信でうまくいかない部分を検証してほしい」
- 「新しいリモートI/Oを試したいけど社内に検証環境がない」
など、困っている構成や試してみたいアイデアがあれば、ぜひお知らせください。機器の貸出や構成の共有が可能であれば、検証し、記事や動画で発信します(ご希望に応じて匿名対応も可能です)。
支援のかたち
現在、私達の活動はほぼ無償で続けており、記事や動画の制作には、時間と検証環境の整備が必要です。この活動を継続的にコンテンツを提供するためには、皆様の温かいご支援が大変重要です。
メンバーシップ(ラジオの応援)
Fullさんとのラジオをより充実させるための支援プランです。
https://note.com/fulhause/membership/join
Amazonギフトリスト
コンテンツ制作に必要な機材・書籍をリストにしています。
https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share
Patreon(ブログ・動画活動への応援)
月額での小さなご支援が、記事の執筆・検証環境の充実につながります。
https://www.patreon.com/user?u=84249391
Paypal
小さな支援が大きな力になります。
https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP
知ってたら助かること、届けたいだけです
あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。
soup01threes*gmail.com
技術はひとりじゃもったいない。
Reference Link
FB
最初に今回記事で使用するFBを紹介します。
EC_GetMasterStatistics
EC_GetMasterStatistics命令は、EtherCATマスターの診断情報および統計情報を読み出します。読み出されたEtherCATマスターの診断・統計情報は、マスター診断統計情報 MasterStat に格納されます。

MasterStatのデータ型は構造体 **_sECAT_MASTER_STAT** です。仕様は以下のとおりです:
名前 | 意味 | 説明 | データ型 |
|---|---|---|---|
MasterStat | マスター診断統計情報 | 読み出したEtherCATマスターの診断・統計情報を格納 | _sECAT_MASTER_STAT |
TotalSentCnt | 総送信フレーム数 | マスターが送信したEtherCATフレームの総数 | UDINT |
TotalRecvCnt | 総受信フレーム数 | マスターが受信したEtherCATフレームの総数 | UDINT |
TimeoutCnt | フレーム受信タイムアウト数 | 発生したフレーム受信タイムアウトの回数 | UDINT |
DiscardPDOCnt | プロセスデータ破棄数 | プロセスデータ受信処理中に破棄されたプロセスデータの数 | UDINT |
NetDelay | ネットワーク伝搬遅延時間 | CPUユニットがフレームを送信してから送信フレームを受信するまでの時間 | UDINT |
CRCErrCnt | CRCエラーフレーム受信数 | CRCエラーが発生した受信フレームの数 | UDINT |
EC_ClearMasterStatistics
EC_ClearMasterStatistics命令は、EtherCATマスターの診断情報および統計情報をクリアします。

Implementation
OMRON 側
それではオムロン側のプログラムを構築しましょう。

プログラム
p001GetMasterStatisticsを作成します。

P001
こちらはプログラムで、これから1Rungずつ説明してきます。

VAR
こちらはプログラムで使用した変数です。

xGetMasterStatisticsExe | BOOL | 実行トリガー |
|---|---|---|
xGetMasterStatisticsDone | BOOL | 完了フラグ |
xGetMasterStatisticsBusy | BOOL | 実行中フラグ |
wGetMasterStatisticsErrorID | WORD | エラーID |
xGetMasterStatisticsError | BOOL | エラーフラグ |
stsECAT_MASTER_STAT | _sECAT_MASTER_STAT | マスター診断統計情報格納用構造体 |
fbEC_GetMasterStatistics | EC_GetMasterStatistics | ファンクションブロックインスタンス |
ラング0
xGetMasterStatisticsExeの立ち上がりエッジでfbEC_GetMasterStatisticsが実行され、EtherCATマスターの統計情報を読み出します。実行完了後、stsECAT_MASTER_STAT構造体に送受信フレーム数・タイムアウト数・などの診断情報が格納されます。

ラング1
xGetMasterStatisticsDone(完了)またはxGetMasterStatisticsError(エラー)のどちらかがONになると、xGetMasterStatisticsExeをリセット(R)します。
つまり、実行トリガーを自動的にOFFに戻すことで、次回の立ち上がりエッジ実行に備える処理です。

P002
p002ClearMasterStatisticsを作成します。

こちらはプログラムで、これから1Rungずつ説明していきます。

VAR
こちらはプログラムで使用した変数です。

fbEC_ClearMasterStatistics | EC_ClearMasterStatistics | ファンクションブロックインスタンス |
|---|---|---|
xClearMasterStatisticsExe | BOOL | 実行トリガー |
xClearMasterStatisticsDone | BOOL | 完了フラグ |
xClearMasterStatisticsBusy | BOOL | 実行中フラグ |
wClearMasterStatisticsErrorID | WORD | エラーID |
xClearMasterStatisticsError | BOOL | エラーフラグ |
ラング0
xClearMasterStatisticsExeの立ち上がりエッジでfbEC_ClearMasterStatisticsが実行され、EtherCATマスターの統計情報をクリアします。

ラング1
xClearMasterStatisticsDone(完了)またはxClearMasterStatisticsError(エラー)のどちらかがONになると、xClearMasterStatisticsExeをリセット(R)します。
実行トリガーを自動的にOFFに戻すことで、次回の立ち上がりエッジ実行に備えます。

結果
xGetMasterStatisticsExeの立ち上がりエッジでFB実行したら、stsECAT_MASTER_STATタイプの変数からEtherCATの統計データが帰ってきました。

送受信フレーム数が一致しており、タイムアウト・CRCエラーともに0のため、EtherCATネットワークは正常に動作していることが確認できます。

xClearMasterStatisticsExeの立ち上がりエッジでFB実行し、完了後、ラング1でxClearMasterStatisticsExeを自動リセットします。またBusy・Error ともに False、ErrorID = 0000なので、つまり正常完了です。

EtherCATの統計データもクリアされました。
