JP3992054B2 - デバッグ装置 - Google Patents

デバッグ装置 Download PDF

Info

Publication number
JP3992054B2
JP3992054B2 JP2005289405A JP2005289405A JP3992054B2 JP 3992054 B2 JP3992054 B2 JP 3992054B2 JP 2005289405 A JP2005289405 A JP 2005289405A JP 2005289405 A JP2005289405 A JP 2005289405A JP 3992054 B2 JP3992054 B2 JP 3992054B2
Authority
JP
Japan
Prior art keywords
function block
program
execution
execution means
child
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
JP2005289405A
Other languages
English (en)
Other versions
JP2007102385A (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.)
Omron Corp
Original Assignee
Omron 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 Omron Corp filed Critical Omron Corp
Priority to JP2005289405A priority Critical patent/JP3992054B2/ja
Priority to US11/529,566 priority patent/US20070078538A1/en
Publication of JP2007102385A publication Critical patent/JP2007102385A/ja
Application granted granted Critical
Publication of JP3992054B2 publication Critical patent/JP3992054B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Programmable Controllers (AREA)

Description

本発明は、ファンクションブロックを含む制御プログラム用のデバッグ装置に関するものである。
プログラマブルコントローラ(以降、「PLC」と称する)の制御プログラムの開発では、IEC−61131−3の各種言語により、開発対象に応じた言語が利用できるようになっている。開発段階では、設計した制御プログラムの検証・動作チェックを行なうため、一般にデバッグ装置を用いたデバッグ処理が行なわれる。このデバッグ装置は、実機に替わって制御プログラムを実行するシミュレータと、そのシミュレータの動作を制御する制御手段を備えている。
係る動作の制御としては、実行命令の入力を受ける都度、制御プログラムを1ステップ(1命令)ずつ実行するステップ実行や、制御プログラムの全体を1回あるいは停止命令がくるまで繰り返し実行するスキャン実行などがある。また、予めブレークポイントを設定しておき、スキャン実行中にそのブレークポイントの位置に来た場合に、プログラムの実行を一時停止する制御もある。そのように適宜の手法で、プログラムを実行したり、停止したりし、そのときのメモリの状態を確認することで、正常に動作しているか否かや、問題が発生した場合には、その問題の発生箇所を特定し、修正する。係るデバッグ装置としては、従来、特許文献1等に開示されたものがある。
特開2001−67245号公報
ところで、IEC−61131−3で規定されるプログラムを構成する要素の1つとしてファンクションブロックと称されるものがある。このファンクションブロックの記述目的の1つとして、プログラムの隠蔽による表示プログラム量の削減による設計・保守の容易化がある。このファンクションブロックの実現方法はインスタンスという概念で作成される。よって、ファンクションブロックの実体は1つ存在し、メインの制御プログラム上では1又は複数のインスタンスが記述され、プログラムの実行位置がそのファンクションブロックの記述された位置に至ると、サブルーチンプログラムのように上記のファンクションブロックの実体に記述された各命令を順に実行し、最後の命令まで実行すると再び、元の位置に復帰し、メインプログラム上における次の命令を実行する。
従って、デバッグ時にステップ実行を選択した場合、ファンクションの内部についても常に1ステップずつ実行するため、作業が煩雑で非効率である。特に、ファンクションブロックで記述したプログラムの場合、ファンクションブロック内のプログラムはすでに完成していることが多く、メインの制御プログラム全体をデバッグしている最中にファンクションブロックを構成するプログラムを検証・デバッグする必要性を生じることは少ない。さらに、同一のファンクションブロックは、1つのメインの制御プログラム中に複数回使用されることもあり、係る場合には、その同一内容のファンクションブロックのインスタンスが出現する都度、1ステップずつ実行させるため、煩雑である。
また、ファンクションブロックの内部にブレークポイントを設定することは、困難である。すなわち、ファンクションブロックの実現方法がインスタンスという概念で作成されるため、制御プログラム上に同一のファンクションブロックが複数使用されている場合でも、ファンクションブロックのプログラムの実体が一つしか存在しないので、単にファンクションブロックを構成するプログラムのある位置のステップにブレークポイントを設定した場合、全てのファンクションブロックのインスタンスにおいて、設定したブレークポイントで一時停止してしまうという問題がある。
たとえば、ファンクションブロックがあるロボットの制御をするプログラムの場合であって、ロボットA,ロボットBの2つの制御に用いるとする。このとき、ロボットAについては、ある位置に設定したブレークポイントで一時停止させたいが、ロボットBについては一時停止させたくないという要求があるが、上記の例ではロボットBの制御のためにファンクションブロックのプログラムの実行中にも設定されたブレークポイントで一時停止してしまい、要求に対応できない。
また、ロボットAとロボットBとでそれぞれ別々の位置にブレークポイントを設定したいという要求があるが、仮に2つの位置にブレークポイントを設定すると、ロボットAの制御実行時とロボットBの制御実行時にそれぞれ2つのブレークポイントの位置で一時停止することになるので、係る要求にも対応できない。
この発明は、ファンクションブロックを含む制御プログラムのデバッグ処理を効率よくスムーズに行なうことができるデバッグ装置を提供することを目的とする。さらに、ファンクションブロック内にも実用的なブレークポイントの設定を行なうことができるようにしたデバッグ装置を提供することを他の目的とする。
上記した目的を達成するため、本発明に係るデバッグ装置は、ファンクションブロックを含む制御プログラム用のデバッグ装置であって、制御プログラムを構成する各ステップを1ステップ実行して次のステップで停止する1ステップ実行手段と、前記1ステップ実行手段による次の実行位置がファンクションブロックの場合に、そのファンクションブロック内のプログラムの各ステップを連続実行し、前記制御プログラムにおける前記ファンクションプログラムの実行後のステップに実行位置を移行させ、その位置で停止するステップオーバー実行手段と、前記1ステップ実行手段による次の実行位置がファンクションブロックの場合に、そのファンクションブロック内のプログラムの先頭位置を次の実行位置にして、その位置で停止するステップイン実行手段と、を備え、前記ステップオーバー実行手段で停止した位置及び前記ステップイン実行手段で停止した位置において、前記1ステップ実行手段によって次の位置のステップを1ステップ実行して次のステップで停止するように構成した
本発明では、ステップオーバー実行手段と、ステップイン実行手段の2つの機能を設けることで、ユーザは、ステップ実行位置がファンクションブロックの先頭に来たときに、そのファンクションブロックの内部に入り込んでステップ実行しながら検証するか(ステップイン)、そのファンクションブロック内に入り込むことなく、当該ファンクションブロックを連続実行させ次のステップに移行するか(ステップオーバー)を選択的することができ、状況に応じた適切な処理を効率的に行える。
前記1ステップ実行手段による次の実行位置がファンションブロック内のプログラムのステップの場合に、前記次の実行位置からそのファンクションブロックの最後までを連続実行し、そのファンクションブロックの実行後のステップに実行位置を移行させ、その位置で停止するステップアウト実行手段を備え、前記ステップアウト実行手段で停止した位置において、前記1ステップ実行手段によって次の位置のステップを1ステップ実行して次のステップで停止するように構成するとよい。
このように、ステップアウト実行手段を設けることで、一旦ステップインによりファンクションブロックの内部に入り込み、必要な箇所までステップ実行して検証し、それ以降は連続実行させることができる。よって、係る必要な箇所以降の各ステップに対して、1ステップ実行命令を与える作業を省略できるので、作業性がさらに向上する。
前記制御プログラムは、ファンクションブロック内にファンクションブロック(子)が記述された階層構造のプログラムであり、前記1ステップ実行手段により前記ファンクションブロック内のプログラムを1ステップずつ実行して1ステップずつ停止している際に、次の実行位置が前記ファンクションブロック(子)の先頭位置である場合、前記ステップイン実行手段を稼働させると前記ファンクションブロック(子)内のプログラムの先頭位置を次の実行位置に設定し、その位置で停止し、前記1ステップ実行手段によってそのファンクションブロック(子)内の先頭位置のステップを1ステップ実行して次のステップで停止するように構成するとよい。
また、前記制御プログラムは、ファンクションブロック内にファンクションブロック(子)が記述された階層構造のプログラムであり、前記1ステップ実行手段により前記ファンクションブロック内のプログラムを1ステップずつ実行して1ステップずつ停止している際に、次の実行位置が前記ファンクションブロック(子)の先頭位置である場合、前記ステップイン実行手段を稼働させると前記ファンクションブロック(子)内のプログラムの先頭位置を次の実行位置に設定し、その位置で停止し、前記1ステップ実行手段によってそのファンクションブロック(子)内の先頭位置のステップを1ステップ実行して次のステップで停止するように構成し、前記1ステップ実行手段による次の実行位置が前記ファンクションブロック(子)内のプログラムのステップの場合に、前記ステップアウト実行手段が稼働されると、前記次の実行位置からそのファンクションブロック(子)の最後までを連続実行し、前記ファンクションブロックのプログラム中の前記ファンクションブロック(子)の実行後のステップに実行位置を移行させ、その位置で停止するように構成することもできる。
さらに、前記制御プログラムは、ファンクションブロック内にファンクションブロック(子)が記述された階層構造のプログラムであり、前記1ステップ実行手段により前記ファンクションブロック内のプログラムを1ステップずつ実行して1ステップずつ停止している際に、次の実行位置が前記ファンクションブロック(子)の先頭位置である場合、前記ステップオーバー実行手段を稼働させると前記ファンクションブロック(子)のプログラムの最後までを連続実行し、前記ファンクションブロック内における前記ファンクションブロック(子)の実行後のステップに実行位置を移行させ、その位置で停止するように構成することもできる。
上述した「ファンクションブロック(子)」は、「ファンクションブロック」との関係で相対的に1層分下位層であることを意味している。従って、例えば、ファンクションブロックAの中にファンクションブロックBが存在し、さらにそのファンクションブロックBの中にファンクションブロックCが存在するような場合、ファンクションブロックAとファンクションブロックBの関係では、ファンクションブロックAが「ファンクションブロック」でファンクションブロックBが「ファンクションブロック(子)」となる。また、ファンクションブロックBとファンクションブロックCの関係では、ファンクションブロックBが「ファンクションブロック」でファンクションブロックCが「ファンクションブロック(子)」となる。
一方、前記制御プログラム中に記述されたファンクションブロックを特定するプログラム識別情報と、そのファンクションブロック内のプログラムにおける一時停止させるステップ位置情報と、を関連づけたブレークポイント管理情報を格納する記憶手段と、前記ファンクションブロック内を前記いずれかの連続実行中に前記記憶手段に格納されたブレークポイント管理情報に基づき、現在実行中のステップが、前記記憶手段に格納された前記ブレークポイント管理情報で特定されるファンクションブロックの該当ステップ位置か否かを判断し、該当する場合にプログラム実行を一時停止する手段と、を備えるとよい。
このようにすると、同一のファンクションブロックのインスタンスが制御プログラム中に複数存在しても、各インスタンスを特定できるので、各インスタンスごとに一時停止させるステップ位置を定義できる。よって、同一のファンクションブロックであっても、あるファンクションブロックのインスタンスでは一時停止することなく連続実行させ、別のインスタンスでは一時停止させることができる。また、一時停止させる位置も、それぞれのインスタンスに固有に設定できるので、作業性が向上する。
本発明では、ステップインやステップオーバーなどの機能を設けたため、状況に応じてそれらの機能を使い分けることで、ファンクションブロックを含む制御プログラムのデバッグ処理を効率よくスムーズに行なうことができる。さらに、個々のファンクションブロックのインスタンスごとに一時停止するステップ位置(ブレークポイント)が設定できるため、ファンクションブロック内にも実用的なブレークポイントの設定を行なうことができる。
図1は、本発明に係るデバッグ装置の一実施の形態を示している。デバッグ装置は、たとえばパソコン等のコンピュータに、アプリケーションプログラムをインストールすることで構成される。従って、ハードウェア構成としては、図1に示すように、キーボード,ポインティングデバイス等の入力装置1と、表示装置2と、装置本体(CPU本体)3と、を備えている。装置本体3は、操作部11と、プログラム制御部12と、プログラム実行部13と、制御プログラム格納領域14と、プログラム制御情報領域15と、プログラム実行作業領域16と、I/O領域17と、を備えている。操作部11,プログラム制御部12並びにプログラム実行部13は、CPUで実行されるアプリケーションプログラムで実現される。制御プログラム格納領域14,プログラム制御情報領域15,プログラム実行作業領域16並びにI/O領域17は、RAMやハードディスクなどの各種記憶手段により実現される。
操作部11は、制御プログラムデバッグを行なうための操作画面を表示装置2に出力したり、入力装置1からの入力を受け付け、その受け付けた入力をプログラム制御部12に渡す。図2は、操作画面の一例を示している。この操作画面の配置レイアウトは、画面の上部に、制御プログラムの実行コマンドを与える各種実行操作ボタンB1,B2,B3,B4,B5,B6,……を配置し、左側にはプログラム構成を表示するプロジェクトツリー表示領域R1を配置し、右側にはデバッグ対象の制御プログラムを表示するプログラム表示領域R2を配置している。プログラム表示領域R2中には、現在実行中のステップ(命令)を示す矩形状のカーソルC1が表示される。後述するように、このカーソルC1は、ブレークポイントを設定するステップ位置を特定する際にも使用する。実行操作ボタンB1,B2,B3は、ステップ実行する際に使用する操作ボタンである。1スキャン実行操作ボタンB4は、制御プログラムを先頭から最後まで1回(1スキャン)だけ連続して実行する命令を与えるものである。連続実行操作ボタンB5は、制御プログラムを繰り返し実行する連続実行命令を与えるものである。また、実行停止ボタンB6は、連続実行操作ボタンB5の押下(クリック)により連続実行しているプログラム実行を停止させる命令を与えるものである。
プログラム制御部12は、操作部11から受け取った実行コマンドに基づき実行ステップを決定し、プログラム実行部13に決定した実行ステップの実行要求をしたり、操作部11から受け取ったブレークコマンドの設定位置により、ブレークポイントを管理するブレークポイント管理テーブルを作成し、プログラム制御情報領域15に格納する処理を行なう。
プログラム実行部13は、プログラム制御部12からの要求、及びプログラム制御部12が設定するプログラム制御情報(本実施の形態では、ブレークポイント管理テーブル)により、制御プログラムを実行したり、停止したりする。
制御プログラム格納領域14は、PLCの制御プログラムを格納する記憶エリアであり、メモリの所定の領域に設定される。プログラム実行部13は、この制御プログラム格納領域14に格納された制御プログラムを読み出して実行する。
プログラム制御情報領域15は、プログラム制御部12で作成したブレークポイント管理テーブルなどのプログラム制御情報を格納する記憶エリアであり、メモリの所定の領域に設定される。
プログラム実行作業領域16は、PLCの内部メモリに相当すると共に、プログラム実行部13が制御プログラムを実行する際に使用するワークメモリとなる記憶エリアであり、RAMの所定の領域に設定される。I/O領域17は、PLCのI/Oメモリに相当する記憶エリアであり、RAMの所定の領域に設定される。
プログラム実行部13が実行する制御プログラムは、本実施の形態では、図2のプログラム表示領域R2に表示したように、ファンクションブロックを含み、ラダー言語で記述されたプログラムである。図2に示した制御プログラムの場合、ファンクションで作ったプログラム(FB_A)は、インスタンスとしてプログラムStationNo1内のRobot_1とRobot_2及びプログラムStationNo2内のRobot_3とRobot_4として利用され、それぞれの設備の制御を行う。
図3(a)は、ファンクションブロック(FB_A)のプログラムの一部を示している。図3(b)に示すように、制御プログラムに中にファンクションブロックに対応する矩形状のボックスを記述すると、図3(b)に示す制御プログラムの各命令を順次実行しファンクションブロックに至ると、図3(a)に示すファンクションブロック内のプログラムを最後まで実行し、次いで、図3(b)に示すファンクションブロックの次の命令を実行する。
図3(b)では、Robot_1、Robot_2の制御を、ファンクションブロック(FB_A)で行なう。同一のファンクションブロック(FB_A)のインスタンスであるRobot_1とRobot_2は、プログラム実行作業領域16内に、それぞれ作業領域が設定され(図3(c)参照)、個別に入力データを与えることで、制御対象のRobotを制御する。このようにそれぞれに作業領域が設定されるため、同一のファンクションブロックのプログラムを実行しても、I/Oデータ等が異なり、それぞれの制御対象に応じた制御を行なうことができる。
図4に示すように、ファンクションブロック(FB_A)を構成するプログラム中に、ファンクションブロック(FB−B)を記述することができる。このように、ファンクションブロックは、多重階層化構造の記述ができる。
本実施の形態では、プログラム制御部12が、ステップ実行時の機能として、「ステップオーバー」,「ステップイン」,「ステップアウト」の3つの機能を備えるようにした。これら3つの機能は、いずれも、ファンクションブロックに関する実行において使用するものである。
図5(a)に示すように、ステップオーバーは、実行対象の命令(現ステップ位置)を示すカーソルC1が、ファンクションブロックの先頭にある場合に、そのファンクションブロック内を連続実行し、次のステップへ移動するものである(図5(b)参照)。換言すると、ステップオーバーを実行するコマンドは、ファンクションブロックを1ステップとして実行するコマンドといえる。これにより、ファンクションブロック内の各命令をステップ実行する処理を省略でき、デバッグ作業が効率的に行える。これは、ファンクションブロックのデバッグが不要な場合に、有効な機能である。
ステップインは、実行対象の命令(現ステップ位置)を示すカーソルC1がファンクションブロックの先頭にある場合に、ファンクションブロック内の最初のステップへ移動するものである(図5(c)参照)。つまり、ステップインを実行するコマンドは、ファンクションブロック内の先頭ステップで停止するコマンドといえる。これにより、ファンクションブロック内のプログラムをステップ実行することが可能になる。ファンクションブロック内のプログラムについても検証したい場合に有効な機能である。
ステップアウトは、いったんステップインを実行してファンクションブロック内に入り、1命令ずつステップ実行している場合に、そのファンクションブロック内の残りステップを連続実行し、ファンクションブロック呼出し側のファンクションブロック実行後のステップへ移動するものである。このステップアウトを実行するコマンドは、ファンクションブロック内の残りステップを連続実行し、ファンクションブロック呼出し元のファンクションブロックの次ステップで停止するコマンドといえる。ファンクションブロックの内部をステップ実行して途中まで検証し、それ以降の命令の検証が不要な場合に、その後も1ステップずつステップ実行する作業が省略できる。
このようにステップオーバーと、ステップインの2つの機能を設けることで、ユーザは、ファンクションブロックの先頭に来たときに、そのファンクションブロックの内部に入り込んでステップ実行しながら検証するか(ステップイン)、そのファンクションブロック内に入り込むことなく、当該ファンクションブロックを連続実行させ次のステップに移行するか(ステップオーバー)を選択的することができ、状況に応じた適切な処理を効率的に行える。
さらに、ステップアウトを設けることで、ファンクションブロックの内部について、必要な箇所までステップ実行して検証し、それ以降は連続実行させることでステップ実行コマンドをファンクションブロック内の全てのステップごとに1ステップ実行命令を入力する作業を省略できるので、作業性がさらに向上する。
本実施の形態では、上述した3つの機能と、通常のステップ実行とを、3つの実行操作ボタンB1,B2,B3により実行するようにした。すなわち、B1は、ステップインボタンである。ファンクションの先頭のときにこのステップインボタンB1が押されると、ファンクションブロック内の最初のステップへ移動する。つまり、上述したステップイン機能を実行する。ファンクションブロックの先頭以外、つまり、通常の命令や、ファンクションブロックの内部のときにこのステップインボタンB1が押されると、1ステップ実行する。
B2は、ステップオーバーボタンである。ファンクションブロックの先頭のときに、このステップオーバーボタンB2が押されると、ファンクションブロック内を連続実行する。つまり、上述したステップオーバー機能を実行する。ファンクションブロックの先頭以外、つまり、通常の命令や、ファンクションブロックの内部のときにこのステップオーバーボタンB2が押されると、1ステップ実行する。
B3は、ステップアウトボタンである。ファンクションブロック内の先頭,ファンクションブロックの途中のいずれの場合でも、ステップアウトボタンB3が押されると、そのファンクションブロック内の残りを連続実行する。なお、ファンクションブロックの外の通常命令の位置でこのステップアウトボタンB3が押されると、1ステップ実行する。
つまり、ファンクションブロックの外部の通常の命令の位置では、3つのボタンB1,B2,B3のいずれも、1ステップ実行する命令を意味する。もちろん、本実施の形態では、3つのボタンB1,B2,B3により3つの機能と通常の1ステップ実行の命令の4種類をコマンドの入力を可能としたが、本発明はこれに限ることはなく、1ステップ実行の命令入力用のボタンをさらに設けても良いし、ステップオーバーと、ステップアウトを兼用することで、2つのボタンで実現するようにしても良く、実現手法は各種の対応がとれる。後者の兼用は、ファンクションブロックの先頭位置で兼用ボタンが押された場合には、ステップオーバーを実行し、ファンクションブロックの内部の時に兼用ボタンが押された場合には、ステップアウトを実行するようにすればよい。
図6は、上述した3つの機能と1ステップ実行を行なうプログラム制御部12の機能を示すフローチャートである。プログラム制御部12は、操作部11から受け取った実行コマンド(B1,B2,B3の押下)に基づき実行ステップ(停止ステップ)を決定し、決定した内容に基づきプログラム実行部13に制御プログラムの所定ステップの実行要求を与える。
このフローチャートは、1ステップ実行モードの時に動作する。すなわち、図2に示す操作画面において、1スキャン実行操作ボタンB4あるいは連続実行操作ボタンB5の押下に伴なう連続実行をしていない場合が、1ステップ実行モードである。
1ステップ実行モードにおいて、ステップインボタンB1,ステップオーバーボタンB2,ステップアウトボタンB3のいずれが押されること(コマンド入力)を待つ。そして、ステップオーバーボタンB2が押された場合、次のステップがファンクションブロックか否かを判断する(S11)。具体的には、カーソルC1が、図5(a)に示すようにファンクションブロックの先頭位置にあるか否かにより判断する。次のステップがファンクションブロックの場合(S11がYes)、ファンクションブロック内を連続実行し、そのファンクションブロックの次ステップで停止するように停止位置をセットする(S12)。これに基づき、プログラム実行部13は、ファンクションブロック内を連続実行する。カーソルC1は、停止位置であるファンクションブロックの次ステップに移行する。
また、コマンド入力待ちの時に、ステップインボタンB1が押された場合、次のステップがファンクションブロックか否かを判断する(S13)。次のステップがファンクションブロックの場合(S13がYes)、ファンクションブロック内の先頭ステップで停止するように停止位置をセットする(S14)。これを受けて、プログラム実行部13は、ファンクションブロック内の先頭のステップに飛ぶ。また、操作部11は、そのファンクションブロックのプログラムをプログラム表示領域R2に表示するとともに、カーソルC1を、その表示されたファンクションブロックの先頭のステップに位置させる。
また、コマンド入力待ちの時に、ステップアウトボタンB3が押された場合、ファンクションブロック内を実行中か否かを判断する(S15)。これは、カーソルC1が、ファンクションブロックのプログラムを構成するステップ(先頭か否かを問わず)に位置しているか否かにより判断できる。ファンクションブロック内を実行中の場合(S15がYes)、ファンクションブロック呼出し元のファンクションブロックの次ステップで停止する停止位置をセットする(S16)。これに基づき、プログラム実行部13は、現在のステップ以降のファンクションブロック内のステップを連続実行する。カーソルC1は、停止位置であるファンクションブロックの次ステップに移行する。
いずれのコマンドを入力された場合も、各分岐判断S11,S13,S15の判断結果がNoの場合には、1ステップ実行する(S17)。つまり、プログラム実行部13は、カーソルC1がおかれた現ステップを実行し、次ステップで停止する。
上述したファンクションブロックについての処理は、ファンクションブロック内にファンクションブロックが記述されている場合、係る内部のファンクションブロックについてもと同様の処理を行なう。これにより、たとえば図7(a)に示すように、ファンクションブロックの内部のステップを、ステップオーバー/ステップインの実行により、1ステップずつ実行し、ファンクションブロック(親)内のファンクションブロック(子)まで移動する(図7(b)参照)。この段階で、ステップアウトボタンB3が押されると、ファンクションブロック(子)の内部に入る前であるため、図7(c)に示すように、ファンクションブロック(親)の残りのステップ(ファンクション(子)も含めて)を連続実行し、そのファンクションブロック(親)の次のステップに移る。
図7(b)の状態で、ステップオーバーボタンB2が押されると、そのファンクション(子)を連続実行し、ファンクションブロック(親)の次のステップに移行する(図7(d)参照)。そして、図7(b)の状態で、ステップインボタンB1が押されると、そのファンクション(子)内に入り込み、先頭のステップに移行する(図7(e)参照)。このファンクションブロック(子)の内部プログラムについても、通常のファンクションブロックと同様に処理する。つまり、ステップオーバー/ステップインの実行により、1ステップずつ実行するし、ステップアウトによりそのファンクションブロック(子)の残りのステップを連続実行し、ファンクションブロック(親)の次のステップに移行する(図7(d)参照)。また、ステップオーバー/ステップインの実行を繰り返し行ない、ファンクションブロック内の最終ステップ実行後は、ファンクションブロック呼出し側のファンクションブロック実行後のステップへ移動する(図7(e)→図7(d),図7(d)→図7(e)参照)。
図8は、プログラム制御情報領域15に格納されるブレークポイント管理テーブルのデータ構造の一例を示している。このブレークポイント管理テーブルは、プログラム識別情報と、POU名と、ブレークポイント位置(プログラムのステップ位置)とを関連付けたテーブルである。図2のプロジェクトツリー表示領域R1に表示されたプロジェクトツリーから明らかなように、同一のファンクションブロック(FB_A)が、タスク_000で2つ(Robot_1とRobot_2)とタスク_001で2つ(Robot_3とRobot_4)の合計4箇所で使用されている。
単純に、ファンクションブロック(FB_A)のプログラム自体のステップ位置にブレークポイントを設定すると、4つのインスタンスの全てにおいて、同じステップ位置でブレークして停止してしまう。しかし、実際には、たとえばRobot_1とRobot_4では、ブレークして停止させたいが、Robot_2とRobot_3ではブレークすることなくそのまま連続実行させたいという要求がある。さらに、ブレークさせたいRobot_1とRobot_4において、それぞれ異なるステップ位置で停止させたいという要求もある。これは、同一のファンクションブロックを使用していても、制御対象が異なるため、各制御対象ごとにブレークの必要性の有無や、停止させたいブレークポイントが異なる(たとえば、Robot_1の6番目のステップと、とRobot_4の10番目のステップ)ためである。
そこで、本実施の形態では、タスクNo.とインスタンス識別情報とからなるプログラム識別情報により、対象となるインスタンスを一意に特定する。さらに、係るプログラム識別情報と、プログラムのステップ位置とを管理することで、特定のファンクションブロックのインスタンスに対し、それぞれのブレークポイント設定位置を識別するようにした。
プログラム実行部13は、制御プログラムの連続実行中に、ブレークポイント管理テーブルに格納された情報に基づき現在のステップ位置がブレークして停止すべきステップか否かを判断し、ブレークポイントでない場合には、そのままステップを実行し、ブレークポイントの場合には停止する処理を行なう。そして、ブレークポイントか否かは、プログラム識別とPOU名とステップ位置が一致したことを条件にブレークポイントと判断する。換言すると、プログラム識別とPOU名とステップ位置とのうち、1つでも異なるものがあればブレークポイントではないと判断し、そのステップを実行する。
図8に示すブレークポイント管理テーブルの場合、プログラム識別情報が、「タスク_000¥StationNo1¥Robot_1」のファンクションブロック(FB_A)は、6番目のステップでブレークするという条件が格納され、「タスク_001¥StationNo2¥Robot_4」のファンクションブロック(FB_A)は、10番目のステップでブレークするという条件が格納されているため、StationNo1のRobot_1の6番目のステップではブレークにより停止するが、10番目のステップでは停止しない。逆に、StationNo2のRobot_4は、10番目のステップではブレークにより停止するが、6番目のステップでは停止しない。さらに、StationNo1のRobot_2や、StationNo2のRobot_3を連続実行中には、ブレークされることなく最後まで連続実行される(6番目のステップや10番目のステップでは停止しない)。
係るブレークポイント管理テーブルの登録処理は、プログラム制御部12が、図9に示すフローチャートを実行することで行なう。まず、操作部11を介してブレークポイントが選択(入力)されるのを待つ(S21)。具体的には、図10に示すように、プログラム表示領域R2に表示されたプログラム中の命令(ステップ)のうち、カーソルC1で指定された命令についてブレークポイントの設定命令を受け付ける。すなわち、ユーザは、入力装置1を操作し、表示されたプログラムにおいて、ブレークポイントに設定したい命令(ステップ)にカーソルC1を移動させる。その状態で、入力装置1を操作し、そのカーソルC1が指している命令を、ブレークポイントとして登録する指示を与える。係る指示は、たとえば、設定画面中に所定の登録ボタンを表示し、その登録ボタンをクリックする他、各種の手法がとれる。
ついで、ブレークポイントに指定された命令(ステップ)が、ファンクションブロック内のものか否かを判断する(S22)。そして、ファンクションブロック内の場合には、プログラム識別情報の欄に、タスクNo.とインスタンス識別情報を登録し(S23)、POU名の欄にPOU名を登録し(S24)、位置の欄にステップ位置(番号)を登録する(S24)。上記のプログラム識別情報やPOU名やステップ位置は、操作部11を介して与えられる。プログラム表示領域R2に表示されたプログラムが、プロジェクトツリー表示領域R1におけるどのプログラムであるかは、デバッグ装置側で関連付けられてわかっているため、プログラムの任意の命令(ステップ)の上にカーソルC1を置いた場合、そのプログラムについてのプログラム識別情報や、POU名を操作部11が認識でき、また、カーソルC1にて指定されたステップ位置も操作部11が認識できる。よって、ブレークポイント管理テーブルに登録するのに必要な情報は、操作部11を介してプログラム制御部12が取得できる。たとえば図8に示すRobot_1やRobot_4についてのブレークポイントは、係る処理を実行して登録される。
一方、選択されたブレークポイントがファンクションブロック外の場合には、プログラム識別情報の欄に、タスクNo.を登録し(S26)、POU名の欄にPOU名を登録し(S27)、位置の欄にステップ位置(番号)を登録する(S28)。たとえば図8に示すStationNo3_Robot5についてのブレークポイントは、係る処理を実行して登録される。
一方、プログラム実行部13は、ステップオーバーやステップアウトにより、ファンクションブロック内を連続実行する場合に、図11に示すフローチャートを実行する。すなわち、ファンクションプログラム内の連続実行が開始されると、次に実行するステップを算出する(S32)。すなわち、基本的には、ステップ番号順に実行するが、ジャンプ命令等があり、必ずしも次のステップ番号とは限らないため、この処理ステップで次に実行するステップを決定する。
次に実行するステップが決まると、その決定したステップが、ブレークポイント管理テーブルに登録されているステップ位置・POU名と一致するか否かを判断する(S33)。そして、一致している場合(S33でYes)には、プログラム識別番号(情報)と一致しているか否かを判断する(S34)。そして、一致している場合(S34でYes)には、ブレークポイントと判断し、プログラムの実行を停止する(S35)。また、S33とS34の分岐判断で、いずれかがNoの場合には、次のステップはブレークポイントではないので、S32で求めたステップを実行する(S36)。その後、処理ステップS32に戻り、上述した処理を繰り返し実行する。
次に、Robot_4のファンクションブロックをステップオーバーにより連続実行する場合を例に挙げて説明する。係る場合、ステップを順次実行し、次ステップが、6番目のステップになったとする。すると、POU名はFB_Aで、ステップ位置も6番目となり、ブレークポイント管理テーブルに登録された情報と一致するため、処理ステップS33の分岐判断は、Yesとなる。しかし、プログラム識別情報は、異なるため、処理ステップS34の分岐判断はNoとなり、6番目のステップは実行される。
そして、さらに処理が進み、次ステップが、10番目のステップになったとする。すると、POU名はFB_Aで、ステップ位置も10番目となり、ブレークポイント管理テーブルに登録された情報と一致するため、処理ステップS33の分岐判断は、Yesとなる。さらに、プログラム識別情報も一致するため、処理ステップS34の分岐判断もYesとなるので、プログラム実行がそのステップ位置で停止する。
これに対し、Robot_2やRobot_3のファンクションブロックをステップオーバーにより連続実行した場合、いずれも、6番目と10番目のステップで処理ステップS33の分岐判断がYesとなるものの、プログラム識別情報が一致しないため、処理ステップS34の分岐判断はNoとなり、最後のステップまでブレークされることなく実行される。このように、本実施の形態では、各ファンクションブロックのインスタンスごとにそれぞれ固有の位置にブレークポイントの設定をすることができる。
図11では示していないが、最終ステップまで実行されたならば、そのファンクションブロックについてのプログラム実行が完了するため、上述したステップオーバーやステップアウトの処理により、ファンクションプログラムの次のステップに移行する。
本発明の好適な一実施の形態を示すブロック図である。 操作画面の一例を示す図である。 ファンクションブロックを説明する図である。 ファンクションブロックを説明する図である。 ステップオーバーとステップインとステップアウトを説明する概念図である。 プログラム制御部の機能を示すフローチャートである。 ファンクションブロック内にファンクションブロックが記述されている場合のステップオーバーとステップインとステップアウトを説明する図である。 ブレークポイント管理テーブルのデータ構造の一例を示す図である。 プログラム制御部が持つ、ブレークポイントの登録機能を説明するフローチャートである。 ブレークポイントの登録の作用を説明する図である。 プログラム実行部が持つ、ブレーク処理機能を説明するフローチャートである。
符号の説明
11 操作部
12 プログラム制御部
13 プログラム実行部
14 制御プログラム格納領域
15 プログラム制御情報領域
16 プログラム実行作業領域
17 I/O領域

