「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
昨年、入社して初めての案件でASTMAC(アストマック)という横河電機株式会社製のFA(※1)向けのSupervisory Control And Data Acquisition System(※2)(以下、SCADAと省略します。)を使った作業をしました。私は、ASTMACを使ったことが無かったため、一から勉強することになりました。そのとき、すべての機能を実際に使ったわけではありませんが、使った内容を元に紹介します。
ASTMACとは監視、生産指示、設備制御、生産管理ができる、生産ライン構築用ソフトウェアです。ASTMACは、さまざまな機器と接続ができ、さらにマルチタスクでの処理にも対応できるため、さまざまな構築に柔軟に対応できるSCADAです。
図1. SCADA ASTMAC
構成は、おおまかに分けると図2のようにI/Oオブジェクト、コントロールオブジェクト、アプリケーションフォームの3つに分けられます。
図2. ASTMACのソフトウェア構造
I/Oコントローラに応じたI/Oドライバを選択して通信をします。
I/Oドライバの種類
ここで紹介したものは、一部ですが、その他にもドライバがあり他社PLCなどのコントローラとも通信ができます。
オブジェクト形式でデータを管理します。
コントロールオブジェクトのタイプ
表1 は入力機能を持つコントロールオブジェクトの一覧ですが、他にも出力機能を持つものなど様々あります。ここでは、入力機能に絞って説明します。
タイプ | コントローラのデータ |
---|---|
DI | 1ビット |
DR | 最大256ビットの配列 |
AI | 1ワード(16ビット)の整数、BCD |
AR | 最大64ワード配列(整数) |
XAI | 1ロングワード(32ビット)の整数、実数 |
XAR | 最大32ロングワード配列(整数、実数) |
TXT | 最大128文字の文字列 |
XTX | 最大4096文字の文字列 |
WAI | 1ロングロングワード(64ビット)の実数 |
WAR | 最大16ロングロングワード配列(実数) |
表1. 入力機能のタイプ一覧
表を見て分かるようにそれぞれでデータの型が違います。DIの場合は、ON/OFFのデータの参照をするときに有効です。複数の場所で同じデータを収集している場合は、DRを使うとオブジェクト数の削減ができ、さらにデータサーバ構成がすっきりしたものになるので、場合によっては使い分ける必要があります。オブジェクト数はライセンスに応じて制限があるので、事前の設計で無駄なく使い、後で足りなくならないようにしなくてはなりません。
収集データをもとにトレンドグラフやグラフィックを構築します。
VBAが搭載されていてオブジェクトの制御、参照をすることも可能です。
VBAの他に、プロパティリンクでもオブジェクトの参照ができ、プロパティリンクでは、グラフィックビルダで、プログラムなしでページ上のコントロールのプロパティとコントロールオブジェクトのプロパティをリンクすることができます。
その他には、操作履歴やアラームのメッセージを管理するメッセージ管理などもあります。それぞれの設定は、アプリケーションフォームはグラフィックビルダで、I/Oオブジェクトとコントロールオブジェクトはオブジェクトビルダで、メッセージはメッセージビルダというように機能ごとで分かれたツールが用意されています。
ASTMACは、さまざまな開発に柔軟に対応できるSCADAで、図2のような構成では、柔軟さに少々欠けるような感じがすると思います。そのため、ASTMACでは標準で用意されている機能の他にオプションパッケージにより機能の拡張ができるようになっています。そのうち、昨年の案件で利用したパッケージはトレンドパッケージとマルチタスク支援パッケージです。
トレンドパッケージでは、収集データ、収集周期、収集期間などを指定して、定周期でコントロールオブジェクトのデータを収集します。収集したデータをファイルに保存して、データの変位をグラフで表示することができます。実際には、ヒストリカルビルダ(※3)で、収集データ、収集周期、収集期間などを指定して、グラフィックビルダでトレンド用のコントロールを設定するだけではトレンドグラフは作成できません。これはプロセス管理の段階でトレンド機能が有効になっていないためです。プロセスコンフィギュレータ(※4)の設定でトレンドデータの収集を起動する必要があります。
マルチタスク支援パッケージでは、シグナル交信オブジェクトとブロックデータオブジェクトがあります。シグナル交信オブジェクトは、シグナルの送受信ができます。例えば、ASTMACアプリとユーザーアプリとで、ASTMACアプリでユーザーアプリの処理を開始し、ユーザーアプリの処理を終えてからASTMACアプリの処理を開始したいとき、シグナル交信オブジェクトでは同期を取ることができるので有効となります。
図3. シグナル交信オブジェクト使用例
ブロックデータオブジェクトは、データサーバを通じてデータの共有ができます。この機能により、1つのデータを複数のアプリで参照し合えるだけでなく、例えば、ASTMACアプリで編集したデータをユーザーアプリが参照することも可能です。
図4. ブロックデータオブジェクト使用例
ここで説明したオプションパッケージは一部です。他には、MELSEC接続パッケージやFA-M3計装パッケージなどがあり、これらを使うことでさまざまな開発ができると思います。
開発時に使用するI/Oコントローラに応じたI/Oオブジェクトの設定をします。
(Ethernet接続の場合は、IPアドレスの設定などをします。)
収集データの元となるI/Oオブジェクトの設定やアクセスするCPUモジュールのスロット番号の指定、オブジェクトタイプの指定、プロパティの設定をします。
オブジェクトタイプの指定、プロパティの設定は、正しい設定にしないとデータが取れない場合があるので注意が必要です。
例えば、流量データを収集したいときにオブジェクトタイプをDIにすると、DIは1ビットなので当然データが取れません。この場合は、AI(1ワードの整数)かXAI(1ロングワードの整数、実数)などを使用します。
また、データを画面表示で15秒ごとに更新をしたい場合に、コントロールオブジェクトのスキャン周期が30秒に設定されていたら、画面表示を15秒で更新する意味がなくなってしまいます。
図5. スキャン周期の設定間違っているとき
当然この場合は、コントロールオブジェクトのスキャン周期を15秒以下にする必要があります。
図6. スキャン周期の設定が正しいとき
基本的なことですが、データサーバの構築とアプリケーションの構築を担当した人が別々で担当者同士の情報共有が不十分なときはこのようなことになる可能性がないとは言えないので、注意が必要です。
コンピュータ名と、データサーバ名の設定をします。
プロジェクトの作成後に、グラフィックビルダに表示されるページ上にコントロールを配置していきます。配置したコントロールとコントロールオブジェクトとの関連付けは、Visual Basic Editor(以下、VBEと省略します。)やプロパティリンクで行います。
複数の担当者で作成する場合もあると思いますが、ページのエクスポート/インポート機能があるので、問題なく対応できます。しかし、ページのイメージと一緒にVBEもインポートされるので、担当者間で連携が取れてないとコンパイルが通らなくなるため注意が必要です。
他に注意しなければならない点もあり、まずは、プロパティリンクを使う場合はコントロールオブジェクトの値を直接使うので、コントローラ側かデータサーバ上で制御する必要があります。一方、グラフィックビルダのVBEを使う場合は、使うときに必要に応じて制御する必要があります。つまり、複数のアプリケーションで同じデータを使うときにどちらを使うか切り分ける必要があります。
複数のアプリケーションで同じような条件で使いたいときは、コントローラ側かデータサーバ側で処理した方が余計な作業が減り効率向上につながります。処理の場所を分けると、2ヶ所でデータの関連付けができるため、誤って同じコントロールで両方と関連付けしてしまうかもしれません。そうすると、作成者の予期せぬ動きをする場合があるので注意が必要です。図7にスキャン周期が10秒で、VBEでスキャンするタイミングとずれて表示を10秒更新するとき、誤ってプロパティリンクでも関連付けした場合を示します。
図7. プロパティリンクとVBEで表示更新をした場合
この場合、5秒で表示更新されてしまいます。これくらいの時間間隔なら、デバッグ時に気づくかもしれませんが、場合によっては、気づき難い場合がありバグの原因となります。
逆にデータサーバでは、データの読み書きだけに専念させて処理はそれぞれのアプリケーションが担当すると言う方法もあります。この場合は、当然複数のアプリケーションで同じような処理をする場合がありますが、作業の分担が明確になるので、構成が分かりやすくなります。
ASTMAC構成では、さまざまな部分で処理を加えられるので、設計の段階でデータの扱いをどのようにするかは非常に重要になります。また、構築中はコンパイルするたびにファイルのサイズが増えていきますが、名前を付けて保存することによって、最初のファイルサイズで保存可能となります。
紹介した構築の流れは、基本的なものとなります。他には、メッセージビルダでアラームメッセージの設定をしたり、ヒストリビルダで収集データの設定をしたりしてグラフィックビルダで専用のコントロールと関連付けて表示するなど、さまざまな構築に対応できます。
ASTMACを使ってみて、最初は、図2の構造に沿って覚えていきました。基本となるグラフィック画面やデータサーバの設定はマニュアルの説明が充実しているので、マニュアルがあれば問題なく使うことができました。機能によっては特定の設定のみ有効になる動作もあり使い分けの面でスムーズにできない部分もありました。
でも、大変なのは覚えるまでの間だけで一度覚えてしまえば、さまざまなシステム開発に使えるので、技術者としてスキルアップになると思います。最終的には、ASTMACを使いこなせるようになりたいと思います。
(T.M.)
関連ページへのリンク
関連するソフテックだより