PLCチャートモニタ用のツールを作ってみた

はい。いきなりですが、(かなり)なんちゃってチャートモニタを作ってみたので公開してみます。
指定したデバイスの値を保存しつつグラフ表示をするものですが、、チャートモニタと名付けながらグラフ表示はオマケ的で非常にPoorなのであしからず。。

ツールはココからダウンロードできます。
ソースコードが気になる方はこちらを参照ください。
※設定において.NETで定義された色の名称を使うことができますが、色見本をWebページで作るのは面倒なので定義色を確認するためだけのツールを作ってみました。ココからダウンロードできます。

目次

開発・動作環境

以前のデバイスモニタと同様です。
Visual Studio 2022、C#で作りました。
ターゲットフレームワークは.NET6.0なので.NET 6.0がインストールされているWindowsで動作します。
※ランタイムはココからダウンロードできます。必要なものは「.NET デスクトップ ランタイム 6.*.* 」のランタイムです。

対応しているPLCはEthernet通信が可能な機種のみで、三菱・OMRON・KEYENCE・横河で使える、、予定です。

注意事項

多分動くと思いますが、、実PLCとの接続確認はしていないので予期せぬ不具合が発生する可能性があります。また本ツールを使用したことによる如何なる損害についても一切責任を負いません。ご使用については全て自己責任でお願いします。

心の声

やはりテンプレ的にコレは必須。。。

主な機能

ツール上で出来ることは
・通信設定
・指定デバイスの表示 (編集は不可。別途メモ帳などのエディタで編集。)
・通信にて指定デバイスの読出&グラフ表示
・読出データのファイル保存(CSV形式)とファイル読出
です。
他の特徴としては複数のPLC(最大4台)デバイスは合計16点まで可能です。

ビットデバイスは矩形で表示します。(下図のB0000とW0000.0)
ワードデバイスは基本的に折れ線で表示(下図のD00010)しますが、矩形的に表示も可能です。

使い方

ダウンロードしたものを解凍してデスクトップやドキュメントフォルダに置いてください。(どこでも構いませんがファイルの書込権限があるパスに置かないとログファイルが保存できません)
ChartMonitor.exeを実行すればOKです。多重で起動できますが通信設定ファイルとデバイス設定ファイルがそれぞれ1つしか対応していない(=設定ファイル名が固定)なのでご注意ください。

通信設定

メニューの編集→通信設定→通信回線:* 又は
画面下部ステータスバーの通信設定表示部分をダブルクリック
で通信設定が可能です。

※通信中は通信設定出来ません。通信を停止させてから設定してください。
※PLC側でも設定が必要となります。不明な場合は以前の記事を参考に設定してください。
三菱はココOMRONはココKEYENCEはココです。
※いったん設定するとChartMonitor.exeと同じフォルダに「setting.ini」ファイルが作成されます。

通信回線を複数設定する場合はsetting.iniファイルをメモ帳などのエディタで直接編集する必要があります。(セクション名=Commonとキー名=Countの追加が必要)
下図ファイルの先頭2行の部分の追加が必要になり、最大4まで指定可能です。追加後にツールを再起動すると通信設定の枠が増えます。

デバイス設定

デバイス設定はメモ帳などのエディタで直接編集が必要になります。
ダウンロードしたファイルを解凍すると「devinfo.ini」があるのでこれを直接編集してください。
※ちなみにiniファイル形式は [ ] でくくられた部分をセクションと呼びグループ分けのようなイメージになり、「キー名=値」で1行に1つの設定が記述できるものになります。(Windowsで昔から使われている形式の1つです)

Commonセクション

キー名説明
UseTrigger1 , True
0 , False
1(True)にすると保存条件(=トリガ)のデバイスを設定できます。
下記「Trig****」で設定する条件が成立している間だけデバイス値を保存します。条件成立毎にログファイルを別に作成します。
0(False)にした場合は通信停止するまで無条件にデバイス値を保存します。
TrigIndex0~3トリガのデバイスとなるPLC通信回線のIndex番号を設定します。
TrigType0 , BIT
1 , INT16
2 , UINT16
3 , BCD16
4 , INT32
5 , UINT32
6 , BCD32
トリガのデバイスとなるデータ型を設定します。
(とりあえず整数型のみ対応)
TrigDeviceデバイス名トリガのデバイス名を設定します。
三菱ならM0やD0など。W1234.5のようなワードのビット指定も可能です。
TrigValue任意数字トリガのデバイスと比較する値を10進数の数字で設定します。
(データ型に合わせた値を設定)
TrigCompare0 , EQ , =
1 , NE , <>
2 , LT , <
3 , LE , <=
4 , GT , >
5 , GE , >=
トリガのデバイス値との比較条件を設定します。
ただしデータ型がビットの場合は設定にかかわらず、0(EQ, 等しいかどうか)の比較で固定となります。
Interval250以上通信でのデータ取得時間間隔をms単位で設定します。
RecordCount1000~100000001つのログファイルに保存するレコード数を設定します。
設定値を超えるレコード数になると別のログファイルに保存します。
DataCount1~16保存するデバイス点数を設定します。

