(57)【特許請求の範囲】
【請求項１】
プログラマブル・コントローラのユーザプログラムであるソースプログラムをコンパイラにかけてプログラマブル・コントローラが実行可能なオブジェクトコードに変換すると共に、こうして得られたオブジェクトコードをプログラマブル・コントローラに転送記憶させるようにしたプログラム開発支援装置において、
前記転送記憶の際に、当該コンパイラのオブジェクト生成方式を示す識別情報についても当該プログラマブル・コントローラに転送記憶させておき、前記プログラマブル・コントローラに記憶されたオブジェクトコードに関連して、コンパイラの作動する所定の動作を実行する場合には、プログラマブル・コントローラから読み出された前記識別情報とプログラム開発支援装置に設定されたオブジェクト生成方式に対応する識別情報との照合を行い、
両者が一致すると判定された場合には、プログラム開発支援装置のオブジェクト生成方式を更新せずに前記コンパイラの作動する所定の動作を実行し、
両者が一致しないと判定された場合には、プログラム開発支援装置のオブジェクト生成方式を前記プログラマブル・コントローラから読み出された前記識別情報に基づいて更新した後に前記コンパイラの作動する所定の動作を実行する、ことを特徴とするプログラム開発支援装置の動作仕様管理方法。
【請求項２】
前記識別情報は、コンパイラのバージョン情報、及び／又は、オブジェクトを速度最適で生成するか若しくは容量最適で生成するかの情報である、ことを特徴とする請求項１に記載のプログラム開発支援装置の動作仕様管理方法。
【請求項３】
前記所定の動作が、前記プログラマブル・コントローラから読み出されたオブジェクトコードと、任意のソースプログラムをコンパイラにかけて変換することにより得られたオブジェクトコードとを照合する動作であり、かつ当該変換用のコンパイラのオブジェクト生成方式が、前記プログラマブル・コントローラから読み出された前記識別情報に基づいて設定される、ことを特徴とする請求項１又は２に記載のプログラム開発支援装置の動作仕様管理方法。
【請求項４】
前記所定の動作が、ソースプログラムの一部分をコンパイラにかけて変換することにより得られたオブジェクトコード部分により、プログラマブル・コントローラに記憶されているオブジェクトコードを書き換えるオンラインエディット動作であり、かつ前記プログラマブル・コントローラから読み出された前記識別情報と、開発支援装置に設定されたオブジェクト生成方式に対応する識別情報とが一致しないと判定された場合には、当該部分変換用コンパイラのオブジェクト生成方式が、前記プログラマブル・コントローラから読み出された前記識別情報に基づいて設定される、ことを特徴とする請求項１又は２に記載のプログラム開発支援装置の動作仕様管理方法。
【請求項５】
プログラム開発支援装置と、プログラマブル・コントローラと、それらの間でデータの転送を可能とするデータ転送手段とを具備し、
前記プログラム開発支援装置は、所定のプログラム書き込み動作指令が与えられるのに応答して、書き込み対象となるソースプログラムをコンパイラを介してプログラマブル・コントローラが実行可能なオブジェクトコードに変換したのち、こうして得られたオブジェクトコード及び当該コンパイラのオブジェクト生成方式を示す識別情報を前記データ転送手段へと送り出すように仕組まれており、かつ
前記プログラマブル・コントローラは、前記データ転送手段を介して受け取った前記オブジェクトコード及び前記識別情報をそれぞれ所定のメモリに記憶させると共に、前記プログラム開発支援装置から所定の読み出し指令が到来するのを待って、当該識別情報を前記メモリから読み出してデータ転送手段へと送出するように仕組まれており、さらに
前記プログラム開発支援装置には、前記プログラマブル・コントローラに記憶されたオブジェクトコードに関連して、コンパイラの作動する所定の動作を実行する場合には、前記転送手段に対して所定の読み出し指令を送出すると共に、そのレスポンスとして前記転送手段を介して受け取った前記識別情報とプログラム開発支援装置に設定されたオブジェクト生成方式に対応する識別情報との照合を行い、
両者が一致すると判定された場合には、プログラム開発支援装置のオブジェクト生成方式を更新せずに前記コンパイラの作動する所定の動作を実行し、
両者が一致しないと判定された場合には、プログラム開発支援装置のオブジェクト生成方式を前記プログラマブル・コントローラから読み出された前記識別情報に基づいて更新した後に前記コンパイラの作動する所定の動作を実行するように仕組まれている、ことを特徴とするプログラマブル・コントローラ・システム。
【請求項６】
前記識別情報は、コンパイラのバージョン情報、及び／又は、オブジェクトを速度最適で生成するか若しくは容量最適で生成するかの情報である、ことを特徴とする請求項５に記載のプログラマブル・コントローラ・システム。
【請求項７】
前記所定の動作が、前記プログラマブル・コントローラから読み出されたオブジェクトコードと、任意のソースプログラムをコンパイラにかけて変換することにより得られたオブジェクトコードとを照合する動作であり、かつ当該変換用のコンパイラのオブジェクト生成方式が、前記プログラマブル・コントローラから読み出された前記識別情報に基づいて設定される、ことを特徴とする請求項５又は６に記載のプログラマブル・コントローラ・システム。
【請求項８】
前記所定の動作が、ソースプログラムの一部分をコンパイラにかけて変換することにより得られたオブジェクトコード部分により、プログラマブル・コントローラに記憶されているオブジェクトコードを書き換えるオンラインエディット動作であり、かつ前記プログラマブル・コントローラから読み出された前記識別情報と、開発支援装置に設定されたオブジェクト生成方式に対応する識別情報とが一致しないと判定された場合には、当該部分変換用コンパイラのオブジェクト生成方式が、前記プログラマブル・コントローラから読み出された前記識別情報に基づいて設定される、ことを特徴とする請求項５又は６に記載のプログラマブル・コントローラ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラム開発支援装置の動作仕様管理方法に係り、特に、プログラマブル・コントローラ（以下、ＰＬＣと言う）のプログラム開発支援装置における動作仕様（例えば、コンパイラ又は逆コンパイラのオブジェクト生成方式）を処理対象となるソースプログラム又はオブジェクトコードに合わせて常に最適化できるようにしたプログラム開発支援装置の動作仕様管理方法に関する。
【背景技術】
【０００２】
当業者にはよく知られているように、ＰＬＣのプログラム開発支援装置（以下、単に「開発支援装置」と称する）においては、所定の動作指令を与えることにより、幾つかの基本的な動作を実行するように仕組まれている。
【０００３】
それらの基本的な動作としては、
（１）任意のソースプログラム（ユーザプログラムに相当）をコンパイラにかけてオブジェクトコードに変換したのち、これをＰＬＣへと転送して、ＰＬＣ内の所定メモリ（一般に、不揮発性メモリで構成され、「ユーザメモリ」等と称される）に記憶させるプログラム書き込み動作（図９（ａ）参照）、
（２）ＰＬＣ内の所定メモリから読み出されて開発支援装置へと転送されてくるオブジェクトコードを、逆コンパイラにかけてソースプログラムに復元して、例えばディスプレイに表示すると言ったプログラム読み出し動作（図９（ｂ）参照）、
（３）ＰＬＣ内の所定メモリから読み出されて開発支援装置へと転送されてくるオブジェクトコードと、任意のソースプログラム（例えば、ＰＬＣ内のオブジェクトコードを生成する元となったソースプログラム）をコンパイラにかけることにより得られたオブジェクトコードとを照合して一致／不一致を判別するプログラム照合動作（図１０（ａ）参照）、及び
（４）ＰＬＣ内のオブジェクトコードを生成する元となったソースプログラムの一部をコンパイラにかけてオブジェクトコードに変換すると共に、こうして得られたオブジェクトコードの一部を稼働中のＰＬＣへと転送して、所定メモリに記憶されたオブジェクトコードの一部を書き換えるプログラムオンラインエディット動作（図１０（ｂ）参照）等
を挙げることができる。
【０００４】
それらの動作を実行するために、開発支援装置内には、ユーザに使い易い言語で記述されたソースプログラムをＰＬＣが実行可能なオブジェクトコードに変換するためのコンパイラと、逆にオブジェクトコードから元のソースプログラムを復元するための逆コンパイラとが組み込まれている。
【０００５】
従来、ソースプログラムを記述するための言語としては、オブジェクトコードに近い書式のプログラム言語が使用されていたため、コンパイラの有するオブジェクト生成方式は１種類に限られ、その結果、ソースプログラムとオブジェクトコードとは、常に、１対１に対応付けられるのが通例であった。
【０００６】
しかしながら、近年の開発支援装置では、プログラム開発者にとってより理解しやすい書式のプログラム言語がしばしば使用され、斯かるプログラム言語に適用可能なコンパイラの有するオブジェクト生成方式は１種類に限られないことから、同一のソースプログラムから複数種の形式のオブジェクトコードを生成することが可能となった。
【０００７】
例えば、３つの数値（Ａ，Ｂ，Ｃ）の足し算を行う処理を、従来のプログラム言語であるニーモニックを用いると、次のように記述することができる。
＋  ｄａｔａ  Ａ    ｄａｔａ  Ｂ  ｔｍｐ
＋  ｔｍｐ  ｄａｔａ  Ｃ    ｒｅｓｕｌｔ
【０００８】
このようなニーモニックで記述されたソースプログラムに適用されるコンパイラの有するオブジェクト生成方式は１種類に限られ、その結果、ソースプログラムとオブジェクトコードとは、常に、１対１に対応付けられる。
【０００９】
一方、同様な処理を、昨今普及しつつあるプログラム言語であるストラクチャードテキストを用いると、次のように記述することができる。
ｒｅｓｕｌｔ  ：＝  ｄａｔａ  Ａ  ＋  ｄａｔａ  Ｂ  ＋  ｄａｔａ  Ｃ；
【００１０】
このようなストラクチャードテキストで記述されたソースプログラムに適用されるコンパイラの有するオブジェクト生成方式は、例えば、実行速度の速いオブジェクトコードを生成するオブジェクト生成方式、容量ができるだけ小さくなるようなオブジェクトコードを生成するオブジェクト生成方式等々と言ったように、１種類には限られず、その結果、ソースプログラムとオブジェクトコードとは、必ずしも、１対１には対応付けられない。
【００１１】
なお、当然のことであるが、それらの形式の異なるオブジェクトコードは、その元となったソースプロクラムが同一である限り、ＰＬＣが実行した場合の制御動作は互いに同一となることは言うまでもない。
【００１２】
このように、ソースプログラムを記述するためのプログラム言語として、同一のソースプログラムから複数形式のオブジェクトコードを生成可能なプログラム言語が使用されると、上述の照合動作或いはオンラインエディット動作において、下記（１）、（２）のような問題点が生ずることが知見された。
【００１３】
（１）照合動作の際の問題点
書き込み動作において、オブジェクト生成方式Ａを有するコンパイラでソースプログラムＸをコンパイルして得られたオブジェクトコードＸ（Ａ）をＰＬＣへ転送して所定のメモリに格納する。
【００１４】
後日、ＰＬＣに格納されたオブジェクトコードＸ（Ａ）が元のソースプログラムＸと対応するものであることを確認するために、照合動作を実行させる。
【００１５】
このときに、比較基準となる開発支援装置側のオブジェクトコードとして、ソースコードＸをオブジェクト生成方式Ｂを有するコンパイラでコンパイルして得られたオブジェクトコードＸ（Ｂ）を誤って使用すると、両者のオブジェクトコードの形式が異なるため、照合結果は不一致となる。
【００１６】
そのため、ＰＬＣに格納されたオブジェクトコードＸ（Ａ）は元のソースプログラムＸと対応するものではないと誤判定される虞がある。
【００１７】
（２）オンラインエディット動作の際の問題点
書き込み動作において、オブジェクト生成方式Ａを有するコンパイラでソースプログラムＸをコンパイルして得られたオブジェクトコードＸ（Ａ）をＰＬＣへ転送して所定のメモリに格納する。
【００１８】
後日、ＰＬＣに格納されたオブジェクトコードＸ（Ａ）の一部を変更するために、オンラインエディット動作を実行させる。
【００１９】
このとき、元のソースプログラムＸの一部分をコンパイラにかけて変更箇所に相当するオブジェクトコードを生成する際に、オブジェクト生成方式Ｂを有するコンパイラを誤って使用し、得られたオブジェクトコードＸ（Ｂ）をＰＬＣに転送してオンラインエディットを実行すると、ＰＬＣのメモリ内には、オブジェクトコードＸ（Ａ）とオブジェクトコードＸ（Ｂ）とが混在してしまう。
【００２０】
このように、ＰＬＣのメモリ内において、オブジェクトコードＸ（Ａ）とオブジェクトコードＸ（Ｂ）とが混在が生ずると、以後、Ａ又はＢのいずれの方式の逆コンパイラを使用して読み出し動作を実行させても、元のソースプログラムを復元できないと言う問題点が生ずる。
【００２１】
なお、ソースプログラムとアセンブラとを開発支援装置内の同一箇所に格納しておくことで、ソースプログラムとアセンブラとを常に１対１に関連づけ、それによりソースプログラムが予期せぬアセンブラ（例えば、バージョンの異なるアセンブラ）で機械語オブジェクトプログラムに変換されることを回避し得るようにした従来技術も知られている（例えば、特許文献１参照）。
【特許文献１】特開２００２−１８９５０６号公報
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかしながら、上述の従来技術にあっては、
（１）各ソースプログラム毎に、そのソースプログラムに関連するアセンブラを一緒に格納する関係から、開発支援装置側には大容量のメモリが必要となること、
（２）１つのアセンブラが複数のオブジェクト生成方式をサポートする場合であっても、ソースプログラム毎にそのコンパイラの全体を重複してを格納せねばならず、メモリ容量を無駄に消費すること、
（３）同一のソースプログラムが複数種のアセンブラのいずれかで変換されてＰＬＣに格納されているような場合には、ＰＬＣ側に格納されている機械語オブジェクトプログラムに対応するソースプログラムが判っても、それがどのオブジェクト生成方式のアセンブラで変換されているかが判らなければ、正確な照合動作を行うことができないこと、
と言った様々な問題点がある。
【００２３】
この発明は、従来のＰＬＣのプログラム開発支援装置における上述の問題点に着目してなされたものであり、その目的とするところは、動作仕様（例えば、上述の従来技術のアセンブラに相当するコンパイラ又は逆コンパイラのオブジェクト生成方式）を処理対象となるソースプログラム又はオブジェクトコードに合わせて常に最適化することができ、しかもプログラム開発支援装置側のメモリ容量を大幅に節減することが可能なプログラム開発支援装置の動作仕様管理方法、並びに、そのような方法の適用されたＰＬＣ・システムを提供することにある。
【００２４】
この発明のさらに他の目的並びに作用効果については、明細書の以下の記述を参照することにより、当業者であれば容易に理解されるであろう。
【課題を解決するための手段】
【００２５】
上述の技術的課題は、以下の構成を有するプログラム開発支援装置の動作仕様管理方法、並びに、そのような方法の適用されたＰＬＣ・システムにより解決することができると考えられる。
【００２６】
すなわち、本発明のプログラム開発支援装置の動作仕様管理方法は、ＰＬＣのユーザプログラムであるソースプログラムをコンパイラにかけてＰＬＣが実行可能なオブジェクトコードに変換すると共に、こうして得られたオブジェクトコードをＰＬＣに転送記憶させるようにしたプログラム開発支援装置において、前記転送記憶の際に、当該コンパイラのオブジェクト生成方式を示す識別情報についても当該ＰＬＣに転送記憶させておき、前記ＰＬＣに記憶されたオブジェクトコードに関連して、コンパイラ又は逆コンパイラの作動する所定の動作を実行する場合には、ＰＬＣから読み出された前記識別情報に基づいて、当該コンパイラ又は逆コンパイラの動作方式を設定する、ことを特徴とするものである。
【００２７】
ここで、「識別情報」としては、コンパイラのバージョン情報、オブジェクト生成方式を示す情報（例えば、速度最適で生成するか、容量最適で生成するか等々の情報）を挙げることができる。
【００２８】
このような構成によれば、ＰＬＣに記憶されたオブジェクトコードに関連して、コンパイラ又は逆コンパイラの作動する所定の動作を実行する場合には、ＰＬＣから読み出された前記識別情報に基づいて、当該コンパイラ又は逆コンパイラの動作方式が設定されるので、動作仕様（例えば、コンパイラ又は逆コンパイラの動作方式）を処理対象となるソースプログラム又はオブジェクトコードに合わせて常に最適化することができる。
【００２９】
加えて、本発明方法は、ソースプログラムとコンパイラとを紐付けするのではなく、コンパイラとオブジェクトコードとを紐付けするものであるから、同一のソースプログラムが複数の動作方式のいずれかでコンパイルされてＰＬＣに保存されている場合にも、そのオブジェクトコードの元となった動作方式を使用してコンパイル又は逆コンパイルを行うことができる。
【００３０】
しかも、本発明方法は、動作方式を示す識別情報は、プログラム開発支援装置の側ではなくて、ＰＬＣの側に格納されるものであるから、プログラム開発支援装置のメモリ容量を増大させることもない。
【００３１】
本発明方法において「所定の動作」としては、前記ＰＬＣから読み出されたオブジェクトコードを逆コンパイラにかけてソースプログラムを復元する動作を挙げることきができる。この場合、当該復元用の逆コンパイラの動作方式が、前記ＰＬＣから読み出された前記識別情報に基づいて適切に設定されることとなる。
【００３２】
このような構成によれば、ＰＬＣにオブジェクトコードと共に保存された識別情報により、逆コンパイル時のコンパイラ方式も設定される。そのため、上述の「読み出し動作」において、ソースプログラムは同一であるにも拘わらず、書き込み動作時と読み出し動作時とでコンパイラ方式が相違することに起因して、復元されて表示されたソースプログラムが元のソースプログラムと異なるといった事態が発生することを未然に防止することができる。
【００３３】
また、本発明において「所定の動作」としては、前記ＰＬＣから読み出されたオブジェクトコードと、任意のソースプログラムをコンパイラにかけて変換することにより得られたオブジェクトコードとを照合する動作を挙げることができる。この場合、当該変換用のコンパイラのオブジェクト生成方式が、前記ＰＬＣから読み出された前記識別情報に基づいて設定されることとなる。
【００３４】
このような構成によれば、ＰＬＣにオブジェクトコードと共に保存された識別情報により、コンパイル時のコンパイラ方式も設定される。そのため、上述の「照合動作」において、ソースプログラムは同一であるにも拘わらず、書き込み動作時と読み出し動作時とでコンパイラ方式が相違することに起因して、プログラム開発支援装置に保存されたソースプログラムとＰＬＣに保存されたオブジェクトコードとが対応しない（照合不一致）と誤判定されることを未然に防止することができる。
【００３５】
また、本発明において「所定の動作」としては、ソースプログラムの一部分をコンパイラにかけて変換することにより得られたオブジェクトコード部分により、ＰＬＣに記憶されているオブジェクトコードを書き換えるオンラインエディット動作を挙げることができる。この場合、当該部分変換用コンパイラのオブジェクト生成方式が、前記ＰＬＣから読み出された前記識別情報に基づいて設定されることとなる。
【００３６】
このような構成によれば、ＰＬＣにオブジェクトコードと共に保存された識別情報により、部分上書きの際のコンパイラ方式も設定される。そのため、上述の「オンラインエディット動作」において、ＰＬＣの所定メモリ内に、ソースプログラムをあるコンパイラ方式にてコンパイルして得られたオブジェクトコードと、それとは別のコンパイラ方式にてコンパイルして得られたオブジェクトコードとが混在すると言った事態が生ずることを未然に防止することができる。
【００３７】
別の一面から見た本発明は、上述の本発明方法が適用されたプログラム開発支援装置を含むＰＬＣ・システムとして把握することもできる。
【００３８】
すなわち、このＰＬＣ・システムは、プログラム開発支援装置と、ＰＬＣと、それらの間でデータの転送を可能とするデータ転送手段とを具備している。ここで、「データ転送手段」には、通信を介してデータを転送するものと、リムーバブルメディアを介してデータを転送するものとの双方が含まれている。
【００３９】
前記プログラム開発支援装置は、所定のプログラム書き込み動作指令が与えられるのに応答して、書き込み対象となるソースプログラムをコンパイラを介してＰＬＣが実行可能なオブジェクトコードに変換したのち、こうして得られたオブジェクトコード及び当該コンパイラのオブジェクト生成方式を示す識別情報を前記データ転送手段へと送り出すように仕組まれている。
【００４０】
前記ＰＬＣは、前記データ転送手段を介して受け取った前記オブジェクトコード及び前記識別情報をそれぞれ所定のメモリに記憶させると共に、前記プログラム開発支援装置から所定の読み出し指令が到来するのを待って、当該識別情報を前記メモリから読み出してデータ転送手段へと送出するように仕組まれている。
【００４１】
そして、さらに、前記プログラム開発支援装置には、前記ＰＬＣに記憶されたオブジェクトコードに関連して、コンパイラ又は逆コンパイラの作動する動作を実行する場合には、前記転送手段に対して所定の読み出し指令を送出すると共に、そのレスポンスとして前記転送手段を介して受け取った前記識別情報に基づいて、コンパイラ又は逆コンパイラの動作方式を設定するように仕組まれているのである。
【００４２】
好ましい実施の態様としては、前記所定の動作が、前記ＰＬＣから読み出されたオブジェクトコードを逆コンパイラにかけてソースプログラムを復元する動作であり、かつ当該復元用の逆コンパイラの動作方式が、前記ＰＬＣから読み出された前記識別情報に基づいて設定される。
【００４３】
好ましい他の実施の態様としては、前記所定の動作が、前記ＰＬＣから読み出されたオブジェクトコードと、任意のソースプログラムをコンパイラにかけて変換することにより得られたオブジェクトコードとを照合する動作であり、かつ当該変換用のコンパイラのオブジェクト生成方式が、前記ＰＬＣから読み出された前記識別情報に基づいて設定される。
【００４４】
好ましいさらに他の実施の態様としては、前記所定の動作が、ソースプログラムの一部分をコンパイラにかけて変換することにより得られたオブジェクトコード部分により、ＰＬＣに記憶されているオブジェクトコードを書き換えるオンラインエディット動作であり、かつ当該部分変換用コンパイラのオブジェクト生成方式が、前記ＰＬＣから読み出された前記識別情報に基づいて設定される。
【００４５】
このようなＰＬＣ・システムによれば、前述のプログラム開発支援装置の動作仕様管理方法におけると同様な作用効果を奏することができる。
【発明の効果】
【００４６】
本発明によれば、動作仕様（例えば、コンパイラ又は逆コンパイラの動作方式）を処理対象となるソースプログラム又はオブジェクトコードに合わせて常に最適化することができ、しかもプログラム開発支援装置側のメモリ容量を大幅に節減することができる。
【発明を実施するための最良の形態】
【００４７】
以下に、この発明に係るプログラム開発支援装置の動作仕様管理方法並びに同方法が組み込まれたＰＬＣシステムの好適な実施の一形態を添付図面にしたがって詳細に説明する。
【００４８】
本発明が適用されたＰＬＣシステムのハードウェア構成が図１に示されている。同図に示されるように、このＰＬＣシステムは、開発支援装置１とＰＬＣ２とを転送手段として機能する通信ケーブルを介して接続して構成されている。
【００４９】
開発支援装置１は、この例にあっては、パーソナルコンピュータ（以下、パソコンと略称する）をベースとして、これに必要なアプリケーションプログラムを組み込むことで構成されている。
【００５０】
より具体的には、このパソコンには、液晶ディスプレイ等で構成される表示部１０１と、マウスやキーボードで構成される入力部１０２と、ワークエリア等として様々なプログラムやデータが格納されるＲＡＭ１０３と、オペレーティングシステム（ＯＳ）や各種のアプリケーションプログラムが格納されるハードディスク（ＨＤＤ）１０４と、パソコン全体を統括制御するマイクロプロセッサ（ＭＰＵ）１０５と、通信ケーブルが接続される通信インタフェース（通信Ｉ／Ｆ）１０６とが具備されている。
【００５１】
そして、ハードディスク（ＨＤＤ）１０４には、のちに図５〜図８のフローチャートを参照して説明するプログラム書き込み動作、プログラム読み出し動作、プログラム照合動作、及びオンラインエディット動作の実現に必要な各種のアプリケーションプログラムが格納されることとなる。
【００５２】
一方、ＰＬＣとしては、この例ではビルディングブロック方式のものが採用されているため、図中符号２が付されている部分は、実際には、ＰＬＣのＣＰＵユニット部分に相当するものである。このＣＰＵ部分には、当業者には良く知られているように、入出力データが格納される入出力メモリ（Ｉ／Ｏメモリ）２０１と、ＰＬＣ全体を統括制御するためのＣＰＵ２０２と、制御に必要な各種のデータが格納されるデータメモリ（ＤＡＴＡメモリ）２０３と、ユーザの制御仕様を実現するためのユーザプログラム（オブジェクトコード）を格納するユーザメモリ２０４とが具備されている。
【００５３】
なお、ＣＰＵ２０２は、システム全体を統括制御するためのシステムプログラムを格納するＲＯＭと、ＲＯＭから読み出されたシステムプログラムを実行するマイクロプロセットと、マイクロプロセッサがシステムプログラムを実行する際のワークエリアとして使用されるＲＡＭと、ユーザメモリ２０４から読み出された各命令語を実行するＡＳＩＣとを含んで構成される。
【００５４】
本発明に係るプログラム開発支援装置１の機能構成図が図２に示されている。同図に示されるように、プログラム開発支援装置１は、所定のプログラム言語（例えば、ラダー図等）を使用してソースプログラムを作成又は編集するためのプログラム編集部１１と、こうして作成又は編集されたソースプログラム或いはオブジェクトコードを逆コンパイラにかけて変換して得られたソースプログラムを格納するためのプログラム格納領域１２と、任意のソースプログラムを予め設定されたオブジェクト生成方式の下にオブジェクトコードに変換するためのコンパイラ１３と、任意のオブジェクトコードを予め設定された動作方式の下にソースプログラムに変換復元する逆コンパイラ１４と、コンパイラ又は逆コンパイラの動作方式を決定するためのオブジェクト生成情報を作成又は編集するためのオブジェクト生成情報編集部１５と、こうして作成又は編集されたオブジェクト生成情報を格納するためのオブジェクト生成情報格納領域１６と、任意のオブジェクトコード同士を照合して両者の一致を判定する照合機能１７と、ソースプログラムをコンパイラにかけて変換して得られたオブジェクトコード或いはＰＬＣから読み出されたオブジェクトコードを格納するためのオブジェクトコード格納領域１８と、ＰＬＣとの間におけるデータ転送を司る通信部１９とを具備して構成される。
【００５５】
そして、これらの機能構成要素１１〜１９が適宜に協働することにより、後述する「プログラム書き込み動作」、「プログラム読み出し動作」、「プログラム照合動作」、及び「オンラインエディット動作」が実現されることとなる。
【００５６】
本発明に係るプログラム開発支援装置における基本的な動作の説明図（その１）が図３に、同説明図（その２）が図４にそれぞれ示されている。
【００５７】
本発明に係るプログラム開発支援装置における「プログラム書き込み動作」においては、図３（ａ）に示されるように、ＰＬＣのユーザプログラムであるソースプログラム３０１をコンパイラ（図２の符号１３参照）にかけてＰＬＣが実行可能なオブジェクトコード３０２に変換すると共に、こうして得られたオブジェクトコード３０２をＰＬＣ２に転送記憶させるに際して、当該コンパイラのオブジェクト生成方式を示す識別情報３０３についても当該ＰＬＣ２に転送記憶させる。
【００５８】
図示例にあっては、コンパイラ（図２の符号１３参照）は複数種のオブジェクト生成方式（例えば、実行速度の速いオブジェクトコードを生成するオブジェクト生成方式、容量ができるだけ小さくなるようなオブジェクトコードを生成するオブジェクト生成方式等々）をサポートするように構成されており、どのオブジェクト生成方式でコンパイラがコンパイル動作を行うかの選択は、予め設定されるオブジェクト生成情報３０３ａの内容により決定される。オブジェクト生成情報３０３ａの種別は、識別情報３０３により識別可能とされている。
【００５９】
上述の「プログラム書き込み動作」を実現するためのプログラム開発支援装置の処理（アプリケーションプログラム）を示すフローチャートが図５に示されている。
【００６０】
同図において、ステップ５０１においては、ユーザが「プログラム書き込み」開始の指示を出す。この指示を出すための操作は、パソコンに備え付けられたＧＵＩ機能を使用することで、マウスやキーボードを操作により行なうことができる。続くステップ５０２では、格納されているオブジェクト生成情報３０３ａに従ってコンパイラ（図２の符号１３参照）を作動させることにより、ソースプログラム３０１からオブジェクトコード３０２を生成する。続くステップ５０３においては、コンパイラ（図２の符号１３参照）により生成されたオブジェクトコード３０２とオブジェクト生成情報３０３ａを識別するための識別情報３０３とをＰＬＣ２に送出する。
【００６１】
すると、ＰＬＣ２の側では、開発支援装置１から転送されてくるオブジェクトコード３０２と識別情報３０３とを受け取ると共に、それらを所定のメモリに格納する。このとき、オブジェクトコード３０２はユーザメモリ（図１の符号２０４参照）に格納される。一方、オブジェクト生成方式を定義するオブジェクト生成情報３０３ａを識別するための識別情報３０３については、オブジェクトコード３０２と適宜に紐付けされて、所定のメモリ（例えば、データメモリ２０３、ユーザメモリ２０４等々）に格納される。
【００６２】
本発明に係るプログラム開発支援装置における「プログラム読み出し動作」においては、図３（ｂ）に示されるように、ＰＬＣ２から読み出されたオブジェクトコード３０２を逆コンパイラ（図２の符号１４参照）にかけてソースプログラム３０１を復元するに際して、先ず、当該ＰＬＣ２から識別情報３０３を読み出すと共に、これが当該開発支援装置１にて使用可能なオブジェクト生成方式に対応するものであるか否かの判定をおこなう。ここで、ＰＬＣ２から読み出された識別情報３０３が当該開発支援装置１にて使用可能なオブジェクト生成方式に対応するものであれば、当該識別情報に基づいて当該開発支援装置１のオブジェクト生成情報を設定する。これにより、当該開発支援装置１に組み込まれた逆コンパイラ（図２の符号１４参照）は、ＰＬＣ２から読み出された識別情報３０３に基づいて設定されたオブジェクト生成情報にしたがって逆コンパイル動作を実行可能となる。しかるのち、ＰＬＣ２から読み出されたオブジェクトコード３０２は、逆コンパイラ（図２の符号１４参照）を介して元のソースプログラムに復元される。従って、こうして復元されるソースプログラムは、コンパイル時と逆コンパイル時とで同一のオブジェクト生成方式が使用されるから、再現性が保証される。
【００６３】
上述の「プログラム読み出し動作」を実現するためのプログラム開発支援装置の処理（アプリケーションプログラム）を示すフローチャートが図６に示されている。
【００６４】
同図において、ステップ６０１では、ユーザが「プログラム読み出し」開始の指示を出す。この指示を出すための操作は、パソコンに備え付けられたＧＵＩ機能を使用することで、マウスやキーボードを操作により行なうことができる。続くステップ６０２では、ＰＬＣ２に格納されている識別情報３０３を読み出す。この読み出しは、開発支援装置１とＰＬＣ２との間で所定の送信要求コマンド及びレスポンスをやり取りすることで実現することができる。
【００６５】
続くステップ６０３においては、ＰＬＣ２から読み出した識別情報３０３が開発支援装置１で使用できるオブジェクト生成方式に対応するものであるか否かの確認を行う。続く、ステップ６０４において、確認結果が「使用できない」と判定されれば、ステップ６０５へと移行して開発支援装置の画面上に所定のエラーメッセージを表示するのに対して、「使用できる」と判定されれば、ステップ６０６へと移行する。
【００６６】
続くステップ６０６においては、ＰＬＣ２から読み出した識別情報３０３と開発支援装置１に設定されたオブジェクト生成情報３０３ａに対応する識別情報との照合を行う。続くステップ６０７においては、上記の照合結果が「一致」又は「不一致」のいずれであるかの判定を行う。
【００６７】
ここで、「不一致」と判定される場合には、ステップ６０８へと進んで、例えば画面上に所定の問い合わせ表示を行うことにより、設定されたオブジェクト生成情報を更新するか否かをユーザに確認する。続くステップ６０９では、上記の確認結果が「更新する」であるか又は「更新しない」であるかを判定し、ユーザが「更新しない」を選択すれば、ステップ６１１へと移行して、画面上に所定のエラーメッセージ表示して処理は終了するのに対して、「更新する」を選択すれば、ステップ６１０へと移行する。ステップ６１０においては、ＰＬＣ２から読み出された識別情報３０３に合わせて、オブジェクト生成情報の設定値を更新したのち、ステップ６１２へと移行する。これに対して、ステップ６０７において「一致」と判定される場合には、設定情報を更新することなく、直ちに、ステップ６１２へと移行する。
【００６８】
ステップ６１２においては、ＰＬＣ２からオブジェクトコードを読み出す。この読み出しは、開発支援装置１とＰＬＣ２との間で所定の送信要求コマンド及びレスポンスをやり取りすることで実現することができる。
【００６９】
続くステップ６１３においては、もともと設定されていたオブジェクト生成情報又はステップ６１０で更新されたオブジェクト生成情報により決定されるオブジェクト生成方式を用いて、ＰＬＣ２から読み出されたオブジェクトコードを逆コンパイラにかけることにより、元のソースプログラムを復元する。従って、こうして復元されるソースプログラムは、コンパイル時と逆コンパイル時とで同一の動作方式が使用されるから、再現性が保証される。
【００７０】
本発明に係るプログラム開発支援装置における「プログラム照合動作」においては、図４（ａ）に示されるように、ＰＬＣのユーザプログラムであるソースプログラム３０１をコンパイラ（図２の符号１３参照）にかけてＰＬＣが実行可能なオブジェクトコード３０２に変換すると共に、こうして得られたオブジェクトコード３０２ｂをＰＬＣ２から読み出されたオブジェクトコード３０２ａと照合するに際して、先ず、当該ＰＬＣ２から識別情報３０３を読み出すと共に、これが当該開発支援装置１にて使用可能なオブジェクト生成方式に対応するものであるか否かの判定をおこなう。ここで、ＰＬＣ２から読み出された識別情報３０３が当該開発支援装置１にて使用可能なオブジェクト生成方式に対応するものであれば、当該識別情報３０３に基づいて当該開発支援装置１のオブジェクト生成情報３０３ａを設定する。これにより、当該開発支援装置１に組み込まれたコンパイラ（図２の符号１３参照）は、ＰＬＣ２から読み出された識別情報３０３に基づいて設定されたオブジェクト生成情報３０３ａにしたがってコンパイル動作を実行可能となる。
【００７１】
しかるのち、ソースプログラム３０１はコンパイラ（図２の符号１３参照）を介してオブジェクトコード３０２ｂに変換されると共に、こうして得られたオブジェクトコード３０２ｂは、ＰＬＣ２から読み出されたオブジェクトコード３０２ａと照合される。
【００７２】
こうして照合される２つのオブジェクトコード３０２ａ，３０２ｂは、同一のオブジェクト生成方式のコンパイラを介して生成されたものであるから、照合における信頼性が向上する。
【００７３】
上述の「プログラム照合動作」を実現するためのプログラム開発支援装置の処理（アプリケーションプログラム）を示すフローチャートが図７に示されている。同図において、ステップ７０１〜７１２の処理内容は、図６におけるステップ６０１〜６１２の処理内容と同一であるため、重複説明は省略し、相違する部分のみ説明する。
【００７４】
ステップ７１３においては、もともと設定されていたオブジェクト生成情報又はステップ７１０で更新されたオブジェクト生成情報により決定されるオブジェクト生成方式を用いて、ソースプログラム３０１をコンパイラにかけることにより、オブジェクトコード３０２ｂを生成する。
【００７５】
ステップ７１４においては、こうして得られたオブジェクトコード３０２ｂとＰＬＣ２から読み出されたオブジェクトコード３０２ａとが照合される。
【００７６】
こうして照合される２つのオブジェクトコード３０２ａ，３０２ｂは、同一のオブジェクト生成方式のコンパイラを介して生成されたものであるから、照合における信頼性が向上する。
【００７７】
本発明に係るプログラム開発支援装置における「オンラインエディット動作」においては、図４（ｂ）に示されるように、ソースプログラム３０１の一部分をコンパイラにかけて変換することにより得られたオブジェクトコード部分３０２ｃによりＰＬＣ２に記憶されているオブジェクトコード３０２を書き換えるに際して、先ず、当該ＰＬＣ２から識別情報３０３を読み出すと共に、これが当該開発支援装置１にて使用可能なオブジェクト生成方式に対応するものであるか否かの判定をおこなう。ここで、ＰＬＣ２から読み出された識別情報３０３が当該開発支援装置１にて使用可能なオブジェクト生成方式に対応するものであれば、当該識別情報３０３に基づいて当該開発支援装置１のオブジェクト生成情報３０３ａを設定する。これにより、当該開発支援装置１に組み込まれたコンパイラ（図２の符号１３参照）は、ＰＬＣ２から読み出された識別情報３０３に基づいて設定されたオブジェクト生成情報３０３ａにしたがってコンパイル動作を実行可能となる。
【００７８】
しかるのち、ソースプログラム３０１の一部（変更希望部分）はコンパイラ（図２の符号１３参照）を介してオブジェクトコード部分３０２ｃに変換されたのち、ＰＬＣ２へと送出され、これにより公知の手法にて、ＰＬＣ２内のオブジェクトコード３０２のオンラインエディットが実現される。
【００７９】
こうしてオンラインエディットされたＰＬＣ２内のオブジェクトコードは、当初から存在した部分も、後から追加又は変更された部分も、いずれも同一のオブジェクト生成方式を有するコンパイラを介してコンパイルされたものであるから、１つのオブジェクトコードの中に、異なるオブジェクト生成方式のコンパイラでコンパイルされたものが混在すると言う事態の発生を確実に回避することができる。
【００８０】
上述の「オンラインエディット動作」を実現するためのプログラム開発支援装置の処理（アプリケーションプログラム）を示すフローチャートが図８に示されている。同図において、ステップ８０１〜８１１の処理内容は、図６におけるステップ６０１〜６１１の処理内容と同一であるため、重複説明は省略し、相違する部分のみ説明する。
【００８１】
ステップ８１２においては、もともと設定されていたオブジェクト生成情報又はステップ８１０で更新されたオブジェクト生成情報により決定されるオブジェクト生成方式を用いて、ソースプログラム３０１の一部をコンパイラにかけることにより、オブジェクトコード部分３０２ｃを生成する。
【００８２】
ステップ８１３においては、こうして得られたオブジェクトコード部分３０２ｃをＰＬＣ２の側へと転送することにより、ＰＬＣ２内のオブジェクトコード３０２の一部を部分変更する。
【００８３】
こうしてオンラインエディットされたＰＬＣ２内のオブジェクトコードは、当初から存在した部分も、後から追加又は変更された部分も、いずれも同一のオブジェクト生成方式を有するコンパイラを介してコンパイルされたものであるから、１つのオブジェクトコードの中に、異なるオブジェクト生成方式のコンパイラでコンパイルされたものが混在すると言う事態の発生を確実に回避することができる。
【００８４】
以上、図３及び図４を参照して説明したように、本発明の動作仕様管理方法は、ＰＬＣのユーザプログラムであるソースプログラム３０１をコンパイラ１３にかけてＰＬＣが実行可能なオブジェクトコード３０２に変換すると共に、こうして得られたオブジェクトコード３０２をＰＬＣ２に転送記憶させるようにしたプログラム開発支援装置１において、前記転送記憶の際に、当該コンパイラのオブジェクト生成方式を示す識別情報３０３についても当該ＰＬＣ２に転送記憶させておき、前記ＰＬＣ２に記憶されたオブジェクトコード３０２に関連して、コンパイラ１３又は逆コンパイラ１４の作動する動作を実行する場合には、ＰＬＣ２から読み出された前記識別情報３０３に基づいて、当該コンパイラ１３又は逆コンパイラ１４の動作方式を設定する、ことを特徴とするものであり、これによりＰＬＣに記憶されたオブジェクトコードに関連して、コンパイラ又は逆コンパイラの作動する動作を実行する場合には、ＰＬＣから読み出された前記識別情報に基づいて、当該コンパイラ又は逆コンパイラの動作方式が設定されるので、動作仕様（例えば、コンパイラ又は逆コンパイラの動作方式）を処理対象となるソースプログラム又はオブジェクトコードに合わせて常に最適化することができる。
【００８５】
加えて、本発明方法は、ソースプログラムとコンパイラとを紐付けするのではなく、コンパイラとオブジェクトコートとを紐付けするものであるから、同一のソースプログラムが複数のオブジェクト生成方式のいずれかでコンパイルされてＰＬＣに保存されている場合にも、そのオブジェクトコードの元となったオブジェクト生成方式を使用してコンパイル又は逆コンパイルを行うことができる。
【００８６】
しかも、本発明方法は、オブジェクト生成方式を示す識別情報は、プログラム開発支援装置の側ではなくて、ＰＬＣの側に格納されるものであるから、プログラム開発支援装置のメモリ容量を増大させることもない。
【産業上の利用可能性】
【００８７】
本発明によれば、動作仕様（例えば、コンパイラ又は逆コンパイラの動作方式）を処理対象となるソースプログラム又はオブジェクトコードに合わせて常に最適化することができ、しかもプログラム開発支援装置側のメモリ容量を大幅に節減することが可能なプログラム開発支援装置の動作仕様管理方法、並びに、そのような方法の適用されたＰＬＣ・システムを提供することができる。
【図面の簡単な説明】
【００８８】
【図１】ＰＬＣ・システムのハードウェア構成図である。
【図２】本発明に係るプログラム開発支援装置の機能構成図である。
【図３】本発明に係るプログラム開発支援装置における基本的な動作の説明図（その１）である。
【図４】本発明に係るプログラム開発支援装置における基本的な動作の説明図（その２）である。
【図５】プログラム書き込み動作時におけるプログラム開発支援装置の処理を示すフローチャートである。
【図６】プログラム読み出し動作時におけるプログラム開発支援装置の処理を示すフローチャートである。
【図７】プログラム照合動作時におけるプログラム開発支援装置の処理を示すフローチャートである。
【図８】プログラムオンラインエディット時におけるプログラム開発支援装置の処理を示すフローチャートである。
【図９】従来のプログラム開発支援装置における基本的な動作の説明図（その１）である。
【図１０】従来のプログラム開発支援装置における基本的な動作の説明図（その２）である。
【符号の説明】
【００８９】
１        開発支援装置
２        プログラマブル・コントローラ（ＰＬＣ）
１１      プログラム編集部
１２      プログラム格納領域
１３      コンパイラ
１４      逆コンパイラ
１５      オブジェクト生成情報編集部
１６      オブジェクト生成情報格納領域
１７      照合機能
１８      オブジェクトコード格納領域
１９      通信部
１０１    表示部
１０２    入力部
１０３    ＲＡＭ
１０４    ＨＤＤ
１０５    ＭＰＵ
１０６    通信Ｉ／Ｆ
２０１    Ｉ／Ｏメモリ
２０２    ＣＰＵ
２０３    ＤＡＴＡメモリ
２０４    ユーザメモリ
２０５    通信Ｉ／Ｆ
３０１    ソースプログラム
３０２    オブジェクトコード
３０３    識別情報
３０３ａ  オブジェクト生成情報
【図１】
0005051377.tif 000002
【図２】
0005051377.tif 000003
【図３】
0005051377.tif 000004
【図４】
0005051377.tif 000005
【図５】
0005051377.tif 000006
【図６】
0005051377.tif 000007
【図７】
0005051377.tif 000008
【図８】
0005051377.tif 000009
【図９】
0005051377.tif 000010
【図１０】
0005051377.tif 000011