Claims (6)

  1. ファンクションブロックを含む制御プログラム用のデバッグ装置であって、
    制御プログラムを構成する各ステップを1ステップ実行して次のステップで停止する1ステップ実行手段と、
    前記1ステップ実行手段による次の実行位置がファンクションブロックの場合に、そのファンクションブロック内のプログラムの各ステップを連続実行し、前記制御プログラムにおける前記ファンクションプログラムの実行後のステップに実行位置を移行させ、その位置で停止するステップオーバー実行手段と、
    前記1ステップ実行手段による次の実行位置がファンクションブロックの場合に、そのファンクションブロック内のプログラムの先頭位置を次の実行位置にして、その位置で停止するステップイン実行手段と、
    を備え、
    前記ステップオーバー実行手段で停止した位置及び前記ステップイン実行手段で停止した位置において、前記1ステップ実行手段によって次の位置のステップを1ステップ実行して次のステップで停止するように構成した
    ことを特徴とするデバッグ装置。
  2. 前記1ステップ実行手段による次の実行位置がファンションブロック内のプログラムのステップの場合に、前記次の実行位置からそのファンクションブロックの最後までを連続実行し、そのファンクションブロックの実行後のステップに実行位置を移行させ、その位置で停止するステップアウト実行手段を備え、
    前記ステップアウト実行手段で停止した位置において、前記1ステップ実行手段によって次の位置のステップを1ステップ実行して次のステップで停止するように構成した
    ことを特徴とする請求項1に記載のデバッグ装置。
  3. 前記制御プログラムは、ファンクションブロック内にファンクションブロック(子)が記述された階層構造のプログラムであり、
    前記1ステップ実行手段により前記ファンクションブロック内のプログラムを1ステップずつ実行して1ステップずつ停止している際に、次の実行位置が前記ファンクションブロック(子)の先頭位置である場合、前記ステップイン実行手段を稼働させると前記ファンクションブロック(子)内のプログラムの先頭位置を次の実行位置に設定し、その位置で停止し、前記1ステップ実行手段によってそのファンクションブロック(子)内の先頭位置のステップを1ステップ実行して次のステップで停止するように構成したことを特徴とする請求項1又は2に記載のデバッグ装置。
  4. 前記制御プログラムは、ファンクションブロック内にファンクションブロック(子)が記述された階層構造のプログラムであり、
    前記1ステップ実行手段により前記ファンクションブロック内のプログラムを1ステップずつ実行して1ステップずつ停止している際に、次の実行位置が前記ファンクションブロック(子)の先頭位置である場合、前記ステップイン実行手段を稼働させると前記ファンクションブロック(子)内のプログラムの先頭位置を次の実行位置に設定し、その位置で停止し、前記1ステップ実行手段によってそのファンクションブロック(子)内の先頭位置のステップを1ステップ実行して次のステップで停止するように構成し
    前記1ステップ実行手段による次の実行位置が前記ファンクションブロック(子)内のプログラムのステップの場合に、前記ステップアウト実行手段が稼働されると、前記次の実行位置からそのファンクションブロック(子)の最後までを連続実行し、前記ファンクションブロックのプログラム中の前記ファンクションブロック(子)の実行後のステップに実行位置を移行させ、その位置で停止するように構成したことを特徴とする請求項2に記載のデバッグ装置。
  5. 前記制御プログラムは、ファンクションブロック内にファンクションブロック(子)が記述された階層構造のプログラムであり、
    前記1ステップ実行手段により前記ファンクションブロック内のプログラムを1ステップずつ実行して1ステップずつ停止している際に、次の実行位置が前記ファンクションブロック(子)の先頭位置である場合、前記ステップオーバー実行手段を稼働させると前記ファンクションブロック(子)のプログラムの最後までを連続実行し、前記ファンクションブロック内における前記ファンクションブロック(子)の実行後のステップに実行位置を移行させ、その位置で停止するように構成したことを特徴とする請求項1から4のいずれか1項に記載のデバッグ装置。
  6. 前記制御プログラム中に記述されたファンクションブロックを特定するプログラム識別情報と、そのファンクションブロック内のプログラムにおける一時停止させるステップ位置情報と、を関連づけたブレークポイント管理情報を格納する記憶手段と、
    前記ファンクションブロック内を前記いずれかの連続実行中に前記記憶手段に格納されたブレークポイント管理情報に基づき、現在実行中のステップが、前記記憶手段に格納された前記ブレークポイント管理情報で特定されるファンクションブロックの該当ステップ位置か否かを判断し、該当する場合にプログラム実行を一時停止する手段と、
    を備えたことを特徴とする請求項1から5のいずれか1項に記載のデバッグ装置。
