BIツールを使ったECATの診断・統計情報

概要

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

ノード別に各ポートのエラーカウントの表示と履歴を表示したいと思います


EtherCATの診断・統計情報を読み出してBIツールで表示するまでの流れ

  1. DBにテーブルを作成
  2. PLCプログラムの作成
  3. BIツールの設定

EtherCATの診断・統計情報とは

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 Google
Qlick Sense Desktop Qlick社
Zoho Analytics ソーホージャパン株式会社
オープンソース
(無料)
Pentaho Pentaho / 日立
Grafana Grafana Labs
Metabase Metabeseプロジェクト
Kibana Elastic社
Graylog Graylog社
Redash Redash社
Apache Superset Airbnb社

ここでは

構成
PLCで取得したECATの診断・統計情報をDBにInsertしてPCでBIツールを使って分析します

PLC OMRON NJ/NXシリーズ データベース接続 CPUユニット Ver1.64以降
Sysmac Studio Ver1.56以降
DataBase SQLServer
BIツール Microsoft PowerBI Desktop
または Metabase


DBのテーブルを作成

以下の2つのテーブルを作成します

EtherCATマスタの診断・統計情報のテーブル
PLCで取得する診断・統計情報のデータに日付時刻フィールドを追加して保存します

テーブル名 = 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)

テーブル作成用SQL
-- 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)
);
								

EtherCATスレーブの診断・統計情報のテーブル
PLCで取得する診断・統計情報のデータに日付時刻フィールドを追加して保存します

テーブル名 = 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)

テーブル作成用SQL
-- 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の処理

EtherCATの診断・統計情報の取得
以下の命令を使ってEtherCATの診断・統計情報を取得します

マスタ EC_GetMasterStatistics
スレーブ EC_GetSlaveStatistics


処理内容
定周期でEC_GetMasterStatisticsとEC_GetSlaveStatisticsを実行しDataBaseに実行結果を日付時刻付きでInsertします


(このラダーにはエラー処理は入っていません)

解説

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


BIツールの設定

PowerBI Desktop

PowerBI Desktopの場合

Metabase

Metabaseの場合