HOME > ソフテックだより > 第245号(2015年11月4日発行) 技術レポート「Citectを使用したシステム構築」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより(技術分野別)のページへ
ソフテックだより(シーン別)のページへ


ソフテックだより 第245号(2015年11月4日発行)

技術レポート

「Citectを使用したシステム構築」

1. はじめに

ソフテックでは色々な監視制御ソフトウェアの開発を手掛けており、SCADA(Supervisory Control And Data Acquisition)を使用したシステム開発を多く行ってきました。また、使用するSCADAは自社開発製品のFAVIEW(詳細はこちら⇒http://www.softech.co.jp/faview.htm)以外にも、様々なSCADAを使用したシステム開発を行っています。
今回はその中の1つでシュナイダーエレクトリック社の『Vijeo Citect(以下 Citectと呼称します)』を使用した開発を行いましたので、ご紹介したいと思います。

2. Citectとは

Citectは、世界80カ国を越える国々で、FA(Factory Automation)・BA(Building Automation)分野の幅広い監視・管理システムに採用される監視システム向けパッケージソフトウェアです。
また、Citectは各サーバー機能がそれぞれ独立したアプリケーションから構成されています。
これらのサーバー機能を1台のパソコンで起動することもできますし、複数のパソコンで分散して起動することもできます。

HMIクライアント
⇒ユーザーが操作する画面の表示を行います
I/Oサーバー
⇒監視・制御対象機器との通信を行います
Trendサーバー
⇒I/Oサーバーでの通信情報を元に、トレンド情報の収集を行います
Reportサーバー
⇒I/Oサーバーでの通信情報を元に、帳票の収集を行います
Alarmサーバー
⇒I/Oサーバーでの通信情報を元に、アラームの収集を行います

Citectのアプリケーション構成
図1. Citectのアプリケーション構成

こうした独立したアプリケーションとなっている構成により、Citectは以下の特徴があります。

<高速性>
I/Oデバイス(監視・制御対象機器)との通信を常に最適化(例えば、2つの要求があり近いアドレスの値を読み出すのであれば、ブロックで読出すことで1つの通信にまとめるなど)し、不要な通信を低減することで、大規模なシステムでも高速なデータ収集・表示が可能です。

<信頼性・冗長化(二重化)>
Citectのサーバー機自体の二重化、各サーバー機能の二重化といった複数の形で、冗長化構成を組むことが可能です。万一、PCやネットワークに障害が発生した場合でも、運用に支障が出ない安全なシステムとすることが可能です。

<拡張性>
信号点数は75点〜40万点まで拡張することができ、小規模から大規模まで多様なシステムに対応しています。そのため、部分的に導入することで初期投資を抑えたシステムとし、後から拡張することも可能です。
また、大規模システムになると現地でデータを監視せず、中央監視室のような現地のデータを全て監視できるように遠隔地でデータの監視をできる必要がでてきます。この点も、CitectではWebサーバー機能を備えています(Windows標準のIIS機能を使用します)ので、クライアントではCitectがインストールされていなくても、インターネットを介してWebブラウザ(Internet Explorer)からどこでも監視を行うことが可能となります。

<カスタマイズ性>
Citectには固有のプログラミング言語(Cicode)が用意されています。
単純な演算だけではなく、ファイル処理/データベース処理/描画処理など、Windowsアプリケーションのような処理を行うことができます。
また、Cicodeはマルチタスクに対応した言語であり、複数の処理を同時に動かすような処理を記述することも可能です。

3. システム構築の流れ

Citectを使用したシステム構築を行う際の基本的な流れについて、ご紹介します。

3.1 I/Oサーバー設定

・I/Oサーバー設定

プロジェクトを作成したら、まずはI/Oデバイス(シーケンサなどの監視・制御対象機器)との通信設定を行います。
設定はウィザード形式の画面で、I/O サーバーの名称設定、I/Oドライバ選択(Citectには国内外の主要なシーケンサ等の機器のI/Oドライバが標準で用意されています。I/Oドライバ選択して通信相手のアドレス設定(EthernetであればIPアドレス)などを行います。

I/Oサーバー設定
図2. I/Oサーバー設定

ポイント

主要なシーケンサ等の機器のI/Oドライバ以外に、OPCクライアント機能も用意されています。
そのため機器メーカー専用のドライバが無くても、別途OPCサーバーを立てる事で複数メーカーのPLCと通信することが可能です。(ただし、OPCサーバー毎に接続可能なPLCが異なります)

・タグ設定

通信設定を終えたら、タグ設定を行います。
タグとは、通信を行いたい機器のエリアを示す設定(シーケンサであればデバイスアドレスを設定)のことで、Citectでのグラフィック画面構築時は各部品にこのタグ名を割り当てることで構築していきます。

タグ設定
図3. タグ設定

Excelでのタグ設定

Citectのインストーラにはタグ編集用のExcelアドインも含まれていますので、Excel上でタグ設定することもできます。

3.2 グラフィック画面作成

通信設定(I/Oサーバーの設定)を終えたら、Citect上で表示するグラフィック画面を作成していきます。
Citectでは、各画面をページと呼びページ内に数値表示部品、ボタン部品など各部品を配置していくことで作成します。

グラフィックビルダー
図4. グラフィックビルダー

また、配置した部品のプロパティ設定を行います。以下の例は数値表示部品で先ほど登録したタグの値を表示するように設定しています。

部品プロパティ設定
図5. 部品プロパティ設定

3.2.1 サンプルプロジェクト

Citectをインストールすると、サンプルプロジェクトがあらかじめ用意されています
。 サンプルプロジェクトは、アラームやトレンドなどの代表的な機能の画面があらかじめ組み込まれた状態で用意されています。独自のプロジェクトを開発する場合でも、このサンプルをひな型とすることで、各種主要機能を短時間で構築していくことができます。
また、サンプルプロジェクト以外にも”テンプレート”という形で、ユーザーが作成するグラフィック画面に背景のように配置できる画面も複数用意されています。

以下はシンプルなトレンド画面の例で、リアルタイムトレンド機能を持っています。日時選択による表示データ指定、表示スパンの変更、表示グラフ情報のCSVファイルに保存・印刷等、トレンドグラフに関する主な処理が実装されています。

トレンド画面サンプル
図6. トレンド画面サンプル

テンプレート

上記のトレンド画面以外にもいくつかのテンプレートが用意されていて、トレンド画面の中でも複数のテンプレートが用意されています。
・メニュー画面
・アラーム画面
・トレンド画面
・サマリ画面

注意点

サンプルプロジェクトや用意されたテンプレートを流用すれば、比較的簡単に構築を行うことができます。ただし、ユーザー独自のグラフィック画面を作成する場合には、ユーザーで作成したプロジェクトに、サンプルプロジェクトやテンプレートから必要な部分だけを組み込む必要があります。
例えば、トレンド表示の場合、サンプルプロジェクトやテンプレート画面には、グラフ表示、スケール表示/選択などがそれぞれ部品化されて配置してあり、必要なものをコピーして各設定を行っていきます。このとき、部品として登録してあるオブジェクトも全てユーザープロジェクトに組み込む必要があります。そのため、ユーザー独自のプロジェクトに組み込みを行うには、それなりのソフトウェア解析スキルが必要かと思います。

3.3 Cicodeの実装

必要に応じて、Citectのプログラミング言語(Cicode)にて機能処理の実装を行います。
以下の例は、”INT_TAG”タグの値をインクリメントする関数となります。

Cicodeエディタ
図7. Cicodeエディタ

上記で作成したCicodeの関数をボタンのダウン(クリック)時の動作に割り付ければ、ボタンクリック毎に”INT_TAG”タグの値をインクリメントする動作にすることができます。

部品プロパティ設定
図8. 部品プロパティ設定

代表的な関数

Citectでは、文字列関数のような基本的な関数以外にも様々な関数が用意されています。そのため、特殊なことでなければ外部アプリを使用しなくてもCitect内で処理を実装することが可能です。 主な関数は以下の通りです。

・ファイル関数
⇒ファイルの読み書きを行う関数
・タスク処理関数
⇒スレッド処理を行う関数
・SQL関数
⇒データベースにアクセスするための関数
・ウィンドウ制御関数
⇒ウィンドウの表示・移動・削除などを行う関数
・描画処理関数
⇒画面上に線、図形、文字列などを描画する関数
4. おわりに

Citectを使用するのは初めてでしたが、今までタッチパネルやSCADAを使用した開発に携わってきたので、比較的簡単にシステム構築することができました。
実際に使用してみて感じたことは、他のSCADAに比べてCitectは全体的に動作が軽い点と、Cicodeを使用すれば自由度が高い点です。もしCitectだけでの処理実装が難しい場合でも、外部からタグに読み書きを行うためのWindow用APIも用意されていますので、外部アプリで制御することもできます。APIを利用すれば、ユーザーでI/Oサーバーの機能を持ったアプリケーションを作成することなどもできます。
ただし、機能が多いため色々なことができるが、その分使いこなすのは難しいという印象です。使いこなすにあたり海外製品のため英語のマニュアルが多いので最初はなかなか入りにくい部分はあるかと思います。 そういった場合には、シュナイダーエレクトリック社との技術サポート契約を行うすることもできますので利用するのがよいかと思います。
今回ご紹介したのは基本的な構築方法ですが、Citectには様々な機能が用意されていますので、機会があれば色々と使用していきたいと思います。

(Y. R.)

[参考文献]
H.P − http://jpn.proface.co.jp/product/soft/scada/citect/index.html
H.P − http://www.fujielectric.co.jp/products/citect/packsoft/CitectSCADA.html

関連ページへのリンク

関連するソフテックだより

ページTOPへ