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