「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
ソフテックではSCADAを利用した監視システム開発も行っています。直近の案件で、お客様からSCADAを利用したシステム開発のご依頼がありました。ソフテックから標準機能が充実したFA-Panel※をお客様にご提案して採用していただきました。
FA-Panelは標準フレームワークを使用することで、メニュー機能、アラーム機能、トレンド機能、レポート機能(日報/月報/年報)など、SCADAでよく利用される機能を自動で生成することができます。
グラフィック画面(設備状態、機器状態を表示する画面)はユーザーごとに違いますので画面作成が必要ですが、グラフィック画面によく使われるバルブなどの表示部品は部品ライブラリとして用意されており、グラフィック画面の作成もしやすくなっています。
ただ、お客様の要求仕様を満たすには、機能の作り込みが必要な場合があります。
私は今回初めてFA-Panelを利用して監視システム開発を行いましたが、標準フレームワークで生成した機能で足りないお客様要望を実現するために標準機能以外で作り込んだ部分をご紹介します。
お客様の要望で、製造する品種名をCSVファイルで読み込み、書き込みする機能が必要でした。
FA-Panelではスクリプトが用意されており、タグ同士の演算やファイルオープン、ファイル出力など、スクリプトを利用して行うことが可能です。
CSVファイルの読み込みはルートメソッドのLoadCsvFileメソッド、CSVファイルの書き込みは同じくルートメソッドのSaveCsvFileメソッドを使用します。
ファイルの操作を行いますので、ファイルのパスやファイル名も必要です。
ファイルのパスやファイル名の取得は、OpenWindowsDialogメソッドを使用することで可能です。
画面やボタン内にこれらのメソッドを使用してスクリプトを記述することで、CSVファイル読み込み、書き込みを行います。
画面構成は以下のようになっています。
① 品種名を入力、表示するテキストボックス
② CSVファイル読み込みを実行するボタン
③ CSVファイル書き込みを実行するボタン
図1. CSVファイル読み込み/書き込み画面
CSVファイル読み込みを行う場合は、以下のような操作・処理になります。
・CSVファイル読み込みボタンを押す
・読み込むCSVファイルを選択
・選択したCSVファイルのデータをタグに展開
テキストボックスには、読み込んだデータを展開するタグを割り付けています。
LoadCsvFileメソッドにファイル名とデータを格納する変数を指定します。データを格納する変数は配列にし、テキストボックスに割り付けたタグを複数指定します。
ボタン操作からスクリプト実行までのイメージは下図の通りです。
図2. スクリプト実行のイメージ
スクリプトを作成して実行したところ、CSVファイルのデータを読み込めませんでした。
CSVファイルのデータ読み込みは、共通イベントOnCommonEvent内で行っています。
OpenWindowsDialogメソッドを実行するとOnCommonEvent が発生しますが、発生する要因は複数あります。
要因が複数あるためOnCommonEvent内でイベントに応じたスクリプトを記述しますが、CSVファイルのデータ読み込みができないのは、イベントの判断が間違っているかもしれないと考え、FA-Panelに付属しているScript Debuggerにて、発生しているイベントが何かを確認しました。
共通イベントOnCommonEventには「イベント名」と「イベント発生時に指定された値」の2つのパラメータがあり、発生しているイベントを確認するため「イベント名」を調べました。
Script Debuggerでは、変数リストに変数(パラメータ)を登録することで変数の値を確認することが可能です。
変数リストにイベント名が格納されている変数を登録すると、下図のように”WINFile”というイベントが発生していたため、”WINFile”イベントの処理としてLoadCsvFileメソッドを実行することでCSVファイルのデータを読み込むことが可能になります。
図3. Script Debuggerでのデバッグ
FA-panelにはバルブやポンプの部品ライブラリがあります。
部品ライブラリには14種類のバルブ部品がありますが、今回の画面で表示したいバルブ(三方弁)が部品ライブラリにはありませんでした。
図4. 部品ライブラリの例
部品ライブラリにある部品も標準コントロール(多角形やラインなど)の組み合わせで構成されており、ユーザーが組み合わせを変えることができました。
そこで、部品ライブラリから必要な部分だけ残した部品を3つ作り、部品の配置で1つのバルブに見えるようにすることで三方弁を作成しました。
別な方法として、イメージライトコントロールを使用すると、ONとOFFの表示を画像ファイルで指定できます。
今回の案件ではウィンドウサイズを可変にしていて、ウィンドウサイズを変えるとイメージライトコントロールで表示する画像の縦横比が変わってしまいます。
見た目に影響がありましたので、今回の案件ではイメージライトコントロールを使用していません。
図5. バルブシンボル表示のために作成した3つの部品
図6. 部品配置で1つのバルブに見えるようしたシンボル
初めてFA-Panelで構築しましたが、標準フレームワークで機能を自動生成できるのは便利でした。標準フレームワークで生成した機能で要求仕様を満たせるのであれば、開発コスト、開発期間においてFA-Panelに優位性があると感じました。
FA-Panelのスクリプトでは、メッセージボックス表示、マウスボタン操作、タイマーなどのイベントがあり、Windowsアプリケーションを作成するようにスクリプトを作成することができます。今回使わなかったFA-Panelの機能はまだまだありますので、お客様にご提案できるように機能習得していきたいと思います。
(S.K.)
関連ページへのリンク
関連するソフテックだより