JP2004021614A - トレースデータ処理装置、トレースデータ処理方法およびその方法を実行するためのプログラム - Google Patents
トレースデータ処理装置、トレースデータ処理方法およびその方法を実行するためのプログラム Download PDFInfo
- Publication number
- JP2004021614A JP2004021614A JP2002175786A JP2002175786A JP2004021614A JP 2004021614 A JP2004021614 A JP 2004021614A JP 2002175786 A JP2002175786 A JP 2002175786A JP 2002175786 A JP2002175786 A JP 2002175786A JP 2004021614 A JP2004021614 A JP 2004021614A
- Authority
- JP
- Japan
- Prior art keywords
- subroutine
- pointer
- call
- called
- counter
- 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.)
- Granted
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Abstract
【解決手段】呼び出し元サブルーチンの呼び出しステップ番号(CS_N)、呼び出し先サブルーチンのポインタ番号(RS_N)、呼び出し先サブルーチンの実行結果(RS_R)を格納するデータテーブル23と、前記CS_Nおよび前記RS_Nの格納位置を示すCALLポインタ24(P1)と、前記RS_Rの格納位置を示すRETポインタ25(P2)と、データテーブル23への記録を指示するトレースポイント付ポインタが呼び出し先サブルーチンにあるときに、前記CS_Nおよび前記RS_Nを夫々P1が示す位置に格納し、呼び出し先サブルーチンからの復帰処理時に、前記RS_RをP2が示す位置に格納する格納手段を備える。
【選択図】 図2
Description
【発明の属する技術分野】
この発明は、コントローラに搭載されるプログラムのサブルーチンの呼び出し経路と、異常発生時のサブルーチンの呼び出しタイミングとをトレースできるトレースデータ処理装置、トレースデータ処理方法およびその方法を実行するためのプログラムに関するものである。
【0002】
【従来の技術】
最近の工場では、FAシステム(ファクトリー・オートメーション・システム)を活用した生産活動が行われることが多い。このFAシステムとは、生産機器、搬送機器等の機器と、生産計画、生産管理等の生産行為とを総合的に制御するような、自動化と情報化とを兼ね備えた制御システムのことを指してこう呼んでいる。
【0003】
図8は、FAシステムにおけるシステム構成の一例を示し図である。同図において、コントローラ81は、システムバスを介して接続されたインテリジェントユニット82や非インテリジェントユニット83を制御する。インテリジェントユニット82には、I/O機器84、サーボモータ85、センサ86、ランプ、アクチュエータ87等の様々な制御機器が接続され、非インテリジェントユニット83には、スイッチ、出力機器、電光管等88が接続されている。また、これらの制御機器等は、夫々外部との物理的な入出力、通信、データ変換などを行っている。コントローラ81は、内部にマイクロプロセッサ(MPU)を搭載しており、このMPUに搭載されたユーザの制御プログラムを実行させ、システム全体の動作を制御している。
【0004】
ところで、コントローラの制御プログラムをデバッグする場合などにおいて、ある実行されたサブルーチンがどのような経路で呼び出されたかを履歴としてトレースしたい場合がある。さらに、サブルーチン内で異常が発生するような場合には、そのトレースデータを元に異常が発生した場合の経路を辿ってデバッグしたいと考えるのは制御プログラムの開発者の心理である。
【0005】
図9は、従来技術のコントローラの内部構成を示すブロック図である。91はMPUであり、ユーザの制御プログラムを実行し、システム全体の動作を制御する。92はワークRAM、93はシステムROMである。システムROM93にはコントローラの動作を制御するシステムプログラムが記述されており、このシステムプログラムがユーザの制御プログラムを実行することで、システム全体の制御が実行される。ワークRAM92は、MPU91がシステムROM93に格納されたシステムプログラムを実行する際に使用する作業(ワーク)に用いるメモリである。すなわち、一時的に保存する必要があるデータを退避したり、コントローラ外部との入出力時に発生したデータを蓄えるために使用する。
【0006】
また、図9において、94はユーザRAM、95はパラメータ、96はユーザプログラム、97はデバイスメモリである。ユーザの制御プログラムはユーザプログラム96に格納される。その際、デバイスメモリ97はユーザの制御プログラム実行時のワ−クエリアとして使われる。パラメータ95は制御プログラムの実行時の条件が与えられる。98はアドレスバス、99はデータバスである。アドレスバス98はMPU91がワークRAM92、システムROM93、ユーザRAM94、デバイスメモリ97にアクセスするために使用し、データバス99は各メモリとのデータの読み出しまたは書き込みに使用する。システムROM93は読み出し専用メモリである。
【0007】
図10は、従来技術のコントローラの制御プログラムの動作の一例を示す図である。ステップS10201〜S10205までがメインプログラムの記述である。まず、ステップS10201で実行条件aを読み出し、実行条件が成立した時、ステップS10202でポインタPaから始まるサブルーチンを呼び出し、ステップS10203で実行条件bを読み出し、実行条件が成立した時、ステップS10204でポインタPbから始まるサブルーチンを呼び出す。なお、ステップS10205はメインプログラムの終了をあらわす命令(FEND命令)を示している。
【0008】
つぎに、PaはステップS10202で呼び出されたサブルーチンの先頭を示すポインタであり、ステップS10206で実行条件Paaを読み出し、実行条件が成立した時、ステップS10207でポインタPcomから始まるサブルーチンを呼び出す。このサブルーチンの実処理終了後、ステップS10208〜S10209の命令を実行し、ステップS10210でサブルーチンから復帰する命令(RET命令)を実行する。同様に、PbはステップS10211で呼び出されたサブルーチンの先頭を示すポインタであり、ステップS10211で実行条件Pbbを読み出し、実行条件が成立した時、ステップS10212でポインタPcomから始まるサブルーチンを呼び出す。このサブルーチンの実処理終了後、ステップS10213〜S10214の命令を実行し、ステップS10215でサブルーチンから復帰する命令(RET命令)を実行する。
【0009】
Pcomは、ステップS10207またはS10212で呼び出されたサブルーチンの先頭を示すポインタであり、ステップS10216で実行条件Pccを読み出し、実行条件が成立した時、ステップS10217でサブルーチンの実処理を開始し、ステップS10218〜S10219の命令を実行し、ステップS10220でサブルーチンから復帰する命令(RET命令)を実行する。なお、ステップS10221は全てのプログラムの終了を意味する命令(END命令)を示している。
【0010】
図11は、従来技術におけるコントローラのサブルーチンプログラムの処理を示す図である。同図に示すように、通常コントローラは、外部からの入力処理、プログラム実行、外部への出力処理を一周期として繰り返すことでプログラムを実行している。この一周期の時間をスキャンタイムと呼ぶ。また、プログラム実行中にサブルーチン呼び出しが発生すると、メインプログラムの実行が一旦中断され、サブルーチン呼び出しのポインタに応じたプログラムが実行され、サブルーチンプログラムの実行が終了すると、サブルーチン呼び出し発生時のつぎの命令へ復帰し、中断していたプログラムの処理が再開される。
【0011】
サブルーチンはプログラミングテクニックのなかでも大変重要な概念であり、プログラムを効率よく開発し、読みやすいプログラムを作成する上で、欠くことのできない考え方である。その中で、特に、サブルーチンを必要とする理由の一つは、「同じことを何度も書かずに済ませる」ことができることである。プログラムを作っているとプログラムの流れの中の異なる場面で、まったく同じ処理をする必要があったり、ほとんど同じ処理だけれど、微妙に違うような処理がしばしば現れる。できればそういった処理は共用できるものを一つ記述しておき、つぎからはその記述を利用したいものである。そこで何度も出てくる処理はプログラム本体(メインルーチン)とは別の場所に一つだけ作ることにして、その処理が必要になったときにそれを呼び出すという方法が考え出された。
【0012】
図12は、サブルーチンの処理概念を示す説明図である。同図の例では、メインルーチンによって処理Aが3回呼び出され(同図に示すタイミング121、123、125)、また、メインルーチンによって処理Bが1回呼び出されている(同図に示すタイミング127)。このようにメインルーチンとは別の場所に記述され、プログラム本体から呼び出されるためのあるまとまった処理を行うプログラムのことをサブルーチンと呼ぶ。なお、同じサブルーチンを別々の場所から呼び出すとしても、復帰する際は、毎回別々の場所へ復帰することとなる(同図に示すタイミング122、124、126、128)。
【0013】
図13は、CALL命令とRET命令とスタックの概念を示す説明図である。スタックとは、「最後に格納したデータを最初に取り出す」動作のことをいう。スタックは本を積み上げる行為に似ている。本を積み上げていくと、最初に取り出せるのは最後に積み上げた本である。すなわち、スタックに幾つかのデータを積んだとすると、最初に取り出せるのは最後に積んだデータである。このスタックを実現するために用意されているのがスタックポインタ(SP)である。ポインタと呼ばれることからもわかるように、スタックポインタはスタックエリアのメモリを指し示す役割を持っており、常にスタックトップ(積み上げられたスタックの一番上)を指している。
【0014】
このスタックの状態がサブルーチンの呼び出しに応じてどのように推移するのかを、図13を用いて説明する。まず、CALL命令実行前のスタックの状態は、「▲1▼CALL命令実行前のスタックの状態」であるとする。ステップS10401でCALL命令が実行されると、つぎに実行すべき命令のアドレスを示す“bbb”がスタックに積まれる。このとき、スタックポインタは、つぎのスタック処理のためにポインタが更新される。すなわち、スタックポインタは、この“bbb”が積まれた場所に移動する。同時に、スタックの状態は、「▲2▼CALL命令実行後のスタックの状態」のようになる。さらに、ステップS10402でCALL命令が実行されると、つぎに実行すべき命令のアドレスを示す“ccc”がスタックに積まれ、スタックポインタはつぎのスタック処理のために更新され、スタックの状態は、「▲3▼CALL命令実行後のスタックの状態」のようになる。この状態で、「▲4▼サブルーチン実処理実行」が行われると、ステップS10404でステップS10402に対応するRET命令が実行され、つぎに実行すべき命令のアドレス“ccc”がスタックから取り出され、つぎのスタック処理のためにポインタが更新され、スタックの状態は、「▲5▼RET命令実行後のスタックの状態」のようになる。
【0015】
同様に、ステップS10405でステップS10401に対応するRET命令が実行され、つぎに実行すべき命令のアドレス“bbb”がスタックから取り出され、つぎのスタック処理のためにポインタが更新され、スタックの状態は、「▲6▼RET命令実行後のスタックの状態」のようになる。このように、一連のサブルーチンの呼び出し処理が終了すると、最終的には呼び出し前の状態、すなわち「▲1▼CALL命令実行前のスタックの状態」に戻る。
【0016】
このように、メインルーチンの途中からサブルーチンにジャンプしても、RET命令実行時に、つぎに実行するべき命令のアドレスをスタックから取り出すことができるので、スタックポインタの管理を行っているだけで、メインルーチンをサブルーチンに分割して、プログラムの可読性を向上することができる。
【0017】
図14は、従来技術におけるCALL命令とRET命令の動作の一例を示す図である。同図では、図10のプログラムが図9のユーザプログラム96にどのように格納されているのか具体的に示している。
【0018】
図14において、ステップS10601には「LD 実行条件a」(実行条件aの読出し命令)、ステップS10602には「CALL Pa」(ポインタPaから始まるサブルーチン呼び出し命令)、ステップS10603には「LD 実行条件b」(実行条件bの読出し命令)、ステップS10604には「CALL Pb」(ポインタPbから始まるサブルーチン呼び出し命令)、ステップS10605には「FEND」(メインプログラムの終了を意味する命令)が夫々格納されている。
【0019】
つぎに、ステップS10606には「LD 実行条件Paa」(実行条件Paaの読出し命令)、ステップS10607には「CALL Pcom」(ポインタPcomから始まるサブルーチン呼び出し命令)、ステップS10608〜S10609には命令AA〜AZ、ステップS10610には「RET」(サブルーチンPaから復帰する命令)が夫々格納されている。
【0020】
また、ステップS10611には「LD 実行条件Pbb」(実行条件Pbbの読出し命令)、ステップS10612には「CALL Pcom」(ポインタPcomから始まるサブルーチン呼び出し命令)、ステップS10613〜S10614には命令BA〜BZ、ステップS10615には「RET」(サブルーチンPから復帰する命令)が夫々格納されている。
【0021】
最後に、ステップS10616には「LD 実行条件Pcc」(実行条件Pccの読出し命令)、ステップS10617〜S10619には命令CA〜CZ、ステップS10620には「RET」(サブルーチンPcomから復帰する命令)、ステップS10621には、「END」(全てのプログラムの終了を意味する命令)が夫々格納されている。
【0022】
つぎに、図14を用いて、CALL命令とRET命令の概念を説明する。処理の開始は、図10に示すように、「LD 実行条件a」が成立しているか否かを判断するところから開始される。ステップS10601で「LD 実行条件a」が成立していると判断した場合は、ステップS10602で「CALL Pa」を実行する。このとき、「CALL Pa」のつぎに実行すべき命令のステップ番号(ステップS10603)をスタックに積み、処理141で示すように、ステップS10606へジャンプする。
【0023】
ステップS10606で「LD 実行条件Paa」が成立していると判断した場合は、ステップS10607で「CALL Pcom」を実行する。このとき、「CALL Pcom」のつぎに実行すべき命令のステップ番号(ステップS10608)をスタックに積み、処理142で示すように、ステップS10616へジャンプする。
【0024】
ステップS10616で「LD 実行条件Pcc」が成立していると判断した場合は、ステップS10617で「命令CA」を実行し、ステップS10618で「命令CB」を実行し、以下順次、命令を実行し、ステップS10619で「命令CZ」を実行し、最後にステップS10621でRET命令を実行する。このとき、スタックに積んだ「つぎに実行すべき命令のステップ番号(ここではステップS10608)」を読み出し、処理143で示すように、ステップS10608へジャンプする。
【0025】
ステップS10608で「命令AA」を実行し、以下順次、命令を実行し、ステップS10609で「命令AZ」を実行し、最後にステップS10610でRET命令を実行する。このとき、さらにスタックに積んだ「つぎに実行すべき命令のステップ番号(ここではステップS10603)」を読み出し、処理144で示すように、ステップS10603へジャンプする。以下処理145〜処理148についても同様な処理の繰り返しになるので、説明は省略する。
【0026】
【発明が解決しようとする課題】
近年、コンピュータプログラムはオブジェクト指向化が進み、OA、FAといった対象分野を問わず、標準化されたプログラムを使おうとする傾向が強い。特に、FA分野において唯一の国際標準規格であるIEC61131−3の影響を受け、ラダー、リストによるプログラミングからファンクションブロック(FB)またはファンクションブロックダイアグラム(FBD)によるプログラミングに移行する動きがある。このIEC61131−3規格によれば、よく使うプログラムを部品化(FB化)し、メインプログラムにてFBを使うことができるので、プログラム全体の見通しがよくなり、開発効率は一見向上したかのように錯覚する。
【0027】
FBは、よく使うプログラム部品だからこそFB化されているのであり、メインプログラムの数箇所で複数回に渡って使われている可能性が大である。いま、FB内で異常発生したときのことを考えてみる。例えば、FB内でサブルーチンをCALLし、サブルーチン内で異常が発生した場合などである。この場合、メインプログラムのどこから呼び出されたのか、どのタイミングで異常発生したのかわからなければ、デバッグすることができない。
【0028】
しかしながら、上述した従来技術の場合、サブルーチン呼び出しの順番をトレースすることはできないという欠点があった。また、特開平7−141222、特開平4−336631、特開平2−294845、特開昭64−48133、特開昭59−221753号公報などに示される従来技術は、異常発生のタイミングをトレースすることができなかったり、あるいは、たとえできたとしても特別な手段を用いる必要があった。
【0029】
この発明は上記に鑑みてなされたものであり、少ないオーバヘッドでサブルーチンに関するトレース情報を記録し、異常発生時のサブルーチンCALLのタイミングをトレースできるトレースデータ処理装置、トレースデータ処理方法およびその方法を実行するためのプログラムを得ることを目的とする。
【0030】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかるトレースデータ処理装置は、プログラムから階層的に呼び出されるサブルーチンの実行情報をトレースするトレースデータ処理装置において、呼び出し元サブルーチンの呼び出しステップ番号、呼び出し先サブルーチンのポインタ番号および呼び出し先サブルーチンの実行結果を格納するデータテーブルと、前記呼び出し元サブルーチンの呼び出しステップ番号および呼び出し先サブルーチンのポインタ番号を格納する位置を示す第1のポインタと、前記呼び出し先サブルーチンの実行結果を格納する位置を示す第2のポインタと、前記データテーブルへの記録を指示するトレースポイント付ポインタが、前記呼び出し先サブルーチンにあるときに前記呼び出し元サブルーチンの呼び出しステップ番号および前記呼び出し先サブルーチンのポインタ番号を夫々前記第1のポインタが示す位置に格納し、前記呼び出し先サブルーチンからの復帰処理時に、この呼び出し先サブルーチンの処理結果を前記第2のポインタが示す位置に格納する格納処理手段とを備えることを特徴とする。
【0031】
この発明によれば、データテーブルには、呼び出し元サブルーチンの呼び出しステップ番号、呼び出し先サブルーチンのポインタ番号および呼び出し先サブルーチンの実行結果が格納され、第1のポインタが示す位置に、呼び出し元サブルーチンの呼び出しステップ番号および呼び出し先サブルーチンのポインタ番号が格納され、第2のポインタが示す位置に、呼び出し先サブルーチンの実行結果が格納され、格納処理手段は、データテーブルへの記録を指示するトレースポイント付ポインタが呼び出し先サブルーチンにあるときに、呼び出し元サブルーチンの呼び出しステップ番号および呼び出し先サブルーチンのポインタ番号を夫々第1のポインタが示す位置に格納し、呼び出し先サブルーチンからの復帰処理時に、この呼び出し先サブルーチンの処理結果を第2のポインタが示す位置に格納することができる。
【0032】
つぎの発明にかかるトレースデータ処理装置は、上記の発明において、前記データテーブルに格納された前記サブルーチンの呼び出し回数を保持する第1のカウンタと、前記サブルーチンの実行処理後の復帰回数を保持する第2のカウンタとをさらに備え、前記呼び出し先サブルーチンに前記トレースポイント付ポインタがあるときに前記第1のカウンタの値を増加させ、前記トレースポイント付ポインタを有する前記呼び出し先サブルーチンからの復帰処理時に、前記第1のカウンタの値を増加させ、前記第2のカウンタの値を減少させることを特徴とする。
【0033】
この発明によれば、データテーブルに格納されたサブルーチンの呼び出し回数を保持する第1のカウンタと、サブルーチンの実行処理後の復帰回数を保持する第2のカウンタとが備えられ、呼び出し先サブルーチンにトレースポイント付ポインタがあるときに第1のカウンタの値を増加させ、トレースポイント付ポインタを有する呼び出し先サブルーチンからの復帰処理時に、第1のカウンタの値を増加させ、第2のカウンタの値を減少させる。
【0034】
つぎの発明にかかるトレースデータ処理装置は、上記の発明において、前記第1のポインタの値をnとし、前記第2のカウンタの値をmとするときに、前記第2のポインタの値pを、
p=n−((m−1)×3+1)
の計算式で算出することを特徴とする。
【0035】
この発明によれば、第1のポインタの値をnとし、第2のカウンタの値をmとするときに、前記第2のポインタの値pを、
p=n−((m−1)×3+1)
の計算式で算出することができる。
【0036】
つぎの発明にかかるトレースデータ処理方法は、上記の発明において、プログラムから階層的に呼び出されるサブルーチンの実行情報をトレースするトレースデータ処理方法において、データテーブルに呼び出し元サブルーチンの呼び出しステップ番号、呼び出し先サブルーチンのポインタ番号および呼び出し先サブルーチンの実行結果を格納し、前記データテーブルへの記録を指示するトレースポイント付ポインタが前記呼び出し先サブルーチンにあるときに、第1のポインタが示す位置に、前記呼び出し元サブルーチンの呼び出しステップ番号および呼び出し先サブルーチンのポインタ番号を格納し、第2のポインタが示す位置に、前記呼び出し先サブルーチンからの復帰処理時に前記呼び出し先サブルーチンの処理結果を格納することを特徴とする。
【0037】
この発明によれば、データテーブルに呼び出し元サブルーチンの呼び出しステップ番号、呼び出し先サブルーチンのポインタ番号および呼び出し先サブルーチンの実行結果を格納し、データテーブルへの記録を指示するトレースポイント付ポインタが呼び出し先サブルーチンにあるときに、第1のポインタが示す位置に、呼び出し元サブルーチンの呼び出しステップ番号および呼び出し先サブルーチンのポインタ番号を格納し、第2のポインタが示す位置に、呼び出し先サブルーチンからの復帰処理時に呼び出し先サブルーチンの処理結果を格納することができる。
【0038】
つぎの発明にかかるトレースデータ処理方法は、上記の発明において、前記呼び出し先サブルーチンに前記トレースポイント付ポインタがあるときに、前記データテーブルに格納された前記サブルーチンの呼び出し回数を保持する第1のカウンタの値を増加させ、前記トレースポイント付ポインタを有する前記呼び出し先サブルーチンからの復帰処理時に、前記第1のカウンタの値を増加させ、前記サブルーチンの実行処理後の復帰回数を保持する前記第2のカウンタの値を減少させることを特徴とする。
【0039】
この発明によれば、呼び出し先サブルーチンにトレースポイント付ポインタがあるときに、データテーブルに格納されたサブルーチンの呼び出し回数を保持する第1のカウンタの値を増加させ、トレースポイント付ポインタを有する呼び出し先サブルーチンからの復帰処理時に、第1のカウンタの値を増加させ、サブルーチンの実行処理後の復帰回数を保持する第2のカウンタの値を減少させる。
【0040】
つぎの発明にかかるトレースデータ処理方法は、上記の発明において、前記第1のポインタの値をnとし、前記第2のカウンタの値をmとするときに、前記第2のポインタの値pを、
p=n−((m−1)×3+1)
の計算式で算出することを特徴とする。
【0041】
この発明によれば、第1のポインタの値をnとし、第2のカウンタの値をmとするときに、前記第2のポインタの値pを、
p=n−((m−1)×3+1)
の計算式で算出することができる。
【0042】
つぎの発明にかかるプログラムは、上記の発明のいずれか一つに記載された方法をコンピュータに実行させるプログラムであり、そのプログラムがコンピュータ読み取り可能となり、これによって、上記の発明のいずれか一つの動作をコンピュータによって実行することができる。
【0043】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるトレースデータ処理装置、トレースデータ処理方法およびその方法を実行するためのプログラムの好適な実施の形態を詳細に説明する。
【0044】
図1は、この発明にかかるコントローラの制御プログラムの動作の一例を示す図である。ステップS101〜S105までがメインプログラムの記述である。まず、ステップS101で実行条件aを読み出し、実行条件が成立した時、ステップS102でポインタPaから始まるサブルーチンを呼び出し、ステップS103で実行条件bを読み出し、実行条件が成立した時、ステップS104でポインタPbから始まるサブルーチンを呼び出す。なお、ステップS105はメインプログラムの終了をあらわす命令(FEND命令)を示している。
【0045】
つぎに、PaはステップS102で呼び出されたサブル−チンの先頭を示すポインタであり、ステップS106で実行条件Paaを読み出し、実行条件が成立した時、ステップS107でポインタPcomから始まるサブルーチンを呼び出す。このサブルーチンの実処理終了後、ステップS108〜S109の命令を実行し、ステップS110でサブルーチンから復帰する命令(RET命令)を実行する。同様に、PbはステップS104で呼び出されたサブルーチンの先頭を示すポインタであり、ステップS111で実行条件Pbbを読み出し、実行条件が成立した時、ステップS112でポインタPcomから始まるサブルーチンを呼び出す。このサブルーチンの実処理終了後、ステップS113〜S114の命令を実行し、ステップS115でサブルーチンから復帰する命令(RET命令)を実行する。
【0046】
ところで、PcomはステップS107またはS112で呼び出されたサブルーチンの先頭を示すポインタであるが、このPcomは“tp(トレースポイント)”で修飾されている点に特徴があり、従来技術との相違点である。なお、このtpについては、後で詳述する。
【0047】
その後の処理は従来技術で説明したのと同様に、ステップS116で実行条件Pccを読み出し、実行条件が成立した時、ステップS117でサブルーチンの実処理を開始し、ステップS118〜S119の命令を実行し、ステップS120でサブルーチンから復帰する命令(RET命令)を実行する。なお、ステップS121は全てのプログラムの終了を意味する命令(END命令)である。
【0048】
図2は、この発明にかかる階層構造プログラムの実施の概念を示す説明図である。同図において、21はCALLカウンタ、22はRETカウンタ、23はデータテーブル、24はCALLポインタ、25はRETポインタを夫々示している。
【0049】
CALLポインタ24とRETポインタ25は、▲1▼呼び出し元サブルーチンの呼び出しステップ番号、▲2▼呼び出し先サブルーチンのポインタ番号、▲3▼呼び出し先サブルーチンの実行結果の3つの情報をひとつのブロックとしてデータテーブル23に格納するためのポインタである。また、CALLカウンタ21とRETカウンタ22はCALLポインタ24とRETポインタ25の算出に用いるためのCALL処理とRET処理の回数を格納するための作業(ワーク)エリアである。
【0050】
図3は、この発明にかかるCALL命令とRET命令の動作の一例を示す図である。同図は、図1のプログラムが図9に示すユーザプログラム96にどのように格納されているのかを具体的に示す図である。図14に示す従来技術と比較して、ステップS315の「RET」とステップS316の「LD 実行条件Pcc」との間に、ステップS322の「tp」が格納されている。その他、命令が格納される位置や呼び出しの動作については、従来技術で説明した内容と同一であるので、説明を省略する。
【0051】
図4は、この発明にかかるCALL処理の処理手順を示すフローチャートである。同図を用いて、通常のCALL処理とtp付ポインタを呼び出した場合のCALL処理とを比較しながら説明する。
【0052】
まず、ステップS401でスタックポインタを読出し、ステップS402でスタックポインタの指す位置のつぎの位置に実行するステップ番号を格納し、ステップS403でスタックポインタを更新し、ステップS404で呼び出し先のサブルーチンポインタ番号を読み出す。ここまでは、通常のCALL処理と何ら変わる処理ではない。
【0053】
つぎに、ステップS405でCALLするポインタが、tp付ポインタであるか否かを判断する。ステップS405でCALLするポインタが、tp付ポインタの場合には、ステップS407へ移行し、図2に示すデータテーブル23のCALLポインタ24を読出し、ステップS408でCALLポインタ24の指す位置に呼び出し元ステップ番号を格納し、ステップS409でCALLポインタ24の更新を行い、ステップS410で呼び出し先サブルーチンのポインタ番号を読出し、ステップS411でCALLポインタ24の指す位置に呼び出し先サブルーチンのポインタ番号を格納し、ステップS412でCALLポインタ24を更新し、ステップS413で、図2に示すCALLカウンタ21を更新し、ステップS414でCALLポインタ24を、図2に示すRETポインタ25にコピーする。ステップS415でtp付ポインタ呼び出しフラグを、図9に示すワークRAM92にセットしておき、ステップS416で呼び出したポインタ番号の指すステップ番号の処理を実行する。なお、上記のステップS401〜S404の処理からステップS416の処理に移行する流れが通常の処理の流れである。
【0054】
一方、ステップS405の処理において、CALLするポインタがtp付ポインタでない場合には、さらに、ステップS406でワークRAM92に格納されたtp付ポインタ呼び出しフラグがセットされているか否かを判断する。このtp付ポインタ呼び出しフラグがセットされている場合には、ステップS407からの処理を実行し、tp付ポインタ呼び出しフラグがセットされていない場合には、ステップS416の処理を実行する。
【0055】
図5は、図4のCALL処理に対応したRET処理の処理手順を示すフローチャートである。同図を用いて、RET処理の流れについて説明する。
【0056】
まず、ステップS502で、図2に示すCALLカウンタ21が“0”か否かを判断する。このCALLカウンタ21が“0”の場合には、tp付きのサブルーチンCALL処理は行われていないので、通常のRET処理を行うために、ステップS510へ移行し、ステップS510でスタックポインタを読出し、ステップS511でスタックからつぎに実行するステップ番号を読み出し、ステップS512で読み出したステップ番号の命令を実行する。
【0057】
一方、ステップS502でCALLカウンタ21が“0”でない場合には、tp付きのサブルーチンCALL処理が行われた場合であり、ステップS503で、図2に示すRETカウンタ22を読み出し、ステップS504でRETカウンタ22を更新し、ステップS505でRETカウンタ22の値(m)を用いてRETポインタ25の演算を行う。このRETポインタ25の演算内容は、RETポインタ25=CALLポインタ24−{(m−1)×3+1}の計算式で行う。さらに、ステップS506でRETポインタ25演算結果の指す位置にRET処理結果を格納し、ステップS507でRET処理が終了を示すために、CALLカウンタ21を更新する。
【0058】
つぎに、ステップS508でCALLカウンタ21の値を再度確認し、この値が0であれば、tp付ポインタ呼び出し処理が全て終了しており、ステップS509でtp付ポインタ呼び出しフラグをクリアし、ステップS510に移行し、通常のRET処理を行う。また、ステップS508でCALLカウンタ21の値が0でなければ、tp付ポインタ呼び出し処理が完了していないので、tp付ポインタ呼び出しフラグはクリアせず、ステップS510に移行して通常のRET処理を行う。
【0059】
図6は、tp付き呼び出しのCALL処理が行われたときのデータテーブル等の動きを示す説明図である。同図は、図2に示すデータテーブル23、CALLポインタ(CP)24、RETポインタ(RP)25、CALLカウンタ21、RETカウンタ22が、初期状態からCALL命令の実行と共に推移する様子を示している。なお、CALLのネスト(深さ)は“5”であり、全てtp付き呼び出しのCALL処理が実行されたものとしている。
【0060】
図6において、初期状態では、CALLカウンタ、RETカウンタは共に“0”であり、CP、RPは図示しない所定の位置に設定されている。1回目のCALL命令が実行されると、CALLカウンタがインクリメント(+1)され、すなわち“1”に設定され(図4のステップS413の処理に対応)、CPがインクリメント(+3)され(図4のステップS409、S412の処理に対応)、RPもCPと同じポインタ値にセットされる(図4のステップS414の処理に対応)。したがって、CP、RPは、図6の位置61のポインタがセットされることになる。
【0061】
同様に、2回目のCALL命令が実行されると、CALLカウンタがインクリメント(+1)され、すなわち“2”に設定され、CPがインクリメント(+3)され、RPもCPと同じポインタ値にセットされる。したがって、CP、RPは、位置62のポインタがセットされる。以下、5回目のCALL命令が実行されると、最終的には、CALLカウンタが“5”に設定され、CP、RPは、位置65のポインタがセットされる。
【0062】
図7は、図6のCALL処理が行われた後に、RET命令が実行されるときのデータテーブル等の動きを示す説明図である。同図は、図2に示すデータテーブル23、CALLポインタ(CP)24、RETポインタ(RP)25、CALLカウンタ21、RETカウンタ22が、図6の状態からRET命令の実行と共に推移する様子を示している。
【0063】
図7において、RET命令が実行されていない状態は、図6において5回目のCALL命令が実行された状態と同一である。すなわち、CALLカウンタ25は“5”に設定され、RETカウンタは“0”に設定され、CP、RPは、位置65のポインタがセットされている。1回目のRET命令が実行されると、RETカウンタがインクリメント(+1)され、すなわち“1”に設定され(図5のステップS504の処理に対応)、CALLカウンタがディクリメント(−1)され、すなわち“4”に設定され(図5のステップS507の処理に対応)、CPの値はそのままであり、RPがディクリメント(−1)され、位置66のポインタがセットされる(図5のステップS505の演算処理に対応)。
【0064】
同様に、2回目のRET命令が実行されると、RETカウンタがインクリメント(+1)され、すなわち“2”に設定され、CALLカウンタがディクリメント(−1)され、すなわち“3”に設定され、CPの値はそのままであり、RPがディクリメント(−3)され、位置67のポインタがセットされる。以下、5回目のRET命令が実行されると、最終的には、CALLカウンタが“0”に設定され、RETカウンタが“5”に設定され、CPは位置65のポインタのままであり、RPは位置70のポインタがセットされる。
【0065】
例えば、図7において、3回目のRET命令が実行され、4回目のRET命令が実行される前にエラーが発生したと仮定すると、RPは位置69のポインタには更新されず、位置68のポインタのままである。このとき、CALLカウンタ値、RETカウンタ値、RPの値の情報から、どの呼び出し処理でエラーが発生したのかを判定することができる。また、エラーが発生した位置(この例では、位置68)のポインタをXとすると、X−1には呼び出し先のポインタ番号が設定され、X−2には呼び出し元のステップ番号が設定されているので、これらの情報からエラーの発生の原因を探求するためのプログラム実行情報を得ることができる。
【0066】
このトレース処理は、▲1▼呼び出し元サブルーチンの呼び出しステップ番号、▲2▼呼び出し先サブルーチンのポインタ番号、▲3▼呼び出し先サブルーチンの実行結果の3つの情報のみで構成されるため、少ないオーバヘッドで階層構造プログラムに関する実行情報を得ることができる。また、トレース情報だけでなく、サブルーチンの実行結果の情報も含んでいるため、正常に終了した処理においても、処理結果そのものの妥当性に関して評価できるので、効率のよいデバックをすることができる。
【0067】
以上詳述してきたように、この発明にかかるトレースデータ処理装置、トレースデータ処理方法およびその方法を実行するプログラムによれば、構造化されたプログラムを処理する情報処理装置のプログラム実行に関し、階層構造をもつ構造化プログラムの実行において、階層構造プログラムの実行タイミングをトレース(追跡)することができ、実行の途中でエラーが発生した場合にそのエラー要因とプログラムの実行タイミングを把握でき、かつ少ないオーバヘッドで階層構造プログラムに関する実行情報を得ることができる。
【0068】
【発明の効果】
以上説明したように、この発明によれば、データテーブルには、呼び出し元サブルーチンの呼び出しステップ番号、呼び出し先サブルーチンのポインタ番号および呼び出し先サブルーチンの実行結果が格納され、第1のポインタが示す位置に、呼び出し元サブルーチンの呼び出しステップ番号および呼び出し先サブルーチンのポインタ番号が格納され、第2のポインタが示す位置に、呼び出し先サブルーチンの実行結果が格納され、格納処理手段は、データテーブルへの記録を指示するトレースポイント付ポインタが呼び出し先サブルーチンにあるときに、呼び出し元サブルーチンの呼び出しステップ番号および呼び出し先サブルーチンのポインタ番号を夫々第1のポインタが示す位置に格納し、呼び出し先サブルーチンからの復帰処理時に、この呼び出し先サブルーチンの処理結果を第2のポインタが示す位置に格納するようにしているので、サブルーチンのネストが深い段階でエラーが発生してもCALL命令の動きを順番にトレースすることができ、かつ、どのCALL処理の段階でエラーが発生したのかをトレースできるので、サブルーチンを多用した標準化プログラムのデバッグ効率の向上が期待できるという効果を奏する。また、1回のCALL処理に要する情報は、▲1▼呼び出し元サブルーチンの呼び出しステップ番号、▲2▼呼び出し先サブルーチンのポインタ番号、▲3▼呼び出し先サブルーチンの実行結果の3情報のみなので、少ないオーバヘッドで上記の効果が得られるというさらなる効果がある。さらに、通常のCALL処理と本CALL処理は使い分けが可能なので、必要に応じて、FBやFBDを使うようなところにtp付ポインタを使うことで、デバッグ効率の向上、処理効率の向上、メモリ資源の効率的な使用が可能になる等ユーザにとって、最適なデバッグ手段を提供できるという効果を奏する。
【0069】
つぎの発明によれば、データテーブルに格納されたサブルーチンの呼び出し回数を保持する第1のカウンタと、サブルーチンの実行処理後の復帰回数を保持する第2のカウンタとが備えられ、呼び出し先サブルーチンにトレースポイント付ポインタがあるときに第1のカウンタの値を増加させ、トレースポイント付ポインタを有する呼び出し先サブルーチンからの復帰処理時に、第1のカウンタの値を増加させ、第2のカウンタの値を減少させるようにしているので、サブルーチンのネストが深い段階でエラーが発生してもCALL命令の動きを順番にトレースすることができ、かつ、どのCALL処理の段階でエラーが発生したのかをトレースできるので、サブルーチンを多用した標準化プログラムのデバッグ効率の向上が期待できるという効果を奏する。また、通常のCALL処理と本CALL処理は使い分けが可能なので、必要に応じて、FBやFBDを使うようなところにtp付ポインタを使うことで、デバッグ効率の向上、処理効率の向上、メモリ資源の効率的な使用が可能になる等ユーザにとって、最適なデバッグ手段を提供できるという効果を奏する。
【0070】
つぎの発明によれば、第1のポインタの値をnとし、第2のカウンタの値をmとするときに、前記第2のポインタの値pを、
p=n−((m−1)×3+1)
の計算式で算出するようにしているので、サブルーチンのネストが深い段階でエラーが発生してもCALL命令の動きを順番にトレースすることができ、かつ、どのCALL処理の段階でエラーが発生したのかをトレースできるので、サブルーチンを多用した標準化プログラムのデバッグ効率の向上が期待できるという効果を奏する。
【0071】
つぎの発明によれば、データテーブルに呼び出し元サブルーチンの呼び出しステップ番号、呼び出し先サブルーチンのポインタ番号および呼び出し先サブルーチンの実行結果を格納し、データテーブルへの記録を指示するトレースポイント付ポインタが呼び出し先サブルーチンにあるときに、第1のポインタが示す位置に、呼び出し元サブルーチンの呼び出しステップ番号および呼び出し先サブルーチンのポインタ番号を格納し、第2のポインタが示す位置に、呼び出し先サブルーチンからの復帰処理時に呼び出し先サブルーチンの処理結果を格納するようにしているので、サブルーチンのネストが深い段階でエラーが発生してもCALL命令の動きを順番にトレースすることができ、かつ、どのCALL処理の段階でエラーが発生したのかをトレースできるので、サブルーチンを多用した標準化プログラムのデバッグ効率の向上が期待できるという効果を奏する。また、1回のCALL処理に要する情報は、▲1▼呼び出し元サブルーチンの呼び出しステップ番号、▲2▼呼び出し先サブルーチンのポインタ番号、▲3▼呼び出し先サブルーチンの実行結果の3情報のみなので、少ないオーバヘッドで上記の効果が得られるというさらなる効果がある。さらに、通常のCALL処理と本CALL処理は使い分けが可能なので、必要に応じて、FBやFBDを使うようなところにtp付ポインタを使うことで、デバッグ効率の向上、処理効率の向上、メモリ資源の効率的な使用が可能になる等ユーザにとって、最適なデバッグ方法を提供できるという効果を奏する。
【0072】
つぎの発明によれば、呼び出し先サブルーチンにトレースポイント付ポインタがあるときに、データテーブルに格納されたサブルーチンの呼び出し回数を保持する第1のカウンタの値を増加させ、トレースポイント付ポインタを有する呼び出し先サブルーチンからの復帰処理時に、第1のカウンタの値を増加させ、サブルーチンの実行処理後の復帰回数を保持する第2のカウンタの値を減少させるようにしているので、サブルーチンのネストが深い段階でエラーが発生してもCALL命令の動きを順番にトレースすることができ、かつ、どのCALL処理の段階でエラーが発生したのかをトレースできるので、サブルーチンを多用した標準化プログラムのデバッグ効率の向上が期待できるという効果を奏する。また、通常のCALL処理と本CALL処理は使い分けが可能なので、必要に応じて、FBやFBDを使うようなところにtp付ポインタを使うことで、デバッグ効率の向上、処理効率の向上、メモリ資源の効率的な使用が可能になる等ユーザにとって、最適なデバッグ方法を提供できるという効果を奏する。
【0073】
つぎの発明によれば、第1のポインタの値をnとし、第2のカウンタの値をmとするときに、前記第2のポインタの値pを、
p=n−((m−1)×3+1)
の計算式で算出するようにしているので、サブルーチンのネストが深い段階でエラーが発生してもCALL命令の動きを順番にトレースすることができ、かつ、どのCALL処理の段階でエラーが発生したのかをトレースできるので、サブルーチンを多用した標準化プログラムのデバッグ効率の向上が期待できるという効果を奏する。
【0074】
つぎの発明にかかるプログラムによれば、上記の発明のいずれか一つに記載された方法をコンピュータに実行させるようにしたので、そのプログラムがコンピュータ読み取り可能となり、これによって、上記の発明のいずれか一つの動作をコンピュータによって実行することができるという効果を奏する。
【図面の簡単な説明】
【図1】この発明にかかるコントローラの制御プログラムの動作の一例を示す図である。
【図2】この発明にかかる階層構造プログラムの実施の概念を示す説明図である。
【図3】この発明にかかるCALL命令とRET命令の動作の一例を示す図である。
【図4】この発明にかかるCALL処理の処理手順を示すフローチャートである。
【図5】図4のCALL処理に対応したRET処理の処理手順を示すフローチャートである。
【図6】tp付き呼び出しのCALL処理が行われたときのデータテーブル等の動きを示す説明図である。
【図7】図6のCALL処理が行われた後に、RET命令が実行されるときのデータテーブル等の動きを示す説明図である。
【図8】FAシステムにおけるシステム構成の一例を示す図である。
【図9】従来技術のコントローラの内部構成を示すブロック図である。
【図10】従来技術のコントローラの制御プログラムの動作の一例を示す図である。
【図11】従来技術におけるコントローラのサブルーチンプログラムの処理を示す図である。
【図12】サブルーチンの処理概念を示す説明図である。
【図13】CALL命令とRET命令とスタックの概念を示す説明図である。
【図14】従来技術におけるCALL命令とRET命令の動作の一例を示す図である。
【符号の説明】
21 CALLカウンタ、22 RETカウンタ、23 データテーブル、24 CALLポインタ、25 RETポインタ、61,62,63,64,65,66,67,68,69,70 位置、81 コントローラ、82 インテリジェントユニット、83 非インテリジェントユニット、84 I/O機器、85 サーボモータ、86 センサ、87 アクチュエータ、88 スイッチ、出力機器、電光管等、91 MPU、92 ワークRAM、93 システムROM、94 ユーザRAM、95 パラメータ、96 ユーザプログラム、97 デバイスメモリ、98 アドレスバス、99 データバス、121,122,123,124,125,126,127,128 タイミング、141,142,143,144,145,146,147,148 処理。
Claims (7)
- プログラムから階層的に呼び出されるサブルーチンの実行情報をトレースするトレースデータ処理装置において、
呼び出し元サブルーチンの呼び出しステップ番号、呼び出し先サブルーチンのポインタ番号および呼び出し先サブルーチンの実行結果を格納するデータテーブルと、
前記呼び出し元サブルーチンの呼び出しステップ番号および呼び出し先サブルーチンのポインタ番号を格納する位置を示す第1のポインタと、
前記呼び出し先サブルーチンの実行結果を格納する位置を示す第2のポインタと、
前記データテーブルへの記録を指示するトレースポイント付ポインタが、前記呼び出し先サブルーチンにあるときに前記呼び出し元サブルーチンの呼び出しステップ番号および前記呼び出し先サブルーチンのポインタ番号を夫々前記第1のポインタが示す位置に格納し、前記呼び出し先サブルーチンからの復帰処理時に、この呼び出し先サブルーチンの処理結果を前記第2のポインタが示す位置に格納する格納処理手段と、
を備えることを特徴とするトレースデータ処理装置。 - 前記データテーブルに格納された前記サブルーチンの呼び出し回数を保持する第1のカウンタと、
前記サブルーチンの実行処理後の復帰回数を保持する第2のカウンタと、
をさらに備え、
前記呼び出し先サブルーチンに前記トレースポイント付ポインタがあるときに前記第1のカウンタの値を増加させ、
前記トレースポイント付ポインタを有する前記呼び出し先サブルーチンからの復帰処理時に、前記第1のカウンタの値を増加させ、前記第2のカウンタの値を減少させることを特徴とする請求項1に記載のトレースデータ処理装置。 - 前記第1のポインタの値をnとし、前記第2のカウンタの値をmとするときに、前記第2のポインタの値pを、
p=n−((m−1)×3+1)
の計算式で算出することを特徴とする請求項2に記載のトレースデータ処理装置。 - プログラムから階層的に呼び出されるサブルーチンの実行情報をトレースするトレースデータ処理方法において、
データテーブルに呼び出し元サブルーチンの呼び出しステップ番号、呼び出し先サブルーチンのポインタ番号および呼び出し先サブルーチンの実行結果を格納し、
前記データテーブルへの記録を指示するトレースポイント付ポインタが前記呼び出し先サブルーチンにあるときに、第1のポインタが示す位置に、前記呼び出し元サブルーチンの呼び出しステップ番号および呼び出し先サブルーチンのポインタ番号を格納し、
第2のポインタが示す位置に、前記呼び出し先サブルーチンからの復帰処理時に前記呼び出し先サブルーチンの処理結果を格納することを特徴とするトレースデータ処理方法。 - 前記呼び出し先サブルーチンに前記トレースポイント付ポインタがあるときに、前記データテーブルに格納された前記サブルーチンの呼び出し回数を保持する第1のカウンタの値を増加させ、
前記トレースポイント付ポインタを有する前記呼び出し先サブルーチンからの復帰処理時に、前記第1のカウンタの値を増加させ、前記サブルーチンの実行処理後の復帰回数を保持する前記第2のカウンタの値を減少させることを特徴とする請求項4に記載のトレースデータ処理方法。 - 前記第1のポインタの値をnとし、前記第2のカウンタの値をmとするときに、前記第2のポインタの値pを、
p=n−((m−1)×3+1)
の計算式で算出することを特徴とする請求項5に記載のトレースデータ処理方法。 - 請求項4〜6のいずれか一つに記載された方法をコンピュータに実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002175786A JP4327416B2 (ja) | 2002-06-17 | 2002-06-17 | トレースデータ処理装置、トレースデータ処理方法およびその方法を実行するためのプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002175786A JP4327416B2 (ja) | 2002-06-17 | 2002-06-17 | トレースデータ処理装置、トレースデータ処理方法およびその方法を実行するためのプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004021614A true JP2004021614A (ja) | 2004-01-22 |
JP4327416B2 JP4327416B2 (ja) | 2009-09-09 |
Family
ID=31174341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002175786A Expired - Fee Related JP4327416B2 (ja) | 2002-06-17 | 2002-06-17 | トレースデータ処理装置、トレースデータ処理方法およびその方法を実行するためのプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4327416B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5460928B1 (ja) * | 2013-03-06 | 2014-04-02 | 三菱電機株式会社 | プログラマブルコントローラ、プログラマブルコントローラシステムおよび実行エラー情報作成方法 |
US11989111B2 (en) * | 2019-07-10 | 2024-05-21 | Siemens Industry Software Inc. | Handling trace data for jumps in program flow |
-
2002
- 2002-06-17 JP JP2002175786A patent/JP4327416B2/ja not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5460928B1 (ja) * | 2013-03-06 | 2014-04-02 | 三菱電機株式会社 | プログラマブルコントローラ、プログラマブルコントローラシステムおよび実行エラー情報作成方法 |
WO2014136228A1 (ja) * | 2013-03-06 | 2014-09-12 | 三菱電機株式会社 | プログラマブルコントローラ、プログラマブルコントローラシステムおよび実行エラー情報作成方法 |
KR20150096478A (ko) * | 2013-03-06 | 2015-08-24 | 미쓰비시덴키 가부시키가이샤 | 프로그래머블 컨트롤러, 프로그래머블 컨트롤러 시스템 및 실행 에러 정보 작성 방법 |
CN105009006A (zh) * | 2013-03-06 | 2015-10-28 | 三菱电机株式会社 | 可编程控制器、可编程控制器系统及执行错误信息生成方法 |
KR101689984B1 (ko) | 2013-03-06 | 2016-12-26 | 미쓰비시덴키 가부시키가이샤 | 프로그래머블 컨트롤러, 프로그래머블 컨트롤러 시스템 및 실행 에러 정보 작성 방법 |
CN105009006B (zh) * | 2013-03-06 | 2017-04-05 | 三菱电机株式会社 | 可编程控制器、可编程控制器系统及执行错误信息生成方法 |
US9753444B2 (en) | 2013-03-06 | 2017-09-05 | Mitsubishi Electric Corporation | Programmable controller, programmable controller system, and method of creating execution error information |
US11989111B2 (en) * | 2019-07-10 | 2024-05-21 | Siemens Industry Software Inc. | Handling trace data for jumps in program flow |
Also Published As
Publication number | Publication date |
---|---|
JP4327416B2 (ja) | 2009-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11338434B2 (en) | Controlling process of robots having a behavior tree architecture | |
JP2019084664A (ja) | プログラミング支援装置、ロボットシステム及びプログラム生成方法 | |
CN107608737B (zh) | 动画播放方法及装置 | |
JP5287984B2 (ja) | 加工シミュレーション方法およびその装置並びにその方法をコンピュータに実行させるプログラム | |
WO2020066949A1 (ja) | ロボットの経路決定装置、ロボットの経路決定方法、プログラム | |
JP2004021614A (ja) | トレースデータ処理装置、トレースデータ処理方法およびその方法を実行するためのプログラム | |
US10618169B2 (en) | Robot | |
JP2014222384A (ja) | 関数実行時間計測装置、関数実行時間計測方法、関数実行時間計測プログラム | |
US10048678B2 (en) | Numerical controller | |
JP7448377B2 (ja) | 加工プログラムの管理装置、管理システム、管理方法 | |
JPH03105503A (ja) | プログラマブルコントローラ | |
WO2018120166A1 (zh) | 一种码垛的方法、装置及机器人 | |
JP4560191B2 (ja) | 数値制御装置 | |
CN115016384A (zh) | 基于plc模块化编程的绕线控制方法、装置、设备及介质 | |
KR100412740B1 (ko) | 개방형 수치 제어장치 | |
JP6620432B2 (ja) | ロジック生成装置 | |
CN115878131A (zh) | 数字孪生应用的代码生成方法、装置和电子设备 | |
JPS63106047A (ja) | 動的サブル−チン呼び出し方式 | |
JP2020175473A (ja) | 動作計画装置及び動作計画方法 | |
CN109760052A (zh) | 一种机器人基本程序库的建立方法 | |
JPH04369727A (ja) | 演算装置 | |
JP2008107908A (ja) | データ解析システム | |
JPH0550358A (ja) | 数値制御プログラムへのワーク搬入要求付加方法 | |
JP2002099311A (ja) | モーションプログラムの作成方法およびモーション制御装置 | |
JPH08185338A (ja) | デバッグ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050118 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070921 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071113 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080115 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080701 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080828 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090203 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090406 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20090413 |
|
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: 20090609 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090611 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120619 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130619 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |