JP4479738B2 - プログラマブルコントローラ - Google Patents
プログラマブルコントローラ Download PDFInfo
- 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
Links
- 238000012545 processing Methods 0.000 claims description 114
- 230000006870 function Effects 0.000 claims description 31
- 230000008859 change Effects 0.000 claims description 5
- 238000000034 method Methods 0.000 description 94
- 230000008569 process Effects 0.000 description 83
- 238000010586 diagram Methods 0.000 description 26
- 238000001994 activation Methods 0.000 description 16
- 230000004913 activation Effects 0.000 description 14
- 230000007704 transition Effects 0.000 description 11
- 238000007781 pre-processing Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Landscapes
- Programmable Controllers (AREA)
Description
(1)専用プロセッサは高価である、
(2)専用プロセッサは専用のマシン語体系を有し、システムプログラム開発が比較的困難である、
というデメリットも存在していた。
前述の特許文献1に見られるように、汎用CPUを用いたプログラマブルコントローラでは、シーケンス命令の1命令につき、数個のマシン語によってシーケンス命令実行を実現している例が知られている。
以下の説明では、プログラム、ファンクションブロック、ファンクションの定義については、プログラマブルコントローラにおける記述言語規格のIEC61131−3に準ずるものとして説明を省略する。
図16は、プログラマブルコントローラの一般的なアプリケーション構成を示す構成図である。
次に、デバッグがある程度進み、呼び先のUFCTまたはUFBの動作確認が既に完了している場合以降のデバッグである場合は、ステップインを実行しなくても、UFCTまたはUFBについては一気に実行を済ませてリターンしてきたところでブレークさせた方がプログラムのデバッグ効率が良い。このようなステップは「ステップオーバ」と呼ばれている。
本発明は、上記従来の問題点に鑑みてなされたものであって、汎用マイコンを使用して、ステップオーバの機能を備えるプログラマブルコントローラを提供することを目的としている。
前記切れ目テーブルに代えて、前記NOP命令が挿入されなかった前記マシン語の番地の各々を記憶する切れ目テーブルを、前記プログラムが呼び出すサブルーチン単位で作成する手段と、を備え、ブレーク設定時またはステップ実行時には、前記切れ目テーブルに記憶された前記マシン語を退避してから、前記ブレーク処理ルーチンを実行した後、前記退避しておいたマシン語を復元すると共に、前記復元したマシン語以降の命令を実行することを特徴とする。
図1は、本発明の実施形態に係るプログラムコントローラの全体構成を示す構成図及びデバッグタスクを示す説明図である。
本発明の実施形態に係るプログラムコントローラは、ステップオーバの他に、ステップインも可能な構造となっている。
ローダサーバ1からは、コマンドに応じた関数が呼ばれ、デバッグタスク2へ処理を依頼する構造となっている。ステップインコマンド用関数としてStepIn(11)、ステップオーバコマンド用関数としてStepOver(12)、継続起動コマンド用関数としてContRun(13)を備えている。この構成は、プログラムコントローラ本体が備えるソフトウェアの構造を機能毎に纏めた構成であり、本発明では、この構成に限らず、コマンド処理できるソフトウェアであれば構成要素とすることができる。
デバッグタスク2(図1)は、プログラムの先頭において、ステップ実行中ビット(ステップイン実行中ビットおよびステップオーバ実行中ビット)を参照して、いずれのステップ処理を実行中かをチェックし、ステップイン実行中であればステップイン後処理を行う。
図2は、シーケンス命令が記述されたプログラムとシーケンス命令切れ目テーブルとの関係を示す説明図である。
図2(a)はシーケンス命令が記述されたプログラム、図2(b)は汎用CPUのマシン語プログラム、図2(c)はシーケンス命令切れ目テーブルを、それぞれ示す。
図3は、ブレーク設定時の動作を説明する説明図である。また、図4は、命令置換テーブルを示す説明図である。
ブレーク設定は、ローダサーバ1からプログラマブルコントローラへのブレーク設定コマンドによって行われる。ブレーク設定コマンドは、POU種別、POU番号、POU内相対アドレス、及びブレーク成立条件といったデータで構成される。
この命令置き換え操作では、POU内相対アドレスnを検索キーにして切れ目テーブルから読み出したN番目のオフセット値と、該当するPOU先頭アドレス(メモリの何番地からPOUが割り付けられているかが記述されているプログラムエントリテーブルから取得する)を加算してマイコン絶対アドレスを求め、このようにして算出されたマイコン絶対アドレスに格納されているNOP命令をブレーク処理への分岐命令に書き替える。これにより、アプリケーションプログラムのブレーク位置にはブレーク処理への分岐命令が仕組まれているので、スキャンの度に、制御の流れは後述するブレーク処理(図5参照)へ移る。
同図に示すように、ブレーク処理では、ステップイン実行中、またはステップオーバ実行中または、ブレーク条件成立、のいずれかにより、デバッグタスクを起動する。
このデバッグタスクはアプリケーションタスクより高い優先度にしておき、デバッグタスク実行中は、例え起動設定した定周期タイミングになったとしてもアプリケーションタスクは実行されず、ブレーク状態が保たれる。ちなみに、マルチタスク実行に関しては、μITRONなどのOS(オペレーティングシステム)によって管理及び実行が可能であるので、ここでは一般的な技術として詳細説明は省く。
図6は、ブレーク位置からのステップオーバ処理の動作を示す説明図である。
図7は、ブレーク位置からのステップオーバ処理の動作を示す説明図(続き)である。
図8は、継続起動コマンドによる継続起動の動作を説明する図である。
同図では、ローダコマンド処理部とデバッグタスクとの間で、待ち合わせをしている様子が示されている。
同図に示すように、POU内のシーケンス命令切れ目の命令は、ブレーク機能実現過程において全置換される。
図10は、ブレーク発生時の呼び出し命令をオフセット対応に記憶するJMPテーブルの説明図である。図10(a)は通常実行時、図10(b)はステップイン実行時、図10(c)はステップオーバ実行時、のJMPテーブルをそれぞれ示す。
1例として、プログラムからUFBをコールする構成のアプリケーションの運転中に、ブレーク設定コマンドにより設定した条件が成立し、ブレーク状態となっている時点で、ステップオーバ実行コマンドが送られてきたケースについて説明する。
この命令は、通常時はJMP Start_UFBとなっているが、ステップオーバ前処理によってJMP Start_UFBD2(請求項1記載のステップオーバ時の制御ルーチン)に書き換えられているため、ここでは、Start_UFBD2へとジャンプする(P11)。
以下、デバッグタスクにおけるステップオーバ後処理(P18)以降を説明する。
図11は、ブレーク位置からのステップイン処理の動作を示す説明図である。
図12は、ブレーク位置からのステップイン処理の動作を示す説明図(続き)である。
1例として、プログラムからUFBを呼び出す構成のアプリケーションを運転中に、ブレーク設定コマンドにより設定した条件が成立し、ブレーク状態となっているところで、ステップイン実行コマンドが送られてきたケースについて、図11,12を参照して説明する。
以下、請求項2に対応する実施態様について説明する。
図13は、ブレーク発生時の呼び出し番地をオフセット対応に記憶するJMPテーブルの説明図である。図13(a)は通常実行時、図13(b)はステップイン実行時、図13(c)はステップオーバ実行時、のJMPテーブルをそれぞれ示す。
以下、請求項3に対応する実施態様について説明する。
図14は、ブレーク機能実現過程におけるPOUの遷移を示す説明図である。図14(a)は通常実行時、図14(b)はブレークポイント設定時、図14(c)は継続起動後(即ち、ブレーク解除後)の、POUの内容をそれぞれ示す。
(1) ブレーク設定時、ステップコマンド実行時には切れ目の位置のマシン語を退避し、ブレーク処理への分岐命令に書き換える、
(2) ブレーク処理を終了する際、退避しておいたマシン語を復元し実行位置をアプリケーションプログラムに移す、
を実行するものである。
ローダサーバ1からブレークポイント設定コマンドがプログラマブルコントローラに与えられることにより、該当POUのマシン語(図14では「マシン語i」)を退避領域へ退避した後、ブレーク処理への分岐命令(図14に示す例ではCALL命令を使用している)に書き換える。プログラマブルコントローラの実行がブレークポイントに達した場合に、ブレーク処理へと分岐し、プログラマブルコントローラはブレーク状態となり、ブレーク処理内での次のコマンドを待つ。
以下、ステップ実行時の処理の流れについて図15参照して説明する。
ステップは、ブレーク状態でステップ実行コマンドを与えられることにより実行される。その手順は以下のとおりである。
(1) 全切れ目の命令を退避し、ブレーク処理への分岐命令(図15に示す例では「CALLブレーク処理」)へ書換える。
(3) ブレーク箇所のCALL命令を退避しておいたマシン語に復元する。
(4) マシン語iへ実行PCを設定する。
(5) 実行位置がブレーク処理からアプリケーションのPOUへと移動し、マシン語i以降が実行される。
(7) ブレーク処理に飛ぶことでプログラマブルコントローラは再度ブレーク状態となり、ブレーク処理内で、次のコマンド待ちをする。
以下、請求項4に対応する実施態様について説明する。
図18は、図17にステップオーバ処理時のコントローラ動作の流れを示した説明図である。
図20及び図21は、図18の各動作時点におけるPOUの状態及びJMPテーブルの状態遷移を示す説明図である。図20は請求項4、図21は請求項1における動作を模式的に示しており両者を比較することにより、動作における相違点が補足される。
図22は、ステップオーバ時の制御ルーチン呼び出しに伴うコール処理とリターン処理を示す説明図である。
(1) ステップオーバ実行時に次の命令位置をステップオーバ用の命令変換テーブルに格納し、該当する次の命令位置の先頭にある切れ目NOP命令をブレーク処理へのCALL命令に置き換えと、
(2) ステップオーバ用CALL処理において、アプリサポートJMPテーブルを通常のものに書き戻しと、
を実施するものである。
以下、図17及び図19を参照して、ブレーク位置から実行されるステップオーバ処理を説明する。また、図7、図18、図20、図21及び図22を参照して、請求項4に対応する実施態様と請求項1に対応する実施態様との動作の差異について説明する。
1例として、プログラムからUFBをコールし、該UFBからUFCTをコールする構成のアプリケーション(図17参照)の運転中に、ブレーク設定コマンドにより設定した条件が成立し、ブレーク状態となっている時点で、ステップオーバ実行コマンドが送られてきたケースについて説明する。
この命令は、通常時はJMP Start_UFBとなっているが、ステップオーバ前処理によってJMP Start_UFBD2(請求項1記載のステップオーバ時の制御ルーチン)に書き換えられているため、ここでは、Start_UFBD2へとジャンプする(S11)。
プログラムからUFBをコールし、該UFBからUFCTをコールする構成のアプリケーション(図17参照)の運転中におけるステップオーバ処理の動作の流れ(図18参照)と、図18の各動作時点におけるPOUの状態及びJMPテーブルの状態遷移について、請求項4に対応する実施態様、請求項1に対応する実施態様の順に説明する。
(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度ブレークさせる必要は無い。
2 デバッグタスク
11 StepIn(ステップインコマンド用関数)
12 StepOver(ステップオーバコマンド用関数)
13 ContRun(継続起動コマンド用関数)
Claims (4)
- 汎用CPUによって構成されるデバッグ機能を備えたプログラマブルコントローラであって、
所与のプログラムを前記汎用CPUのマシン語へコンパイルする時に、前記プログラムのステップ単位で前記マシン語のNOP命令を挿入する手段と、
前記NOP命令が挿入された前記マシン語の番地の各々を記憶する切れ目テーブルを、前記プログラムが呼び出すサブルーチン単位で作成する手段と、
ステップイン時に使用される制御ルーチンまたはステップオーバー時に使用される制御ルーチンへの分岐命令を実行時に記憶させるためのJMPテーブルを生成する手段と、
ブレーク設定の実行時に、ブレーク処理ルーチンから、ステップイン用またはステップオーバー用のデバッグタスクを起動して、ステップイン実行コマンドまたはステップオーバ実行コマンドを待ち受ける手段と、
前記いずれかのコマンドを受け付けた時に、前記プログラムのメインルーチンにおける前記マシン語に挿入された前記NOP命令を、前記JMPテーブルを参照する命令に書き替えると共に、前記JMPテーブルの記憶内容として、ステップイン時には、前記ステップイン時に使用される制御ルーチンへの呼び出し命令を記憶させ、ステップオーバー時には、前記ステップオーバー時に使用される制御ルーチンへの呼び出し命令を記憶させる手段と、
前記ステップイン時に使用される制御ルーチンの実行により、前記切れ目テーブルを参照して、前記プログラムの前記メインルーチンの前記マシン語に挿入された前記ブレーク処理ルーチンへの分岐命令を、前記NOP命令に書き替えると共に、前記サブルーチンの前記マシン語に挿入された前記NOP命令を、前記ブレーク処理ルーチンへの分岐命令に書き替える手段と、
前記ステップオーバー時に使用される制御ルーチンの実行により、前記切れ目テーブルを参照して、前記プログラムの前記メインルーチンの前記マシン語に挿入された前記ブレーク処理ルーチンへの分岐命令を、前記NOP命令に書き替える手段と、
を備えたことを特徴とするプログラマブルコントローラ。 - 前記JMPテーブルの記憶内容として、ステップイン時には、前記ステップイン時に使用される制御ルーチンへの呼び出し命令に代えて前記ステップイン時に使用される制御ルーチンの処理開始番地を記憶させ、ステップオーバー時には、前記ステップオーバーに使用される制御ルーチンへの呼び出し命令に代えて前記ステップオーバー時に使用される制御ルーチンの処理開始番地を記憶させる手段を備えたことを特徴とする請求項1記載のプログラマブルコントローラ。
- 所与のプログラムを前記汎用CPUのマシン語へコンパイルする時に、前記プログラムのステップ単位での前記NOP命令の挿入を行わずに、前記マシン語にコンパイルする手段と、
前記切れ目テーブルに代えて、前記NOP命令が挿入されなかった前記マシン語の番地の各々を記憶する切れ目テーブルを、前記プログラムが呼び出すサブルーチン単位で作成する手段と、を備え、ブレーク設定時またはステップ実行時には、前記切れ目テーブルに記憶された前記マシン語を退避してから、前記ブレーク処理ルーチンを実行した後、前記退避しておいたマシン語を復元すると共に、前記復元したマシン語以降の命令を実行することを特徴とする請求項1記載のプログラマブルコントローラ。 - 前記ステップオーバー時は、前記プログラムの前記メインルーチンにおける、ブレーク位置の次に実行する前記マシン語に挿入された前記NOP命令を、ブレーク処理への分岐命令に書き替える手段と、
前記ステップオーバー時に使用される制御ルーチンにおいて、呼び出された直後に、前記JMPテーブルの記憶内容を前記ステップオーバー実行コマンドを受け付ける前の状態に戻す手段と、
を備えたことを特徴とする請求項1記載のプログラマブルコントローラ。
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) |
-
2007
- 2007-03-13 JP JP2007062884A patent/JP4479738B2/ja active Active
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 |