(57)【特許請求の範囲】
【請求項１】
監視対象であるプログラマブルコントローラからデータを収集してデータベースに格納するデータ収集制御装置において、
上記プログラマブルコントローラからデータを収集するタイミングを示すトリガとして、トリガを発生させるためのトリガ種別実行プログラムと一意のトリガＩＤとを対応させて設定するトリガ設定手段と、
上記プログラマブルコントローラからのデータの収集処理を示すアクションとして、アクションを実行するためのアクション種別実行プログラムと一意のアクションＩＤとを対応させて設定するアクション設定手段と、
上記トリガ設定手段で設定したトリガとそのトリガが発生したときに実行する上記アクション設定手段で設定したアクションとを関連付けたジョブとして、上記トリガＩＤと上記アクションＩＤとを対応させて設定するジョブ設定手段と、
上記トリガ設定手段で設定したトリガ種別実行プログラムを実行してトリガを発生させ、このトリガ発生に基づいてそのトリガ種別実行プログラムに対応するトリガＩＤを付加したイベントを通知し、このイベント通知を受けてそのトリガＩＤに対応するアクションＩＤを上記ジョブ設定手段で設定した中から検索して取得し、この取得したアクションＩＤに対応するアクション種別実行プログラムを上記アクション設定手段で設定した中から検索して自動実行することにより、上記プログラマブルコントローラから収集したデータを上記データベースの任意のフィールドに割り当てて格納する制御手段と、
を具備することを特徴とするデータ収集制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データ収集制御装置に関し、詳しくは、ＰＬＣ（プログラマブルロジックコントローラ）等の監視対象から所定のタイミングでかつユーザが必要とするデータの形態でデータを自動収集するようにしたデータ収集制御装置に関する。
【０００２】
【従来の技術】
最近のＦＡ（ファクトリオートメーション）でのアプリケーションでは、「何か必要なタイミング」が発生したときに、「それに対応する処理」を実行するという形で構築される場合が多い。
【０００３】
例えば、
１）所定の時間が経過する毎にＰＬＣのデータをユーザが指定する形で収集してデータベースに蓄積する
２）ＰＬＣによる生産が開始される時に、レシピデータ、マスタデータ、作業指示等の必要なデータを検索してＰＬＣにダウンロードする
という形でアプリケーションが構築される。
【０００４】
【発明が解決しようとする課題】
しかし、上記アプリケーションのプログラミングは、「何か必要なタイミング」が発生したとき（トリガが発生したとき）、「それに対応する処理」を実行する（アクションを実行する）というように、各トリガ種別、各アクション種別に対応して別々にプログラミングしており、また、この種のプログラミングにおいては他のユーザアプリケーションとの連携が要求されることも多いので、その結果アプリケーションの開発コストが高くなり、また、処理変更時の対応にも時間がかかるという問題があった。
【０００５】
また、ＰＬＣ上の収集したいデータを予め設定により登録しておき、その登録にしたがってＰＬＣ上のデータを収集するデータ収集システムも知られているが、このようなデータ収集システムにおいては以下に示すような問題があった。
【０００６】
１）アプリケーションで利用したいテーブル構成とデータ収集時のデータの構成が異なることがあり、この場合は一度収集したデータを変換する必要がある。
【０００７】
２）既存のアプリケーションで使用しているデータベースに新たなデータを追加する場合は、別途ユーザプログラムを作成する必要がある。
【０００８】
３）データベースのテーブル構成上、フィールドにはＰＬＣデータ以外に定数値やコメント、収集時刻等を同時に収納したり、これらの情報を収容したくないフィールドがあるが、このような柔軟なロギングを行おうとする場合はユーザプログラムで対応する必要がある。
【０００９】
４）１回目のトリガでレコードの一部を収集し、その後同じレコードの別のフィールドにデータを書き込むことが要求される場合があるが、この場合もユーザプログラムで対応する必要がある。
【００１０】
５）データを順次ロギングするのではなく、順次更新するテーブルが要求される場合もあるが、この場合もユーザプログラムで対応する必要がある。
【００１１】
そこで、この発明は、ユーザが必要とするデータの形態でデータの収集を行うことができ、しかもユーザプログラムの負荷を軽減することができるとともに収集したデータを容易に再利用することができるようにしたデータ収集制御装置を提供することを目的とする。
【００１２】
【課題を解決するための手段】
上記目的を達成するため、請求項１記載の発明は、監視対象であるプログラマブルコントローラからデータを収集してデータベースに格納するデータ収集制御装置において、上記プログラマブルコントローラからデータを収集するタイミングを示すトリガとして、トリガを発生させるためのトリガ種別実行プログラムと一意のトリガＩＤとを対応させて設定するトリガ設定手段と、上記プログラマブルコントローラからのデータの収集処理を示すアクションとして、アクションを実行するためのアクション種別実行プログラムと一意のアクションＩＤとを対応させて設定するアクション設定手段と、上記トリガ設定手段で設定したトリガとそのトリガが発生したときに実行する上記アクション設定手段で設定したアクションとを関連付けたジョブとして、上記トリガＩＤと上記アクションＩＤとを対応させて設定するジョブ設定手段と、上記トリガ設定手段で設定したトリガ種別実行プログラムを実行してトリガを発生させ、このトリガ発生に基づいてそのトリガ種別実行プログラムに対応するトリガＩＤを付加したイベントを通知し、このイベント通知を受けてそのトリガＩＤに対応するアクションＩＤを上記ジョブ設定手段で設定した中から検索して取得し、この取得したアクションＩＤに対応するアクション種別実行プログラムを上記アクション設定手段で設定した中から検索して自動実行することにより、上記プログラマブルコントローラから収集したデータを上記データベースの任意のフィールドに割り当てて格納する制御手段と、を具備することを特徴とする。
【００１８】
【発明の実施の形態】
以下、この発明に係るデータ収集制御装置の一実施の形態を添付図面を参照して詳細に説明する。
【００１９】
図１は、この発明に係るデータ収集制御装置を適用して構成したデータ収集制御システムの一実施の形態を示すブロック図である。
【００２０】
図１において、このデータ収集制御システムは、監視対象２０からデータを収集するタイミングを示すトリガに関連付けて監視対象２０からのデータの収集処理を示すアクションをデータ設定部１１０で設定して収集設定データ記憶部１２０に格納し、この収集設定データ記憶部１２０に格納した設定データを参照してタイミング発生処理部１７０から監視対象２０の状態に応じてトリガを発生し、フロー制御部１５０は、このトリガ発生に対応して上記アクションを自動実行することでデータ収集部１８０により監視対象２０のデータを収集してユーザデータベース４００に格納するように構成される。
【００２１】
ここで、監視対象２０は、例えば、ＰＬＣから構成され、収集設定データ記憶部１２０に格納される設定データは、ユーザによるパラメータ設定により設定できるように構成されており、ユーザのパラメータ設定に対応したカスタマイズしたデータ収集をデータユーザプログラムの負荷を増大させることなく実現できるように構成されている。
【００２２】
図１において、データ設定部１１０では、データ収集名とデータをユーザデータベース４００に格納する際に標準的に使用されるＳＱＬ文を作成するのに必要な情報をユーザに対話的に設定させ、その設定内容からＳＱＬ文またはＳＱＬを作成するのに必要な情報のままテーブル形式で収集設定データ記憶部１２０に保存する。
【００２３】
ここで、ＳＱＬ（Structured Query Language）文とは、リレーショナルデータベースを操作する標準言語で、ＩＳＯ／ＴＣ９７／ＳＣ５／ＷＧ１５やＪＩＳなどで規格が設定されている。ＳＱＬ文を用いることにより異なるデータベース管理システムに対しても同一の方法でデータの追加、変更、削除などの操作が行える。
【００２４】
データベースへの追加の場合のＳＱＬ文の構分は以下のようになる。
【００２５】
INSERT INTO  [テーブル名]（フィールド１、フィールド２、…）
VALUES（値１、値２、…）
【００２６】
ここで[テーブル名]はデータを追加したいテーブル名、フィールド１、フィールド２、…はテーブルの中でデータを追加するフィールド名を表わす。また、VALUESの後の値１、値２、…は先のフィールド名に対応して実際に格納したいデータの値を示す。
【００２７】
また、データベースへの更新の場合のＳＱＬ文の構分は以下のようになる。
【００２８】
UPDATE  [テーブル名]  SET（フィールドＡ＝値ａ、フィールドＢ＝値ｂ…）
WHERE（フィールドＸ＝値ｘANDフィールドＹ＝値ｙ…）
【００２９】
ここで、[テーブル名]はデータを更新したいテーブル名、フィールドＡ、フィールドＢ…はテーブルの中でデータを更新するフィールド名を表わす。値ａ、値ｂは更新する値を示す。また、WHEREの後のフィールドＸ＝値ｘANDフィールドＹ＝値ｙ…は、テーブル内のどのレコードを更新したいかを特定する条件を記述する。
【００３０】
なお、データベースの検索の場合は、
SELECT  フィールド１、フィールド２、フィールド３  FROM  テーブル名
WHERE  フィールドａ＝（または他の記号）  値１、フィールドｂ＝値２、…
ORDER BY  フィールドｘ、フィールドｙ；
のような形で記述することによりWHEREの条件に一致したデータをFROMのテーブルより検索し、結果のSELECTの後のフィールドのデータをORDER BYでソートして取得することができる。
【００３１】
図２は、図１に示したデータ収集制御装置の詳細構成を示すブロック図である。
【００３２】
図２において、このデータ収集制御装置１０は、このデータ収集制御装置１０に対する各種設定を行う装置設定ツール１１、装置設定ツール１１で設定された設定内容を格納する設定テーブル１２、このデータ収集制御装置１０によるデータ転送のタグの設定を行うタグ設定ツール１３、タグ設定ツール１３で設定されたタグを格納するタグデータベース１４、このデータ収集制御装置１０によるデータ流れ制御のサービスを実行するサービス処理部１５を具備して構成される。
【００３３】
ここで、サービス処理部１５は、このデータ収集制御装置１０によるデータ流れ制御を実行する制御モジュール１６、各種トリガを発生するトリガモジュール１７、各種アクションを実行するアクションモジュール１８を具備して構成される。
【００３４】
また、サービス処理部１５の制御モジュール１６に対して、ユーザアプリケーション５０からデータ収集開始、停止等の指令が通知され、トリガモジュール１７に対して、ユーザアプリケーション５０からトリガ発生等の指令が通知され、アクションモジュール１８からユーザアプリケーション５０に対してアプリケーションの通知（アプリ通知）がなされる。
【００３５】
また、アクションモジュール１８は、ユーザデータファイル４０との間でデータの送受を行う。
【００３６】
また、サービス処理部１５は、ゲートウエイ６０を介して複数のＰＬＣ２０−１、２０−２との間でデータの送受を行う。
【００３７】
ここで、サービス処理部１５の制御モジュール１６は、図１に示したフロー制御部１５０に対応し、トリガモジュール１７は、図１に示したタイミング発生処理部１７０に対応し、アクションモジュール１８は、図１に示したデータ収集部１８０に対応する。また、装置設定モジュール１１およびタグ設定ツール１３は、図１に示したデータ設定部１１０に対応し、設定テーブル１２およびタグデータベース１４は、図１に示した収集設定データ記憶部１２０に対応する。
【００３８】
また、ユーザデータファイル４０は、図１に示したユーザデータベース（ユーザＤＢ）４００に対応し、ＰＬＣ２０−１、２０−２は、図１に示した監視対象２０に対応する。
【００３９】
図２において、サービス処理部１５によるサービスは、データのロギング処理、ダウンロード処理等を実現する。すなわち、サービス処理部１５では、あるトリガが発生したときに、そのトリガに対応するアクションを実行する。これにより
１）ＰＬＣ２０−１、２０−２のデータをユーザデータファイル４０に格納する
２）ユーザ作成のデータベースを、指定した条件で検索し、その結果をＰＬＣ２０−１、２０−２に書込む
３）トリガが発生した際に、アクションとしてユーザアプリケーション５０に通知する
等の処理を実現する。
【００４０】
また、装置設定ツール１１は、
１）サービス処理部１５のサービスに必要な設定データの登録
２）サービス処理部１５のサービスの開始、停止
３）あるトリガとそのときにロギングするアクション（作業）のまとまりの単位であるジョブの登録、開始、終了
等の機能を提供する。
【００４１】
また、タグ設定ツール１３は、
１）対象機器の変数エリアに対するタグの設定
２）対象機器との間でのイベントメモリのマッピングの設定
等の機能を提供する。
【００４２】
また、タグデータベース１４は、タグ設定ツール１３で設定したタグ情報を格納するデータベースである。
【００４３】
また、設定テーブル１２は、サービス処理部１５のサービスの実行に必要なデータの集まりを格納するデータベースである。
【００４４】
また、ユーザデータファイル４０は、実際にデータがロギングされるデータが格納されるデータベース、またはダウンロードするデータが格納されるデータベースである。このデータベースのテーブル構成（スキーマ）は、ユーザが設計、作成することができる。
【００４５】
図３は、図２に示したデータ収集制御装置の詳細動作を示す機能ブロック図である。
【００４６】
図３において、トリガ設定部１１１は、トリガ種別の設定プログラム、すなわち、トリガ種別１設定プログラム１５１−１、トリガ種別２設定プログラム１５１−２、トリガ種別３設定プログラム１５１−３を実行し、その結果をトリガ設定データベース（トリガ設定ＤＢ）１２１に設定する。
【００４７】
また、ジョブ設定部１１２は、トリガとアクションを対応付けたジョブをジョブ設定データベース（ジョブ設定ＤＢ）１２２に設定する。
【００４８】
アクション設定部１１３は、アクション種別の設定プログラム、すなわち、データ収集アクション設定プログラム１５２−１、アクション種別２設定プログラム１５２−２、アクション種別３設定プログラム１５２−３を実行し、その結果をアクション設定データベース（アクション設定ＤＢ）１２３に設定する。
【００４９】
トリガ起動部１５１は、トリガ設定データベース（トリガ設定ＤＢ）１２１に設定されたトリガおよびジョブ設定データベース（ジョブ設定ＤＢ）１２２に設定されたジョブを読み込み、トリガ種別の実行プログラム、すなわち、トリガ種別１実行プログラム１５３−１、トリガ種別２実行プログラム１５３−２、トリガ種別３実行プログラム１５３−３、トリガ種別４実行プログラム１５３−４に対してその開始／停止の指令を通知する。
【００５０】
トリガ種別１実行プログラム１５３−１、トリガ種別２実行プログラム１５３−２、トリガ種別３実行プログラム１５３−３、トリガ種別４実行プログラム１５３−４の実行により、イベントが発生すると、そのイベントをフローコントロール部１５２に通知する。
【００５１】
イベントを通知されたフローコントロール部１５２は、アクション設定データベース（アクション設定ＤＢ）１２３に設定されたアクションおよびジョブ設定データベース（ジョブ設定ＤＢ）１２２に設定されたジョブを読み込み、アクション種別の実行プログラム、すなわち、データ収集アクション実行プログラム１５４−１、アクション種別２実行プログラム１５４−２、アクション種別３実行プログラム１５４−３、アクション種別４実行プログラム１５４−４に対してその実行の指令を通知する。
【００５２】
ここで、トリガ設定部１１１で設定されるトリガ発生の条件をデータ収集に関して示すと、
１）ＰＬＣ上の変数エリアが指定した条件となったとき
２）ある時刻になったとき
３）ユーザアプリケーションから通知されたとき
４）指定時刻になったとき
等が挙げられる。
【００５３】
図４は、図３に示したジョブ設定データベース（ジョブ設定ＤＢ）の一例を示す図である。
【００５４】
図４において、ジョブ設定データベース（ジョブ設定ＤＢ）１２２は、ジョブテーブル１２２−１を具備して構成される。
【００５５】
図４に示すジョブテーブル１２２−１は、トリガＩＤに対してアクションＩＤが対応して記憶されるテーブルである。
【００５６】
すなわち、図４に示すジョブテーブル１２２−１においては、トリガＩＤ「１００」に対してアクションＩＤ「２００」が設定され、トリガＩＤ「１００」に対してアクションＩＤ「２１０が設定され、トリガＩＤ「１１０」に対してアクションＩＤ「２３０」が設定されていることを示している。
【００５７】
図５は、図３に示したトリガ設定データベース（トリガ設定ＤＢ）の一例を示す図である。
【００５８】
図５において、トリガ設定データベース（トリガ設定ＤＢ）１２１は、トリガテーブル１２１−１、トリガプログラム情報テーブル１２１−２、トリガ種別ごとのテーブル１２１−３を具備して構成される。
【００５９】
図５に示すトリガテーブル１２１−１は、トリガＩＤに対してトリガ名、トリガ種別ＩＤが対応して記憶されるテーブルである。
【００６０】
すなわち、図５に示すトリガテーブル１２１−１においては、トリガＩＤ「１００」に対してトリガ名「３０秒ごと」、トリガ種別ＩＤ「１」が設定され、トリガＩＤ「１１０」に対してトリガ名「生産開始」、トリガ種別ＩＤ「３」が設定されていることを示している。
【００６１】
また、図５に示すトリガプログラム情報テーブル１２１−２は、トリガ種別ＩＤに対してトリガ種別名、設定プログラム、実行プログラムが対応して記憶されるテーブルである。
【００６２】
すなわち、図５に示すトリガプログラム情報テーブル１２１−２においては、トリガ種別ＩＤ「１」に対してトリガ種別名「定周期」、設定プログラム「SetCyclic」、実行プログラム「CyclicExe」が設定され、トリガ種別ＩＤ「２」に対してトリガ種別名「指定時刻」、設定プログラム「SetTime」、実行プログラム「TimeExe」が設定され、トリガ種別ＩＤ「３」に対してトリガ種別名「条件一致」、設定プログラム「SetTag」、実行プログラム「TagExe」が設定されていることを示している。
【００６３】
また、図５に示すトリガ種別ごとのテーブル１２１−３は、定周期トリガ用のテーブルを示すもので、トリガＩＤに対して定周期が対応して記憶されるテーブルである。
【００６４】
すなわち、図５に示すトリガ種別ごとのテーブル１２１−３においては、トリガＩＤ「１００」に対して定周期「０：０：３０」が設定され、トリガＩＤ「１０１」に対して定周期「０：１：０」が設定されていることを示している。
【００６５】
図６は、図３に示したアクション設定データベース（アクション設定ＤＢ）の一例を示す図である。
【００６６】
図６において、アクション設定データベース（アクション設定ＤＢ）１２３は、アクションテーブル１２３−１、アクションプログラム情報テーブル１２３−２、アクション種別ごとのテーブル１２３−３を具備して構成される。
【００６７】
図６に示すアクションテーブル１２３−１は、アクションＩＤに対してアクション名、アクション種別ＩＤが対応して記憶されるテーブルである。
【００６８】
すなわち、図６に示すアクションテーブル１２３−１においては、アクションＩＤ「２００」に対してアクション名「実績データ収集」、アクション種別ＩＤ「１」が設定され、アクションＩＤ「２１０」に対してアクション名「設備異常」、アクション種別ＩＤ「１」が設定され、アクションＩＤ「２３０」に対してアクション名「指示ダウンロード」、アクション種別ＩＤ「３」が設定されていることを示している。
【００６９】
また、図６に示すトリガプログラム情報テーブル１２３−２は、アクション種別ＩＤに対してアクション種別名、設定プログラム、実行プログラムが対応して記憶されるテーブルである。
【００７０】
すなわち、図６に示すアクションプログラム情報テーブル１２３−２においては、アクション種別ＩＤ「１」に対してアクション種別名「データ収集（ファイル）」、設定プログラム「SetCollectFile」、実行プログラム「CollectFileExe」が設定され、アクション種別ＩＤ「２」に対してアクション種別名「データ収集（ＤＢ）」、設定プログラム「SetCollectDB」、実行プログラム「CollectDBExe」が設定され、アクション種別ＩＤ「３」に対してアクション種別名「データダウンロード」、設定プログラム「SetDownLoadFile」、実行プログラム「DownLoadFileExe」が設定されていることを示している。
【００７１】
また、図６に示すアクション種別ごとのテーブル１２３−３は、データ収集用のテーブルを示すもので、アクションＩＤに対してデータ収集ファイル、収集内容が対応して記憶されるテーブルである。
【００７２】
すなわち、図６に示すアクション種別ごとのテーブル１２３−３においては、アクションＩＤ「２００」に対してデータ収集ファイル「Collect1.log」が設定されていることを示している。
【００７３】
図７は、図３に示した構成においてデータ収集機能を実現するためのデータ設定のテーブルを示す図である。
【００７４】
図７において、データ設定テーブル１２４は、データベース情報テーブル１２４−１、フィールド情報テーブル１２４−２、定数情報テーブル１２４−３、タグ情報テーブル１２４−４、時刻情報テーブル１２４−５を具備して構成される。
【００７５】
ここで、データベース情報テーブル１２４−１には、処理名に対してデータベース名、テーブル名、テーブル追加方法が対応して記憶される。
【００７６】
また、フィールド情報テーブル１２４−２には、処理名に対応してフィールド名、フィールド属性、割当てデータ種別が対応して記憶される。
【００７７】
また、定数情報テーブル１２４−３には、処理名に対応してフィールド名、定数値が対応して記憶される。
【００７８】
また、タグ情報テーブル１２４−４には、処理名に対応してフィールド名、タグ名、加工式が対応して記憶される。
【００７９】
また、時刻情報テーブル１２４−５には、処理名に対応してフィールド名、時刻フォーマットが対応して記憶される。
【００８０】
このデータ設定テーブル１２４は、図１に示したデータ設定部１１０によりユーザにより対話的に設定され、図１に示した収集設定データ記憶部１２０に格納される。
【００８１】
図８は、図３に示した構成においてデータ収集機能を実現するための処理実行テーブルを示す図である。
【００８２】
図８おいて、この処理実行テーブル１２５は、処理名に対応してデータベース名、対応ＳＱＬ文１、対応ＳＱＬ文２が記憶される。
【００８３】
図９は、図３に示したトリガ設定部の処理を示すフローチャートである。
【００８４】
図９において、図３に示したトリガ設定部１１１の処理が開始されると、まず、図５に示したトリガプログラム情報テーブル１２１−２に登録されているトリガ種別名から１つをユーザに選択させる（ステップ２０１）。
【００８５】
そして、登録されたトリガ種別名に対応する設定プログラムを実行する（ステップ２０２）。その後、このジョブ設定部１１１の処理を終了する。
【００８６】
図１０は、図９に示した処理で選択された種別ごとのトリガ設定プログラムにより実行される処理の一例を示すフローチャートである。
【００８７】
なお、図１０に示す処理は、トリガ種別が「定周期」の場合の設定プログラムにより実行される処理を示している。
【００８８】
図１０において、この処理が開始されると、まず、トリガ名を入力する（ステップ２１１）。次に、定周期で発生させる間隔を入力する（ステップ２１２）。
【００８９】
そして、図５に示したトリガテーブル１２１−１を設定する（ステップ２１３）。ここで、トリガ名は、本プログラムで入力したトリガの名前、すなわちステップ２１１で入力されたトリガ名に設定され、トリガＩＤは、一意のＩＤを生成して設定され、トリガ種別は、定周期をあらわす種別ＩＤに設定される。
【００９０】
次に、図５に示したトリガ種別ごとのテーブル（定周期トリガテーブル）１２１−３を設定する（ステップ２１４）。ここで、トリガＩＤは、トリガテーブル１２１−１に設定したトリガＩＤと同じＩＤ、すなわち、ステップ２１３で設定したＩＤと同じＩＤが設定され、定周期は、ステップ２１２で入力された定周期の値が設定される。その後、この処理を終了する。
【００９１】
図１１は、図３に示したアクション設定部の処理を示すフローチャートである。
【００９２】
図１１において、図３に示したアクション設定部１１３の処理が開始されると、まず、図６に示したアクションプログラム情報テーブル１２３−２に登録されているアクション種別名から１つをユーザに選択させる（ステップ２２１）。
【００９３】
そして、登録されたアクション種別名に対応する設定プログラムを実行する（ステップ２２２）。その後、このアクション設定部１１３の処理を終了する。
【００９４】
図１２は、図１１に示した処理で選択された種別ごとのアクション設定プログラムにより実行される処理の一例を示すフローチャートである。
【００９５】
なお、図１２に示す処理は、アクション種別が「収集」の場合の設定プログラムにより実行される処理を示している。
【００９６】
図１２において、この処理が開始されると、まず、アクション名を入力する（ステップ２３１）。次に、データ収集に必要な情報を入力する（ステップ２３２）。
【００９７】
そして、図６に示したアクションテーブル１２３−１を設定する（ステップ２３３）。ここで、アクション名は、本プログラムで入力したアクションの名前、すなわちステップ２３１で入力されたアクション名に設定され、アクションＩＤは、一意のＩＤを生成して設定され、アクション種別は、収集をあらわす種別ＩＤに設定される。
【００９８】
次に、図６に示したアクション種別ごとのテーブル（データ収集テーブル）１２３−３を設定する（ステップ２３４）。ここで、アクションＩＤは、アクションテーブル１２３−１に設定したトリガＩＤと同じＩＤ、すなわち、ステップ２３３で設定したＩＤと同じＩＤが設定され、ファイル名は、データ収集するファイル名に設定され、データ収集フォーマットは、どのデータをどのように収集するかを設定する。その後、この処理を終了する。
【００９９】
図１３は、図３に示したジョブ設定部の処理を示すフローチャートである。
【０１００】
図１３において、図３に示したジョブ設定部１２２の処理が開始されると、まず、図５に示したトリガテーブル１２１−１に登録されているトリガの一覧を表示し、その中で発生させるトリガを選択する（ステップ２４１）。
【０１０１】
次に、図６に示したアクションテーブル１２３−１に登録されているアクションの一覧を表示し、その中で先ほど選択したトリガが発生したときに実行させるアクションを選択する（ステップ２４２）。
【０１０２】
そして、選択したトリガとアクションの組み合わせの各ＩＤを図４に示したジョブテーブル１２２−１に登録し（ステップ２４３）、このジョブ設定部１１２の処理を終了する。
【０１０３】
図１４は、図３に示したトリガ起動部による起動処理を示すフローチャートである。
【０１０４】
図１４に示す起動処理においては、まず、図４に示したジョブテーブル１２２−１に登録されているジョブのトリガＩＤを取得する（ステップ２５１）。
【０１０５】
次に、上記トリガＩＤを図４に示したジョブテーブル１２２−１より検索し、トリガ種別を知る（ステップ２５２）。
【０１０６】
そして、上記トリガ種別に対応した実行プログラムを図５に示したトリガプログラム情報テーブル１２１−２より検索し対応する実行プログラムを起動する。この時、実行プログラムの起動パラメータとしてトリガＩＤを渡す（ステップ２５３）。
【０１０７】
次に、全てのジョブを終了したかを調べ（ステップ２５４）、全てのジョブを終了しない場合は（ステップ２５４でＮＯ）、ステップ２５１に戻るが、全てのジョブを終了したと判断した場合は（ステップ２５４でＹＥＳ）、ステップ２５５に進む。
【０１０８】
ステップ２５５では、図４に示したジョブテーブル１２２−１に登録されているジョブのアクションＩＤを取得する。
【０１０９】
そして、上記アクションＩＤを図６に示したアクションテーブル１２３−１より検索し、アクション種別を知る（ステップ２５６）。
【０１１０】
次に、上記アクション種別に対応した実行プログラムを図６に示したアクションプログラム情報テーブル１２３−２より検索し対応する実行プログラムを起動する。この時、実行プログラムの起動パラメータとして、アクションＩＤを渡す（ステップ２５７）。
【０１１１】
そして、全てのジョブを終了したかを調べ（ステップ２５８）、全てのジョブを終了していない場合は（ステップ２５８でＮＯ）、ステップ２５５に戻るが、全てのジョブを終了したと判断した場合は（ステップ２５８でＹＥＳ）、この処理を終了する。
【０１１２】
図１５は、図１４に示した処理により起動された各トリガごとの実行プログラムによる処理を示すフローチャートである。
【０１１３】
図１５において、この処理が開始されると、ます、起動時に渡されたトリガＩＤより図５に示したトリガ種別ごとのテーブル１２１−３、すなわち、例えば、定周期トリガテーブルよりなるトリガ種別ごとの設定テーブルを検索する（ステップ２６１）。
【０１１４】
そして、検索したトリガＩＤに対応する種別ごとの設定内容を取得する（ステップ２６２）。ここで、取得するトリガＩＤに対応する種別ごとの設定内容とは、例えば、定周期トリガテーブルでは定周期にトリガを発生させる間隔である。
【０１１５】
次に、取得した情報を元にトリガを発生させるための準備を行う（ステップ２６３）。ここで、取得した情報を元にトリガを発生させるための準備とは、例えば、トリガ種別が定周期である場合は、周期ごとにトリガを発生させるタイマを開始させることになる。
【０１１６】
そして、トリガが発生したことを認識すると、例えば、定周期トリガで、定周期にタイマ割り込みが発生すると、図３に示したフローコントロール部１５２に対してイベント通知を行う。このイベント通知においてはトリガＩＤを付加して通知する（ステップ２６４）。
【０１１７】
次にこの処理を終了するかを調べ（ステップ２６５）、終了しない場合は（ステップ２６４でＮＯ）、ステップ２６３に戻るが、終了と判断されると（ステップ２６５でＹＥＳ）、この処理を終了する。
【０１１８】
図１６は、図３に示したフローコントロール部の処理を示すフローチャートである。
【０１１９】
図１６において、図３に示したフローコントロール部１５２の処理が開始されると、まず、イベント受信待ちになる（ステップ２７１）。
【０１２０】
そして、次に、イベント受信かを調べる（ステップ２７２）。ここで、イベント受信でないと判断されると（ステップ２７２でＮＯ）、ステップ２７１に戻るが、イベント受信と判断されると（ステップ２７２でＹＥＳ）、渡されたトリガＩＤを元に図４に示したジョブテーブル１２２−１を検索し、対応するアクションＩＤを取得する（ステップ２７４）。
【０１２１】
そして、図１４に示した起動処理で起動したアクションＩＤごとのアクション実行プログラムにトリガ発生を通知する（ステップ２７５）。
【０１２２】
次に、この処理を終了するかを調べ（ステップ２７６）、終了しないと判断されると（ステップ２７６でＮＯ）、ステップ２７１に戻るが、終了すると判断されると（ステップ２７６でＹＥＳ）、この処理を終了する。
【０１２３】
図１７は、図１４の処理により起動した各アクション種別ごとの実行プログラムの処理を示すフローチャートである。
【０１２４】
図１７において、この処理が開始されると、まず、起動時に渡されたアクションＩＤにより、図６に示したアクションごとのテーブル１２３−３、すなわち、例えば、データ収集アクションテーブルからなるアクションごとの設定テーブルを検索する（ステップ２８１）。
【０１２５】
次に、検索したアクションＩＤに対応する種別ごとの設定内容、例えば、データ収集アクションテーブルでは、収集ファイル名と収集フォーマットの情報を取得する（ステップ２８２）。
【０１２６】
そして、各種別ごとの処理を行う（ステップ２８３）。例えば、データ収集では、指定データ収集ファイルをオープンするなどの処理を行う。
【０１２７】
この状態で、図３に示したフローコントロール部１５２からトリガ発生が通知されると、設定内容にしたがってデータ収集など、アクション種別固有の実行処理を行う（ステップ２８４）。
【０１２８】
次に、この処理を終了するかを調べ（ステップ２８５）、終了しないと判断されると（ステップ２８５でＮＯ）、ステップ２８４に戻るが、終了すると判断されると（ステップ２８５でＹＥＳ）、この処理を終了する。
【０１２９】
図１８は、図３に示したデータ収集アクション設定プログラムによる処理を示すフローチャートである。
【０１３０】
図１８において、このデータ収集アクション設定プログラムによる処理が開始されると、まず、このデータ収集アクション設定プログラムに係るアクション名を入力する（ステップ３０１）。
【０１３１】
次に、データ収集するデータベース情報の入力を行なう（ステップ３０２）。このデータ収集するデータベース情報の入力は、
１）データベース名
２）テーブル名
３）テーブル追加方法
を入力することにより行われる。
【０１３２】
ここで、テーブル追加方法は、上記テーブルにどのようなデータを追加するかの追加方法を示すもので、
１）テーブルにレコードを追加
２）テーブルのレコードを更新
３）テーブルにレコードを追加、該当レコードがある場合は更新
４）テーブルのレコードを更新、該当レコードがなければ追加
等の方法から選択される。
【０１３３】
次に、フィールド属性の取得が行われる（ステップ３０３）。このフィールド属性の取得は、入力されたデータベースのテーブルからフィールド情報、すなわち、フィールド名、タイプ、サイズなどを取得することにより行われる。
【０１３４】
次に、割当て種別の入力を行なう（ステップ３０４）。この割当て種別の入力は、上記フィールド毎に何のデータを割り当てるかを選択する。ここで、割り当てる条件は、
１）ＰＬＣ上のあるエリアの値（タグ）
２）定数
３）トリガ発生の時刻
４）何も割り当てない
等がある。ここで、１）のＰＬＣ上のあるエリアの値（タグ）を割り当てる場合は、通常、ＰＬＣの変数エリアをあらかじめ名前で定義し、実際のＰＬＣのエリアと１対１で対応付けたテーブルによりデータの所在を管理し、ここでの設定はそのタグ名を割り当てるようにすると簡易に設定できる。また、データの加工条件も併せて設定できる。
【０１３５】
また、２）の定数を割り当てる場合は、定数値の入力により行われ、３）のトリガ発生の時刻を割り当てる場合は、時刻フォーマットそして、日付のみ、日付＋時刻などを選択する。
【０１３６】
次に、割当て種別ごとの条件の入力を行なう（ステップ３０５）。この割当て種別ごとの条件の入力は上記割当て種別ごとに必要な条件値を入力する。例えば、
１）ＰＬＣの値の場合：タグ名、加工式
２）定数の場合：定数値
３）時刻の場合：時刻フォーマット
を入力することにより行われる。
【０１３７】
次に、図６に示したアクションテーブル１２３−１に設定する（ステップ３０６）。ここでの設定項目は、
１）アクション名：本プログラムで入力した名前
２）アクションＩＤ：一意のＩＤを生成
３）アクション種別ＩＤ：データ収集を表わす種別ＩＤ
等である。
【０１３８】
次に、ステップ３０２のデータ収集するデータベース情報の入力を元に図７に示したデータ情報テーブル１２４−１に以下の情報を設定する（ステップ３０７）。
【０１３９】
１）アクションＩＤ：図６に示したアクションテーブル１２３−１のＩＤと同じＩＤ
【０１４０】
次に、ステップ３０３のフィールド属性の取得、ステップ３０４の割当て種別の入力の検索条件の入力を元に図７のフィールド情報テーブル１２４−２の設定を行う（ステップ３０８）。
【０１４１】
次に、ステップ３０５の割当て種別ごとの条件の入力を元に、図７の定数情報テーブル１２４−３、タグ情報テーブル１２４−４、時刻情報テーブル１２４−５の設定を行い（ステップ３０９）、このデータ収集アクション設定プログラムによる処理を終了する。
【０１４２】
図１９は、図３に示したデータ収集アクション設定プログラム初期化処理を示すフローチャートである。
【０１４３】
図１９において、図３に示したデータ収集アクション設定プログラム１５４−１の初期化処理が開始されると、まず、起動時に渡されたアクションＩＤより、図７に示したデータベース情報テーブル１２４−１、フィールド情報テーブル１２４−２、定数情報テーブル１２４−３、タグ情報テーブル１２４−４、時刻情報テーブル１２４−５を検索しデータを取得する（ステップ３１１）。
【０１４４】
次に、データソース名よりデータベースをオープンしておく（ステップ３１２）。
【０１４５】
そして、取得したデータよりＳＱＬ文を作成する（ステップ３１３）。ここで、テーブル追加方法が「追加」の場合は、INSERT文を作成する。また、「更新」の場合は、UPDATE文を作成する。追加または更新の場合はINSERT文およびUPDATE文の両方を作成し、先に実行するほうを第１ＳＱＬ文、後で実行するほうを第２ＳＱＬ文とする。この作成されたＳＱＬ文は、図８に示した処理実行テーブル１２５に格納される。
【０１４６】
そして、トリガ発生待ちになる（ステップ３１４）。
【０１４７】
次に、データ収集処理を実行する（ステップ３１５）。そして、このデータ収集処理が終了したかを調べ（ステップ３１５）、データ収集処理が終了していないと判断された場合は（ステップ３１５でＮＯ）、ステップ３１５に戻り、データ収集処理を続けるが、このデータ収集処理が終了したと判断されると（ステップ３１６でＹＥＳ）、このデータ収集アクション設定プログラム初期化処理を終了する。
【０１４８】
図２０は、図１９に示したデータ収集処理の詳細を示すフローチャートである。
【０１４９】
図２０において、このデータ収集処理が開始されると、まず、ＳＱＬ文の中のVALUE文の中にタグ名の項目があれば、そのタグ名の対応するＰＬＣの変数エリアのデータを取得し、また加工式あれば加工する（ステップ３２１）。
【０１５０】
そして、取得したデータを元にＳＱＬ文を完成させる（ステップ３２２）。
【０１５１】
次に、第１ＳＱＬ文を図１９の初期化処理でオープンしたデータベースに対して実行する（ステップ３２３）。
【０１５２】
次に、エラーかを調べ（ステップ３２４）、ここで、エラーでないと（ステップ３２４でＮＯ）、このデータ収集処理を終了する。
【０１５３】
しかし、ステップ３２４で、エラーと判断されると（ステップ３２４でＹＥＳ）、エラーログ、リトライなどのエラー内容ごとの処理を実行し（ステップ３２５）、次に、第２ＳＱＬ文実行要かを調べる（ステップ３２６）。
【０１５４】
ここで、第２ＳＱＬ文実行要でないと判断されると（ステップ３２６でＮＯ）、このままこのデータ収集処理を終了するが、第２ＳＱＬ文実行要であると判断されると（ステップ３２６でＹＥＳ）、第２ＳＱＬ文の実行を行い（ステップ３２７）、このデータ収集処理を終了する。
【０１５５】
このように、この実施の形態においては、監視対象からのデータをデータベースに収集するデータ収集制御装置において、上記データ収集は上記データベースの任意のフィールドに任意のデータを割り当てることによって実行されるように構成したので、従来ユーザアプリケーションにより対応しなければ実現できなかったデータ収集機能を簡単な構成で行え、プログラミング工数を大幅に削減し、メンテナンス性を向上させることができる。
【０１５６】
また、監視対象２０からデータを収集するタイミングを示すトリガに関連付けて監視対象２０からのデータの収集処理を示すアクションをデータ設定部１１０で設定して収集設定データ記憶部１２０に格納し、この収集設定データ記憶部１２０に格納した設定データを参照してタイミング発生処理部１７０から監視対象２０の状態に応じてトリガを発生し、フロー制御部１５０は、このトリガ発生に対応して上記アクションを自動実行することでデータ収集部１８０により監視対象２０のデータを収集してユーザデータベース４００に格納するように構成したので、ユーザが必要とするデータの形態でデータの収集を行うことができ、しかもユーザプログラムの負荷を軽減することができるとともに収集したデータを容易に再利用することが可能になる。
【０１５７】
【発明の効果】
以上説明したように、本発明によれば、監視対象であるプログラマブルコントローラからデータを収集してデータベースに格納するデータ収集制御装置において、上記プログラマブルコントローラからデータを収集するタイミングを示すトリガとして、トリガを発生させるためのトリガ種別実行プログラムと一意のトリガＩＤとを対応させて設定するトリガ設定手段と、上記プログラマブルコントローラからのデータの収集処理を示すアクションとして、アクションを実行するためのアクション種別実行プログラムと一意のアクションＩＤとを対応させて設定するアクション設定手段と、上記トリガ設定手段で設定したトリガとそのトリガが発生したときに実行する上記アクション設定手段で設定したアクションとを関連付けたジョブとして、上記トリガＩＤと上記アクションＩＤとを対応させて設定するジョブ設定手段と、上記トリガ設定手段で設定したトリガ種別実行プログラムを実行してトリガを発生させ、このトリガ発生に基づいてそのトリガ種別実行プログラムに対応するトリガＩＤを付加したイベントを通知し、このイベント通知を受けてそのトリガＩＤに対応するアクションＩＤを上記ジョブ設定手段で設定した中から検索して取得し、この取得したアクションＩＤに対応するアクション種別実行プログラムを上記アクション設定手段で設定した中から検索して自動実行することにより、上記プログラマブルコントローラから収集したデータを上記データベースの任意のフィールドに割り当てて格納する制御手段と、を具備するように構成したので、従来ユーザアプリケーションにより対応しなければ実現できなかったデータ収集機能を簡単な構成で行え、プログラミング工数を大幅に削減し、メンテナンス性を向上させることができる。
【０１６０】
本発明によれば、ユーザが必要とするデータの形態でデータの収集を行うことができ、しかもユーザプログラムの負荷を軽減することができるとともに収集したデータを容易に再利用することが可能になる。
【０１６１】
また、本発明によれば、上記アクションは、ユーザのパラメータ設定により設定されるように構成したので、上記効果に加えて、ユーザカスタマイズしたデータ収集が可能になる。
【図面の簡単な説明】
【図１】  この発明に係るデータ収集制御装置を適用して構成したデータ収集制御システムの一実施の形態を示すブロック図。
【図２】図１に示したデータ収集制御装置の詳細構成を示すブロック図。
【図３】図２に示したデータ収集制御装置の詳細動作を示す機能ブロック図。
【図４】図３に示したジョブ設定データベース（ジョブ設定ＤＢ）の一例を示す図。
【図５】図３に示したトリガ設定データベース（トリガ設定ＤＢ）の一例を示す図。
【図６】図３に示したアクション設定データベース（アクション設定ＤＢ）の一例を示す図。
【図７】図３に示した構成においてデータ収集機能を実現するためのデータ設定のテーブルを示す図。
【図８】図３に示した構成においてデータ収集機能を実現するための処理実行テーブルを示す図。
【図９】図３に示したトリガ設定部の処理を示すフローチャート。
【図１０】図９に示した処理で選択された種別ごとのトリガ設定プログラムにより実行される処理の一例を示すフローチャート。
【図１１】図３に示したアクション設定部の処理を示すフローチャート。
【図１２】図１１に示した処理で選択された種別ごとのアクション設定プログラムにより実行される処理の一例を示すフローチャート。
【図１３】図３に示したジョブ設定部の処理を示すフローチャート。
【図１４】図３に示したトリガ起動部による起動処理を示すフローチャート。
【図１５】図１４に示した処理により起動された各トリガごとの実行プログラムによる処理を示すフローチャート。
【図１６】図３に示したフローコントロール部の処理を示すフローチャート。
【図１７】図１４の処理により起動した各アクション種別ごとの実行プログラムの処理化処理を示すフローチャート。
【図１８】図３に示したデータ収集アクション設定プログラムによる処理を示すフローチャート。
【図１９】図３に示したデータ収集アクション設定プログラム初期化処理を示すフローチャート。
【図２０】図１９に示したデータ収集処理の詳細を示すフローチャート。
【符号の説明】
１０    データ収集制御装置
１１    装置設定ツール
１２    設定テーブル
１３    タグ設定ツール
１４    タグデータベース
１５    サービス処理部
１６    制御モジュール
１７    トリガモジュール
１８    アクションモジュール
２０    監視装置
２０−１、２０−２    ＰＬＣ（プログラマブルロジックコントローラ）
４０    ユーザデータファイル
５０    ユーザアプリケーション
６０    ゲートウエイ
１１０    データ設定部
１１１    トリガ設定部
１１２    ジョブ設定部
１１３    アクション設定部
１２０    収集設定データ
１２１    トリガ設定データベース（トリガ設定ＤＢ）
１２１−１    トリガテーブル
１２１−２    トリガプログラム情報テーブル
１２１−３    トリガ種別ごとのテーブル
１２２    ジョブ設定データベース（ジョブ設定ＤＢ）
１２２−１    ジョブテーブル
１２３    アクション設定データベース（アクション設定ＤＢ）
１２３−１    アクションテーブル
１２３−２    アクションプログラム情報テーブル
１２３−３    アクション種別ごとのテーブル
１２４    データ設定テーブル
１２４−１    データベース情報テーブル
１２４−２    フィールド情報テーブル
１２４−３    定数情報テーブル
１２４−４    タグ情報テーブル
１２４−５    時刻情報テーブル
１２５    処理実行テーブル
１５０    フロー制御部
１５１    トリガ起動部
１５１−１    トリガ種別１設定プログラム
１５１−２    トリガ種別２設定プログラム
１５１−３    トリガ種別３設定プログラム
１５２    フローコントロール部
１５２−１    データ収集アクション設定プログラム
１５２−２    アクション種別２設定プログラム
１５２−３    アクション種別３設定プログラム
１５３−１    トリガ種別１実行プログラム
１５３−２    トリガ種別２実行プログラム
１５３−３    トリガ種別３実行プログラム
１５３−４    トリガ種別４実行プログラム
１５４−１    データ収集アクション実行プログラム
１５４−２    アクション種別２実行プログラム
１５４−３    アクション種別３実行プログラム
１５４−４    アクション種別４実行プログラム
１８０    データ収集部
４００    ユーザデータベース（ユーザＤＢ）
【図１】
0003738803.tif 000002
【図２】
0003738803.tif 000003
【図３】
0003738803.tif 000004
【図４】
0003738803.tif 000005
【図５】
0003738803.tif 000006
【図６】
0003738803.tif 000007
【図７】
0003738803.tif 000008
【図８】
0003738803.tif 000009
【図９】
0003738803.tif 000010
【図１０】
0003738803.tif 000011
【図１１】
0003738803.tif 000012
【図１２】
0003738803.tif 000013
【図１３】
0003738803.tif 000014
【図１４】
0003738803.tif 000015
【図１５】
0003738803.tif 000016
【図１６】
0003738803.tif 000017
【図１７】
0003738803.tif 000018
【図１８】
0003738803.tif 000019
【図１９】
0003738803.tif 000020
【図２０】
0003738803.tif 000021