JP4479738B2 - プログラマブルコントローラ - Google Patents

プログラマブルコントローラ Download PDF

Info

Publication number
JP4479738B2
JP4479738B2 JP2007062884A JP2007062884A JP4479738B2 JP 4479738 B2 JP4479738 B2 JP 4479738B2 JP 2007062884 A JP2007062884 A JP 2007062884A JP 2007062884 A JP2007062884 A JP 2007062884A JP 4479738 B2 JP4479738 B2 JP 4479738B2
Authority
JP
Japan
Prior art keywords
break
instruction
program
machine language
processing
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
JP2007062884A
Other languages
English (en)
Other versions
JP2007299379A (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.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Systems Co Ltd
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 Fuji Electric Systems Co Ltd filed Critical Fuji Electric Systems Co Ltd
Priority to JP2007062884A priority Critical patent/JP4479738B2/ja
Publication of JP2007299379A publication Critical patent/JP2007299379A/ja
Application granted granted Critical
Publication of JP4479738B2 publication Critical patent/JP4479738B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Description

本発明はプログラマブルコントローラに係り、特に、汎用CPUを使用して、ユーザプログラムのブレーク設定された一部の命令をブレーク処理への分岐命令に置き換えると共に、デバッグ時に、デバッグ済のサブルーチンをステップオーバすることができるプログラマブルコントローラに関する。
従来、プログラマブルコントローラ(プログラマブルロジックコントローラと呼ばれることもある)は、シーケンス命令実行を高速に行わせるための、大規模専用LSIなどに代表される専用ハードウェアを備えたものが主流であった。専用ハードウェアを備えているため、後述するブレーク処理や、ステップ処理の実行も、ハードウェアによってサポートされていた。このようなハードウェアでブレーク処理や、ステップ処理をサポートさせる方式の場合、ブレーク設定された位置の命令を特殊な命令に置き換えて割込みを発生させ、ブレーク成立チェックルーチンへの分岐を行い、ブレークが成立した場合にブレーク状態を作り出すことが可能であった。しかしながら、この方式には、
(1)専用プロセッサは高価である、
(2)専用プロセッサは専用のマシン語体系を有し、システムプログラム開発が比較的困難である、
というデメリットも存在していた。
近年、パソコン、携帯端末などの普及により、市販の汎用CPUの技術革新が進み、高速実行が可能なCPUでも、非常に安価に入手することが可能になってきた。また、CPUが汎用であるため、ファームウェアの開発ツールを、市場から豊富に調達することも可能になってきたので、このような汎用CPUを用いたプログラマブルコントローラも開発されるようになってきている。
例えば、このような汎用CPUを用いたプログラマブルコントローラの例として、特許文献1に見られるように、シーケンス命令(制御プログラムの命令)の1命令につき、数個のマシン語を組合せることによって、シーケンス命令実行を行わせる提案が知られている。
特開2002−99312号公報
ところで、上記背景技術で述べた従来のプログラマブルコントローラにあっては、そのアプリケーションが、ラダー図、テキスト記述言語などのシーケンス言語命令の集合体で構成されている。
前述の特許文献1に見られるように、汎用CPUを用いたプログラマブルコントローラでは、シーケンス命令の1命令につき、数個のマシン語によってシーケンス命令実行を実現している例が知られている。
また、プログラマブルコントローラにおけるデバッグサポート方式としては、指定した条件、命令位置で実行を一時中断させるブレーク機能(「条件停止」とも呼ばれている)や、ブレーク状態から1命令ずつ実行しては再度ブレーク状態になるステップ機能によってサポートする方式などがある。
以下の説明では、プログラム、ファンクションブロック、ファンクションの定義については、プログラマブルコントローラにおける記述言語規格のIEC61131−3に準ずるものとして説明を省略する。
従来、ユーザは、プログラミング支援装置にてプログラミングを行い、作成したプログラムをプログラマブルコントローラに転送し、実行させてプログラムのテストを行っているが、その際にシーケンスプログラムの任意の位置で前述のブレーク処理を実行させたいことがあり、また、前述のステップ処理の実行も、シーケンス命令単位で行いたい場合がある。即ち、シーケンス命令単位でのブレーク指定を可能にすることや、ステップ処理を実行させる機能を実現して欲しいとの要求がある。
なお、前述の先行技術(特許文献1に開示された技術)では、デバッガなるソフトウェアをプログラミング支援装置に含み、かつ内部ではC言語ソースコードや、Cソースデバッガを内蔵させており、制御プログラムの作成のために必要なハードウェア資源以外にも、多量の資源を準備しなければならないといった問題点がある。また、プログラマブルコントローラ側(即ち実行装置側)も、アプリケーション実行機能とは別にCソースデバッガとのインタフェースのためのソフトウェア、ハードウェア資源を備えなければならず、コストアップを招くといった問題がある。
よって、追加のソフト資源やハード資源が少なくて済み、また割込み発生命令などの汎用性に乏しい特殊命令が不要なデバッグサポート機能、さらには、一般的なCPUを用いても実現可能な方式を用いてデバッグサポート機能を実現することが望ましい。
図16は、プログラマブルコントローラの一般的なアプリケーション構成を示す構成図である。
同図に示すように、プログラマブルコントローラのアプリケーションには、親となるプログラム(メインルーチン)から、共通使用可能なユーザプログラムまたはユーティリティプログラム(以下、「POU」と略すことがある)として記述されたサブルーチンであるユーザファンクション(以下、「UFCT」と略すことがある)や、ユーザファンクションブロック(以下、「UFB」または単に「FB」と略すことがある)を呼び出して、前記UFCTや、UFBでの実行を終えた後、リターン命令により前記プログラムの次のステップに実行位置が戻ってくるといった構成のものがある。即ち、このようなアプリケーションのメインルーチンは、POUを呼び出すシーケンスだけで構成することができる。
一般に、デバッグの初期の頃は、まずステップを順次実行していき、コール命令(即ち、POU等の呼び出し命令)に遭遇した時、例えば、呼び先のUFCTまたはUFBの先頭でブレークさせ、さらにステップを進めていき、前記UFCTまたはUFBの動作確認を行う方法を採用することが多い。この方法は、「ステップイン」と呼ばれている。
次に、デバッグがある程度進み、呼び先のUFCTまたはUFBの動作確認が既に完了している場合以降のデバッグである場合は、ステップインを実行しなくても、UFCTまたはUFBについては一気に実行を済ませてリターンしてきたところでブレークさせた方がプログラムのデバッグ効率が良い。このようなステップは「ステップオーバ」と呼ばれている。
従来のようにステップイン実行しかできないプログラマブルコントローラの場合は、ユーザが動作確認を既に終えているUFCTや、UFBを含んだプログラムを作成し、このプログラムのデバッグを行う際に、例えばUFCTを呼ぶ前と呼んだ後とで、前記プログラム内の変数内容を確認したいといった場合に、前記プログラムから、このUFCTの実行へと、ステップを進めることになるが、前記UFCTからリターンするところまでステップを進めないと、制御の流れは前記プログラムに戻って来ないため、非常に不便であり時間も掛かる。
従って、このような場合には、ステップオーバが威力を発揮することになり、その実現が本発明の課題である。
本発明は、上記従来の問題点に鑑みてなされたものであって、汎用マイコンを使用して、ステップオーバの機能を備えるプログラマブルコントローラを提供することを目的としている。
上記課題を解決するために、本発明に係るプログラマブルコントローラは、汎用CPUによって構成されるデバッグ機能を備えたプログラマブルコントローラであって、所与のプログラムを前記汎用CPUのマシン語へコンパイルする時に、前記プログラムのステップ単位で前記マシン語のNOP命令を挿入する手段と、前記NOP命令が挿入された前記マシン語の番地の各々を記憶する切れ目テーブルを、前記プログラムが呼び出すサブルーチン単位で作成する手段と、ステップイン時に使用される制御ルーチンまたはステップオーバ時に使用される制御ルーチンへの分岐命令を実行時に記憶させるためのJMPテーブルを生成する手段と、ブレーク設定の実行時に、ブレーク処理ルーチンから、ステップイン用またはステップオーバ用のデバッグタスクを起動して、ステップイン実行コマンドまたはステップ実行コマンドを待ち受ける手段と、前記いずれかのコマンドを受け付けた時に、前記プログラムのメインルーチンにおける前記マシン語に挿入された前記NOP命令を、前記JMPテーブルを参照する命令に書き替えると共に、前記JMPテーブルの記憶内容として、ステップイン時には、前記ステップイン時に使用される制御ルーチンへの呼び出し命令を記憶させ、ステップオーバ時には、前記ステップオーバ時に使用される制御ルーチンへの呼び出し命令を記憶させる手段と、前記ステップイン時に使用される制御ルーチンの実行により、前記切れ目テーブルを参照して、前記プログラムの前記メインルーチンの前記マシン語に挿入された前記ブレーク処理ルーチンへの分岐命令を、前記NOP命令に書き替えると共に、前記サブルーチンの前記マシン語に挿入された前記NOP命令を、前記ブレーク処理ルーチンへの分岐命令に書き替える手段と、前記ステップオーバ時に使用される制御ルーチンの実行により、前記切れ目テーブルを参照して、前記プログラムの前記メインルーチンの前記マシン語に挿入された前記ブレーク処理ルーチンへの分岐命令を、前記NOP命令に書き替える手段と、を備えたことを特徴とするプログラマブルコントローラを提供するものである。
また、前記プログラマブルコントローラにおける前記JMPテーブルの記憶内容として、ステップイン時には、前記ステップイン時に使用される制御ルーチンへの呼び出し命令に代えて前記ステップイン時に使用される制御ルーチンの処理開始番地を記憶させ、ステップオーバ時には、前記ステップオーバに使用される制御ルーチンへの呼び出し命令に代えて前記ステップオーバ時に使用される制御ルーチンの処理開始番地を記憶させる手段を備えたことを特徴とする。
さらに、前記プログラマブルコントローラにおいて、所与のプログラムを前記汎用CPUのマシン語へコンパイルする時に、前記プログラムのステップ単位での前記NOP命令の挿入を行わずに、前記マシン語にコンパイルする手段と、
前記切れ目テーブルに代えて、前記NOP命令が挿入されなかった前記マシン語の番地の各々を記憶する切れ目テーブルを、前記プログラムが呼び出すサブルーチン単位で作成する手段と、を備え、ブレーク設定時またはステップ実行時には、前記切れ目テーブルに記憶された前記マシン語を退避してから、前記ブレーク処理ルーチンを実行した後、前記退避しておいたマシン語を復元すると共に、前記復元したマシン語以降の命令を実行することを特徴とする。
さらに、前記プログラマブルコントローラにおいて、前記ステップオーバー時は、前記プログラムの前記メインルーチンにおける、ブレーク位置の次に実行する前記マシン語に挿入された前記NOP命令を、ブレーク処理への分岐命令に書き替える手段と、前記ステップオーバー時に使用される制御ルーチンにおいて、呼び出された直後に、前記JMPテーブルの記憶内容を前記ステップオーバー実行コマンドを受け付ける前の状態に戻す手段と、を備えたことを特徴とする。
以上説明したように、本発明のプログラムコントローラによれば、特殊な命令や割込み発生命令を備えた特異なマイコンを使用する必要がなく、一般的な汎用マイコンを使用して、ブレーク処理や、ステップインやステップオーバといったデバッグサポート機能を実現することが可能となるので、追加するハード、ソフトが少なくなり、コストの安いプログラムコントローラを提供することができる効果がある。
また、ユーザプログラムが、ファンクションブロックやファンクションといった共通使用のユーザプログラム(またはユーティリティプログラム)を呼び出すシーケンスを含む構成である場合、即ち、構造化や階層化がなされたプログラム構成の場合であっても、平坦な構成のユーザプログラムと同様に、ステップインや、ステップオーバの機能を実行することができる効果がある。
以下、本発明のプログラムコントローラの最良の実施形態について、図面を参照して詳細に説明する。
図1は、本発明の実施形態に係るプログラムコントローラの全体構成を示す構成図及びデバッグタスクを示す説明図である。
本発明の実施形態に係るプログラムコントローラは、ステップオーバの他に、ステップインも可能な構造となっている。
図1において、本実施形態のプログラムコントローラは、ローダとのコマンドインタフェースを担うローダサーバ1と、コマンドの前処理及び後処理を行うデバッグタスク2と、を備える。
ローダサーバ1からは、コマンドに応じた関数が呼ばれ、デバッグタスク2へ処理を依頼する構造となっている。ステップインコマンド用関数としてStepIn(11)、ステップオーバコマンド用関数としてStepOver(12)、継続起動コマンド用関数としてContRun(13)を備えている。この構成は、プログラムコントローラ本体が備えるソフトウェアの構造を機能毎に纏めた構成であり、本発明では、この構成に限らず、コマンド処理できるソフトウェアであれば構成要素とすることができる。
以下、図1を参照しながら、本実施形態に係るプログラムコントローラで実行されるデバッグタスクについて説明する。
デバッグタスク2(図1)は、プログラムの先頭において、ステップ実行中ビット(ステップイン実行中ビットおよびステップオーバ実行中ビット)を参照して、いずれのステップ処理を実行中かをチェックし、ステップイン実行中であればステップイン後処理を行う。
この後処理が完了すると、デバッグタスク2は前記ステップイン実行完了イベントをローダコマンド処理部(StepIn (11)) に対して発行し、ローダコマンド処理部は完了イベント受信により、ローダサーバ1へ完了応答を通知する。完了イベントを発行した後、デバッグタスク2はコマンド待ちとなり、次のコマンド(ステップイン実行コマンドまたはステップオーバ実行コマンドまたは継続起動コマンド)を待つ。
一方、ステップオーバ実行中であればステップオーバ後処理を行う。この後処理が完了すると、デバッグタスク2はステップオーバ実行完了イベントをローダコマンド処理部(StepOver(12))に対して発行し、ローダコマンド処理部は完了イベント受信により、ローダサーバ1へ完了応答を通知する。完了イベントを発行した後デバッグタスク2はコマンド待ちとなり、次のコマンドを待つ。
次に、シーケンスプログラムとシーケンス命令切れ目テーブルについて説明する。
図2は、シーケンス命令が記述されたプログラムとシーケンス命令切れ目テーブルとの関係を示す説明図である。
図2(a)はシーケンス命令が記述されたプログラム、図2(b)は汎用CPUのマシン語プログラム、図2(c)はシーケンス命令切れ目テーブルを、それぞれ示す。
ユーザによるシーケンスプログラム(図2(a))をコンパイルすることにより、シーケンス命令の1命令が複数個の汎用CPUマシン語に変換され、同時に前記シーケンス命令の切れ目毎に前記汎用CPUマシン語のNOP命令が挿入されて成るプログラム(図2(b))と、シーケンス命令切れ目テーブル(図2(c))が作成される。このシーケンス命令切れ目テーブルは、POU毎に生成される。
図2に示すように、このシーケンス命令切れ目テーブルは、POUの先頭を0としたオフセットで表現され、シーケンス命令の1命令毎にオフセット値(X1,X2,,,,,,XN)が列挙される。ここで、このオフセット値は汎用CPUのマシン語PC(プログラムカウンタ)単位であり、バイトアドレスで表現される。
図3は、ブレーク設定時の動作を説明する説明図である。また、図4は、命令置換テーブルを示す説明図である。
ステップ実行は、ブレーク状態でステップコマンドを受けることにより行われるものであるが、ブレーク状態を作り出すためのブレーク設定コマンド処理(SetBreak(21))と、ブレーク成立条件テーブルと、命令置換テーブル(図4)と、をプログラマブルコントローラ本体に備える。
ブレーク設定は、ローダサーバ1からプログラマブルコントローラへのブレーク設定コマンドによって行われる。ブレーク設定コマンドは、POU種別、POU番号、POU内相対アドレス、及びブレーク成立条件といったデータで構成される。
POU内相対アドレスはマシン語アドレスではなく、シーケンス命令単位の指定である。ブレーク設定コマンドデータを解釈し、ブレーク成立条件の退避、命令置換テーブルの作成、アプリケーションのPOU(以下、アプリPOUと略す)への命令置き換え操作を行う。
この命令置き換え操作では、POU内相対アドレスnを検索キーにして切れ目テーブルから読み出したN番目のオフセット値と、該当するPOU先頭アドレス(メモリの何番地からPOUが割り付けられているかが記述されているプログラムエントリテーブルから取得する)を加算してマイコン絶対アドレスを求め、このようにして算出されたマイコン絶対アドレスに格納されているNOP命令をブレーク処理への分岐命令に書き替える。これにより、アプリケーションプログラムのブレーク位置にはブレーク処理への分岐命令が仕組まれているので、スキャンの度に、制御の流れは後述するブレーク処理(図5参照)へ移る。
また、ブレーク設定の削除を行う時のために、図4に示す構成の命令置換テーブルが作成される。この命令置換テーブルは、コマンドで与えられたPOU種別、POU番号、及びPOU内相対アドレスを格納するフィールドの他、置き換えを行う命令の番地を示すマイコン絶対アドレスを保管するフィールド、置き換えを行う前の命令を保管するフィールド、及び置き換えをした後の命令を保管するフィールドによって構成される。
図5は、ブレーク処理の動作を説明するフローチャートである。
同図に示すように、ブレーク処理では、ステップイン実行中、またはステップオーバ実行中または、ブレーク条件成立、のいずれかにより、デバッグタスクを起動する。
このデバッグタスクはアプリケーションタスクより高い優先度にしておき、デバッグタスク実行中は、例え起動設定した定周期タイミングになったとしてもアプリケーションタスクは実行されず、ブレーク状態が保たれる。ちなみに、マルチタスク実行に関しては、μITRONなどのOS(オペレーティングシステム)によって管理及び実行が可能であるので、ここでは一般的な技術として詳細説明は省く。
ステップイン実行中か否かは、ステップイン実行中ビットを参照して判断する。ステップオーバ実行中かどうかはステップオーバ実行中ビットを参照して判断する。ブレーク条件成立かどうかは、ブレーク成立条件テーブル(図3)を参照して判断する。ステップ実行中でなく、ブレーク条件も非成立ならばデバッグタスクを起動せず、アプリPOUへ戻る。
以下、請求項1に対応する実施態様について説明する。
図6は、ブレーク位置からのステップオーバ処理の動作を示す説明図である。
図7は、ブレーク位置からのステップオーバ処理の動作を示す説明図(続き)である。
図8は、継続起動コマンドによる継続起動の動作を説明する図である。
同図では、ローダコマンド処理部とデバッグタスクとの間で、待ち合わせをしている様子が示されている。
図9は、ブレーク機能実現過程におけるPOUの遷移を示す説明図である。
同図に示すように、POU内のシーケンス命令切れ目の命令は、ブレーク機能実現過程において全置換される。
図10は、ブレーク発生時の呼び出し命令をオフセット対応に記憶するJMPテーブルの説明図である。図10(a)は通常実行時、図10(b)はステップイン実行時、図10(c)はステップオーバ実行時、のJMPテーブルをそれぞれ示す。
以下、図6〜10を参照して、ブレーク位置から実行されるステップオーバ処理の動作を説明をする。
1例として、プログラムからUFBをコールする構成のアプリケーションの運転中に、ブレーク設定コマンドにより設定した条件が成立し、ブレーク状態となっている時点で、ステップオーバ実行コマンドが送られてきたケースについて説明する。
図7において、ブレーク状態(P1)なので、ブレーク処理(P2→P3)に移り、デバッグタスクにてコマンド待ちをしている(P4)。ステップオーバ実行コマンドを受けると、ステップオーバ前処理を呼び(P5)、この前処理の中でJMPテーブルをステップオーバ用に書き換える(P6)。続けて、プログラム内の全切れ目NOP命令をブレーク処理へのCALL命令に置き換え(図9参照)、ステップオーバ実行中ビットをONにした(P7)後、ブレーク処理に戻る(P8)。
その後、アプリケーションプログラムに戻り(P9)、次に実行すべきシーケンス命令がコール命令(例えば図7に示す「CAL FB,1」)であった場合、アプリケーションプログラムからJMPテーブルのオフセットa(図10)を参照して、コールマクロ先に記憶されている命令(コール命令マクロStart_UFBD2へのジャンプ命令)をさらに実行する(即ち、UFB1へ制御の流れを渡す)(P10)。
以下、このコールマクロ先に記憶されている内容(即ち、Start_UFBD2へのジャンプ命令)について説明する。
この命令は、通常時はJMP Start_UFBとなっているが、ステップオーバ前処理によってJMP Start_UFBD2(請求項1記載のステップオーバ時の制御ルーチン)に書き換えられているため、ここでは、Start_UFBD2へとジャンプする(P11)。
Start_UFBD2では通常のUFBのコール処理に加えて、移動元プログラムを元のNOP命令に戻す(P12)。その後、通常の場合のStart_UFBと同様に、呼び出し先のFBへと移動する(P13)。これにより、実行位置が呼び出し先FB先頭に移るが、そこにはブレーク処理への分岐命令が置かれていないため、通常どおりに命令を順次実行していく。即ち、ブレークすることなくリターン命令になるまで実行する。この実行がリターン命令に至ると、JMP End_UFBDに従い、ステップ実行用リターン命令マクロ(End_UFBD)へ飛ぶ(P14)。このマクロの実行により、移動元FBの全置換されたNOP命令を元の命令に戻す(詳細は後述する)。次に、移動先プログラムの全切れ目をブレーク処理への分岐命令に置換した後(P15)、移動先のPOUに移って直ぐにブレーク処理へ飛び(P16→17)、ステップオーバ実行中ビットがONになっているのでデバッグタスクを起動しステップオーバ後処理を呼ぶ(P18)。
ここで、移動元FBの全置換された命令を元の命令に戻す処理は、即ち、ブレーク処理へのコール命令をNOP命令にする処理であるが、ブログラムからステップオーバ実行して、FB1へ実行位置が移動してきた場合には、FB1は全置換されていないため、全切れ目はNOP命令のままであるから、結局NOP命令がNOP命令に置き換わることになり、即ち、変化がないものになる。
しかし、FB内でブレークしていて、そこでステップオーバ実行コマンドを受けた場合にはFBの全切れ目はNOP命令からブレーク処理へのコール命令へと全置換がなされるため、この場合に備えて前記リターン命令マクロ内で全置換された命令を元の命令に戻すステップが必要となる。
以下、デバッグタスクにおけるステップオーバ後処理(P18)以降を説明する。
ステップオーバ実行中ビットがONになっているため、ステップオーバ後処理へと進み、ローダコマンド処理部(StepOver(12)、図1参照)へのステップ実行完了通知と、ステップオーバ実行中ビットをOFFにする処理とを行い、次のコマンド待ち状態となる(即ち、ブレーク状態となる)。一方、ステップ実行完了通知を受けたローダコマンド処理部は、ローダサーバ1に完了応答を返す。以上によりステップオーバ実行の一連の処理を終える。
その後、継続起動コマンドがローダサーバ1によって与えられた場合に、デバッグタスク内の継続起動処理(図8)内にて、命令復元(プログラム内の全切れ目NOP命令をブレーク処理へのCALL命令へ置き換えてあるものを、NOP命令に戻す処理)とJMPテーブルの復元(ステップ用コールマクロへのJMP命令を通常用コールマクロへのJMP命令に書き戻す)とを行い、デバッグタスクを終了する。デバッグタスクを終了するとブレーク処理に戻り、さらにブレーク処理からアプリケーションプログラムへ戻る。なお、前述の命令復元の処理によりブレーク処理へのCALL命令は解除されているので、再度ブレーク処理に飛んで来ることはない。
次に、ステップイン実行動作を説明する。
図11は、ブレーク位置からのステップイン処理の動作を示す説明図である。
図12は、ブレーク位置からのステップイン処理の動作を示す説明図(続き)である。
1例として、プログラムからUFBを呼び出す構成のアプリケーションを運転中に、ブレーク設定コマンドにより設定した条件が成立し、ブレーク状態となっているところで、ステップイン実行コマンドが送られてきたケースについて、図11,12を参照して説明する。
図12において、ブレーク状態(Q1)なので、ブレーク処理(Q2→Q3)に移り、デバッグタスクにてコマンド待ちをしている(Q4)。ステップイン実行コマンドを受けると、ステップイン前処理を呼び(Q5)、この前処理の中でJMPテーブルをステップイン用に書き換える(Q6)。続けて、POU内の全切れ目のNOP命令をブレーク処理へのCALL命令に置き換え(図9参照)、ステップイン実行中のビットをONにした(Q7)後、ブレーク処理に戻る(Q8)。
その後、アプリケーションプログラムに戻り(Q9)、次に実行すべきシーケンス命令がコール命令(例えば、図12に示すように「CAL FB,1」)であった場合、アプリケーションプログラムからJMPテーブルのオフセットa(図10)を参照して、コールマクロ先に記憶されている命令(コール命令マクロStart_UFBDへのジャンプ命令)をさらに実行する(即ち、UFB1に制御の流れを渡す)(Q10)。
この命令は、通常時はJMP Start_UFBとなっているが、ステップイン実行前処理によってJMP Start_UFBD(請求項1記載のステップイン時の制御ルーチン)に書き換えられているため、ここでは、Start_UFBDへとジャンプする(Q11)。Start_UFBDでは通常のUFBコール処理に加えて、移動元プログラムの全置換されたJMP命令を元のNOP命令に戻し(Q12)、移動先FB(ここではUFB1)の全切れ目のNOP命令をブレーク処理へのコール命令に置換する(Q13)。その後、通常のStart_UFBと同様に、呼び出し先のFBへと移動する(Q14)。呼び出し先のFBの先頭にはブレーク処理へのコール命令が置かれているため、FBに移って直ぐにブレーク処理へ飛び(Q15→Q16)、ステップイン実行中ビットがONになっているのでデバッグタスクを起動し、ステップイン後処理へ進み(Q17)、ローダコマンド処理部(StepIn(11)、図1参照)へのステップ実行完了通知と、ステップイン実行中ビットをOFFにする処理とを行い、次のコマンド待ち状態となる(即ち、ブレーク状態となる)。一方、ステップ実行完了通知を受けたローダコマンド処理部は、ローダサーバ1に完了応答を返す。以上によりステップイン実行の一連の処理を終える。
その後、継続起動コマンドがローダサーバ1によって与えられた場合に、デバッグタスク内の継続起動処理(図8)内にて、命令復元(アプリケーションのFB内の全切れ目NOP命令をブレーク処理へのCALL命令へ置き換えてあるものを、NOP命令に戻す処理)とJMPテーブルの復元(即ち、ステップ用コールマクロへのJMP命令を通常用コールマクロへのJMP命令に書き戻す)とを行い、デバッグタスクを終了する。デバッグタスクを終了するとブレーク処理に戻り、さらにブレーク処理からアプリケーションのFBへ戻る。なお、前述の命令復元の処理によりブレーク処理へのCALL命令は解除されているので、再度ブレーク処理に飛んで来ることはない。
以上のように、ステップオーバ実行およびステップイン実行が可能である。
以下、請求項2に対応する実施態様について説明する。
図13は、ブレーク発生時の呼び出し番地をオフセット対応に記憶するJMPテーブルの説明図である。図13(a)は通常実行時、図13(b)はステップイン実行時、図13(c)はステップオーバ実行時、のJMPテーブルをそれぞれ示す。
ブレークするまでの形態は前述したとおりである。ブレーク状態でステップオーバ実行コマンドを受けると、図13に示すようにステップオーバ前処理でJMPテーブル上のコール/リターン命令マクロの番地を通常用のものからステップオーバ用のものへ書き換える。また一方、コール/リターンをするマシン語部分は、JMPテーブルから番地を読み込んだ上、マクロ先頭へと実行位置が移るようにコンパイラで生成されている。前処理以降の処理は前述のとおりである。
継続起動コマンドが与えられた場合に、通常用の命令マクロの番地に復元する。これにより、以後のアプリ実行では通常用命令マクロが実行される。
以下、請求項3に対応する実施態様について説明する。
図14は、ブレーク機能実現過程におけるPOUの遷移を示す説明図である。図14(a)は通常実行時、図14(b)はブレークポイント設定時、図14(c)は継続起動後(即ち、ブレーク解除後)の、POUの内容をそれぞれ示す。
前述の請求項1に対応する実施態様では、挿入しておいたNOP命令をブレーク処理への分岐命令に書き換えたが、請求項3に対応する実施態様では、この処理に代えて、
(1) ブレーク設定時、ステップコマンド実行時には切れ目の位置のマシン語を退避し、ブレーク処理への分岐命令に書き換える、
(2) ブレーク処理を終了する際、退避しておいたマシン語を復元し実行位置をアプリケーションプログラムに移す、
を実行するものである。
以下、ブレーク設定時の処理の流れについて図14を参照して説明する。
ローダサーバ1からブレークポイント設定コマンドがプログラマブルコントローラに与えられることにより、該当POUのマシン語(図14では「マシン語i」)を退避領域へ退避した後、ブレーク処理への分岐命令(図14に示す例ではCALL命令を使用している)に書き換える。プログラマブルコントローラの実行がブレークポイントに達した場合に、ブレーク処理へと分岐し、プログラマブルコントローラはブレーク状態となり、ブレーク処理内での次のコマンドを待つ。
ブレーク状態の解除は、ローダサーバ1からの継続起動コマンドがプログラマブルコントローラに与えられることにより行われる。継続起動コマンドを受信したら、退避しておいたマシン語をPOUに復元し、実行PCを復元したPOUのマシン語位置に設定する。これにより、ブレーク状態が解除され、「マシン語i」以降のマシン語ステップを実行する。即ち、ブレーク状態が解除される。
図15は、ステップ実行時の処理手順の1例を示す説明図である。
以下、ステップ実行時の処理の流れについて図15参照して説明する。
ステップは、ブレーク状態でステップ実行コマンドを与えられることにより実行される。その手順は以下のとおりである。
(1) 全切れ目の命令を退避し、ブレーク処理への分岐命令(図15に示す例では「CALLブレーク処理」)へ書換える。
(2) コマンドがステップオーバの場合、JMPテーブルをステップオーバ用に書換える。また、コマンドがステップインならステップイン用に書き換える。
(3) ブレーク箇所のCALL命令を退避しておいたマシン語に復元する。
(4) マシン語iへ実行PCを設定する。
(5) 実行位置がブレーク処理からアプリケーションのPOUへと移動し、マシン語i以降が実行される。
(6) 1ステップ分マシン語を実行するとブレーク処理への分岐命令が出現し、この分岐命令が実行されてブレーク処理に到達する。ここで仮にUFB/UFCTへのコールが含まれていた場合、命令マクロ経由でUFB/UFCTを実行した後、ブレーク処理に至る。
(7) ブレーク処理に飛ぶことでプログラマブルコントローラは再度ブレーク状態となり、ブレーク処理内で、次のコマンド待ちをする。
(8) 継続起動コマンドを受けた場合、置換のために退避しておいたマシン語を退避領域から読み込み、POUへ復元する。また、JMPテーブルを通常実行用マクロが呼ばれるように書き換える。さらに、実行PCをブレーク位置のマシン語に設定し、ブレーク処理から抜け出る。以上により、プログラマブルコントローラの通常実行状態となる。
以下、請求項4に対応する実施態様について説明する。
図17は、図16と同様に、プログラマブルコントローラの一般的なアプリケーション構成図の一例である。図17では、サブルーチン内で、更にサブルーチンの呼び出しが実行される。
図18は、図17にステップオーバ処理時のコントローラ動作の流れを示した説明図である。
図19は、ブレーク位置からのステップオーバ処理の動作を示す説明図である。
図20及び図21は、図18の各動作時点におけるPOUの状態及びJMPテーブルの状態遷移を示す説明図である。図20は請求項4、図21は請求項1における動作を模式的に示しており両者を比較することにより、動作における相違点が補足される。
図22は、ステップオーバ時の制御ルーチン呼び出しに伴うコール処理とリターン処理を示す説明図である。
前述の請求項1に対応する実施態様に加えて、請求項4に対応する実施態様では、
(1) ステップオーバ実行時に次の命令位置をステップオーバ用の命令変換テーブルに格納し、該当する次の命令位置の先頭にある切れ目NOP命令をブレーク処理へのCALL命令に置き換えと、
(2) ステップオーバ用CALL処理において、アプリサポートJMPテーブルを通常のものに書き戻しと、
を実施するものである。
なお、ブレークするまでの形態(図1〜図5参照)、ステップオーバ実行コマンドを受けた際の動作(図6参照)、継続起動コマンドによる継続起動の動作(図8参照)、ブレーク機能実現過程におけるPOUの遷移(図9参照)、JMPテーブルの構成(図10参照)は、前述の実施態様と同様であるので説明を割愛する。
以下、図17及び図19を参照して、ブレーク位置から実行されるステップオーバ処理を説明する。また、図7、図18、図20、図21及び図22を参照して、請求項4に対応する実施態様と請求項1に対応する実施態様との動作の差異について説明する。
始めに、ブレーク位置から実行されるステップオーバ処理を説明する。
1例として、プログラムからUFBをコールし、該UFBからUFCTをコールする構成のアプリケーション(図17参照)の運転中に、ブレーク設定コマンドにより設定した条件が成立し、ブレーク状態となっている時点で、ステップオーバ実行コマンドが送られてきたケースについて説明する。
図19において、ブレーク状態(S1)なので、ブレーク処理(S2→S3)に移り、デバッグタスクにてコマンド待ちをしている(S4)。ステップオーバ実行コマンドを受けると、ステップオーバ前処理を呼び(S5)、この前処理の中でJMPテーブルをステップオーバ用に書き換える(S6)。続けて、プログラム内の全切れ目NOP命令をブレーク処理へのCALL命令へ置き換える(図9参照)。また、ステップオーバ用のブレーク設定をする。ここでは、ブレーク位置の次の命令位置をステップオーバ用の命令変換テーブルに格納する。また、ブレーク位置の次の命令位置において、その先頭にある切れ目NOP命令をブレーク処理へのCALL命令に置き換える(S6−1)。ステップオーバ用の命令変換テーブルとしては、前述したブレーク設定の削除を行う時のための命令置換テーブル(図4参照)と同じ構成を用いることにより実現する。前処理の最後として、ステップオーバ実行中ビットをONにした(S7)後、ブレーク処理に戻る(S8)。
その後、アプリケーションプログラムに戻り(S9)、次に実行すべきシーケンス命令がコール命令(例えば図19に示す「CAL FB,1」)であった場合、アプリケーションプログラムからJMPテーブルのオフセットa(図10)を参照して、コールマクロ先に記憶されている命令(コール命令マクロStart_UFBD2へのジャンプ命令)をさらに実行する(即ち、UFB1へ制御の流れを渡す)(S10)。
以下、このコールマクロ先に記憶されている内容(即ち、コール命令マクロStart_UFBD2へのジャンプ命令)について説明する。
この命令は、通常時はJMP Start_UFBとなっているが、ステップオーバ前処理によってJMP Start_UFBD2(請求項1記載のステップオーバ時の制御ルーチン)に書き換えられているため、ここでは、Start_UFBD2へとジャンプする(S11)。
Start_UFBD2では、通常のUFBのコール処理に加えて、移動元プログラムのJMP命令でもって全置換された命令を元のNOP命令に戻す(S12)。また、JMPテーブルをステップオーバ用JMPテーブルから通常のJMPテーブルに書き戻す(S12−1)。この処理により以降の命令実行動作は通常動作と同様になり、その後は書き戻されたJMPテーブルに従い、通常の場合のStart_UFBと同様に、呼び出し先のFBへと移動する(S13)。これにより、実行位置が呼び出し先FB先頭に移るが、そこにはブレーク処理への分岐命令が置かれていないため、通常どおりに命令を順次実行していく。即ち、ブレークすることなくリターン命令になるまで実行する。この実行がリターン命令に至ると、JMP End_UFBに従い、通常のリターン命令マクロ(End_UFB)へ飛ぶ(S14)。通常のマクロなので、特別な処理はせずに移動先のPOUに移るが(S16)、切れ目においてステップオーバ用のブレーク処理へのCALL命令が設定されているので(S6−1参照)、直ぐにブレーク処理に飛ぶ(S17)。ステップオーバ実行中ビットがONになっているのでデバッグタスクを起動しステップオーバ後処理を呼ぶ(S18)。ステップオーバ後処理以降については、前述の請求項1に対応する実施態様と同様である。
次に、請求項4に対応する実施態様と請求項1に対応する実施態様との動作の差異について説明する。
プログラムからUFBをコールし、該UFBからUFCTをコールする構成のアプリケーション(図17参照)の運転中におけるステップオーバ処理の動作の流れ(図18参照)と、図18の各動作時点におけるPOUの状態及びJMPテーブルの状態遷移について、請求項4に対応する実施態様、請求項1に対応する実施態様の順に説明する。
図20では、メインルーチンであるPGxx、そこから呼び出されるUFBのFByy、さらにUFBから呼び出されるUFCTのFCTzz、JMPテーブルの状態について、プログラムの実行位置(図18の符号R1〜R11)による変化を示している。
(1)請求項4に対応する実施態様の場合、ブレークポイント時(R1)は通常の状態である。ステップオーバが発生する度(R2〜R3)に、前述のプログラム内の全切れ目NOP命令をブレーク処理へのCALL命令へ置き換える処理(図19のS5参照)により、PGxxは切れ目にNOP命令を有する通常のPOU(以降、NOPと略す)から切れ目NOP命令をブレーク処理へのCALL命令へ置き換えたPOU(以降、CALと略す)になる。ここで、ステップオーバ用のブレーク設定もされ、ステップオーバ実行の次の命令位置をステップオーバ用の命令変換テーブルに格納し、該当する次の命令位置の先頭にある切れ目NOP命令をブレーク処理へのCALL命令にPOUを置き換える(以降、STEP BREAKと略す)(図19のS6−1参照)。また、JMPテーブルをステップオーバ用(以降、STEP OVER JMPと略す)に書き換える(図19のS6参照)。ここで、PGxxにおけるSTEP BREAKによるブレーク処理へのCALL命令は、CALにも記述されているので、結果的にCALだけの場合と同じ処理になり、実際の動作において2度ブレークさせる必要は無い。
続けて、次に実行すべきシーケンス命令がコール命令だった場合(R4)、移動元プログラムのCALL命令でもって全置換された命令を元のNOP命令に戻す処理(図19のS12参照)により、PGxxのCALは解消されるので、PGxxはSTEP BREAK状態になる。続けて、Start_UFBD2の処理において(図19のS12−1参照)により、JMPテーブルはSTEP OVER JMPから通常のJMPテーブルに戻す。以降、呼び出したUFBに戻るまで(R4〜R10)各状態は変わらず、PGxxにおけるSTEP BREAKの対象に至るとブレーク状態になり、継続起動コマンド(R11)により通常処理に戻る。
(2)請求項1に対応する実施態様の場合、ブレークポイント時(R1)は通常の状態である。ステップオーバが発生する度(R2〜R3)に、前述のプログラム内の全切れ目NOP命令をブレーク処理へのCALL命令へ置き換える処理(図7のP7参照)により、PGxxは、NOPからCALになる。また、JMPテーブルをSTEP OVER JMPに書き換える(図7のP6)。
続けて、次に実行すべきシーケンス命令がコール命令だった場合(R4)、移動元プログラムのCALL命令でもって全置換された命令を元のNOP命令に戻す処理(図7のP12参照)により、PGxxはCALからNOPに戻す。その後処理を続けていくと、UFCTをコールするので(R6)、移動元のFByyをNOPに戻すが、元からNOPなので状態は変化しない。処理はUFCTに移り(R7)、リターン命令に至る(R8)と、移動先プログラムの全切れ目をブレーク処理への分岐命令に置換する処理(図7のP15参照)にてFByyはNOPからCALになる。また、移動元のFCTzzをNOPに戻すが、元からNOPなので状態は変化しない。その後、FByyに移り、FByyにおける動作(R9)では、切れ目ごとにブレークすることになる。リターン命令に至る(R10)と、移動先プログラムの全切れ目をブレーク処理への分岐命令に置換する処理(図7のP15参照)にてPGxxはNOPからCALになる。また、移動元のFByyをCALからNOPに戻す。その後のPGxxに移り、切れ目でブレークする。以降、継続起動コマンド(R11)により、ステップオーバは完了し、ステップオーバ後処理(図7のP18参照)において、JMPテーブルがSTEP OVER JMPから通常のJMPテーブルに戻り、通常処理に戻る。
上記から明らかなように、請求項4に対応する実施態様においては、コール命令(R4)でUFBを呼び出した後は、PGxxに戻ってきて次の切れ目でブレークするのに対し、請求項1に対応する実施態様ではUFBでUFCTを呼出し、戻った直後から切れ目ごとにブレークしてしまう。これは、ステップオーバ時のコール命令における処理の違いによる。
請求項1に対応する実施態様では、図22(a)で示すコール処理で呼出し、図22(c)で示すリターン処理で復帰する。一方で、請求項4に対応する実施態様の場合では、図22(b)で示すコール処理で呼出し、図22(d)で示すリターン処理で復帰する。前者はコール後から復帰までの間はステップオーバ用のルーチンとして動作しているのに対し、後者はコール時点でJMPテーブルや呼び出すルーチンは通常のものに戻してあるので、以後の処理は通常の処理と同等になる。結果、次のブレーク地点である呼出し後の切れ目までは通常の処理となり、図17に示すような、サブルーチン内で更にサブルーチンの呼び出しが実行される場合でも、ステップオーバ実行が可能になる。
なお、本発明に係るプログラマブルコントローラの各構成要素の処理の少なくとも一部をコンピュータ制御により実行するものとし、かつ、上記処理を、コンピュータに実行せしめるプログラムは、半導体メモリを始め、CD−ROMや磁気テープなどのコンピュータ読み取り可能な記録媒体に格納して配付してもよい。そして、少なくともマイクロコンピュータ,パーソナルコンピュータ,汎用コンピュータを範疇に含むコンピュータが、上記の記録媒体から上記プログラムを読み出して、実行するものとしてもよい。
プログラマブルコントローラの一般的なアプリケーション構成を示す構成図である。 シーケンス命令が記述されたプログラムとシーケンス命令切れ目テーブルとの関係を示す説明図である。 ブレーク設定時の動作を説明する説明図である。また、図4は、命令置換テーブルを示す説明図である。 命令置換テーブルを示す説明図である。 ブレーク処理の動作を説明するフローチャートである。 ブレーク位置からのステップオーバ処理の動作を示す説明図である。 ブレーク位置からのステップオーバ処理の動作を示す説明図(続き)である。 継続起動コマンドによる継続起動の動作を説明する図である。 ブレーク機能実現過程におけるPOUの遷移を示す説明図である。 ブレーク発生時の呼び出し命令をオフセット対応に記憶するJMPテーブルの説明図である。 ブレーク位置からのステップイン処理の動作を示す説明図である。 ブレーク位置からのステップイン処理の動作を示す説明図(続き)である。 ブレーク発生時の呼び出し番地をオフセット対応に記憶するJMPテーブルの説明図である。 ブレーク機能実現過程におけるPOUの遷移を示す説明図である。 ステップ実行時の処理手順の1例を示す説明図である。 プログラマブルコントローラの一般的なアプリケーション構成を示す構成図である。 プログラマブルコントローラの一般的なアプリケーション構成を示す構成図である。 階層的なアプリケーションにおけるステップオーバ処理の動作の流れを示す説明図である。 ブレーク位置からのステップオーバ処理の動作を示す説明図である。 図18の各動作時点におけるPOUの状態及びJMPテーブルの状態遷移を示す説明図(請求項4)である。 図18の各動作時点におけるPOUの状態及びJMPテーブルの状態遷移を示す説明図(請求項1)である。 ステップオーバ時の制御ルーチン呼び出しに伴うコール処理とリターン処理を示す説明図である。
符号の説明
1 ローダサーバ
2 デバッグタスク
11 StepIn(ステップインコマンド用関数)
12 StepOver(ステップオーバコマンド用関数)
13 ContRun(継続起動コマンド用関数)

Claims (4)

  1. 汎用CPUによって構成されるデバッグ機能を備えたプログラマブルコントローラであって、
    所与のプログラムを前記汎用CPUのマシン語へコンパイルする時に、前記プログラムのステップ単位で前記マシン語のNOP命令を挿入する手段と、
    前記NOP命令が挿入された前記マシン語の番地の各々を記憶する切れ目テーブルを、前記プログラムが呼び出すサブルーチン単位で作成する手段と、
    ステップイン時に使用される制御ルーチンまたはステップオーバー時に使用される制御ルーチンへの分岐命令を実行時に記憶させるためのJMPテーブルを生成する手段と、
    ブレーク設定の実行時に、ブレーク処理ルーチンから、ステップイン用またはステップオーバー用のデバッグタスクを起動して、ステップイン実行コマンドまたはステップオーバ実行コマンドを待ち受ける手段と、
    前記いずれかのコマンドを受け付けた時に、前記プログラムのメインルーチンにおける前記マシン語に挿入された前記NOP命令を、前記JMPテーブルを参照する命令に書き替えると共に、前記JMPテーブルの記憶内容として、ステップイン時には、前記ステップイン時に使用される制御ルーチンへの呼び出し命令を記憶させ、ステップオーバー時には、前記ステップオーバー時に使用される制御ルーチンへの呼び出し命令を記憶させる手段と、
    前記ステップイン時に使用される制御ルーチンの実行により、前記切れ目テーブルを参照して、前記プログラムの前記メインルーチンの前記マシン語に挿入された前記ブレーク処理ルーチンへの分岐命令を、前記NOP命令に書き替えると共に、前記サブルーチンの前記マシン語に挿入された前記NOP命令を、前記ブレーク処理ルーチンへの分岐命令に書き替える手段と、
    前記ステップオーバー時に使用される制御ルーチンの実行により、前記切れ目テーブルを参照して、前記プログラムの前記メインルーチンの前記マシン語に挿入された前記ブレーク処理ルーチンへの分岐命令を、前記NOP命令に書き替える手段と、
    を備えたことを特徴とするプログラマブルコントローラ。
  2. 前記JMPテーブルの記憶内容として、ステップイン時には、前記ステップイン時に使用される制御ルーチンへの呼び出し命令に代えて前記ステップイン時に使用される制御ルーチンの処理開始番地を記憶させ、ステップオーバー時には、前記ステップオーバーに使用される制御ルーチンへの呼び出し命令に代えて前記ステップオーバー時に使用される制御ルーチンの処理開始番地を記憶させる手段を備えたことを特徴とする請求項1記載のプログラマブルコントローラ。
  3. 所与のプログラムを前記汎用CPUのマシン語へコンパイルする時に、前記プログラムのステップ単位での前記NOP命令の挿入を行わずに、前記マシン語にコンパイルする手段と、
    前記切れ目テーブルに代えて、前記NOP命令が挿入されなかった前記マシン語の番地の各々を記憶する切れ目テーブルを、前記プログラムが呼び出すサブルーチン単位で作成する手段と、を備え、ブレーク設定時またはステップ実行時には、前記切れ目テーブルに記憶された前記マシン語を退避してから、前記ブレーク処理ルーチンを実行した後、前記退避しておいたマシン語を復元すると共に、前記復元したマシン語以降の命令を実行することを特徴とする請求項1記載のプログラマブルコントローラ。
  4. 前記ステップオーバー時は、前記プログラムの前記メインルーチンにおける、ブレーク位置の次に実行する前記マシン語に挿入された前記NOP命令を、ブレーク処理への分岐命令に書き替える手段と、
    前記ステップオーバー時に使用される制御ルーチンにおいて、呼び出された直後に、前記JMPテーブルの記憶内容を前記ステップオーバー実行コマンドを受け付ける前の状態に戻す手段と、
    を備えたことを特徴とする請求項1記載のプログラマブルコントローラ。
JP2007062884A 2006-04-03 2007-03-13 プログラマブルコントローラ Active JP4479738B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007062884A JP4479738B2 (ja) 2006-04-03 2007-03-13 プログラマブルコントローラ

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006102038 2006-04-03
JP2007062884A JP4479738B2 (ja) 2006-04-03 2007-03-13 プログラマブルコントローラ

Publications (2)

Publication Number Publication Date
JP2007299379A JP2007299379A (ja) 2007-11-15
JP4479738B2 true JP4479738B2 (ja) 2010-06-09

Family

ID=38768783

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007062884A Active JP4479738B2 (ja) 2006-04-03 2007-03-13 プログラマブルコントローラ

Country Status (1)

Country Link
JP (1) JP4479738B2 (ja)

Also Published As

Publication number Publication date
JP2007299379A (ja) 2007-11-15

Similar Documents

Publication Publication Date Title
JP4718901B2 (ja) 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム
JP2002099312A (ja) プログラマブルコントローラおよび制御プログラム開発支援装置
US20050268195A1 (en) Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems
JP2015141539A (ja) 故障注入プログラム
JP4479738B2 (ja) プログラマブルコントローラ
JP4784355B2 (ja) プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法、プログラミング支援プログラム、プログラマブルコントローラのデバッグ制御プログラム
JP5906609B2 (ja) デバッグ支援プログラム、デバッグ支援方法及びデバッグ支援システム
JP2007034825A (ja) デバッグ装置
EP3660602B1 (en) Testing code for an industrial control program in an ancillary environment
JP2005174045A (ja) ソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体
JPH0410081B2 (ja)
JP3331357B2 (ja) プログラマブルコントローラ
CN113986321A (zh) 一种plc设备的升级方法、装置、设备及存储介质
WO2023125768A1 (zh) 设备的调试方法、设备及存储介质
JPH08320813A (ja) プログラムシミュレータ装置及びプログラムデバッグ方法
KR20080044652A (ko) Cpu에서의 스택을 이용한 디버깅 방법
JPH1021067A (ja) プログラムの動的修正方法
JP2503634B2 (ja) マイクロプログラム制御装置
JPH05108404A (ja) デバツガシステム
KR100538282B1 (ko) 체크 포인트를 이용한 실시간 병렬 프로그램 디버깅 방법
CN116881120A (zh) 面向同构非对称多核的OpenOCD单端口调试方法及系统
JPS6139134A (ja) プログラム変換方法
JP2007213396A (ja) デバッグシステム、オペレーションシステム、デバッグ方法、プログラム
JPH064298A (ja) プログラム開発環境構築システム
JPS59103158A (ja) デイジタル信号処理プログラムデバツグ方式

Legal Events

Date Code Title Description
A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20080916

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080919

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20081215

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100217

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

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

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

Free format text: PAYMENT UNTIL: 20130326

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4479738

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

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20130326

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20130326

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140326

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250