Data0~Data15セクション

Data0~Data15は必要な分だけ追加してください。
例えばデバイス10点を設定するならData0~Data9の10個のセクションが必要になります。

キー名説明
IsView1 , True
0 , False
1(True)にするとグラフを表示し、0(False)では非表示となります。
起動後にデータグリッドに表示するチェックボックスで切替も可能です。
ConnectionIndex0~3デバイスのPLC通信回線のIndex番号を設定します。
DataType0 , BIT
1 , INT16
2 , UINT16
3 , BCD16
4 , INT32
5 , UINT32
6 , BCD32
デバイスのデータ型を設定します。
(とりあえず整数型のみ対応)
Deviceデバイス名デバイス名を設定します。
三菱ならM0やD0など。W1234.5のようなワードのビット指定も可能です。
Name任意起動後デバイス表示のデータグリッドにマウスカーソルを合わせたときに表示するツールチップ(≒説明文)を設定します。
IsDigital1 , True
0 , False
データ型がBITの場合は無視されます。
1(True)にするとグラフを矩形的に描画し、0(False)では折れ線でグラフを描画します。
LineColor色名称 または
16進数のARGB値
グラフ描画の線色を設定します。
色の名称は.NETで定義されるものとなります。
(色のチェックツールで確認してください。140くらいあります。)
16進数で指定する場合A(α値=不透明度)は通常FF(255)となります。上位バイトから順にα値、R(赤)、G(緑)、B(青)の4バイト数値となります。(FF808080のような値で設定)
RecordCount1000~100000001つのログファイルに保存するレコード数を設定します。
設定値を超えるレコード数になると別のログファイルに保存します。
DataCount1~16保存するデバイス点数を設定します。

色の定義について

.NETで定義されている色の一覧は下図のとおりです。定義色の確認用ツールはココからダウンロードできます。

ツール上では色を表示している□部分をクリックすると色の名称⇔16進数表記(ARGB値)が切り替わります。

通信開始・停止

メニューの編集→通信開始(F3)、通信停止(F2)で可能です。
画面下部ステータスバーの通信状態表示部分をダブルクリックでも操作可能です。
※通信が開始出来ない場合(通信開始が無効化)はデバイスの設定が間違っている(または設定が無い)場合ですので設定を見直してください

通信開始後にデータを保存している場合は上図のような表示となり自動的にスクロールします。(スクロールバーを操作すると操作した位置を表示します)
保存条件を設定しており、条件不成立状態(≒トリガ待ち)の場合は左下のステータスバーの表示が通信中+Lime(明るい緑)の表示となります。
画面右側にある設定デバイスの表示部分のチェックボックスを操作するとグラフの表示・非表示が切り替わりますが同時にグラフ表示できるのは最大8点までです。

ログファイルの読出

メニューのファイル→開く 又は
エクスプローラー等からツールの画面上にファイルをドラッグ&ドロップ
でログファイル(*.csv)を開くことが可能です。
※通信中は開けません

ログファイルのデバイス設定がツール上でのデバイス設定と一致していないと開けないのでご注意ください。ファイルが開ければグラフ表示が可能となります。
※ログファイルはChartMonitor.exeと同じフォルダに「LogData」フォルダを作成し、その中にログファイルが作成されます。ファイル名は「yyyymmdd_hhmmss.csv」のようにデータ保存の開始日時となります。(ログファイルを開く場合はリネームしても別フォルダに移動しいてもデバイス設定が合っていれば開けます。)

感想?

またもや微妙なツールを作ったかもしれません。。
PLCの開発環境上にあるものとたいして変わらない(というより表面的な機能はむしろ劣化?)ですが、、
開発環境がなくても使えることと複数のPLCを相手にデータを保存できるのが強み・推しポイントでしょうか。
さすがに今回はデバイスモニタをベースにしたので作成期間が2~3週間くらい?です。

チャートモニタ的な機能は装置を使う側(テストやメンテナンスする側)には多少需要がありそうな気もしますが、PLCのソフトを作る側にはあまり役に立たないかもしれません。。PLCを使うと言っても立場によって必要なものは異なりますし。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA

目次