(57)【要約】【課題】ＳＱＬの記述なしにデータベースを操作する技術において、簡易な仕組みで、複数のレコードをまとめて操作する。【解決手段】プログラマブルロジックコントローラ（１００）のデータベースアクセス部（１２０）は、実行部（１１０）が生成したデータ群に含まれる複数の構造体データおよび当該構造体データの定義を示す定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行する。【選択図】図１
2016194808.tif 000002
【特許請求の範囲】
【請求項１】
データベースにアクセス可能なプログラマブルロジックコントローラであって、
単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成部と、
前記構造体データの定義を示す定義データを記憶する記憶部と、
前記生成部が生成した前記データ群に含まれる前記複数の構造体データおよび前記記憶部に記憶された前記定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセス部と、を備えていることを特徴とするプログラマブルロジックコントローラ。
【請求項２】
前記データ群は、前記複数の構造体データが配列された配列データと、前記複数の構造体データの個数を示す個数データとを含むことを特徴とする請求項１に記載のプログラマブルロジックコントローラ。
【請求項３】
前記生成部は、前記データベースアクセス部が前記ＳＱＬ文を実行するために掛かる時間よりも短い間隔で、前記構造体データを生成するようになっていることを特徴とする請求項１または２に記載のプログラマブルロジックコントローラ。
【請求項４】
前記ＳＱＬ文は、前記複数のレコードの挿入または更新を要求するものであることを特徴とする請求項１〜３の何れか一項に記載のプログラマブルロジックコントローラ。
【請求項５】
プログラマブルロジックコントローラに接続された、データベースにアクセス可能なデータ収集装置であって、
前記プログラマブルロジックコントローラからデータを取得する取得部と、
前記取得部が取得したデータから単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成部と、
前記構造体データの定義を示す定義データを記憶する記憶部と、
前記生成部が生成した前記データ群に含まれる前記複数の構造体データおよび前記記憶部に記憶された前記定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセス部と、を備えていることを特徴とするデータ収集装置。
【請求項６】
データベースにアクセス可能なプログラマブルロジックコントローラが、単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成ステップと、
前記プログラマブルロジックコントローラが、前記生成ステップにおいて生成した前記データ群に含まれる前記複数の構造体データおよび前記構造体データの定義を示す定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセスステップと、を包含することを特徴とするプログラマブルロジックコントローラのデータベースアクセス方法。
【請求項７】
単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成ステップと、
前記生成ステップにおいて生成した前記データ群に含まれる前記複数の構造体データおよび前記構造体データの定義を示す定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセスステップと、をデータベースにアクセス可能なプログラマブルロジックコントローラに実行させるデータベースアクセスプログラム。
【請求項８】
プログラマブルロジックコントローラに接続された、データベースにアクセス可能なデータ収集装置が、前記プログラマブルロジックコントローラからデータを取得する取得ステップと、
前記データ収集装置が、前記取得ステップにおいて取得したデータから単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成ステップと、
前記データ収集装置が、前記生成ステップにおいて生成した前記データ群に含まれる前記複数の構造体データおよび前記構造体データの定義を示す定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセスステップと、を包含することを特徴とするデータ収集装置のデータベースアクセス方法。
【請求項９】
プログラマブルロジックコントローラからデータを取得する取得ステップと、
前記取得ステップにおいて取得したデータから単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成ステップと、
前記生成ステップにおいて生成した前記データ群に含まれる前記複数の構造体データおよび前記構造体データの定義を示す定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセスステップと、を前記プログラマブルロジックコントローラに接続された、データベースにアクセス可能なコンピュータに実行させるデータベースアクセスプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックコントローラおよびデータ収集装置、プログラマブルロジックコントローラおよびデータ収集装置のデータベースアクセス方法、ならびにプログラマブルロジックコントローラおよびデータ収集装置のためのデータベースアクセスプログラムに関する。
【背景技術】
【０００２】
本発明者らは、データベース操作のためのＳＱＬの記述をしなくとも、データベースへの操作を含むプログラミングを可能とする技術を開発している（特許文献１）。
【０００３】
特許文献１に記載の技術では、データベースへアクセス可能なプログラマブルロジックコントローラは、構造体のデータを含むユーザプログラムおよび構造体定義情報を記憶する。シーケンス命令プログラムは、ユーザプログラムの命令を順次、実行し、データベースへアクセスするためにＤＢアクセス処理プログラムを呼び出す。ＤＢアクセス処理プログラムは、構造体定義情報を読み出して、読み出した構造体定義情報に基づいて、ユーザプログラムの実行によるデータベースへのアクセス時のＳＱＬ文を生成する。ＤＢアクセス処理プログラムは、生成されたＳＱＬ文を実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開ＷＯ２０１３／１９１２７５号パンフレット（２０１３年１２月２７日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術では、都度、１つのレコードのデータを構造体にセットし、データベースに書き込むようになっている。例えば、図６の（ａ）に示すように、メンバ「ＩＤ」、メンバ「ＰＴＩＭＥ」、メンバ「ＤＡＴＡ１」およびメンバ「ＤＡＴＡ２」を有する型名「ＲＥＣＯＲＤ」の構造体データ「ＲＥＳＵＬＴ」が定義されているときに、構造体データ「ＲＥＳＵＬＴ」の各メンバに値をセットすることにより、図６の（ｂ）に示す「実績格納テーブル」に１つのレコードを挿入することができる。
【０００６】
しかしながら、例えば工場等において所定の実績データを収集してデータベースに書き込む場合、当該実績データの収集周期が、データベースへの書き込みに必要な時間よりも短くなるケースがあり得る。当該ケースでは、データベースへの書き込みが追い着かないため、所望の実績データをデータベースに書き込むことができない可能性がある。
【０００７】
このような問題に対処するため、複数のレコードのデータをまとめて１つのレコードに適合するように加工し、加工したデータを構造体にセットして、データベースへの書き込みを行い、その後データベース側において、まとめた１つのレコードを、元の複数のレコードに分離する方法が考えられる（参考技術）。
【０００８】
例えば、図７の（ａ）に示すように、一つ目のレコードに対応するメンバ「Ｄ１＿ＩＤ」、メンバ「Ｄ１＿ＰＴＩＭＥ」、メンバ「Ｄ１＿ＤＡＴＡ１」およびメンバ「Ｄ１＿ＤＡＴＡ２」、ならびに、二つ目のレコードに対応するメンバ「Ｄ２＿ＩＤ」、メンバ「Ｄ２＿ＰＴＩＭＥ」、メンバ「Ｄ２＿ＤＡＴＡ１」およびメンバ「Ｄ２＿ＤＡＴＡ２」を有する型名「ＲＥＣＯＲＤ２」の構造体「ＲＥＳＵＬＴ２」が定義されているときに、構造体「ＲＥＳＵＬＴ２」の各メンバに値をセットすることにより、図７の（ｂ）に示す「実績格納一時テーブル」に１つのレコードとして挿入することができる。そして、データベース側のユーザプログラムによって、「実績格納一時テーブル」において一つのレコードに格納されているデータを、二つのレコードに分離することにより、図７の（ｃ）に示す「実績格納テーブル」を作成することができる。
【０００９】
このように、複数のレコードをまとめて操作することにより、上述したケースにおいても、所望の実績データを首尾良くデータベースに書き込むことができる。
【００１０】
ただし、この方法では、データベース側のユーザプログラムを工夫する必要があり、処理が複雑になる。また、プログラマブルロジックコントローラ側とデータベース側との両方を考慮してシステムを構築することは非常に困難である。
【００１１】
本発明は、上記課題に鑑みてなされたものであり、ＳＱＬの記述なしにデータベースを操作する技術において、簡易な仕組みで、複数のレコードをまとめて操作することを主たる目的とする。
【課題を解決するための手段】
【００１２】
本発明に係るプログラマブルロジックコントローラは、上記の課題を解決するために、データベースにアクセス可能なプログラマブルロジックコントローラであって、単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成部と、前記構造体データの定義を示す定義データを記憶する記憶部と、前記生成部が生成した前記データ群に含まれる前記複数の構造体データおよび前記記憶部に記憶された前記定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセス部と、を備えていることを特徴としている。
【００１３】
上記の構成によれば、生成部が生成するデータ群には、各々が単一のレコードを規定する構造体データが複数含まれている。ゆえに、データベースアクセス部は、当該データ群を参照することにより、複数のレコードを認識することができる。そして、データベースアクセス部は、構造体データの定義データを参照することにより、レコードの定義を認識することができる。これにより、データベースアクセス部は、データ群に含まれる複数の構造体データの各々に対応する複数のレコードを操作するＳＱＬ文を生成することができ、当該ＳＱＬ文を実行することにより、複数のレコードを操作することができる。このように、上記の構成によれば、ＳＱＬの記述なしにデータベースを操作する技術において、簡易な仕組みで、複数のレコードをまとめて操作することができる。
【００１４】
本発明に係るプログラマブルロジックコントローラでは、前記データ群は、前記複数の構造体データが配列された配列データと、前記複数の構造体データの個数を示す個数データとを含んでいてもよい。
【００１５】
上記の構成によれば、データベースアクセス部は、データ群に含まれる構造体データの個数を認識することができる。また、複数の構造体データが、配列データに格納されるため、生成部は、容易に複数の構造体データをデータ群に含めることができると共に、データベースアクセス部は、容易に個々の構造体データを読み出すことができる。これにより、データベースアクセス部は、容易に上記ＳＱＬ文を作成することができる。
【００１６】
本発明に係るプログラマブルロジックコントローラでは、前記生成部は、前記データベースアクセス部が前記ＳＱＬ文を実行するために掛かる時間よりも短い間隔で、前記構造体データを生成するようになっていてもよい。
【００１７】
上記の構成によれば、データベースアクセス部がＳＱＬ文を実行するために掛かる時間よりも短い間隔で、生成部が構造体データを生成するため、従来技術のように、都度、１つのレコードのデータを構造体にセットし、データベースを操作していたのでは、データベースの操作が追い着かない可能性がある。しかし、本発明によれば、複数のレコードをまとめて操作することができるため、データベースアクセス部がＳＱＬ文を実行するために掛かる時間よりも短い間隔で、生成部が構造体データを生成するとしても、首尾良く、生成した構造体データに対応するデータベースの操作を行うことができる。
【００１８】
本発明に係るプログラマブルロジックコントローラでは、前記ＳＱＬ文は、前記複数のレコードの挿入または更新を要求するものであってもよい。
【００１９】
上記の構成によれば、複数のレコードの挿入または更新をまとめて行うことができる。
【００２０】
本発明に係るデータ収集装置は、プログラマブルロジックコントローラに接続された、データベースにアクセス可能なデータ収集装置であって、前記プログラマブルロジックコントローラからデータを取得する取得部と、前記取得部が取得したデータから単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成部と、前記構造体データの定義を示す定義データを記憶する記憶部と、前記生成部が生成した前記データ群に含まれる前記複数の構造体データおよび前記記憶部に記憶された前記定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセス部と、を備えていることを特徴としている。
【００２１】
上記の構成によれば、データ収集装置は、プログラマブルロジックコントローラからデータを取得し、取得したデータから構造体データを生成し、生成した複数の構造体データを含むデータ群を生成し、当該データ群および定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するようになっているため、本発明に係るプログラマブルロジックコントローラと同等の効果を奏する。
【００２２】
本発明に係るデータベースアクセス方法は、データベースにアクセス可能なプログラマブルロジックコントローラが、単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成ステップと、前記プログラマブルロジックコントローラが、前記生成ステップにおいて生成した前記データ群に含まれる前記複数の構造体データおよび前記構造体データの定義を示す定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセスステップと、を包含するプログラマブルロジックコントローラのデータベースアクセス方法であってもよい。
【００２３】
また、本発明に係るデータベースアクセスプログラムは、単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成ステップと、前記生成ステップにおいて生成した前記データ群に含まれる前記複数の構造体データおよび前記構造体データの定義を示す定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセスステップと、をデータベースにアクセス可能なプログラマブルロジックコントローラに実行させるものであってもよい。
【００２４】
上記の構成によれば、本発明に係るプログラマブルロジックコントローラと同等の効果を奏する。
【００２５】
本発明に係るデータベースアクセス方法は、プログラマブルロジックコントローラに接続された、データベースにアクセス可能なデータ収集装置が、前記プログラマブルロジックコントローラからデータを取得する取得ステップと、前記データ収集装置が、前記取得ステップにおいて取得したデータから単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成ステップと、前記データ収集装置が、前記生成ステップにおいて生成した前記データ群に含まれる前記複数の構造体データおよび前記構造体データの定義を示す定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセスステップと、を包含するデータ収集装置のデータベースアクセス方法であってもよい。
【００２６】
また、本発明に係るデータベースアクセスプログラムは、プログラマブルロジックコントローラからデータを取得する取得ステップと、前記取得ステップにおいて取得したデータから単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する生成ステップと、前記生成ステップにおいて生成した前記データ群に含まれる前記複数の構造体データおよび前記構造体データの定義を示す定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行するデータベースアクセスステップと、を前記プログラマブルロジックコントローラに接続された、データベースにアクセス可能なコンピュータに実行させるデータベースアクセスプログラムであってもよい。
【００２７】
上記の構成によれば、本発明に係るデータ収集装置と同等の効果を奏する。
【発明の効果】
【００２８】
本発明によれば、ＳＱＬの記述なしにデータベースを操作する技術において、簡易な仕組みで、複数のレコードをまとめて操作することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施形態１に係るプログラマブルロジックコントローラの概略構成を示すブロック図である。
【図２】本発明の実施形態１について説明する図であり、（ａ）は、構造体データおよびデータ群の定義の例を示し、（ｂ）は、当該データ群によって操作されるテーブルの例を示す。
【図３】本発明の実施形態１に係るデータベースアクセス方法を説明するフローチャートである。
【図４】本発明の実施形態２に係るデータ収集装置の概略構成を示すブロック図である。
【図５】本発明の実施形態２に係るデータベースアクセス方法を説明するフローチャートである。
【図６】従来技術について説明する図であり、（ａ）は、構造体データの定義の例を示し、（ｂ）は、当該構造体データによって操作されるテーブルの例を示す。
【図７】参考技術について説明する図であり、（ａ）は、構造体データの定義の例を示し、（ｂ）は、当該構造体データによって操作されるテーブルの例を示す。
【発明を実施するための形態】
【００３０】
〔実施形態１〕
本発明は、一実施形態（実施形態１）において、データベースにアクセス可能なプログラマブルロジックコントローラを提供する。図１は、実施形態１に係るプログラマブルロジックコントローラ１００の概略構成を示すブロック図である。図１に示すように、プログラマブルロジックコントローラ１００は、データベース２００に接続されている。データベース２００は、本実施形態では、ＤＢＭＳ（database management system）を備えたＤＢサーバ内に構築されているが、これに限定するものではない。
【００３１】
なお、本実施形態では、プログラマブルロジックコントローラ１００と、データベース２００を格納するＤＢサーバとは、ネットワークを介して接続されている。ただし、本発明はこれに限定されず、プログラマブルロジックコントローラ１００と、データベース２００を格納するＤＢサーバとが直接有線または無線通信を介して接続されていてもよい。また、変形例において、プログラマブルロジックコントローラ１００内に、データベース２００を格納するようにしてもよい。
【００３２】
プログラマブルロジックコントローラ１００は、コンピュータシステムであり、ユーザプログラムを繰り返し実行するように構成されている。特に、プログラマブルロジックコントローラ１００は、予め設定された時間（サイクルタイム）に従って、ユーザプログラムを周期的に実行することができる。プログラマブルロジックコントローラ１００は、プログラマブルロジックコントローラ１００内のメモリ領域の情報を読み書きして、ユーザプログラムに示される命令を順に実行する。プログラマブルロジックコントローラ１００は、入出力機能を備えており、センサ出力などプログラマブルロジックコントローラ１００の外部からデータを受け付けて、データを蓄積する。プログラマブルロジックコントローラ１００は、蓄積されたデータをＤＢサーバへ送信する。
【００３３】
図１に示すように、プログラマブルロジックコントローラ１００は、実行部（生成部）１１０、データベースアクセス部１２０および記憶部１３０を備えている。実行部１１０は、ＯＳと、システムプログラムと、ユーザプログラムとを実行する。ただし、ＯＳおよびシステムプログラムのうち、データベースアクセスに関する部分は、データベースアクセス部１２０が実行する。
【００３４】
ＯＳは、プログラマブルロジックコントローラ１００の資源を管理するオペレーティングシステムであり、タスクのスケジューリングを行う。システムプログラムは、ＯＳ上で動作し、ラダープログラムの制御などの機能を発揮する。システムプログラムは、例えば、シーケンス命令プログラムと、入出力処理プログラムと、スケジューラとを含んでいる。シーケンス命令プログラムは、プログラマブルロジックコントローラ１００内のメモリ領域の情報を読み書きしながら、ユーザプログラムの命令を順に実行する。入出力処理プログラムは、プログラマブルロジックコントローラ１００が備える複数の入出力機能によるプログラマブルロジックコントローラ１００へのデータ入力およびプログラマブルロジックコントローラ１００からのデータ出力を制御する。各入出力機能は、それぞれメモリのアドレスと割りつけられている。各入出力機能に対応するメモリに保持されるデータは、サイクルタイムに従って、プログラマブルロジックコントローラ１００の外部のデータと一括して交換される。スケジューラは、プログラマブルロジックコントローラ１００で実行するタスクの優先度に基づいて、タスクのスケジューリングを行う。
【００３５】
そして、実行部１１０は、ユーザプログラムを実行することにより、外部のセンサ等から取得したデータに基づいてデータベース２００に登録すべき単一のレコードを規定する構造体データを生成すると共に、生成した複数の構造体データを含むデータ群を生成する。そして、実行部１１０は、データベース２００にアクセスするために、生成したデータ群を指定してデータベースアクセス部１２０を呼び出す。これは例えば、制御プログラム内において、所定の関数またはメソッドが呼ばれることによって実行され得る。呼び出されたデータベースアクセス部１２０は、データベースアクセスの関するシステムプログラムを実行することにより、複数の構造体データを含むデータ群を参照して、ＳＱＬ文を実行し、データベース２００へのアクセスを実現する。
【００３６】
また、一変形例において、実行部１１０がデータ群を生成したときに、データベースアクセス部１２０が自動的に呼び出されるようになっていてもよい。
【００３７】
図２の（ａ）は、構造体データおよびデータ群の定義の一例を示す図である。図２の（ａ）に示す例では、単一のレコードを規定する構造体データは、メンバ「ＩＤ」、メンバ「ＰＴＩＭＥ」、メンバ「ＤＡＴＡ１」およびメンバ「ＤＡＴＡ２」を有する型名「ＲＥＣＯＲＤ」の構造体データであり、複数の構造体データを含むデータ群は、型名「ＲＥＣＯＲＤ」の構造体データの配列「ＲＥＣＯＲＤＳ」、および、配列「ＲＥＣＯＲＤＳ」に格納された構造体データの個数を示す個数「ＲＥＣＯＲＤＮＵＭ」からなる型名「ＲＥＣＯＲＤＬＩＳＴ」のデータ群「ＲＥＳＵＬＴＳ」である。
【００３８】
なお、本明細書において、「構造体データ」とは、意味づけされた複数のデータのかたまりを意味する。
【００３９】
図２の（ｂ）は、データ群「ＲＥＳＵＬＴＳ」によって操作されるテーブルの一例を示す図である。図２の（ｂ）に示す「実績格納テーブル」は、フィールド「ＩＤ」、フィールド「ＰＴＩＭＥ」、フィールド「ＤＡＴＡ１」およびフィールド「ＤＡＴＡ２」を有しており、これらの各フィールドと、構造体データの各メンバが一対一対応している。ゆえに、構造体データによって、単一のレコードが規定される。
【００４０】
実行部１１０が構造体データおよびデータ群を生成する方法は特に限定されないが、一実施形態において、実行部１１０は、周期的または非周期的に構造体データを生成し、生成した構造体データを逐次配列「ＲＥＣＯＲＤＳ」に格納することによって、データ群「ＲＥＳＵＬＴＳ」を生成するものであってもよい。あるいは、実行部１１０は、生成した構造体データを一時記憶に蓄積しておき、構造体データが所定数蓄積されたときに、それらをまとめて配列「ＲＥＣＯＲＤＳ」に格納することによって、データ群「ＲＥＳＵＬＴＳ」を生成するものであってもよい。
【００４１】
なお、図２の（ａ）に示す例では、データ群は、複数の構造体データが配列された配列データと、複数の構造体データの個数を示す個数データとを含んでいるが、これに限定されず、データ群は、複数の構造体データを含むものであればよい。ただし、データ群がこのような構造をとっていることにより、後述するように、データベースアクセス部１２０がＳＱＬ文を好適に作成することができると共に、実行部１１０も、生成した構造体データを配列に格納すればよいだけなので、生成した複数の構造体データを容易にデータ群に含めることができる。
【００４２】
また、配列データは、図２の（ａ）に示す例のように固定長配列であってもよいし、不定長配列であってもよい。
【００４３】
本実施形態において、構造体データおよびデータ群を生成する制御プログラムは、ユーザが所望の目的に合わせて入力することができるユーザプログラムである。
【００４４】
ユーザは、例えば、プログラマブルロジックコントローラ１００に接続可能なパーソナルコンピュータ上のプログラミングツールによってユーザプログラムを作成し、プログラマブルロジックコントローラ１００に入力することにより、プログラマブルロジックコントローラ１００にユーザプログラムを設定することができる。
【００４５】
ここで、プログラミングツールは、ユーザプログラムを作成すると共に、当該ユーザプログラムにおいて使用される構造体データの定義を示す定義データを生成する。そして、ユーザプログラムと共に定義データをプログラマブルロジックコントローラ１００に入力するようになっている。プログラマブルロジックコントローラ１００に入力されたユーザプログラムおよび定義データは、記憶部１３０に記憶される。
【００４６】
定義データの形式は特に限定されないが、例えば、図２の（ａ）に示されるようなデータであり、構造体データの変数名（図２の（ａ）の例では、「ＲＥＳＵＬＴＳ」）および各メンバ名（図２の（ａ）の例では、「ＩＤ」、「ＰＴＩＭＥ」、「ＤＡＴＡ１」および「ＤＡＴＡ２」）を規定するものであり得る。また、定義データは、構造体データの変数名と、データベース２００上のテーブル名との対応関係、および、構造体データの各メンバ名と、データベース２００上のテーブルの名フィールド名との対応関係を規定するマッピングデータを更に含んでいてもよい。以下の説明では、構造体データの変数名「ＲＥＳＵＬＴＳ」が、テーブル名「実績格納テーブル」に対応することを示すマッピングデータが含まれているものとする。
【００４７】
なお、一変形例において、構造体データおよびデータ群を生成する制御プログラムは、システムプログラムであってもよい。その場合、当該システムプログラムにおいて使用される構造体データの定義を示す定義データを、予め記憶部１３０に記憶させておけばよい。
【００４８】
以上のように、構造体データは、データベース２００のレコードの各フィールドに対応するメンバを含んでいる。ユーザプログラムは、データベース２００に登録すべきレコードに対応する構造体データを生成する。定義データは、構造体データに含まれる各メンバの値が、レコードのどのフィールドに対応するかを規定している。データベースアクセス部１２０は、構造体データおよび定義データを参照して、データベース２００に登録すべきレコードの各フィールドの値を取得する。これにより、データベースアクセス部１２０は、データベース２００に所望のレコードを登録することができる。
【００４９】
（データベースアクセス部）
データベースアクセス部１２０は、実行部１１０によって、データ群を指定した呼び出しがなされたとき、または、実行部１１０によってデータ群が生成されたときに、データベースへのアクセスを実行する。
【００５０】
データベースアクセス部１２０は、まず、実行部１１０が生成したデータ群に含まれる複数の構造体データおよび記憶部１３０に記憶された定義データを参照して、複数のレコードを操作するＳＱＬ文を生成する。ＳＱＬ文の生成の詳細について一例を挙げて説明すれば以下の通りである。
【００５１】
データベースアクセス部１２０は、呼び出された態様（例えば、ユーザプログラムがどの関数またはメソッドを呼び出したのか）によって、生成するＳＱＬ文の種類（例えば、レコードを挿入するＩＮＳＥＲＴ要求、レコードを更新するＵＰＤＡＴＥ要求等）を決定する。
【００５２】
データベースアクセス部１２０は、続いて、決定した種類のＳＱＬ文の雛形を、定義データを参照して作成する。例えば、ＩＮＳＥＲＴ要求のＳＱＬ文であれば、”ＩＮＳＥＲＴ  ＩＮＴＯ  ＜α＞（＜β＞）  ＶＡＬＵＥ（＜γ＞）”という文字列において、＜α＞の位置に、定義データから抽出した構造体データの変数名を挿入し、＜β＞の位置に、定義データから抽出した構造体データの各メンバ名を列挙することによって、ＳＱＬ文の雛形を作成することができる。
【００５３】
また、定義データに、構造体データの変数名と、データベース２００上のテーブル名との対応関係、および、構造体データの各メンバ名と、データベース２００上のテーブルの名フィールド名との対応関係を規定するマッピングデータが含まれている場合には、構造体データの変数名に替えて、マッピングデータにおいて対応付けられたテーブル名を挿入し、構造体データの各メンバ名に替えて、マッピングデータにおいて対応付けられた各フィールド名を挿入するようにしてもよい。これにより、例えば、図２の（ａ）に示す例であれば、”ＩＮＳＥＲＴ  ＩＮＴＯ  実績格納テーブル（ＩＤ，  ＰＴＩＭＥ，  ＤＡＴＡ１，  ＤＡＴＡ２）  ＶＡＬＵＥ  （＜γ＞）”のようなＳＱＬ文の雛形を生成することができる。
【００５４】
なお、データベースアクセス部１２０は、ＳＱＬ文の雛形を、呼び出される度に作成するようにしてもよいし、一度作成したら、記憶部１３０に記憶させておいて、再利用するようにしてもよい。
【００５５】
そして、データベースアクセス部１２０は、データ群から最初の構造体データを抽出し、抽出した構造体データの各メンバの値を、ＳＱＬ文の雛形の＜γ＞の位置に挿入することによってＳＱＬ文を作成する。これをデータ群に含まれる全ての構造体データに対して行い、複数行のＳＱＬ文を作成する。
【００５６】
あるいは、データベース２００のＤＢＭＳが、複数レコードの操作のための特別な構文に対応している場合には、当該構文に適合するようにＳＱＬ文の雛形を作成し、データ群から抽出した複数の構造体データの各メンバの値を挿入するようにしてもよい。
【００５７】
例えば、一部のＤＢＭＳでは、”ＩＮＳＥＲＴ  ＩＮＴＯ  ＜α＞（＜β＞）  ＶＡＬＵＥＳ  （γ１），（γ２），…（γｎ）”（（γ１），（γ２），…（γｎ）は、それぞれ各構造体データに対応）といった構文により、一行のＳＱＬ文により複数レコードを操作することができること、および、他のＤＢＭＳでは、”ＢＵＬＫ  ＩＮＳＥＲＴ”処理により、一度に複数レコードの登録が可能であること、を当業者は容易に理解する。
【００５８】
なお、本実施形態では、データ群は、複数の構造体データが配列された配列データと、複数の構造体データの個数を示す個数データとを含んでいる。そのため、データベースアクセス部１２０は、データ群に含まれる構造体データの個数を認識することができるので、ＳＱＬ文の雛形からＳＱＬ文を作成するステップの繰り返し制御を好適に行うことができる。また、複数の構造体データが、配列データに格納されるため、データベースアクセス部１２０は、容易に個々の構造体データを読み出すことができる。
【００５９】
以上により、データベースアクセス部１２０は、データ群に含まれる複数の構造体データの各々に対応する複数のレコードを操作するためのＳＱＬ文を作成することができる。
【００６０】
そして、データベースアクセス部１２０は、生成したＳＱＬ文を実行（データベース２００のＤＢＭＳにＳＱＬ文を送信するとともに送信したＳＱＬ文に対応するレスポンスを受信することを含む。）することにより、データベース２００へのアクセスを実行し、その結果、図２の（ｂ）に示す「実績格納テーブル」に、複数のレコードを追加等することができる。
【００６１】
以上のように、データベースアクセス部１２０は、データ群からＳＱＬ文を生成することができるため、プログラマブルロジックコントローラ１００によれば、ＳＱＬの記述なしにデータベース２００を操作することができる。また、実行部１１０が生成するデータ群には、各々が単一のレコードを規定する構造体データが複数含まれている。ゆえに、データベースアクセス部１２０は、当該データ群を参照することにより、複数のレコードを認識することができる。そして、データベースアクセス部１２０は、構造体データの定義データを参照することにより、レコードの定義を認識することができる。これにより、データベースアクセス部１２０は、データ群に含まれる複数の構造体データの各々に対応する複数のレコードを操作するＳＱＬ文を生成することができ、当該ＳＱＬ文を実行することにより、複数のレコードを操作することができる。これにより、プログラマブルロジックコントローラ１００によれば、ＳＱＬの記述なしにデータベースを操作する技術において、簡易な仕組みで、複数のレコードをまとめて操作することができる。
【００６２】
特に、データベースアクセス部１２０がＳＱＬ文を実行するために掛かる時間よりも短い間隔で、実行部１１０が構造体データを生成する場合であっても、プログラマブルロジックコントローラ１００は、複数の構造体データについてまとめて処理することができるため、首尾良く処理を行うことができる。
【００６３】
すなわち、データベースアクセス部１２０がＳＱＬ文を実行するために掛かる時間よりも短い間隔で、実行部１１０が構造体データを生成する場合、従来技術のように、都度、１つのレコードのデータを構造体にセットし、データベースを操作していたのでは、データベースの操作が追い着かない可能性がある。しかし、プログラマブルロジックコントローラ１００によれば、複数のレコードをまとめて操作することができるため、データベースアクセス部１２０がＳＱＬ文を実行するために掛かる時間よりも短い間隔で、実行部１１０が構造体データを生成するとしても、首尾良く、生成した構造体データに対応するデータベース２００の操作を行うことができる。
【００６４】
なお、データベースアクセス部１２０がＳＱＬ文を実行するために掛かる時間とは、データベースアクセス部１２０からデータベース２００へのアクセスに要する時間を意味する。本実施形態においては、プログラマブルロジックコントローラ１００とデータベース２００とは離れた場所にあり、ネットワークを介してつながっているため、プログラマブルロジックコントローラ１００からデータベース２００へのアクセスに時間が掛かる。そのため、データベースアクセス部１２０がＳＱＬ文を実行するために掛かる時間よりも短い間隔で、実行部１１０が構造体データを生成することが生じ易い。なお、プログラマブルロジックコントローラ１００とデータベース２００とが直接接続されている構成またはプログラマブルロジックコントローラ１００内にとデータベース２００が備えられている構成であっても、データベースアクセス部１２０がＳＱＬ文を実行するために掛かる時間は、一般に、プログラマブルロジックコントローラ１００の本来の処理（制御処理のサイクル）に比べれば時間が掛かる。そのため、データベースアクセス部１２０がＳＱＬ文を実行するために掛かる時間よりも短い間隔で、実行部１１０が構造体データを生成することが生じ得る。したがって、何れの構成においても本発明は有効である。
【００６５】
プログラマブルロジックコントローラ１００は、図示していないが、オペレーションシステムを実行するＯＳ実行部、外部のセンサ等との入出力のためのインターフェース部、データベース２００との通信のための通信インターフェース部、電源部等を更に備えていてもよい。
【００６６】
また、記憶部１３０には、データベースアクセス部１２０が、データベースアクセスの結果ログを記憶するようになっていてもよく、データベースアクセス部１２０がデータベースアクセスに失敗した場合に、一時的に送信データを記憶するようになっていてもよい。また、変形例において、記憶部１３０には、データベース２００を記憶させるようにしてもよい。
【００６７】
（データベースアクセス方法）
図３は、本実施形態に係るデータベースアクセス方法を説明するフローチャートである。本データベースアクセス方法は、データベース２００にアクセス可能なプログラマブルロジックコントローラ１００によって実行される。
【００６８】
プログラマブルロジックコントローラ１００は、まず、単一のレコードを規定する構造体データを生成すると共に、生成した複数の前記構造体データを含むデータ群を生成する（生成ステップ）。詳細には、ステップＳ１において、実行部１１０が、単一のレコードを規定する構造体データを生成し、ステップＳ２において、実行部１１０が、生成した複数の構造体データを含むデータ群を生成する。
【００６９】
次に、プログラマブルロジックコントローラ１００は、生成ステップにおいて生成したデータ群に含まれる複数の構造体データ、および、構造体データの定義を示す定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行する（データベースアクセスステップ）。詳細には、ステップＳ３において、データベースアクセス部１２０が、実行部１１０が生成したデータ群に含まれる複数の構造体データ、および、記憶部１３０に記憶されている定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、ステップＳ４において、データベースアクセス部１２０が、ＳＱＬ文を実行する。
【００７０】
以上により、ＳＱＬの記述なしにデータベースを操作する技術において、簡易な仕組みで、複数のレコードをまとめて操作することができる。すなわち、（１）実行部１１０からデータベースアクセス部１２０にデータを渡す時に、従来は１レコード分ずつ渡しているのが、まとまったデータ群として渡すことができると共に、（２）データベースアクセス部１２０からデータベース２００（のＤＢＭＳ）まで、複数の命令で実行していたデータベース操作命令がまとめて一括で行えるため、効率化を図ることができる。
【００７１】
（変形例）
なお、プログラマブルロジックコントローラ１００は、一変形例において、特許文献１に記載の技術のように、実行部１１０が、構造体データを生成し、データベースアクセス部１２０が、構造体データおよび当該構造体データの定義データを参照して、ＳＱＬ文を生成して、単一のレコードを操作する方法を併せて実施するようにしてもよい。例えば、実行部１１０が構造体データを生成する間隔が短い場合には、本実施形態に係るデータベースアクセス方法を実施し、実行部１１０が構造体データを生成する間隔が長い場合には、従来技術に係る方法を実施するようにしてもよい。
【００７２】
〔実施形態２〕
また、本発明は、他の実施形態（実施形態２）において、プログラマブルロジックコントローラに接続された、データベースにアクセス可能なデータ収集装置を提供する。図４は、実施形態２に係るデータ収集装置３００の概略構成を示すブロック図である。図４に示すように、データ収集装置３００は、プログラマブルロジックコントローラ４００およびデータベース２００に接続されている。データベース２００は、実施形態１と同じ機能を有するものである。プログラマブルロジックコントローラ４００は、外部のセンサ等からデータを取得し、データ収集装置３００に出力するようになっているものである。
【００７３】
データ収集装置３００は、コンピュータ、例えば、ＩＰＣ（Industrial Personal Computer）であり、生成部３１０、データベースアクセス部３２０、記憶部３３０および取得部３４０を備えている。
【００７４】
取得部３４０は、プログラマブルロジックコントローラ４００から、プログラマブルロジックコントローラ４００が外部のセンサ等から取得したデータを取得し、生成部３１０に出力する。取得部３４０が、プログラマブルロジックコントローラ４００からデータを取得するタイミングは特に限定されず、周期的または非周期的に実行することができる。また、プログラマブルロジックコントローラ４００側から、イベント的に取得部３４０にデータを通知する構成であってもよい。
【００７５】
生成部３１０は、取得部３４０が取得したデータに基づいてデータベース２００に登録すべき単一のレコードを規定する構造体データを生成すると共に、生成した複数の構造体データを含むデータ群を生成する。そして、生成部３１０は、データベース２００にアクセスするために、生成したデータ群を指定してデータベースアクセス部３２０を呼び出す。
【００７６】
生成部３１０が、データ群を生成する方法およびデータベースアクセス部３２０を呼び出す方法は、実施形態１におけるプログラマブルロジックコントローラ１００の実行部１１０と同様に行うことができる。すなわち、生成部３１０は、サイクルタイムに従って、制御プログラムを実行し、データ群の生成、および、データベースアクセス部３２０の呼び出しを行ってもよい。
【００７７】
また、記憶部３３０には、実施形態１におけるプログラマブルロジックコントローラ１００の記憶部１３０と同様に、定義データを記憶している。
【００７８】
また、データベースアクセス部３２０が、ＳＱＬ文を生成し、実行する方法は、実施形態１におけるプログラマブルロジックコントローラ１００のデータベースアクセス部１２０と同様に行うことができる。
【００７９】
図５は、本実施形態に係るデータベースアクセス方法を説明するフローチャートである。本データベースアクセス方法は、プログラマブルロジックコントローラ４００に接続された、データベース２００にアクセス可能なデータ収集装置３００によって実行される。
【００８０】
データ収集装置３００は、まず、プログラマブルロジックコントローラ４００からデータを取得する（取得ステップ）。詳細には、ステップＳ１１において、取得部３４０が、プログラマブルロジックコントローラ４００から、プログラマブルロジックコントローラ４００が外部のセンサ等から取得したデータを取得する。
【００８１】
次に、データ収集装置３００は、取得ステップにおいて取得したデータから単一のレコードを規定する構造体データを生成すると共に、生成した複数の構造体データを含むデータ群を生成する（生成ステップ）。詳細には、ステップＳ１２において、生成部３１０が、取得部３４０がプログラマブルロジックコントローラ４００から取得したデータから単一のレコードを規定する構造体データを生成し、ステップＳ１３において、生成部３１０が、生成した複数の構造体データを含むデータ群を生成する。
【００８２】
次に、データ収集装置３００は、生成ステップにおいて生成したデータ群に含まれる複数の構造体データ、および、構造体データの定義を示す定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、当該ＳＱＬ文を実行する（データベースアクセスステップ）。詳細には、ステップＳ１４において、データベースアクセス部３２０が、生成部３１０が生成したデータ群に含まれる複数の構造体データ、および、記憶部３３０に記憶されている定義データを参照して、複数のレコードを操作するＳＱＬ文を生成し、ステップＳ１５において、データベースアクセス部３２０が、ＳＱＬ文を実行する。
【００８３】
以上により、ＳＱＬの記述なしにデータベースを操作する技術において、簡易な仕組みで、複数のレコードをまとめて操作することができる。
【００８４】
〔ソフトウェアによる実現例〕
プログラマブルロジックコントローラ１００およびデータ収集装置３００の制御ブロック（特に、実行部１１０、データベースアクセス部１２０、生成部３１０、データベースアクセス部３２０および取得部３４０）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。
【００８５】
後者の場合、プログラマブルロジックコントローラ１００およびデータ収集装置３００は、各機能を実現するソフトウェアであるデータベースアクセスプログラムの命令を実行するＣＰＵ、上記データベースアクセスプログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）などを備えている。そして、コンピュータ（またはＣＰＵ）が上記データベースアクセスプログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記データベースアクセスプログラムは、該データベースアクセスプログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記データベースアクセスプログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【００８６】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【００８７】
本発明は、プログラマブルロジックコントローラおよびその周辺機器に利用することができる。
【符号の説明】
【００８８】
１００  プログラマブルロジックコントローラ
１１０  実行部（生成部）
１２０  データベースアクセス部
１３０  記憶部
２００  データベース
３００  データ収集装置
３１０  生成部
３２０  データベースアクセス部
３３０  記憶部
３４０  取得部
４００  プログラマブルロジックコントローラ
【図１】
2016194808.tif 000003
【図２】
2016194808.tif 000004
【図３】
2016194808.tif 000005
【図４】
2016194808.tif 000006
【図５】
2016194808.tif 000007
【図７】
2016194808.tif 000008
【図６】
2016194808.tif 000009