JP4062546B2 - デバッグ装置 - Google Patents

デバッグ装置 Download PDF

Info

Publication number
JP4062546B2
JP4062546B2 JP2005289404A JP2005289404A JP4062546B2 JP 4062546 B2 JP4062546 B2 JP 4062546B2 JP 2005289404 A JP2005289404 A JP 2005289404A JP 2005289404 A JP2005289404 A JP 2005289404A JP 4062546 B2 JP4062546 B2 JP 4062546B2
Authority
JP
Japan
Prior art keywords
program
function block
execution
breakpoint
executed
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
JP2005289404A
Other languages
English (en)
Other versions
JP2007102384A (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 JP2005289404A priority Critical patent/JP4062546B2/ja
Priority to US11/529,566 priority patent/US20070078538A1/en
Publication of JP2007102384A publication Critical patent/JP2007102384A/ja
Application granted granted Critical
Publication of JP4062546B2 publication Critical patent/JP4062546B2/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又は複数のインスタンスが記述され、プログラムの実行位置がそのファンクションブロックの記述された位置に至ると、サブルーチンプログラムのように上記のファンクションブロックの実体に記述された各命令を順に実行し、最後の命令まで実行すると再び、元の位置に復帰し、メインプログラム上における次の命令を実行する。
このファンクションブロックの内部にブレークポイントを設定することは、困難である。すなわち、ファンクションブロックの実現方法がインスタンスという概念で作成されるため、制御プログラム上に同一のファンクションブロックが複数使用されている場合でも、ファンクションブロックのプログラムの実体が一つしか存在しないので、単にファンクションブロックを構成するプログラムのある位置のステップにブレークポイントを設定した場合、全てのファンクションブロックのインスタンスにおいて、設定したブレークポイントで一時停止してしまうという問題がある。
たとえば、ファンクションブロックがあるロボットの制御をするプログラムの場合であって、ロボットA,ロボットBの2つの制御に用いるとする。このとき、ロボットAについては、ある位置に設定したブレークポイントで一時停止させたいが、ロボットBについては一時停止させたくないという要求があるが、上記の例ではロボットBの制御のためにファンクションブロックのプログラムの実行中にも設定されたブレークポイントで一時停止してしまい、要求に対応できない。
また、ロボットAとロボットBとでそれぞれ別々の位置にブレークポイントを設定したいという要求があるが、仮に2つの位置にブレークポイントを設定すると、ロボットAの制御実行時とロボットBの制御実行時にそれぞれ2つのブレークポイントの位置で一時停止することになるので、係る要求にも対応できない。
この発明は、ファンクションブロック内にも実用的なブレークポイントの設定を行なうことができるようにしたデバッグ装置を提供することを目的とする。
上記した目的を達成するため、本発明に係るデバッグ装置は、ファンクションブロックを含む制御プログラム用のデバッグ装置であって、一つのファンクションブロックが前記制御プログラム中に複数使用されている場合に、前記制御プログラムの先頭から最後まで1回実行するにあたり、前記制御プログラムの実行位置がそのファンクションブロックの記述位置に至る度に、そのファンクションブロック内の各ステップを順に最後まで実行し、再び制御プログラムに戻って次のステップを実行するものであって、前記ファンクションブロックを含む制御プログラムのステップを連続実行させるプログラム実行手段と、所望のブレークポイントについて、ファンクションブロックのプログラム名と、前記制御プログラム中に記述されたファンクションブロックをインスタンスとして個別に特定するプログラム識別情報と、そのインスタンスとして特定されるファンクションブロック内において一時停止させるステップ位置情報と、を関連づけたブレークポイント管理情報を格納する記憶手段と、前記プログラム実行手段が、前記ファンクションブロック内を連続実行中に、前記記憶手段に格納されたブレークポイント管理情報に基づき、次の実行ステップが、前記ブレークポイント管理情報のプログラム名のファンクションブロックに該当するか否か、プログラム識別情報で一意に特定されるファンクションブロックのインスタンスに該当するか否か、ステップ位置情報に該当するか否かを判断し、すべてに該当する場合にブレークポイントと判断してプログラム実行を一時停止し、一つでも該当しない場合にはブレークポイントではないと判断してそのステップを実行する手段を備えて構成した。また、前記プログラム識別情報は、ファンクションブロックのインスタンス識別情報を含むものとすることができる。もちろん、他の情報をさらに付加しても良いし、インスタンス識別情報以外の情報(該当するインスタンスが特定できる情報)でも良い。ブレークポイント管理情報は、実施の形態では、ブレークポイント管理テーブルに対応する。更にまた、前記プログラム実行手段が、制御プログラム中の記述位置で特定されるファンクションブロックごとにプログラム実行作業領域を備え、同一のファンクションブロックであっても、記述位置が異なれば異なる入力データを与えてぞれぞれの制御を行なうものとしてもよい。
このようにすると、同一のファンクションブロックのインスタンスが制御プログラム中に複数存在しても、各インスタンスを特定できるので、各インスタンスごとに一時停止させるステップ位置を定義できる。よって、同一のファンクションブロックであっても、あるファンクションブロックのインスタンスでは一時停止することなく連続実行させ、別のインスタンスでは一時停止させることができる。また、一時停止させる位置も、それぞれのインスタンスに固有に設定できるので、作業性が向上する。
また、前記記憶手段には、ファンクションブロックの外に存在するステップについて、そのステップを特定するプログラム識別情報と、そのステップのステップ位置情報と、を関連づけたブレークポイント管理情報が格納され、前記一時停止する手段は、前記ファンクションブロックの外に存在するステップについても該当する場合にプログラム実行を一時停止するものとすることができる。係る構成を採ると、ファンクションブロックの内外を問わず、同一のシステム構成で、ブレークポイントの管理ができるので、好ましい。
本発明では、個々のファンクションブロックのインスタンスごとに一時停止するステップ位置(ブレークポイント)が設定できるため、ファンクションブロック内にも実用的なブレークポイントの設定を行なうことができる。
図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がおかれた現ステップを実行し、次ステップで停止する。
次に連続実行について説明する。プログラム実行部13は、1スキャン実行操作ボタンB4が押されたことを操作部11からプログラム制御部12経由で取得すると、制御プログラムを先頭から最後まで1回(1スキャン)だけ連続実行し、停止する。プログラム実行部13は、連続実行操作ボタンB5が押されたことを、操作部11からプログラム制御部12経由で取得すると、制御プログラムを繰り返し実行する。また、プログラム実行部13は、制御プログラムを繰り返し実行している最中に、実行停止ボタンB6が押されたことを認識すると、制御プログラムの先頭のステップ位置でプログラム実行を停止する。実際には、制御プログラムの最後までプログラム実行をし、実行対象のステップを制御プログラムの先頭に戻した際に、実行停止ボタンB6が押されているか否かを判断し、実行停止ボタンB6が押されていない場合には、制御プログラムを先頭から最後まで連続実行し、実行位置を制御プログラムの先頭に戻す。また、実行対象のステップを制御プログラムの先頭に戻した際に、実行停止ボタンB6が押されている場合には、プログラムの実行を停止する。このように実行停止ボタンB6は、連続実行ボタンB5が押され、制御プログラムを繰り返し実行しているときに有効に機能するものであるため、通常は図2に示すように非アクティブなボタンとなって選択できず、連続実行ボタンB5が押されたことを条件に実行停止ボタンB6がアクティブとなる。
プログラム制御情報領域15にブレークポイントを設定・登録しておくと、プログラム実行部13は、上述した連続実行中に次の実行位置がブレークポイントで設定されたステップ位置になったか否かを判断し、ブレークポイントでない場合にはそのステップを実行し、ブレークポイントのステップ位置の場合にはプログラムの実行を一時停止する。本実施の形態では、プログラム制御情報領域15に格納するブレークポイントの情報を、以下のようにした。
図7は、プログラム制御情報領域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つでも異なるものがあればブレークポイントではないと判断し、そのステップを実行する。
図7に示すブレークポイント管理テーブルの場合、プログラム識別情報が、「タスク_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が、図8に示すフローチャートを実行することで行なう。まず、操作部11を介してブレークポイントが選択(入力)されるのを待つ(S21)。具体的には、図9に示すように、プログラム表示領域R2に表示されたプログラム中の命令(ステップ)のうち、カーソルC1で指定された命令についてブレークポイントの設定命令を受け付ける。すなわち、ユーザは、入力装置1を操作し、表示されたプログラムにおいて、ブレークポイントに設定したい命令(ステップ)にカーソルC1を移動させる。その状態で、入力装置1を操作し、そのカーソルC1が指している命令を、ブレークポイントとして登録する指示を与える。係る指示は、たとえば、設定画面中に所定の登録ボタンを表示し、その登録ボタンをクリックする他、各種の手法がとれる。
ついで、ブレークポイントに指定された命令(ステップ)が、ファンクションブロック内のものか否かを判断する(S22)。そして、ファンクションブロック内の場合には、プログラム識別情報の欄に、タスクNo.とインスタンス識別情報を登録し(S23)、POU名の欄にPOU名を登録し(S24)、位置の欄にステップ位置(番号)を登録する(S24)。上記のプログラム識別情報やPOU名やステップ位置は、操作部11を介して与えられる。プログラム表示領域R2に表示されたプログラムが、プロジェクトツリー表示領域R1におけるどのプログラムであるかは、デバッグ装置側で関連付けられてわかっているため、プログラムの任意の命令(ステップ)の上にカーソルC1を置いた場合、そのプログラムについてのプログラム識別情報や、POU名を操作部11が認識でき、また、カーソルC1にて指定されたステップ位置も操作部11が認識できる。よって、ブレークポイント管理テーブルに登録するのに必要な情報は、操作部11を介してプログラム制御部12が取得できる。たとえば図7に示すRobot_1やRobot_4についてのブレークポイントは、係る処理を実行して登録される。
一方、選択されたブレークポイントがファンクションブロック外の場合には、プログラム識別情報の欄に、タスクNo.を登録し(S26)、POU名の欄にPOU名を登録し(S27)、位置の欄にステップ位置(番号)を登録する(S28)。たとえば図7に示すStationNo3_Robot5についてのブレークポイントは、係る処理を実行して登録される。
プログラム実行部13は、制御プログラムの実行に際し、上述した登録処理により作成されたブレークポイント管理テーブルを参照しつつ、プログラムの実行・停止を行なう。具体的には、プログラム実行部13は、図10に示すフローチャートを実行する。
まず、ステップ実行か否かを判断する(S30)。図2に示す操作画面において、1スキャン実行操作ボタンB4あるいは連続実行操作ボタンB5の押下に伴なう連続実行をしていない場合が、ステップ実行である。ステップ実行の場合には、停止位置をセットする処理を行なう(S31)。この停止位置セットの処理にて、1ステップ実行の場合には、停止位置を1ステップ実行後の次に実行するステップにセットする。ステップオーバー実行の場合には、停止位置をファンクションブロックの次ステップにセットする(図6のS16と同様である)。
1スキャン実行操作ボタンB4あるいは連続実行操作ボタンB5が押された場合には、連続実行であるため、処理ステップS30の分岐判断は、Noとなり、S31を経由しないので停止位置はセットされない。
そして、プログラム実行部13は、現在の実行位置のステップを実行する(S32)。ついで、プログラム実行部13は、次に実行するステップを算出する(S33)。すなわち、基本的には、ステップ番号順に実行するが、ジャンプ命令等があり、必ずしも次のステップ番号とは限らないため、この処理ステップで次に実行するステップを決定する。
次に実行するステップが決まると、プログラム実行部13は、その決定したステップが、スキャンの先頭(制御プログラムの先頭)のステップか否かを判断する(S34)。先頭でない場合(処理ステップS34の分岐判断でNo)には、S33で決定した次の実行位置(ステップ)が、ブレークポイント管理テーブルに登録されているステップ位置・POU名と一致するか否かを判断する(S35)。そして、一致している場合(処理ステップS35の分岐判断でYes)には、プログラム識別番号(情報)と一致しているか否かを判断する(S36)。そして、一致している場合(処理ステップS36の分岐判断でYes)には、現在実行しようとしている次のステップがブレークポイントだと判断し、プログラムの実行を停止する(S39)。また、処理ステップS35と処理ステップS36の分岐判断で、いずれかがNoの場合には、次のステップはブレークポイントではないので、処理ステップS37に飛ぶ。処理ステップS37にて、現在実行しようとしている次のステップが、S31でセットされたステップ停止位置か否かを判断する(S37)。ステップ停止位置の場合(処理ステップS37の分岐判断でYes)には、プログラムの実行を停止する(S39)。ステップ停止位置でない場合(処理ステップS37の分岐判断でNo)には、処理ステップS32を実行する。
一方、処理ステップS33で求めたステップが、制御プログラムの先頭の場合、処理ステップS34の分岐判断でYesとなるため、停止コマンドを受け付け中か否かを判断する(S37)。具体的には、実行停止ボタンB6が押されている(受付中)か否かを判断する。停止コマンドを受け付けていない場合には、処理ステップS35に飛ぶ。
このフローチャートにより、1ステップ実行の場合には、処理ステップS32にて1ステップを実行すれば、次はステップ停止位置なので、処理ステップS37にてYesとなり、プログラム実行を停止する。つまり1ステップだけ実行して停止する。また、ステップオーバー実行の場合には、処理ステップS32からS35まで順番に進み、ブレークポイントが来ない限り処理ステップS35ではNoNoとなり、ファンクションブロック内のステップが残っている限り、処理ステップS37にてNoNoとなるので、処理ステップS32に戻り、それを繰り返す。ブレークポイントがなければ、前述のようにS32〜S37を繰り返して、ファンクションブロック内のステップをすべて処理した後、S31にてセットしたステップ停止位置にくるので、S37にてYesとなり、プログラム実行を停止する。つまりファンクションブロック内の残りのステップをすべて実行してから停止する。なお、ブレークポイントがあれば、1ステップ実行でもステップオーバー実行でも、処理ステップS35およびS36にてYesとなり、ブレークポイントの位置でプログラム実行は停止する(S39)。
1スキャン実行操作ボタンB4あるいは連続実行操作ボタンB5が押されて実行する場合には、スキャン先頭でなければ処理ステップS32からS35まで順番に進み、ブレークポイントが来ない限り処理ステップS35ではNoNoとなり、停止位置はセットされていないから処理ステップS37はNoNoとなり、処理ステップS32に戻り、それを繰り返す。ブレークポイントがあれば、処理ステップS35およびS36にてYesとなり、ブレークポイントの位置でプログラム実行は停止する(S39)。つまり、連続実行の場合には、ブレークポイントがない限り、かつ、実行停止ボタンB6が押されない限り、延々と前述のS32からS37を繰り返し実行する。連続実行中に実行停止ボタンB6が押されて、停止コマンドを受け付けた場合には、スキャン先頭位置にきたときにS34にてYesとなり、S38にてYesとなり、プログラム実行停止となる。
1スキャン実行の場合には、スキャン先頭でなければ処理ステップS32からS35まで順番に進み、ブレークポイントが来ない限り処理ステップS35でNoNoとなり、処理ステップS37はNoNoとなり、処理ステップS32に戻る。1スキャン内のプログラムが残っている限り、このフローを繰り返す。ブレークポイントがあれば、処理ステップS35およびS36の処理にて、ブレークポイントの位置でプログラム実行は停止する(S39)。ブレークポイントがなくても、1スキャン内のプログラムのステップをすべて処理した後、スキャン先頭に戻った場合には、S34でYesとなり、ST38でYesとなりプログラム実行は停止する(S39)。補足すると、1スキャン実行操作ボタンB4が押された場合に、実行停止ボタンB6の操作によらず、自動的に停止コマンドを発行しておくことで、このような動作となる。なお、1スキャン実行操作ボタンB4の押下と共に停止コマンドを自動的に発行せずに、処理ステップST38において、「停止コマンド受付か?」および「1スキャン実行か?」の2つの判断をするようにしてもよい。2つの判断処理を別々に分けて直列なフロー処理としてもよい。
なお、図10のフローチャートにおいて、1スキャン実行を処理ステップS30におけるステップ実行と扱うように変形することが可能である。その場合は、処理ステップS30にてYesとなり、処理ステップS31において停止位置をスキャン先頭ステップにセットする。この変形例だと、1スキャン実行の場合、スキャン先頭位置にくればS34にてYesとなるが、ST38でNoNoとなり、ST35とST36を経て、ST37にて、ST31にてセットされたステップ停止位置と一致するのでYesとなり、プログラム実行停止(S39)となる。
次に、Robot_4のファンクションブロック内を連続実行する場合を例に挙げて説明する。係る場合、ステップを順次実行し、次ステップが、6番目のステップになったとする。すると、POU名はFB_Aで、ステップ位置も6番目となり、ブレークポイント管理テーブルに登録された情報と一致するため、処理ステップS35の分岐判断は、Yesとなる。しかし、プログラム識別情報は、異なるため、処理ステップS36の分岐判断はNoとなり、6番目のステップは実行される。
そして、さらに処理が進み、次ステップが、10番目のステップになったとする。すると、POU名はFB_Aで、ステップ位置も10番目となり、ブレークポイント管理テーブルに登録された情報と一致するため、処理ステップS35の分岐判断は、Yesとなる。さらに、プログラム識別情報も一致するため、処理ステップS36の分岐判断もYesとなるので、プログラム実行がそのステップ位置で停止する。
これに対し、Robot_2やRobot_3のファンクションブロックをステップオーバーにより連続実行した場合、いずれも、6番目と10番目のステップで処理ステップS35の分岐判断がYesとなるものの、プログラム識別情報が一致しないため、処理ステップS36の分岐判断はNoとなり、最後のステップまでブレークされることなく実行される。このように、本実施の形態では、各ファンクションブロックのインスタンスごとにそれぞれ固有の位置にブレークポイントの設定をすることができる。
もちろん、本発明は、ファンクションブロックの外の通常の命令(ステップ)に対して設定したブレークポイントについても、同様の手順でブレーク処理に基づく一時停止を行なうことができる。
なお、上述した説明では、B4,B5が押されて連続実行をする場合について説明したが、ステップオーバーやステップアウトにより、ファンクションブロック内を連続実行している場合にも本発明が適用できる。
本発明の好適な一実施の形態を示すブロック図である。 操作画面の一例を示す図である。 ファンクションブロックを説明する図である。 ファンクションブロックを説明する図である。 ステップオーバーとステップインとステップアウトを説明する概念図である。 プログラム制御部の機能を示すフローチャートである。 ブレークポイント管理テーブルのデータ構造の一例を示す図である。 プログラム制御部が持つ、ブレークポイントの登録機能を説明するフローチャートである。 ブレークポイントの登録の作用を説明する図である。 プログラム実行部が持つ、ブレーク処理機能を説明するフローチャートである。
符号の説明
11 操作部
12 プログラム制御部
13 プログラム実行部
14 制御プログラム格納領域
15 プログラム制御情報領域
16 プログラム実行作業領域
17 I/O領域

Claims (3)

  1. ファンクションブロックを含む制御プログラム用のデバッグ装置であって、一つのファンクションブロックが前記制御プログラム中に複数使用されている場合に、前記制御プログラムの先頭から最後まで1回実行するにあたり、前記制御プログラムの実行位置がそのファンクションブロックの記述位置に至る度に、そのファンクションブロック内の各ステップを順に最後まで実行し、再び制御プログラムに戻って次のステップを実行するものであって、
    前記ファンクションブロックを含む制御プログラムのステップを連続実行させるプログラム実行手段と、
    所望のブレークポイントについて、ファンクションブロックのプログラム名と、前記制御プログラム中に記述されたファンクションブロックをインスタンスとして個別に特定するプログラム識別情報と、そのインスタンスとして特定されるファンクションブロック内において一時停止させるステップ位置情報と、を関連づけたブレークポイント管理情報を格納する記憶手段と、
    前記プログラム実行手段が、前記ファンクションブロック内を連続実行中に、前記記憶手段に格納されたブレークポイント管理情報に基づき、次の実行ステップが、前記ブレークポイント管理情報のプログラム名のファンクションブロックに該当するか否か、プログラム識別情報で一意に特定されるファンクションブロックのインスタンスに該当するか否か、ステップ位置情報に該当するか否かを判断し、すべてに該当する場合にブレークポイントと判断してプログラム実行を一時停止し、一つでも該当しない場合にはブレークポイントではないと判断してそのステップを実行する手段を備えた
    ことを特徴とするデバッグ装置。
  2. 前記プログラム実行手段が、制御プログラム中の記述位置で特定されるファンクションブロックごとにプログラム実行作業領域を備え、プログラム名が同同一のファンクションブロックであっても、記述位置が異なれば異なる入力データを与えてぞれぞれの制御を行なうものであることを特徴とする請求項1に記載のデバッグ装置。
  3. 前記記憶手段には、ファンクションブロックの外に存在するステップについて、そのステップを特定するプログラム識別情報と、そのステップのステップ位置情報とを関連づけたブレークポイント管理情報が格納され、
    前記一時停止する手段は、前記ファンクションブロックの外に存在するステップについても該当する場合にプログラム実行を一時停止するものであることを特徴とする請求項1に記載のデバッグ装置。
JP2005289404A 2005-09-30 2005-09-30 デバッグ装置 Active JP4062546B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005289404A JP4062546B2 (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
JP2005289404A JP4062546B2 (ja) 2005-09-30 2005-09-30 デバッグ装置

Publications (2)

Publication Number Publication Date
JP2007102384A JP2007102384A (ja) 2007-04-19
JP4062546B2 true JP4062546B2 (ja) 2008-03-19

Family

ID=38029284

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP4062546B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010191480A (ja) * 2007-06-01 2010-09-02 Mitsubishi Electric Corp シミュレーションシステム
JP2009245194A (ja) * 2008-03-31 2009-10-22 Fuji Electric Systems Co Ltd プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP6458626B2 (ja) * 2015-05-07 2019-01-30 富士通株式会社 デバッグ回路、半導体装置及びデバッグ方法
WO2023248478A1 (ja) * 2022-06-24 2023-12-28 ファナック株式会社 情報処理装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3372106B2 (ja) * 1993-06-21 2003-01-27 株式会社東芝 プログラムデバッグ装置
JP3018912B2 (ja) * 1994-08-12 2000-03-13 横河電機株式会社 検証支援システム
JP2000276212A (ja) * 1999-03-23 2000-10-06 Digital Electronics Corp 産業用制御装置の制御プログラムのシミュレーションのためのシステムおよび方法ならびにそのソフトウェアが記録された記録媒体

Also Published As

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

Similar Documents

Publication Publication Date Title
US20070078538A1 (en) Debug device
JP5599535B2 (ja) シーケンスプログラムデバッグ支援装置
JPH0561646B2 (ja)
KR101627488B1 (ko) 엔지니어링 툴, 프로그램 편집 장치 및 프로그램 편집 시스템
US20130144409A1 (en) Control program generation device, control program generation program, and control program generation method
JP4062546B2 (ja) デバッグ装置
US20120072777A1 (en) Debugging device, debugging method, and computer program for sequence program
JP2007058368A (ja) プログラムの照合装置
KR20160014117A (ko) 프로그래밍 장치
JP4242361B2 (ja) 開発支援装置
KR20150119314A (ko) 시스템 개발 장치, 방법 및 프로그램
JP5994862B2 (ja) 開発支援装置及び開発支援プログラム
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP6351906B1 (ja) デバッグ装置
JP2002268730A (ja) フィールドデバイスのメンテナンス装置
JP3992054B2 (ja) デバッグ装置
US8989891B2 (en) Machining tool control system and control method
JP4941674B2 (ja) シミュレーション・システム
JP4517302B2 (ja) 開発支援装置の制御方法及びプログラム並びに記録媒体
JP2005310056A (ja) プログラム実行制御方式
JP4488231B2 (ja) プログラム管理装置
CN111324088A (zh) 信息处理装置
KR20180065416A (ko) 빅데이터 분석 프로세스 모델링을 위한 인터페이스 장치
JP2006134099A (ja) 制御用表示装置、エディタ装置、プログラムおよび記録媒体
JP7483184B1 (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: 20070328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070403

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070904

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071101

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071219

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4062546

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110111

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110111

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120111

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130111

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140111

Year of fee payment: 6