JP2005289405A 2005-09-30 2005-09-30 デバッグ装置 Active JP3992054B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005289405A JP3992054B2 (ja) 2005-09-30 2005-09-30 デバッグ装置
US11/529,566 US20070078538A1 (en) 2005-09-30 2006-09-29 Debug device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005289405A JP3992054B2 (ja) 2005-09-30 2005-09-30 デバッグ装置

Publications (2)

Publication Number Publication Date
JP2007102385A JP2007102385A (ja) 2007-04-19
JP3992054B2 true JP3992054B2 (ja) 2007-10-17

Family

ID=38029285

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005289405A Active JP3992054B2 (ja) 2005-09-30 2005-09-30 デバッグ装置

Country Status (1)

Country Link
JP (1) JP3992054B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8726091B2 (en) * 2011-06-24 2014-05-13 Rockwell Automation Technologies, Inc. Troubleshooting system for industrial control programs
JP6545472B2 (ja) * 2015-01-27 2019-07-17 蛇の目ミシン工業株式会社 ロボット

Also Published As

Publication number Publication date
JP2007102385A (ja) 2007-04-19

Similar Documents

Publication Publication Date Title
US20070078538A1 (en) Debug device
KR101627488B1 (ko) 엔지니어링 툴, 프로그램 편집 장치 및 프로그램 편집 시스템
JPH0561646B2 (ja)
KR20060120539A (ko) 그래피컬 프로그래밍 장치 및 프로그래머블 표시기
KR101889631B1 (ko) 시퀀스 프로그램 작성 지원 장치
JP4242361B2 (ja) 開発支援装置
JP4062546B2 (ja) デバッグ装置
JP2007058368A (ja) プログラムの照合装置
US20150227348A1 (en) Development support device and development support program
JP3992054B2 (ja) デバッグ装置
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
CN110554861A (zh) 具有编译和读取-评估-打印-循环操作的软件开发环境
US8989891B2 (en) Machining tool control system and control method
JP2007072518A (ja) 制御装置のヒューマン・マシン・インタフェース装置
JP4941674B2 (ja) シミュレーション・システム
US20010044929A1 (en) Multi-process display method in debugger system
JP4517302B2 (ja) 開発支援装置の制御方法及びプログラム並びに記録媒体
JP2006146955A (ja) 開発支援装置
TWI569118B (zh) 畫面作成軟體
JP2005310056A (ja) プログラム実行制御方式
JP4488231B2 (ja) プログラム管理装置
JP7504324B1 (ja) 支援プログラム、支援装置、支援システム及び支援方法
JP7483183B1 (ja) 画像生成プログラム、画像生成装置、支援システム及び画像生成方法
JP7483184B1 (ja) 分析プログラム、分析装置、支援システム及び分析方法
JP2004326161A (ja) シーケンスプログラム編集装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070307

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20070315

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20070404

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070410

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070611

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: 20070703

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070716

R150 Certificate of patent or registration of utility model

Ref document number: 3992054

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100803

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100803

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110803

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110803

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120803

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130803

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250