(57)【特許請求の範囲】
【請求項１】
プログラマブルロジックコントローラ内のデータベースの構成を示す情報であるデータベース定義情報を取得する定義情報取得部と、
前記データベース定義情報に基づいて、前記プログラマブルロジックコントローラで実行されるプログラムを作成する際に使用されるプログラム部品であり、前記データベースを操作する命令をユーザが作成する際に使用されるプログラム部品を生成するプログラム部品生成部と、
を備えることを特徴とするプログラム作成装置。
【請求項２】
前記定義情報取得部は、前記データベース定義情報をユーザから取得する、
ことを特徴とする請求項１に記載のプログラム作成装置。
【請求項３】
前記定義情報取得部は、前記データベース定義情報をデータベースが構築済みのプログラマブルロジックコントローラから取得する、
ことを特徴とする請求項１に記載のプログラム作成装置。
【請求項４】
前記データベース定義情報に基づいてデータベース定義ファイルを生成するデータベース定義ファイル生成部と、
前記データベース定義ファイルを前記プログラマブルロジックコントローラへ送信する通信部と、
を備えることを特徴とする請求項１、２または３に記載のプログラム作成装置。
【請求項５】
前記プログラム部品生成部は、データベースを構成するテーブルのレコードおよびフィールドを指定するための変数定義と、前記変数定義で指定したレコードおよびフィールドに対して実行する操作を指定する関数定義と、を前記プログラム部品として生成する、
ことを特徴とする請求項１から４のいずれか一つに記載のプログラム作成装置。
【請求項６】
前記プログラム部品を使用して前記プログラムを作成するプログラム作成部、
を備えることを特徴とする請求項１から５のいずれか一つに記載のプログラム作成装置。
【請求項７】
前記データベース定義情報は、前記データベースを構成するテーブルの名称、前記テーブルに含まれる各フィールドの名称および前記各フィールドに格納されるデータの種類を表す、
ことを特徴とする請求項１から６のいずれか一つに記載のプログラム作成装置。
【請求項８】
前記プログラム部品生成部は、前記データベースを構成するテーブルに対してレコードの追加を実行する関数定義、前記テーブルに対してレコードの削除を実行する関数定義、前記テーブルに対してレコードの更新を実行する関数定義、および、前記テーブルに対してレコードの検索を実行する関数定義、の中の１つ以上を前記プログラム部品として生成する、
ことを特徴とする請求項１から７のいずれか一つに記載のプログラム作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックコントローラで実行するプログラムを作成するプログラム作成装置に関する。
【背景技術】
【０００２】
近年、プログラマブルコントローラ（Programmable  Logic  Controllers、以下、ＰＬＣと記載する）は、生産レシピ等の大容量のデータを取り扱うケースが増えてきている。大容量のデータをラダープログラムで取り扱う場合、プログラムが煩雑になり、また大容量のデータから条件に一致するデータの検索や更新を行うのは困難であった。そのため、データベース機能を有するＰＬＣも普及しつつある（特許文献１）。【０００３】
特許文献１に記載のＰＬＣは、ＰＬＣが実行するラダープログラムで使用される命令として、データベースを操作するための命令であるデータベースアクセス用命令を定義し、データベースアクセス用命令を検出するとＳＱＬ（Structured  Query  Language）の命令に変換する。これによりデータベースを操作する際の工程数を削減して容易に大容量データを取り扱えるようにしている。データベースアクセス用命令は、ラダープログラムでデータベースを操作できるようにＳＱＬの操作を命令名とし、条件をデバイスに割り付けたものとなっている。また、特許文献１には、データベースアクセス用命令として、データベースからのデータの読み出し、データベースへのデータの追加、データベース内のデータの変更、データベース内のデータの削除といった命令を定義することが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５５１８２６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載のＰＬＣで使用されるデータベースアクセス用命令の引数のアドレスは、ユーザが任意に設定することが可能な反面、設定が難しいという問題がある。具体的には、先頭のデバイスアドレスからのオフセットに応じて現在の設定項目は何であるか、データベースにどのような属性が存在するかをユーザが把握し、注意深く設定しなければならない。また、各設定項目のオフセットはデータベースの定義および上位アドレスの項目の設定値によって変化するため、常に同じオフセットが同じ項目となるわけではない。このように、データベースアクセス用命令により大容量データのプログラミングは容易となり、検索および編集も簡単になったが、データベースアクセス用命令の使用には試行錯誤と経験が必要となっている。【０００６】
本発明は、上記に鑑みてなされたものであって、データベース機能を有するＰＬＣのプログラム作成作業、具体的にはデータベースの操作用プログラムの作成作業の煩雑さを解消させることが可能なプログラム作成装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明にかかるプログラム作成装置は、プログラマブルロジックコントローラ内のデータベースの構成を示す情報であるデータベース定義情報を取得し、データベース定義情報に基づいて、プログラマブルロジックコントローラで実行されるプログラムを作成する際に使用されるプログラム部品であり、データベースを操作する命令をユーザが作成する際に使用されるプログラム部品を生成する。
【発明の効果】
【０００８】
本発明にかかるプログラム作成装置は、データベースの操作用プログラムの作成作業の煩雑さを解消させることができる、という効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかるプログラム作成装置およびＰＬＣの構成例を示す図
【図２】実施の形態１にかかるプログラム作成装置を実現するハードウェア構成を示す図
【図３】実施の形態１にかかるプログラム作成装置の動作を示すフローチャート
【図４】実施の形態１にかかるプログラム作成装置が取得する、テーブルの定義情報を説明するための図
【図５】実施の形態１にかかるプログラム作成装置が表示する画面の一例を示す図
【図６】実施の形態１にかかるプログラム作成装置がテーブルの定義情報をユーザから取得する動作を開始後に表示する画面の一例を示す図
【図７】実施の形態１にかかるプログラム作成装置がテーブルの定義情報の入力を受け付ける画面の一例を示す図
【図８】実施の形態１にかかるプログラム作成装置がテーブルの定義情報の入力を受け付けた後に表示する画面の一例を示す図
【図９】実施の形態１にかかるプログラム作成装置が生成するＤＢ定義ファイルに含まれるファイルの一例を示す図
【図１０】実施の形態１にかかるプログラム作成装置がラベルを生成する動作の途中段階を示す図
【図１１】実施の形態１にかかるプログラム作成装置がラベルを生成した後の状態を示す図
【図１２】実施の形態１にかかるプログラム作成装置が生成したラベルの使用方法の一例を示す図
【図１３】実施の形態１にかかるプログラム作成装置が生成するファンクションブロックの一例を示す図
【図１４】実施の形態１にかかるプログラム作成装置が表示する画面の一例を示す図
【図１５】実施の形態１にかかるプログラム作成装置を使用して作成するラダープログラムの第１の例を示す図
【図１６】実施の形態１にかかるプログラム作成装置を使用して作成するラダープログラムの第２の例を示す図
【図１７】実施の形態１にかかるプログラム作成装置を使用して作成するラダープログラムの第３の例を示す図
【図１８】実施の形態１にかかるプログラム作成装置を使用して作成するラダープログラムの第４の例を示す図
【図１９】実施の形態１にかかるプログラム作成装置がデータベース操作用のファンクションブロックを変換することにより得られる命令の一例を示す図
【図２０】実施の形態２にかかるプログラム作成装置およびＰＬＣの構成例を示す図
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかるプログラム作成装置を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、本発明の実施の形態１にかかるプログラム作成装置およびプログラム作成装置が作成したプログラムを実行するＰＬＣの構成例を示す図である。
【００１２】
実施の形態１にかかるプログラム作成装置１は、ＰＬＣ２で実行されるプログラムを作成するための装置であり、定義情報取得部１１、ＤＢ（Data  Base）定義ファイル生成部１２、プログラム部品生成部１３、ＤＢ定義ファイル記憶部１４、プログラム部品記憶部１５、プログラム作成部１６、プログラムファイル記憶部１７および通信部１８を備える。
【００１３】
ＰＬＣ２は、データベース機能を有するプログラマブルロジックコントローラであり、データベース生成部２１、ＤＢ定義ファイル記憶部２２、データベース２３、プログラム実行部２４、プログラムファイル記憶部２５および通信部２６を備える。図１では記載を省略しているが、ＰＬＣ２は、データベースの構築、構築されたデータベースに対して各種操作を行うためのデータベース管理システム（ＤＢＭＳ：Database  Management  System）を搭載しているものとする。ＤＢＭＳはデータベース機能を有する機器で一般的に使用されているシステムであるため、詳細説明は省略する。データベースに対して行う各種操作には、データベースへのデータの追加、データベース内のデータの更新、データベース内のデータの削除、データベース内のデータの検索といったものが該当する。
【００１４】
プログラム作成装置１を構成している各部について簡単に説明する。定義情報取得部１１は、プログラムの設計者であるユーザからデータベースを構成するテーブルの定義情報を取得する。ＤＢ定義ファイル生成部１２は、定義情報取得部１１が取得した定義情報に基づいて、ＰＬＣ２の内部に構築されるデータベース２３のデータベース定義ファイル（以下、ＤＢ定義ファイルと記載する）を生成する。ＤＢ定義ファイルは、データベース２３を構成する各テーブルの定義情報をファイルとして永続化したものである。プログラム部品生成部１３は、定義情報取得部１１が取得した定義情報に基づいて、ＰＬＣ２のプログラムを作成する際に使用可能なプログラム部品を作成する。プログラム部品生成部１３が作成するプログラム部品は、データベース２３の操作を含んだプログラムの作成で使用可能なプログラム部品である。また、プログラム部品生成部１３が作成するプログラム部品は、ラベルとも呼ばれる変数定義およびファンクションブロック（以下、ＦＢと記載する）とも呼ばれる関数定義である。ＤＢ定義ファイル記憶部１４は、ＤＢ定義ファイル生成部１２が生成したＤＢ定義ファイルを受け取って記憶する。プログラム部品記憶部１５は、プログラム部品生成部１３が生成したプログラム部品を受け取って記憶する。プログラム部品記憶部１５は、プログラム部品生成部１３が生成したプログラム部品以外のプログラム部品も記憶するようにしてもよい。すなわち、プログラム作成装置１は、プログラム部品生成部１３以外にもプログラム部品を作成する機能（図示せず）を有し、この機能を使用して作成されたプログラム部品をプログラム部品記憶部１５が記憶するようにしてもよい。
【００１５】
プログラム作成部１６は、プログラムエディタおよびコンパイラを含んで構成され、プログラムを作成するとともに、作成したプログラムをコンパイルして実行形式のプログラムファイルを生成する。プログラムファイル記憶部１７は、プログラム作成部１６が生成したプログラムファイルを受け取って記憶する。通信部１８は、ＤＢ定義ファイル記憶部１４が記憶しているＤＢ定義ファイルおよびプログラムファイル記憶部１７が記憶しているプログラムファイルをＰＬＣ２へ送信する。なお、通信部１８がＰＬＣ２へＤＢ定義ファイルを送信するタイミングとプログラムファイルを送信するタイミングとは異なることを前提とするが、ＤＢ定義ファイルとプログラムファイルとを同じタイミングで送信すなわち２つのファイルを一緒に送信してもよい。
【００１６】
つづいて、ＰＬＣ２を構成している各部について簡単に説明する。データベース生成部２１は、プログラム作成装置１で作成され、ＤＢ定義ファイル記憶部２２で記憶されているＤＢ定義ファイルに基づいてデータベース２３を生成する。データベース生成部２１は、ＤＢＭＳを利用して実現される。ＤＢ定義ファイル記憶部２２は、プログラム作成装置１で作成されたＤＢ定義ファイルを通信部２６経由で受け取って記憶する。データベース２３は、１つ以上のテーブルで構成され、プログラム実行部２４から受け取ったデータを指定されたテーブルに格納して管理する。プログラム実行部２４は、プログラム作成装置１で作成され、プログラムファイル記憶部２５で記憶されているプログラムを実行することにより、ＰＬＣ２が有する各種機能を実現する。プログラムファイル記憶部２５は、プログラム作成装置１で作成されたプログラムを通信部２６経由で受け取って記憶する。通信部２６は、プログラム作成装置１が作成したＤＢ定義ファイルおよびプログラムファイルを受信する。通信部２６は、ＤＢ定義ファイルを受信した場合はＤＢ定義ファイル記憶部２２に格納し、プログラムを受信した場合はプログラムファイル記憶部２５に格納する。
【００１７】
なお、ＤＢ定義ファイル記憶部２２は、データベース生成部２１によりデータベース２３が生成された後は記憶しているＤＢ定義ファイルを消去してもよい。すなわち、ＤＢ定義ファイル記憶部２２は、プログラム作成装置１から受け取ったＤＢ定義ファイルを、データベース生成部２１がデータベース２３を生成するまで一時的に保持するものであってもよい。
【００１８】
また、プログラム作成装置１の通信部１８とＰＬＣ２の通信部２６との間の通信は有線通信であってもよいし無線通信であってもよい。また、プログラム作成装置１は、ＰＬＣ２のプログラムを作成する際にＰＬＣ２が接続されていなくてもよい。すなわち、プログラム作成装置１は、ＰＬＣ２のプログラムを作成する際にＰＬＣ２と通信できない状態であってもよい。プログラム作成装置１は、作成したプログラム、ファイルなどのデータの送受信をＰＬＣ２との間で行う必要があるときにＰＬＣ２と接続されていればよい。
【００１９】
ここで、プログラム作成装置１のハードウェア構成について説明する。図２は、実施の形態１にかかるプログラム作成装置１を実現するハードウェア構成を示す図である。
【００２０】
プログラム作成装置１は、表示装置１０１、入力装置１０２、プロセッサ１０３、メモリ１０４および通信装置１０５を含むハードウェア１００で実現される。表示装置１０１は、情報を表示する装置であり、液晶ディスプレイが例示されるがこれに限定されるものではない。入力装置１０２は、プログラム作成装置１に対して文字を含む各種情報を入力するための装置であり、キーボード、マウス、ポインティングデバイスおよびタッチパネルが例示されるが、これらに限定されるものではない。入力装置１０２は、ユーザによる各種操作を受け付ける場合に使用される。すなわち、入力装置１０２は、定義情報取得部１１がテーブルの定義情報の入力をユーザから受け付ける場合、および、プログラム作成部１６がプログラム作成のための操作をユーザから受け付ける場合に使用される。これら以外の操作をユーザから受け付ける場合にも入力装置１０２が使用される。通信装置１０５は、ＤＢ定義ファイルおよびプログラムファイルを含む各種データをＰＬＣ２との間で送受信する装置であり、通信部１８を実現する。
【００２１】
プログラム作成装置１が有する定義情報取得部１１、ＤＢ定義ファイル生成部１２、プログラム部品生成部１３およびプログラム作成部１６の機能は、プロセッサ１０３およびメモリ１０４により実現される。プロセッサ１０３は、ＣＰＵ（Central  Processing  Unit：中央処理装置）、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、又はＤＳＰ（Digital  Signal  Processor）ともいう。メモリ１０４は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリー、ＥＰＲＯＭ（Erasable  Programmable  Read  Only  Memory）、及びＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read  Only  Memory）といった揮発性又は不揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、及びＤＶＤ（Digital  Versatile  Disc）が該当する。
【００２２】
すなわち、定義情報取得部１１、ＤＢ定義ファイル生成部１２、プログラム部品生成部１３およびプログラム作成部１６の機能は、ソフトウェア、ファームウェア、又はソフトウェアとファームウェアとの組合せにより実現される。ソフトウェア及びファームウェアはプログラムとして記述され、メモリ１０４に記憶される。プロセッサ１０３は、メモリ１０４に記憶されたプログラムを読み出して実行することにより、定義情報取得部１１、ＤＢ定義ファイル生成部１２、プログラム部品生成部１３およびプログラム作成部１６の機能を実現する。
【００２３】
これらのプログラムは、定義情報取得部１１、ＤＢ定義ファイル生成部１２、プログラム部品生成部１３およびプログラム作成部１６が実行する手順をコンピュータに実行させるものであるともいえる。
【００２４】
ＤＢ定義ファイル記憶部１４、プログラム部品記憶部１５およびプログラムファイル記憶部１７は、メモリ１０４により実現される。
【００２５】
なお、ＰＬＣ２は図２に示したハードウェア１００のプロセッサ１０３、メモリ１０４および通信装置１０５で実現することができる。
【００２６】
つづいて、実施の形態１にかかるプログラム作成装置１の全体動作について、図３を参照しながら説明する。図３は、実施の形態１にかかるプログラム作成装置１の動作を示すフローチャートである。図３のフローチャートは、プログラム作成装置１がプログラム部品およびＤＢ定義ファイルを作成する場合の動作を示している。
【００２７】
プログラム作成装置１は、まず、ＰＬＣ２内に構築するデータベース２３の各テーブルの定義情報を取得する（ステップＳ１１）。具体的には、定義情報取得部１１が、プログラムの設計者であるユーザから、データベース２３を構成する各テーブルの定義情報の入力を受け付ける。
【００２８】
ここで、テーブルの定義情報について、図４を用いて説明する。図４は、実施の形態１にかかるプログラム作成装置１が取得する、テーブルの定義情報を説明するための図である。
【００２９】
図４に示したように、データベースを構成するテーブルは、レコードとフィールドとにより決まる複数の領域を有し、各領域にデータが格納される。テーブルおよび各フィールドには名称が付与される。図４に示した例では、データベースを構成する複数のテーブルの中に「Ｐｒｏｄｕｃｔ＿Ｒｅｃｉｐｅ」という名称のテーブルが含まれる。また、このテーブルは、「Ｐｒｏｄｕｃｔ＿ＩＤ」、「Ｍａｔｅｒｉａｌ＿Ａ」、「Ｍａｔｅｒｉａｌ＿Ｂ」および「Ｍａｔｅｒｉａｌ＿Ｃ」という名称のフィールドを含んでいる。このテーブルの定義情報は、図４の右側に示したように、テーブルの名称である「テーブル名」と、各フィールドの名称である「フィールド名」と、各フィールドに格納するデータの種類である「データ型」とにより構成される。なお、本明細書では、データベースを構成する各テーブルの定義情報の集合をデータベース定義情報と呼ぶこととする。データベース定義情報は、データベースの構成を示す情報である。
【００３０】
図３の説明に戻り、ステップＳ１１において、定義情報取得部１１は、データベース２３を構成する各テーブルの名称すなわちテーブル名と、各テーブルに含まれる各フィールドの名称すなわちフィールド名と、各フィールドに格納されるデータの種類すなわちデータ型とを、テーブルの定義情報として取得する。
【００３１】
図５〜図８は、実施の形態１にかかるプログラム作成装置１がテーブルの定義情報をユーザから取得する動作を説明するための図である。図５は、実施の形態１にかかるプログラム作成装置１が表示する、プロジェクトの構成を表示するウィンドウの一例を示す図である。図６は、実施の形態１にかかるプログラム作成装置１がテーブルの定義情報をユーザから取得する動作を開始後に表示する画面の一例を示す図である。図７は、実施の形態１にかかるプログラム作成装置１がテーブルの定義情報の入力を受け付ける画面の一例を示す図である。図８は、実施の形態１にかかるプログラム作成装置１がテーブルの定義情報の入力を受け付けた後に表示する画面の一例を示す図である。プログラム作成装置１は、データベース２３を構成するテーブルの定義情報の入力を開始するための操作が行われたことを検出すると、図５に示した内容の画面を、図２に示した表示装置１０１に表示させる。
【００３２】
プログラム作成装置１は、図５に示した画面すなわちプロジェクトの構成を表示するウィンドウ５１を表示している状態において、以下に示す操作をユーザが行ったことを検出すると、テーブルの定義情報の入力操作が開始されたと判断し、図６に示した画面を表示する。なお、ユーザは、マウスおよびキーボードといった入力装置、すなわち図２に示した入力装置１０２を使用して操作を行う。プログラム作成装置１は、図５に示した、「データベース」の下の「Ｄａｔａｂｅｓｅ１」がユーザにより選択され、さらに、テーブルの定義情報の新規入力を指示する操作が行われたことを検出した場合、図６に示した画面を表示する。ユーザが「Ｄａｔａｂｅｓｅ１」を選択する操作方法としては、マウスで「Ｄａｔａｂｅｓｅ１」をクリックする操作が該当するが他の方法で選択するようにしてもよい。また、ユーザがテーブルの定義情報の新規入力を指示する操作としては、「Ｄａｔａｂｅｓｅ１」が選択された状態で右クリックして選択可能なメニューを表示させ、表示されたメニューの中から「テーブルの定義情報の入力」を選択する操作が該当する。プログラム作成装置１は、図５に示した画面に対して図６に示した画面を重ねて表示するようにしてもよい。図６は、新たに入力する定義情報を有するテーブルの名称を入力するための画面表示の例を示している。
【００３３】
プログラム作成装置１は、図６に示した画面を表示した状態で、「テーブル名」が入力され、さらに、「入力終了」ボタンが選択すなわちクリックされると、図７に示した画面を表示する。ここでは、テーブル名として「Ｐｒｏｄｕｃｔ＿Ｒｅｃｉｐｅ」が入力されたものとして説明を続ける。図７に示したように、プログラム作成装置１は、入力されたテーブル名「Ｐｒｏｄｕｃｔ＿Ｒｅｃｉｐｅ」をウィンドウ５１内の「Ｄａｔａｂｅｓｅ１」の下に追加表示する。また、プログラム作成装置１は、テーブルの構成情報を入力するためのウィンドウ７１を表示する。図７に示した画面が表示された状態でユーザが入力する構成情報は、「フィールド名」、「データ型」、「主キー」および「Ｎｏｔ  Ｎｕｌｌ」とする。「フィールド名」および「データ型」は図４を用いて説明したとおりである。「主キー」とは、他のテーブルとの関連付けに使用するデータが格納されるフィールドを示す。すなわち、新規に作成するテーブルは、「主キー」に設定されたフィールドに格納されたデータを使用して他のテーブルと関連付けられる。「Ｎｏｔ  Ｎｕｌｌ」とは、Ｎｕｌｌすなわちデータが格納されていない状態が許容されないフィールドを示す。よって、「Ｎｏｔ  Ｎｕｌｌ」が設定されたフィールドには必ずデータを格納する必要がある。
【００３４】
プログラム作成装置１は、図７に示した画面を表示した状態で、構成情報の入力操作、すなわち、「フィールド名」および「データ型」の入力操作、「主キー」および「Ｎｏｔ  Ｎｕｌｌ」の設定操作が行われたことを検出すると、検出した入力操作に応じて画面表示すなわちウィンドウ７１内の表示を更新する。「データ型」の入力は、予め定義されている型の中からプルダウンで選択して入力するようにしてもよい。図８は、プログラム作成装置１が構成情報の入力操作を検出して更新を行った後の画面表示の一例を示している。
【００３５】
プログラム作成装置１は、図８に示した画面を表示している状態で構成情報の入力を終了する操作、例えば、図示を省略している「テーブル定義の終了」といったボタンを押下する操作が行われたことを検出すると、名称が「Ｐｒｏｄｕｃｔ＿Ｒｅｃｉｐｅ」のテーブルの定義情報の取得を終了する。
【００３６】
プログラム作成装置１は、図５から図８を用いて説明した動作を繰り返し実行し、ＰＬＣ２内のデータベース２３を構成する各テーブルの定義情報を取得する。すなわち、ユーザは、名称が「Ｐｒｏｄｕｃｔ＿Ｒｅｃｉｐｅ」のテーブルの定義情報を入力する上記の動作と同様の動作を繰り返し実行し、ＰＬＣ２内のデータベース２３を構成する各テーブルの定義情報をプログラム作成装置１に入力する。
【００３７】
プログラム作成装置１は、「Ｄａｔａｂａｓｅ１」を構成するテーブルの定義情報の入力を終了してＤＢ定義ファイルの生成を指示する操作、例えば、図示を省略している「データベース定義ファイルの生成」といったボタンを押下する操作を受け付けると、データベース２３の定義ファイルすなわちＤＢ定義ファイルを生成する（ステップＳ１２）。ステップＳ１２においては、プログラム作成装置１のＤＢ定義ファイル生成部１２が、ステップＳ１１で入力されたテーブルの定義情報に基づいてデータベース２３のＤＢ定義ファイルを生成する。上述したように、ＤＢ定義ファイルはデータベース２３を構成する各テーブルの定義情報をファイル形式で永続化したものである。本明細書において、ＤＢ定義ファイルは、データベース定義に含まれる各テーブルの定義情報を個別に永続化したファイルの集合とする。図９は、実施の形態１にかかるプログラム作成装置１が生成するＤＢ定義ファイルに含まれるファイル、すなわち、ある１つのテーブルの定義情報を永続化したファイルの一例を示す図である。図９に示したように、テーブルの定義情報を永続化したファイルは、「データベース名」、「テーブル名」、「フィールド名」、「データ型」、「主キー」および「Ｎｏｔ  Ｎｕｌｌ」を含んでいる。図９に示した例は、テーブル名が「Ｐｒｏｄｕｃｔ＿Ｒｅｃｉｐｅ」のテーブルの定義情報をテキストファイルとして永続化したものである。なお、ファイルの形式をテキスト形式に限定するものではない。また、図９に示したファイルは、「Ｐｒｏｄｕｃｔ＿ＩＤ」フィールドに格納されたデータが主キーとして設定され、「Ｐｒｏｄｕｃｔ＿ＩＤ」、「Ｍａｔｅｒｉａｌ＿Ａ」、「Ｍａｔｅｒｉａｌ＿Ｂ」および「Ｍａｔｅｒｉａｌ＿Ｃ」が「Ｎｏｔ＿Ｎｕｌｌ」に設定されていることを示している。ＤＢ定義ファイル生成部１２は、生成したＤＢ定義ファイルをＤＢ定義ファイル記憶部１４に格納する。
【００３８】
プログラム作成装置１は、ステップＳ１２の処理に続いて、データベース２３を操作するプログラム部品を生成する（ステップＳ１３）。ステップＳ１３においては、プログラム作成装置１のプログラム部品生成部１３が、ステップＳ１１で定義情報取得部１１が取得した、テーブルの定義情報に基づいて、プログラム部品を生成する。上述したように、プログラム部品生成部１３が生成するプログラム部品は、ラベルおよびＦＢである。プログラム部品生成部１３が生成するラベルは、データベース２３の各テーブルのデータを格納する変数定義である。また、プログラム部品生成部１３が生成するＦＢは、データベース２３の各テーブルに対してレコードの追加を実行する関数定義、各テーブルに対してレコードの更新を実行する関数定義、各テーブルに対してレコードの削除を実行する関数定義、および、各テーブルに対してレコードの検索を実行する関数定義である。ステップＳ１１において、定義情報取得部１１がテーブルの定義情報を複数取得した場合、プログラム部品生成部１３は、複数の定義情報のそれぞれに基づいてプログラム部品を生成する。プログラム部品生成部１３が、プログラム部品を生成する動作については後述する。プログラム部品生成部１３は、生成したプログラム部品をプログラム部品記憶部１５に格納する。
【００３９】
なお、プログラム作成装置１は、ステップＳ１２およびＳ１３を逆の順番で実行してもよいし、並列に実行してもよい。
【００４０】
プログラム作成装置１は、ステップＳ１３の処理に続いて、ＤＢ定義ファイルをＰＬＣ２へ送信する（ステップＳ１４）。すなわち、プログラム作成装置１は、ＤＢ定義ファイル記憶部１４で記憶しているＤＢ定義ファイルをＰＬＣ２へ送信する。ＰＬＣ２は、ＤＢ定義ファイルを受信すると、これをＤＢ定義ファイル記憶部２２で記憶する。また、ＰＬＣ２では、データベース生成部２１が、ＤＢ定義ファイル記憶部２２が保持しているＤＢ定義ファイルを使用してデータベース２３を生成する。すなわち、データベース生成部２１は、ＤＢ定義ファイルに含まれているデータベース名、テーブル名、各テーブルのフィールド名、各フィールドに格納するデータのデータ型、などの情報に基づいてデータベース２３を生成する。
【００４１】
プログラム作成装置１は、次に、プログラム部品を使用してＰＬＣ２のプログラムを作成する（ステップＳ１５）。このステップＳ１５は、ステップＳ１４よりも前に実行してもよいしステップＳ１４と並列に実行してもよい。ＰＬＣ２のプログラムを作成する動作は、作成開始を指示する操作をユーザから受け付けると開始する。ステップＳ１５では、プログラム作成部１６が、ユーザからの操作を受け付け、受け付けた操作の内容に従ってプログラムを作成する。プログラム部品を使用したプログラムの作成は従来から存在する手法であるため、ここでは説明を省略する。プログラムの作成動作は、プログラムをコンパイルして実行形式のプログラムファイルを作成するまでの動作を含む。プログラム作成部１６が作成したプログラムファイルはプログラムファイル記憶部１７に格納される。なお、データベース２３を操作するプログラム部品を使用してプログラムを作成する方法については後述する。
【００４２】
プログラム作成装置１は、プログラムの作成が終了した後、プログラムすなわちプログラムファイル記憶部１７で保持しているプログラムファイルをＰＬＣ２へ送信する（ステップＳ１６）。ＰＬＣ２は、プログラムファイルを受信すると、これをプログラムファイル記憶部２５で記憶する。プログラムファイル記憶部２５が記憶しているプログラムファイルは、ＰＬＣ２が動作を開始する際にプログラム実行部２４により読み出される。すなわち、ＰＬＣ２が動作を開始する際、プログラム実行部２４が、プログラムファイル記憶部２５からプログラムファイルを読み出して実行する。
【００４３】
つづいて、上記のステップＳ１３でプログラム部品生成部１３がラベルを生成する手順を、図１０および図１１を用いて説明する。図１０および図１１は、実施の形態１にかかるプログラム作成装置１のプログラム部品生成部１３がラベルを生成する動作を説明するための図である。図１０は、プログラム部品生成部１３がラベルを生成する動作の途中段階を示しており、図１１は、プログラム部品生成部１３によるラベル生成が終了した後の状態を示している。
【００４４】
プログラム部品生成部１３は、ラベルを生成する場合、まず、図１０に示したように、データベース定義情報を構成するテーブルの定義情報の各々に基づいて構造体を生成する。すなわち、プログラム部品生成部１３は、定義情報が示すテーブルの構成に対応する構造体の定義情報（以下、構造体定義情報と記載する）を生成する。具体的には、プログラム部品生成部１３は、テーブルの各フィールド名をメンバ名とした構造体の構造体定義情報を生成する。構造体の各メンバのデータ型はテーブルの各フィールドに格納するデータのデータ型とする。プログラム部品生成部１３は、データベース定義情報が複数のテーブルの定義情報を含んでいる場合、各テーブルの定義情報に基づいて、各テーブルに対応する構造体定義情報を生成する。構造体定義情報が生成されると、図１０に示したように「プロジェクト」を構成する「構造体」として、名称が「Ｐｒｏｄｕｃｔ＿Ｒｅｃｉｐｅ」という構造体が追加される。プログラム部品生成部１３は、次に、生成した各構造体定義情報に基づいてラベルを生成する。プログラム部品生成部１３は、構造体定義情報が複数存在する場合、各構造体定義情報に対応するラベルを生成する。すなわち、プログラム部品生成部１３は、データベース２３を構成する各テーブルのそれぞれに対応するラベルを生成する。具体的には、プログラム部品生成部１３は、生成した構造体の型定義をデータ型とするラベルを作成する。その結果、図１１に示したように、作成したラベルが使用可能なラベルの一覧に追加される。図１１は、「ｄａｔａ」、「ｎａｍｅ」、「ｃｏｕｎｔ」などが既存のラベルとして存在している状態でプログラム部品生成部１３がラベルを生成し、生成したラベルが「ｒｅｃｏｒｄ」という名称のラベルとして追加された場合の画面表示の例を示している。図１１に示したように、生成したラベル「ｒｅｃｏｒｄ」がラベル一覧に追加される。この結果、対応するテーブルのレコードにデータを格納する変数としてラベル「ｒｅｃｏｒｄ」を使用することが可能となる。なお、詳細の説明については省略するが、プログラム部品生成部１３は、ラベル「ｒｅｃｏｒｄ」と同じ構成のラベル「ｒｅｓｕｌｔｓ」についても同様の方法で生成する。ラベル「ｒｅｓｕｌｔｓ」は、データベースに登録されたレコードを検索する際に使用される。ラベル「ｒｅｓｕｌｔｓ」の使用方法の例については後述する。
【００４５】
プログラム部品生成部１３が作成したラベルをプログラム作成時に使用する方法を説明する。図１２は、実施の形態１にかかるプログラム作成装置１が生成したラベルの使用方法の一例を示す図である。図１２に示したように、ラベルを使用してプログラムを作成する場合、ユーザは、ラベル名を入力すなわち記述し、さらに、その直後にドット“．”を記述する。これに伴い、候補となるメンバの一覧すなわちフィールドの一覧が表示される。ユーザは、表示されたメンバの中からデータを格納するフィールドに対応するメンバを選択する。なお、「ＭＯＶ」命令は、第１引数に指定した値を、第２引数に代入する命令である。よって、図１２に示した「ＭＯＶ  Ｋ３０  ｒｅｃｏｒｄ．Ｍａｔｅｒｉａｌ＿Ａ」は、「Ｋ３０」で表された１０進数の３０をラベル「ｒｅｃｏｒｄ」のメンバ「Ｍａｔｅｒｉａｌ＿Ａ」に代入することを意味する。「ＭＯＶ  Ｋ３０  ｒｅｃｏｒｄ．Ｍａｔｅｒｉａｌ＿Ｂ」とした場合は１０進数の３０をラベル「ｒｅｃｏｒｄ」のメンバ「Ｍａｔｅｒｉａｌ＿Ｂ」に代入することになる。
【００４６】
次に、プログラム部品生成部１３がＦＢを生成する動作について説明する。図１３は、プログラム部品生成部１３が生成するＦＢの１つである、データベースにレコードを追加する操作で使用するレコード追加用ＦＢを示す図である。プログラム部品生成部１３は、テーブルの定義情報に基づいてＦＢの名称を決定するとともに、引数を決定してＦＢを生成する。ＦＢのインスタンス名については固定とし、図１３に示した例ではレコード追加用ＦＢのインスタンス名を「Ｉｎｓｅｒｔ０１」としている。また、ＦＢの名称は、ＦＢの処理を示す文字列をテーブルの名称に付加することにより決定する。図１３に示した例では、「＿Ｉｎｓｅｒｔ」をレコードの追加を示す文字列として使用している。レコード追加用ＦＢは、実行条件、追加するレコードの各フィールドに格納するデータ、返り値を引数とし、追加するレコードのデータをラベル名が「ｒｅｃｏｒｄ」のラベルで指定する構成となっている。ＥＮが実行条件、Ｒｅｃｏｒｄが追加するレコードのデータ、ＲＥＴが返り値である。
【００４７】
プログラム部品生成部１３がレコード追加用ＦＢを生成する動作について説明したが、データベースからレコードを削除する操作で使用するレコード削除用ＦＢを生成する動作、データベース内のレコードを更新する操作で使用するレコード更新用ＦＢを生成する動作、データベース内の所望のレコードを検索する操作で使用するレコード検索用ＦＢを生成する動作も同様である。
【００４８】
プログラム部品生成部１３は、レコード削除用ＦＢを生成する場合、テーブルの定義情報に基づいてレコード削除用ＦＢの名称を決定するとともに、引数を決定する。名称は、テーブルの名称に「＿Ｄｅｌｅｔｅ」を付加したものとする。引数は、実行条件、返り値、および、削除するレコードの検索キーとする。レコード追加用ＦＢと同様、インスタンス名は固定とし、ここでは「Ｄｅｌｅｔｅ０１」とする。また、プログラム部品生成部１３は、レコード更新用ＦＢを生成する場合、テーブルの定義情報に基づいてレコード更新用ＦＢの名称を決定するとともに、引数を決定する。名称は、テーブルの名称に「＿Ｕｐｄａｔｅ」を付加したものとする。引数は、実行条件、返り値、更新するレコードの検索キー、および、更新するレコードの各フィールドに格納するデータとする。レコード追加用ＦＢなどと同様、インスタンス名は固定とし、ここでは「Ｕｐｄａｔｅ０１」とする。また、プログラム部品生成部１３は、レコード検索用ＦＢを生成する場合、テーブルの定義情報に基づいてレコード検索用ＦＢの名称を決定するとともに、引数を決定する。名称は、テーブルの名称に「＿Ｓｅｌｅｃｔ」を付加したものとする。引数は、実行条件、返り値、レコードの検索キー、および、検索結果とする。レコード追加用ＦＢなどと同様、インスタンス名は固定とし、ここでは「Ｓｅｌｅｃｔ０１」とする。
【００４９】
つづいて、プログラム部品生成部１３が生成したＦＢを使用してラダープログラムを作成する方法を説明する。図１４は、実施の形態１にかかるプログラム作成装置１が表示する画面の一例を示す図である。図１４では、左側にプロジェクトの表示ウィンドウを表示し、右側にラダープログラムの作成ウィンドウを表示する画面の例を示している。ユーザは、例えば、左側のウィンドウに表示されたＦＢの中から使用するＦＢを選択し、ドラッグ・アンド・ドロップにより、選択したＦＢを右側のウィンドウに表示されたラダープログラムの中に挿入する。図１４は、上述したレコード追加用ＦＢを貼付する場合の例を示している。
【００５０】
レコード追加用ＦＢをラダープログラムの作成ウィンドウに貼付した場合、次に、ユーザは、図１５に示したように、追加するレコードデータの作成と、作成したレコードデータの追加処理の作成を行う。レコードデータは、構造体型のラベルｒｅｃｏｒｄの各メンバに対し、追加するレコードの各フィールドのデータを代入することで作成する。また、作成したレコードデータをレコード追加用ＦＢの引数に渡すようにする。図１５に示した例では、「ＭＯＶ  Ｋ１  ｒｅｃｏｒｄ．Ｐｒｏｄｕｃｔ＿ＩＤ」、「ＭＯＶ  Ｋ３０  ｒｅｃｏｒｄ．Ｍａｔｅｒｉａｌ＿Ａ」、「ＭＯＶ  Ｋ３０  ｒｅｃｏｒｄ．Ｍａｔｅｒｉａｌ＿Ｂ」および「ＭＯＶ  Ｋ４０  ｒｅｃｏｒｄ．Ｍａｔｅｒｉａｌ＿Ｃ」が、「ｒｅｃｏｒｄ」の各メンバにデータを代入してレコードデータを作成する処理に該当する。
【００５１】
図１５に示したラダープログラムの動作は以下のとおりである。
（１）Ｍ１０（ビットデバイス）がＯＮすると、
（２）ＦＢインスタンス「Ｉｎｓｅｒｔ０１」は、引数に指定された「ｒｅｃｏｒｄ」をデータベースに追加し、
（３）リターン値（１：成功  or  ０：失敗）をＭ５０（ビットデバイス）に格納する。
【００５２】
図１５に示したラダープログラムを動作させた場合、図１５の右下に示したように、Ｄａｔａｂａｓｅ１内の名称がＰｒｏｄｕｃｔ＿Ｒｅｃｉｐｅのテーブルに対して、Ｐｒｏｄｕｃｔ＿ＩＤが「１」、Ｍａｔｅｒｉａｌ＿ＡおよびＭａｔｅｒｉａｌ＿Ｂが「３０」、Ｍａｔｅｒｉａｌ＿Ｃが「４０」のレコードが追加される。
【００５３】
図１６は、レコード削除用ＦＢを使用したラダープログラムの一例を示す図である。レコード削除用ＦＢを使用したプログラムを作成する場合、ユーザは、レコード削除用ＦＢをラダープログラムに挿入した後、「Ｐｒｏｄｕｃｔ＿ＩＤ」を用いて削除するレコードを指定する。図１６に示したラダープログラムは、レコード削除用ＦＢであるＤｅｌｅｔｅ０１のＦＢを実行する前に「ＭＯＶ  Ｋ１  ｒｅｃｏｒｄ．Ｐｒｏｄｕｃｔ＿ＩＤ」を実行する内容となっている。また、Ｄｅｌｅｔｅ０１のＦＢに対し、削除するレコードの検索キーとして「ｒｅｃｏｒｄ．Ｐｒｏｄｕｃｔ＿ＩＤ」を与える内容となっている。図１６に示したラダープログラムを実行した場合、名称がＰｒｏｄｕｃｔ＿ＲｅｃｉｐｅのテーブルからＰｒｏｄｕｃｔ＿ＩＤが「１」のレコードが削除される。
【００５４】
図１７は、レコード更新用ＦＢを使用したラダープログラムの一例を示す図である。レコード更新用ＦＢを使用したプログラムを作成する場合、ユーザは、レコード更新用ＦＢをラダープログラムに挿入した後、「Ｐｒｏｄｕｃｔ＿ＩＤ」を用いて更新するレコードを指定するとともに「ｒｅｃｏｒｄ」を用いて各フィールドのデータを更新する。図１７に示したラダープログラムは、レコード更新用ＦＢであるＵｐｄａｔｅ０１のＦＢを実行する前に「ＭＯＶ  Ｋ１  ｒｅｃｏｒｄ．Ｐｒｏｄｕｃｔ＿ＩＤ」、「ＭＯＶ  Ｋ４０  ｒｅｃｏｒｄ．Ｍａｔｅｒｉａｌ＿Ａ」、「ＭＯＶ  Ｋ４０  ｒｅｃｏｒｄ．Ｍａｔｅｒｉａｌ＿Ｂ」、および「ＭＯＶ  Ｋ２０  ｒｅｃｏｒｄ．Ｍａｔｅｒｉａｌ＿Ｃ」を実行する内容となっている。また、Ｕｐｄａｔｅ０１のＦＢに対し、更新するレコードの検索キーとして「ｒｅｃｏｒｄ．Ｐｒｏｄｕｃｔ＿ＩＤ」を与え、レコードの各フィールドに格納するデータとして「ｒｅｃｏｒｄ」を与える内容となっている。図１７に示したラダープログラムを実行した場合、名称がＰｒｏｄｕｃｔ＿Ｒｅｃｉｐｅのテーブル内のＰｒｏｄｕｃｔ＿ＩＤが「１」のレコードが更新される。具体的には、「Ｍａｔｅｒｉａｌ＿Ａ」および「Ｍａｔｅｒｉａｌ＿Ｂ」が４０に更新され、「Ｍａｔｅｒｉａｌ＿Ｃ」が２０に更新される。
【００５５】
図１８は、レコード検索用ＦＢを使用したラダープログラムの一例を示す図である。レコード検索用ＦＢを使用したプログラムを作成する場合、ユーザは、レコード検索用ＦＢをラダープログラムに挿入した後、「Ｐｒｏｄｕｃｔ＿ＩＤ」を用いて検索するレコードを指定する。図１８に示したラダープログラムは、レコード検索用ＦＢであるＳｅｌｅｃｔ０１のＦＢを実行する前に「ＭＯＶ  Ｋ１  ｒｅｃｏｒｄ．Ｐｒｏｄｕｃｔ＿ＩＤ」を実行する内容となっている。また、Ｓｅｌｅｃｔ０１のＦＢに対し、レコードの検索キーとして「ｒｅｃｏｒｄ．Ｐｒｏｄｕｃｔ＿ＩＤ」を与える内容となっている。図１８に示したラダープログラムを実行した場合、名称がＰｒｏｄｕｃｔ＿Ｒｅｃｉｐｅのテーブル内のＰｒｏｄｕｃｔ＿ＩＤが「１」のレコードの検索が行われる。Ｓｅｌｅｃｔ０１のＦＢは、検索の結果、該当するレコードすなわちＰｒｏｄｕｃｔ＿ＩＤが「１」のレコードが存在していれば、このレコードのデータを出力引数「ＲＥＳ」に指定されたラベル「ｒｅｓｕｌｔｓ」に格納する。ここで、検索結果を格納するラベル「ｒｅｓｕｌｔｓ」は、ラベル「ｒｅｃｏｒｄ」と同じく「Ｐｒｏｄｕｃｔ＿Ｒｅｃｉｐｅ」型の変数である。なお、検索結果が複数の場合、「ｒｅｓｕｌｔｓ」は配列（構造体配列）となる。ラベル「ｒｅｓｕｌｔｓ」は、プログラム部品生成部１３がラベル「ｒｅｃｏｒｄ」を生成する際に一緒に生成される。図１８に示した例では、Ｐｒｏｄｕｃｔ＿ＩＤが「１」のレコードの各フィールドに格納されているデータが「ｒｅｓｕｌｔｓ」の各メンバに格納される。
【００５６】
つづいて、プログラム作成部１６がプログラムをコンパイルすることにより得られるプログラムファイルについて説明する。
【００５７】
プログラムファイルの中では、プログラムはＰＬＣの命令列として表現される。プログラム部品生成部１３が生成したデータベース操作用の各種ＦＢについても、それぞれＦＢ呼出し命令として変換すなわちコンパイルされ、プログラムファイルに保存される。ＦＢ呼出し命令は、データベース操作用のＦＢに限らず、通常のＦＢでも同様に使用するものであり、引数に指定したサブルーチン呼出しを実行する。また、ＦＢの引数に指定した値は、サブルーチンに渡す引数として指定される。但し、データベース操作用のＦＢを変換する場合、ＦＢの引数に指定した値だけでなく、対象のデータベースおよびテーブルを併せて指定する。また、通常のＦＢと異なり、ＰＬＣ２のデータベース管理システム（ＤＢＭＳ）が備えているアプリケーション・プログラミング・インタフェース（ＡＰＩ：Application  Programming  Interface）をサブルーチンとして呼び出す。
【００５８】
図１９は、実施の形態１にかかるプログラム作成装置１がデータベース操作用のＦＢを変換することにより得られるＦＢ呼出し命令の一例を示す図である。なお、プログラム作成部１６は、データベース操作用の各ＦＢを変換する際、各ＦＢの引数に指定された値が受け入れ可能かどうかのチェックを併せて実行する。特に、テーブルを操作するためのレコードを指定する引数、検索キーを指定する引数については、当該テーブルに対応するラベルを使用して指定されているかどうかをチェックする。プログラム作成部１６は、テーブルを操作するためのレコードを指定する引数、検索キーを指定する引数が対応するラベルを使用して指定されていない場合、変換エラーとする。
【００５９】
つづいて、プログラム作成部１６が生成したプログラムファイルをＰＬＣ２が実行する動作について説明する。
【００６０】
プログラム作成装置１のプログラム作成部１６が生成したプログラムファイルは通信部１８を介してＰＬＣ２へ送信され、プログラムファイル記憶部２５で記憶される。ＰＬＣ２では、プログラム実行部２４がプログラムファイル記憶部２５からプログラムファイルを読み出し、プログラムファイルに書かれている命令を順次解釈して実行する。ここで、プログラム実行部２４は、データベース操作用のＦＢのＦＢ呼出し命令を検出すると、データベース２３を管理するＤＢＭＳが備えているＡＰＩの呼出し処理を実行し、データベース２３に対して操作を行う。ＡＰＩは、ＰＬＣ２のファームウェアから直接呼出し可能な関数、または、ＳＱＬステートメントであってもよい。なお、操作対象のデータベース２３そのものは、プログラム作成装置１のＤＢ定義ファイル生成部１２で生成されたＤＢ定義ファイルに基づいてデータベース生成部２１により生成される。データベース生成部２１は、データベース２３を生成する際、ＤＢＭＳのＡＰＩを呼び出すことにより、データベースを生成する。データベース２３、およびデータベース２３を操作するプログラムの両方がＰＬＣ２の内蔵メモリすなわち図２に示したメモリ４に格納された状態でＰＬＣ２が実行状態に移行すると、ＰＬＣ２はデータベース２３にアクセスするプログラムを実行する。
【００６１】
以上のように、本実施の形態にかかるプログラム作成装置１は、ＰＬＣ２の内部に構築するデータベースを構成する各テーブルの定義情報をユーザから取得し、取得した定義情報に基づいて、ＤＢ定義ファイルと、データベースの操作を指令するためのプログラム部品としてのラベルおよびＦＢとを生成する。これにより、データベースを操作するプログラムの作成作業の煩雑さを解消させることができ、プログラム作成にかかる作業量を削減することができる。従来は、メモリマップおよびデータベース定義を意識しながらデータベースにアクセスするプログラムを作成する必要があった。例えば、データベースに追加するレコードのデータをデバイスに格納していたため、データとアドレスの関係を管理する必要があった。また、対象のテーブルがどのフィールドを備えているかどうか、都度データベース定義書等で確認する必要があった。一方、本実施の形態にかかるプログラム作成装置１では、データベースを構成する各テーブルの定義情報に従って構造体型のラベルを生成し、ユーザはラベルを使用してデータベース操作用のプログラムを作成することが可能である。そのため、ユーザはメモリマップを意識する必要がない。また、データベース定義書等を参照しなくても、データベースがどのフィールドを備えているか知ることができる。
【００６２】
実施の形態２．
図２０は、本発明の実施の形態２にかかるプログラム作成装置およびプログラム作成装置が作成したプログラムを実行するＰＬＣの構成例を示す図である。
【００６３】
実施の形態２にかかるプログラム作成装置１ａは、実施の形態１で説明したプログラム作成装置１の定義情報取得部１１を定義情報取得部１１ａとし、さらに、ＤＢ定義ファイル取得部１９を追加したものである。プログラム作成装置１ａの定義情報取得部１１ａおよびＤＢ定義ファイル取得部１９以外の構成要素は、プログラム作成装置１の同じ符号が付された構成要素と同じであるため、説明を省略する。プログラム作成装置１ａは、プログラム作成装置１と同様に、図２に示したハードウェア１００で実現することができる。
【００６４】
実施の形態２にかかるＰＬＣ２ａは、実施の形態１で説明したＰＬＣ２に対してＤＢ定義ファイル送信部２７を追加したものである。ＰＬＣ２ａのＤＢ定義ファイル送信部２７以外の構成要素は、ＰＬＣ２の同じ符号が付された構成要素と同じであるため、説明を省略する。
【００６５】
本実施の形態にかかるプログラム作成装置１ａおよびＰＬＣ２ａの動作について、プログラム作成装置１ａの定義情報取得部１１ａおよびＤＢ定義ファイル取得部１９、ＰＬＣ２ａのＤＢ定義ファイル送信部２７の動作を中心に説明する。
【００６６】
ＤＢ定義ファイル取得部１９は、ＰＬＣ２ａからＤＢ定義ファイルの読み出しを指示する操作がユーザにより行われたことを検出した場合、ＰＬＣ２ａのＤＢ定義ファイル送信部２７に対し、ＤＢ定義ファイルの送信を要求する。
【００６７】
ＰＬＣ２ａのＤＢ定義ファイル送信部２７は、プログラム作成装置１ａのＤＢ定義ファイル取得部１９からＤＢ定義ファイルの送信要求を受けた場合、ＤＢ定義ファイル記憶部２２がＤＢ定義ファイルを記憶していれば、それを読出してプログラム作成装置１ａのＤＢ定義ファイル取得部１９に送信する。
【００６８】
プログラム作成装置１ａのＤＢ定義ファイル取得部１９は、ＰＬＣ２ａのＤＢ定義ファイル送信部２７からＤＢ定義ファイルを受信した場合、受信したＤＢ定義ファイルを定義情報取得部１１ａに出力するとともに、ＤＢ定義ファイル記憶部１４に格納する。
【００６９】
定義情報取得部１１ａは、ＤＢ定義ファイル取得部１９からＤＢ定義ファイルを受け取った場合にこれを解析し、プログラム部品生成部１３がプログラム部品を生成するために必要なデータベース定義情報を抽出してプログラム部品生成部１３に出力する。すなわち、定義情報取得部１１ａは、ＰＬＣ２ａ内に構築されているデータベース２３のデータベース定義情報をＰＬＣ２ａから取得する。なお、定義情報取得部１１ａは、実施の形態１で説明した定義情報取得部１１が有する機能、すなわちデータベース定義情報をユーザから取得する機能も有する。
【００７０】
なお、ＰＬＣ２ａのＤＢ定義ファイル送信部２７は、ＤＢ定義ファイルの送信要求を受けた場合、データベース２３からデータベース定義情報を取得し、取得したデータベース定義情報を使用してＤＢ定義ファイルを生成してプログラム作成装置１ａのＤＢ定義ファイル取得部１９へ送信するようにしてもよい。この場合、ＤＢ定義ファイル送信部２７は、ＤＢＭＳのＡＰＩを使用して、データベース２３からデータベース定義情報を取得する。
【００７１】
このように、本実施の形態にかかるプログラム作成装置１ａは、ＰＬＣ２ａから既存のデータベースのＤＢ定義ファイルを取得するＤＢ定義ファイル取得部１９を備え、ＤＢ定義ファイル取得部１９が取得したＤＢ定義ファイルに基づいて、データベースの操作を指令するためのプログラム部品を生成する。本実施の形態にかかるプログラム作成装置１ａによれば、既存のデータベース資産を流用し、当該データベースに対する操作プログラムの設計工数を削減することが可能となる。例えば、プログラム作成装置１ａは、プログラム作成装置１ａが作成したＤＢ定義ファイルとは異なるＤＢ定義ファイルに基づいてデータベース２３の生成が終了している状態のＰＬＣ２ａと接続し、ＰＬＣ２ａから取得したＤＢ定義ファイルに基づいてプログラム部品を生成する。その結果、プログラム作成装置１ａのユーザは、既存のＤＢ定義ファイルに基づいて生成されたプログラム部品を使用してＰＬＣ２ａのプログラムを修正することができる。
【００７２】
各実施の形態では、プログラム部品生成部１３が、データベース２３の各テーブルに対してレコードの追加を実行する関数定義、各テーブルに対してレコードの更新を実行する関数定義、各テーブルに対してレコードの削除を実行する関数定義、および、各テーブルに対してレコードの検索を実行する関数定義をプログラム部品として生成することとした。しかし、プログラム部品生成部１３の動作は一例であり、プログラム部品生成部１３は、データベース２３に対する他の操作を表す関数定義をプログラム部品として生成してもよい。また、プログラム部品生成部１３は、上記の関数定義の中の少なくとも１つ以上を生成する構成であってもよい。
【００７３】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００７４】
１，１ａ  プログラム作成装置、２，２ａ  プログラマブルロジックコントローラ、１１，１１ａ  定義情報取得部、１２  ＤＢ定義ファイル生成部、１３  プログラム部品生成部、１４  ＤＢ定義ファイル記憶部、１５  プログラム部品記憶部、１６  プログラム作成部、１７，２５  プログラムファイル記憶部、１８，２６  通信部、１９  ＤＢ定義ファイル取得部、２１  データベース生成部、２２  ＤＢ定義ファイル記憶部、２３  データベース、２４  プログラム実行部、２７  ＤＢ定義ファイル送信部。
【要約】
本発明にかかるプログラム作成装置（１）は、プログラマブルロジックコントローラ内のデータベースの構成を示す情報であるデータベース定義情報を取得する定義情報取得部（１１）と、データベースを操作するプログラムの作成に使用するプログラム部品をデータベース定義情報に基づいて生成するプログラム部品生成部（１３）と、を備える。【図１】
0006370503.tif 000002
【図２】
0006370503.tif 000003
【図３】
0006370503.tif 000004
【図４】
0006370503.tif 000005
【図５】
0006370503.tif 000006
【図６】
0006370503.tif 000007
【図７】
0006370503.tif 000008
【図８】
0006370503.tif 000009
【図９】
0006370503.tif 000010
【図１０】
0006370503.tif 000011
【図１１】
0006370503.tif 000012
【図１２】
0006370503.tif 000013
【図１３】
0006370503.tif 000014
【図１４】
0006370503.tif 000015
【図１５】
0006370503.tif 000016
【図１６】
0006370503.tif 000017
【図１７】
0006370503.tif 000018
【図１８】
0006370503.tif 000019
【図１９】
0006370503.tif 000020
【図２０】
0006370503.tif 000021