BIツールを使ったECATの診断・統計情報
概要
EtherCATの診断・統計情報を定周期で読み出してBIツールを使って可視化してみます

EtherCATの診断・統計情報を読み出してBIツールで表示するまでの流れ
EtherCATの診断・統計情報とは
マスタ | TotalSentCnt | 総送信フレーム数 |
TotalRecvCnt | 総受信フレーム数 | |
TimeoutCnt | フレーム受信タイムアウト回数 | |
DiscardPDOCnt | プロセスデータ受信破棄数 | |
NetDelay | ネットワーク伝搬遅延時間 | |
CRCErrCnt | CRCエラーフレーム受信数 | |
スレーブ | Result | 取得結果 |
NodeAdr | ノードアドレス | |
PortNum | ポート数 | |
ErrCnt[0] - [3] | ポート毎のエラーカウンタ |
BIツールとは
以下はBIツールの例です (2024/02)
一部有料 | Microsoft PowerBI Desktop | MicroSoft |
Google Data Studio | ||
Qlick Sense Desktop | Qlick社 | |
Zoho Analytics | ソーホージャパン株式会社 | |
オープンソース (無料) |
Pentaho | Pentaho / 日立 |
Grafana | Grafana Labs | |
Metabase | Metabeseプロジェクト | |
Kibana | Elastic社 | |
Graylog | Graylog社 | |
Redash | Redash社 | |
Apache Superset | Airbnb社 |
ここでは

PLC | OMRON NJ/NXシリーズ データベース接続 CPUユニット Ver1.64以降 Sysmac Studio Ver1.56以降 |
DataBase | SQLServer |
BIツール | Microsoft PowerBI Desktop または Metabase |
DBのテーブルを作成
テーブル名 = MasterStat
テーブル名 | カラム名 | データ型 |
---|---|---|
MasterStat | RecDT | datetime |
TotalSentCnt | numeric(10,0) | |
TotalRecvCnt | numeric(10,0) | |
TimeoutCnt | numeric(10,0) | |
DiscardPDOCnt | numeric(10,0) | |
NetDelay | numeric(10,0) | |
CRCErrCnt | numeric(10,0) |
-- SQLServer Query Create Table
create table MasterStat(
RecDT datetime NOT NULL,
TotalSentCnt numeric(10, 0) NULL,
TotalRecvCnt numeric(10, 0) NULL,
TimeoutCnt numeric(10, 0) NULL,
DiscardPDOCnt numeric(10, 0) NULL,
NetDelay numeric(10, 0) NULL,
CRCErrCnt numeric(10, 0) NULL,
CONSTRAINT PK_MasterStat_1 PRIMARY KEY CLUSTERED(RecDT)
);
テーブル名 = SlaveStat
テーブル名 | カラム名 | データ型 |
---|---|---|
SlaveStat | RecDT | datetime |
Result | numeric(10,0) | |
NodeAdr | numeric(5,0) | |
PortNum | numeric(3,0) | |
ErrCnt0 | numeric(3,0) | |
ErrCnt1 | numeric(3,0) | |
ErrCnt2 | numeric(3,0) | |
ErrCnt3 | numeric(3,0) |
-- SQLServer Query Create Table
create table SlaveStat(
RecDT datetime NOT NULL,
Result numeric(10, 0) NULL,
NodeAdr numeric(5, 0) NOT NULL,
PortNum numeric(3, 0) NULL,
ErrCnt0 numeric(3, 0) NULL,
ErrCnt1 numeric(3, 0) NULL,
ErrCnt2 numeric(3, 0) NULL,
ErrCnt3 numeric(3, 0) NULL,
CONSTRAINT PK_SlaveStat_1 PRIMARY KEY CLUSTERED(RecDT, NodeAdr)
);
PLCの処理
マスタ | EC_GetMasterStatistics |
スレーブ | EC_GetSlaveStatistics |

(このラダーにはエラー処理は入っていません)
0 | LogEnableをONしている間、LogRecが1分間隔でONします | |
1 | EC_GetMasterStatisticsとEC_GetSlveStatisticsを実行してEtherCATの診断・統計情報を取得します | |
2 | DataBase処理中のフラグ作成 | |
3 | DataBase接続処理 | |
4 | EtherCATマスタの診断・統計情報に日付時刻データを付けて追加するレコードを作成 | |
5 | MasterStatテーブルと追加するレコード(MasterStatTbl)をマッピング | |
6 | Insertを実行 | |
7 | EtherCATスレーブの診断・統計情報に日付時刻データを付けて追加するレコードを作成 | |
3行目 | 読み出したSlaveStatのノードアドレスに 0 が出現するまで繰り返し | |
6-13行目 | 読み出した情報に日付時刻を付けて新しいレコードを作成 | |
17行目 | prevSlaveStatに前回値として記憶 | |
8 | SlaveStatテーブルと追加するレコード(SlaveStatTbl)をマッピング | |
9 | BatchInsertを実行 | |
10 | デバッグ用に接続状態(ConnectionStatus)を取得 | |
11 | BatchInsertの正常終了でDataBaseと切断 |
PLCプロジェクトのダウンロード ECATStatisticsDB.zip