JP6692510B1 - 解析装置、方法、及びプログラム - Google Patents

解析装置、方法、及びプログラム Download PDF

Info

Publication number
JP6692510B1
JP6692510B1 JP2019572246A JP2019572246A JP6692510B1 JP 6692510 B1 JP6692510 B1 JP 6692510B1 JP 2019572246 A JP2019572246 A JP 2019572246A JP 2019572246 A JP2019572246 A JP 2019572246A JP 6692510 B1 JP6692510 B1 JP 6692510B1
Authority
JP
Japan
Prior art keywords
program
dependency
variable
graph
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019572246A
Other languages
English (en)
Other versions
JPWO2020255267A1 (ja
Inventor
伴彰 ▲高▼木
伴彰 ▲高▼木
天放 徐
天放 徐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6692510B1 publication Critical patent/JP6692510B1/ja
Publication of JPWO2020255267A1 publication Critical patent/JPWO2020255267A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Abstract

解析装置(100)は、プログラマブルロジックコントローラにリレー回路の機能を実現させるプログラム内の変数の依存関係を解析する。プログラムは、第1プログラムと、第1プログラムの実行を中断して割り込み処理を実行する第2プログラムとを含む。第1抽出部(110)は、第1プログラム内の変数の依存関係である第1依存関係と、第2プログラム内の変数の依存関係である第2依存関係とを抽出する。分割部(120)は、設定された条件に従って第1プログラムを少なくとも2つのブロックに分割する。第2抽出部(130)は、第1プログラムのブロック内で割り込みが発生した場合の、第2プログラム内の変数と第1プログラム内の変数との依存関係を、第2依存関係に追加して、第3依存関係を抽出する。統合部(140)は、第1依存関係と第3依存関係とを統合して、統合依存関係を示す情報である統合依存関係情報を生成する。

Description

本発明は、解析装置、方法、及びプログラムに関する。
生産システム、制御システム等において稼動するプログラマブルロジックコントローラは、制御プログラムを実行することにより、制御対象の機器を制御する。制御プログラムは、論理回路を記述するための言語であるラダーダイアグラムで記載されることがある。
プログラムの作成にはデバッグが欠かせないが、例えば、特許文献1には、ラダーダイアグラムで記載されたプログラムを効率的にデバッグするため、プログラム中の変数の依存関係を解析し、依存関係を示すグラフを表示するプログラム解析支援装置が開示されている。
特許第5138090号公報
しかし、プログラム実行中に割り込みが発生する場合、特許文献1に記載された方法ではプログラム中の変数の依存関係を抽出することができない。例えば、メインプログラムを実行中に、決められた条件が成立すると割り込みが発生するとする。割り込みが発生すると、メインプログラムの実行が中断され、割り込みプログラムが実行される。メインプログラムと割り込みプログラムとは、例えば、関連した処理を行うものであって、同じメモリ領域の値を使用するものであるとする。
割り込みが発生し、割り込みプログラムが実行されることにより、メモリ領域のある値が書き換えられた場合、再び、メインプログラムの実行が再開されたときに、メインプログラムの処理が、メモリ領域のある値が書き換えられていない場合と異なることがある。特許文献1に記載された方法では、割り込み処理について考慮しておらず、複数のプログラム中の変数の依存関係を解析することができない。
本発明は上記実情に鑑みてなされたものであり、割り込みが発生するプログラム中の変数の依存関係を解析することを目的とする。
上記目的を達成するため、本発明に係る解析装置は、ラダーダイアグラムで記載され、プログラマブルロジックコントローラにリレー回路の機能を実現させるプログラム内の変数の依存関係を解析する。プログラムは、第1プログラムと、第1プログラムの実行中に第1プログラムの実行を中断して割り込み処理を実行する第2プログラムとを含む。第1抽出手段は、第1プログラム内の変数の依存関係である第1依存関係と、第2プログラム内の変数の依存関係である第2依存関係を抽出する。分割手段は、設定された条件に従って第1プログラムを少なくとも2つのブロックに分割する。第2抽出手段は、第1プログラムのブロック内で割り込みが発生した場合の、第2プログラム内の変数と第1プログラム内の変数との依存関係を、第2依存関係に追加して、第3依存関係を抽出する。統合手段は、第1依存関係と第3依存関係とを統合して、統合依存関係を示す情報である統合依存関係情報を生成する。表示手段は、統合依存関係情報を表示する。
本発明に係る解析装置は、第1プログラム内の変数の依存関係である第1依存関係と、割り込み処理を実行する第2プログラム内の変数の依存関係である第2依存関係を抽出する。解析装置は、第1プログラムのブロック内で割り込みが発生した場合の、第2プログラム内の変数と第1プログラム内の変数との依存関係を、第2依存関係に追加して、第3依存関係を抽出する。解析装置は、第1依存関係と第3依存関係とを統合して、統合依存関係を示す情報である統合依存関係情報を生成する。このような構成を備えることで、割り込みが発生するプログラム中の変数の依存関係を解析することができる。
本発明の実施の形態に係る解析装置の機能構成を示すブロック図 実施の形態に係るメインプログラムの一例を示す図 実施の形態に係る割り込みプログラムの一例を示す図 実施の形態に係る解析装置のハードウェア構成を示す図 メインプログラム中で使用される変数の依存関係を示す図 割り込みプログラム中で使用される変数の依存関係を示す図 メインプログラムをブロックに分割した様子を示す図 メインプログラムの変数の依存関係を示すグラフにブロックの情報を付加した図 メインブロックをサブブロックに分割した様子を示す図 ブロックAにおいて割り込みが発生した場合の、割り込みプログラム中で使用される変数と、メインプログラム中で使用されるデバイスを示す変数との依存関係を示す図 さらにブロックBにおいて割り込みが発生した場合の、割り込みプログラム中で使用される変数と、メインプログラム中で使用される変数との依存関係を示す図 さらにブロックCにおいて割り込みが発生した場合の、割り込みプログラム中で使用される変数と、メインプログラム中で使用される変数との依存関係を示す図 割り込みが発生した場合の、メインプログラムの変数と割り込みプログラムの変数との依存関係を示す図 割り込みが発生した場合の、メインプログラムの変数と割り込みプログラムの変数との依存関係を示す統合グラフを表示する画面の一例を示す図 割り込み発生位置が指定された場合において、メインプログラムの変数と割り込みプログラムの変数との依存関係を示す統合グラフを表示する画面の例を示す図 割り込み発生位置が指定された場合において、メインプログラムの変数と割り込みプログラムの変数との依存関係を示す統合グラフを表示する画面の他の例を示す図 解析処理の流れを示すシーケンスチャート メインプログラムに割り込み禁止区間を設定した例を示す図 割り込み禁止区間が設定されている場合の、統合グラフを表示する画面の一例を示す図
(実施の形態)
以下、本発明の実施の形態に係る解析装置について、図面を参照しつつ詳細に説明する。
図1に示す解析装置100は、プログラマブルロジックコントローラが実行する制御プログラムを解析する。
プログラマブルロジックコントローラは、制御プログラムを実行して、制御対象の機器のオン/オフを制御する制御装置である。具体的には、プログラマブルロジックコントローラは、センサ、スイッチ等から入力されたオン/オフ信号(以下、入力信号)が示す「真」または「偽」の論理値を使用して、プログラムされている演算を実行する。プログラマブルロジックコントローラは、演算により得られた「真」または「偽」の論理値が示すオン/オフ信号(以下、出力信号)を接触器、モータ等の制御対象の機器に出力する。よって、制御対象の機器のオン/オフが制御される。このように、プログラマブルロジックコントローラが実行する制御プログラムはリレー回路の機能を実現するプログラムである。制御プログラムは、例えば、プログラマブルロジックコントローラの管理者が作成する。
制御プログラムは、ラダーダイアグラムで記載されることがある。ラダーダイアグラムは論理回路を記述するための言語であり、ラダーロジックと呼ばれることもある。ラダーダイアグラムで記載されたプログラムをラダープログラムあるいはラダーロジックプログラムと称することがある。
実施の形態において、解析装置100の解析対象は、ラダーダイアグラムで記載され、割り込みが発生する制御プログラムである。図2A及び2Bに、ラダーダイアグラムで記載された制御プログラムの一例を示す。図2Aは、メインプログラムP1であり、図2Bは、割り込みプログラムP2である。
プログラマブルロジックコントローラは、設定された周期が示すタイミングでメインプログラムP1の実行を開始し、プログラムの最後の命令であるEND命令を実行した後、メインプログラムP1の実行を終了する。次の周期で、プログラマブルロジックコントローラは再びメインプログラムP1の実行を開始する。
さらに、プログラマブルロジックコントローラは、割り込みプログラムP2の実行条件として予め設定された条件が満たされた場合に、割り込みプログラムP2を実行する。例えば、プログラマブルロジックコントローラの特定のメモリ領域に決められた値が書き込まれると、プログラマブルロジックコントローラは割り込みプログラムP2を実行する。割り込みプログラムP2が実行されると、メインプログラムP1の処理は一旦中断される。割り込みプログラムP2の一連の処理が終了すると、再度メインプログラムP1の処理が再開される。
割り込みプログラムP2が実行されるタイミングは不定であるため、メインプログラムP1の実行中の割り込みの発生を予測することは難しい。このため、解析装置100は、メインプログラムP1をいくつかのブロックに分割し、割り込みが発生する位置をブロック単位で予測した場合のプログラム中の変数の依存関係を抽出する。メインプログラムP1は、本発明の第1プログラムの一例である。割り込みプログラムP2は、本発明の第2プログラムの一例である。
以下、図2A、図2Bを参照しながら、メインプログラムP1において実行される命令と割り込みプログラムP2において実行される命令との例を説明する。ラダーロジックダイアグラムで記載されたプログラムは、リレー回路を論理的に記述したものであるので、以下の説明においては、リレー回路と同様の呼称を使用することがある。
メインプログラムP1及び割り込みプログラムP2の実行の際には、デバイスメモリと呼ばれる記憶領域に格納されている値が使用される。デバイスメモリには、例えば、センサ、スイッチ等から供給される入力信号を示す「真」または「偽」の論理値が格納される。以下、デバイスメモリを単にデバイスということがある。
センサ、スイッチ等から供給される入力信号は、例えば、デバイスメモリの「X」の領域に格納される。符号に付された番号は、デバイスメモリの「X」の領域におけるアドレスに相当する。
また、メインプログラムP1及び割り込みプログラムP2の実行の際には、内部リレーが示す論理値が使用されることもある。内部リレーは、プログラム上での仮想的なリレーである。内部リレーが示す論理値は、例えば、デバイスメモリの「M」の領域に格納される。符号に付された番号は、デバイスメモリの「M」の領域におけるアドレスに相当する。なお、内部リレーを補助リレーと称することもある。
プログラマブルロジックコントローラが、接触器、モータ等の制御対象の機器のオン/オフを制御するために、入力された信号を使用した演算を実行して出力した「真」または「偽」の論理値も、デバイスメモリに格納される。プログラマブルロジックコントローラが出力した論理値は、例えば、デバイスメモリの「Y」の領域に格納される。符号に付された番号は、デバイスメモリの「Y」の領域におけるアドレスに相当する。例えば、メインプログラムP1において「Y0」と記載している出力コイルに対応する命令の対象であるデバイスを示す変数に「真」がセットされると、「Y0」に対応する機器へオン信号が供給される。
メインプログラムP1及び割り込みプログラムP2において、入力接点に対応する命令の対象であるデバイスの値が「真」であるときに、その入力接点がオンするものとする。入力接点がオンすると、出力コイルに対応する命令の対象であるデバイスを示す変数に「真」の値が保持されるものとする。
例えば、入力接点に「M2」と記載されている場合、デバイスメモリの「M2」の領域に格納されている値が「真」であるときに、その入力接点がオンする。よって、その入力接点に接続されている出力コイルに対応する命令の対象であるデバイスを示す変数に「真」の値が保持されるものとする。以下、入力接点を単に接点と呼ぶことがある。出力コイルを単にコイルと呼ぶことがある。
図2A〜2Bにおいて、紙面に向かって左側の縦の線の横に括弧書きで記載している番号は、命令の実行順序を示すステップ番号である。
プログラマブルロジックコントローラは、設定された周期でメインプログラムP1の実行を開始し、ST1から、一番上の行から下に向かって命令を順次実行する。各行において、入力接点がオンしない場合には、その行の命令は実行されない。ラダーダイアグラムで記載されたプログラムにおいては、すべてのステップ番号が記載されていないため、図2Aには、各命令の実行順序を表す符号を追記している。以下、図2A、図2Bに追記した符号を使用して説明する。メインプログラムP1の命令はST1、ST2、…、ST22の順で実行される。同様に、図2Bには、各命令の実行順序を表す符号を追記している。割り込みプログラムP2の命令は、ST51、ST52、…、ST59の順で実行される。
図2Aに示すメインプログラムP1を実行することにより実現されるリレー回路の動作の一部を説明する。まず、ST1の命令が実行される。ST1の命令の実行により、デバイスX1の値がロードされる。即ち、デバイスX1の値が読み出される。デバイスX1の値が「真」である場合、ST1の入力接点がオンしたことになり、ST2の命令が実行される。ST2の命令の実行により、デバイスM11に「真」が保持される。次に、ST3の命令が実行される。ST3の命令の実行により、デバイスM2の値がロードされる。デバイスM2の値が「真」である場合、ST3の入力接点がオンしたことになり、ST4の命令が実行される。ST4の命令の実行により、デバイスM30に「真」が保持される。このように、一番上の行から下に向かって命令が順次実行される。図2Bに示す割り込みプログラムP2の実行も同様である。
図2A、2Bに示すように、メインプログラムP1で使用されている内部リレーは、割り込みプログラムP2においても使用されている。メインプログラムP1中のどの命令を実行しているときに割り込みが発生するかは不定である。割り込みプログラムP2の実行により、内部リレーを示す変数の値が更新されるため、割り込みが終了し、再び、メインプログラムP1の実行が再開された場合、メインプログラムP1の入力接点のオン/オフが異なることがある。また、メインプログラムP1中のどの命令を実行しているときに、割り込みプログラムP2が実行されるかは不定である。このため、割り込みが発生する直前の内部リレーを示す変数の値が異なることになり、割り込みプログラムP2を実行する際に割り込みプログラムP2の入力接点のオン/オフが異なることがある。このように、メインプログラムP1と割り込みプログラムP2との間には、内部リレーを示す変数の依存関係が存在する。
具体的な例を説明する。図2Bに示すように、割り込みプログラムP2のST53の命令の実行により、デバイスM22の値がロードされる。デバイスM22の値が「真」である場合、ST53のM22の入力接点がオンしたことになり、ST54の命令が実行される。ST54の命令の実行により、M2のデバイスを示す変数に「真」の値が保持される。ここで、図2Aに示すメインプログラムP1のST3では、デバイスM2の値に応じて入力接点がオンまたはオフする。メインプログラムP1のST3の命令の実行前に、割り込みプログラムP2が実行されるか否かに応じて、メインプログラムP1のST4で、M30の出力コイルに保持される値が異なる場合がある。
また、図2Aに示すように、メインプログラムP1のST5の命令の実行により、デバイスX2の値がロードされる。デバイスX2の値が「真」である場合、X2の入力接点がオンしたことになり、ST6の命令が実行される。ST6の命令の実行により、デバイスM22を示す変数に「真」が保持される。一方、X2の入力接点がオフの場合、M22を示す変数には「真」の値が保持されない。ここで、図2Bを参照する。割り込みプログラムP2のST53では、デバイスM22の値に応じて、M22の入力接点は、オンまたはオフする。割り込みプログラムP2のST53の実行前に、メインプログラムP1のST6が実行されるか否かに応じて、割り込みプログラムP2のST54で、M2の出力コイルに保持される値が異なる場合がある。以上説明したように、メインプログラムP1と割り込みプログラムP2との間では、内部リレーを示す変数の依存関係が存在する。
上記の実情を鑑みて、実施の形態に特徴的な構成として、解析装置100は割り込みが発生するプログラムにおける変数の依存関係を抽出する。
解析装置100は、例えば、解析用のプログラムをインストールしたパーソナルコンピュータである。図3に示すように、解析装置100は、ハードウェア構成として、各種のプログラム及びデータを記憶するメモリ11と、ユーザの入力操作を検出する入力装置12と、画像を出力する表示装置13と、解析装置100全体を制御するCPU(Central Processing Unit)14とを有する。メモリ11と入力装置12と表示装置13とCPU14とはバス19を介してCPU14に接続されており、それぞれCPU14と通信する。
メモリ11は、揮発性メモリと不揮発性メモリとを含む。メモリ11は、解析装置100の各種機能を実現するためのプログラムを格納する。具体的には、メモリ11は、解析プログラム111を記憶する。解析プログラム111は、プログラムを解析する機能をCPU14に実現させるためのプログラムである。メモリ11は、解析対象のメインプログラムP1及び割り込みプログラムP2を記憶する。さらに、メモリ11はCPU14のワークメモリとして用いられる。
入力装置12は、マウス、操作キー等を含み、ユーザからの操作入力を受け付け、ユーザの操作入力を示す信号をCPU14に出力する。表示装置13は、ディスプレイを含み、CPU14から供給される信号に基づく画像をディスプレイに表示する。
CPU14は、メモリ11に記憶されている各種プログラムを実行して、解析装置100の各種機能を実現する。具体的には、CPU14は、解析プログラム111を実行することにより、ラダーダイアグラムで記載された制御プログラムを解析する。
続いて、図1を参照して、解析装置100の機能構成を説明する。解析装置100は、機能的には、メインプログラムP1の出力コイルと入力接点との依存関係を抽出する第1抽出部110と、メインプログラムP1を2以上のブロックに分割する分割部120と、割り込み発生位置に応じた、割り込みプログラムP2の変数とメインプログラムP1の変数との依存関係を抽出する第2抽出部130と、第1抽出部110が抽出した依存関係と第2抽出部130が抽出した依存関係とを統合する統合部140と、統合された依存関係を示す情報を表示出力する表示部150とを含む。
第1抽出部110は、本発明の第1抽出手段の一例である。分割部120は、本発明の分割手段の一例である。第2抽出部130は、本発明の第2抽出手段の一例である。統合部140は、本発明の統合手段の一例である。表示部150は、本発明の表示手段の一例である。図3に示すCPU14は、解析プログラム111を実行することにより、第1抽出部110、分割部120、第2抽出部130、統合部140、表示部150として機能する。
図1に示す第1抽出部110は、メインプログラムP1のデバイスを示す変数の依存関係を抽出する。第1抽出部110は、選択された出力コイルに対応する命令の対象であるデバイスを示す変数を起点として依存関係を抽出する。例えば、ユーザが図2Aの示すメインプログラムP1のST22で実行される出力コイルY0を選択したと仮定する。第1抽出部110は、メインプログラムP1のデバイスを示す変数の依存関係を、特許文献1に記載されている方法を採用して抽出する。
第1抽出部110は、メインプログラムP1内の命令を下から上へ向かって順に追っていき、メインプログラムP1のデバイスを示す変数の依存関係を抽出する。第1抽出部110は、依存関係を表すため、出力コイルに対応する命令の対象であるデバイス及び入力接点に対応する命令の対象であるデバイスを示すノードを接続した有向グラフを生成する。以下の説明においては、デバイスを示す変数をノードで表し、デバイスを示す変数の間の依存関係をエッジで表す。
図2Aに示す例では、出力コイルY0には、(a)直列に接続されたM10の入力接点(ST17)とM20の入力接点(ST18)と、(b)直列に接続されたM30の入力接点(ST19)とM40の入力接点(ST20)と、(c)M50の入力接点(ST21)と、の(a)〜(c)が並列に接続されている。このため、第1抽出部110は、図4に示すように、Y0を示すノードに、M10を示すノード及びM20を示すノードの積と、M30を示すノード及びM40を示すノードの積と、M50を示すノードと、が接続されているグラフを生成する。
図4に示すグラフは有向グラフであるので、第1抽出部110は、例えば、ノードのペアを特定する情報、ノードを接続するエッジの向きを特定する情報等をメモリ11に格納する。例えば、第1抽出部110は、ノードである変数の名前と、その変数と依存関係を有する他の変数の名前と、矢印の先側のノードである変数の名前と、をメモリ11に格納する。
図2Aを参照する。続いて、第1抽出部110は、ST21で実行されるM50の入力接点のオン/オフに影響を与えるM50の出力コイルがST21の命令より上に存在するかを判別するため、メインプログラムP1からM50の出力コイルを探索する。M50の出力コイルは存在しないため、第1抽出部110は、図4に示すようにグラフのM50のノードには他のノードを接続しない。
図2Aを参照する。第1抽出部110は、ST20で実行されるM40の入力接点のオン/オフに影響を与えるM40の出力コイルがST20の命令より上に存在するかを判別するため、メインプログラムP1からM40の出力コイルを探索する。ここでは、ST8にM40の出力コイルが存在する。ST8のM40の出力コイルは、ST7で実行されるM11の入力接点のオン/オフに応じて動作する。このため、第1抽出部110は、図4に示すM40を示すノードにM11を示すノードを接続する。第1抽出部110は、ノードのペアを特定する情報、ノードを接続するエッジの向きを特定する情報等をメモリ11に格納する。
図2Aを参照する。第1抽出部110は、ST19で実行されるM30の入力接点のオン/オフに影響を与えるM30の出力コイルがST19の命令より上に存在するかを判別するため、メインプログラムP1からM30の出力コイルを探索する。ここでは、ST4にM30の出力コイルが存在する。ST4のM30の出力コイルは、ST3で実行されるM2の入力接点のオン/オフに応じて動作する。このため、第1抽出部110は、図4に示すように、M30を示すノードにM2を示すノードを接続する。第1抽出部110は、ノードのペアを特定する情報、ノードを接続するエッジの向きを特定する情報等をメモリ11に格納する。
図2Aを参照する。第1抽出部110は、ST18で実行されるM20の入力接点のオン/オフに影響を与えるM20の出力コイルがST18の命令より上に存在するかを判別するため、メインプログラムP1からM20の出力コイルを探索する。ここでは、ST10にM20の出力コイルが存在する。ST10のM20の出力コイルは、ST9で実行されるM2の入力接点のオン/オフに応じて動作する。このため、第1抽出部110は、図4に示すように、M20を示すノードにM2を示すノードを接続する。第1抽出部110は、ノードのペアを特定する情報、ノードを接続するエッジの向きを特定する情報等をメモリ11に格納する。
図2Aを参照する。第1抽出部110は、ST17で実行されるM10の入力接点のオン/オフに影響を与えるM10の出力コイルがST17の命令より上に存在するかを判別するため、メインプログラムP1からM10の出力コイルを探索する。ここでは、ST16にM10の出力コイルが存在する。ST16のM10の出力コイルは、ST15で実行されるM101の入力接点に応じて動作する。このため、第1抽出部110は、図4に示すM10を示すノードにM101を示すノードを接続する。第1抽出部110は、ノードのペアを特定する情報、ノードを接続するエッジの向きを特定する情報等をメモリ11に格納する。
図2Aを参照する。第1抽出部110は、ST15で実行されるM101の入力接点のオン/オフに影響を与えるM101の出力コイルがST15の命令より上に存在するかを判別するため、メインプログラムP1からM101の出力コイルを探索する。ここでは、ST14にM101の出力コイルが存在する。ST14のM101の出力コイルは、ST13で実行されるM3の入力接点のオン/オフに応じて動作する。このため、第1抽出部110は、図4に示すM101を示すノードにM3を示すノードを接続する。第1抽出部110は、ノードのペアを特定する情報、ノードを接続するエッジの向きを特定する情報等をメモリ11に格納する。
図2Aを参照する。第1抽出部110は、ST13のM3の入力接点のオン/オフに影響を与えるM3の出力コイルがST13の命令より上に存在するかを判別するため、メインプログラムP1からM3のコイルを探索する。M3の出力コイルは存在しないため、第1抽出部110は、図4に示すように、M3を示すノードには他ノードを接続しない。
第1抽出部110は、上記のような手順を繰り返し、選択された出力コイルから、メインプログラムP1内の命令を下から上へ向かって順に追っていき、図4に示すようなメインプログラムP1の変数の依存関係を表すツリー構造のグラフを生成する。第1抽出部110が抽出するメインプログラムP1中のデバイスを示す変数の依存関係は、本発明の第1依存関係の一例である。第1抽出部110が生成した第1依存関係を表すグラフは、本発明の第1グラフの一例である。
さらに、第1抽出部110は、メインプログラムでの命令の実行順序の逆順を示す番号をグラフの各ノードに割り当てて、番号とノードとの対応を示すデータをメモリ11に格納する。図2Aに示すメインプログラムP1では、M50の入力接点が一番最後に実行されるので、図4に示すように、M50には番号「0」が割り当てられ、一番最初に実行されるX1の入力接点に最終の番号「10」が割り当てられている。
さらに、第1抽出部110は、割り込みプログラムP2中のデバイスを示す変数の依存関係を抽出する。
ここで、第1抽出部110は、割り込みプログラムP2の出力コイルのうち、メインプログラムP1に影響を与えない出力コイルについては、抽出の対象外とする。図2Bに示す割り込みプログラムP2の出力コイルは、M1、M2、M3、M50である。これらの出力コイルのうち、図2Aに示すメインプログラムP1の入力接点となっているのは、M2、M3、M50である。M1は、メインプログラムP1の入力接点となっていないため割り込みプログラムP2中のM1は、メインプログラムP1に影響を与えない。このため、M1は抽出の対象外となる。よって、第1抽出部は、割り込みプログラムP2のM2、M3、M50の出力コイルに対応する命令の対象であるデバイスを示す変数を起点として依存関係を抽出する。
割り込みプログラムP2の変数の依存関係の抽出方法は、第1抽出部110と同様である。第1抽出部110は、割り込みプログラムP2内の命令を下から上へ向かって順に追っていき、図5に示すような、割り込みプログラムP2の変数の依存関係を表すグラフを生成する。第1抽出部110は、図5に示すグラフの構造を特定するため、例えば、ノードのペアを特定する情報、ノードを接続するエッジの向きを特定する情報等をメモリ11に格納する。第1抽出部110が抽出する割り込みプログラムP2における出力コイルと入力接点との依存関係は、本発明の第2依存関係の一例である。第1抽出部110が生成した第2依存関係を表すグラフは、本発明の第2グラフの一例である。
図1に示す分割部120は、設定された条件に従ってメインプログラムP1を2以上のブロックに分割する。具体的には、分割部120は、(i)割り込みプログラムP2の入力接点を決められた条件で選択し、(ii)選択した入力接点に影響を与えるメインプログラムP1の出力コイルを探索し、(iii)該当する出力コイルの直前の位置で、メインプログラムP1を区切る。
分割部120は、(i)の処理を次のように行う。まず、分割部120は、図2Aに示すメインプログラムP1の出力コイルであり、図2Bに示す割り込みプログラムP2の入力接点であるものを選択する。ここでは、M11、M22、M33が該当する。
続いて、分割部120は、割り込みプログラムP2内の選択した入力接点が動作させる出力コイルのうち、メインプログラムP1に影響を与えない出力コイルを探索する。分割部120は、該当する出力コイルに接続されている入力接点を選択の対象から除外する。M11の入力接点にはM1の出力コイルが接続されているが、メインプログラムP1の入力接点にはM1が存在しない。よって、分割部120は、割り込みプログラムP2のM11、M22、M33の入力接点のうち、M11を除外する。このようにして、分割部120は、割り込みプログラムP2の入力接点のうち、M22、M33を選択する。
分割部120は(ii)の処理を次のように行う。分割部120は、メインプログラムP1の出力コイルから、(i)で選択した割り込みプログラムP2の入力接点であるM22、M33に影響を与える出力コイルを探索する。メインプログラムP1では、ST6にM22の出力コイル、ST12にM33の出力コイルが存在する。
分割部120は(iii)の処理を次のように行う。分割部120は、図6に示すように、M22の出力コイルとM33の出力コイルの直前でメインプログラムP1を区切る。図示する例では、M22の出力コイルの前のブロックをブロックA、M22の出力コイルからM33の出力コイルの直前までをブロックB、M33の出力コイルより後ろをブロックCとした。分割部120は、ブロック名、ブロック間の区切りの直後に配置されている入力接点または出力コイルを特定する情報等をメモリ11に格納する。
前述の通り、メインプログラムP1実行中に発生する割り込みの位置が不定であるため、解析装置100は、メインプログラムP1をいくつかのブロックに分割し、それぞれのブロックで割り込みが発生した場合のデバイスを示す変数の依存関係を抽出する。
分割部120は、第1抽出部110が生成した図4に示すグラフの各ノードに、そのノードに対応する入力接点または出力コイルがどのブロックに属しているかを示す情報を付加する。図7に、分割部120がブロックの情報を付加したグラフを示す。
なお、メインプログラムP1内の命令は、プログラムの一番上の行から一番下の行に向かって実行される。メインプログラムP1内に同じ内部リレーが複数配置されている場合、最終出力である出力コイルY0に近い方のブロックを示す情報が、ノードに付加されている。例えば、メインプログラムP1において、M20は、ST18の入力接点であり、ST10の出力コイルでもある。出力コイルY0に近いのは、ST18のM20の入力接点であるので、図4に示すグラフで、ST18のM20の入力接点が含まれているブロックCが、M20を示すノードに割り当てられる。
さらに、分割部120は、ブロックをサブブロックに分割する。具体的には、分割部120は、メインプログラムP1から、割り込みプログラムP2の出力コイルにより影響を受ける入力接点を探索する。分割部120は、該当する入力接点の直前の位置でメインプログラムP1を区切る。
ここで、M2、M3、M50は、図2Bに示す割り込みプログラムP2の出力コイルであり、図2Aに示すメインプログラムP1の入力接点である。この場合、メインプログラムP1の入力接点のうちM2、M3、M50は、割り込みプログラムP2の出力コイルにより影響を受ける。分割部120は、メインプログラムP1を、M2、M3、M50の入力接点の直前で区切る。図8に示すように、分割部120は、ブロックAをサブブロックA1及びA2に、ブロックBをサブブロックB1及びB2に、ブロックCをサブブロックC1、C2、及びC3に区切る。分割部120は、サブブロック名、サブブロック間の区切りの直後に配置されている入力接点または出力コイルを特定する情報等をメモリ11に格納する。
図1に示す第2抽出部130は、メインプログラムP1の各ブロックにおいて割り込みが発生した場合の、割り込みプログラムP2のデバイスを示す変数とメインプログラムP1のデバイスを示す変数との依存関係を抽出する。第2抽出部130は、図2Bに示す割り込みプログラムP2の入力接点のうち、メインプログラムP1において、出力コイルとなっている内部リレーを探索する。図2A、2Bに示す例では、M11、M22、M33が該当する。ここで、割り込みプログラムP2においてM11の入力接点によりM1の出力コイルが動作するが、M1は、メインプログラムP1内の入力接点ではない。このため、割り込みプログラムP2のM11の入力接点は、メインプログラムP1に影響を与えない。よって、第2抽出部130は、M11を対象から外す。
第2抽出部130は、図2Aに示すメインプログラムP1のブロックAから、M22、M33の出力コイルを探索する。ブロックAには、M22、M33の出力コイルが存在しないため、第2抽出部130は、第1抽出部110が出力した図5に示すグラフに他のノードを追加しない(図9A)。
続いて、第2抽出部130は、図2Aに示すメインプログラムP1のブロックBから、M22及びM33の出力コイルを探索する。ブロックB内にST6で実行されるM22の出力コイルが存在し、M22の出力コイルは、ST5で実行されるX2の入力接点のオン/オフにより動作する。このため、第2抽出部130は、第1抽出部110が出力した図5に示すグラフ内のM22を示すノードにX2を示すノードを接続し、図9Bに示すようなグラフを生成する。ここで、第2抽出部130は、割り込みプログラムP2がメインプログラムP1のブロックB内で割り込みを実行した場合に、割り込みプログラムP2の入力接点が、メインプログラムP1のX2の入力接点の影響を受けることを示す情報として、追加したX2を示すノードにブロックBを特定する情報を付加する。
続いて、第2抽出部130は、メインプログラムP1のブロックCから、M22及びM33の出力コイルを探索する。ブロックC内にST12で実行されるM33の出力コイルが存在する。M33の出力コイルは、ST11で実行されるM11の入力接点のオン/オフにより動作する。このため、第2抽出部130は、図9Bに示すグラフのM33を示すノードに、M11を示すノードを接続する。さらに、メインプログラムP1内において、M11の入力接点のオン/オフに影響を与えるST2のM11の出力コイルが存在する。M11の出力コイルは、ST1で実行されるX1の入力接点のオン/オフにより動作する。このため、第2抽出部130は、さらに、M11を示すノードにX1を示すノードを接続し、図9Cに示すようなグラフを生成する。
ここで、第2抽出部130は、割り込みプログラムP2がメインプログラムP1のブロックC内で割り込みを実行した場合に、割り込みプログラムP2の入力接点が、メインプログラムP1のM11及びX1の入力接点の影響を受けることを示す情報として、追加したM11及びX1を示すノードに、ブロックCを特定する情報を付加する。第2抽出部130は、生成したグラフの形状を特定するための情報をメモリ11に格納する。
上記のように、第2抽出部130は、割り込みプログラムP2中で参照されるデバイスを示す変数とメインプログラムP1中で参照されるデバイスを示す変数との依存関係を、割り込みプログラムP2の変数の依存関係を表すグラフに追加する。このように、第2抽出部130は、ブロック内で割り込みが発生した場合の、割り込みプログラムP2中で参照されるデバイスを示す変数とメインプログラムP1中で参照されるデバイスを示す変数との依存関係を抽出する。第2抽出部130が抽出する依存関係は、本発明の第3依存関係の一例である。第2抽出部130が生成する第3依存関係を表すグラフは、本発明の第3グラフの一例である。
図1に示す統合部140は、図7に示すような、第1抽出部110が生成したメインプログラムP1のデバイスを示す変数の依存関係を表すグラフと、図9Cに示すような、第2抽出部130が生成した割り込みプログラムP2のデバイスを示す変数とメインプログラムP1のデバイスを示す変数との依存関係を表すグラフとを統合し、図10に示すようなグラフ(以下、統合グラフ)を生成する。統合部140は、生成した統合グラフの形状を特定するための情報をメモリ11に格納する。統合グラフは、本発明の統合依存関係情報を表したグラフである。
表示部150は、図11に示すように、統合部140が統合した統合グラフを表示装置13に表示する。図示する例では、表示部150は、メインプログラムP1中の入力接点、出力コイルが、どのブロックに属しているかを示す情報をノードに付加している。この情報は、図7に示すように、分割部120が、ノードに付加したブロックの情報である。
表示部150は、割り込みプログラムP2による割り込みが発生した場合に、割り込みプログラムP2の入力接点に影響を与えるメインプログラムP1の入力接点及び出力コイルを示すノードに、割り込み位置を示すブロックの情報を付加して表示する。この情報は、第2抽出部130が、割り込みプログラムP2の入力接点が、メインプログラムP1の入力接点、出力接点からの影響を受けることを示す情報として、図9B、9Cのように、ノードに付加したブロックの情報である。
表示部150は、図11に示すように、統合グラフとともに、ラダーダイアグラムで記載されたメインプログラムP1を表示する。ここで、表示部150は、ブロックの境界を示す境界線を付加したメインプログラムP1を表示する。
さらに、図11に示すように、ユーザが画面上で所望のサブブロックを指定した場合、表示部150は、指定されたサブブロックで割り込みが発生した場合の依存関係のみを表示する。図12Aは、サブブロックB1が選択された場合に、表示部150が表示する画像の例である。図12Bは、サブブロックC1が選択された場合に、表示部150が表示する画像の例である。
続いて、上記機能を備える解析装置100において、依存関係のグラフを生成する一連の流れを説明する。
上述した解析装置100の各部は、メインプロセスから呼び出されると、それぞれの処理を実行するものとする。ここで、図3に示す解析プログラム111においては、例えば、第1抽出部110と、分割部120と、第2抽出部130と、統合部140とは、サブプロセスとして動作するようプログラムされており、メインプロセスから呼び出されると、それぞれの処理を行うものとする。ここで、メインプロセスは、図3に示すCPU14が解析プログラム111を実行することにより、最初に起動されるプロセスであるとする。
図13に示すように、メインプロセス200は、まず、第1抽出部110に、メインプログラムP1中のデバイスを示す変数の依存関係を抽出することを指示する(ステップS1001)。これに応答して、第1抽出部110は、メインプログラムP1中のデバイスを示す変数の依存関係を抽出し(ステップS1002)、図4に示すようなグラフを生成し、生成したグラフを特定するデータをメモリ11に保存する。その後、図13に示すように、第1抽出部110は、メインプログラムP1についての依存関係の抽出処理が完了したことをメインプロセス200に通知する(ステップS1003)。
続いて、メインプロセス200は、第1抽出部110に、割り込みプログラムP2中のデバイスを示す変数の依存関係を抽出することを指示する(ステップS1004)。これに応答して、第1抽出部110は、割り込みプログラムP2中のデバイスを示す変数の依存関係を抽出し(ステップS1005)、図5に示すようなグラフを生成し、生成したグラフを特定するデータをメモリ11に保存する。その後、図13に示すように、第1抽出部110は、割り込みプログラムP2についての依存関係の抽出処理が完了したことをメインプロセス200に通知する(ステップS1006)。
続いて、メインプロセス200は、分割部120にメインプログラムP1をブロックに分けることを指示する(ステップS1007)。これに応答して、分割部120は、図6の破線で示すように、まず、メインプログラムP1をブロックに分け(ステップS1008)、ブロックの区切りの位置を特定するデータをメモリ11に格納する。
その後、分割部120は、メインプログラムP1における入力接点、出力コイルの位置がどのブロックに属しているかに応じて、第1抽出部110が出力した図7に示すようなグラフ内の各ノードにブロックを特定する情報を付加したデータをメモリ11に格納する。
次に、分割部120は、図8の太い破線で示すようにメインプログラムP1をサブブロックに分け、サブブロックの区切りの位置を特定するデータをメモリ11に格納する。その後、図13に示すように、分割部120は、ブロックを分割したことをメインプロセス200に通知する(ステップS1009)。
続いて、メインプロセス200は、第2抽出部130に、メインプログラムP1の各ブロックにおいて割り込みが発生した場合の、割り込みプログラムP2のデバイスを示す変数と、メインプログラムP1のデバイスを示す変数との依存関係を抽出することを指示する(ステップS1010)。これに応答して、第2抽出部130は、メインプログラムP1の各ブロックにおいて割り込みが発生した場合の、割り込みプログラムP2のデバイスを示す変数と、メインプログラムP1のデバイスを示す変数との依存関係を抽出し(ステップS1011)、図9A〜9Cに示すようなグラフを生成し、生成したグラフを特定するデータをメモリ11に保存する。その後、図13に示すように、第2抽出部130は、抽出処理が完了したことをメインプロセス200に通知する(ステップS1012)。
続いて、メインプロセス200は、統合部140に、図7に示すような、第1抽出部110したグラフ(図4)にブロックの情報を付加されたグラフと、第2抽出部130が生成した図9Cに示すようなグラフとを統合することを指示する(ステップS1013)。これに応答して、統合部140は、グラフを統合し(ステップS1014)、図10に示すようなグラフを生成し、生成したグラフを特定するデータをメモリ11に保存する。その後、図13に示すように、統合部140は、統合処理が完了したことをメインプロセス200に通知する(ステップS1015)。
続いて、メインプロセス200は、表示部150に、統合部140が生成したグラフを表示することを指示する(ステップS1016)。これに応答して、表示部150は、グラフを表示する画像を生成し、生成した画像をディスプレイに表示する(ステップS1017)。その後、図13に示すように、統合部140は、表示処理が完了したことをメインプロセス200に通知する(ステップS1018)。
また、メインプロセス200は、ユーザの操作指示により、割り込みが発生するブロックが選択された場合、選択されたブロックで割り込みが発生した場合のグラフを表示することを指示する。これに応答して、表示部150は、例えば、図12A、12Bに示すような画面を表示する。
以上説明したように、実施の形態に係る構成においては、まず、解析装置100の第1抽出部110が、メインプログラムP1中で使用されるデバイスを示す変数の依存関係(第1依存関係)を抽出し、割り込みプログラムP2中で使用されるデバイスを示す変数の依存関係(第2依存関係)を抽出する。解析装置100の分割部120は、メインプログラムP1をブロックに分割し、第2抽出部130は、ブロックで特定される領域において割り込みが発生した場合の、割り込みプログラムP2中のデバイスを示す変数とメインプログラムP1中のデバイスを示す変数との依存関係を第2依存関係に結合して、結合依存関係を抽出する。統合部140は、第1依存関係に結合依存関係を統合する。解析装置100はこのような構成を備えることにより、割り込み処理が発生するプログラム中の変数の依存関係を解析することができる。
また、ユーザがメインプログラムP1の特定の領域において割り込み処理を禁止するよう設定することがある。例えば、ユーザが、プログラムの開発ツールを使用して、図14の二点破線で挟まれた区間においては割り込み処理を禁止することをメインプログラムP1に設定したとする。この区間を割り込み禁止区間というものとする。よって、メモリ11のメインプログラムP1に割り込み禁止区間の情報が書き込まれる。
この場合、統合部140は、統合グラフを生成した後、割り込み禁止区間に含まれている依存関係を示すノードとエッジに、割り込み禁止区間に含まれていることを示す情報を付加し、付加した情報をメモリ11に格納する。表示部150は、割り込み禁止区間に含まれているノード及びエッジについては、ユーザが視角的に確認できるように、例えば、図15に示すような画面を表示する。
(変形例)
実施の形態においては、メインプログラムP1に割り込みプログラムP2が割り込む例を説明したが、解析装置100は、多重割り込みが発生するプログラムを解析することが可能である。
例えば、2つのプログラムP21、P31が、メインプログラムP1の実行中に割り込みを行うとする。プログラムP21と、プログラムP31には、プログラムの実行の優先度が設定されており、プログラムP31の優先度の方が、プログラムP21の優先度より高いとする。よって、プログラムP21が実行中に、プログラムP31は、割り込んで処理を行うことができる。一方、プログラムP31が実行中には、プログラムP21は割り込むことはできない。
このような場合、解析装置100は、優先度が低いプログラムP21がメインプログラムに相当するものとし、優先度が高いプログラムP31が割り込みプログラムに相当するものとして、実施の形態で説明したような方法で解析を行う。その後、解析装置100は、プログラムP21及びプログラムP31を1つの割り込みプログラムとみなして、解析を行うことができる。このような方法で、多重割り込みが発生するプログラムを解析することが可能である。
実施の形態において、解析装置100のメモリ11にメインプログラムP1及び割り込みプログラムP2が格納されている例を説明したが、解析装置100は、ネットワークを介して接続されている他のコンピュータのメモリに格納されているプログラムを解析してもよい。
実施の形態において、予め設定された条件が満たされた場合に、割り込みプログラムP2が実行される例を説明したが、あるいは、プログラマブルロジックコントローラは、スキャンタイムとは異なる周期で、周期的に割り込みプログラムP2を実行してもよい。
上記のプログラムを記録する記録媒体としては、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
A,B,C ブロック、A1,B1,C1,C2 サブブロック、M2,M3,M10,M11,M20,M22,M30,M33,M40,M50,M101,X1,X2,X99 デバイス、P1 メインプログラム、P2 割り込みプログラム、P21,P31 プログラム、Y0 出力コイル、11 メモリ、12 入力装置、13 表示装置、14 CPU、19 バス、100 解析装置、110 第1抽出部、111 解析プログラム、120 分割部、130 第2抽出部、140 統合部、150 表示部、200 メインプロセス

Claims (17)

  1. ラダーダイアグラムで記載され、プログラマブルロジックコントローラにリレー回路の機能を実現させるプログラム内の変数の依存関係を解析する解析装置であって、
    前記プログラムは、第1プログラムと、前記第1プログラムの実行中に前記第1プログラムの実行を中断して割り込み処理を実行する第2プログラムとを含み、
    前記第1プログラム内の前記変数の依存関係である第1依存関係と、前記第2プログラム内の前記変数の依存関係である第2依存関係とを抽出する第1抽出手段と、
    設定された条件に従って前記第1プログラムを少なくとも2つのブロックに分割する分割手段と、
    前記第1プログラムの前記ブロック内で割り込みが発生した場合の、前記第2プログラム内の前記変数と前記第1プログラム内の前記変数との依存関係を、前記第2依存関係に追加して、第3依存関係を抽出する第2抽出手段と、
    前記第1依存関係と前記第3依存関係とを統合して、統合依存関係を示す情報である統合依存関係情報を生成する統合手段と、
    前記統合依存関係情報を表示する表示手段と、
    を含む解析装置。
  2. 前記分割手段は、
    前記第1プログラム内の出力コイルに対応する命令から、前記第2プログラム内の入力接点に対応する命令に影響を与える前記出力コイルに対応する命令を探索し、該当する前記出力コイルに対応する命令の直前で、前記第1プログラムを区切ることにより、前記第1プログラムを前記ブロックに分割し、
    前記第1プログラム内の前記入力接点に対応する命令から、前記第2プログラム内の前記出力コイルに対応する命令から影響を受ける前記入力接点に対応する命令を探索し、該当する前記入力接点に対応する命令の直前で、前記第1プログラムを区切ることにより、前記ブロックをさらに分割する、
    請求項1に記載の解析装置。
  3. 前記第1抽出手段は、前記第1依存関係を表す第1グラフと、前記第2依存関係を表す第2グラフとを生成し、
    前記第1グラフは、前記第1プログラム内における、前記変数をノード、前記変数の間の依存関係をエッジとしたグラフであり、
    前記第2グラフは、前記第2プログラム内における、前記変数を前記ノード、前記変数の間の依存関係を前記エッジとしたグラフである、
    請求項2に記載の解析装置。
  4. 前記第1抽出手段は、
    前記第1プログラム内における、前記出力コイルに対応する命令の対象である前記変数を表す前記ノードと、その前記出力コイルに対応する命令に影響を与える前記入力接点に対応する命令の対象である前記変数を表す前記ノードと、が接続されている前記第1グラフを生成する、
    請求項3に記載の解析装置。
  5. 前記第1抽出手段は、前記第1プログラム内における、前記入力接点に対応する命令の対象である前記変数を表す前記ノードと、前記入力接点に影響を与える前記出力コイルに対応する命令の対象である前記変数を表す前記ノードと、が接続されている前記第1グラフを生成する、
    請求項4に記載の解析装置。
  6. 前記分割手段は、前記第1グラフ内の前記第1プログラム内の前記入力接点及び前記出力コイルに対応する命令の対象である前記変数を表す前記ノードに、前記入力接点及び前記出力コイルが配置されている前記ブロックを特定する情報を付加する、
    請求項5に記載の解析装置。
  7. 前記第1抽出手段は、前記第2プログラム内における、前記出力コイルに対応する命令の対象である前記変数を表す前記ノードと、その前記出力コイルに対応する命令に影響を与える前記入力接点に対応する命令の対象である前記変数を表す前記ノードと、が接続されている前記第2グラフを生成する、
    請求項3から6のいずれか1項に記載の解析装置。
  8. 前記第1抽出手段は、前記第2プログラム内における、前記入力接点に対応する命令の対象である前記変数を表す前記ノードと、前記入力接点に影響を与える前記出力コイルに対応する命令の対象である前記変数を表す前記ノードと、が接続されている前記第2グラフを生成する、
    請求項7に記載の解析装置。
  9. 前記第2抽出手段は、
    前記第1プログラムの前記ブロック内で割り込みが発生した場合において、前記第1プログラム内の前記入力接点または前記出力コイルに対応する命令のうち、前記第2プログラム内の前記入力接点に対応する命令に影響を与える前記第1プログラム内の前記入力接点または前記出力コイルに対応する命令を探索し、該当する命令の対象である前記変数を表す前記ノードを、前記第2プログラム内の前記入力接点に対応する命令の対象である前記変数を表す前記第2グラフの前記ノードに接続して、前記第3依存関係を表す第3グラフを生成する、
    請求項3から8のいずれか1項に記載の解析装置。
  10. 前記第2抽出手段は、
    前記第3グラフを生成する際に、前記第1プログラム内の該当する命令の対象である前記変数を表すノードと、前記第2プログラム内の前記入力接点に対応する命令の対象である前記変数を表す前記第2グラフの前記ノードとを接続する際に、割り込みが発生した前記ブロックを特定する情報を、前記第1プログラム内の該当する命令の対象である前記変数を表すノードに付加する、
    請求項9に記載の解析装置。
  11. 前記第2抽出手段は、前記第1プログラム内の前記入力接点に対応する命令のうち、前記第2プログラム内の出力コイルに対応する命令から影響を受ける命令の対象である前記変数を表す前記第1グラフの前記ノードに、前記第2グラフを連結して、前記統合依存関係を表す統合グラフを生成する、
    請求項9または10に記載の解析装置。
  12. 前記表示手段は、前記統合グラフを表す図と前記第1プログラムを表す図とを併せて表示する、
    請求項11に記載の解析装置。
  13. 前記表示手段は、前記第1プログラムを表す図に前記ブロックの境界を示す境界線を付加した図を表示する、
    請求項12に記載の解析装置。
  14. 前記表示手段は、前記分割手段が前記第1グラフ内の前記ノードに付加した前記ブロックを特定する情報に基づいて、前記第1グラフ内の前記ノードに対応する前記統合グラフ内の前記ノードに前記ブロックを特定する情報を併せて表示する、
    請求項12または13に記載の解析装置。
  15. 前記表示手段は、前記第2抽出手段が前記第3グラフ内の前記ノードに付加した前記ブロックを特定する情報に基づいて、前記第3グラフ内の前記ノードに対応する前記統合グラフ内の前記ノードに前記ブロックを特定する情報を併せて表示する、
    請求項12から14のいずれか1項に記載の解析装置。
  16. ラダーダイアグラムで記載され、プログラマブルロジックコントローラにリレー回路の機能を実現させるプログラム内の変数の依存関係をコンピュータが解析する方法であって、
    前記プログラムは、第1プログラムと、前記第1プログラムの実行中に前記第1プログラムの実行を中断して割り込み処理を実行する第2プログラムとを含み、
    前記第1プログラム内の前記変数の依存関係である第1依存関係を抽出するステップと、
    前記第2プログラム内の前記変数の依存関係である第2依存関係を抽出するステップと、
    設定された条件に従って前記第1プログラムを少なくとも2つのブロックに分割するステップと、
    前記第1プログラムの前記ブロック内で割り込みが発生した場合の、前記第2プログラム内の前記変数と前記第1プログラム内の前記変数との依存関係を、前記第2依存関係に追加して、第3依存関係を抽出するステップと、
    前記第1依存関係と前記第3依存関係とを統合し、統合依存関係を示す情報である統合依存関係情報を生成するステップと、
    前記統合依存関係情報を表示するステップと、
    を含む方法。
  17. ラダーダイアグラムで記載され、プログラマブルロジックコントローラにリレー回路の機能を実現させるプログラム内の変数の依存関係を解析するため、コンピュータが実行するプログラムであって、
    前記プログラムは、第1プログラムと、前記第1プログラムの実行中に前記第1プログラムの実行を中断して割り込み処理を実行する第2プログラムとを含み、
    前記コンピュータに、
    前記第1プログラム内の前記変数の依存関係である第1依存関係を抽出させ、
    前記第2プログラム内の前記変数の依存関係である第2依存関係を抽出させ、
    設定された条件に従って前記第1プログラムを少なくとも2つのブロックに分割させ、
    前記第1プログラムの前記ブロック内で割り込みが発生した場合の、前記第2プログラム内の前記変数と前記第1プログラム内の前記変数との依存関係を、前記第2依存関係に追加して、第3依存関係を抽出させ、
    前記第1依存関係と前記第3依存関係とを統合して、統合依存関係を示す情報である統合依存関係情報を生成させ、
    前記統合依存関係情報を表示させる、
    プログラム。
JP2019572246A 2019-06-18 2019-06-18 解析装置、方法、及びプログラム Active JP6692510B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/024146 WO2020255267A1 (ja) 2019-06-18 2019-06-18 解析装置、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP6692510B1 true JP6692510B1 (ja) 2020-05-13
JPWO2020255267A1 JPWO2020255267A1 (ja) 2021-09-13

Family

ID=70549720

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019572246A Active JP6692510B1 (ja) 2019-06-18 2019-06-18 解析装置、方法、及びプログラム

Country Status (3)

Country Link
JP (1) JP6692510B1 (ja)
CN (1) CN113950649B (ja)
WO (1) WO2020255267A1 (ja)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4254954B2 (ja) * 2004-03-29 2009-04-15 独立行政法人科学技術振興機構 データ処理装置
JP2008293378A (ja) * 2007-05-25 2008-12-04 Panasonic Corp プログラム書き換え装置
JP5349947B2 (ja) * 2008-12-25 2013-11-20 キヤノン株式会社 システム、画像形成装置、制御方法およびプログラム
JP5762154B2 (ja) * 2011-06-08 2015-08-12 三菱電機株式会社 情報処理装置及び情報処理方法及びプログラム
CN102508689A (zh) * 2011-11-08 2012-06-20 上海交通大学 高级语言程序数据流图提取中依赖关系保持数据处理系统
JP5362148B1 (ja) * 2012-12-17 2013-12-11 三菱電機株式会社 プログラム解析支援装置及び制御装置
WO2014141352A1 (ja) * 2013-03-11 2014-09-18 株式会社 日立製作所 システム制御装置
CN107835964B (zh) * 2015-06-24 2020-09-11 西门子公司 控制情境化以及关于控制的推理
JP2017058804A (ja) * 2015-09-15 2017-03-23 株式会社東芝 検出装置、方法およびプログラム

Also Published As

Publication number Publication date
JPWO2020255267A1 (ja) 2021-09-13
CN113950649B (zh) 2022-12-09
WO2020255267A1 (ja) 2020-12-24
CN113950649A (zh) 2022-01-18

Similar Documents

Publication Publication Date Title
US6286132B1 (en) Debugging support apparatus, a parallel execution information generation device, a computer-readable recording medium storing a debugging support program, and a computer-readable recording medium storing a parallel execution information generation program
JP2006024006A (ja) テストケース生成装置、テストケース生成プログラム、モデルベース開発プログラム、ソースコード生成妥当性診断装置、ソースコード生成妥当性診断プログラム、およびモデルベース開発方法。
JP5102823B2 (ja) 総テスト時間を最小にするようにテストシナリオを最適化するテスト支援装置、テスト装置、テスト支援方法及びコンピュータプログラム
JP2009265810A (ja) 状態遷移テスト支援装置、状態遷移テスト支援プログラム、および状態遷移テスト支援方法
JPH0816429A (ja) 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置
JP2007310449A (ja) ソフトウェア/ハードウェア協調設計のためのモデル生成プログラム、およびモデル生成方法
JP6692510B1 (ja) 解析装置、方法、及びプログラム
JP3274036B2 (ja) プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置
JP4728563B2 (ja) コード生成装置、コード生成プログラム、機能実行装置、機能実行プログラム、モデル生成装置、およびモデル生成プログラム
WO2020194455A1 (ja) テストケース生成装置、テストケース生成方法、およびテストケース生成プログラム
JP3641090B2 (ja) プログラミング支援装置とその方法
JP3905885B2 (ja) シミュレーション方法、シミュレーションプログラム及び表示処理方法
JP2005174045A (ja) ソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体
JP7479188B2 (ja) デバッグ支援装置、デバッグ支援方法およびプログラム
JP4569284B2 (ja) 集積回路のデバッグ方法、デバッグプログラム
JPH10247142A (ja) プロセス制御プログラムのプログラミングシステムおよびプログラミング方法
WO2024069730A1 (ja) デバッグ装置及びデバッグ方法
JP3253224B2 (ja) 入出力コマンド試験装置
JP3547550B2 (ja) 情報処理装置
JPH07219980A (ja) テスト実行方式
JPH1010196A (ja) 論理エミュレーション装置
JP4268620B2 (ja) 回路記述言語の等価性検証方法及び等価性検証装置
WO2020031903A1 (ja) サポート装置およびサポートプログラム
JP2001256079A (ja) ソフトウェアのデバッグ方法および論理回路のデバッグ方法
JP3221421B2 (ja) 情報処理装置の試験方法およびそのプログラムを記憶した記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191226

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20191226

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200309

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200414

R150 Certificate of patent or registration of utility model

Ref document number: 6692510

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250