(57)【特許請求の範囲】
【請求項１】
第一の実行部と第二の実行部とによって実行する対象プログラムに含まれる複数の命令コードのうち、第二の実行部によって実行する命令コードを抽出対象コードとして記憶する抽出対象コード記憶部と、  前記対象プログラムに含まれる前記複数の命令コードのうち、前記抽出対象コード記憶部に記憶された前記抽出対象コードと同じ命令コードを抽出コードとして抽出する命令コード抽出部と、  前記第二の実行部によって実行する第二のプログラムとして、前記命令コード抽出部によって抽出された前記抽出コードを含んだプログラムを生成する第二のプログラム生成部と、  前記第二のプログラムに含まれる一つ以上の命令コードの命令コード毎に、命令コードを構成する一つ以上の要素のそれぞれをパラメータとして抽出するパラメータ抽出部と、  前記パラメータ抽出部によって抽出された一つ以上のパラメータを命令コード毎に関連付けた図を第二のプログラムグラフとして表すグラフデータを生成するグラフデータ生成部とを備えることを特徴とするプログラムグラフ表示装置。
【請求項２】
前記グラフデータ生成部によって生成された前記グラフデータに基づいて前記第二のプログラムグラフを表示するプログラムグラフ表示部を備えることを特徴とする請求項１記載のプログラムグラフ表示装置。
【請求項３】
前記プログラムグラフ表示部によって表示された前記第二のプログラムグラフに対する編集指示に従って、前記第二のプログラムを編集する第二のプログラム編集部を備えることを特徴とする請求項２記載のプログラムグラフ表示装置。
【請求項４】
前記プログラムグラフ表示装置は、制約データ記憶部と、代替コードデータ記憶部とを備え、  前記制約データ記憶部は、前記第二の実行部に関する命令コードの制約を示す制約データを記憶し、  前記代替コードデータ記憶部は、命令コード毎に、代替となる複数の命令コードとして代替コード群を示す代替コードデータを記憶し、  前記第二のプログラム編集部は、編集後の前記第二のプログラムに含まれる命令コードのうち、前記制約データが示す前記制約を満たさない命令コードを変換対象コードとして選択し、  前記第二のプログラム編集部は、選択した前記変換対象コードと同じ命令コードに対応付けられた代替コードデータを選択し、  前記第二のプログラム編集部は、選択した前記変換対象コードを、選択した前記代替コードデータが示す代替コード群に置き換えることを特徴とする請求項３記載のプログラムグラフ表示装置。
【請求項５】
前記制約に関する制約情報と前記代替コード群に関する代替コード情報とを含んだデータとして指定されたプロファイルデータに基づいて、前記制約データと前記代替コードデータとを生成するプロファイル解析部を備えることを特徴とする請求項４記載のプログラムグラフ表示装置。
【請求項６】
抽出対象コード記憶部と、命令コード抽出部と、第二のプログラム生成部と、パラメータ抽出部と、グラフデータ生成部とを備えるプログラムグラフ表示装置を用いるプログラムグラフ表示方法であって、  前記抽出対象コード記憶部は、第一の実行部と第二の実行部とによって実行する対象プログラムに含まれる複数の命令コードのうち、第二の実行部によって実行する命令コードを抽出対象コードとして記憶する記憶部であり、  前記命令コード抽出部が、前記対象プログラムに含まれる前記複数の命令コードのうち、前記抽出対象コード記憶部に記憶された前記抽出対象コードと同じ命令コードを抽出コードとして抽出し、  前記第二のプログラム生成部が、前記第二の実行部によって実行する第二のプログラムとして、前記命令コード抽出部によって抽出された前記抽出コードを含んだプログラムを生成し、  前記パラメータ抽出部が、前記第二のプログラムに含まれる一つ以上の命令コードの命令コード毎に、命令コードを構成する一つ以上の要素のそれぞれをパラメータとして抽出し、  前記グラフデータ生成部が、前記パラメータ抽出部によって抽出された一つ以上のパラメータを命令コード毎に関連付けた図を第二のプログラムグラフとして表すグラフデータを生成することを特徴とするプログラムグラフ表示方法。
【請求項７】
請求項１から請求項５いずれかに記載のプログラムグラフ表示装置としてコンピュータを機能させるためのプログラムグラフ表示プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、例えば、フィールド機器用のラダープログラムをグラフ形式で表示するためのプログラムグラフ表示装置、プログラムグラフ表示方法およびプログラムグラフ表示プログラムに関するものである。
【背景技術】
【０００２】  工場の製造ライン等では、通常、複数のフィールド機器とＣＰＵ（ＣＰＵユニットまたはＰＬＣともいう）とがネットワークを介して繋がる。  そして、ＣＰＵは、フィールド機器の入力端子に入力された入力情報に基づいてフィールド機器の出力端子から出力する出力情報を作成する演算プログラムを実行し、フィールド機器を自動制御する。  なお、ＣＰＵはＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略であり、ＰＬＣはｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｃｏｎｔｒｏｌｌｅｒの略である。【０００３】  上記のようにＣＰＵを用いてフィールド機器を自動制御する場合、フィールド機器とＣＰＵとの間で通信する必要があり、フィールド機器に対する入出力処理に時間がかかってしまう。  そこで、より高速な入出力の応答性能を得るため、出力情報を作成する演算処理機能を持つフィールド機器が開発されている。  演算処理機能を持ったフィールド機器には演算処理を指定するパラメータが設定され、フィールド機器は設定されたパラメータに従って演算処理を実行する。但し、フィールド機器が実行可能な演算処理には制約がある。【０００４】  非特許文献１には、独立して演算処理を行うフィールド機器が開示されている。  非特許文献１に開示されているフィールド機器は、高速な入出力制御を実現するファストロジック機能を備えている。ファストロジック機能とは、設定されたパラメータに従って入力情報に対する演算処理を行い、出力情報を生成する機能である。  例えば、ファストロジック機能は、２つの入力端子に入力された２つの入力情報に対して論理積（ＡＮＤ）または論理和（ＯＲ）などの論理演算を行い、論理演算の結果を出力端子に出力することができる。  入力端子、出力端子及び演算の種類を指定するためのパラメータ設定は専用の設定ツールを用いて行われ、パラメータが設定されたフィールド機器は高速な入出力の応答性能を得る。例えば、ファストロジック機能を持ったフィールド機器には、出力端子と入力端子と演算の種類とによって特定される演算処理機能が固定的に割り当てられている。そして、専用の設定ツールを用いたパラメータの設定により、演算処理機能が有効な機能として動作する。【０００５】  特許文献１には、他のフィールド機器と連携して演算処理を行うフィールド機器を開示している。  また、特許文献１には、ＣＰＵを介さない自動制御を実現するために、ネットワーク上の各フィールド機器の入出力情報の対応関係を設定ツールを用いて設定するための技術が開示されている。なお、対応関係の情報はコネクションデータベースと呼ばれるパラメータとして各フィールド機器に配布される。  しかし、特許文献１には、設定ツールを用いてパラメータを設定する手段について言及されていない。仮に、特許文献１の実施の形態に記載された送受信対応表をフィールド機器毎に個別に設定する手段を用いると、システム全体の入出力情報間の依存関係を把握することが困難になる。理由は、送受信対応表がフィールド機器毎に別々に設定されているためである。  また、ＣＰＵを介さずにフィールド機器間で演算処理を行う場合、フィールド機器またはネットワークの仕様に従って、フィールド機器が実行する演算について制約が定められることが多い。例えば、演算の入力数は２つまで、組み合わせる演算の段数は２段まで、上段の演算は論理和演算だけ、などの制約が存在する。そして、演算の制約はフィールド機器またはネットワーク毎に異なる。そのため、開発するネットワークシステムで用いるネットワークまたはフィールド機器によって演算の制約を意識しながら、フィールド機器の設定を検討する必要がある。【０００６】  特許文献２には、システム開発者がフィールド機器の制約またはネットワークの制約を考慮してフィールド機器にパラメータを設定することが開示されている。  特許文献２において、ロジック図編集装置は、プラント制御用のプログラムを設計する際にロジック図に対して指定された結線について、結線の制約を自動でチェックする。  従来は、一定条件を満たせばどんな結線を指定することも可能であったため、タイプの異なる端子間の結線など、成立しないはずの結線についてもロジック図に設定できてしまっていた。そこで、特許文献２のロジック図編集装置は制約情報を用いて結線の制約をチェックし、成立しないはずの結線の設定を防止する。  しかし、システム開発者は、ロジック図編集装置に制約の範囲内で設定を行わせるために、制約を意識して正しい制約情報を作成する必要がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−２５９２０８号公報
【特許文献２】特開２００４−２１３２７７号公報
【非特許文献】
【０００８】
【非特許文献１】「ＣＣ−Ｌｉｎｋ  ＩＥ  フィールドネットワークリモートＩ／Ｏユニット  ユーザーズマニュアル」、三菱電機株式会社、２０１２年１２月
【発明の概要】
【発明が解決しようとする課題】
【０００９】  本発明は、例えば、フィールド機器用のラダープログラムをグラフ形式で表示できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】  本発明のプログラムグラフ表示装置は、  第一の実行部と第二の実行部とによって実行する対象プログラムに含まれる複数の命令コードのうち、第二の実行部によって実行する命令コードを抽出対象コードとして記憶する抽出対象コード記憶部と、  前記対象プログラムに含まれる前記複数の命令コードのうち、前記抽出対象コード記憶部に記憶された前記抽出対象コードと同じ命令コードを抽出コードとして抽出する命令コード抽出部と、  前記第二の実行部によって実行する第二のプログラムとして、前記命令コード抽出部によって抽出された前記抽出コードを含んだプログラムを生成する第二のプログラム生成部と、  前記第二のプログラムに含まれる一つ以上の命令コードの命令コード毎に、命令コードを構成する一つ以上の要素のそれぞれをパラメータとして抽出するパラメータ抽出部と、  前記パラメータ抽出部によって抽出された一つ以上のパラメータを命令コード毎に関連付けた図を第二のプログラムグラフとして表すグラフデータを生成するグラフデータ生成部とを備える。
【発明の効果】
【００１１】  本発明によれば、例えば、フィールド機器用のラダープログラム（第二のプログラムの一例）をグラフ形式で表示することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１におけるプログラム編集装置１００と機器制御装置２００との関係図である。
【図２】実施の形態１におけるプログラム編集装置１００の機能構成図である。
【図３】実施の形態１におけるプログラム編集装置１００のプログラム編集処理を示すフローチャートである。
【図４】実施の形態１における機器制御プログラム２１０の一例を示す図である。
【図５】実施の形態１における抽出対象コードリスト１９１の一例を示す図である。
【図６】実施の形態１における抽出コードリスト１９２の一例を示す図である。
【図７】実施の形態１における副制御プログラム２１２の一例を示す図である。
【図８】実施の形態１における副制御パラメータリスト１９３の一例を示す図である。
【図９】実施の形態１における副制御パラメータ編集画面３１０の一例を示す図である。
【図１０】実施の形態１における主制御プログラム２１１の一例を示す図である。
【図１１】実施の形態１における主制御プログラム２１１の一例を示す図である。
【図１２】実施の形態１におけるプログラム編集装置１００のハードウェア資源の一例を示す図である。
【図１３】実施の形態２におけるプログラム編集装置１００の機能構成図である。
【図１４】実施の形態２におけるグラフ形式表示画面４１０の一例を示す図である。
【図１５】実施の形態２における表形式表示画面４２０の一例を示す図である。
【図１６】実施の形態２における副制御パラメータグラフ表示部１６１の副制御パラメータグラフ生成処理を示すフローチャートである。
【図１７】実施の形態３における副制御パラメータ編集画面４３０の一例を示す図である。
【図１８】実施の形態４におけるプログラム編集装置１００の機能構成図である。
【図１９】実施の形態４におけるコード制約データ１９５の一例を示す図である。
【図２０】実施の形態４における変換規則データ１９６の一例を示す図である。
【図２１】実施の形態４における副制御プログラム編集部１１６のコード制約確認処理を示すフローチャートである。
【図２２】実施の形態４における命令コードの変換例を示す図である。
【図２３】実施の形態４における副制御パラメータ編集画面４３０の一例を示す図である。
【図２４】実施の形態５におけるプログラム編集装置１００の機能構成図である。
【発明を実施するための形態】
【００１３】  実施の形態１．  ＣＰＵ用の制御プログラムからフィールド機器用のラダープログラムを生成し、生成したラダープログラムを編集する形態について説明する。
【００１４】  図１は、実施の形態１におけるプログラム編集装置１００と機器制御装置２００との関係図である。  実施の形態１におけるプログラム編集装置１００と機器制御装置２００との関係について、図１に基づいて説明する。
【００１５】  機器制御装置２００は、センサーまたはモーターなどの周辺機器２０９を制御する。  例えば、機器制御装置２００は、ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）システムに用いられる。
【００１６】  機器制御装置２００は、ＣＰＵユニット２０１と、入出力ユニット２０２（フィールド機器の一例）とを備える。
【００１７】  ＣＰＵユニット２０１（第一の実行部の一例）は、ネットワーク２０４を介して入出力ユニット２０２に接続し、入出力ユニット２０２および入出力ユニット２０２に接続する周辺機器２０９を制御する。  また、ＣＰＵユニット２０１は、プログラムを実行するための演算機能（例えば、演算素子または演算回路）を備え、周辺機器２０９を制御するための機器制御プログラム２１０（但し、入出力ユニット２０２によって実行される部分を除く）を実行する。  例えば、ＣＰＵユニット２０１の一例はプログラマブルロジックコントローラである。
【００１８】  入出力ユニット２０２（第二の実行部の一例）は、周辺機器２０９（フィールド機器の一例）に接続し、周辺機器２０９に対して信号の入出力を行う。例えば、入出力ユニット２０２は、周辺機器２０９から出力される出力信号を入力し、周辺機器２０９を制御するための制御信号を周辺機器２０９に出力する。  また、入出力ユニット２０２は、ＣＰＵユニット２０１と同様に演算機能を備え、機器制御プログラム２１０の一部を実行する。
【００１９】  機器制御プログラム２１０は、周辺機器２０９を制御するためのプログラムである。  例えば、機器制御プログラム２１０は、周辺機器２０９の出力信号（例えば、センサーが計測した計測値を表す信号）を処理し、処理結果に基づいて制御信号（例えば、モーターを起動または停止するための信号）を生成するための一つ以上の命令文（以下、命令コードという）を含む。  なお、機器制御プログラム２１０は、ラダー言語またはＣ言語などのプログラミング言語で記述されたソースプログラムと、機械語で記述されたオブジェクトプログラムとのいずれであっても構わない。
【００２０】  プログラム編集装置１００は、機器制御プログラム２１０を編集することによって主制御プログラム２１１（第一のプログラムの一例）と副制御プログラム２１２（第二のプログラムの一例）とを生成するコンピュータである。  主制御プログラム２１１は、機器制御プログラム２１０のうち、ＣＰＵユニット２０１によって実行するプログラムの部分である。  副制御プログラム２１２は、機器制御プログラム２１０のうち、入出力ユニット２０２によって実行するプログラムの部分である。
【００２１】  以下に、プログラム編集装置１００の詳細について説明する。
【００２２】  図２は、実施の形態１におけるプログラム編集装置１００の機能構成図である。  実施の形態１におけるプログラム編集装置１００の機能構成について、図２に基づいて説明する。
【００２３】  プログラム編集装置１００は、命令コード抽出部１１１と、副制御プログラム生成部１１２（第二のプログラム生成部の一例）と、副制御パラメータリスト生成部１１３（パラメータ抽出部の一例）と、副制御パラメータリスト表示部１１４（第二のプログラム表示部の一例）と、編集指示入力部１１５と、副制御プログラム編集部１１６（第二のプログラム編集部の一例）とを備える。  プログラム編集装置１００は、主制御プログラム生成部１２１（第一のプログラム生成部の一例）と、主制御プログラム編集部１２２（第一のプログラム編集部の一例）とを備える。
【００２４】  命令コード抽出部１１１は、機器制御プログラム２１０（対象プログラムの一例）に含まれる命令コードのうち抽出対象コードリスト１９１に示される抽出対象コードと同じ命令コードを抽出し、抽出コードリスト１９２を生成する。  抽出対象コードリスト１９１は、入出力ユニット２０２で実行できる命令コード（抽出対象コード）の一覧を示す。  抽出コードリスト１９２は、機器制御プログラム２１０から抽出された命令コード（以下、抽出コードという）の一覧を示す。
【００２５】  副制御プログラム生成部１１２は、抽出コードリスト１９２に示される抽出コードを含む副制御プログラム２１２（第二のプログラムの一例）を生成する。
【００２６】  副制御パラメータリスト生成部１１３は、副制御プログラム２１２または抽出コードリスト１９２に基づいて副制御パラメータリスト１９３（第二のプログラム情報の一例）を生成する。  副制御パラメータリスト１９３は、副制御プログラム２１２に含まれる命令コード（以下、副制御コードという）を構成する副制御パラメータの一覧を示す。  副制御パラメータは、副制御プログラム２１２に含まれる命令コード（副制御コード）を構成する構成要素である。
【００２７】  副制御パラメータリスト表示部１１４は、副制御パラメータリスト１９３が示す副制御パラメータを表示する。
【００２８】  編集指示入力部１１５は、副制御パラメータリスト１９３が示す副制御パラメータに対する編集指示を入力する。
【００２９】  副制御プログラム編集部１１６は、編集指示に従って副制御プログラム２１２を編集する。  例えば、副制御プログラム編集部１１６は、副制御プログラム２１２に含まれる副制御コードのうちユーザが指定した副制御コード（主制御プログラム２１１に移行する命令コード）を、副制御プログラム２１２から削除する。
【００３０】  主制御プログラム生成部１２１は、抽出コードリスト１９２に示される抽出コードを機器制御プログラム２１０から除外することによって、主制御プログラム２１１（第一のプログラムの一例）を生成する。
【００３１】  主制御プログラム編集部１２２は、主制御プログラム２１１を編集する。  例えば、主制御プログラム編集部１２２は、副制御プログラム２１２に含まれる副制御コードのうちユーザが指定した副制御コード（主制御プログラム２１１に移行する命令コード）を主制御プログラム２１１に追加する。
【００３２】  装置記憶部１９０は、プログラム編集装置１００で使用するデータを記憶する。  例えば、装置記憶部１９０は、機器制御プログラム２１０と、抽出対象コードリスト１９１と、抽出コードリスト１９２と、副制御パラメータリスト１９３と、副制御プログラム２１２と、主制御プログラム２１１とを記憶する。
【００３３】  図３は、実施の形態１におけるプログラム編集装置１００のプログラム編集処理を示すフローチャートである。  実施の形態１におけるプログラム編集装置１００のプログラム編集処理について、図３に基づいて説明する。
【００３４】  Ｓ１１１において、命令コード抽出部１１１は、機器制御プログラム２１０に含まれる命令コードのうち、抽出対象コードリスト１９１に示される抽出対象コードと同じ命令コードを抽出する。  ここで、同じ命令コードとは、変数値も含めて全てが同じである命令コードと、変数値が異なるがコード形式が同じである命令コードと、命令または演算の種類が同じである命令コードと、のいずれであっても構わない。  Ｓ１１１の後、処理はＳ１１２に進む。
【００３５】  Ｓ１１２において、命令コード抽出部１１１は、機器制御プログラム２１０から抽出した命令コード（抽出コード）を一覧にした抽出コードリスト１９２を生成する。  抽出コードリスト１９２は、抽出コードの一覧を示すと共に、抽出コード毎に抽出コードの抽出箇所を識別する抽出箇所識別子を示す。  Ｓ１１２の後、処理はＳ１１３に進む。
【００３６】  以下に、対象コード抽出処理（Ｓ１１１）および抽出コードリスト生成処理（Ｓ１１２）の具体例を図４、図５および図６に基づいて説明する。
【００３７】  図４は、実施の形態１における機器制御プログラム２１０の一例を示す図である。  図４に示す機器制御プログラム２１０は、ラダー言語で記述されたラダープログラムであり、（１）から（４）の命令コードを含んでいる。  （１）の命令コードは１ビットのコピーを意味し、（２）の命令コードは２つの値の論理積の算出を意味し、（３）の命令コードは２つの値の論理和の出力を意味する。  Ｘｎは入力デバイスを識別する変数値を示し、Ｙｎは出力デバイスを識別する変数値を示している。これらの表記の意味は以降の図面においても同様である。
【００３８】  図５は、実施の形態１における抽出対象コードリスト１９１の一例を示す図である。  図５に示す抽出対象コードリスト１９１は、ラダー言語で記述された（ａ）から（ｃ）の抽出対象コードを示している。
【００３９】  図６は、実施の形態１における抽出コードリスト１９２の一例を示す図である。  図６に示す抽出コードリスト１９２は、ラダー言語で記述された（１）から（３）の抽出コードを示している。  また、抽出コードリスト１９２は、抽出コード毎に抽出コードが抽出された抽出箇所を識別する抽出箇所識別子（例えば、機器制御プログラム２１０の行番号）を示している。図中のＬ１からＬ３が抽出箇所識別子である。Ｌｎは機器制御プログラム２１０のｎ行目から抽出されたことを意味している。
【００４０】  図４の機器制御プログラム２１０に含まれる（１）から（４）の命令コードのうち、（１）から（３）の命令コードは、図５の抽出対象コードリスト１９１に示される（ａ）から（ｃ）の抽出対象コードと同じ命令コードである。つまり、（１）から（３）の命令コードは、（ａ）から（ｃ）の命令コードとコード形式および命令（演算）の種類が同じである。  また、機器制御プログラム２１０の（４）の命令コードは抽出対象コードリスト１９１に示されるいずれの抽出対象コードとも異なる命令コードである。  したがって、命令コード抽出部１１１は、機器制御プログラム２１０に含まれる（１）から（４）の命令コードのうち（１）から（３）の命令コードを抽出し（図３のＳ１１１）、図６の抽出コードリスト１９２を生成する（図３のＳ１１２）。
【００４１】  図３に戻り、Ｓ１１３から説明を続ける。
【００４２】  Ｓ１１３において、副制御プログラム生成部１１２は、抽出コードリスト１９２に示される抽出コードを含んだ副制御プログラム２１２を生成する。  Ｓ１１３の後、処理はＳ１１４に進む。
【００４３】  以下に、副制御プログラム生成処理（Ｓ１１３）の具体例について図７に基づいて説明する。
【００４４】  図７は、実施の形態１における副制御プログラム２１２の一例を示す図である。  図７に示す副制御プログラム２１２は、ラダープログラムであり、（１）から（３）の命令コードを含んでいる。  副制御プログラム生成部１１２は、図６の抽出コードリスト１９２に基づいて図７の副制御プログラム２１２を生成する。  つまり、副制御プログラム生成部１１２は、図６の抽出コードリスト１９２が示す（１）から（３）の抽出コードをそれぞれの抽出箇所識別子Ｌｎに基づいて並べることによって、図７の副制御プログラム２１２を生成する。  また、副制御プログラム生成部１１２は、（１）から（３）の抽出コードに抽出箇所識別子Ｌｎを付加してもよい。例えば、副制御プログラム生成部１１２は、抽出箇所識別子を示すコメント「＃Ｌｎ」を付加する。
【００４５】  図３に戻り、Ｓ１１４から説明を続ける。
【００４６】  Ｓ１１４において、副制御パラメータリスト生成部１１３は、副制御プログラム２１２に含まれる副制御コード（命令コード）から副制御パラメータを抽出し、抽出した副制御パラメータを一覧にした副制御パラメータリスト１９３を生成する。  但し、副制御パラメータリスト生成部１１３は、副制御プログラム２１２の代わりに抽出コードリスト１９２を用いて、副制御パラメータリスト１９３を生成しても構わない。  Ｓ１１４の後、処理はＳ１１５に進む。
【００４７】  以下に、副制御パラメータリスト生成処理（Ｓ１１４）の具体例について図８に基づいて説明する。
【００４８】  図８は、実施の形態１における副制御パラメータリスト１９３の一例を示す図である。  図８に示す副制御パラメータリスト１９３は、Ｎｏ．１からＮｏ．３の副制御パラメータを示している。  また、副制御パラメータは、「Ｎｏ．」「入力デバイス１」「入力デバイス２」「演算子」「出力デバイス」を含んでいる。  「Ｎｏ．」は、機器制御プログラム２１０から抽出された副制御コードの抽出箇所を識別する抽出箇所識別子を示す。  「入力デバイス１」は、命令コードを構成する構成要素のうち、値の入力元である第一の入力デバイスを識別する識別子を示す。  「入力デバイス２」は、命令コードを構成する構成要素のうち、値の入力元である第二の入力デバイスを識別する識別子を示す。  「演算子」は、命令コードを構成する構成要素のうち、演算の種類を識別する識別子を示す。  「出力デバイス」は、命令コードを構成する構成要素のうち、値の出力先である出力デバイスを識別する識別子を示す。
【００４９】  副制御パラメータリスト生成部１１３は、図７の副制御プログラム２１２に基づいて図８の副制御パラメータリスト１９３を生成する。  つまり、副制御パラメータリスト生成部１１３は、図７の副制御プログラム２１２に含まれる（１）から（３）の命令コード毎に、命令コードから副制御パラメータを抽出する。  そして、副制御パラメータリスト生成部１１３は、（１）から（３）の命令コード毎に命令コードから抽出した副制御パラメータを示す図８の副制御パラメータリスト１９３を生成する。  但し、副制御パラメータリスト生成部１１３は、図７の副制御プログラム２１２の代わりに図６の抽出コードリスト１９２を用いて、図８の副制御パラメータリスト１９３を生成しても構わない。  図８の副制御パラメータリスト１９３において、Ｌ１の副制御パラメータは、図７または図６の（１）から（３）の命令コードのうち、抽出箇所識別子Ｌ１に対応付けられた（１）の命令コードを構成する副制御パラメータである。  同様に、Ｌ２の副制御パラメータは図７または図６の（２）の命令コードを構成する副制御パラメータであり、Ｌ３の副制御パラメータは図７または図６の（３）の命令コードを構成する副制御パラメータである。
【００５０】  図３に戻り、Ｓ１１５から説明を続ける。
【００５１】  Ｓ１１５において、副制御パラメータリスト表示部１１４は、副制御パラメータリスト１９３が示す副制御パラメータを表示する。  例えば、副制御パラメータリスト表示部１１４は、図９に示すような副制御パラメータ編集画面３１０を表示する。  図９は、実施の形態１における副制御パラメータ編集画面３１０の一例を示す図である。  図９の副制御パラメータ編集画面３１０は、表形式で表した図８の副制御パラメータリスト１９３を含んでいる。また、副制御パラメータ編集画面３１０は「ＣＰＵ実行」欄を加えている。  「ＣＰＵ実行」欄は、ＣＰＵユニット２０１に実行させたい副制御コード、つまり、主制御プログラム２１１に移行したい副制御コード、を指定するためのチェックボックスを備えている。  なお、副制御パラメータリスト１９３の表示欄は編集可能なテキストボックスである。但し、テキストボックス以外の編集手段（プルダウンリスト、メニューなど）を用いても構わない。  また、副制御パラメータ編集画面３１０は、副制御パラメータリスト１９３に対する編集の終了を指示するための編集終了ボタン３１１を含んでいる。  以下、ＣＰＵユニット２０１に実行させたい命令コード、つまり、主制御プログラム２１１に移行したい命令コード、として指定された副制御コードを「移行コード」という。  Ｓ１１５の後、処理はＳ１１６に進む。
【００５２】  Ｓ１１６において、ユーザは、表示された副制御パラメータに対する編集指示（追加、変更または削除など）を、キーボードまたはマウスなどの入力機器を用いてプログラム編集装置１００に指定する。  例えば、ユーザは、図９の副制御パラメータ編集画面３１０に表示されたＬ１の入力デバイス１を「Ｘ１」から「Ｘ２」に変更し、編集終了ボタン３１１を押下する。  例えば、図９の副制御パラメータ編集画面３１０に表示されたＬ１の副制御パラメータに関する副制御コードをＣＰＵユニット２０１に実行させたい場合、ユーザは、Ｌ１の「ＣＰＵ実行」欄のチェックボックスにチェックを入れ、編集終了ボタン３１１を押下する。
【００５３】  そして、編集指示入力部１１５は、ユーザから指定された編集指示を入力機器から入力する。  Ｓ１１６の後、処理はＳ１１７に進む。
【００５４】  Ｓ１１７において、副制御プログラム編集部１１６は、ユーザの編集指示に従って副制御プログラム２１２に含まれる副制御コードを編集する。  副制御プログラム編集部１１６は、ユーザの編集指示に従って副制御パラメータリスト１９３を編集し、編集後の副制御パラメータリスト１９３に基づいて編集後の副制御プログラム２１２を生成しても構わない。
【００５５】  例えば、図９の副制御パラメータ編集画面３１０でＬ１の入力デバイス１が「Ｘ１」から「Ｘ２」に変更された場合、副制御プログラム編集部１１６は、図７の副制御プログラム２１２に含まれる（１）から（３）の副制御コードのうち、抽出箇所識別子Ｌ１に対応付けられた（１）の副制御コードを選択する。そして、副制御プログラム編集部１１６は、選択した（１）の副制御コードに含まれる入力デバイスの識別子を「Ｘ１」から「Ｘ２」に変更する。  例えば、図９の副制御パラメータ編集画面３１０でＬ１の「ＣＰＵ実行」欄のチェックボックスにチェックが入った場合、副制御プログラム編集部１１６は、図７の副制御プログラム２１２に含まれる（１）から（３）の副制御コードのうち、抽出箇所識別子Ｌ１に対応付けられた（１）の副制御コードを削除する。（１）の副制御コードは主制御プログラム２１１に移行される移行コードである。  Ｓ１１７の後、処理はＳ１２１に進む。
【００５６】  Ｓ１２１において、主制御プログラム生成部１２１は、抽出コードリスト１９２に示される抽出コードを機器制御プログラム２１０から除外することによって、主制御プログラム２１１を生成する。  Ｓ１２１の後、処理はＳ１２２に進む。
【００５７】  以下に、主制御プログラム生成処理（Ｓ１２１）の具体例について図８および図９に基づいて説明する。
【００５８】  図１０は、実施の形態１における主制御プログラム２１１の一例を示す図である。  図１０に示す主制御プログラム２１１は、ラダープログラムであり、Ｄ１からＤ３のダミーコードと、（４）の命令コードとを含んでいる。ダミーコードは、実行されない無効な命令コードである。つまり、主制御プログラム２１１をコンパイルしても、ダミーコードに相当するオブジェクトコード（実行コードまたはマシンコードともいう）は生成されない。  主制御プログラム生成部１２１は、図４の機器制御プログラム２１０と図６の抽出コードリスト１９２とに基づいて、図１０の主制御プログラム２１１を生成する。  つまり、主制御プログラム生成部１２１は、図４の機器制御プログラム２１０に含まれる（１）から（４）の命令コードのうち図６の抽出コードリスト１９２に示される（１）から（３）の命令コードをそれぞれの抽出箇所識別子Ｌｎに基づいて特定する。  そして、主制御プログラム生成部１２１は、特定した（１）から（３）の命令コードをダミーコードに置き換えることによって、図１０の主制御プログラム２１１を生成する。  図１０のＤ１からＤ３がダミーコードであり、それぞれのダミーコードには対応する抽出コードの抽出箇所識別子Ｌｎを含んだ文字列「ＤＭＹ＿Ｌｎ」が設定されている。
【００５９】  図１１は、実施の形態１における主制御プログラム２１１の一例を示す図である。  図１１に示す主制御プログラム２１１は、記号「＃」を付したコメント行と、（４）の命令コードとを含んでいる。  主制御プログラム生成部１２１は、図４の機器制御プログラム２１０と図６の抽出コードリスト１９２とに基づいて、図１１の主制御プログラム２１１を生成してもよい。  つまり、主制御プログラム生成部１２１は、図４の機器制御プログラム２１０に含まれる（１）から（４）の命令コードのうち図６の抽出コードリスト１９２に示される（１）から（３）の命令コードをダミーコードに置き換える代わりにコメント行に置き換えてもよい。  また、主制御プログラム生成部１２１は、副制御プログラム２１２に移行された命令コードであることを示すコメント「副制御＿Ｌｎ」をコメント行に付記してもよい。
【００６０】  図３に戻り、Ｓ１２２から説明を続ける。
【００６１】  Ｓ１２２において、主制御プログラム編集部１２２は、ユーザの編集指示で指定された移行コードを主制御プログラム２１１に追加する。  例えば、図９の副制御パラメータ編集画面３１０でＬ１の「ＣＰＵ実行」欄のチェックボックスにチェックが入った場合、主制御プログラム編集部１２２は、図１０の主制御プログラム２１１に含まれるＤ１からＤ３のダミーコードのうち、抽出箇所識別子Ｌ１に対応付けられたＤ１のダミーコードを選択する。そして、主制御プログラム編集部１２２は、選択したＤ１のダミーコードを通常の命令コードに変換（復元）することによって、主制御プログラム２１１に移行コードを追加する。主制御プログラム２１１に追加される移行コードは、Ｓ１１７で副制御プログラム２１２から削除された（１）の副制御コードである。  Ｓ１２２の後、プログラム編集処理は終了する。但し、ユーザの編集指示によって移行コードが指定されていない場合、Ｓ１２２は行われずに、プログラム編集処理は終了する。
【００６２】  図１２は、実施の形態１におけるプログラム編集装置１００のハードウェア資源の一例を示す図である。  図１２において、プログラム編集装置１００（コンピュータの一例）は、ＣＰＵ９０１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ９０１は、バス９０２を介してＲＯＭ９０３、ＲＡＭ９０４、通信ボード９０５（通信装置）、ディスプレイ９１１（表示装置）、キーボード９１２、マウス９１３、ドライブ９１４、磁気ディスク装置９２０などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。ドライブ９１４は、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。  ＲＯＭ９０３、ＲＡＭ９０４、磁気ディスク装置９２０およびドライブ９１４は記憶装置の一例である。キーボード９１２、マウス９１３および通信ボード９０５は入力装置の一例である。ディスプレイ９１１および通信ボード９０５は出力装置の一例である。
【００６３】  通信ボード９０５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
【００６４】  磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、プログラム群９２２、ファイル群９２３が記憶されている。
【００６５】  プログラム群９２２には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラム（例えば、プログラムグラフ表示プログラム）は、ＣＰＵ９０１により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【００６６】  ファイル群９２３には、実施の形態において説明する「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【００６７】  実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。  フローチャートなどに基づいて説明する実施の形態の処理はＣＰＵ９０１、記憶装置、入力装置、出力装置などのハードウェアを用いて実行される。
【００６８】  実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００６９】  実施の形態１により、例えば、以下のような効果を奏する。  プログラム編集装置１００は、ＣＰＵユニット上で実行する制御プログラムから、演算機能を持った高速応答入出力ユニットで実行するための入出力応答制御プログラム（副制御プログラム）を自動で抽出することができる。  ユーザは、副制御プログラム２１２をプログラミングレスで容易に編集することができる。  ユーザは、ＣＰＵユニットと入出力ユニットとの処理の分担を容易に把握することができる。  ユーザは、副制御プログラム２１２に含まれる副制御コードを主制御プログラム２１１に移行することができる。
【００７０】  実施の形態２．  副制御プログラム２１２（例えば、フィールド機器用のラダープログラム）を視覚的に表示する形態について説明する。  以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【００７１】  なお、図１に示した入出力ユニット２０２および周辺機器２０９はフィールド機器ともいう。
【００７２】  図１３は、実施の形態２におけるプログラム編集装置１００の機能構成図である。  実施の形態２におけるプログラム編集装置１００の機能構成について、図１３に基づいて説明する。
【００７３】  プログラム編集装置１００（プログラムグラフ表示装置の一例）は、実施の形態１（図２参照）で説明した構成に加えて、副制御パラメータグラフ表示部１６１（グラフデータ生成部、プログラムグラフ表示部の一例）を備える。
【００７４】  副制御パラメータグラフ表示部１６１は、副制御パラメータリスト１９３をグラフ形式で表示する。  ユーザがプログラム編集装置１００に対して副制御パラメータリスト１９３のグラフ形式表示を指定した場合、副制御パラメータグラフ表示部１６１は、副制御パラメータリスト１９３に基づいて副制御パラメータグラフ１９４のデータを生成し、図１４に示すようなグラフ形式表示画面４１０を表示する。
【００７５】  図１４は、実施の形態２におけるグラフ形式表示画面４１０の一例を示す図である。  図１４に示すように、グラフ形式表示画面４１０は、副制御パラメータグラフ１９４と表形式表示ボタン４１１とを含む。  副制御パラメータグラフ１９４のデータは、副制御パラメータリスト１９３をグラフ化したデータである。  表形式表示ボタン４１１は、副制御パラメータリスト１９３を表形式で示す表形式表示画面４２０への切り替えを指定するためのボタン（ユーザインタフェースの一例）である。
【００７６】  グラフ形式表示画面４１０の表形式表示ボタン４１１が押下された場合、副制御パラメータリスト表示部１１４は、副制御パラメータリスト１９３に基づいて、図１５に示すような表形式表示画面４２０を表示する。表形式表示画面４２０の表示方法は、副制御パラメータ編集画面３１０（図９参照）の表示方法と同様である。
【００７７】  図１５は、実施の形態２における表形式表示画面４２０の一例を示す図である。  図１５に示すように、表形式表示画面４２０は、表形式の副制御パラメータリスト１９３とグラフ形式表示ボタン４２１とを含む。  グラフ形式表示ボタン４２１は、副制御パラメータリスト１９３をグラフ形式で示すグラフ形式表示画面４１０への切り替えを指定するためのボタンである。
【００７８】  なお、ユーザが副制御パラメータリスト１９３のグラフ形式表示を指定する前に表形式表示をプログラム編集装置１００に対して指定した場合、副制御パラメータリスト表示部１１４は、副制御パラメータリスト１９３に基づいて、図１５に示すような表形式表示画面４２０を表示する。
【００７９】  図１４に戻り、グラフ形式表示画面４１０の説明を続ける。  図１４に示した副制御パラメータグラフ１９４は、図１５に示した副制御パラメータリスト１９３の内容をグラフ化したものである。  例えば、副制御パラメータグラフ１９４の上段部分はＬ１の命令コードを表し、副制御パラメータグラフ１９４の中段部分はＬ２の命令コードを表し、副制御パラメータグラフ１９４の下段部分はＬ３の命令コードを表している。
【００８０】  副制御パラメータグラフ１９４は、命令コード毎に、入力データの入力元のフィールド機器、フィールド機器の入力端子（入力デバイス）、出力データの出力先のフィールド機器、フィールド機器の出力端子（出力デバイス）および演算（演算素子または演算回路）の種類を示す。フィールド機器とは、入出力ユニット２０２または周辺機器２０９などである。
【００８１】  副制御パラメータグラフ１９４は、入力端子を表すアイコンと、出力端子を表すアイコンと、演算の種類を表すアイコンとを線で結ぶことによって、入力端子と出力端子と演算の種類とを対応付けている。
【００８２】  副制御パラメータグラフ１９４は、演算の種類毎に異なるアイコンを表記している。  例えば、Ｌ１の論理積と、Ｌ２の論理和と、Ｌ３の大小比較は、それぞれのアイコンの形状が異なっている。但し、各演算のアイコンは、形状以外の表記方法（例えば、色）が異なっていてもよい。
【００８３】  副制御パラメータグラフ１９４は、入力端子と出力端子とを丸いアイコンで表記している。  但し、入力端子と出力端子とを異なるアイコンで表記しても構わない（例えば、丸いアイコンと四角いアイコン）。
【００８４】  副制御パラメータグラフ１９４は、フィールド機器毎に入力端子および出力端子を線で囲っている。  例えば、１番のフィールド機器「機器１」の枠線は、命令コードＬ１の入力端子「Ｘ１」と命令コードＬ３の入力端子「Ｘ２０」とを囲っている。
【００８５】  つまり、副制御パラメータグラフ１９４のデータは、アイコンの種類（形状、色など）、関係するアイコン同士を結ぶ接続線、アイコンの表示位置などを指定する情報を含んでいる。
【００８６】  図１６は、実施の形態２における副制御パラメータグラフ表示部１６１の副制御パラメータグラフ生成処理を示すフローチャートである。  実施の形態２における副制御パラメータグラフ表示部１６１の処理方法について、図１６に基づいて説明する。
【００８７】  Ｓ２１０において、副制御パラメータグラフ表示部１６１は、装置記憶部１９０から副制御パラメータリスト１９３を取得する。  Ｓ２１０の後、処理はＳ２２０に進む。
【００８８】  Ｓ２２０において、副制御パラメータグラフ表示部１６１は、副制御パラメータリスト１９３から未選択の命令コードを１つ選択する。以下、Ｓ２２０で選択した命令コードを「選択コード」という。  Ｓ２２０の後、処理はＳ２２１に進む。
【００８９】  Ｓ２２１において、副制御パラメータグラフ表示部１６１は、選択コードの副制御パラメータに基づいて、入力端子用のアイコン、出力端子用のアイコン、演算の種類を表すアイコン、アイコン同士を結ぶ接続線、アイコンの表示位置などのグラフ情報を生成する。  なお、グラフ情報の生成に必要なグラフ表記データ（例えば、アイコンデータ）は装置記憶部１９０に予め記憶しておく。例えば、アイコンデータは、アイコンとアイコンの種類（入力端子、出力端子、論理積、論理和など）と対応付けたデータである。  Ｓ２２１の後、処理はＳ２２２に進む。
【００９０】  Ｓ２２２において、副制御パラメータグラフ表示部１６１は、副制御パラメータリスト１９３に未選択の命令コードが残っているか否かを判定する。  未選択の命令コードが残っている場合（ＹＥＳ）、処理はＳ２２０に戻る。  未選択の命令コードが残っていない場合（ＮＯ）、処理はＳ２３０に進む。
【００９１】  Ｓ２３０において、副制御パラメータグラフ表示部１６１は、Ｓ２２１で生成した命令コード毎のグラフ情報を含んだ副制御パラメータグラフ１９４のデータを生成する。  Ｓ２３０の後、副制御パラメータグラフ生成処理は終了する。
【００９２】  実施の形態２により、副制御プログラム２１２を視覚的に表示することができる。また、ユーザはフィールド機器間の入出力および演算処理の関係を視覚的に把握することができる。
【００９３】  実施の形態１、２または以後の実施の形態は、以下のような構成であっても構わない。  （１）抽出対象コードリスト１９１および抽出コードリスト１９２は、Ｃ言語などの構造体の形式で命令コードを示してもよい。命令コードを示す構造体は、演算の種類（例えば、論理積、論理和）、入力（例えば、機器識別子、端子名）、出力（例えば、機器識別子、端子名）などを含むデータである。  （２）プログラム編集装置１００は、副制御プログラム２１２（または副制御プログラム２１２に含まれる少なくとも一部の命令コード）をフィールド機器（入出力ユニット２０２、周辺機器２０９など）に送信することによって、フィールド機器のメモリに副制御プログラム２１２を書き込むプログラム書き込み部を備えてもよい。例えば、プログラム書き込み部は、副制御プログラム２１２のデータ形式をフィールド機器に書き込み可能なデータ形式に変換し、変換後の副制御プログラム２１２をフィールド機器に書き込む。
【００９４】  実施の形態３．  グラフ化して表示した副制御プログラム２１２を編集する形態について説明する。  以下、実施の形態２と異なる事項について主に説明する。説明を省略する事項については実施の形態２と同様である。
【００９５】  プログラム編集装置１００の機能構成は、実施の形態２（図１３参照）と同様である。  但し、副制御パラメータグラフ表示部１６１は、図１７に示すような副制御パラメータ編集画面４３０を表示する。
【００９６】  図１７は、実施の形態３における副制御パラメータ編集画面４３０の一例を示す図である。  副制御パラメータ編集画面４３０は、副制御パラメータグラフ１９４と、表形式表示ボタン４３１と、編集終了ボタン４３２と、部品一覧４３９とを備える。  部品一覧４３９は、入力端子、出力端子、論理積、論理和、大小比較など、副制御パラメータグラフ１９４に用いるアイコンを示す。  編集終了ボタン４３２は、副制御パラメータグラフ１９４の編集の終了を指定するためのボタンである。
【００９７】  ユーザは、入力機器を操作することによって副制御パラメータグラフ１９４または部品一覧４３９のアイコンを選択し、副制御パラメータグラフ１９４に対してアイコンの追加、移動または削除を指示する。例えば、ユーザは、マウスを用いてアイコンをドラッグアンドドロップする  また、ユーザは、入力機器を操作することによって、アイコン同士を結ぶ接続線を引く、入出力端子に対して端子名を指定する、などの編集を行う。  副制御パラメータグラフ１９４の編集が終了した場合、ユーザは編集終了ボタン４３２を押下する。
【００９８】  編集指示入力部１１５はユーザの編集指示を入力機器から入力し、副制御プログラム編集部１１６はユーザの編集指示に従って副制御パラメータグラフ１９４のアイコンを追加、変更または削除する。  編集終了ボタン４３２が押下された場合、副制御プログラム編集部１１６（第二のプログラム編集部の一例）は、編集後の副制御パラメータグラフ１９４のデータを装置記憶部１９０に上書きし、編集後の副制御パラメータグラフ１９４のデータに合わせて副制御プログラム２１２を更新する。
【００９９】  実施の形態３により、ユーザは副制御プログラム２１２を視覚的に編集することができる。つまり、副制御プログラム２１２の編集が容易になる。
【０１００】  実施の形態４．  フィールド機器およびネットワークの制約を満たさない命令コードを変換規則に従って変換する形態について説明する。  以下、実施の形態３と異なる事項について主に説明する。説明を省略する事項については実施の形態３と同様である。
【０１０１】  図１８は、実施の形態４におけるプログラム編集装置１００の機能構成図である。  実施の形態４におけるプログラム編集装置１００の機能構成について、図１８に基づいて説明する。
【０１０２】  プログラム編集装置１００の装置記憶部１９０は、フィールド機器の種類毎に、また、ネットワークの種類毎に、コード制約データ１９５（制約データの一例）と変換規則データ１９６（代替コードデータの一例）とを記憶する。  また、副制御プログラム編集部１１６（第二のプログラム編集部の一例）は、ユーザの編集指示に従って副制御プログラム２１２、副制御パラメータリスト１９３または副制御パラメータグラフ１９４を編集する際に、コード制約データ１９５に設定されている制約を満たさない命令コードを、変換規則データ１９６に設定された変換規則に従って変換する。
【０１０３】  図１９は、実施の形態４におけるコード制約データ１９５の一例を示す図である。  実施の形態４におけるコード制約データ１９５の一例について、図１９に基づいて説明する。
【０１０４】  コード制約データ１９５は、フィールド機器毎に演算の種類または入出力などの制約を示すデータである。
【０１０５】  コード制約データ１９５は、「機器」「演算種類」「使用可否」「入力数」「出力数」「段数」を対応付けている。  「機器」は、フィールド機器の識別子（名称、番号など）を示す。  「演算種類」は、演算の種類（論理積、論理和など）を示す。  「使用可否」は、「演算種類」に示される演算（演算素子または演算回路）が使用可能な演算であるか否かを示す。  「入力数」は、「演算種類」に示される演算に対する入力数の条件を示す。  「出力数」は、「演算種類」に示される演算に対する出力数の条件を示す。  「段数」は、「演算種類」に示される演算を使用可能な段数の条件を示す。段数とは、複数の演算が階層関係を持って接続する場合（例えば、１段目の演算の出力が２段目の演算に入力されるなど）の階層の階数に相当する。
【０１０６】  例えば、機器Ｆ１は、論理和（ＯＲ）および論理積（ＡＮＤ）を使用できるが、排他的論理和（ＸＯＲ）を使用できない（使用可否の欄を参照）。  また、論理和および論理積は２入力１出力でなければならない（入力数および出力数の欄を参照）。  さらに、論理和は１段目または２段目の演算でなければならず、論理積は１段目の演算でなければならない（段数の欄を参照）。
【０１０７】  図２０は、実施の形態４における変換規則データ１９６の一例を示す図である。  実施の形態４における変換規則データ１９６の一例について、図２０に基づいて説明する。
【０１０８】  変換規則データ１９６は、演算の種類毎に変換前の命令コードの内容と変換後の命令コードの内容とを示すデータである。
【０１０９】  変換規則データ１９６は、「演算種類」「変換前」「変換後」を対応付けている。  「変換前」は、変換前の命令コードの内容を示す。  「変換後」は、変換後の命令コード（代替コード群の一例）の内容を示す。
【０１１０】  例えば、項番１が示す変換規則によって、３入力１出力の論理和（ＯＲ）は２入力１出力の論理和と２入力１出力の論理和との２段の論理和に変換される。  なお、入力または出力の括弧内に記す「Ｘｎ」（ｎは０以上の整数）はフィールド機器の入力端子を識別し、「Ｙｎ」はフィールド機器の出力端子を識別し、「Ｚｎ」は演算（回路または素子）の入出力端子を識別し、「Ｍ０」はフィールド機器の内部メモリを識別する。また、「！」は否定を意味する。
【０１１１】  図２１は、実施の形態４における副制御プログラム編集部１１６のコード制約確認処理を示すフローチャートである。  副制御パラメータ編集画面４３０（図１７参照）で副制御パラメータグラフ１９４が編集された場合、副制御プログラム編集部１１６は以下のようなコード制約確認処理を実行する。
【０１１２】  Ｓ３１０において、副制御プログラム編集部１１６は、複数のコード制約データ１９５および変換規則データ１９６のうち、対象ネットワーク用のコード制約データ１９５および変換規則データ１９６を選択する。  Ｓ３１０の後、処理はＳ３２０に進む。
【０１１３】  Ｓ３２０において、副制御プログラム編集部１１６は、副制御パラメータグラフ１９４から未選択の命令コードを１つ選択する。以下、Ｓ３２０で選択した命令コードを「選択コード」という。  Ｓ３２０の後、処理はＳ３３０に進む。
【０１１４】  Ｓ３３０において、副制御プログラム編集部１１６は、コード制約データ１９５から選択コードに対応する制約情報を選択する。以下、Ｓ３３０で選択した制約情報を「選択制約」という。  Ｓ３３０の後、処理はＳ３３１に進む。
【０１１５】  Ｓ３３１において、副制御プログラム編集部１１６は、選択コードと選択制約とを比較し、選択コードが選択制約を満たすか否かを判定する。  選択コードが選択制約を満たす場合（ＹＥＳ）、処理はＳ３２１に進む。  選択コードが選択制約を満たさない場合（ＮＯ）、処理はＳ３３２に進む。
【０１１６】  Ｓ３３２において、副制御プログラム編集部１１６は、変換規則データ１９６から選択コードに対応する変換規則を選択する。以下、Ｓ３３２で選択した変換規則を「選択規則」という。  Ｓ３３２の後、処理はＳ３３３に進む。
【０１１７】  Ｓ３３３において、副制御プログラム編集部１１６は、選択規則に従って選択コードを変換する。  Ｓ３３３の後、処理はＳ３２１に進む。
【０１１８】  図２２は、実施の形態４における命令コードの変換例を示す図である。  例えば、副制御プログラム編集部１１６は、図１９のコード制約データ１９５および図２０の変換規則データ１９６に基づいて、図２２に示すように命令コードを変換する。  （１）副制御プログラム編集部１１６は、３入力１出力の論理和を２入力１出力の論理和と２入力１出力の論理和との２段の論理和に変換する。  （２）副制御プログラム編集部１１６は、３入力１出力の論理積を２入力１出力の論理積と２入力１出力の論理積との２段の論理積に変換する。  （３）副制御プログラム編集部１１６は、２入力１出力の排他的論理和を２入力１出力の２つの論理積と２入力１出力の論理和との２段の演算に変換する。
【０１１９】  図２１に戻り、Ｓ３２１から説明を続ける。
【０１２０】  Ｓ３２１において、副制御プログラム編集部１１６は、副制御パラメータグラフ１９４に未選択の命令コードが残っているか否かを判定する。  未選択の命令コードが残っている場合（ＹＥＳ）、処理はＳ３２０に戻る。  未選択の命令コードが残っていない場合（ＮＯ）、処理はＳ３４０に進む。
【０１２１】  Ｓ３４０において、副制御プログラム編集部１１６は、制約を満たさない命令コードを変換した旨のメッセージと共に、変換後の副制御パラメータグラフ１９４を副制御パラメータ編集画面４３０に表示する。  また、副制御プログラム編集部１１６は、変換後の副制御パラメータグラフ１９４を装置記憶部１９０に上書きする。  さらに、副制御プログラム編集部１１６は、変換後の副制御パラメータグラフ１９４に合わせて、副制御プログラム２１２および副制御パラメータリスト１９３を更新する。  Ｓ３４０の後、コード制約確認処理は終了する。
【０１２２】  図２３は、実施の形態４における副制御パラメータ編集画面４３０の一例を示す図である。  図２３に示すように、副制御プログラム編集部１１６は、（１）副制御パラメータグラフ１９４の命令コードを変換し、（２）命令コードを変換後の副制御パラメータグラフ１９４を副制御パラメータ編集画面４３０に表示する。なお、（２）において、Ｘ１、Ｘ３またはＸ４から論理積への入力線のうち、論理積側に丸印が付いている入力線は、否定の入力（入力値の反転）を意味する。
【０１２３】  実施の形態４により、フィールド機器およびネットワークの制約を満たさない命令コードを変換規則に従って変換することができる。  つまり、ユーザは、フィールド機器およびネットワークの制約を意識せずに副制御プログラム２１２を編集することができる。
【０１２４】  実施の形態５．  ネットワークまたはフィールド機器が追加された際に制約情報および変換規則を追加する形態について説明する。  以下、実施の形態４と異なる事項について主に説明する。説明を省略する事項については実施の形態４と同様である。
【０１２５】  図２４は、実施の形態５におけるプログラム編集装置１００の機能構成図である。  実施の形態５におけるプログラム編集装置１００の機能構成について、図２４に基づいて説明する。
【０１２６】  プログラム編集装置１００は、実施の形態４（図１８参照）で説明した機能構成に加えて、プロファイル解析部１６２とプロファイルデータ１９７とを備える。
【０１２７】  ユーザは、新たなネットワークまたは新たなフィールド機器のプロファイルデータ１９７をプログラム編集装置１００に入力する。プロファイルデータ１９７は、制約情報および変換規則に関する情報を含んだデータである。  プロファイル解析部１６２は、入力されたプロファイルデータ１９７から制約情報および変換規則を抽出し、抽出した制約情報を含んだコード制約データ１９５を生成し、抽出した変換規則を含んだ変換規則データ１９６を生成する。
【０１２８】  実施の形態５により、ネットワークまたはフィールド機器が追加された際に制約情報および変換規則を追加することができる。つまり、ユーザは、ネットワークまたはフィールド機器が追加された場合であっても、制約を意識せずに副制御プログラム２１２を生成することができる。
【０１２９】  各実施の形態は、矛盾が生じない範囲で、全部または一部を組み合わせても構わない。
【符号の説明】
【０１３０】  １００  プログラム編集装置、１１１  命令コード抽出部、１１２  副制御プログラム生成部、１１３  副制御パラメータリスト生成部、１１４  副制御パラメータリスト表示部、１１５  編集指示入力部、１１６  副制御プログラム編集部、１２１  主制御プログラム生成部、１２２  主制御プログラム編集部、１６１  副制御パラメータグラフ表示部、１６２  プロファイル解析部、１９０  装置記憶部、１９１  抽出対象コードリスト、１９２  抽出コードリスト、１９３  副制御パラメータリスト、１９４  副制御パラメータグラフ、１９５  コード制約データ、１９６  変換規則データ、２００  機器制御装置、２０１  ＣＰＵユニット、２０２  入出力ユニット、２０４  ネットワーク、２０９  周辺機器、２１０  機器制御プログラム、２１１  主制御プログラム、２１２  副制御プログラム、３１０  副制御パラメータ編集画面、３１１  編集終了ボタン、４１０  グラフ形式表示画面、４１１  表形式表示ボタン、４２０  表形式表示画面、４２１  グラフ形式表示ボタン、４３０  副制御パラメータ編集画面、４３１  表形式表示ボタン、４３２  編集終了ボタン、４３９  部品一覧、９０１  ＣＰＵ、９０２  バス、９０３  ＲＯＭ、９０４  ＲＡＭ、９０５  通信ボード、９１１  ディスプレイ、９１２  キーボード、９１３  マウス、９１４  ドライブ、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  プログラム群、９２３  ファイル群。
【図１】
0005921765.tif 000002
【図２】
0005921765.tif 000003
【図３】
0005921765.tif 000004
【図４】
0005921765.tif 000005
【図５】
0005921765.tif 000006
【図６】
0005921765.tif 000007
【図７】
0005921765.tif 000008
【図８】
0005921765.tif 000009
【図９】
0005921765.tif 000010
【図１０】
0005921765.tif 000011
【図１１】
0005921765.tif 000012
【図１２】
0005921765.tif 000013
【図１３】
0005921765.tif 000014
【図１４】
0005921765.tif 000015
【図１５】
0005921765.tif 000016
【図１６】
0005921765.tif 000017
【図１７】
0005921765.tif 000018
【図１８】
0005921765.tif 000019
【図１９】
0005921765.tif 000020
【図２０】
0005921765.tif 000021
【図２１】
0005921765.tif 000022
【図２２】
0005921765.tif 000023
【図２３】
0005921765.tif 000024
【図２４】
0005921765.tif 000025