(57)【要約】  データベース操作のためのＳＱＬの記述をしなくとも、データベースへの操作を含むプログラミングを可能とする技術を提供する。ＤＢＭＳ（２２）へアクセス可能なＰＬＣ（３０）は、構造体型の変数を含むユーザプログラム（３８）および構造体型の定義を示す定義情報（３２）を記憶する。シーケンス命令プログラム（３４）は、ユーザプログラム（３８）の命令を順次、実行し、ＤＢＭＳ（２２）へアクセスするためにＤＢアクセス処理プログラム（３５）を呼び出す。ＤＢアクセス処理プログラム（３５）は、定義情報（３２）を読み出して、読み出した定義情報（３２）に基づいて、ユーザプログラム（３８）の実行によるＤＢＭＳ（２２）へのアクセス時のＳＱＬ文を生成する。ＤＢアクセス処理プログラム（３５）は、生成されたＳＱＬ文をＤＢサーバ（２０）へ送信することにより、ＳＱＬ文を実行する。
2013191275.tif 000002
【特許請求の範囲】
【請求項１】
データベースシステムへアクセス可能な制御装置であって、
構造体型の変数を含むユーザプログラム、および、前記ユーザプログラムに含まれる前記構造体型の定義を示す定義情報を記憶するための記憶部と、
前記定義情報を読み出して、読み出した当該定義情報に基づいて、前記ユーザプログラムの実行による前記データベースシステムへのアクセス時のＳＱＬ文を生成する生成部と、
生成されるＳＱＬ文を前記データベースシステムへ送信することにより前記ＳＱＬ文を実行する実行部とを含む、制御装置。
【請求項２】
前記生成部は、
前記実行されるユーザプログラムに対応する前記定義情報の定義に示される構造体タグ名およびメンバ名を抽出し、抽出した構造体タグ名およびメンバ名を、所定の変換規則に従って前記データベースシステムへアクセスするためのテーブル名およびフィールド名として決定することで前記ＳＱＬ文を生成する、請求項１に記載の制御装置。
【請求項３】
前記生成部は、
前記定義情報に基づいて、前記データベースシステムへアクセスするためのテーブル名およびフィールド名が特定された、値を含まないＳＱＬ文を生成し、
前記実行部は、前記値を含まないＳＱＬ文を予め前記データベースシステムへ送信し、前記ユーザプログラムの命令により前記構造体型の変数のメンバの値を抽出し、抽出された値を前記データベースシステムへ送信することにより、前記ＳＱＬ文を実行する、請求項１に記載の制御装置。
【請求項４】
前記記憶部は、前記定義情報に示される、構造体タグ名およびメンバ名の定義と、前記データベースシステムへアクセスするためのテーブル名およびフィールド名との変換規則を示すマッピング情報を記憶しており、
前記生成部は、前記定義情報に示される構造体タグ名およびメンバ名と、前記マッピング情報に示される変換規則とに基づいて、前記ＳＱＬ文を生成する、請求項１に記載の制御装置。
【請求項５】
前記生成部は、
前記マッピング情報に示されるテーブル名およびフィールド名に基づいて、値を含まないＳＱＬ文を生成し、
前記実行部は、前記値を含まないＳＱＬ文を予め前記データベースシステムへ送信し、前記ユーザプログラムの命令により前記構造体型の変数のメンバの値を抽出し、抽出された値を前記データベースシステムへ送信することにより、前記ＳＱＬ文を実行する、請求項４に記載の制御装置。
【請求項６】
前記記憶部は、前記定義情報に示される、構造体タグ名およびメンバ名の定義と、前記データベースシステムへアクセスするためのテーブル名およびフィールド名との変換規則を示すマッピング情報を記憶するように構成され、
前記ユーザプログラムは、前記定義情報に基づき前記マッピング情報を生成すべき旨の命令を含み、
前記生成部は、
前記ユーザプログラムに含まれる、前記マッピング情報を生成すべき旨の命令を実行することで、前記定義情報に基づいて前記マッピング情報を生成し、
前記定義情報に示される構造体タグ名およびメンバ名と、前記生成される前記マッピング情報に示される前記変換規則とに基づいて、前記ＳＱＬ文を生成する、請求項１に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックコントローラ（ＰＬＣ：Programmable  Logic  Controller）などの制御装置に関し、特に、データベースシステムへのアクセスを容易にするための技術に関する。
【背景技術】
【０００２】
ＰＬＣなどの制御装置は、工場などの自動機械の制御などに用いられ、複数の入出力機能を有して、例えば、センサ等から出力される値を逐次、読みこんでデータを保持する。【０００３】
また、近年、制御装置は、データベースシステムと接続して、制御装置で保持しているデータを、データベースシステムに蓄積する。これにより、データベースに接続する情報処理装置同士でのデータの共有を容易にしたり、各種データを収集して、データの集計や解析などを容易にしたりすることができる。例えば、特開２００７−８０２８６号公報（下記の特許文献１）は、ＰＬＣが持つＩ／Ｏデータをリアルタイムで上位コンピュータに伝達することができるデータ収集装置を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−８０２８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＰＬＣ等の制御装置の制御プログラミングを行う技術者は、構造体など、制御プログラミングで用いられるデータ構造には習熟している場合が多い。一方、データベースの操作については、ＳＱＬ文の記述などが必要となり、技術者にとって煩わしく、また、データベースの操作に習熟していない場合もある。通常、データベース運用のノウハウは、データベースを含む上位のコンピュータシステムのエンジニアの方が習熟している。【０００６】
そこで、本発明は、ＰＬＣ等の制御装置の制御プログラミングにおいて、技術者にとって、データベースへのアクセスを含むプログラミングを容易にする技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
一実施形態に従う、データベースシステムへアクセス可能な制御装置は、構造体型の変数を含むユーザプログラム、および、ユーザプログラムに含まれる構造体型の定義を示す定義情報を記憶するための記憶部と、定義情報を読み出して、読み出した定義情報に基づいて、ユーザプログラムの実行によるデータベースシステムへのアクセス時のＳＱＬ文を生成する生成部と、生成されるＳＱＬ文をデータベースシステムへ送信することによりＳＱＬ文を実行する実行部とを含む。【０００８】
好ましくは、生成部は、実行されるユーザプログラムに対応する定義情報の定義に示される構造体タグ名およびメンバ名を抽出し、抽出した構造体タグ名およびメンバ名を、所定の変換規則に従ってデータベースシステムへアクセスするためのテーブル名およびフィールド名として決定することでＳＱＬ文を生成することとしてもよい。【０００９】
好ましくは、生成部は、定義情報に基づいて、データベースシステムへアクセスするためのテーブル名およびフィールド名が特定された、値を含まないＳＱＬ文を生成し、実行部は、値を含まないＳＱＬ文を予めデータベースシステムへ送信し、ユーザプログラムの命令により構造体型の変数のメンバの値を抽出し、抽出された値をデータベースシステムへ送信することにより、ＳＱＬ文を実行することとしてもよい。【００１０】
好ましくは、記憶部は、定義情報に示される、構造体タグ名およびメンバ名の定義と、データベースシステムへアクセスするためのテーブル名およびフィールド名との変換規則を示すマッピング情報を記憶しており、生成部は、定義情報に示される構造体タグ名およびメンバ名と、マッピング情報に示される変換規則とに基づいて、ＳＱＬ文を生成することとしてもよい。【００１１】
好ましくは、生成部は、マッピング情報に示されるテーブル名およびフィールド名に基づいて、値を含まないＳＱＬ文を生成し、実行部は、値を含まないＳＱＬ文を予めデータベースシステムへ送信し、ユーザプログラムの命令により構造体型の変数のメンバの値を抽出し、抽出された値をデータベースシステムへ送信することにより、ＳＱＬ文を実行することとしてもよい。【００１２】
好ましくは、記憶部は、定義情報に示される、構造体タグ名およびメンバ名の定義と、データベースシステムへアクセスするためのテーブル名およびフィールド名との変換規則を示すマッピング情報を記憶するように構成され、ユーザプログラムは、定義情報に基づきマッピング情報を生成すべき旨の命令を含み、生成部は、ユーザプログラムに含まれる、マッピング情報を生成すべき旨の命令を実行することで、定義情報に基づいてマッピング情報を生成し、定義情報に示される構造体タグ名およびメンバ名と、生成されるマッピング情報に示される変換規則とに基づいて、ＳＱＬ文を生成することとしてもよい。
【発明の効果】
【００１３】
上記の一実施形態によると、制御装置の制御プログラミングを行う技術者は、データベース操作のためのＳＱＬ文を意識せずとも、構造体型のデータ構造を用いて、データベースへのアクセスを含むプログラミングをすることができ、プログラミングが容易になる。【００１４】
この発明の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解されるこの発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１５】
【図１】本実施形態におけるＰＬＣシステム全体の構成を示す図である。
【図２】ＰＣ１０の機能を示すブロック図である。
【図３】ＤＢサーバ２０の機能を示すブロック図である。ＤＢサーバ２０は、大容量の記憶装置などを備えるコンピュータシステムである。
【図４】ＰＬＣ３０の機能を示すブロック図である。
【図５】データベーステーブル２６を示す図である。
【図６】ＤＢアクセス処理プログラム３５が、ＳＱＬ文を作成し実行する処理を示すフローチャートである。
【図７】ユーザプログラムの一例を示す図である。
【図８】ＳＱＬ文の例を示す図である。
【図９】実施の形態２におけるＰＬＣ３０の構成を示す機能ブロック図である。
【図１０】マッピング情報４１の例を示す図である。
【図１１】実施の形態２におけるＤＢアクセス処理プログラム３５の動作を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００１７】
＜１  実施の形態１＞
＜１．１  実施の形態１の構成＞
まず、本実施の形態に係る制御システムのシステム構成について説明する。本実施の形態においては、機械や設備などの制御対象を制御するプログラマブルコントローラ（ＰＬＣ）を制御装置の典型例として説明を行う。ただし、本発明に係る制御装置は、ＰＬＣに限られることなく、各種の制御装置へ適用可能である。
【００１８】
図１は、本実施形態におけるＰＬＣシステム全体の構成を示す図である。
まず概要を説明する。図１に示すように、ＰＬＣシステムは、ＰＣ（Personal  Computer）１０と、ＤＢ（Database）サーバ２０と、ＰＬＣ３０と、スイッチングハブ４０とを含む。ＰＣ１０は、ＰＬＣ３０で動作させるユーザプログラムをユーザが作成するための情報処理装置である。ＤＢサーバ２０は、データベースを管理するため、ＤＢＭＳ（database  management  system）として機能するサーバである。
【００１９】
ユーザプログラムは、ＰＬＣ３０の利用者によって作成される。ユーザは、例えばＰＣ１０を操作することにより、データベースへのアクセス命令を含むプログラム（ソースプログラム）を作成することができる。ＰＣ１０は、ソースプログラムを、ＰＬＣ３０において実行可能な形式に変換し、変換されたユーザプログラムをＰＬＣ３０へ送信する。ＰＬＣ３０は、ユーザプログラムを実行し、ユーザプログラムに含まれるアクセス命令に従って、ＤＢサーバ２０にアクセスすることができる。
【００２０】
ＰＬＣ３０は、スイッチングハブ４０と接続されており、スイッチングハブ４０を経由してＰＣ１０およびＤＢサーバ２０と接続される。ＰＬＣ３０は、センサ出力などを外部から受け付けており、データを蓄積する。ＰＬＣ３０は、蓄積されたデータを、後述するＤＢアクセス処理プログラム３５の処理により、ＤＢサーバ２０へ送信する。図１に示す例では、ＰＬＣシステムが複数のＰＬＣ３０を含む例を示しており、ＰＬＣ３０それぞれの主要な構成は同一である。スイッチングハブ４０は、ＰＣ１０など複数の機器と接続され、各機器間で送受信されるデータを転送する。
【００２１】
次に、各機器の構成の詳細について説明する。
＜１．２  各機器の構成の詳細＞
図２は、ＰＣ１０の機能を示すブロック図である。
【００２２】
ＰＣ１０は、ＭＣＵ（Micro  Control  Unit）、ＲＯＭ（Read  Only  Memory）、ＲＡＭ（Random  Access  Memory）等を備えるコンピュータシステム（情報処理装置）である。図２に示すように、ＰＣ１０は、プログラミングツール１２の機能を発揮する。プログラミングツール１２は、ＰＬＣ３０を動作させるためのユーザプログラムをユーザが作成するための機能をＰＣ１０に発揮させるプログラムである。プログラミングツール１２は、データ型定義部１４と、プログラミング機能１６との機能を含む。ユーザがプログラミングツール１２により作成したユーザプログラムは、ＰＬＣ３０へ送信され、ＰＬＣ３０で実行される。
【００２３】
ユーザプログラムは、構造体型の変数を含む。データ型定義部１４は、構造体型を定義するためのソフトウェアである。構造体型は、構造体タグ名や１つ以上のメンバ名で構成される。データ型定義部１４は、構造体タグ名や、これら構造体のメンバ名やそのデータ型を定義する。データ型定義部１４は、例えば、工場等の生産管理において用いられる各指標を示すために、構造体タグ名を「ProductionTable」とし、この構造体の各メンバを、生産される製品の名称を示す「Name」（データ型はString）、製品のロット番号を管理するための「LotNo」（データ型はInteger）、製品の製造の成功数を示す「SuccessCount」（データ型はInteger）、製品の製造の失敗数を示す「FailedCount」（データ型はInteger）とする構造体型を定義する。データ型定義部１４は、このように構造体型を定義して、その定義内容を示す定義情報３２を生成する。プログラミング機能１６は、ユーザによるプログラム作成を支援するためのソフトウェアである。ＰＣ１０は、これらソフトウェアをＰＣ１０において実行することにより、データ型定義部１４およびプログラミング機能１６の機能を発揮する。
【００２４】
図３は、ＤＢサーバ２０の機能を示すブロック図である。ＤＢサーバ２０は、大容量の記憶装置などを備えるコンピュータシステムである。
【００２５】
ＤＢサーバ２０は、データベースへの読み出しおよび書き込みを管理するＤＢＭＳ２２の機能を発揮する。ＤＢＭＳ２２は、データベースとして機能するＤＢ２４を含む。ＤＢ２４は、複数のデータベーステーブル２６を保持する。
【００２６】
図４は、ＰＬＣ３０の機能を示すブロック図である。ＰＬＣ３０は、コンピュータシステムであり、ユーザプログラムを周期的に実行する。ＰＬＣ３０は、ＰＬＣ３０内のメモリ領域の情報を読み書きして、ユーザプログラムに示される命令を順に実行する。ＰＬＣ３０は、入出力機能を備えており、センサ出力などＰＬＣ３０の外部からデータを受け付けて、データを蓄積する。ＰＬＣ３０は、蓄積されたデータをＤＢサーバ２０へ送信する。
【００２７】
図４に示すように、ＰＬＣ３０の各機能は、ＯＳ３１と、システムプログラム３３と、ユーザプログラム３８および定義情報３２とにより構成される。ＯＳ３１は、ＰＬＣ３０のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ（図示しない）がシステムプログラム３３およびユーザプログラム３８を実行するための基本的な実行環境を提供する。
【００２８】
システムプログラム３３は、ＰＬＣ３０としての基本的な機能を提供するためのソフトウェア群であり、ＯＳ３１上で動作し、ラダープログラムの制御などの機能を発揮する。システムプログラム３３は、シーケンス命令プログラム３４と、ＤＢアクセス処理プログラム３５と、入出力処理プログラム３６と、スケジューラ３７とを含んでいる。シーケンス命令プログラム３４は、ＰＬＣ３０内のメモリ領域の情報を読み書きしながら、ユーザプログラム３８の命令を順に実行する。ＤＢアクセス処理プログラム３５は、シーケンス命令プログラム３４がユーザプログラム３８を実行することに伴って呼び出され、ユーザプログラム３８がＤＢサーバ２０へアクセスするための処理、例えばＳＱＬ文の生成などの処理を実行する。
【００２９】
入出力処理プログラム３６は、ＰＬＣ３０が備える複数の入出力機能によるＰＬＣ３０へのデータ入力およびＰＬＣ３０からのデータ出力を制御する。各入出力機能は、それぞれメモリのアドレスと割りつけられている。各入出力機能に対応するメモリに保持されるデータは、ＰＬＣ３０の外部のデータと一括して周期的に交換される。スケジューラ３７は、シーケンス命令プログラム３４と、ＤＢアクセス処理プログラム３５と、入出力処理プログラム３６との実行を制御する。
【００３０】
ユーザプログラム３８は、ユーザによってＰＣ１０上で作成され、ＰＬＣ３０のメモリに保持されている。図４に示すように、ユーザプログラム３８とシーケンス命令プログラム３４とが制御プログラム３９を構成する。すなわち、シーケンス命令プログラム３４がユーザプログラム３８を読み出して、命令を順に実行することで、ＰＬＣ３０にユーザ所望の制御動作を実行させる。
【００３１】
定義情報３２は、ユーザプログラム３８に含まれる構造体型の変数の定義を示す情報であり、構造体タグ名、構造体に含まれる各メンバ名や、これらのデータ型が定義される。
【００３２】
＜２  データ＞
次に、本実施形態で用いるデータについて、説明する。
【００３３】
図５は、データベーステーブル２６を示す図である。データベーステーブル２６は、上述のとおり、ＤＢサーバ２０のＤＢＭＳ２２で管理されている。
【００３４】
データベーステーブル２６は、テーブルの名称を示すテーブル名称５１と、テーブルのフィールド（Name５２、LotNo５３、SuccessCount５４、FailedCount５５、・・）とにより構成される。図５の例では、テーブル名称５１に示されるように、テーブルの名称は「Production  Table」であり、製品に関する情報をテーブルに格納している。Name５２は、製品の名称を示す。LotNo５３は、製品のロット番号を示す。SuccessCount５４は、製品製造の成功数を示し、FailedCount５５は、製品製造の失敗数を示す。
【００３５】
＜３  動作＞
次に、本実施形態におけるＰＣ１０、ＰＬＣ３０の動作について、図面を用いて詳しく説明する。
【００３６】
実施の形態１における動作の概要は、以下のとおりである。
ユーザは、ＰＣ１０において、ＰＬＣ３０で実行させるユーザプログラムを作成する。ユーザは、ＤＢサーバ２０へアクセスするため、構造体型の変数を含むユーザプログラムを作成する。
【００３７】
ＰＬＣ３０は、ＰＣ１０から、ユーザプログラム、および、定義情報３２を受信して記憶する。シーケンス命令プログラム３４は、ユーザプログラム３８の命令を順に実行し、ユーザプログラム３８の命令の実行により、構造体型の変数の、各メンバの値をメモリから抽出する。シーケンス命令プログラム３４は、ＤＢアクセス処理プログラム３５を呼び出す命令に応じて、ＤＢアクセス処理プログラム３５に処理を渡す。ＤＢアクセス処理プログラム３５は、ユーザプログラム３８の定義情報３２に示される定義などを解析し、ユーザプログラム３８に含まれるデータや、ユーザプログラム３８の命令の実行により抽出された、構造体型の変数の、各メンバの値を用いて、ＤＢサーバ２０へアクセスするためのＳＱＬ文を生成する。ＤＢアクセス処理プログラム３５は、生成されるＳＱＬ文をＤＢサーバ２０へ送信することで、ＳＱＬ文を実行する（ＤＢサーバ２０にＳＱＬ文を実行させる）。
【００３８】
なお、本実施形態では、プログラミングツール１２のデータ型定義部１４は、構造体タグ名およびメンバ名と、各メンバのデータ型を、ＤＢサーバ２０に保持されるデータベーステーブル２６のテーブル名およびフィールド名と対応づけて定義している。すなわち、構造体タグ名とテーブル名とが対応し、メンバ名とフィールド名とが対応している。このような定義が、ユーザプログラム３８の定義情報３２に含まれる。そのため、ＤＢアクセス処理プログラム３５は、定義情報３２に含まれる構造体タグ名をそのままテーブル名として使用してＳＱＬ文を作成することができる。メンバ名とフィールド名についても同様である。なお、構造体を定義する構造体タグ名を、データベーステーブル２６のテーブル名と対応づけることとしてもよい。
【００３９】
図６は、ＤＢアクセス処理プログラム３５が、ＳＱＬ文を作成し実行する処理を示すフローチャートである。
【００４０】
ステップＳ７０において、ＤＢアクセス処理プログラム３５は、定義情報３２を読み出す。
【００４１】
ステップＳ７２において、ＤＢアクセス処理プログラム３５は、定義情報３２に示される構造体の定義を参照してメンバ名を抽出し、抽出したメンバ名をＤＢ２４を操作するためのフィールド名とする。
【００４２】
ステップＳ７４において、ＤＢアクセス処理プログラム３５は、定義情報３２に示される構造体の定義の構造体タグ名を抽出し、抽出した構造体タグ名をＤＢ２４を操作するためのテーブル名とする。
【００４３】
ステップＳ７６において、ＤＢアクセス処理プログラム３５は、ユーザプログラム３８の実行により抽出された、構造体の各メンバの値を読み出す。
【００４４】
ステップＳ７８において、ＤＢアクセス処理プログラム３５は、ステップＳ７２で取得されたフィールド名と、ステップＳ７６で読み出された値とを対応づけて、ステップＳ７４で取得されたテーブル名を用いてＳＱＬ文を生成する。
【００４５】
ステップＳ８０において、ＤＢアクセス処理プログラム３５は、生成されたＳＱＬ文をＤＢサーバ２０へ送信することにより、ＤＢサーバ２０のＤＢ２４を操作する。
【００４６】
これにより、ＰＬＣ３０を制御するためのユーザプログラムを作成するユーザにとっては、データベースを操作するためのＳＱＬ文の記述をしなくとも、ＤＢＭＳ２２へアクセスすることができる。例えば、データベース操作に不慣れなユーザであっても、データベース操作のためのＳＱＬの概念などを習得しなくとも、データベースへアクセスするユーザプログラムを作成することができる。
【００４７】
以下、ユーザプログラムの例や、ＳＱＬ文の例について、具体的に説明する。
プログラミングツール１２により作成されるユーザプログラムの例について、説明する。図７は、ユーザプログラムの一例を示す図である。
【００４８】
図７のユーザプログラム７１に示されるように、ユーザは、構造体型のデータ構造を用いて、プログラミングを実施する。ユーザプログラム７１の例は、構造体型の変数の変数名が「ProductionTable」である。なお、図７のユーザプログラム７１が実行されることにより、各メンバの値が抽出される。例えば、ＤＢアクセス処理プログラム３５は、メンバ「Name」の値が「Product1」、メンバ「LotNo」の値が「１００」、メンバ「SuccessCount」の値が「４９」、メンバ「FailedCount」の値が「１」とＰＬＣ３０のメモリから抽出し、図８に示すＳＱＬ文を作成してＰＬＣ３０からＤＢサーバ２０へ送信する。これにより、データベースが更新される。
【００４９】
ここで、「NJtoDBFunc」は、シーケンス命令プログラム３４に予め用意されたライブラリ（ＤＢアクセス処理プログラム３５によりＤＢＭＳ２２へアクセスするためのライブラリ）をＰＬＣ３０が呼び出して、ＰＬＣ３０がＤＢアクセス処理プログラム３５によりＤＢＭＳ２２へアクセスするための命令を示す。「DBHandle」は、ＰＬＣ３０がＤＢＭＳ２２に接続する際のハンドルを示す。ハンドルは、ユーザプログラム３８によるＤＢＭＳ２２への接続の初期段階で設定される。「Variable」は、このプログラムにおいて、ＰＬＣ３０からＤＢサーバ２０へと値を渡す対象となる構造体型の変数の変数名（図７の例では、「ProductionTable」）を示す。「Done」「Error」は、出力用の命令であり、命令が完了した状態を示す。
【００５０】
ステップＳ７８において生成されるＳＱＬ文の例について、具体的に説明する。図８は、ＳＱＬ文の例を示す図である。なお、図８は、図７のユーザプログラム７１と対応している。
【００５１】
なお、ステップＳ７２、ステップＳ７４において、ＤＢサーバ２０が保持する各データベーステーブル２６のうち、ＰＬＣ３０がアクセスする対象となるテーブル名およびフィールド名が抽出されている。ステップＳ７６において、ＤＢアクセス処理プログラム３５は、ユーザプログラム７１の各命令の字句を解析し、メモリからデータベースの値を読み出す。図８のＳＱＬ文８１に示されるように、テーブル名「ProductionTable」において、各フィールドの値を更新するためのＳＱＬ文がＤＢアクセス処理プログラム３５により生成される。
【００５２】
なお、この図８の例では、データベースへのデータの追加をする場合を示しているが、ＳＱＬ文は、データベースへの書き込み、読みこみ、また、データベースそのものを作成するものもあり、ＤＢアクセス処理プログラム３５は、これらＳＱＬ文を生成してＤＢサーバ２０へ送信することにより、データベースを操作する。ＳＱＬ文の例としては、Insert、Selectなどデータを操作する言語、DML（Data  Manipulation  Language）、DDL（Data  Definition  Language）なども利用できる。
【００５３】
＜４  変形例＞
（実施例１の変形例１）
なお、上記実施例１の説明では、ＤＢアクセス処理プログラム３５は、定義情報３２に含まれる構造体タグ名を、そのままＤＢＭＳ２２へアクセスするためのテーブル名とし、定義情報３２に含まれるメンバ名を、フィールド名とするものとして説明した。
【００５４】
ＤＢアクセス処理プログラム３５は、所定の変換規則に基づいて、定義情報３２に含まれる構造体タグ名およびメンバ名を、ＤＢＭＳ２２へアクセスするためのテーブル名およびフィールド名に変換するものとしてもよい。ここで、所定の変換規則とは、例えば、構造体の構造体タグ名やメンバ名を、ＤＢＭＳ２２へのアクセスを可能とする文字列に変換するための規則である。例えば、（ｉ）構造体タグ名またはメンバ名の一部の文字列を省略してテーブル名またはフィールド名とする、（ｉｉ）ＤＢＭＳ２２において、テーブル名およびフィールド名としての使用を禁止する文字列が定義情報３２の構造体タグ名またはメンバ名に含まれる場合に、これら文字列を削除または修正してテーブル名等として使用する等である。
【００５５】
（実施例１の変形例２）
上記実施例１の説明では、ＤＢアクセス処理プログラム３５は、図８に示されるような、ステップＳ７６で読み出された値を含むＳＱＬ文を生成するものとして説明した。これに限らず、ＤＢアクセス処理プログラム３５は、まず値を含まないＳＱＬ文を生成し、予めＤＢＭＳ２２へ送信し、続いて、周期的に取得される値を取得する都度、ＤＢＭＳ２２へ値を送信することによりＤＢＭＳ２２を操作するものとしてもよい。
【００５６】
例えば、ＤＢアクセス処理プログラム３５は、図６の例において、ステップＳ７０、ステップＳ７２、ステップＳ７４までの処理により、ＤＢ２４を操作するためのフィールド名とテーブル名とを決定し、決定したフィールド名およびテーブル名を用いて、値を含まないＳＱＬ文を生成する。値を含まないＳＱＬ文は、図８の例では、「VALUE」の項目が空欄（例えば、VALUE(?, ?, ?, ?)）になる。ＤＢアクセス処理プログラム３５は、値を含まないＳＱＬ文をＤＢＭＳ２２へ予め送信する。続いて、ＤＢアクセス処理プログラム３５は、ＳＱＬ文の値を、ユーザプログラム３８の処理結果に基づいて、ＤＢＭＳ２２へ送信する。例えば、図７および８の例では、値「('Product1', 100, 49, 1)」がＤＢアクセス処理プログラム３５の処理によってＰＬＣ３０からＤＢＭＳ２２へ送信される。このように、値を含まないＳＱＬ文と、値とをＤＢアクセス処理プログラム３５の処理によってＰＬＣ３０がＤＢＭＳ２２へ送信することにより、ＳＱＬ文が実行される。
【００５７】
＜５  実施の形態２＞
次に、別の実施の形態について説明する。実施の形態１では、ＰＬＣ３０が、ユーザプログラム３８および定義情報３２に基づいて、定義情報３２に示される構造体タグ名およびメンバ名を、そのままテーブル名およびフィールド名とする、または、所定の変換規則に基づいてテーブル名およびフィールド名に変換するものとして説明している。
【００５８】
これに対し、実施の形態２では、定義情報３２に示される構造体タグ名およびメンバ名と、ＤＢアクセス処理プログラム３５がＤＢＭＳ２２へアクセスするためのテーブル名およびフィールド名との変換規則を示すマッピング情報４１を、ＰＬＣ３０が保持している。ＤＢアクセス処理プログラム３５は、構造体タグ名に対応するマッピング情報４１に基づいて、ＳＱＬ文を生成する。
【００５９】
以下、具体的に説明する。図９は、実施の形態２におけるＰＬＣ３０の構成を示す機能ブロック図である。実施の形態１との相違点は、ＰＬＣ３０がマッピング情報４１を保持している点である。
【００６０】
図１０は、マッピング情報４１の例を示す図である。図１０に示すように、マッピング情報４１は、構造体タグ名と、ＤＢＭＳ２２へアクセスするためのテーブル名とを対応づけている。また、マッピング情報４１は、構造体の各メンバ名と、各フィールド名とを対応づけている。
【００６１】
マッピング情報４１は、例えば、予めＤＢサーバ２０の管理者等により作成されてＰＬＣ３０が保持するか、データベーステーブル２６のテーブル情報およびフィールド情報をＰＣ１０が取得して、データ型定義部１４により定義される構造体タグ名やメンバ名との変換規則を管理者等がＰＣ１０により作成することとしてもよい。
【００６２】
＜６  実施の形態２の動作＞
図１１は、実施の形態２におけるＤＢアクセス処理プログラム３５の動作を示すフローチャートである。
【００６３】
実施の形態１と同様に、ＰＬＣ３０は、ＰＣ１０からユーザプログラム、および、定義情報３２を受信して記憶する。シーケンス命令プログラム３４は、ユーザプログラム３８の命令を順に実行し、ユーザプログラム３８の命令の実行により、構造体型の変数の、各メンバの値をメモリから抽出する。シーケンス命令プログラム３４は、ＤＢアクセス処理プログラム３５を呼び出す命令に応じて、ＤＢアクセス処理プログラム３５に処理を渡す。
【００６４】
以下、具体的に説明する。
ステップＳ１１０において、ＤＢアクセス処理プログラム３５は、ユーザプログラム３８の定義情報３２を読み出す。
【００６５】
ステップＳ１１２において、ＤＢアクセス処理プログラム３５は、定義情報３２の構造体タグ名と、各メンバとに対応するテーブル名、フィールド名とをマッピング情報４１から読み出す。
【００６６】
ステップＳ１１４において、ＤＢアクセス処理プログラム３５は、ユーザプログラム３８の実行により抽出された、構造体の各メンバの値を読み出す。
【００６７】
ステップＳ１１８において、ＤＢアクセス処理プログラム３５は、ステップＳ１１２で読み出したテーブル名、フィールド名と、ステップＳ１１４で読み出した値を用いて、ＤＢサーバ２０へアクセスするためのＳＱＬ文を生成する。
【００６８】
ステップＳ１２０において、ＤＢアクセス処理プログラム３５は、生成されるＳＱＬ文をＤＢサーバ２０へ送信することでＳＱＬ文を実行する。
【００６９】
上記実施の形態２によると、定義情報３２と、ＤＢＭＳ２２へアクセスするためのテーブル名およびフィールド名との変換規則を、マッピング情報４１により示しているため、例えば、テーブル名およびフィールド名として使用できない文字列が構造体タグ名やメンバ名に含まれている場合にも、ＤＢアクセス処理プログラム３５は、マッピング情報４１を参照することによりＳＱＬ文を生成することができる。また、ＤＢＭＳ２２において、テーブル名およびフィールド名の命名規則が、ユーザにとって扱いにくい場合（例えば、テーブル名が人間にとって覚えにくい文字列など）であっても、ＤＢアクセス処理プログラム３５がマッピング情報４１を参照してＳＱＬ文を生成するため、ユーザは、理解しやすい文字列を構造体タグ名やメンバ名に用いてユーザプログラム３８を作成することができる。また、ユーザが自由に構造体タグ名やメンバ名を設定したい場合にも有効であり、ユーザは、ＳＱＬの概念に習熟していなくとも、プログラミングをすることができる。
【００７０】
実施の形態２において、マッピング情報４１は、例えば、予めＤＢサーバ２０の管理者等により作成されてＰＬＣ３０が保持するものと説明した。この他に、ユーザプログラム３８に、ＰＬＣ３０がマッピング情報４１を生成すべき旨の命令を含めることとしてもよい。例えば、ＰＣ１０は、定義情報３２に示される構造体のデータの定義（構造体タグ名、メンバ名など）と、ＰＬＣ３０がＤＢＭＳ２２へアクセスするためのテーブル名およびフィールド名との変換規則を含むユーザプログラム３８を生成する。このユーザプログラム３８は、ＰＬＣ３０がマッピング情報４１を生成すべき命令を含む。
【００７１】
ＰＬＣ３０は、シーケンス命令プログラム３４がユーザプログラム３８を実行し、ユーザプログラム３８に含まれる、上記の変換規則およびマッピング情報４１を生成すべき命令に応じてマッピング情報４１を生成し、生成したマッピング情報４１をメモリに保持する。ＤＢアクセス処理プログラム３５は、マッピング情報４１を生成した以降の処理で、ユーザプログラム３８に含まれる構造体型の変数に基づいて、メモリに保持されるマッピング情報４１を参照してＳＱＬ文を生成する。これにより、ＰＬＣ３０がＳＱＬ文を生成する処理が高速化する。
【００７２】
また、上記実施の形態の説明では、ユーザの入力操作に応じてＰＣ１０が定義情報３２とユーザプログラムとを生成し、生成された定義情報３２とユーザプログラムとをそれぞれＰＣ１０からＰＬＣ３０へ送信するものとして説明してきた。この他に、ユーザプログラムが定義情報３２を含むものとしてもよい。ＰＣ１０は、定義情報３２を含むユーザプログラムを生成し、生成されたユーザプログラムをＰＬＣ３０へ送信する。
【００７３】
このように各実施形態について説明してきたが、これら実施形態を組み合わせてもよいことはいうまでもない。以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００７４】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００７５】
１０  ＰＣ、１２  プログラミングツール、１４  データ型定義部、１６  プログラミング機能、２０  ＤＢサーバ、２２  ＤＢＭＳ、２４  ＤＢ、２６  データベーステーブル、３０  ＰＬＣ、３１  ＯＳ、３２  定義情報、３３  システムプログラム、３４  シーケンス命令プログラム、３５  ＤＢアクセス処理プログラム、３６  入出力処理プログラム、３７  スケジューラ、３８  ユーザプログラム、３９  制御プログラム、４０  スイッチングハブ、４１  マッピング情報、５１  テーブル名称、５２  Name、５３  LotNo、５４  SuccessCount、５５  FailedCount、７１  ユーザプログラム、８１  ＳＱＬ文。
【図１】
2013191275.tif 000003
【図２】
2013191275.tif 000004
【図３】
2013191275.tif 000005
【図４】
2013191275.tif 000006
【図５】
2013191275.tif 000007
【図６】
2013191275.tif 000008
【図７】
2013191275.tif 000009
【図８】
2013191275.tif 000010
【図９】
2013191275.tif 000011
【図１０】
2013191275.tif 000012
【図１１】
2013191275.tif 000013
【国際調査報告】
2013191275.tif 000014
2013191275.tif 000015
2013191275.tif 000016
2013191275.tif 000017