(57)【要約】【課題】  変数プログラミングが採用される場合にあっても、当該開発支援装置上の制御プログラムとＰＬＣに格納された制御プログラムとの間における関係をより詳細に分析して、その結果をユーザに対して判りやすく通知することが可能なＰＬＣの制御プログラム開発支援装置を提供すること。【解決手段】  ＰＬＣ側のオブジェクトコード列と開発支援装置側のオブジェクトプログラムとを照合する第１の照合手段と、ＰＬＣ側のソースコード列と開発支援装置側のソースプログラムとを照合する第２の照合手段と、第１の照合手段の照合結果と第２の照合手段の照合結果との組合せにより定義される４つの場合分けのそれぞれ毎に、所定の表示形態による案内表示を行う表示制御手段と、を具備する。【選択図】  図４
2008276525.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムとして、実行形式のオブジェクトプログラムとそのオブジェクトプログラム生成の元とされたソースプロクラムとの双方が格納されるＰＬＣを対象とするＰＬＣの制御プログラム開発支援装置であって、
対象となるＰＬＣからオブジェクトプログラムに相当するオブジェクトコード列とソースプログラムに相当するソースコード列及び変数定義をアップロードする手段と、
対象となるＰＬＣのものとして、当該開発支援装置側が保有する制御プログラムから、オブジェクトプログラムに相当するオブジェクトコード列とソースプログラムに相当するソースコード列及び変数定義を読み出す読み出し手段と、
ＰＬＣ側のオブジェクトコード列と開発支援装置側のオブジェクトコード列とを照合する第１の照合手段と、
ＰＬＣ側のソースコード列と開発支援装置側のソースコード列とを照合する第２の照合手段と、
第１の照合手段の照合結果と第２の照合手段の照合結果との組合せにより定義される４つの場合分けのそれぞれ毎に、所定の表示形態による案内表示を行う表示制御手段と、
を具備する、ことを特徴とするＰＬＣの制御プログラム開発支援装置。
【請求項２】
オブジェクトコード列同士が不一致でかつソースコード列同士も不一致の場合には、両制御プログラムは異なるものである旨を示す所定の表示形態による案内表示を行うように仕組まれている、ことを特徴とする請求項１に記載のＰＬＣの制御プログラム開発支援装置。
【請求項３】
所定の表示形態が、両ソースコード列に対応するプログラムリストをプログラム行同士を整合させて並列表示すると共に、両者が相違するプログラム行に関しては、色彩、輝度等々を異ならせた行識別表示を行うものである、ことを特徴とする請求項２に記載のＰＬＣの制御プログラム開発支援装置。
【請求項４】
オブジェクトコード列同士が不一致でかつソースコード列同士が一致の場合には、メモリアドレスが自動割付されたか否かを確認可能な所定の表示形態による案内表示を行うように仕組まれている、ことを特徴とする請求項１に記載のＰＬＣの制御プログラム開発支援装置。
【請求項５】
所定の表示形態が、両変数定義に対応するプログラムリストをプログラム行同士を整合させて並列表示すると共に、両者が相違するプログラム行に関しては、色彩、輝度等々を異ならせた行識別表示を行うものである、ことを特徴とする請求項４に記載のＰＬＣの制御プログラム開発支援装置。
【請求項６】
オブジェクトコード列同士が一致でかつソースコード列同士が不一致の場合には、メモリアドレスは変更することなく変数名のみが変更されたことを確認可能な所定の表示形態による案内表示を行うように仕組まれている、ことを特徴とする請求項１に記載のＰＬＣの制御プログラム開発支援装置。
【請求項７】
所定の表示形態が、両ソースコード列に対応するプログラムリストをプログラム行同士を整合させて並列表示すると共に、両者が相違するプログラム行に関しては、色彩、輝度等々を異ならせた行識別表示を行ない、さらに、行識別表示には、オブジェクトコード列は同一である旨を示す文字や記号等のキャラクタ表示を付するものである、ことを特徴とする請求項６に記載のＰＬＣの制御プログラム開発支援装置。
【請求項８】
オブジェクトコード列同士が一致でかつソースコード列同士も一致の場合には、両制御プログラムは同一のものである旨を示す所定の表示形態による案内表示を行うように仕組まれている、ことを特徴とする請求項１に記載のＰＬＣの制御プログラム開発支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラマブル・コントローラ（以下、「ＰＬＣ」と言う）の制御プログラム開発支援装置に係り、特に、当該開発支援装置上の制御プログラムとＰＬＣ側からアップロードされた制御プログラムとの照合機能を備えたＰＬＣの制御プログラム開発支援装置に関する。
【背景技術】
【０００２】
周知のように、ＰＬＣの制御プログラムは、制御命令（オペコード）とオペランドとの組合わせによって記述される。オペランドは、命令実行の対象（データ）が格納されたメモリアドレスを指定するものである。
【０００３】
オペランドとしては、ＰＬＣの物理的なメモリアドレスをそのまま使用するのではなくて、図１１に示されるように、「ＩＯメモリ」、「データメモリ」等のようにその役割に応じたラベルを付けたラベル付きメモリアドレスを使用するのが一般的である。
【０００４】
なお、図において、表記「０．０」とはＩＯメモリの第０行第０ビットを指定するラベル付きメモリアドレス、表記「１．０」とはＩＯメモリの第１行第０ビットを指定するラベル付きメモリアドレスである。また、表記「Ｄ０」とはデータメモリの第０行第０〜１５ビットを指定するラベル付きメモリアドレス、表記「Ｄ１」とはデータメモリの第１行第０〜１５ビットを指定するラベル付きメモリアドレスである。図示のラダー図で表記された制御プログラムの意味するところは、入力「０．０」がオンすると、リレー「１．０」がオンして、そのリレー出力「１．０」がオンし、データメモリのアドレス「Ｄ０」のデータがデータメモリのアドレス「Ｄ１」へと転送されるものである。
【０００５】
近年のプログラム開発支援装置では、特定のメモリアドレスに対してユーザが自由に名称（変数）をつけ、オペランドとしてこの名称を使用することで、命令実行対象が格納されたメモリアドレスを間接的に指定することができるような仕組みも提供されている（特許文献１参照）。
【０００６】
このような仕組みを前提とした場合における制御プログラムのプログラミング（変数プログラミング）の一例が図１２に示されている。ここで、「変数定義」とは、アドレスと名称との対応付けを意味するものである。図示のラダー図で表記された制御プログラムの意味するところは、名称「ａａａ」で指定される入力がオンすると、名称「ｂｂｂ」で指定されるリレーがオンして、その名称「ｂｂｂ」で指定されるリレー出力がオンし、データメモリの名称「ｘｘｘ」で指定されるメモリエリアのデータがデータメモリの名称「ｙｙｙ」で指定されるメモリエリアへと転送されるものである。
【０００７】
変数を使用した制御プログラムのプログラミングは、近年多用される「ファンクションブロック」を使用した制御プログラムのプログラミングとの併用において、より重要な意義を有する。
【０００８】
ファンクションブロックを使用したプログラミングの一例を示す説明図が図１３に示されている。同図に示されるように、「ファンクションブロック」とは、所定のファンクションの実現に必要なプログラムをあらかじめファンクションブロックとして記述して別途記憶させておき、このファンクションブロックを制御プログラム中の必要な箇所から呼出して使う仕組みである（特許文献２参照）。この仕組みを利用すれば、プログラムの再利用性を向上させることができる。たとえば、同じ動作をさせたい装置が複数並んでいるような場合に、プログラムを各装置毎に別々に記述するのではなく、制御プログラム中の複数箇所から共通のファンクションブックを呼び出すように記述することで、それらの装置の制御を制御プログラム全体を長大化することなく実現することができる。また、このようなファンクションブロックを使用した制御プログラムの記述によれば、上述の装置部分のプログラムに間違いがあるようなときにでも、修正の必要箇所は１箇所で済み、変更に強い構造のプログラムを作成できる利点がある。
【０００９】
ファンクションブロックに相当するプログラムは再利用されることを想定するため、オペランドとして特定のメモリアドレスをそのまま使用することは稀であり、通常は、オペランドとしては変数（入出力名称等）が使用される。
【００１０】
それらの変数の中で、当該ファンクションブロックに対する外部からの入力又は当該ファンクションブロックからの外部への出力に係る変数については、特定のメモリアドレスに割り付ける必要があるが、その他のファンクションブロック内部でのみ使用される変数については、特定のメモリアドレスに割り付ける必要はない。そのため、従来のプログラム開発支援装置にあっては、ファンクションブロックに相当するプログラム中にオペランドとして使用される変数の中で、ファンクションブロック内部でのみ使用される変数については、ユーザの指定を待つことなく、自動的に適当なメモリアドレスを割り付ける機能（以下、「変数自動割付機能」と言う）が組み込まれている。
【００１１】
すなわち、図１３の例においては、外部からの入力である変数（ａａａ）については、特定のアドレスに割り付けることが必要であるが、ファンクションブロック内部のみで使用される変数（ｂｂｂ，ｘｘｘ，ｙｙｙ）については、特定のアドレスに割り付ける必要はなく、そのため、任意のアドレスに自動割り付けされる。
【００１２】
アドレスプログラミング（オペランドとしてメモリアドレスを使用するプログラミング手法）に対する変数プログラミング（オペランドとしてあらかじめ登録した変数を使用するプログラミング手法）のメリットとしては、主に次の２点を挙げることができる。
【００１３】
１）オペランドとして、単なる数字列（メモリアドレス）ではなく意味を持った文字列（名称）を指定できるため、制御プログラムの編集時に間違いを減らせる。また、他人が作成したプログラムの可読性が高まる。
【００１４】
２）変数とアドレスの対応付けがプログラムとは別に管理されるので、ＩＯ割付けの変更が容易になる。また、演算の途中結果を格納するような、特定のＩＯメモリである必要がないオペランドに対して、アドレスを自動的に割付けることによって、プログラミングの効率を向上させることができる。
【００１５】
ユーザは、プログラム開発支援装置上でソースプログラム（ソースコード列、変数定義）の編集を行い、コンパイルによってＰＬＣが実行できる形式のオブジェクトプログラム（オブジェクトコード列）に変換し、こうして得られたオブジェクトプログラム（オブジェクトコード列）をＰＬＣに転送する。ＰＬＣは、開発支援装置から転送されたオブジェクトプログラム（オブジェクトコード列）をオブジェクトコードメモリに格納すると共に、これを実行することによって制御動作を実現する。なお、昨今のＰＬＣにおいては、ＰＬＣからアップロードされた制御プログラムの可読性を向上するために、オブジェクトプログラム生成の元とされたソースプログラム（ソースコード列、変数定義）それ自体についても、ＰＬＣ側へと転送して、オブジェクトプログラム（オブジェクトコード列）と一緒にＰＬＣ側に格納するように構成されている。
【００１６】
ところで、開発支援装置上の制御プログラムとＰＬＣに格納された制御プログラムとは、必ずしも同一とはならない。特に、次のような場合には、両プログラムが一致しないという状況が発生しやすい。
【００１７】
１）プログラム開発時に、作成が終了したプログラム部分のみをＰＬＣに転送してデバッグを実施した後で、それに対して更にプログラムの追加や修正を行った場合。
【００１８】
２）プログラム開発を複数人で行っている場合に、ある開発者がプログラムをＰＬＣへ転送したあとで別の開発者がプログラムの変更を行った場合。
【００１９】
そのため、この種のプログラム開発支援装置には、開発支援装置上の制御プログラムとＰＬＣに格納された制御プログラムとの照合を行うプログラム照合機能が組み込まれている。例えば、プログラムの編集を行う場合等には、このプログラム照合機能を利用することで、編集対象となる制御プログラムとＰＬＣに格納された制御プログラムとの整合性を確認可能とされている。
【００２０】
従来、プログラム開発支援装置に組み込まれていたプログラム照合機能は、開発支援装置上の制御プログラムを構成するオブジェクトコード列とＰＬＣに格納された制御プログラムを構成するオブジェクトコード列とを照合すると共に、照合結果が不一致の場合には、所定の表示フォーマットにて両者を並べて表示すると共に、この並列表示に対して不一致箇所を示す表示を付加すると言った構成を採用するものであった。
【００２１】
このような構成を採用したのは、開発支援装置上の制御プログラムを構成するオブジェクトコード列とＰＬＣに格納された制御プログラムを構成するオブジェクトコード列との照合結果が一致しなければ、両制御プログラムの実行結果として得られる制御内容は必ず相違するものとなるから、開発支援装置のユーザに対しては、オブジェクトコード列同士において、どこが相違するかの情報を提供しさえすれば、その後の編集作業等には十分であるとの意図に基づくものである。
【特許文献１】特開２００５−３５２６１２号公報
【特許文献２】特開２００４−３０３２１７号公報
【発明の開示】
【発明が解決しようとする課題】
【００２２】
ところで、プログラミング手法としてアドレスプログラミングを採用する場合には、オペランドにはメモリアドレスそのものが記述されるため、開発支援装置上のソースプログラム（ソースコード列）をコンパイルして得られたオブジェクトプログラム（オブジェクトコード列）は、編集や改竄がされない限りにおいては、同様にして得られたのち、ＰＬＣに格納されたオブジェクトプログラム（オブジェクトコード列）と必ず一致する。しかも、オブジェクトプログラム（オブジェクトコード列）同士が相違すれば、それらをＰＬＣで実行させた場合に実現される制御動作についても必ず相違する。したがって、上述のオブジェクトコード列同士を照合するプログラム照合機能があれば、両プログラム間における編集や改竄の有無を確実に判定して、両プログラムの実行結果としての制御動作が互いに相違する旨、及び、編集や改竄内容をユーザに通知することができる。
【００２３】
これに対して、プログラミング手法として変数プログラミングを採用する場合には、オペランドにはメモリアドレスではなくてメモリアドレスを間接的に指定する変数が記述されることに加えて、コンパイラには前述の変数自動割付機能が組み込まれているため、開発支援装置上のソースプログラム（ソースコード列、変数定義）をコンパイルして得られたオブジェクトプログラム（オブジェクトコード列）は、編集や改竄がされていないとしても、同様にして得られたのち、ＰＬＣに格納されたオブジェクトプログラム（オブジェクトコード列）とは必ずしも一致しない。しかも、変数自動割付機能を介して生成されたオブジェクトプログラム（オブジェクトコード列）同士が相違したとしても、それらをＰＬＣで実行させた場合に実現される制御動作については必ずしも相違しない。したがって、上述のオブジェクトコード列同士を照合するプログラム照合機能があったとしても、両プログラム間における編集や改竄の有無を必ずしも正確に判定することができず、また両プログラムの実行結果としての制御動作が互いに相違するか否かも判定することができないと言う問題点がある。
【００２４】
すなわち、変数プログラミングにあっては、ソースプログラム上の変数定義さえ変更すれば、変数名称とメモリアドレスとの関係は自在に変更可能である。したがって、２つのプログラム間において、可読性向上のために、変数名称は変更したものの、それに対応するメモリアドレスについては元のままとしたような場合には、従前の単にオブジェクトコード列同士を照合するプログラム照合機能では、このようなプログラム間の相違は判定することができない。
【００２５】
また、コンパイルの際の変数自動割付機能の作用によって、２つのプログラム間において、変数名称は変わらないものの、メモリアドレスについては相違する言った場合にも、従前のオブジェクトコード列同士が不一致であれば、制御動作も必ず不一致となると認識する従来のプログラム照合機能では、このようなプログラム間の相違は判定することができない。
【００２６】
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、変数プログラミングが採用される場合にあっても、当該開発支援装置上の制御プログラムとＰＬＣに格納された制御プログラムとの間における関係をより詳細に分析して、その結果をユーザに対して判りやすく通知することが可能なＰＬＣの制御プログラム開発支援装置を提供することにある。
【００２７】
この発明のさらに他の目的並びに作用効果については、明細書の以下の記述を参照することにより、当業者であれば容易に理解されるであろう。
【課題を解決するための手段】
【００２８】
上述の技術的な課題は、以下の構成を有するＰＬＣの制御プログラム開発支援装置により解決することができる。このＰＬＣの制御プログラム開発支援装置は、制御プログラムとして、実行形式のオブジェクトプログラムとそのオブジェクトプログラム生成の元とされたソースプロクラムとの双方が格納されるＰＬＣを対象とするものであり、以下の構成要件を有する。
【００２９】
すなわち、このＰＬＣの制御プログラム開発支援装置は、対象となるＰＬＣからオブジェクトプログラムに相当するオブジェクトコード列とソースプログラムに相当するソースコード列及び変数定義をアップロードする手段と、対象となるＰＬＣのものとして、当該開発支援装置側が保有する制御プログラムから、オブジェクトプログラムに相当するオブジェクトコード列とソースプログラムに相当するソースコード列及び変数定義を読み出す読み出し手段と、ＰＬＣ側のオブジェクトコード列と開発支援装置側のオブジェクトコード列とを照合する第１の照合手段と、ＰＬＣ側のソースコード列と開発支援装置側のソースコード列とを照合する第２の照合手段と、第１の照合手段の照合結果と第２の照合手段の照合結果との組合せにより定義される４つの場合分けのそれぞれ毎に、所定の表示形態による案内表示を行う表示制御手段と、を具備するものである。
【００３０】
このような構成によれば、変数プログラミングが採用される場合にあっても、当該開発支援装置上の制御プログラムとＰＬＣに格納された制御プログラムとの間における関係をより詳細に分析して、その結果をユーザに対して判りやすく通知することが可能なＰＬＣの制御プログラム開発支援装置を提供することができる。
【００３１】
好ましい実施の形態においては、オブジェクトコード列同士が不一致でかつソースコード列同士も不一致の場合には、両制御プログラムは異なるものである旨を示す所定の表示形態による案内表示を行うように仕組まれる。このとき、所定の表示形態としては、両ソースコード列に対応するプログラムリストをプログラム行同士を整合させて並列表示すると共に、両者が相違するプログラム行に関しては、色彩、輝度等々を異ならせた行識別表示を行うものであってもよい。
【００３２】
好ましい実施の形態においては、オブジェクトコード列同士が不一致でかつソースコード列同士が一致の場合には、メモリアドレスが自動割付けれされたか否かを確認可能な所定の表示形態による案内表示を行うように仕組まれる。このとき、所定の表示形態が、両変数定義に対応するプログラムリストをプログラム行同士を整合させて並列表示すると共に、両者が相違するプログラム行に関しては、色彩、輝度等々を異ならせた行識別表示を行うものであってもよい。
【００３３】
好ましい実施の形態においては、オブジェクトコード列同士が一致でかつソースコード列同士が不一致の場合には、メモリアドレスは変更することなく変数名のみが変更されたことを確認可能な所定の表示形態による案内表示を行うように仕組まれる。このとき、所定の表示形態が、両ソースコード列に対応するプログラムリストをプログラム行同士を整合させて並列表示すると共に、両者が相違するプログラム行に関しては、色彩、輝度等々を異ならせた行識別表示を行ない、さらに、行識別表示には、オブジェクトコード列は同一である旨を示す文字や記号等のキャラクタ表示を付するものでってもよい。
【００３４】
好ましい実施の形態においては、オブジェクトコード列同士が一致でかつソースコード列同士も一致の場合には、両制御プログラムは同一のものである旨を示す所定の表示形態による案内表示を行うように仕組まれる。
【発明の効果】
【００３５】
本発明によれば、変数プログラミングが採用される場合にあっても、当該開発支援装置上の制御プログラムとＰＬＣに格納された制御プログラムとの間における関係をより詳細に分析して、その結果をユーザに対して判りやすく通知することが可能なＰＬＣの制御プログラム開発支援装置を提供することができる。
【発明を実施するための最良の形態】
【００３６】
以下に、この発明にかかるＰＬＣの制御プログラム開発支援装置の好適な実施の一形態を添付図面を参照しながらと詳細に説明する。
【００３７】
本発明が適用される制御プログラム開発支援装置の電気的ハードウェア構成図が図１に示されている。同図に示されるように、開発支援装置１は、編集中のプログラムの表示、照合結果の表示などを行う表示部１０１と、ユーザからの入力（プログラムの編集内容、照合開始の指示）を受ける入力部１０２と、ＣＰＵが使用するメモリとして機能するＲＡＭ１０３と、ユーザデータを格納するためのＨＤＤと、プログラム編集の入出力制御、通信処理の制御、照合の実行などを行うＣＰＵとを有する。
【００３８】
本発明に係る制御プログラム開発支援装置の対象となるＰＬＣのハードウェア構成図が図２に示されている。同図に示されるように、ＰＬＣ２は、ＰＬＣに対する入出力状態や演算結果を格納するＩＯメモリ２０１と、制御プログラムの実行、通信処理の制御などを行うＣＰＵ２０２と、ＰＬＣとのデータ通信を行う通信Ｉ／Ｆ２０３と、ＰＬＣが実行する制御プログラムを格納するオブジェクトコードメモリ２０４と、ソースコードを格納するソースコードメモリ２０５と、変数定義を格納する変数定義メモリ２０６とを有する。
【００３９】
本発明に関連して取り扱われるソースコード、変数定義、オブジェクトコードの相互関係を示す説明図が図３に示されている。同図に示されるように、ユーザは、プログラム開発支援装置１上でソースプログラム（ソースコード列１１、変数定義１２）の編集を行い、コンパイラ１３によってＰＬＣが実行できる形式のオブジェクトプログラム（オブジェクトコード列１４）に変換し、こうして得られたオブジェクトプログラム（オブジェクトコード列１４）をＰＬＣ２に転送する。ＰＬＣ２は、開発支援装置１から転送されたオブジェクトプログラム（オブジェクトコード列１４）をオブジェクトコードメモリ２２に格納すると共に、これを実行することによって制御動作を実現する。なお、昨今のＰＬＣにおいては、ＰＬＣからアップロードされた制御プログラムの可読性を向上するために、オブジェクトプログラム生成の元とされたソースプログラム（ソースコード列１１、変数定義１２）それ自体についても、ＰＬＣ側へと転送して、オブジェクトプログラム（オブジェクトコード列）と一緒にＰＬＣ側のソースコードメモリ２１、変数定義メモリ２３に格納するように構成されている。
【００４０】
次に、変数プログラミングが適用される場合において、ＰＬＣ側に格納される制御プログラムと開発支援装置側に保持れされる制御プログラムとの間に、どのような異同関係が生ずるかについて説明する。
【００４１】
ＰＬＣ側に格納される制御プログラムと開発支援装置側に保持れされる制御プログラムとの間には、図５に示されるように、オブジェクトコード列の照合結果とソースコード列の照合結果との組合せにより規定される４つの場合分けが想定される。
［１］オブジェクトコードが不一致で、かつソースコードも不一致の場合
これは、意図的な変更が行われている場合である。ユーザは、不一致箇所の確認、必要であれば修正を行わねばならない。
［２］オブジェクトコードが不一致でかつソースコードが一致の場合
これは、変数の名称に対応するメモリアドレスが変更されている場合である。この変更は、ユーザが意図的に行う場合もあれば、コンパイルのタイミングで自動的に行われる場合（変数自動割付機能）もある。変更のあったメモリアドレスが入出力として使われるものか内部的に使われるものかで、ＰＬＣの制御動作に関する判断が異なる。
ａ）入出力として使われる場合：ＰＬＣの制御動作は不一致
ｂ）内部的に使われる場合    ：ＰＬＣの制御動作は一致
［３］オブジェクトコードが一致でかつソースコードが不一致の場合
変数の名称だけが変更されている場合である。この場合、ＰＬＣの制御動作は一致する。
［４］オブジェクトコードが一致でかつソースコードも一致の場合
両制御プログラムが同一の場合である。
そして、従来のオブジェクトコードだけを照合する手法では、［２］の場合の判断ができなかった。しかし、ソースコードだけを照合する手法でも、［３］の場合で間違った判断をすることになる。したがって、変数プログラミングでは、オブジェクトコードとソースコードの両方を照合する必要があることが判る。
本発明に係る制御プログラム開発支援装置のソフトウェア構成を示すフローチャートが図４に示されている。同図において、処理が開始されると、例えばキーボードやマウスからの信号に基づき、ユーザの照合開始指示を待機し、これが到来するのを待って、本発明に係る一連の処理を開始する。
【００４２】
先に図３を参照して説明したように、開発支援装置１の側には、ソースコード１１と、変数定義１２と、それらをコンパイラ１３にかけることによって生成されたオブジェクトコード１４とが保存されている。この保存は、開発支援装置１を構成するパソコンのハードディスク（ＨＤＤ）１０４に格納されていたり、あるいは別途適当なリムーバブルメモリに格納されていてもよい。
【００４３】
続くステップ４０２では、ＰＬＣのオブジェクトコードメモリ２２に格納されているオブジェクトコードをアップロードする。続くステップ４０３では、ＰＬＣのソースコードメモリ２１及び変数定義メモリ２３にそれぞれ格納されているソースコード・変数定義をアップロードする。以上のアップロード処理については、通信を介して所定の手順で行われ、その詳細については各種の文献において公知であるから説明は省略する。
【００４４】
このようにして、オブジェクトコード、ソースコード、変数定義がそれぞれアップロード完了されたならば、本発明の要部であるところのプログラム照合処理及び案内表示処理が開始される。
【００４５】
プログラム照合処理においては、まず、ＰＬＣ側のオブジェクトコード列と開発支援装置側のオブジェクトコード列とを照合する第１の照合処理（ステップ４０４）を実行する。プログラムの照合方法としては、ａ）照合対象の全データ、ｂ）照合対象データのサム値、ｃ）照合対象データ作成日時等の付随する情報、のいずれかのデータを用いて行うことができる。
【００４６】
第１の照合処理（ステップ４０４）の実行が完了すると、その照合結果が「一致」又は「不一致」のいずれかに拘わらず、ＰＬＣ側のソースコード列と開発支援装置側のソースコード列とを照合する第２の照合処理（ステップ４０５又は４０８）が実行される。
【００４７】
すなわち、第１の照合処理（ステップ４０４）において、照合結果が「不一致」と判定されると、続いて、ステップ４０５へと進んで、ＰＬＣ側のソースコード列と開発支援装置側のソースコード列との照合処理が実行される（ステップ４０５）。ここで、照合結果が「不一致」の場合には、続いて、ステップ４０６へ進んで、ソースコードの不一致箇所を詳細表示する処理が実行される（ステップ４０６）。
【００４８】
ここで、オブジェクトコードが不一致で（ステップ４０４「不一致」）かつソースコードも不一致（ステップ４０５「不一致」）となる場合とは、プログラム作成者又は他の作成者が意図的に制御プログラムを変更した場合などを挙げることができる。このとき、ステップ４０６においては、両制御プログラムは異なるものである旨を示す所定の表示形態による案内表示が行われる。所定の表示形態としては、両ソースコード列に対応するプログラムリストをプログラム行同士を整合させて並列表示すると共に、両者が相違するプログラム行に関しては、色彩、輝度等々を異ならせた行識別表示を行うものなどを採用することができる（例えば図１０参照）。
【００４９】
図１０の例においては、符号１００１が付された、両者が相違するプログラム行に関しては、色彩、輝度等を異ならせた（この例では、例えば黄色に着色）行識別表示が行われるのに対し、符号１００２が付された、両者が相違しないプログラム行に関しては、白色とされている。なお、符号１００３は相違する箇所の色見本、１００４は相違しない箇所の色見本である。
【００５０】
一方、オブジェクトコードが不一致で（ステップ４０４「不一致」）かつソースコードが一致（ステップ４０５「一致」）の場合には、ステップ４０７へ進んで、変数定義の不一致箇所を詳細表示する処理が実行される。ここで、オブジェクトコードが不一致（ステップ４０４「不一致」）でかつソースコードが一致（ステップ４０５「一致」）する場合とは、次のような場合を想定することができる。
【００５１】
すなわち、照合の結果、オブジェクトコードが不一致でソースコードが一致となる場合がある。これは、変数の名称には変更がないが、変数に割り当てられたメモリアドレスが変更されている場合に発生する。この変数が、演算の途中結果を格納するなどＰＬＣの入出力に影響しないものであれば、オブジェクトコードが不一致であってもＰＬＣの制御動作は変わらない。
【００５２】
このような状態が起こる場合としては、ファンクションブロックを使用するものとアドレスの自動割付機能を使用するものを挙げることができる。
【００５３】
図６に示されるように、ファンクションブロックは制御のロジック（ファンクション）を定義するが、その中で使用される命令語のオペランドには変数を指定する変数プログラミング方式が一般的である。プログラムが動作するときに使用するメモリアドレスはユーザには意識させず、コンパイルのタイミングで開発支援装置が自動的に割当を行う。この仕組みによって、以前作成したファンクションブロックを別のところで再利用することが可能となる。
【００５４】
しかし、再利用によって割り付けられるメモリアドレスが変わるため、プログラムを変更していないにも拘わらず、オブジェクトコードによる照合結果は不一致となってしまう。このため、ファンクションブロックの場合には、ソースコードによる照合結果を元に判断する必要がある。
【００５５】
一方、開発支援装置がアドレス自動割付機能を持っている場合にも、ファンクションブロックと同様にオブジェクトコード不一致でソースコード一致という状況が起こり得る。アドレス自動割付機能とは、通常であればユーザが逐一設定しなければならない変数に対するメモリアドレスの割当を、開発支援装置が自動的に行うものである。制御プログラムの中で、演算の途中結果を格納するためのメモリは、特に決まったメモリアドレスである必要はない。このような場合に、変数を自動割付の変数として登録しておけば、プログラムの動作で使うメモリアドレスは開発支援装置が空いているメモリアドレスを自動的に割り当てる。
【００５６】
アドレスの自動割付機能によって、オブジェクトコードが不一致でソースコードが一致する場合の説明図が図７に示されている。同図において、符号７１ａと符号７１ｂ、符号７２ａと符号７２ｂ、符号７３ａと符号７３ｂ、符号７４ａと符号７４ｂ、符号７５ａと符号７５ｂがそれぞれ付された箇所を比較して明らかなように、ソースコード列は両者間で一致していても、変数定義ないしオブジェクトコード列は部分的に（特に、内部アドレスについては）相違する。
【００５７】
このような場合には、ユーザの意図としては、ＰＬＣの制御動作に変更を加えていないことになる。従って、照合結果としてプログラムは一致と判定する。但し、ソースプログラムに変更がなくても変数定義が変更されているということが分かるように、図８に示されるように、変数定義の不一致箇所を詳細表示する。
【００５８】
図８に示されるように、この表示形態は、両変数定義に対応するプログラムリストをプログラム行同士を整合させて整列表示すると共に、両者が相違するプログラム行（符号８１参照）に関しては、色彩、輝度等々を異ならせた行識別表示を行うものである。なお、この例にあっては、符号８１が付された不一致プログラム行については黄色の着色が行われ、符号８２が付された一致プログラム行については白色とされている。なお、８３は不一致箇所の着色を示す色見本、８４は一致箇所の着色を示す色見本である。
【００５９】
図４に戻って、オブジェクトコードが一致（ステップ４０４「一致」）で、かつソースコードが不一致（ステップ４０８「不一致」）とされる場合には、ステップ４０９へと進んで、［バイナリ一致］の文字列付きで不一致箇所を詳細表示する。この表示形態としては、例えば、両ソースコード列に対応するプログラムリストをプログラム行同士を整合させて並列表示すると共に、両者が相違するプログラム行に関しては、色彩、輝度等々を異ならせた行識別表示を行い、さらに、行識別表示には、オブジェクトコード列は同一である旨を示す文字や記号等のキャラクタ表示（例えば、［バイナリ一致］）を付するものである。
【００６０】
ここで、オブジェクトコードが一致（ステップ４０４「一致」）で、かつソースコードが不一致（ステップ４０８「不一致」）とは、次のような場合を想定することができる。
【００６１】
すなわち、ユーザがプログラムをより分かりやすくするなどの理由により、変数の名称を変更する場合がある。ユーザの各種変更などによって、オブジェクトコードが一致でソースコードが不一致となる場合の説明図が図９に示されている。
【００６２】
同図に示されるように、変数の名称が変更されたことにより（符号９１ａと符号９１ｂとがそれぞれ付された部分参照）、ソースコードは不一致となる。しかし、変数に対するメモリアドレスの割当は変更されていないため（符号９２ａと符号９２ｂとが付されている部分参照）、オブジェクトコードは一致する。従って、照合結果としてもソースコードは不一致であるがオブジェクトコードが一致しているということが分かるようにしなければならない。
【００６３】
オブジェクトコードが一致でソースコードが不一致となる場合の案内表示例を示す説明図が図１０に示されている。同図に示されるように、この例にあっては、両ソースコード列に対応するプログラムリストをプログラム行同士を整合させて並列表示すると共に、両者が相違するプログラム行に関しては、符号１００１に示されるように、色彩、輝度等々を異ならせ（この例では黄色に着色）た行識別表示を行い、さらに、行識別表示には、符号１００５，１００６に示されるように、オブジェクトコード列は同一である旨を示す文字や記号等のキャラクタ表示（この例では［バイナリ一致］の文字列）を付するものである。なお、図において、符号１００２が付された一致行については白色に着色され、また１００３は相違部分の色見本、１００４は一致部分の色見本である。
【００６４】
このような表示形態によれば、オペレータにとって可読性の高いソースプログラム上において、どのプログラム行が相違し、かつオブジェクトプログラム上においては一致していることを一目瞭然に把握させることができる。
【００６５】
図４に戻って、オブジェクトコードが一致（ステップ４０４「一致」）で、かつソースコードも一致（ステップ４０８「一致」）の場合には、ステップ４１０へ進んで、両制御プログラムは同一のものである旨を示す所定の表示形態による案内表示（例えば、「一致」の文字）を行う。
【００６６】
以上説明した実施形態によれば、対象となるＰＬＣからオブジェクトプログラムに相当するオブジェクトコード列とソースプログラムに相当するソースコード列及び変数定義をアップロードする手段（ステップ４０２，４０３）と、対象となるＰＬＣのものとして、当該開発支援装置側が保有する制御プログラム（例えば、ＨＤＤ１０４に格納）から、オブジェクトプログラムに相当するオブジェクトコード列とソースプログラムに相当するソースコード列及び変数定義を読み出す読出手段と、ＰＬＣ側のオブジェクトコード列と開発支援装置側のオブジェクトコード列とを照合する第１の照合手段（ステップ４０４）と、ＰＬＣ側のソースコード列と開発支援装置側のソースコード列とを照合する第２の照合手段（ステップ４０５又は４０８）と、第１の照合手段の照合結果と第２の照合手段の照合結果との組み合わせにより定義される４つの場合分けのそれぞれ毎に、所定の表示形態による案内表示を行う表示制御手段（ステップ４０６，４０７，４０９，４１０）とを具備するものであるから、変数プログラミングが採用される場合にあっても、当該開発支援装置上の制御プログラムとＰＬＣに格納された制御プログラムとの間における関係をより詳細に分析して、その結果をユーザに対して分かり易く通知することができ、ことに、ＰＬＣ制御プログラムの照合を行う場合において、ソースコードとオブジェクトコードとを同時に照合することによって、単なるデータの比較だけでは判別が困難であるＰＬＣ制御動作の一致・不一致を確実に把握することが可能となる。
【産業上の利用可能性】
【００６７】
本発明によれば、変数プログラミングが採用される場合にあっても、当該開発支援装置上の制御プログラムとＰＬＣに格納された制御プログラムとの間における関係をより詳細に分析して、その結果をユーザに対して判りやすく通知することが可能なＰＬＣの制御プログラム開発支援装置を提供することができる。
【図面の簡単な説明】
【００６８】
【図１】本発明が適用される制御プログラム開発支援装置の電気的ハードウェア構成図である。
【図２】本発明に係る制御プログラム開発支援装置の対象となるＰＬＣのハードウェア構成図である。
【図３】本発明に関して取り扱われるソースコード、変数定義、オブジェクトコードの相互関係を示す説明図である。
【図４】本発明に係る制御プログラム開発支援装置のソフトウェア構成を示すフローチャートである。
【図５】支援装置側とＰＬＣ装置側とでソースコードとオブジェクトコードとを照合した結果の場合分けを表にして示す説明図である。
【図６】ファンクションブロックに相当するソースプログラムとこれに対応する表示シンボルとの関係を示す説明図である。
【図７】アドレスの自動割付機能によってオブジェクトコードが不一致でソースコードが一致する場合の説明図である。
【図８】オブジェクトコードが不一致でソースコードが一致する場合の案内表示例を示す説明図である。
【図９】ユーザの各種変更等によってオブジェクトコードが一致でソースコードが不一致となる場合の説明図である。
【図１０】オブジェクトコードが一致でソースコードが不一致となる場合の案内表示例を示す説明図である。
【図１１】アドレスプログラミングの一例を示す説明図である。
【図１２】変数プログラミングの一例を示す説明図である。
【図１３】ファンクションブロックを使用したプログラミングの一例を示す説明図である。
【符号の説明】
【００６９】
１    制御プログラム開発支援装置
２    ＰＬＣ
１１  ソースコード
１２  変数定義
１３  コンパイラ
１４  オブジェクトコード
２１  ソースコードメモリ
２２  オブジェクトコードメモリ
２３  変数定義メモリ
７１ａ，７１ｂ    不一致箇所
７２ａ，７２ｂ    不一致箇所
７３ａ，７３ｂ    不一致箇所
７５ａ，７５ｂ    不一致箇所
８１    行識別表示
９１ａ，９１ｂ    不一致箇所
９２ａ，９２ｂ    一致箇所
１０１    表示部
１０２    入力部
１０３    ＲＡＭ
１０４    ＨＤＤ
１０５    ＣＰＵ
１０６    通信Ｉ／Ｆ
２０１    Ｉ／Ｏメモリ
２０２    ＣＰＵ
２０３    通信Ｉ／Ｆ
２０４    オブジェクトコードメモリ
２０５    ソースコードメモリ
２０６    変数定義メモリ
１００１  行識別表示
１００３  相違部分の色見本
１００４  一致部分の色見本
１００５，１００６  同一である旨を示すキャラクタ表示
【図１】
2008276525.tif 000003
【図２】
2008276525.tif 000004
【図３】
2008276525.tif 000005
【図４】
2008276525.tif 000006
【図５】
2008276525.tif 000007
【図６】
2008276525.tif 000008
【図７】
2008276525.tif 000009
【図８】
2008276525.tif 000010
【図９】
2008276525.tif 000011
【図１０】
2008276525.tif 000012
【図１１】
2008276525.tif 000013
【図１２】
2008276525.tif 000014
【図１３】
2008276525.tif 000015