(57)【要約】【課題】標準ライブラリが付属する制御プログラム作成装置において、付属する標準ライブラリに制御プログラムが作成された時のソースコードで使用される標準機能が存在しない場合でも、同じソースコードから制御プログラムを作成できるようにする。【解決手段】標準機能を包含する標準ライブラリが付属する制御プログラム作成装置に、ソースコードに使用された標準機能のみで構成する標準ライブラリサブセットを作成する手段と、標準ライブラリに存在しない標準機能を標準ライブラリサブセットで補完した標準ライブラリ(補完済み)を作成する手段とを持たせ、ソースコードと標準ライブラリ(補完済み)から制御プログラムを作成する装置とした。【選択図】  図１
2011170419.tif 000002
【特許請求の範囲】
【請求項１】
特定の制御処理がモジュール化された標準機能を複数含む第１のライブラリを記憶する記憶手段と、
前記標準機能を命令として呼び出すソースコードを編集可能な編集手段と、
前記編集手段により編集されたソースコードに使用されている標準機能のみで構成された第２のライブラリを作成する標準ライブラリサブセット作成手段と、
前記第１のライブラリに存在しない標準機能を前記第２のライブラリに含まれる標準機能で補完した第３のライブラリを作成する標準ライブラリ補完手段と、
前記ソースコードと前記第３のライブラリから機械語である制御プログラムを作成する制御プログラム作成手段と、
を備えた制御プログラム作成装置。
【請求項２】
各標準機能は、処理内容を示す機能コードと、機能名称と、同一機能名称を持つ改訂された他の標準機能との区別に使用される機能バージョンとを含む属性情報を有し、
各ライブラリは、包含される標準機能の変更の新旧の区別に使用されるライブラリバージョン情報を有し、
標準ライブラリサブセット作成手段及び標準ライブラリ補完手段はそれぞれ、指定したライブラリのライブラリバージョン情報よりも指定した標準機能の機能バージョンが新しい場合において、指定したライブラリ内に指定した標準機能の機能名称と同一の機能名称を持つ標準機能が存在しない場合、または同一機能名称の標準機能は存在するが機能バージョンについて指定した標準機能のほうがより新しい場合に、指定した標準機能を指定したライブラリへ上書き登録を要するとして選定する標準機能選定手段を有する
ことを特徴とする請求項１に記載の制御プログラム作成装置。
【請求項３】
標準ライブラリサブセット作成手段が有する標準機能選定手段は、
指定したライブラリとして、第１のライブラリのライブラリバージョン情報を有し標準機能を含まない第２のライブラリを用いるとともに、
指定した標準機能として、ソースコードに使用されている標準機能を用いて、
当該ソースコードに使用されている標準機能から前記第２のライブラリへ上書き登録を要する標準機能を選定する
ことを特徴とする請求項２に記載の制御プログラム作成装置。
【請求項４】
標準ライブラリ補完手段が有する標準機能選定手段は、
指定したライブラリとして、第１のライブラリをコピーして作成された第３のライブラリを用いるとともに、
指定した標準機能として、第２のライブラリに含まれる標準機能を用いて、
当該第２のライブラリに含まれる標準機能から前記第３のライブラリへ上書き登録を要する標準機能を選定する
ことを特徴とする請求項２に記載の制御プログラム作成装置。
【請求項５】
前記標準機能の属性情報である機能バージョンは、当該標準機能をライブラリへ新規登録する場合における当該ライブラリのライブラリバージョン情報、または、当該標準機能が既にライブラリに含まれる場合における当該標準機能の機能コードを変更した時のライブラリバージョン情報とすることを特徴とする、請求項２乃至４のいずれか１項に記載の制御プログラム作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、特定の制御処理が再利用しやすいようモジュール化された標準機能を包含する標準ライブラリを持ち、標準ライブラリにある標準機能を命令として呼び出すソースコードと、呼び出される標準機能でもって、機械語である制御プログラムを作成する制御プログラム作成装置に関するものである。
【背景技術】
【０００２】
工場の製造ラインを制御する機器では、国際電気標準会議（ＩＥＣ）により標準規格  ＩＥＣ６１１３１−３として定義されたプログラマブルロジックコントローラ（ＰＬＣ）用のプログラム言語であるファンクションブロック図（ＦＢＤ言語：Ｆｕｎｃｔｉｏｎ  Ｂｌｏｃｋ  Ｄｉａｇｒａｍ）やラダー図（ＬＤ言語：Ｌａｄｄｅｒ  Ｄｉａｇｒａｍ）、構造化テキスト（ＳＴ言語：Ｓｔｒｕｃｔｕｒｅｄ  Ｔｅｘｔ）などで記述されたソースコードを、コンパイラにより機械語へ変換した制御プログラムが実行している、または機器内のインタプリタがソースコードを逐次解釈して実行している。
【０００３】
この制御プログラムを作成する装置には、ユーザが容易に制御プログラムを開発できるように、制御プログラム作成装置の開発メーカにより汎用性のある標準的な機能がライブラリとして用意されていて、ユーザは必要とする機能を標準ライブラリに探し、要件に合致する機能を命令として呼び出す処理をソースコードに記述するプログラミング作業を行う。
【０００４】
ここでユーザが必要とする機能が標準ライブラリに含まれない場合への対処について、例えば特許文献１で提案されるユーザが記述したソースコードから標準機能を自動生成する方法や、制御プログラム作成装置の開発メーカによる標準機能の追加といった、標準ライブラリの拡充がある。
【０００５】
つまり、ユーザが作成した標準機能を呼び出すソースコードはその作成時に使用された標準機能を包含する標準ライブラリに依存し、ユーザが既存のソースコードを修正する際には、作成時に用いた標準ライブラリが付属する制御プログラム作成装置を用意する必要があり、ユーザが同一の制御プログラム作成装置を用意できない場合には、必要とする標準機能が標準ライブラリに不足し、ソースコードからの制御プログラムの作成が失敗する。
【０００６】
そのため、工場へ設備が納入される際には、制御機器へ制御プログラムとソースコードが保存されると共に、開発に使用された標準ライブラリが付属する制御プログラム作成装置も納入される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−２６８８９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
納入後、制御プログラムの変更作業が工場外部の制御プログラム開発の専業メーカに発注される場合がある。ここで制御プログラム開発メーカが、制御機器などに保存されたソースコードを自前の制御プログラム作成装置で開いて、新しい標準機能を呼び出す処理をプログラミングし、制御プログラムを変更することがあった。
【０００９】
このように新しい標準ライブラリに依存する変更がソースコードに施されると、従来技術では、ソースコードで使用されている新機能が存在しない古い標準ライブラリが付属する制御プログラム作成装置では保守できない欠点があり、制御プログラムを作成した際に使用した制御プログラム作成装置のバージョンに依存しない制御プログラム作成装置が要望されている。
【００１０】
そこで、この発明は係る問題を解決するためになされたもので、標準ライブラリに制御プログラムで使用される標準機能が補完され、異なるバージョンの制御プログラム作成装置でも制御プログラムを保守し作成することができる制御プログラム作成装置を得ることを目的としている。
【課題を解決するための手段】
【００１１】
この発明に係る制御プログラム作成装置は、特定の制御処理がモジュール化された標準機能を複数含む第１のライブラリを記憶する記憶手段と、前記標準機能を命令として呼び出すソースコードを編集可能な編集手段と、前記編集手段により編集されたソースコードに使用されている標準機能のみで構成された第２のライブラリを作成する標準ライブラリサブセット作成手段と、前記第１のライブラリに存在しない標準機能を前記第２のライブラリに含まれる標準機能で補完した第３のライブラリを作成する標準ライブラリ補完手段と、前記ソースコードと前記第３のライブラリから機械語である制御プログラムを作成する制御プログラム作成手段と、を備えたものである。
【発明の効果】
【００１２】
この発明によれば、標準ライブラリに制御プログラムで使用される標準機能が補完され、異なるバージョンの制御プログラム作成装置でも制御プログラムを保守し作成することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】この発明に係る制御プログラム作成装置の実施の形態及びそれにより作成されるユーザファイルと制御プログラムを示すブロック構成図である。
【図２】ライブラリのファイル構成を示す図である。
【図３】ソースコード編集手段によるソースコードの編集画面の一例を示す図である。
【図４−１】制御プログラムの作成時におけるフローを示す図である。
【図４−２】標準ライブラリサブセット作成手段の処理を示すフローチャートである。
【図５−１】制御プログラムの再編集時におけるフローを示す図である。
【図５−２】制御プログラム作成手段の処理を示すフローチャートである。
【図５−３】標準ライブラリ補完手段の処理を示すフローチャートである。
【図６】中継ノードの概略構成を示したブロック図である。
【発明を実施するための形態】
【００１４】
以下に本発明の実施の形態について、図面を参照して説明する。
図１は、この発明の実施の形態に係る制御プログラム作成装置１００を示すものである。制御プログラム作成装置１００は、付属する標準ライブラリ１０１と、ユーザが保存管理するユーザファイル１１０の一つであるソースコード１１１から、制御プログラム作成手段１０２によって制御プログラム１２０を作成する。尚、ソースコード１１１は図３にて後述する編集画面を提供するソースコード編集手段１０８により、編集及び作成される。
【００１５】
又、制御プログラム作成装置１００は、ソースコード１１１と標準ライブラリ１０１から、ユーザファイル１１０として標準ライブラリサブセット１１２を作成する標準ライブラリサブセット作成手段１０３と、標準ライブラリサブセット１１２と標準ライブラリ１０１から標準ライブラリ（補完済み）１０５を作成する標準ライブラリ補完手段１０４と、標準ライブラリサブセット作成手段１０３と標準ライブラリ補完手段１０４からライブラリ２００へ登録する標準機能２３０を選択する際に呼び出される標準機能選定手段１０６と、を備える。
【００１６】
又、制御プログラム作成装置１００は、制御プログラム作成手段１０２において標準ライブラリ補完手段１０４を呼び出し、標準ライブラリ１０１を標準ライブラリサブセット１１２にある標準機能２３０で補完した標準ライブラリ（補完済み）１０５を作成し、作成した標準ライブラリ（補完済み）１０５とソースコード１１１を使ったコンパイルにより制御プログラム１２０を作成するよう構成されている。
【００１７】
また、制御プログラム１２０を作成した後に標準ライブラリサブセット作成手段１０３を呼び出し、ソースコード１１１で呼び出す標準ライブラリ１０１にある標準機能２３０を格納した標準ライブラリサブセット１１２を作成するよう構成されている。
又、標準ライブラリ１０１及び標準ライブラリ（補完済み）１０５は、制御プログラム作成装置１００の記憶手段１０７に保存される。
【００１８】
また、図２は、標準ライブラリ１０１、標準ライブラリサブセット１１２、及び標準ライブラリ（補完済み）１０５といった、各ライブラリのファイル構成を示す図である。ライブラリを構成する標準機能２３０はそのモジュールをファイルとして外部記憶装置に保存され、それら標準機能２３０の全ファイルをフォルダ２００が包含し、このライブラリフォルダ２００の名称で標準ライブラリ１０１、標準ライブラリサブセット１１２、標準ライブラリ（補完済み）１０５を識別するように構成されている。
さらに、ライブラリのバージョンは、ライブラリバージョン２１１を記録したライブラリバージョンファイル２１０を同一のフォルダ２００に格納するよう構成されていて、その内容には、新旧の比較ができるように日時が記録されている。
【００１９】
また、標準機能である各ファイル２３０は、機能名称２４１と機能バージョン２４２を記録した属性情報２４０と、処理内容である機能コード２５０のデータを格納するよう構成されており、本実施の形態では、標準機能ファイル２３０のファイル名称に標準機能を識別する機能名称２４１を付け、機能コード２５０にＳＴ言語で記述されたテキストデータを格納した例を示している。
【００２０】
また、図３は、ソースコード編集手段１０８による、ＦＢＤ言語で制御プログラムを記述したソースコード１１１の編集画面３００を示している。
ＦＢＤ言語ではファンクションブロック（ＦＢ：Ｆｕｎｃｔｉｏｎ  Ｂｌｏｃｋ）が機能に該当し、本実施の形態においては、図２示される標準ライブラリ２００に包含される標準機能２３０である「ＣｏｎｖｅｒｔＣｏｕｎｔＴｏＡｎａｌｏｇ」をＦＢ３０１として呼び出している例を示している。
【００２１】
次に、ユーザが制御プログラムを作成する時におけるフローを図４−１に示す。
先ず、開始ステップからステップ４０１へ進み、ユーザは当該制御プログラム作成装置１００で新規作成または既存のソースコード１１１を開く。
次に、ステップ４０２で、ユーザはソースコード１１１を、編集画面３００を用いて編集し、標準ライブラリ２００にある標準機能２３０を呼び出す。
【００２２】
次に、図５−２にて詳細を後述するように、ステップ５１０でユーザの指示により制御プログラム作成手段１０２を実行する。
制御プログラム１２０を作成した後に、詳細を図４−２に示すステップ４１０で標準ライブラリサブセット作成手段１０３を実行し、終了ステップに至る。
【００２３】
ここで、標準ライブラリサブセット作成手段１０３は、図４−２に示すフローチャートのように動作する。
標準ライブラリサブセット作成手段１０３は、その開始ステップからステップ４１１へ進み、標準ライブラリサブセットフォルダ１１２がユーザファイル１１０に存在しないか否かの判定を実行する。
【００２４】
判定ステップ４１１が存在することを示すＮＯの場合には、複製ループ４２０へ進む。
一方、判定ステップ４１１が存在しないことを示すＹＥＳの場合には、ステップ４１２へ進み、ファイルを持たない標準ライブラリサブセットフォルダ１１２を新規に作成して、ステップ４１３で、標準ライブラリサブセット１１２が補完する標準ライブラリ１０１のライブラリバージョンを記したライブラリバージョンファイル２１０を標準ライブラリサブセットフォルダ１１２に作成する。
【００２５】
次に、複製ループ４２０で、ソースコード１１１に記述される全ての標準機能の機能名称について、ステップ４２１からステップ４２５までの処理を繰り返す。
【００２６】
まずステップ４２１で、機能名称をファイル名とする標準機能ファイル２３０を標準ライブラリ１０１のフォルダから検索し、検索結果の判定ステップ４２２へ進む。
判定ステップ４２２では標準機能ファイルが見つかったか否かを判定し、見つからなかったことを示すＮＯの場合には続く処理を中断して、次の機能名称についてステップ４２０を繰り返す。
判定ステップ４２２が見つかったことを示すＹＥＳの場合にはステップ４２３へ進み、後述の図６に示すステップ６００にて、標準機能選定手段１０６の処理を開始させ、見つかった標準機能ファイル２３０と標準ライブラリサブセット１１２のフォルダを引数として実施して、その結果を登録要否フラグに格納する。
【００２７】
次に判定ステップ４２４で、登録要否フラグが要であるか否かを判定して、登録不要を示すＮＯの場合には続く処理を中断して、次の機能名称についてステップ４２０へ進む。
判定ステップ４２４が登録要を示すＹＥＳの場合には、ステップ４２５で標準機能ファイル２３０の複製を標準ライブラリサブセットフォルダ１１２へ上書き登録して、次の機能名称についてステップ４２０へ進む。
以上の複製ループ４２０が終了した後、リターンステップへ進む。
【００２８】
次に、ユーザが制御プログラムを再編集する時におけるフローを図５−１に示す。
開始ステップからステップ５０１へ進み、ユーザは標準機能が不足する制御プログラム作成装置１００を起動して、ソースコード１１１を開く。
次に、ステップ５１０へ進み、ユーザの指示により制御プログラム作成手段１０２を実行して、終了ステップに至る。
【００２９】
ここで制御プログラム作成手段１０２は、図５−２に示したフローチャートのように動作し、その開始ステップからステップ５２０へ進み、標準ライブラリ補完手段１０４を実行する。尚、標準ライブラリ補完手段１０４は、後述する図５−３に示すフローチャートのように動作する。
ステップ５２０で標準ライブラリ補完手段１０４の処理がリターンした後、判定ステップ５１１へ進み、標準ライブラリ（補完済み）フォルダが存在するか否かを判定する。存在することを示すＹＥＳの場合にはステップ５１２へ進み、後続のステップで使用する標準ライブラリを標準ライブラリ（補完済み）１０５とする。存在しないことを示すＮＯの場合にはステップ５１３へ進み、後続のステップで使用する標準ライブラリを標準ライブラリ１０１とする。
次にステップ５１４で、使用する標準ライブラリ１０１とソースコード１１１からコンパイルにより制御プログラム１２０を作成して、リターンステップへ進む。
【００３０】
また、図５−３に示すように、標準ライブラリ補完手段１０４は、開始ステップ５２０から判定ステップ５２１へ進み、標準ライブラリ（補完済み）フォルダ１０５が存在するか否かを判定する。存在することを示すＹＥＳの場合にはステップ５２２へ進み、既存の標準ライブラリ（補完済み）フォルダ１０５を削除し、判定ステップ５２３へ進む。存在しないことを示すＮＯの場合には判定ステップ５２３へ進む。
【００３１】
判定ステップ５２３では、標準ライブラリサブセットフォルダ１１２が存在するか否かを判定する。存在しないことを示すＮＯの場合には処理を中止してステップ５２０を呼び出したステップへ戻る。存在することを示すＹＥＳの場合にはステップ５２４へ進む。
ステップ５２４では、標準ライブラリフォルダ１０１を複製した標準ライブラリ（補完済み）フォルダ１０５を作成する。
【００３２】
次に複製ループ５３０で、標準ライブラリサブセットフォルダに格納される全ての標準機能ファイル２３０について、ステップ５３１からステップ５３３までの処理を繰り返す。
まずステップ５３１へ進み、後述の図６に示すステップ６００にて、標準機能選定手段１０６の処理を開始させ、標準機能ファイル２３０と標準ライブラリ（補完済み）フォルダ１０５を引数として実施して、その結果を登録要否フラグに格納する。
【００３３】
次に、判定ステップ５３２で登録要否フラグが要であるか否かを判定して、登録不要を示すＮＯの場合には続く処理を中断して、次の機能名称についてステップ５３０を繰り返す。
判定ステップ５３２が登録要を示すＹＥＳの場合には、ステップ５３３で標準機能ファイル２３０の複製を標準ライブラリ（補完済み）フォルダ１０５へ上書き登録して、次の標準機能ファイル２３０についてステップ５３０へ進む。
以上の複製ループ５３０が終了した後、ステップ５２０の呼び出し元のステップへ戻る。
【００３４】
次に、標準機能選定手段１０６における処理を、図６に示すフローチャートを用いて詳細に説明する。
先ず、標準機能選定手段１０６の開始ステップ６００から判定ステップ６０１へ進み、引数で渡された標準機能ファイルである標準機能１の機能バージョンが、引数で渡されたライブラリフォルダであるライブラリのライブラリバージョンより新しいか否かを判定する。
【００３５】
新しくないことを示すＮＯの場合にはステップ６０２へ進み、標準機能選定手段１０６の戻り値である標準機能１の登録要否フラグに不要を設定し、リターンステップへ進む。
新しいことを示すＹＥＳの場合には検索ループ６１０へ進み、ライブラリに格納される全ての標準機能２について、判定ステップ６１１からステップ６１３までの処理を繰り返す。
【００３６】
次に、判定ステップ６１１で標準機能１と標準機能２の機能名称が異なるか否かを判定する。
異なることを示すＹＥＳの場合には、検索結果を同一機能なしとして、次の標準機能２についてステップ６１０を繰り返す。機能名称が同一であることを示すＮＯの場合には、検索結果を同一機能ありとして、検索ループ６１０を抜ける。
【００３７】
検索ループ６１０を終えた後に判定ステップ６０３へ進み、検索した結果、ライブラリに標準機能１と同一機能名称の標準機能２があるか否かを判定する。同一機能がないことを示すＮＯの場合には、ステップ６０５へ進む。
同一機能があることを示すＹＥＳの場合には、判定ステップ６０４へ進み、標準機能１の機能バージョンが標準機能２の機能バージョンより新しいか否かを判定し、新しいことを示すＹＥＳの場合にはステップ６０５へ、新しくないことを示すＮＯの場合にはステップ６０６へ進む。
【００３８】
ステップ６０５では標準機能１の登録要否フラグに要を設定し、ステップ６０６では標準機能１の登録要否フラグに不要を設定し、リターンステップへ進む。
【００３９】
このように構成された本実施の形態においては、標準ライブラリに標準機能が不足する古いバージョンの制御プログラム作成装置であっても、標準ライブラリに不足する標準機能を標準ライブラリサブセットから補完することにより、ユーザファイルから制御プログラムの再度の作成・編集ができ、最新の制御プログラム作成装置の入手が困難な状況での制御処理の保守が可能となる。
【００４０】
又、標準ライブラリの補完に必要な標準機能が標準ライブラリサブセットに抽出されるだけでなく、標準ライブラリサブセットは標準ライブラリの一部となることから、標準ライブラリの複製を保存するよりも標準ライブラリサブセットを保存したほうが保存に要する記憶容量が少なくて済み、制御機器のように記憶容量が少ない外部記憶装置への保存にも対応できる。
【００４１】
尚、本実施の形態における標準機能の機能バージョンを、当該標準機能を標準ライブラリへ新規登録した時のライブラリバージョンとする、または標準ライブラリにある既存の当該標準機能の仕様を下位互換性が無い内容に変更した時のライブラリバージョンとすることで、標準機能とライブラリの新旧の比較ができるだけでなく、標準ライブラリと標準ライブラリサブセットのそれぞれに包含される同一機能名称の標準機能について新旧を比較することができ、最新の標準機能を包含する標準ライブラリ(補完済み)を作成することが容易となる。
【００４２】
又、本実施の形態における標準ライブラリサブセットのライブラリバージョンの有効範囲として、下限を初版の標準ライブラリのライブラリバージョンと、上限を制御プログラム作成装置に付属の標準ライブラリのライブラリバージョンとすることで、標準ライブラリの補完に必要な標準機能が標準ライブラリサブセットに抽出されるだけでなく、標準ライブラリサブセットに設定するライブラリバージョンを上限へ近づけるほど、標準機能選定手段による標準ライブラリサブセットへ登録する標準機能を少なくすることができ、ユーザによる標準ライブラリサブセットの保存に要する記憶容量の制御が容易となる。
【００４３】
尚、本実施の形態では、標準機能のモジュールとライブラリの包含関係をファイルシステムにあるファイルとフォルダを使った例を示したが、データベースやアーカイブファイルのように、データを構造化して記憶することができる他の手段でも実現することが可能である。
【００４４】
又、ソースコードや標準機能の機能コードのプログラミング言語としてＩＥＣ６１１３１−３を使った例を示したが、Ｃ言語といった関数呼び出しに対応した手続き言語であり、コンパイル言語として設計されるプログラミング言語でも実現することが可能である。
【産業上の利用可能性】
【００４５】
この発明に係る制御プログラム作成装置は、制御プログラムが依存する標準ライブラリのサブセットを自動的に作成でき、かつ制御プログラム作成時の標準ライブラリを持たない古いバージョンの制御プログラム作成装置で制御プログラムを保守することができるので、長期間稼働し、制御内容が時々変更される機器組込みプログラムの開発分野に適している。
【符号の説明】
【００４６】
１００  制御プログラム作成装置
１０１  制御プログラム作成装置に付属する標準ライブラリ
１０２  制御プログラム作成手段
１０３  標準ライブラリサブセット作成手段
１０４  標準ライブラリ補完手段
１０５  標準ライブラリ（補完済み）
１０６  標準機能選定手段
１０７  ライブラリ記憶手段
１０８  ソースコード編集手段
１１０  ユーザファイル
１１１  ソースコード
１１２  標準ライブラリサブセット
１２０  制御プログラム
２００  ライブラリ  フォルダ
２１０  ライブラリバージョン  ファイル
２１１  ライブラリバージョン
２２０  ライブラリフォルダに包含される標準機能ファイル群
２３０  機能名称をファイル名とする標準機能ファイル
２４０  属性情報
２４１  機能名称
２４２  機能バージョン
２５０  機能コード
３００  ＦＢＤ言語で記述したソースコードの編集画面
３０１  標準機能を呼び出すファンクションブロック
【図１】
2011170419.tif 000003
【図２】
2011170419.tif 000004
【図３】
2011170419.tif 000005
【図４−１】
2011170419.tif 000006
【図４−２】
2011170419.tif 000007
【図５−１】
2011170419.tif 000008
【図５−２】
2011170419.tif 000009
【図５−３】
2011170419.tif 000010
【図６】
2011170419.tif 000011