1. TOP
  2. OMRON
  3. 上位アプリケーション
  4. BIツール ECAT

概略

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


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

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

EtherCATの診断・統計情報とは

EtherCATマスタまたはスレーブが持っている診断・統計情報は次の内容が格納されています

マスタTotalSentCnt総送信フレーム数
TotalRecvCnt総受信フレーム数
TimeoutCntフレーム受信タイムアウト回数
DiscardPDOCntプロセスデータ受信破棄数
NetDelayネットワーク伝搬遅延時間
CRCErrCntCRCエラーフレーム受信数
スレーブResult取得結果
NodeAdrノードアドレス
PortNumポート数
ErrCnt[0] - [3]ポート毎のエラーカウンタ

BIツールとは

さまざまなデータを分析・見える化するソフトウェアです

一部有料 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ツールを使って分析します

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

DBのテーブルを作成

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

EtherCATマスタの診断・統計情報のテーブル

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

テーブル名 = MasterStat
テーブル名カラム名データ型
MasterStatRecDTdatetime
TotalSentCntnumeric(10,0)
TotalRecvCntnumeric(10,0)
TimeoutCntnumeric(10,0)
DiscardPDOCntnumeric(10,0)
NetDelaynumeric(10,0)
CRCErrCntnumeric(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
テーブル名カラム名データ型
SlaveStatRecDTdatetime
Resultnumeric(10,0)
NodeAdrnumeric(5,0)
PortNumnumeric(3,0)
ErrCnt0numeric(3,0)
ErrCnt1numeric(3,0)
ErrCnt2numeric(3,0)
ErrCnt3numeric(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の診断・統計情報を取得します

テーブル名 = SlaveStat
マスタEC_GetMasterStatistics
スレーブEC_GetSlaveStatistics

処理内容

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



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

解説

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

PLCプロジェクトのダウンロード ECATStatisticsDB.zip

BIツールの設定

PowerBI Desktop

PowerBI Desktopの場合

Metabase

Metabaseの場合

この記事へのコメント