(57)【要約】【課題】あるプログラムモジュール内に使用されているメモリが他のプログラムモジュールでも使用されているかどうかを一目で理解できるような表示を提供できる制御プログラム開発支援装置を提供すること。【解決手段】複数のプログラムモジュールで構成される制御プログラムを解析する制御プログラム開発支援装置において、制御プログラムを読み出し、使用されているメモリアドレスのプログラムモジュール間での重複使用状況を解析する解析手段と、解析手段で解析した結果を表示する解析結果表示手段とを備え、プログラムモジュール毎に他のプログラムモジュールとの使用メモリアドレスの重複使用状況を表示可能とする。【選択図】図９
2006294011.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムモジュールで構成される制御プログラムを解析する制御プログラム開発支援装置において、
制御プログラムを読み出し、使用されているメモリアドレスのプログラムモジュール間での重複使用状況を解析する解析手段と、
解析手段で解析した結果を表示する解析結果表示手段とを備え、
プログラムモジュール毎に他のプログラムモジュールとの使用メモリアドレスの重複使用状況を表示可能とすることを特徴とする制御プログラム開発支援装置。
【請求項２】
解析手段は、制御プログラムが複数のＰＬＣの制御プログラムから構成されているかどうかを解析し、
解析結果表示手段は、解析手段で制御プログラムが複数のＰＬＣの制御プログラムから構成されていると解析された場合は、プログラムモジュールをＰＬＣごとにグループ化して使用メモリアドレスの重複使用状況を表示する、ことを特徴とする請求項１に記載の制御プログラム開発支援装置。
【請求項３】
解析結果表示手段は、プログラムモジュール毎に当該プログラムモジュール内で使用されているメモリアドレスの内、他のプログラムモジュールでも重複使用されている場合は、その重複使用しているプログラムモジュール名と対応させて使用メモリアドレスの重複使用状況を表示する、ことを特徴とする請求項１に記載の制御プログラム開発支援装置。
【請求項４】
解析手段は、制御プログラムを構成するプログラムモジュールに階層構造があるかどうかを解析し、階層構造があると解析された場合は、階層構造と使用メモリアドレスの重複使用状況に基づいて当該プログラムモジュールの使用メモリアドレスの重複使用度合いを演算し、・解析結果表示手段は、解析手段で演算された重複使用度合いを表示することを特徴とする請求項１に記載の制御プログラム開発支援装置。
【請求項５】
コンピュータを、
複数のプログラムモジュールで構成される制御プログラムを読み出し、使用されているメモリアドレスのプログラムモジュール間での重複使用状況を解析する解析手段と、
解析手段で解析した結果を表示する解析結果表示手段とを備え、
プログラムモジュール毎に他のプログラムモジュールとの使用メモリアドレスの重複使用状況を表示可能とする制御プログラム開発支援装置、
として機能させるためのコンピュータプログラム。
【請求項６】
解析手段は、制御プログラムが複数のＰＬＣの制御プログラムから構成されているかどうかを解析し、
解析結果表示手段は、解析手段で制御プログラムが複数のＰＬＣの制御プログラムから構成されていると解析された場合は、プログラムモジュールをＰＬＣごとにグループ化して使用メモリアドレスの重複使用状況を表示する、ことを特徴とする請求項５に記載のコンピュータプログラム。
【請求項７】
解析結果表示手段は、プログラムモジュール毎に当該プログラムモジュール内で使用されているメモリアドレスの内、他のプログラムモジュールでも重複使用されている場合は、その重複使用しているプログラムモジュール名と対応させて使用メモリアドレスの重複使用状況を表示する、ことを特徴とする請求項５に記載のコンピュータプログラム。
【請求項８】
解析手段は、制御プログラムを構成するプログラムモジュールに階層構造があるかどうかを解析し、階層構造があると解析された場合は、階層構造と使用メモリアドレスの重複使用状況に基づいて当該プログラムモジュールの使用メモリアドレスの重複使用度合いを演算し、・解析結果表示手段は、解析手段で演算された重複使用度合いを表示することを特徴とする請求項５に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブル・コントローラ（以下、ＰＬＣと言う）の制御プログラム（ユーザプログラム）を開発する場合等に好適な制御プログラム開発支援装置に関するものである。
【背景技術】
【０００２】
ＰＬＣで実行される制御プログラム（ユーザプログラム）の作成を支援するものとして制御プログラム開発支援装置（以下、開発支援装置）が知られている。この開発支援装置を使ってユーザプログラムを作成する際には、既存プログラムの流用がしばしば行なわれる。
【０００３】
通常、ユーザプログラムは、複数のプログラムモジュールから構成されており、異なるプログラムモジュール間で共通に参照されるメモリアドレスが存在する。このように異なるプログラムモジュール間で共通に参照されるメモリアドレスが存在する場合は、そのプログラムモジュールを流用する際は注意が必要となる。これを怠ると、予期せぬ誤動作の原因となる。
【０００４】
あるメモリアドレスがユーザプログラム内のどこに使用されているか検索するためのものとしては、クロスリファレンスと称される参照テーブルが知られている。なお、クロスリファレンスを利用する検索については、各種の公知技術が知られている（例えば、特許文献１参照）。
【０００５】
クロスリファレンス表示例が図１０に示されている。この例では、メモリアドレス「Ａ２００．１１」がプログラム名「新規プログラム１」なるプログラムを構成するセクション名「セクション１」なるプログラムモジュール内で使用されていることを示している。さらに、そのプログラムモジュール内の使用場所として、プログラムアドレスが「０」であり、命令後「ＬＤ」のオペランドとして使用されていることを表している。
【特許文献１】特開２００３−２４３２６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のクロスリファレンス表示は、あるメモリアドレスが使用されているプログラムモジュールの名称やプログラムモジュール内での使用場所等を当該メモリアドレスを行の先頭として同一行に並べて表示するというメモリアドレスの中心の表示となっている。したがって、あるプログラムモジュール内に使用されているメモリアドレスが他のプログラムモジュールでも使用されているかどうかを一目で理解できるものではなかったため、使い勝手が悪いと言う問題点が指摘されている。また、従来より提供されている、複数のＰＬＣ間でデータの共有を行う機能（データリンク機能と呼ぶ）を使用しているＰＬＣのユーザプログラムを流用する場合は、他のＰＬＣとデータ共有しているメモリエリアのメモリアドレスにも注意が必要であるにもかかわらず、従来のクロスリファレンス表示では表示されないという問題も指摘されている。
【０００７】
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、あるプログラムモジュール内に使用されているメモリアドレスが他のプログラムモジュールでも使用されているかどうかを一目で理解できるような表示を提供できる制御プログラム開発支援装置を提供することにある。
【課題を解決するための手段】
【０００８】
この発明の制御プログラム開発支援装置は、複数のプログラムモジュールで構成される制御プログラムを解析する制御プログラム開発支援装置において、制御プログラムを読み出し、使用されているメモリアドレスのプログラムモジュール間での重複使用状況を解析する解析手段と、解析手段で解析した結果を表示する解析結果表示手段とを備え、プログラムモジュール毎に他のプログラムモジュールとの使用メモリアドレスの重複使用状況を表示可能としたものである。
【０００９】
このような構成によれば、あるプログラムモジュール内で使用されているメモリアドレスが他のプログラムモジュール内でも使用されているかどうかを一目で理解できるような表示をユーザに対して行うことができる。
【００１０】
この発明の好ましい実施の形態においては、解析手段は、制御プログラムが複数のＰＬＣの制御プログラムから構成されているかどうかを解析し、解析結果表示手段は、解析手段で制御プログラムが複数のＰＬＣの制御プログラムから構成されていると解析された場合は、プログラムモジュールをＰＬＣごとにグループ化して使用メモリアドレスの重複使用状況を表示するものであってもよい。
【００１１】
このような構成によれば、あるＰＬＣ内で使用されているメモリアドレスが他のＰＬＣ内でも使用されているかどうかを一目で理解できるような表示をユーザに対して行うことができる。
【００１２】
この発明の好ましい実施の形態においては、解析結果表示手段は、プログラムモジュール毎に当該プログラムモジュール内で使用されているメモリアドレスの内、他のプログラムモジュールでも重複使用されている場合は、その重複使用しているプログラムモジュール名と対応させて使用メモリアドレスの重複使用状況を表示するのであってもよい。
【００１３】
このような構成によれば、あるプログラムモジュール内で使用されているメモリアドレスがどのプログラムモジュール内でも使用されているかどうかを一目で理解できるような表示をユーザに対して行うことができる。
【００１４】
この発明の好ましい実施の形態においては、解析手段は、制御プログラムを構成するプログラムモジュールに階層構造があるかどうかを解析し、階層構造があると解析された場合は、階層構造と使用メモリアドレスの重複使用状況に基づいて当該プログラムモジュールの使用メモリアドレスの重複使用度合いを演算し、解析結果表示手段は、解析手段で演算された重複使用度合いを表示するのであってもよい。
【００１５】
このような構成によれば、ある階層で使用されているメモリアドレスが他の階層でも使用されているかどうかを一目で理解できるような表示をユーザに対して行うことができる。
【００１６】
なお、別の一面から見た本発明は、上記の各装置の機能を実現するためのコンピュータプログラムとしても把握することができる。
【発明の効果】
【００１７】
本発明によれば、あるプログラムモジュール内に使用されているメモリアドレスが他のプログラムモジュールでも使用されているかどうかを一目で理解できるような表示をユーザに対して提供することができる。
【発明を実施するための最良の形態】
【００１８】
以下に、この発明の好適な実施の一形態を添付図面を参照しながら詳細に説明する。
【００１９】
本発明の制御プログラム開発支援装置は、例えばパソコンに所定のアプリケーションソフトをインストールすることによって実現することができる。ここで、パソコンのハードウェア構成については種々の文献において周知であるから、この明細書においては詳細な説明は省略する。
【００２０】
タスク／セクション／複数ＰＬＣ間でのメモリ使用状況の説明図が図１に示されている。図１では、ＰＬＣのユーザプログラムは複数の「タスク」と呼ばれるプログラム単位で構成され、各タスクは、複数の「セクション」と呼ばれるプログラムモジュールで構成される例を示している。この例の場合は、プログラムモジュールにユーザプログラム／タスク／セクションの階層構造があると見ることができる。また、ＰＬＣ内にはひとつのユーザプログラムのみ存在する場合で、かつ、複数のＰＬＣで制御システムが構築される場合は、ＰＬＣ／タスク／セクションの階層構造があると見ることができる。一般的にＰＬＣのユーザプログラムは、その制御対象や機能の違いによって、複数のプログラム（タスク，セクション）に分割して作成することがしばしば行われる。また、これら複数のプログラム（タスク，セクション）は同一のメモリにアクセスすることもしばしば行われる。さらに、データリンク機能は、リンクするエリアを定義するパラメータによって、プログラムレスでＰＬＣ間のメモリを共有することができる。
【００２１】
このデータリンク機能について図１１および図１２を用いて説明する。図１１にはデータリンク機能の概念を説明する図が示されている。この例では、３つのノード（ノード１〜３）間でのデータリンク機能によるデータ共有を示している。ここで、ノードは、ＰＬＣに相当する。ノード１のメモリアドレスＤＭ０から１００ワード分のデータがノード２とノード３に送信される。また、ノード２のＤＭ１００から１００ワード分のデータがノード１とノード３に送信される。さらに、ノード３のＤＭ２００から１５０ワード分のデータがノード１とノード２に送信される。以上は各ノードの他ノードへの送信についての説明である。
【００２２】
次にノード１でのデータ受信について説明する。この例では、ノード１は、ノード２が送信したデータをＤＭ１００から格納し、ノード３が送信したデータをＤＭ２００から格納する。各ノードでの送信データや受信データに関する情報はデータリンクテーブルと呼ばれるテーブルによって管理されている。図１２にデータリンクテーブルの例が示されている。この例は、図１１のノード１のデータリンクテーブルを示したものである。ノード番号欄はデータリンク対象のノードを示しており、自ノードリンク開始メモリアドレスは自ノード（この例ではノード１）の送受信開始メモリアドレスを示しており、リンクデータサイズは送受信データサイズを示しており、他ノードリンク開始メモリアドレスは他ノードの送信開始メモリアドレスを示している。このデータリンクテーブルを参照することによりノード１は、ＤＭ０から１００ワード分のデータを他ノードへ送信し、ノード２から受信したデータ（ノード２のＤＭ１００から１００ワード分のデータ）をＤＭ１００から格納し、ノード３から受信したデータ（ノード３のＤＭ２００からの１５０ワード分のデータ）をＤＭ２００から格納すれば良いことがわかる。このようにＰＬＣのユーザプログラムでは、複数プログラム間や複数のＰＬＣ間でメモリ共有が可能となっている。
【００２３】
そして本発明の制御プログラム開発支援装置にあっては、これら複数プログラム／複数ＰＬＣ間のメモリのリンク状況をユーザに対して的確に表示させることができる。
【００２４】
図１には、複数プログラム／複数ＰＬＣ間で同一メモリを使用している例が示されている。この例にあっては、ＰＬＣ１とＰＬＣ２とからなる２台のＰＬＣが存在する。
【００２５】
ＰＬＣ１のユーザプログラムには、タスク１とタスク２とからなる２つのタスクが含まれている。タスク１内には、セクション１、セクション２、セクション３からなる３個のセクションが含まれている。同様にして、タスク２内にも、セクション４とセクション５とからなる２個のセクションが含まれている。
【００２６】
一方、ＰＬＣ１のメモリ内には、ユーザプログラムを構成する命令語を介してアクセス可能なメモリエリアとして（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）で示される４つのエリアが設けられている。そのうち、エリア（Ａ）はタスク１内のセクション１からのみアクセスされるエリアとされる。また、エリア（Ｂ）はタスク１内のセクション２とセクション３とから共通にアクセスされるエリアとされる。また、エリア（Ｃ）はタスク１内のセクション３とタスク２内のセクション４とから共通にアクセスされるエリアとされる。さらに、エリア（Ｄ）はＰＬＣ１のプログラム内のタスク２のセクション５からアクセスされると共にＰＬＣ２のメモリの領域（Ｄ）とデータリンクで共用されるエリアともされている。
【００２７】
換言すれば、ＰＬＣ１のメモリ内には、単独セクションで使用しているメモリ（Ａ）、単独タスクの複数セクションで使用しているメモリ（Ｂ）、複数タスクのセクションで使用しているメモリ（Ｃ）、複数ＰＬＣ間で使用しているメモリ（Ｄ）が存在する。
【００２８】
このように、ＰＬＣのメモリの一部を様々なプログラム部分で共用しているような複雑なシステムから、プログラムの一部を流用したりあるいは改造を行おうとすると、思わぬ誤動作の原因となる。
【００２９】
そこで、このような複雑なシステムから改造や流用を行うに際しては、メモリ内の各部の使用状況を分析し、共用関係を正確に把握せねばならない。
【００３０】
先に述べた従来のクロスリファレンス機能は、単独セクションで使用しているメモリアドレス、単独タスクの複数セクションで使用しているメモリアドレス、複数タスクのセクションで使用しているメモリアドレス、複数ＰＬＣ間で使用しているメモリアドレスなどを分析把握するためには役立つものの、そのようなメモリ分離（使用状況）をもとに改造・流用の単位となる各タスク／セクション間のメモリ共有状況（タスク／セクションの属性）を解析することはできない。
【００３１】
すなわち、他セクションとメモリ共有がないセクション（例えば、セクション１）、自タスク内の他セクションとメモリ共有のあるセクション（例えば、セクション２）、他タスクとメモリ共有のあるセクション（例えば、セクション３／セクション４）、他ＰＬＣとメモリ共有のあるセクション（例えば、セクション５）を解析することは、従来のクロスリファレンス機能で実現することができない。
【００３２】
これに対して、以下に述べる本発明装置にあっては、それらのメモリ共用関係を的確に分析し、ユーザに対し分かりやすく表示することができる。本発明と関連して、パソコンに組み込まれるタスク／セクション間のメモリ使用状況の解析処理のフローチャートが図２に示されている。
【００３３】
同図において処理が開始されると、まずステップ２０１においては、ユーザプログラム内のセクション毎のメモリ使用状況の解析が行われる。すなわち、図１に示された先の例によれば、ＰＬＣ１内のセクション１〜５毎のメモリ使用状況が解析される。
【００３４】
続くステップ２０２では、別途用意されたデータリンクテーブルに基づいて、他ＰＬＣ間のメモリ共有状況が解析される。すなわち、図１の例であれば、ＰＬＣ１のメモリ内のエリア（Ｄ）とＰＬＣ２のメモリ内の領域（Ｄ）が共有状況にあることが解析される。このデータリンクテーブルに基づく他ＰＬＣ間のメモリ共有状況の解析の詳細を図１２の例で説明する。図１２の例では、自ノードリンク開始メモリアドレス欄とリンクデータサイズ欄の内容を読み出すことで他のＰＬＣと共有しているメモリアドレスが判明する。この例では、メモリアドレスＤＭ０から１００ワード分（ＤＭ０〜９９）、ＤＭ１００から１００ワード分（ＤＭ１００〜ＤＭ１９９）、ＤＭ２００から１５０ワード分（ＤＭ２００〜ＤＭ３４９）のメモリアドレスが他のＰＬＣと共有していることが判明する。
【００３５】
以上の処理が、全セクション（セクション１〜セクション５）について繰り返される（ステップ２０３ＮＯ）。その間に、すべてのセクション（セクション１〜セクション５）について解析処理が完了すると（ステップ２０３ＹＥＳ）、ステップ２０４では、セクション間で同じメモリを使用している箇所の抽出が行われる。すなわち、図１の例によれば、エリア（Ｂ），（Ｃ）に関連するセクションの抽出が行われる。
【００３６】
続くステップ２０５では、セクションの属性の分類が行われる。図１の例であれば、それらのセクションがどのタスクまたはどのＰＬＣに対応するかの分類などが行われる。
【００３７】
続くステップ２０６では、セクション単位メモリ使用一覧表が作成され、これがパソコンの画面に表示される。
【００３８】
次に、具体的なユーザプログラムを実例として挙げ、これに基づいて図２に示される処理を施した場合における分析結果ならびに表示態様について説明する。
【００３９】
いま仮に、図３に示されるようなユーザプログラムの構造が存在すると想定する。このユーザプログラムは、ＰＬＣ１のユーザプログラムを表しており、他のＰＬＣとのメモリ共有がない場合の例を示したものである。このＰＬＣ１のユーザプログラム内には、タスク１とタスク２とからなる２つのタスクが存在する。それらのタスク１，２内にはそれぞれ１個のセクション（セクション１）が存在する。
【００４０】
ＰＬＣ１のタスク１／セクション１ではＤＭ０／ＤＭ１／ＤＭ２で表されるメモリアドレスを使用している。また、ＰＬＣ１のタスク２／セクション１ではＤＭ１０／ＥＭ０／ＷＲ１０で表されるメモリアドレスを使用している。この例で「ＤＭ」、「ＥＭ」、「ＷＲ」は、メモリエリアの種別を表す文字列である。「ＤＭ」、「ＥＭ」、「ＷＲ」に続く数字は、当該メモリエリア種別内でのアドレスを表している。このようにメモリエリアの種別を表す文字列と、そのメモリエリア種別内でのアドレスを表す数字との組み合わせでメモリアドレスを表現することがある。
【００４１】
パソコンのＲＡＭ内に保存されたデータの説明図が図４に示されている。図３に示されるユーザプログラムの構造は、図４に示されるように、パソコンのＲＡＭ内にデータとして保存される。一例として、ポインタＰが指し示すデータをみると、ＲＡＭアドレス１にはメモリアドレス「ＤＭ０」とタスク１／セクション１を識別するデータ「１」が保存されている。図４の例では、タスク１／セクション１、タスク２／セクション１を識別するデータとしてそれぞれ「１」、「２」が対応している。
【００４２】
解析ツールの処理のフローチャートが図５に示されている。図４に示されるデータ構造を前提として処理が開始されると、ステップ５０１ではタスク／セクションＮｏは「１」に初期設定される。
【００４３】
続くステップ５０２では、ポインタＰにタスク／セクションＮｏのＲＡＭアドレスを入力する。続くステップ５０３では、ＮｏカウンタＮｕｍの値を「１」に初期設定する。
【００４４】
以後、ポインタＰおよびカウンタＮｕｍをプラス１更新しつつ、メモリアドレスが０となるまでメモリアドレスの取得処理（ステップ５０４）、メモリアドレスに対応するＰＬＣのタスク・セクションＮｏ、カウントＮｏ．Ｎｕｍの抽出処理（ステップ５０５）が繰り返し実行される。
【００４５】
その間に、メモリアドレスが０と判定されると（ステップ５０７ＹＥＳ）、タスク／セクションＮｏをプラス１更新しては（ステップ５０８）、以上の動作（ステップ５０２〜５０８）が繰り返され、登録されているタスク／セクションＮｏ数（図４の例では、２となる）分の繰り返しの完了（ステップ５０９ＹＥＳ）を待って処理を終了する。
【００４６】
以上図５に示される処理が実行されて、プログラムが解析されると、下記のようなデータ列が得られる。
ＰＬＣ１［１］［１］＝ＤＭ０
ＰＬＣ１［１］［２］＝ＤＭ１
ＰＬＣ１［１］［３］＝ＤＭ２
ＰＬＣ１［２］［１］＝ＤＭ１０
ＰＬＣ１［２］［２］＝ＤＭ０
ＰＬＣ１［２］［３］＝ＷＲ１０
【００４７】
なお、それらのデータのフォーマットは、ＰＬＣ１［タスク／セクションＮｏ］［登録数］とされている。
【００４８】
次に、以上得られたデータに基づく描画処理のフローチャートが図６に示されている。同図において処理が開始されると、ステップ６０１ではまず初期化処理（ｉ＝１，ｊ＝１）が実行される。
【００４９】
続くステップ６０２では、描画［ｉ］［ｊ］＝ＰＬＣ１［ｉ］［ｊ］の処理が行われる。続くステップ６０３では、ｊ＝ｊ＋１の処理が行われる。
【００５０】
続くステップ６０４では、ＰＬＣ１［ｉ］［ｊ］＝０の判定が行われる。ここで、判定結果が０の場合（ステップ６０４ＹＥＳ）、ステップ６０５へ進むのに対し、判定結果が０でない場合には（ステップ６０４ＮＯ）、ステップ６０２へと戻る。
【００５１】
ステップ６０５では、ｊ＝１，ｉ＝ｉ＋１の処理が行われる。続くステップ６０６では、ＰＬＣ１［ｉ］［ｊ］＝０の判定が行われる。ここで判定結果が０であれば（ステップ６０６ＹＥＳ）、処理は終了するのに対し、０でない場合には（ステップ６０６ＮＯ）、処理はステップ６０２へと戻る。その後以上の動作が繰り返される。
【００５２】
図６に示される描画処理の実行結果として得られた解析結果の表示例の説明図が図７に示されている。図から明らかなように、この表示例によれば、タスク／セクションＮｏ毎に使用しているメモリが一目でわかる。図７の例では、タスク／セクションＮｏ欄を番号表示としているが、「１」に対応する「タスク１／セクション１」、「２」に対応する「タスク２／セクション１」の文字列を表示しても良い。本発明のより具体的な実施例を以下に説明する。この場合のメモリ使用例が図８に示されている。
【００５３】
図８に示されるように、この例にあっては、ＰＬＣ１とＰＬＣ２とからなる２台のＰＬＣを有する。ＰＬＣ１のユーザプログラムには、タスク名称が制御Ａと制御Ｂの２個のタスクが含まれている。制御Ａのタスクには、セクション名称が制御Ａ＿１、制御Ａ＿２、制御Ａ＿３、制御Ａ＿４の４個のセクションが含まれている。制御Ｂのタスクには、セクション名称が制御Ｂ＿１と制御Ｂ＿２の２個のセクションが含まれている。
【００５４】
一方、ＰＬＣ１のメモリには、入出力リレー領域、内部補助リレー領域、保持リレー領域、特殊補助リレー領域、データメモリ領域、拡張データメモリなどのメモリエリアが設けられている。
【００５５】
入出力リレー領域は、制御Ａ＿１（セクション）により使用されている。内部補助リレー領域は、制御Ａ＿２（セクション）と制御Ａ＿３（セクション）とにより共用されている。特殊補助リレー領域は、制御Ａ＿４（セクション）と制御Ｂ＿１（セクション）とにより共用されている。拡張データメモリは、制御Ｂ＿２（セクション）により使用されている。
【００５６】
一方、ＰＬＣ２のユーザプログラムには、タスク名称が制御ａの１個のタスクが含まれており、この制御ａのタスク内にはセクション名称が制御ａ＿１の１個のセクションが含まれている。
【００５７】
そして、ＰＬＣ２のメモリ内の拡張データメモリは、制御ａ＿１（セクション）により使用される。同時に、ＰＬＣ１のメモリの拡張データメモリとＰＬＣ２のメモリの拡張データメモリとはデータリンク機能によって共用されている。
【００５８】
換言すれば、図８に示されるシステムは、ＰＬＣ１とＰＬＣ２とからなる２つのＰＬＣを有し、ＰＬＣ１のプログラムは２つのタスク（制御Ａ，制御Ｂ）と６つのセクション（制御Ａ＿１，制御Ａ＿２，制御Ａ＿３，制御Ａ＿４，制御Ｂ＿１，制御Ｂ＿２）から構成される。また、ＰＬＣ２のプログラムは１つのタスク（制御ａ）と１つのセクション（制御ａ＿１）から構成される。
【００５９】
本発明に係る分析処理を図８に示されるシステム構成に適用した際に得られた解析結果の表示例が図９に示されている。
【００６０】
同図から明らかなように、この表示例にあっては、横長長方形状の領域は、左右方向３列に分割され、各列には順に「解析対象のセクション」、「リンク先のセクション」、「リンク数」が割り付けられている。
【００６１】
さらに、それら３列のそれぞれは、さらに左右方向４列に分割され、各列には順に「ＰＬＣ」、「タスク」、「セクション」、「セクション属性」が割り付けられている。
【００６２】
一方、ＰＬＣに割り当てられた上下方向へ延びる列は、ＰＬＣ毎に上下方向に分割される。また、タスクに割り付けられた上下方向の列は、各ＰＬＣ毎にそれに含まれるタスク名称に割り当てられる。また、セクションに割り当てられた上下方向に延びる列は、タスク名称毎に個々のセクション名称に細別され、セクション属性に割り当てられた上下方向へ延びる列は、各セクション毎に対応してセクション属性が記述される。
【００６３】
ここで、セクション属性「１」は、他セクションとメモリ共有がないセクションとされ、セクション属性「２」は自タスク内の他セクションとメモリ共有のあるセクションとされ、セクション属性「３」は他タスクとメモリ共有があるセクションとされ、セクション属性「４」は他ＰＬＣとメモリ共有のあるセクションとされる。
【００６４】
このような解析結果の表示例であれば、例えば、セクション制御Ａ＿２は、自タスク内のセクション制御Ａ＿３とメモリ共有があるので、セクション属性は「２」（自タスク内の他セクションとメモリ共有のあるセクション）となり、そのメモリ共有が内部補助リレー１０ＣＨ分であることが表示される。
【００６５】
この実施例によれば、あるプログラムモジュール内で使用されているメモリが他のプログラムモジュール内でも使用されているかどうかを一目瞭然に理解できるような表示をユーザに対して行うことができる。
【産業上の利用可能性】
【００６６】
本発明によれば、あるプログラムモジュール内に使用されているメモリが他のプログラムモジュールでも使用されているかどうかを一目で理解できるような表示をユーザに対して提供することができる。
【図面の簡単な説明】
【００６７】
【図１】タスク／セクション／複数ＰＬＣ間のメモリ使用状況の説明図である。
【図２】タスク／セクション間のメモリ使用状況の解析処理のフローチャートである。
【図３】ユーザプログラムの構造の一例を示す説明図である。
【図４】パソコンのＲＡＭ内に保存されたデータの説明図である。
【図５】解析ツールの処理のフローチャートである。
【図６】描画処理のフローチャートである。
【図７】解析結果の表示例の説明図である。
【図８】メモリ使用の例を示す図である。
【図９】解析結果の表示例を示す図である。
【図１０】クロスリファレンス表示例を示す図である。
【図１１】データリンク機能の概念を説明する図である。
【図１２】データリンクテーブルの例を示す図である。
【符号の説明】
【００６８】
Ａ〜Ｄ  メモリ内の記憶エリア
【図１】
2006294011.tif 000003
【図２】
2006294011.tif 000004
【図３】
2006294011.tif 000005
【図４】
2006294011.tif 000006
【図５】
2006294011.tif 000007
【図６】
2006294011.tif 000008
【図７】
2006294011.tif 000009
【図８】
2006294011.tif 000010
【図９】
2006294011.tif 000011
【図１０】
2006294011.tif 000012
【図１１】
2006294011.tif 000013
【図１２】
2006294011.tif 000014