(57)【要約】【課題】テーブルにおけるカラムと構造体におけるメンバとの対応付けを容易に行える。【解決手段】制御システムは、１または複数のテーブルを保持しているデータベースと、制御プログラムを実行する、データベースにアクセス可能な制御装置とを備える。制御システムは、１または複数のテーブルのうち選択されたテーブルを構成するカラムの数および各カラムのデータ型を取得する。制御システムは、取得したカラムの数に対応する数のメンバを含む、制御プログラムにおいて利用可能な構造体を定義する。制御システムは、取得した各カラムのデータ型に対応付けて、構造体の各メンバのデータ型を決定する。【選択図】図１
2020144753.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御するための制御システムであって、
１または複数のテーブルを保持しているデータベースと、
制御プログラムを実行する、前記データベースにアクセス可能な制御装置と、
前記１または複数のテーブルのうち選択されたテーブルを構成するカラムの数および各カラムのデータ型を取得する取得手段と、
前記取得したカラムの数に対応する数のメンバを含む、前記制御プログラムにおいて利用可能な構造体を定義する設定手段と、
前記取得した各カラムのデータ型に対応付けて、前記構造体の各メンバのデータ型を決定する決定手段とを備える、制御システム。
【請求項２】
前記決定手段は、前記制御プログラムで利用可能なデータ型の中から前記構造体の各メンバのデータ型を決定する、請求項１に記載の制御システム。
【請求項３】
前記決定手段は、データ型の１または複数の候補に対する、ユーザによる選択に従って、前記構造体の各メンバのデータ型を決定する、請求項１または２に記載の制御システム。
【請求項４】
前記決定手段は、前記選択されたテーブルのテーブル名を、前記構造体の全体を参照するための変数の属性情報として対応付ける、請求項１〜３のいずれか１項に記載の制御システム。
【請求項５】
前記決定手段は、前記構造体の各メンバのメンバ名を、前記各カラムのカラム名に対応付ける、請求項１〜４のいずれか１項に記載の制御システム。
【請求項６】
前記制御プログラムは、前記データベースへのアクセスを制御する命令を実行するためのファンクションブロックを含み、
前記ファンクションブロックには、前記テーブルのテーブル名と、前記構造体の全体を参照するための変数とがそれぞれ引数として設定される、請求項１〜５のいずれか１項に記載の制御システム。
【請求項７】
前記各メンバに設定された値からなるレコードを、対応するテーブルに追加する処理を実行させるためのプログラムテンプレートを生成する生成部をさらに備える、請求項１〜６のいずれか１項に記載の制御システム。
【請求項８】
前記制御装置で実行される制御プログラムの開発を支援する情報処理装置をさらに備え、
前記情報処理装置は、
前記取得手段、前記設定手段および前記決定手段を含む、請求項１〜７のいずれか１項に記載の制御システム。
【請求項９】
制御装置で実行される制御プログラムの開発を支援する情報処理装置であって、
前記制御装置がアクセス可能なデータベースが保持している１または複数のテーブルのうち選択されたテーブルを構成するカラムの数よび各カラムのデータ型を取得する取得手段と、
前記取得したカラムの数に対応する数のメンバを含む、前記制御プログラムにおいて利用可能な構造体を定義する設定手段と、
前記取得した各カラムのデータ型に対応付けて、前記構造体の各メンバのデータ型を決定する決定手段とを備える、情報処理装置。
【請求項１０】
制御装置で実行される制御プログラムの開発を支援する情報処理装置の情報処理プログラムであって、
前記情報処理プログラムは前記情報処理装置に、
前記制御装置がアクセス可能なデータベースが保持している１または複数のテーブルのうち選択されたテーブルを構成するカラムの数よび各カラムのデータ型を取得するステップと、
前記取得したカラムの数に対応する数のメンバを含む、前記制御プログラムにおいて利用可能な構造体を定義するステップと、
前記取得した各カラムのデータ型に対応付けて、前記構造体の各メンバのデータ型を決定するステップとを実行させる、情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データベース上のテーブルにアクセスするための技術に関する。
【背景技術】
【０００２】
様々な生産現場において、生産工程を自動化するＦＡ（Factory  Automation）システムが普及している。ＦＡシステムは、種々の産業用の駆動機器によって構成される。産業用の駆動機器は、例えば、ワークを移動するための移動テーブルや、ワークを搬送するためのコンベアや、予め定められた目的の場所までワーク移動するためのアームロボットなどを含む。これらの駆動機器は、ＰＬＣ（Programmable Logic Controller）やロボットコントローラなどの産業用の制御装置によって制御される。
【０００３】
近年、外部装置のデータベースにアクセスすることができる制御装置や情報処理装置が普及している。特開２０１６−１９４８０８号公報（特許文献１）は、「ＳＱＬの記述なしにデータベースを操作する技術において、簡易な仕組みで、複数のレコードをまとめて操作する」ことができる制御装置を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−１９４８０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、制御装置および情報処理装置のいずれかが、制御プログラムにおいて利用可能な構造体に登録されたデータを、データベースのテーブルにアクセスする場合、テーブルにおけるカラムと構造体におけるメンバとを対応付けておく必要がある。このような対応付けを、ユーザが御装置および情報処理装置のいずれかを用いて個別に実行すると、当該対応付けを完了させるまでに多くの時間を要することがある。したがって、テーブルにおけるカラムと構造体におけるメンバとの対応付けを容易に行える技術が必要とされている。
【０００６】
本開示は、係る実情に鑑み考え出されたものであり、テーブルにおけるカラムと構造体におけるメンバとの対応付けを容易に行える技術が開示される。
【課題を解決するための手段】
【０００７】
本開示の一例では、制御対象を制御する制御システムは、１または複数のテーブルを保持しているデータベースと、制御プログラムを実行する、上記データベースにアクセス可能な制御装置と、上記１または複数のテーブルのうち選択されたテーブルを構成するカラムの数および各カラムのデータ型を取得する取得手段と、上記取得したカラムの数に対応する数のメンバを含む、上記制御プログラムにおいて利用可能な構造体を定義する設定手段と、上記取得した各カラムのデータ型に対応付けて、上記構造体の各メンバのデータ型を決定する決定手段とを備える。
【０００８】
この開示によれば、制御システムは、カラムとメンバとの対応付けが予め行われているため、データが登録された構造体のレコードのテーブルへの追加を含む処理を容易に行える。
【０００９】
本開示の一例では、記決定手段は、上記制御プログラムで利用可能なデータ型の中から上記構造体の各メンバのデータ型を決定する。
【００１０】
この開示によれば、制御システムは、テーブルにおけるカラムのデータ型に適した構造体におけるメンバのデータ型を容易に対応付けられる。
【００１１】
本開示の一例では、上記決定手段は、データ型の１または複数の候補に対する、ユーザによる選択に従って、上記構造体の各メンバのデータ型を決定する。
【００１２】
この開示によれば、制御システムは、カラムのデータ型に対応付けることが可能なメンバのデータ型をユーザに対して提供できる。
【００１３】
本開示の一例では、上記決定手段は、上記選択されたテーブルのテーブル名を、上記構造体の全体を参照するための変数の属性情報として対応付ける。
【００１４】
この開示によれば、制御システムは、ユーザプログラムにおける構造体がいずれのテーブルに対応付けられたものかを示す情報をユーザに対して提供できる。
【００１５】
本開示の一例では、上記決定手段は、上記構造体の各メンバのメンバ名を、上記各カラムのカラム名に対応付ける。
【００１６】
この開示によれば、制御システムは、カラムに対応付けられたメンバを識別可能な情報をユーザに提供できる。
【００１７】
本開示の一例では、上記制御プログラムは上記データベースへのアクセスを制御する命令を実行するためのファンクションブロックを含み、上記ファンクションブロックには、上記テーブルのテーブル名と、上記構造体の全体を参照するための変数とがそれぞれ引数として設定される。
【００１８】
この開示によれば、制御システムは、構造体の定義と当該構造体のデータ型の決定とを含む処理を制御装置に自動で実行させることができる。
【００１９】
本開示の一例では、制御システムは、上記各メンバに設定された値からなるレコードを、対応するテーブルに追加する処理を実行させるためのプログラムテンプレートを生成する生成部をさらに備える。
【００２０】
この開示によれば、制御システムは、プログラムテンプレートを用いることで、データベース４１０にアクセス可能なユーザプログラム７０を容易に生成できる。
【００２１】
本開示の一例では、上記制御装置で実行される制御プログラムの開発を支援する情報処理装置をさらに備え、上記情報処理装置は、上記取得手段、上記設定手段および上記決定手段を含む。
【００２２】
この開示によれば、制御システムは、カラムとメンバとの対応付けが予め行われているため、データが登録された構造体のレコードのテーブルへの追加を含む処理を容易に行える。
【００２３】
本開示の一例では、制御装置で実行される制御プログラムの開発を支援する情報処理装置は、上記制御装置がアクセス可能なデータベースが保持している１または複数のテーブルのうち選択されたテーブルを構成するカラムの数よび各カラムのデータ型を取得する取得手段と、上記取得したカラムの数に対応する数のメンバを含む、上記制御プログラムにおいて利用可能な構造体を定義する設定手段と、上記取得した各カラムのデータ型に対応付けて、上記構造体の各メンバのデータ型を決定する決定手段とを備える。
【００２４】
この開示によれば、情報処理装置は、カラムとメンバとの対応付けが予め行われているため、データが登録された構造体のレコードのテーブルへの追加を含む処理を容易に行える。
【００２５】
本開示の一例では、制御装置で実行される制御プログラムの開発を支援する情報処理装置の情報処理プログラムは、上記情報処理プログラムは上記情報処理装置に、上記制御装置がアクセス可能なデータベースが保持している１または複数のテーブルのうち選択されたテーブルを構成するカラムの数よび各カラムのデータ型を取得するステップと、上記取得したカラムの数に対応する数のメンバを含む、上記制御プログラムにおいて利用可能な構造体を定義するステップと、上記取得した各カラムのデータ型に対応付けて、上記構造体の各メンバのデータ型を決定するステップとを実行させる。
【００２６】
この開示によれば、情報処理プログラムは、カラムとメンバとの対応付けが予め行われているため、データが登録された構造体のレコードのテーブルへの追加を含む処理を容易に行える。
【発明の効果】
【００２７】
本開示によれば、テーブルにおけるカラムと構造体におけるメンバとの対応付けを容易に行えるようになる。
【図面の簡単な説明】
【００２８】
【図１】制御システムの構成例について説明する図である。
【図２】情報処理装置のハードウェア構成を示す図である。
【図３】データベースの種別の選択を受け付けるための画面例を表わす図である。
【図４】データベースのテーブルの選択を受け付けるための画面例を表わす図である。
【図５】構造体のデータ型の選択を受け付けるための画面例を表わす図である。
【図６】ユーザの確認用に構造体のデータ型を表示する画面例を表わす図である。
【図７】構造体を含む生成アイテムを選択するための画面例を表わす図である。
【図８】ユーザの確認用に生成された構造体および変数を表示する画面例を表わす図である。
【図９】ユーザプログラムに含まれるファンクションブロックの一例を示す図である。
【図１０】ファンクションブロックを含むユーザプログラムの一例について説明する図である。
【図１１】テーブルにレコードを追加する一例を示した図である。
【図１２】制御装置のハードウェア構成の一例を示す模式図である。
【図１３】外部装置のハードウェア構成を示すブロック図である。
【図１４】制御システムの処理手順について説明するフローチャートである。
【図１５】情報処理装置が運用前の処理を行う場合の処理手順について説明するフローチャートである。
【図１６】情報処理装置が運用前の処理を行う場合の処理手順について説明するフローチャートである。
【図１７】第２の実施の形態における制御システムの構成例について説明する図である。
【図１８】第３の実施の形態における制御システムの構成例について説明する図である。
【図１９】ユーザプログラムに含まれるファンクションブロックの一例を示す図である。
【図２０】ファンクションブロックを含むユーザプログラムの一例について説明する図である。
【発明を実施するための形態】
【００２９】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００３０】
＜適用例＞
図１を参照して、本発明の適用例について説明する。図１は、制御システム１の構成例について説明する図である。制御システム１は、例えば、生産工程を自動化するためのＦＡシステムである。制御システム１は、情報処理装置１００と、制御装置２００と、外部装置３００とを含む。情報処理装置１００と、制御装置２００と、外部装置３００とは、第１ネットワークに接続されている。第１ネットワークには、ＥｔｈｅｒＮＥＴ（登録商標）等の情報系ネットワークに適したネットワークが用いられる。
【００３１】
制御装置２００は、外部装置３００における後述するデータベース４１０にアクセス可能である。なお、以下ではデータベースをＤＢとも称する。また、制御装置２００は、フィールドに設けられた駆動装置（図示せず）と第２ネットワークで接続される。制御装置２００は、駆動装置と定周期通信を行う。第２ネットワークには、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが採用される。
【００３２】
外部装置３００は、データベース機能を有するＤＢＭＳ（Database Management System）である。外部装置３００は、例えば、ノート型またはデスクトップ型のＰＣまたはサーバである。より具体的には、外部装置３００は、データベース４１０を有する。データベース４１０は、１または複数のテーブル４２０を保持する。テーブル４２０は、列を示す１または複数のカラムと、行を示す１または複数のレコードとを含む。各カラムには格納されるデータの種類に応じたデータ型が設定される。
【００３３】
情報処理装置１００は、例えば、ノート型またはデスクトップ型のＰＣ（Personal Computer）、タブレット端末、スマートフォン、または、制御装置２００用の制御プログラムを開発することが可能な装置である。制御プログラムは、ユーザプログラム（例えば、後述するユーザプログラム７０）として制御装置２００にインストールできる。以下では、制御プログラムをユーザプログラム（ＵＰＧ）とも称する。情報処理装置１００は、外部装置３００におけるデータベース４１０にアクセス可能である。情報処理装置１００は、記憶装置１０８、取得モジュール１１０、設定モジュール１２０、決定モジュール１３０および生成モジュール１４０を含む。記憶装置１０８は、開発支援プログラム３０およびデータ型対応表４０を含む。
【００３４】
開発支援プログラム３０は、制御装置２００用の制御プログラムの開発を支援するためのプログラムである。情報処理装置１００は、記憶装置１０８に格納された開発支援プログラム３０が読み出されて実行されると、取得モジュール１１０、設定モジュール１２０、決定モジュール１３０および生成モジュール１４０の機能を実行可能となる。
【００３５】
データ型対応表４０は、データベース４１０のテーブル４２０におけるカラムのデータ型と、ユーザプログラム７０における構造体におけるメンバのデータ型との対応関係を表わすリストである。構造体は、データの集まりを一定の形式で格納したものである。したがって、構造体は一つの単位として扱うことのできるデータ群ともいえる。構造体は互いに関連付けられたメンバを特定可能に含み得る。
【００３６】
取得モジュール１１０は、データベース４１０に保持された１または複数のテーブル４２０のうち、情報処理装置１００が受け付けたユーザ操作により選択されたテーブル４２０の情報を取得する。テーブル４２０の情報は、当該テーブル４２０を構成するカラムの数および各カラムのデータ型を含む。取得モジュール１１０は、例えば、第１テーブルのカラムの数として「４」を取得する。カラムの数「４」は、第１テーブルにおける第１カラム４５１と、第２カラム４５２と、第３カラム４５３と、第４カラム４５４とを合計した数である。なお、以下では、１または複数のカラムを総称してカラム４５０とも称する。
【００３７】
取得モジュール１１０は、カラム４５０（例えば、第１カラム４５１〜第４カラム４５４）のデータ型を取得する。より具体的には、取得モジュール１１０は、第１カラム４５１のデータ型として設定されている「ｄｅｃｉｍａｌ（１）」を取得する。取得モジュール１１０は、第２カラム４５２のデータ型として設定されている「ｄｅｃｉｍａｌ（５）」を取得する。取得モジュール１１０は、第３カラム４５３のデータ型として設定されている「ｎｃｈａｒ（１９）」を取得する。取得モジュール１１０は、第４カラム４５４のデータ型として設定されている「ＴｉｍｅＳＴＡＭＰ」を取得する。「ｄｅｃｉｍａｌ」は、固定小数点数を扱うデータ型である。「ｎｃｈａｒ」は、固定長の文字列のテータ型である。「ＴｉｍｅＳＴＡＭＰ」は、年、月、日、時、分および秒の六つの属性を持つ時刻印のデータ型である。
【００３８】
設定モジュール１２０は、取得モジュール１１０が取得したカラム４５０の数に対応する構造体を定義する。構造体は、ユーザプログラム７０において利用可能であり、カラム数に対応する数のメンバを含む。より具体的には、設定モジュール１２０は、カラムの数「４」に対応した数「４」のメンバを含む構造体を定義する。設定モジュール１２０は、例えば、第１メンバ１５１、第２メンバ１５２、第３メンバ１５３および第４メンバ１５４を含む第１構造体を定義する。以下では、１または複数のメンバを総称してメンバ１５０とも称する。
【００３９】
決定モジュール１３０は、取得モジュール１１０が取得した各カラム４５０のデータ型に対応付けて、構造体の各メンバ１５０のデータ型を決定する。より具体的には、決定モジュール１３０は、データ型対応表４０に基づき、各カラム４５０のデータ型に対応付けて各メンバ１５０のデータ型を決定する。決定モジュール１３０は、第１カラム４５１のデータ型の「ｄｅｃｉｍａｌ（１）」に対応する第１メンバ１５１のデータ型として、「ｂｏｏｌ」を決定する。決定モジュール１３０は、第２カラム４５２のデータ型の「ｄｅｃｉｍａｌ（５）」に対応付する第２メンバ１５２のデータ型として、「Ｉｎｔ」を決定する。決定モジュール１３０は、第３カラム４５３のデータ型の「ｎｃｈａｒ（１９）」に対応する第３メンバ１５３のデータ型として、「Ｓｔｒｉｎｇ（２０）」を決定する。決定モジュール１３０は、第４カラム４５４のデータ型の「ＴｉｍｅＳＴＡＭＰ」に対応付する第４メンバ１５４のデータ型として、「ＤＡＴＥ_ＡＮＤ_ＴＩＭＥ」を決定する。これにより、制御システム１は、テーブル４２０におけるカラム４５０と構造体におけるメンバ１５０との対応付けを容易に行える。
【００４０】
生成モジュール１４０は、ユーザプログラム７０を生成し、生成されたユーザプログラム７０を制御装置２００に送信する。制御装置２００が構造体を構成する各メンバ１５０にデータを登録する。ユーザプログラム７０は、一例として、当該データが登録された構造体のレコードをデータベース４１０のテーブル４２０に追加する処理を実行するためのプログラムである。制御システム１は、カラム４５０とメンバ１５０との対応付けが予め行われているため、データが登録された構造体のレコードのテーブル４２０への追加を含む処理を容易に行える。
【００４１】
＜第１の実施の形態＞
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００４２】
［Ａ．情報処理装置１００のハードウェア構成］
図２は、情報処理装置１００のハードウェア構成を示す図である。図２を参照して、情報処理装置１００は、制御部１０２と、主メモリ１０４と、記憶装置１０８と、通信インターフェイス１１２と、表示インターフェイス１１４と、Ｉ／Ｏインターフェイス１１６とを含む。
【００４３】
制御部１０２は、記憶装置１０８に格納された開発支援プログラム３０を読み出して、当該開発支援プログラム３０を主メモリ１０４に展開する。制御部１０２は、取得モジュール１１０、設定モジュール１２０、決定モジュール１３０および生成モジュール１４０として機能する。なお、以下では制御部１０２が開発支援プログラム３０実行することで必要な処理が実現される構成例について説明するが、これらの提供される処理の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡ等）を用いて実装してもよい。
【００４４】
記憶装置１０８は、開発支援プログラム３０、データ型対応表４０、テンプレート６０、ユーザプログラム７０を含む。テンプレート６０は、生成モジュール１４０がユーザプログラム７０を生成する場合に、ひな形として用いられる。生成モジュール１４０がテンプレート６０を用いてユーザプログラムを生成する具体例については後述する。
【００４５】
通信インターフェイス１１２は、他の通信機器との間で、例えば、第１ネットワークを介してデータを遣り取りする。他の通信機器は、例えば、制御装置２００、外部装置３００などを含む。情報処理装置１００は、通信インターフェイス１１２を介して、他の通信機器から、開発支援プログラム３０などの各種プログラムをダウンロード可能なように構成されてもよい。
【００４６】
表示インターフェイス１１４は、表示部１２２と電気的に接続され、制御部１０２などからの指令に従って、表示部１２２に対して、画像を表示するための画像信号を送出する。表示部１２２は、ＬＣＤ（Liquid Crystal Display）や有機ＥＬ（Electro Luminescence）ディスプレイなどからなり、ユーザに対して各種情報を提示する。表示部１２２には、情報処理装置１００によって提供される各種画面（例えば、後述するデータベース選択画面５１０（図３参照））が表示され得る。図２の例では、情報処理装置１００と表示部１２２とが別体として示されているが、情報処理装置１００と表示部１２２とは、一体的に構成されてもよい。
【００４７】
Ｉ／Ｏインターフェイス１１６は、操作部１２４と電気的に接続され、操作部１２４からのユーザ操作を示す信号を取り込む。操作部１２４は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受け付ける。
【００４８】
［Ｂ．カラム４５０とメンバ１５０とを対応付けるための設定の画面例］
次に、図３〜図８を用いてデータベース４１０におけるカラム４５０と、ユーザプログラム７０におけるメンバ１５０とを対応付けるための設定の画面例について説明する。当該設定は、情報処理装置１００が操作部１２４を用いたユーザ操作を受け付けることで実行される。
【００４９】
［ｂ１．データベース選択画面５１０］
図３は、データベース４１０の種別の選択を受け付けるための画面例を表わす図である。図３を参照して、表示部１２２は、データベース種別、ＩＰアドレス、インスタンス名、サービス名、ユーザ名およびパスワード等の項目と、次画面ボタン５４０および前画面ボタン５４２とを含むデータベース選択画面５１０を表示する。
【００５０】
情報処理装置１００は、例えば、操作部１２４を用いたユーザによるデータベース４１０の選択を受け付ける。データベース４１０の種別は、例えば、「Ｏｒａｃｌｅ  Ｄａｔａｂａｓｅ」、「ＭｙＳＱＬ」および「ＳＱＬｉｔｅ」等である。データベースの種別はこれらに限定されることはなく、他の種類のデータベースであってもよい。
【００５１】
情報処理装置１００は、データベース種別を含むその他の情報の入力を受け付ける。その後、情報処理装置１００は、操作部１２４を用いたユーザ操作により、次画面ボタン５４０が選択されると、図４に示すテーブル選択画面５１１を表示部１２２に表示する。なお、情報処理装置１００は、操作部１２４を用いたユーザ操作により、前画面ボタン５４２が選択されると、データベース選択画面５１０が表示される直前に表示部１２２に表示されていた画面を表示する。
【００５２】
［ｂ２．テーブル選択画面５１１］
図４は、データベース４１０のテーブル４２０の選択を受け付けるための画面例を表わす図である。図４を参照して、表示部１２２は、ＤＢコネクションサービス設定、ＤＢコネクション設定およびＤＢテーブル等の項目と、次画面ボタン５４０および前画面ボタン５４２とを含むテーブル選択画面５１１を表示する。情報処理装置１００は、例えば、操作部１２４を用いたユーザによるテーブル４２０の選択を受け付ける。その後、情報処理装置１００は、操作部１２４を用いたユーザ操作により、次画面ボタン５４０が選択されると、図５に示すデータ型選択画面５１２を表示部１２２に表示する。なお、情報処理装置１００は、操作部１２４を用いたユーザ操作により、前画面ボタン５４２が選択されると、テーブル選択画面５１１が表示される直前に表示部１２２に表示されていた画面を表示する。
【００５３】
［ｂ３．データ型選択画面５１２］
図５は、構造体のデータ型の選択を受け付けるための画面例を表わす図である。図５を参照して、表示部１２２は、第１テーブルのカラム名、ＤＢデータ型およびＵＰＧデータ型の項目と、次画面ボタン５４０および前画面ボタン５４２とを含むデータ型選択画面５１２を表示部１２２に表示する。第１テーブルは、前述のテーブル選択画面５１１で選択されたテーブルである。カラム名は、各カラム４５０の属性情報であり、テーブル４２０に含まれる情報である。カラム名は、例えば、「ＤＡＴＡ１」〜「ＤＡＴＡ４」のように各カラム４５０を識別可能な情報である。ＤＢデータ型は各カラム４５０に設定されたデータ型である。ＵＰＧデータ型は、各カラム４５０のデータ型に対応付けられる各メンバ１５０のデータ型である。当該対応付けは、データ型対応表４０に基づいて行われる。
【００５４】
情報処理装置１００は、例えば、操作部１２４を用いたユーザによるＵＰＧデータ型の選択を受け付ける。より具体的には、情報処理装置１００の決定モジュール１３０は、選択欄５５８に表示されたデータ型の１または複数の候補に対する、操作部１２４を用いたユーザによる選択に従って、構造体の各メンバ１５０のデータ型を決定する。これにより、制御システム１は、カラム４５０のデータ型に対応付けることが可能なメンバ１５０のデータ型をユーザに対して提供できる。
【００５５】
なお、データ型選択画面５１２に含まれるＤＢデータ型の情報は、取得モジュール１１０が、データベース４１０のテーブル４２０から取得したカラム４５０の数および各カラム４５０のデータ型に基づく情報である。また、データ型選択画面５１２に含まれるカラム名の情報は、取得モジュール１１０が、データベース４１０のテーブル４２０から取得した属性情報である。さらに、データ型選択画面５１２に含まれるＵＰＧデータ型の情報は、設定モジュール１２０と決定モジュール１３０とにより定められた情報である。設定モジュール１２０は、取得モジュール１１０により取得されたカラム４５０の数に対応する数のメンバ１５０を含む構造体を定義する。決定モジュール１３０は、取得モジュール１１０により取得された各カラム４５０のデータ型に対応付けて、構造体の各メンバ１５０のデータ型を決定する。対応付けは、データ型対応表４０に基づいて行われる。このように、決定モジュール１３０は、ユーザプログラム７０で利用可能なデータ型の中から構造体の各メンバ１５０のデータ型を決定する。これにより、制御システム１は、テーブル４２０におけるカラム４５０のデータ型に適した構造体におけるメンバ１５０のデータ型を容易に対応付けられる。
【００５６】
情報処理装置１００は、操作部１２４を用いたユーザ操作により、次画面ボタン５４０が選択されると、図６に示すデータ型確認画面５１３を表示部１２２に表示する。なお、情報処理装置１００は、操作部１２４を用いたユーザ操作により、前画面ボタン５４２が選択されると、データ型選択画面５１２が表示される直前に表示部１２２に表示されていた画面を表示する。
【００５７】
［ｂ４．データ型確認画面５１３］
図６は、ユーザの確認用に構造体のデータ型を表示する画面例を表わす図である。図６を参照して、表示部１２２は、第１テーブルのメンバ名、ＵＰＧデータ型の項目と、次画面ボタン５４０および前画面ボタン５４２とを含むデータ型確認画面５１３を表示部１２２に表示する。表示部１２２は、データ型選択画面５１２においてユーザが操作部１２４を用いて選択した各メンバ１５０のＵＰＧデータ型を表示する。また、表示部１２２は、各メンバ１５０のメンバ名として、データ型選択画面５１２に表示されたカラム名と同じ情報（例えば、「ＤＡＴＡ１」〜「ＤＡＴＡ４」）を表示する。より具体的には、決定モジュール１３０は、各カラム４５０の属性情報であるカラム名を、メンバ１５０の属性情報であるメンバ名として登録する。このように決定モジュール１３０は、構造体の各メンバ１５０のメンバ名を、各カラム４５０のカラム名に対応付ける。これにより、制御システム１は、カラム４５０に対応付けられたメンバ１５０を識別可能な情報をユーザに提供できる。
【００５８】
情報処理装置１００は、操作部１２４を用いたユーザ操作により、次画面ボタン５４０が選択されると、図７に示す生成アイテム選択画面５１４を表示部１２２に表示する。なお、情報処理装置１００は、操作部１２４を用いたユーザ操作により、前画面ボタン５４２が選択されると、データ型確認画面５１３が表示される直前に表示部１２２に表示されていた画面を表示する。
【００５９】
［ｂ５．生成アイテム選択画面５１４］
図７は、構造体を含む生成アイテムを選択するための画面例を表わす図である。図７を参照して、表示部１２２は、構造体５７２、変数５７４、ＵＰＧ５７６、Ｉｎｓｅｒｔ５７８およびＳｅｌｅｃｔ５８０の項目と、次画面ボタン５４０および前画面ボタン５４２とを含む生成アイテム選択画面５１４を表示部１２２に表示する。情報処理装置１００の生成モジュール１４０は、操作部１２４を用いたユーザ操作により選択された項目に対応するデータを生成する。図７に示すように、構造体５７２、変数５７４、ＵＰＧ５７６、Ｉｎｓｅｒｔ５７８の項目が選択されたものとして説明を行う。以下では、Ｉｎｓｅｒｔ５７８の項目が選択されたものとして説明を行うが、Ｓｅｌｅｃｔ５８０の項目が選択された場合は、当該項目に対応するデータが生成される。また、Ｉｎｓｅｒｔ５７８とＳｅｌｅｃｔ５８０との両方の項目が選択された場合は、これらの項目に対応するデータが生成される。
【００６０】
情報処理装置１００は、操作部１２４を用いたユーザ操作により、次画面ボタン５４０が選択されると、図８に示す生成情報確認画面５１５を表示部１２２に表示する。なお、情報処理装置１００は、操作部１２４を用いたユーザ操作により、前画面ボタン５４２が選択されると、生成アイテム選択画面５１４が表示される直前に表示部１２２に表示されていた画面を表示する。
【００６１】
［ｂ６．生成情報確認画面５１５］
図８は、ユーザの確認用に生成された構造体および変数を表示する画面例を表わす図である。表示部１２２は、例えば、第１テーブルにおける構造体のメンバ名およびＵＰＧデータ型と、変数の変数名および属性情報とを表示する。より具体的には、表示部１２２は、構造体のメンバ名として、図６において説明したカラム名に対応付けられたメンバ名（「ＤＡＴＡ１〜ＤＡＴＡ４」）を表示する。また、表示部１２２は、図５において説明したＤＢデータ型に対応付けられるＵＰＧデータ型として、各メンバ１５０のデータ型を表示する。表示部１２２は、各メンバ１５０のデータ型として、例えば、第１メンバ１５１に「ｂｏｏｌ」、第２メンバ１５２に「Ｉｎｔ」、第３メンバ１５３に「Ｓｔｒｉｎｇ（２０）」および第４メンバ１５４に「ＤＡＴＥ_ＡＮＤ_ＴＩＭＥ」を表示する。
【００６２】
さらに、表示部１２２は、変数として変数名「ＩｎｓｅｒｔＶａｌ１」および属性情報「Ｔａｂｌｅ１」を表示する。変数名は、構造体全体を表わす変数名である。当該変数名は任意の値が設定される。属性情報は、構造体全体に対応するテーブル４２０を表わす。図８に示す各メンバ１５０を含む構造体は、第１テーブルの各カラム４５０に対応するものである。したがって、属性情報には「Ｔａｂｌｅ１」の情報が登録される。属性情報は、情報処理装置１００の決定モジュール１３０により決定される。より具体的には、決定モジュール１３０は、図４において説明した操作部１２４を用いたユーザ操作により選択されたテーブル４２０のテーブル名を構造体の全体を参照するための変数の属性情報として対応付ける。これにより、制御システム１は、ユーザプログラム７０における構造体がいずれのテーブル４２０に対応付けられたものかを示す情報をユーザに対して提供できる。そして、生成モジュール１４０は、当該変数名と当該属性情報とを含むデータを生成する。
【００６３】
情報処理装置１００は、操作部１２４を用いたユーザ操作により、完了ボタン５４４が選択されると、図８に示す生成情報確認画面５１５の表示を終了させる。なお、情報処理装置１００は、操作部１２４を用いたユーザ操作により、前画面ボタン５４２が選択されると、生成情報確認画面５１５が表示される直前に表示部１２２に表示されていた画面を表示する。
【００６４】
［Ｃ．ユーザプログラム７０の構成と処理内容］
次に、図９〜図１１を参照してユーザプログラム７０の構成と処理内容について説明する。ユーザプログラム７０は、上述の図３〜図６における第１テーブルにおけるカラム４５０の数とデータ型とに対応する構造体におけるメンバ１５０の設定に基づくものである。生成モジュール１４０は、図７におけるＵＰＧ５７６およびＩｎｓｅｒｔ５７８が選択されることで、当該ユーザプログラム７０を生成する。
【００６５】
図９は、ユーザプログラム７０に含まれるファンクションブロックＦＢ１の一例を示す図である。以下、ファンクションブロックＦＢ１をブロックＦＢ１とも称する。
【００６６】
ブロックＦＢ１の機能を有するプログラムは、ファンクションブロック以外で規定されてもよい。例えば、ブロックＦＢ１は、ラダーダイアグラムで規定されるもの、命令リスト、構造化テキスト、および、シーケンシャルファンクションチャートのいずれか、あるいは、これらの組み合わせで規定されるものも含み得る。また、ブロックＦＢ１は、ＪａｖａＳｃｒｉｐｔ（登録商標）やＣ言語のような汎用的なプログラミング言語で規定されるものも含み得る。
【００６７】
ブロックＦＢ１は、データベース４１０へのアクセスを制御する命令を実行するためのプログラムである。より具体的には、ブロックＦＢ１は、データ型が定義され、当該データ型の条件を満たすデータが設定された構造体のレコードを、データベース４１０のテーブル４２０を追加する機能を有するプログラムである。
【００６８】
ブロックＦＢ１は、レコードの追加に関する設定を受け付ける入力部２５５Ａ〜入力部２５５Ｃと、レコードの追加に関する情報を出力するための出力部２５６Ａ〜出力部２５６Ｄとを含む。
【００６９】
「Ｅｘｃｕｔｅ」として示される入力部２５５Ａは、レコードの追加の処理を実行するか否かを指定するための設定を受け付ける。一例として、入力部２５５Ａは、「ＢＯＯＬ」型の入力を受け付けるように規定されている。入力部２５５Ａに「ＦＡＬＳＥ」が入力されている限り、レコードの追加の処理は、実行されない。一方で、入力部２５５Ａに「ＴＲＵＥ」が入力された場合には、レコードの追加の処理が実行される。
【００７０】
「ＤＢＣｏｎｎｅｃｔｉｏｎ」として示される入力部２５５Ｂは、データベース４１０に接続するためのファンクションブロックを実行して得られる接続結果を受け付ける。当該接続結果には、データベース４１０のアクセスするための情報（例えば、データベース名など）が含まれている。
【００７１】
「ＭａｐｐｉｎｇＶａｒｉａｂｌｅＬｉｓｔ」として示される入力部２５５Ｃは、構造体の変数の入力を受け付ける。入力部２５５Ｃは、予め定義された構造体を受け付けるように規定されている。
【００７２】
レコードの追加の処理が正常に完了した場合には、正常終了を示す信号が、「Ｄｏｎｅ」として示される出力部２５６Ａから出力される。レコードの追加の処理中には、生成処理中を示す信号が、「Ｂｕｓｙ」として示される出力部２５６Ｂから出力される。レコードの追加の処理が正常に生成されなかった場合には、異常終了を示す信号が、「Ｅｒｒｏｒ」として示される出力部２５６Ｃから出力される。この場合には、さらに、エラーの内容を識別するためのエラーＩＤが、「ＥｒｒｏｒＩＤ」として示される出力部２５６Ｄから出力される。
【００７３】
図１０は、ファンクションブロックＦＢ１を含むユーザプログラム７０の一例について説明する図である。情報処理装置１００は、記憶装置１０８に格納されたテンプレート６０を用いて図１０に示すユーザプログラム７０の一部を生成する。テンプレート６０は、例えば、入力要素ＩＮ０〜ＩＮ４と、ブロックＦＢ１と、出力要素ＯＵＴ１とを含む。例えば、テンプレート６０に含まれる入力要素ＩＮ０〜ＩＮ４の変数と、出力要素ＯＵＴ１の変数とはブランクとなっており、テンプレート６０が選択された後に変数が割り付けられる。変数が割り付けられたテンプレート６０を以下ではプログラムテンプレートと称する。プログラムテンプレートは、後述する第１プログラムテンプレート６１および第２プログラムテンプレート６２を含む。また、ブロックＦＢ１は、図９で説明した、ファンクションブロックに相当する。
【００７４】
第１プログラムテンプレート６１は、入力要素ＩＮ０〜ＩＮ４を含む。入力要素ＩＮ０〜ＩＮ４には変数が割り付けられており、これらの値は、割り付けられている変数に応じて変化する。より具体的には、入力要素ＩＮ０には、変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」が割り付けられている。変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」の値は、例えば、制御装置２００が起動されたことに基づいて、「Ｔｒｕｅ」（ＯＮ）に変化する。その他の場合、変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」の値は、「Ｆａｌｓｅ」（ＯＦＦ）となる。
【００７５】
入力要素ＩＮ１〜ＩＮ４には、変数「ｖａｌ１」〜変数「ｖａｌ４」が割り付けられている。これらの変数は、例えば、制御装置２００がフィールド値に基づいて演算を実行することで得られるプロセス値を含む。フィールド値は、制御装置２００がフィールドに設けられた駆動装置から第２ネットワーク介して取得した値である。入力要素ＩＮ１〜ＩＮ４により、変数「ｖａｌ１」〜変数「ｖａｌ４」の各変数の値は、「ＩｎｓｅｒｔＶａｌ［０］」〜「ＩｎｓｅｒｔＶａｌ［３］」に設定される。「ＩｎｓｅｒｔＶａｌ［０］」〜「ＩｎｓｅｒｔＶａｌ［３］」は、構造体全体を表わす変数「ＩｎｓｅｒｔＶａｌ」に基づく値であり、第１メンバ１５１〜第４メンバ１５４に設定される値である。
【００７６】
入力要素ＩＮ１〜ＩＮ４により構造体の各メンバ１５０にプロセス値が設定されると、ブロックＦＢ１により、構造体の各メンバ１５０により構成されるレコードがテーブル４２０に追加される。
【００７７】
出力要素ＯＵＴ１には、変数「Ｄｏｎｅ」が割り付けられている。また、出力要素ＯＵＴ１は、ブロックＦＢ１の出力「Ｄｏｎｅ」に関連付けられている。その結果、出力要素ＯＵＴ１の値は、ブロックＦＢ１の出力「Ｄｏｎｅ」の値に応じて変化する。
【００７８】
図１１は、テーブル４２０にレコードを追加する一例を示した図である。テーブル４２０における各カラム４５０（第１カラム４５１〜第４カラム４５４）は、属性情報である「ＤＡＴＡ１」〜「ＤＡＴＡ４」を有する。また、レコード４６１は、各カラム４５０のデータ型に応じたプロセス値が設定されている。そして、生成モジュール１４０が生成した第１プログラムテンプレート６１により、構造体におけるレコード４６２がテーブル４２０に追加される。構造体のレコード４６２にはテーブル４２０の各カラムのデータ型に対応付けられたデータ型が各メンバ１５０（第１メンバ１５１〜第４メンバ１５４）に設定されている。そして、レコード４６２は、各メンバ１５０のデータ型に応じたプロセス値が設定されている。テンプレート６０に対して変数が割り付けられた第１プログラムテンプレート６１が実行されることで、テーブル４２０にレコード４６２が追加される。
【００７９】
このように、生成モジュール１４０は、構造体における各メンバ１５０に設定された値（プロセス値）からなるレコードを、対応するテーブル４２０に追加する処理を実行させるための第１プログラムテンプレート６１をテンプレート６０に基づいて生成する。当該第１プログラムテンプレート６１は、テンプレート６０に基づいて生成されたプログラムであり、テンプレート６０においてブランクとなっている変数が割り付けられたものである。制御システム１は、プログラムテンプレートを用いることで、データベース４１０にアクセス可能なユーザプログラム７０を容易に生成できる。
【００８０】
［Ｄ．ハードウェア構成］
［ｄ１．制御装置２００のハードウェア構成］
次に、図１２を参照して、制御装置２００のハードウェア構成について説明する。図１２は、制御装置２００のハードウェア構成の一例を示す模式図である。
【００８１】
制御装置２００は、通信インターフェイス２０１と、ＣＰＵやＭＰＵなどのプロセッサ２０２と、チップセット２０４と、主メモリ２０６と、不揮発性の記憶装置２０８と、内部バスコントローラ２２２と、フィールドバスコントローラ２２４と、メモリカードインターフェイス２３９とを含む。
【００８２】
プロセッサ２０２は、記憶装置２０８に格納されたユーザプログラム７０およびシステムプログラム８０を含む制御プログラムを読み出して主メモリ２０６に展開して実行する。プロセッサ２０２は、制御プログラムを実行することで、サーボドライバ２８０Ａおよび２８０Ｂなどに対する任意の制御を実現する。制御プログラムは、制御装置２００を制御するための各種プログラムを含む。制御プログラムに含まれるシステムプログラム８０は、データの入出力処理や実行タイミング制御などの、制御装置２００の基本的な機能を提供するための命令コードを含む。ユーザプログラム７０は、上述の情報処理装置１００からダウンロードされたものである。ユーザプログラム７０は、制御対象に応じて任意に設計され、シーケンス制御を実行する。
【００８３】
チップセット２０４は、各コンポーネントを制御することで、制御装置２００全体としての処理を実現する。
【００８４】
記憶装置２０８は、制御プログラムの他にも種々のデータを格納する。一例として、記憶装置２０８は、上述のデータ型対応表４０等を格納する。
【００８５】
内部バスコントローラ２２２は、制御装置２００と内部バスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、Ｉ／Ｏユニット２２６が接続されている。フィールドバスコントローラ２２４は、制御装置２００とフィールドバスを通じて連結される各種の駆動機器とデータを遣り取りするインターフェイスである。このようなデバイスの一例として、上述のサーボドライバ２８０Ａおよび２８０Ｂが接続されている。他にも、視覚センサ（図示せず）などの駆動機器が接続されてもよい。
【００８６】
内部バスコントローラ２２２およびフィールドバスコントローラ２２４は、接続されているデバイスに対して任意の指令を与えることができるとともに、デバイスが管理している任意のデータを取得することができる。また、内部バスコントローラ２２２および／またはフィールドバスコントローラ２２４は、サーボドライバ２８０Ａおよび２８０Ｂとの間でデータを遣り取りするためのインターフェイスとしても機能する。
【００８７】
通信インターフェイス２０１は、各種の有線／無線ネットワークを通じたデータの遣り取りを制御する。制御装置２００は、通信インターフェイス２０１を介して、情報処理装置１００や外部装置３００と通信を行う。また、制御装置２００は、通信インターフェイス２０１を介して、外部装置３００上のデータベース４１０にアクセスすることができる。
【００８８】
メモリカードインターフェイス２３９は、外部記憶媒体の一例であるメモリカード２４０（例えば、ＳＤカード）を着脱可能に構成されており、メモリカード２４０に対してデータを書き込み、メモリカード２４０からデータを読出すことが可能になっている。
【００８９】
［ｄ２．外部装置３００のハードウェア構成］
次に、図１３を参照して、外部装置３００のハードウェア構成について説明する。図１３は、外部装置３００のハードウェア構成を示すブロック図である。
【００９０】
外部装置３００は、汎用的なアーキテクチャを有するハードウェア構成を有している。すなわち、外部装置３００は、一種のパーソナルコンピュータとして実装される。但し、外部装置３００を汎用的なハードウェアではなく、専用ハードウェアを用いて実装してもよい。
【００９１】
より具体的には、外部装置３００は、ＣＰＵやＭＰＵなどのプロセッサ３０２と、主メモリ３０４と、不揮発性の記憶装置３０８と、通信インターフェイス３１２と、Ｉ／Ｏインターフェイス３１４と、表示インターフェイス３１６とを含む。これらのコンポーネントは、内部バス３２５を介して、互いにデータ通信可能に接続されている。
【００９２】
プロセッサ３０２は、記憶装置３０８に格納された制御プログラム（図示しない）を読み出して、主メモリ３０４に展開して実行することで、外部装置３００を制御する。すなわち、プロセッサ３０２は、主メモリ３０４および記憶装置３０８と連係することで、制御演算を実行する制御部を実現する。
【００９３】
通信インターフェイス３１２、Ｉ／Ｏインターフェイス３１４、および、表示インターフェイス３１６は、外部装置３００と他の通信機器とのデータの遣り取りを仲介する。
【００９４】
より具体的には、通信インターフェイス３１２は、図１における第１ネットワークなどを介した、制御装置２００との通信を仲介する。通信インターフェイス３１２には、例えば、ＥｔｈｅｒＮＥＴに従う通信が可能なコンポーネントが採用され得る。
【００９５】
Ｉ／Ｏインターフェイス３１４は、操作部３２４に接続され、操作部３２４からのユーザ操作を示す信号を取り込む。操作部３２４は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受け付ける。表示インターフェイス３１６は、表示部３２２と接続され、プロセッサ３０２などからの指令に従って、表示部３２２に対して、画像を表示するための画像信号を送出する。表示部３２２は、ＬＣＤや有機ＥＬディスプレイなどからなり、ユーザに対して各種情報を提示する。図１４の例では、外部装置３００および表示部３２２が別体として示されているが、外部装置３００および表示部３２２は、一体的に構成されてもよい。
【００９６】
［Ｅ．制御処理手順］
［ｅ１．制御システム１における処理手順］
図１４は、制御システム１の処理手順について説明するフローチャートである。図１４を参照して、情報処理装置１００と制御装置２００と外部装置３００との間のデータの流れについて説明する。ステップＳ１０において、情報処理装置１００は、起動命令を受け付けたとする。このことに基づいて、情報処理装置１００は起動後に開発支援プログラム３０が実行されることで、データベース選択画面５１０を表示部１２２に表示する。
【００９７】
ステップＳ１５において、情報処理装置１００は、データベース選択画面５１０におけるデータベース４１０の選択操作を受け付けたとする。このことに基づいて、情報処理装置１００は、選択されたデータベース４１０に格納されるテーブル４２０の取得命令を制御装置２００を介して外部装置３００に送信する。外部装置３００は、テーブル４２０の情報を制御装置２００を介して情報処理装置１００に出力する。情報処理装置１００は、外部装置３００から送信されたテーブル４２０の情報に基づき、テーブル選択画面５１１を表示部１２２に表示する。
【００９８】
ステップＳ２０において、情報処理装置１００は、テーブル選択画面５１１におけるテーブル４２０の選択操作を受け付けたとする。このことに基づいて、情報処理装置１００は、選択されたテーブル４２０に含まれるカラム４５０の情報の取得命令を制御装置２００を介して外部装置３００に出力する。外部装置３００は、カラム４５０の情報を制御装置２００を介して情報処理装置１００に出力する。情報処理装置１００は、外部装置３００から送信されたカラム４５０の情報に基づき、データ型選択画面５１２を表示部１２２に表示する。
【００９９】
ステップＳ２５において、情報処理装置１００は、データ型選択画面５１２におけるＵＰＧデータ型の選択操作を受け付けたとする。このことに基づいて、情報処理装置１００は、データ型確認画面５１３を表示部１２２に表示する。
【０１００】
ステップＳ３０において、情報処理装置１００は、データ型確認画面５１３におけるＵＰＧデータ型確認操作を受け付けたとする。このことに基づいて、情報処理装置１００は、生成アイテム選択画面５１４を表示部１２２に表示する。
【０１０１】
ステップＳ３５において、情報処理装置１００は、生成アイテム選択画面５１４における生成アイテムの選択操作を受け付けたとする。このことに基づいて、情報処理装置１００は、生成情報確認画面５１５を表示部１２２に表示する。
【０１０２】
ステップＳ４０において、情報処理装置１００は、生成情報確認画面５１５における生成情報の確認完了操作を受け付けたとする。このことに基づいて、情報処理装置１００はテンプレート６０に基づいて第１プログラムテンプレート６１を含むユーザプログラム７０を生成して、生成されたユーザプログラム７０を情報処理装置に送信する。
【０１０３】
これまで説明したステップＳ１０、ステップＳ１５、ステップＳ２０、ステップＳ２５、ステップＳ３０、ステップＳ３５およびステップＳ４０は、制御装置２００が運用される前の処理である。次に制御装置２００の運用後の処理について説明する。
【０１０４】
ステップＳ４５において、制御装置２００は、ユーザプログラム７０の処理を開始する。制御装置２００は、ユーザプログラム７０に含まれる第１プログラムテンプレート６１を実行して、外部装置３００のデータベース４１０におけるテーブル４２０にレコードを追加する。当該レコードは制御装置２００の構造体の各メンバ１５０により構成されるレコードである。外部装置３００は、例えば、レコードの追加処理が成功したことを示す応答を制御装置２００に送信する。
【０１０５】
［ｅ２．情報処理装置１００における処理手順］
上述の図１４を用いて説明した処理手順における制御装置２００の運用前の処理は、例えば、情報処理装置１００により実行される処理である。図１５および図１６は、情報処理装置１００が運用前の処理を行う場合の処理手順について説明するフローチャートである。図１５を参照して、ステップＳ１０５において、情報処理装置１００は、操作部１２４を用いたユーザ操作により、起動命令を受け付けて起動する。
【０１０６】
ステップＳ１１０において、情報処理装置１００は、起動後に開発支援プログラム３０が実行されることで、データベース選択画面５１０を表示部１２２に表示する。
【０１０７】
ステップＳ１１５において、情報処理装置１００は、データベース選択画面５１０におけるデータベース４１０の選択操作を受け付けたか否かを判定する。情報処理装置１００は、データベース４１０の選択操作を受け付けたと判定すると（ステップＳ１１５においてＹＥＳ）、制御をステップＳ１２０に切り替える。そうでない場合には（ステップＳ１１５においてＮＯ）、情報処理装置１００は、制御をステップＳ１２５に切り替える。
【０１０８】
ステップＳ１２０において、情報処理装置１００は、外部装置３００から送信されたテーブル４２０の情報に基づき、テーブル選択画面５１１を表示部１２２に表示する。
【０１０９】
ステップＳ１２５において、情報処理装置１００は、タイマー（図示せず）を用いて、データベース４１０の選択操作を受け付けたか否かを判定した時点から経過した時間を計測する。所定期間（例えば、１分間）を経過してタイムアウトした場合には（ステップＳ１２５においてＹＥＳ）、情報処理装置１００は、本フローチャートの処理を終了する。そうでない場合には（ステップＳ１２５においてＮＯ）、情報処理装置１００は、ステップＳ１１５の制御を繰り返し実行する。
【０１１０】
ステップＳ１３０において、情報処理装置１００は、データベース選択画面５１０におけるテーブル４２０の選択操作を受け付けたか否かを判定する。情報処理装置１００は、テーブル４２０の選択操作を受け付けたと判定すると（ステップＳ１３０においてＹＥＳ）、制御をステップＳ１３５に切り替える。そうでない場合には（ステップＳ１３０においてＮＯ）、情報処理装置１００は、制御をステップＳ１４０に切り替える。
【０１１１】
ステップＳ１３５において、情報処理装置１００は、外部装置３００から送信されたカラム４５０の情報に基づき、データ型選択画面５１２を表示部１２２に表示する。
【０１１２】
ステップＳ１４０において、情報処理装置１００は、タイマー（図示せず）を用いて、テーブル４２０の選択操作を受け付けたか否かを判定した時点から経過した時間を計測する。所定期間（例えば、１分間）を経過してタイムアウトした場合には（ステップＳ１４０においてＹＥＳ）、情報処理装置１００は、本フローチャートの処理を終了する。そうでない場合には（ステップＳ１４０においてＮＯ）、情報処理装置１００は、ステップＳ１３０の制御を繰り返し実行する。
【０１１３】
ステップＳ１４５において、情報処理装置１００は、データ型選択画面５１２におけるＵＰＧデータ型の選択操作を受け付けたか否かを判定する。情報処理装置１００は、データ型の選択操作を受け付けたと判定すると（ステップＳ１４５においてＹＥＳ）、制御をステップＳ１５０に切り替える。そうでない場合には（ステップＳ１４５においてＮＯ）、情報処理装置１００は、制御をステップＳ１５５に切り替える。
【０１１４】
ステップＳ１５０において、情報処理装置１００は、データ型確認画面５１３を表示部１２２に表示する。
【０１１５】
ステップＳ１５５において、情報処理装置１００は、タイマー（図示せず）を用いて、データ型の選択操作を受け付けたか否かを判定した時点から経過した時間を計測する。所定期間（例えば、１分間）を経過してタイムアウトした場合には（ステップＳ１５５においてＹＥＳ）、情報処理装置１００は、本フローチャートの処理を終了する。そうでない場合には（ステップＳ１５５においてＮＯ）、情報処理装置１００は、ステップＳ１４５の制御を繰り返し実行する。
【０１１６】
次に、図１６を参照して、ステップＳ１６０において、情報処理装置１００は、データ型確認画面５１３におけるＵＰＧデータ型の確認操作を受け付けたか否かを判定する。情報処理装置１００は、ＵＰＧデータ型の確認操作を受け付けたと判定すると（ステップＳ１６０においてＹＥＳ）、制御をステップＳ１６５に切り替える。そうでない場合には（ステップＳ１６０においてＮＯ）、情報処理装置１００は、制御をステップＳ１７０に切り替える。
【０１１７】
ステップＳ１６５において、情報処理装置１００は、生成アイテム選択画面５１４を表示部１２２に表示する。
【０１１８】
ステップＳ１７０において、情報処理装置１００は、タイマー（図示せず）を用いて、ＵＰＧデータ型の確認操作を受け付けたか否かを判定した時点から経過した時間を計測する。所定期間（例えば、１分間）を経過してタイムアウトした場合には（ステップＳ１７０においてＹＥＳ）、情報処理装置１００は、本フローチャートの処理を終了する。そうでない場合には（ステップＳ１７０においてＮＯ）、情報処理装置１００は、ステップＳ１６０の制御を繰り返し実行する。
【０１１９】
ステップＳ１７５において、情報処理装置１００は、生成アイテム選択画面５１４における生成アイテムの選択操作を受け付けたか否かを判定する。情報処理装置１００は、生成アイテムの選択操作を受け付けたと判定すると（ステップＳ１７５においてＹＥＳ）、制御をステップＳ１８０に切り替える。そうでない場合には（ステップＳ１７５においてＮＯ）、情報処理装置１００は、制御をステップＳ１８５に切り替える。
【０１２０】
ステップＳ１８０において、情報処理装置１００は、生成情報確認画面５１５を表示部１２２に表示する。
【０１２１】
ステップＳ１８５において、情報処理装置１００は、タイマー（図示せず）を用いて、生成アイテムの選択操作を受け付けたか否かを判定した時点から経過した時間を計測する。所定期間（例えば、１分間）を経過してタイムアウトした場合には（ステップＳ１８５においてＹＥＳ）、情報処理装置１００は、本フローチャートの処理を終了する。そうでない場合には（ステップＳ１８５においてＮＯ）、情報処理装置１００は、ステップＳ１７５の制御を繰り返し実行する。
【０１２２】
ステップＳ１９０において、情報処理装置１００は、生成情報確認画面５１５における生成情報の確認完了操作を受け付けたか否かを判定する。情報処理装置１００は、生成情報の確認完了操作を受け付けたと判定すると（ステップＳ１９０においてＹＥＳ）、制御をステップＳ１９５に切り替える。そうでない場合には（ステップＳ１９０においてＮＯ）、情報処理装置１００は、制御をステップＳ２００に切り替える。
【０１２３】
ステップＳ１９５において、情報処理装置１００は、例えば、第１プログラムテンプレート６１を含むユーザプログラム７０を生成する。
【０１２４】
ステップＳ２００において、情報処理装置１００は、タイマー（図示せず）を用いて、生成情報の確認完了操作を受け付けたか否かを判定した時点から経過した時間を計測する。所定期間（例えば、１分間）を経過してタイムアウトした場合には（ステップＳ２００においてＹＥＳ）、情報処理装置１００は、本フローチャートの処理を終了する。そうでない場合には（ステップＳ２００においてＮＯ）、情報処理装置１００は、ステップＳ１９０の制御を繰り返し実行する。
【０１２５】
ステップＳ２０５において、情報処理装置１００は、生成したユーザプログラム７０を制御装置２００に送信する。
【０１２６】
＜第２の実施の形態＞
以下、本開示に係る第２の実施の形態について説明する。第２の実施の形態に係る制御システム１ａに含まれる構成は、上述の第１の実施の形態に係る制御システム１に含まれる構成と一部のハードウェア構成が異なり、その他は同様のハードウェア構成を用いて実現される。また、第２の実施の形態に係る制御システム１ａに含まれる構成により実現される処理は、第１の実施の形態に係る情報処理装置１００に含まれる構成により実現される処理と一部が異なる以外は同様の処理を実行する。以下では、図１７を参照して、制御システム１に含まれる構成のハードウェア構成および処理について、同じ内容についての説明は繰り返さずに、異なる構成および処理の内容について説明する。
【０１２７】
図１７は、第２の実施の形態における制御システム１ａの構成例について説明する図である。上述の第１の実施の形態では、制御システム１に含まれる１つの情報処理装置１００がテーブル４２０の情報（カラムの数およびデータ型）を取得する。そして、情報処理装置１００は、構造体のメンバ１５０の数とデータ型とを決定した後、生成したユーザプログラム７０を制御装置２００に出力することについて説明した。すなわち、１つの情報処理装置１００が、取得モジュール１１０、設定モジュール１２０、決定モジュール１３０および生成モジュール１４０の機能を有する。そして、１つの情報処理装置１００が当該機能を用いた処理を実行することについて説明した。これに対して、図１７に示す第２の実施の形態では、制御システム１ａに含まれる複数の情報処理装置１００が、上記の機能を用いた処理を実行する。
【０１２８】
制御システム１ａは、第１情報処理装置１００ａと、第２情報処理装置１００ｂとを含む。第１情報処理装置１００ａは、取得モジュール１１０、設定モジュール１２０、決定モジュール１３０の機能を有する。第２情報処理装置１００ｂは、生成モジュール１４０を有する。第１情報処理装置１００ａの取得モジュール１１０は、テーブル４２０の情報を取得する。第１情報処理装置１００ａの設定モジュール１２０および決定モジュール１３０は、構造体のメンバ１５０の数とデータ型とを決定した後、当該メンバ１５０の数とデータ型とを含む情報をエクスポートする。第１情報処理装置１００ａは、例えば、上記情報を予め定めたデータ形式のファイルで出力する。予め定められたデータ形式は、例えば、ＣＳＶ(Comma Separated Values)形式等である。
【０１２９】
第２情報処理装置１００ｂの生成モジュール１４０は、ユーザプログラム７０を生成する。生成されたユーザプログラム７０は、制御装置２００にインポートされる。
【０１３０】
このように、制御システム１ａは、全てのモジュールのうち一部のモジュールの機能を有する情報処理装置１００と、他のモジュールの機能を有する別の情報処理装置１００とにより構成される。これにより、制御システム１ａは、複数の情報処理装置１００を用いてモジュールの機能の追加等を容易に行える。
【０１３１】
＜第３の実施の形態＞
以下、本開示に係る第３の実施の形態について説明する。第３の実施の形態に係る制御システム１ｂに含まれる構成は、上述の第１の実施の形態に係る制御システム１に含まれる構成と一部のハードウェア構成が異なり、その他は同様のハードウェア構成を用いて実現される。また、第３の実施の形態に係る制御システム１ｂに含まれる構成により実現される処理は、第１の実施の形態に係る情報処理装置１００に含まれる構成により実現される処理と一部が異なる以外は同様の処理を実行する。以下では、図１８を参照して、制御システム１に含まれる構成のハードウェア構成および処理について、同じ内容についての説明は繰り返さずに、異なる構成および処理の内容について説明する。
【０１３２】
図１８は、第３の実施の形態における制御システム１ｂの構成例について説明する図である。上述の第１の実施の形態では、制御システム１に含まれる情報処理装置１００がテーブル４２０の情報（カラムの数およびデータ型）を取得する。そして、情報処理装置１００は、構造体のメンバの数とデータ型とを決定した後、生成したユーザプログラム７０を制御装置２００に出力することについて説明した。すなわち、情報処理装置１００が、取得モジュール１１０、設定モジュール１２０、決定モジュール１３０および生成モジュール１４０の機能を有する。そして、情報処理装置１００が当該機能を用いた処理を実行することについて説明した。これに対して、第３の実施の形態では、制御システム１ｂに含まれる制御装置２００が、取得モジュール１１０、設定モジュール１２０、決定モジュール１３０および生成モジュール１４０の機能を有する。制御装置２００は、これらのモジュール機能を用いた処理を実行する。
【０１３３】
制御装置２００の取得モジュール１１０は、テーブル４２０の情報（カラムの数およびデータ型）を取得する。そして、設定モジュール１２０が構造体のメンバ１５０を定義した後、決定モジュール１３０は、構造体のデータ型を決定する。生成モジュール１４０は、生成したユーザプログラム７０等を制御装置２００内で実行する。
【０１３４】
なお、第１の実施の形態では、情報処理装置１００は、開発支援プログラム３０が実行されることで、操作部１２４を用いたユーザ操作により、各モジュールの機能が実行されることについて説明した。これに対して、制御装置２００の記憶装置２０８には、開発支援プログラム３０が格納されていない。制御装置２００は、各モジュールの機能をユーザの操作を受け付けることなく自動で実行する。このように、制御装置２００が自動で各モジュールの機能を実行するためのユーザプログラム７０について、図１９および図２０を用いて以下説明する。
【０１３５】
図１９は、ユーザプログラム７０に含まれるファンクションブロックＦＢ２の一例を示す図である。以下、ファンクションブロックＦＢ２をブロックＦＢ２とも称する。
【０１３６】
ブロックＦＢ２の機能を有するプログラムは、ファンクションブロック以外で規定されてもよい。例えば、ブロックＦＢ２は、ラダーダイアグラムで規定されるもの、命令リスト、構造化テキスト、および、シーケンシャルファンクションチャートのいずれか、あるいは、これらの組み合わせで規定されるものも含み得る。また、ブロックＦＢ２は、ＪａｖａＳｃｒｉｐｔやＣ言語のような汎用的なプログラミング言語で規定されるものも含み得る。
【０１３７】
ブロックＦＢ２は、データベース４１０へのアクセスを制御する命令を実行するためのプログラムである。より具体的には、ブロックＦＢ２は、テーブル４２０からテーブル情報を取得して、構造体のメンバ１５０を定義した後、構造体のデータ型を決定する機能を有するプログラムである。
【０１３８】
ブロックＦＢ２は、レコードの追加に関する設定を受け付ける入力部２５７Ａ〜入力部２５７Ｄと、レコードの追加に関する情報を出力するための出力部２５８Ａ〜出力部２５８Ｄとを含む。
【０１３９】
「Ｅｘｃｕｔｅ」として示される入力部２５７Ａは、レコードの追加の処理を実行するか否かを指定するための設定を受け付ける。
【０１４０】
「ＤＢＣｏｎｎｅｃｔｉｏｎ」として示される入力部２５７Ｂは、データベース４１０に接続するためのファンクションブロックを実行して得られる接続結果を受け付ける。当該接続結果には、データベース４１０のアクセスするための情報（例えば、データベース名など）が含まれている。
【０１４１】
「ＴａｂｌｅＮａｍｅ」として示される入力部２５７Ｃは、テーブル名の設定を受け付ける。入力部２５７Ｃは、例えば、「ＤＷＯＲＤ」型の変数を受け付けるように規定されている。
【０１４２】
「ＭａｐｐｉｎｇＶａｒｉａｂｌｅＬｉｓｔ」として示される入力部２５７Ｄは、構造体の変数の入力を受け付ける。入力部２５７Ｄは、予め定義された構造体を受け付けるように規定されている。
【０１４３】
ブロックＦＢ２の入力部２５７Ｃにはテーブル４２０のテーブル名（例えば、「Ｔａｂｌｅ１」）と、入力部２５７Ｄには構造体の全体を参照するための変数（例えば、ＩｎｓｅｒｔＶａｌ１）とがそれぞれ引数として設定される。これにより、制御システム１ｂは、構造体の定義と当該構造体のデータ型の決定とを含む処理を制御装置２００に自動で実行させることができる。
【０１４４】
レコードの追加の処理が正常に完了した場合には、正常終了を示す信号が、「Ｄｏｎｅ」として示される出力部２５８Ａから出力される。レコードの追加の処理中には、生成処理中を示す信号が、「Ｂｕｓｙ」として示される出力部２５８Ｂから出力される。レコードの追加の処理が正常に生成されなかった場合には、異常終了を示す信号が、「Ｅｒｒｏｒ」として示される出力部２５８Ｃから出力される。この場合には、さらに、エラーの内容を識別するためのエラーＩＤが、「ＥｒｒｏｒＩＤ」として示される出力部２５８Ｄから出力される。
【０１４５】
図２０は、ファンクションブロックＦＢ２を含むユーザプログラム７０の一例について説明する図である。制御装置２００は、記憶装置１０８に格納されたテンプレート６０を用いて図１０に示すユーザプログラム７０の一部を生成する。テンプレート６０は、例えば、入力要素ＩＮ０〜ＩＮ４と、ブロックＦＢ１およびブロックＦＢ２と、出力要素ＯＵＴ１とを含む。例えば、テンプレート６０に含まれる入力要素ＩＮ０〜ＩＮ４の変数と、出力要素ＯＵＴ１の変数とはブランクとなっており、テンプレート６０が選択された後に変数が割り付けられる。また、ブロックＦＢ１は、図９で説明した、ファンクションブロックに相当する。
【０１４６】
入力要素ＩＮ０〜ＩＮ４、ブロックＦＢ１および出力要素ＯＵＴ１の機能は、上述の図１０で説明した機能と同じである。第２プログラムテンプレート６２に含まれる入力要素ＩＮ０〜ＩＮ４には変数が割り付けられており、これらの値は、割り付けられている変数に応じて変化する。上述のようにブロックＦＢ２には、テーブル４２０のテーブル名と構造体の全体を参照するための変数とがそれぞれ引数として設定される。制御装置２００は、ブロックＦＢ２の機能により、構造体の定義と当該構造体のデータ型の決定とを含む処理を自動で実行する。
＜変形例＞
第１の実施の形態〜第３の実施の形態において、図３〜図８を用いて各画面に表示される項目について説明した。これに対して、各画面に表示される項目は一例であり、他の項目を表示して当該項目に対する選択を受け付けるようにしてもよい。
【０１４７】
第１の実施の形態〜第３の実施の形態において、ファンクショブロックに設けられる各入力部と各出力部とについて説明した。これに対して、説明した入力部および出力部は一例であり、説明した以外の入力部および出力部がファンクションブロック設けられてもよい。
【０１４８】
第２の実施の形態において、第１情報処理装置１００ａは、取得モジュール１１０、設定モジュール１２０、決定モジュール１３０の機能を有する。また、第２情報処理装置１００ｂは、生成モジュール１４０を有することについて説明した。これに対して、それぞれの情報処理装置１００が有するモジュールの機能は一例であり、各情報処理装置１００はどのモジュールの機能を有していてもよい。また、情報処理装置１００は、上記とは異なるモジュールの機能を有していてもよい。
【０１４９】
＜付記＞
以上のように、本実施の形態は以下のような開示を含む。
【０１５０】
［構成１］
制御対象を制御するための制御システム（１）であって、
１または複数のテーブル（４２０）を保持しているデータベース（４１０）と、
制御プログラム（７０）を実行する、前記データベース（４１０）にアクセス可能な制御装置（２００）と、
前記１または複数のテーブル（４２０）のうち選択されたテーブル（４２０）を構成するカラム（４５０）の数および各カラム（４５０）のデータ型を取得する取得手段（１１０）と、
前記取得したカラム（４５０）の数に対応する数のメンバ（１５０）を含む、前記制御プログラム（７０）において利用可能な構造体を定義する設定手段（１２０）と、
前記取得した各カラム（４５０）のデータ型に対応付けて、前記構造体の各メンバ（１５０）のデータ型を決定する決定手段（１３０）とを備える、制御システム。
【０１５１】
［構成２］
前記決定手段（１３０）は、前記制御プログラム（７０）で利用可能なデータ型の中から前記構造体の各メンバ（１５０）のデータ型を決定する、構成１に記載の制御システム。
【０１５２】
［構成３］
前記決定手段（１３０）は、データ型の１または複数の候補に対する、ユーザによる選択に従って、前記構造体の各メンバ（１５０）のデータ型を決定する、構成１または２に記載の制御システム。
【０１５３】
［構成４］
前記決定手段（１３０）は、前記選択されたテーブル（４２０）のテーブル名を、前記構造体の全体を参照するための変数の属性情報として対応付ける、構成１〜３のいずれか１項に記載の制御システム。
【０１５４】
［構成５］
前記決定手段（１３０）は、前記構造体の各メンバ（１５０）のメンバ名を、前記各カラム（４５０）のカラム名に対応付ける、構成１〜４のいずれか１項に記載の制御システム。
【０１５５】
［構成６］
前記制御プログラム（７０）は前記データベース（４１０）へのアクセスを制御する命令を実行するためのファンクションブロックを含み、
前記ファンクションブロックには、前記テーブル（４２０）のテーブル名と、前記構造体の全体を参照するための変数とがそれぞれ引数として設定される、構成１〜５のいずれか１項に記載の制御システム。
【０１５６】
［構成７］
前記各メンバ（１５０）に設定された値からなるレコードを、対応するテーブル（４２０）に追加する処理を実行させるためのプログラムテンプレート（６１、６２）を生成する生成部（１４０）をさらに備える、構成１〜６のいずれか１項に記載の制御システム。
【０１５７】
［構成８］
前記制御装置（２００）で実行される制御プログラム（７０）の開発を支援する情報処理装置（１００）をさらに備え、
前記情報処理装置（１００）は、
前記取得手段（１１０）、前記設定手段（１２０）および前記決定手段（１３０）を含む、構成１〜７のいずれか１項に記載の制御システム。
【０１５８】
［構成９］
制御装置（２００）で実行される制御プログラム（７０）の開発を支援する情報処理装置（１００）であって、
前記制御装置（２００）がアクセス可能なデータベース（７０）が保持している１または複数のテーブル（７０）のうち選択されたテーブル（７０）を構成するカラム（４５０）の数よび各カラム（４５０）のデータ型を取得する取得手段（１１０）と、
前記取得したカラム（４５０）の数に対応する数のメンバ（１５０）を含む、前記制御プログラム（７０）において利用可能な構造体を定義する設定手段（１２０）と、
前記取得した各カラム（４５０）のデータ型に対応付けて、前記構造体の各メンバ（１５０）のデータ型を決定する決定手段（１３０）とを備える、情報処理装置。
【０１５９】
［構成１０］
制御装置（２００）で実行される制御プログラム（７０）の開発を支援する情報処理装置（１００）の情報処理プログラムであって、
前記情報処理プログラムは前記情報処理装置（１００）に、
前記制御装置（２００）がアクセス可能なデータベース（７０）が保持している１または複数のテーブル（４２０）のうち選択されたテーブル（４２０）を構成するカラム（４５０）の数よび各カラム（４５０）のデータ型を取得するステップ（Ｓ２０）と、
前記取得したカラム（４５０）の数に対応する数のメンバ（１５０）を含む、前記制御プログラム（７０）において利用可能な構造体を定義するステップ（Ｓ２５）と、
前記取得した各カラム（４５０）のデータ型に対応付けて、前記構造体の各メンバ（１５０）のデータ型を決定するステップ（Ｓ３０）とを実行させる、情報処理プログラム。
【０１６０】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１６１】
１，１ａ，１ｂ  制御システム、３０  開発支援プログラム、４０  データ型対応表、６０  テンプレート、６１  第１プログラムテンプレート、６２  第２プログラムテンプレート、７０  ユーザプログラム、８０  システムプログラム、１００  情報処理装置、１００ａ  第１情報処理装置、１００ｂ  第２情報処理装置、１０２  制御部、１０４，２０６，３０４  主メモリ、１０８，２０８，３０８  記憶装置、１１０  取得モジュール、１１２，２０１，３１２  通信インターフェイス、１１４，３１６  表示インターフェイス、１１６，３１４  Ｉ／Ｏインターフェイス、１２０  設定モジュール、１２２，３２２  表示部、１２４，３２４  操作部、１３０  決定モジュール、１４０  生成モジュール、１５０  メンバ、１５１  第１メンバ、１５２  第２メンバ、１５３  第３メンバ、１５４  第４メンバ、２００  制御装置、２０２，３０２  プロセッサ、２０４  チップセット、２２２  内部バスコントローラ、２２４  フィールドバスコントローラ、２２６  Ｉ／Ｏユニット、２３９  メモリカードインターフェイス、２４０  メモリカード、２５５Ａ，２５５Ｂ，２５５Ｃ，２５７Ａ，２５７Ｂ，２５７Ｃ，２５７Ｄ  入力部、２５６Ａ，２５６Ｂ，２５６Ｃ，２５６Ｄ，２５８Ａ，２５８Ｂ，２５８Ｃ，２５８Ｄ  出力部、２８０Ａ，２８０Ｂ  サーボドライバ、３００  外部装置、３２５  内部バス、４１０  データベース、４２０  テーブル、４５０  カラム、４５１  第１カラム、４５２  第２カラム、４５３  第３カラム、４５４  第４カラム、４６１，４６２  レコード、５１０  データベース選択画面、５１１  テーブル選択画面、５１２  データ型選択画面、５１３  データ型確認画面、５１４  生成アイテム選択画面、５１５  生成情報確認画面、５４０  次画面ボタン、５４２  前画面ボタン、５４４  完了ボタン、５５８  選択欄、５７２  構造体、５７４  変数、ＦＢ１，ＦＢ２  ファンクションブロック（ブロック）。
【図１】
2020144753.tif 000003
【図２】
2020144753.tif 000004
【図３】
2020144753.tif 000005
【図４】
2020144753.tif 000006
【図５】
2020144753.tif 000007
【図６】
2020144753.tif 000008
【図７】
2020144753.tif 000009
【図８】
2020144753.tif 000010
【図９】
2020144753.tif 000011
【図１０】
2020144753.tif 000012
【図１１】
2020144753.tif 000013
【図１２】
2020144753.tif 000014
【図１３】
2020144753.tif 000015
【図１４】
2020144753.tif 000016
【図１５】
2020144753.tif 000017
【図１６】
2020144753.tif 000018
【図１７】
2020144753.tif 000019
【図１８】
2020144753.tif 000020
【図１９】
2020144753.tif 000021
【図２０】
2020144753.tif 000022