(57)【特許請求の範囲】
【請求項１】
デバッグ機能を備え、ブレーク設定等のデバッグ指示命令を含むユーザプログラムを実行するコントローラ支援装置であって、
前記ユーザプログラムを読み込む手段と、
前記ユーザプログラムを構成するコントローラ専用機械語を汎用マイコンの実行コードに翻訳する翻訳手段と、
縮小命令セットに対応し、前記汎用マイコンの実行コードに変換されたユーザプログラムを実行する実行手段と、
前記汎用マイコンの実行コードに変換されたユーザプログラム内の擬似命令コードに、デバッグ用のコントローラファームウェアへの絶対分岐命令を埋め込む手段と、を備え、
ユーザからのブレーク設定等のデバッグ指示によりブレーク指定されたユーザプログラムコードを、前記擬似命令コード内の絶対分岐命令への相対分岐命令に置き換えることで、前記実行手段の実行中に、デバッグ機能を有効化させることを特徴とするコントローラ支援装置。
【請求項２】
前記実行手段は、ＲＩＳＣ（即ち、縮小命令セット・コンピュータ命令）を使用したマイコンにより実現されることを特徴とする請求項１記載のコントローラ支援装置。
【請求項３】
請求項１または請求項２記載のコントローラ支援装置における実行手段を構成するプログラマブルコントローラであって、デバッグ処理への分岐命令をテーブルとして、固定番地に配置することで、コントローラ内のデバッグ処理ファームウェアのコードアドレス変更が前記コントローラ支援装置へ影響しないように構成されたことを特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコントローラ支援装置およびプログラマブルコントローラに係り、特に、ユーザ側のアプリケーションプログラム（以下、「アプリケーション」と略称する）を実行するＣＰＵとして汎用マイコンが使用される場合のプログラマブルコントローラと、ユーザプログラムデバッグ機能により、このプログラマブルコントローラを支援するコントローラ支援装置およびプログラマブルコントローラに関する。
【背景技術】
【０００２】
プログラマブルコントローラは、ＦＡ(Factory Automation)などの用途に使用されているコンピュータである。
従来、プログラマブルコントローラの制御対象は、スイッチのＯＮ／ＯＦＦなど、ビット操作が主だったため、ビット演算を高速に行える専用ＬＳＩ（ＡＳＩＣ）が用いられることが多かった。しかしながら、ＡＳＩＣは高価であって、低性能で済ませるべき製品や、低コストにすることが要求される製品には用いることができなかった。また、近年のＬＳＩの高速化に伴い、ＡＳＩＣを用いなくても高速の汎用マイコンを用いることで十分に要求する演算性能が得られることがあるので、実際、ユーザプログラムの実行ＬＳＩとしては、ＡＳＩＣの代用として汎用マイコンを用いたプログラマブルコントローラも多数存在する。
【０００３】
このような汎用マイコンの中でも、ＲＩＳＣ（縮小命令セットコンピュータ）命令を使用したマイコン（以下、「汎用ＲＩＳＣマイコン」と称する）は、その命令セットの簡潔さから、処理速度の高速化に適しており、かつＣＩＳＣ（複合命令セットコンピュータ）命令を用いたマイコンよりもコードの移植性に優れているので、コントローラの専用ＡＳＩＣで実行されていたコントローラ専用機械語の実行処理の移植が可能なＣＰＵとして使用されている。
【０００４】
なお、プログラマブルコントローラのためのデバッグシステムとしては、例えば、特許文献１に開示されているように、制御プログラムを変更することなく、１行ずつのステップ実行を可能にしたものが提案されている。
【特許文献１】特開平９−２６５４１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上記背景技術で述べた従来のプログラマブルコントローラにあっては、例えば、前述の汎用ＲＩＳＣマイコンを使ったコントローラの場合、ユーザプログラムのデバッグ機能を提供することが一つの課題となっており、このようなデバッグ機能の１例として、ブレーク機能を挙げることができる。
【０００６】
このブレーク機能では、単にユーザプログラムの実行を停止するのみでなく、その時点での演算結果の参照や演算実行フラグの情報表示など、幾つかの実行したい処理が有り、それらの複雑な処理をユーザがブレーク対象に選んだ１命令に対して行う必要がある。
【０００７】
ＡＳＩＣを用いてユーザプログラムの実行を実現している従来のコントローラでは、現在実行しているユーザプログラムのプログラム番号（以下、「実行ＰＣ」と略称する）と、ユーザが停止させたいプログラム位置とを、ＡＳＩＣ内部の比較回路（コンパレータ）によってハードウェア的に比較し、一致した場合に内部割込み信号を発生して、その割込み処理内で前記ブレーク機能を実現することができるように構成されている。
【０００８】
けれども、汎用マイコンを用いたコントローラでは、前記のようなハードウェアを用いる手段での実行アドレスの比較は不可能なので、ユーザプログラムの中の実行を停止させたい位置にブレーク処理を行うためのブレークコード埋め込んで予めコンパイルを行うこととし、実行時、制御の流れが、このブレーク処理に遭遇する都度、コントローラにダウンロードしてデバッグを行わせるようにしていた。
【０００９】
図１１は、従来の汎用マイコンコントローラにおけるブレークコードの配置を示す説明図である。
図１１（ａ）に示すように、コントローラメモリ７１には、当初、ユーザプログラム７２と、システムファームウェア７４とが配置されているが、デバック機能を実行させる場合、図１１（ｂ）に示すように、ユーザプログラム７２には、ユーザプログラム７２ａとユーザプログラム７２ａとの間にブレーク処理のコード７３が挿入される。
【００１０】
しかしながら、このように構成した場合、
（１）  ユーザプログラム領域の多くがデバッグ機能のサブルーチンで消費されてしまう、
（２）  デバッグ完了の時点では、ユーザが明示的にデバッグ処理を削除した正規のユーザプログラムをダウンロードしない限り、ユーザプログラムにデバッグコードが埋め込まれたままとなり、誤動作の原因になる、
という問題点があり、この解決も本発明の課題であった。
【００１１】
本発明は、上記従来の問題点に鑑みてなされたものであって、デバッグコードをユーザプログラム中に含める手間を無くすと共に、デバッグ作業に付随するコンパイルとダウンロードとを不要にすることができるコントローラ支援装置を提供することを目的としている。
【００１２】
本発明の他の目的は、運転中のいかなるタイミングであっても、ユーザプログラム中の指定された命令を自動的にデバッグコードで置き換えることができるプログラマブルコントローラを提供することにある。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明に係るコントローラ支援装置は、デバッグ機能を備え、ブレーク設定等のデバッグ指示命令を含むユーザプログラムを実行するコントローラ支援装置であって、前記ユーザプログラムを読み込む手段と、前記ユーザプログラムを構成するコントローラ専用機械語を汎用マイコンの実行コードに翻訳する翻訳手段と、縮小命令セットに対応し、前記汎用マイコンの実行コードに変換されたユーザプログラムを実行する実行手段と、前記汎用マイコンの実行コードに変換されたユーザプログラム内の擬似命令コードに、デバッグ用のコントローラファームウェアへの絶対分岐命令を埋め込む手段と、を備え、ユーザからのブレーク設定等のデバッグ指示によりブレーク指定されたユーザプログラムコードを、前記擬似命令コード内の絶対分岐命令への相対分岐命令に置き換えることで、前記実行手段の実行中に、デバッグ機能を有効化させることを特徴とする。
【００１４】
また、前記コントローラ支援装置において、前記実行手段は、ＲＩＳＣ（即ち、縮小命令セット・コンピュータ命令）を使用したマイコンにより実現されることを特徴とする。
また、本発明に係るプログラマブルコントローラは、請求項１または請求項２記載のコントローラ支援装置における実行手段を構成するプログラマブルコントローラであって、デバッグ処理への分岐命令をテーブルとして、固定番地に配置することで、コントローラ内のデバッグ処理ファームウェアのコードアドレス変更が前記コントローラ支援装置へ影響しないように構成されたことを特徴とする。
【００１５】
本発明では、デバッグ処理手続きを予めコントローラ本体のシステムファームウェア上に構成し、ユーザアプリケーションの中の、支援ツールで参照するためだけに使われるコントローラでは実行されないコード（以下、「擬似命令コード」と呼称する）内にコントローラシステムファームウェア内のデバッグ処理への絶対分岐命令を埋め込んでおき、ユーザからのブレーク設定などのデバッグ操作が行われた段階で、ブレーク対象の命令を、予め埋め込んでおいた前記絶対分岐命令への相対分岐命令に置き換えることで、レジスタへの戻り番地の保存とシステムファームウェアへの分岐を実現している。
【００１６】
また、この時、分岐先をデバッグ処理そのものから分岐命令テーブルとすることで、コントローラのファームウェアの変更に起因する支援ツールの生成コードの修正を不要とし、また、コントローラと支援ツールとのバージョン依存性や機種依存性を排除するので、コントローラ本体、支援ツールとも独立して機能を更新することが可能となる。
【発明の効果】
【００１７】
以上説明したように、本発明のプログラマブルコントローラ及びその支援装置によれば、デバッグコードをユーザプログラム中に含める必要がないので、従来のように、デバッグ作業の都度、コンパイルとダウンロードとを行う必要がなくなる効果がある。
【００１８】
また、デバッグ完了時点でのデバッグ用コードの取り忘れなどの不具合を防ぐことができる効果がある。
さらに、運転中のいかなるタイミングであっても、指定されたユーザプログラムの命令を、自動的にデバッグコードに置き換えることができるので、コントローラ本体の機能アップや機種変更によるデバッグ処理コードのメモリ上の実装位置を支援ツール側で考慮する必要がなくなり、コントローラ本体と、その支援ツールとの変更の自由度が向上する効果がある。
【発明を実施するための最良の形態】
【００１９】
以下、本発明のプログラマブルコントローラ及びその支援装置の最良の実施形態について、図面を参照して詳細に説明する。
図１は、本発明の実施形態に係るプログラマブルコントローラを含むコントローラ支援装置の概念的な構成を示す構成図である。
【００２０】
同図において、本実施形態のコントローラ支援装置は、ユーザのプログラムを入力するコントローラ支援部１０と、前記入力されたプログラムを実行形式のプログラムに変換するコンパイラ１１と、前記実行形式のプログラムを伝送する伝送装置１２と、前記実行形式のプログラムを実行するコントローラ１３（本発明の実施形態に係るプログラマブルコントローラ）と、を備える。
【００２１】
コントローラ支援部１０は、前記ユーザのプログラムの入力を受け付ける入力装置１５と、前記入力されたプログラムを表示する表示装置１４と、前記入力されたプログラムを記憶するための記憶媒体１６と、を備える。
【００２２】
なお、図１に示す構成では、コンパイラ１１とコントローラ支援部１０とを異なる構成要素として示しているが、両者は、デバッグ機能付きの同一のハードウェア（例えばパソコン）で構成されていてもよい。また、伝送装置１２についても、これらと同一のハードウェア要素で構成されていてもよい。よって、本発明の実施形態に係るコントローラ支援装置の他の構成として、前記の構成に加えて、コンパイラ１１と、伝送装置１２まで含めた構成とすることも可能である。
【００２３】
以下、本実施形態のプログラマブルコントローラの機能について説明する。
ユーザのプログラムは、コントローラ支援部１０の入力装置１５に入力され、表示装置１４に表示されると共に、記録媒体１６に記録される。
【００２４】
コンパイラ１１は、前記入力されたプログラムを実行形式のプログラム（オブジェクトコード）に変換する。
伝送装置１２は、この実行形式のプログラムをコントローラ１３に伝送する。
【００２５】
コントローラ１３は、この伝送された実行形式のプログラムを一旦格納し、実行する。
本実施形態に係るコントローラ１３は、汎用ＲＩＳＣマイコンを用いたコントローラであり、そのためコントローラ１３の実行コードは、汎用マイコン用機械語である。よって、コンパイラ１１は、ユーザプログラム→コントローラ用専用機械語→汎用マイコン用機械語の順で、コード変換を行うものとする。
【００２６】
以下、本実施形態に係るコントローラ１３について説明する。
コントローラ１３は、汎用ＲＩＳＣマイコン（図示は省略）と、ユーザプログラムと、ユーザプログラムが使用するデータのデータ領域を有するＲＡＭと、システムファームウェアを格納するＲＯＭなどから成る（勿論、このコントローラ１３の構成は、コントローラハードウェア機能の一部機能を実現するための構成であり、その他に、通信のためのインタフェース等があってもよい）。
【００２７】
ユーザプログラムは、書換え可能なＲＯＭ（フラッシュメモリ等）に一旦格納しておき、そこで実行することも可能であるが、処理を高速化するため、ダウンロード時はフラッシュメモリに書込み、よりアクセス速度が高速のＲＡＭに展開してから実行することが好ましい。
【００２８】
コントローラ１３として、市販されている既成のコントローラ本体を使用する場合、そのシステムファームウェアは、本発明に係る支援ツールとは異なる汎用マイコン用ファームウェア開発環境で開発されたものである。また、このシステムファームウェアは、既に前記既成のコントローラ本体上に実装されている。
【００２９】
しかしながら、ユーザプログラムは、前述の支援ツール上で作成され、前述のとおり、コンパイラ１１により、機械語に変換されており、ユーザプログラムによってアクセスされるのは、ユーザデータメモリとユーザプログラムに限られるので、通常、前記システムファームウェア上の関数のアドレスは、ユーザプログラム内からは参照されない。
【００３０】
以下、本発明で用いるＲＩＳＣマイコンの分岐（ジャンプ）命令について説明する。分岐命令には相対分岐と絶対分岐がある。
相対分岐命令は、主にサブルーチンコールなどで用いられる命令である。ここで、相対という用語の意味は、当該実行命令（相対分岐命令）のアドレスをオリジンアドレスとして、前方何ワード（若しくは後方何ワード）分移動したアドレスに分岐せよという指定が可能であることを示している。
【００３１】
この相対分岐命令は、ジャンプサイズの違いなどはあるが、汎用のＲＩＳＣマイコンの場合、１命令で構成されることが一般的である。また、呼び出されたサブルーチンは、その処理が終わった後の復帰先として、前記分岐命令の次の命令に戻る必要があるので、当該分岐実行時に、次の実行アドレス（戻りＰＣ）がレジスタやスタックに退避され、当該サブルーチンの終了時に、この値をプログラムカウンタレジスタ（ＰＣ）にセットすることで、当該サブルーチンからの復帰を実現している。
【００３２】
一方、絶対分岐命令は、特定の物理番地をＰＣにセットすることで、分岐を実現する命令である。ＰＣに設定可能な番地であれば、いかなる番地にも分岐可能である。マイコンによっては、絶対分岐用の命令は存在せず、汎用のレジスタ上にアドレスを生成し、それをＰＣに移動させることで、分岐を実現している。なお、絶対分岐命令においては、前述の相対分岐命令における戻りＰＣの退避は行われない。
【００３３】
以下、前述の相対分岐命令と絶対分岐命令を示す例として、ＡＲＭ社の汎用ＲＩＳＣマイコンであるＡＲＭシリーズのアセンブラコードを参照して説明する。ＡＲＭ社の汎用ＲＩＳＣマイコンは、汎用ＲＩＳＣマイコンのコアとして、世界中で広く用いられている（その仕様は、ＡＲＭ社のマニュアル等を参照）。
【００３４】
図２は、ＡＲＭ社の汎用ＲＩＳＣマイコンのレジスタを示す説明図である。
同図において、ＡＲＭ社の汎用ＲＩＳＣマイコンは、汎用レジスタとしてＲ０〜Ｒ１５（２１）を備える。Ｒ１４は戻りＰＣを保存するためのリンクレジスタ（ＬＲ）（２２）として使用され、Ｒ１５は実行ＰＣを置数するレジスタ（ＰＣ）（２３）として使用されている。
【００３５】
図３は、相対分岐命令と絶対分岐命令をＡＲＭ社の汎用ＲＩＳＣマイコンのアセンブラコードで例示した説明図である。
同図において、ｂｌと書かれた命令（符号３１）が相対分岐命令であり、この命令が実行されると、「Ｃａｌｃ」というラベルの付いた命令への相対分岐が行われる。実際の機械語では、このようなラベルは、当該ラベルの付いた命令までの相対コード数に変換されている。この命令ｂｌ（符号３１）にて、前記ＰＣ（図２の符号２３で示す汎用レジスタ）への相対アドレスオフセットの加算と、前記ＬＲ（図２の符号２２で示される汎用レジスタ）への戻りＰＣ（図３の符号３４で示す命令のＰＣ）のセットとが同時に行われる。
【００３６】
図３の符号３３で示すｍｏｖ命令は、レジスタ間の値の移動命令であるが、ここでは前記ＬＲから前記ＰＣへ値を移動しており、制御の流れ（実行）を復帰先へ移す絶対分岐命令の役割を果たしている。よって、このｍｏｖ命令の実行によって、符号３１で示すｂｌ命令の次の命令（即ち符号３４で示すｍｏｖ命令）のＰＣに分岐することになる。
【００３７】
以下、本発明で想定されるユーザプログラムの例を説明する。
一般に、プログラマブルコントローラで実行されるユーザプログラムには、プログラマブルコントローラ上のユーザプログラムだけで、前述の支援ツール上にユーザの作成したプログラムが復元できるように、様々な情報が埋め込まれている。これらの情報は擬似命令と呼ばれ、通常は実行されないコードとしてコントローラに格納される。
【００３８】
コントローラ１３として汎用マイコンを用いた場合、この擬似命令は次に有効な実効命令へのジャンプ命令とし、このジャンプ命令とジャンプ先の命令との間に任意の情報を格納しておく。このようにして格納される任意の情報としては、プログラム名や、プログラムの作成年月日、プログラム画面表記時の改ページ情報などが挙げられる。
【００３９】
図４は、本実施形態に係るプログラマブルコントローラで実行されるユーザプログラムの１例を示す説明図である。
同図に示すように、コントローラ１３で実行されるユーザプログラム（ユーザアプリケーション）は、複数のプログラムから構成されるため、それらを識別するためのプログラム番号（符号４１）が、各プログラムに付けられる。その上で、ユーザは処理したいプログラムコード（符号４２）を記述する。
【００４０】
図５は、図４で示したユーザプログラムのコントローラ専用コードへの変換例を示す説明図である。
同図において、ＤＥＦ命令（符号５１）は、プログラム番号（符号４１）をコード内に保存しておくための擬似コードであり、コード実行上は無処理である。同様に、ＥＮＤ命令（符号５３）も、プログラムの終了位置を示すための擬似コードであり、コード実行上は無処理である。この例では、簡単のため、実行コード（符号５２）中に、Ａ、Ｂ、及びＣなる変数名を使用しているが、通常はコントローラ１３のアドレス番号が割り付けられている。
【００４１】
図６は、実際にコントローラで実行される汎用マイコンのコードの１例を示す説明図である。
同図に示すように、図５のＤＥＦ命令（符号５１）は、実際にコントローラで実行される汎用マイコンのコードでは、ｂ命令（符号６１）、ＰＧ０の情報（符号６２）、及びジャンプラベル（符号６３）に変換される。
【００４２】
前記ｂ命令は、分岐命令の一種であって、ＬＲへの戻りＰＣの退避を行わない分岐命令である。ここでは、前述の支援ツールで使用するための前記ＰＧ０の情報（符号６２）部分を読み飛ばし、ジャンプラベル（符号６３）へ実行を移すために使用している。ＰＧ０の情報は、通常のプログラム実行では実行されることはないので、保存しておきたい任意の情報を格納しておくことが可能である。なお、符号６４，６５，６６で示すコードは、図５に示す実行コードが汎用マイコンのコードで表記されたものであるが、本発明では重要部分ではないので、説明は省略する。
【００４３】
図７は、デバッグ処理への絶対分岐命令を含むユーザプログラムの１例を示す説明図である。
本発明では、前述のとおり、問題点（１）および（２）を解決することを課題としている。よって、デバッグ用の処理を予めシステムファームウェアとしてコントローラ１３に組み込んでおき、かつ図７の符号８１に示すように、そのシステムファームウェア内のデバッグコードのアドレスへの絶対分岐命令をユーザプログラム内の擬似命令内に置いておく。本来、支援ツールでは、システムファームウェアの関数アドレス（図７の符号８３で示すBREAK＿ADDR）は、参照の必要はないが、ブレーク関数のアドレスは高々１つのみであるので、コントローラファームウェアのコンパイル後に、そのアドレスを取得し、固定値として支援ツールに持たせることは難しいことではない。
【００４４】
図８は、本発明の実施形態に係るプログラマブルコントローラにおけるコントローラ１３のメモリ配置を示す説明図である。
同図に示すように、ユーザプログラムは、コントローラ１３が内蔵するメモリにおいて、符号９２で示すプログラム領域の中に格納されている。また、ブレーク処理（符号９５）は、予めシステムファームウェア（符号９３）の中に定義されている。図７に示す擬似命令内で指定しているブレーク処理のアドレスは、符号９４で示されるアドレスであり、システムファームウェアの生成時には確定したアドレスとなっている。今、ユーザ指示により、或る命令に対してブレーク設定を行うことを考える。支援ツール上で、ブレークしたい命令位置が選択されたら、その命令を置き換える分岐命令を生成する。ここで生成される分岐命令は、絶対分岐命令ではなく、擬似命令中の絶対分岐命令への相対分岐命令を用いる。
【００４５】
ちなみに、絶対分岐命令を用いた場合は、分岐先アドレスの汎用レジスタへの準備、ＰＣへのセット、及び戻り番地の退避のため、最低でも３命令が必要となり、実行中の命令を置き換えるとユーザプログラムの動作が異常となる可能性がある。また、これを避けるためには、置き換え処理中の割込み禁止などの手段が必要となることや、ユーザプログラムの最後の命令が置き換えられない可能性がある。
【００４６】
ここで、システムファームウェア内のブレーク処理へ直接相対分岐としない理由は、アドレスオフセットが相対分岐可能範囲を超えている可能性があるからであり、また、そもそもユーザプログラムがコントローラメモリのどこに配置されるかは、実際にユーザプログラムがコントローラ１３によってＲＡＭに配置された時点で初めて分かることであり、前述の支援ツール上では把握できないことだからである。
【００４７】
ユーザプログラム内の特定の位置への相対分岐は、ユーザプログラムのジャンプやループ処理で一般的に行われているものであり、そのアドレス生成は、前述の支援ツールのコンパイラ機能などを用いれば難しくない。
【００４８】
説明を戻して、前述のブレークしたい命令位置の命令を置き換える分岐命令が生成されたならば、前述の支援ツールより、コントローラ１３に対して、この命令の置換処理を依頼する。この場合、置き換え対象となる命令は、高々１命令（分岐命令１つ分）なので、特に割り込み禁止などの処理を行わなくても、運転中に誤動作を起こすことなく、この命令置換が可能となる。
【００４９】
このブレーク用の命令の置き換え処理は、前述の支援ツールを使用するユーザからのデバッグ操作があった段階でＲＡＭ上に展開されたユーザプログラムに対して行うこととする。このようにすれば、デバッグ終了後にはコントローラ１３をリセット等さえすれば、フラッシュメモリから、デバッグ置き換えコードを含まないユーザプログラムが再展開されるので、デバッグ処理用コードの削除し忘れを無くすことができる。
【００５０】
図９は、ユーザプログラムのある命令をブレーク処理へのジャンプ命令に置き換えたユーザプログラムの１例を示す説明図である。
同図に示すユーザプログラムの処理を順に追っていくと、まず符号１０１で示す命令Ｂが実行され、その結果、ＰＧ０＿ＣＯＤＥなるラベルのついた命令（符号１０４）に実行が移る。そこから符号１０５で示す一連の命令を実行し、置き換え命令（符号１０６）に到達する。この置き換え命令は、ＢＬ（相対分岐）命令であるので、ＬＲ（図２の符号２２で示すレジスタ）に、次の命令（符号１０７）のアドレスが退避される。そして、ラベル（ＪＭＰ＿ＢＲＥＡＫ）に示された番地（符号１０２）（実際には実行中の命令からの相対オフセットが設定されている）へ移動する。すると、そこにはＰＣにアドレスをセットするコード（符号１０３）が記述されているので、ＰＣへのアドレスセットを実行し、システムファームウェア上にあるブレーク処理を実行する。
【００５１】
このブレーク処理が完了したら、ブレーク処理内で置き換えた命令を元に戻し、ＬＲに格納されたアドレスから、置き換えた命令の番地（符号１０６）を算出した後、制御の流れをユーザプログラムに戻す（ここで、ちなみにＬＲの示す番地に直接戻すようにすると、相対分岐命令に置き換えられた命令の処理が実行されないままとなる）。
【００５２】
図１０は、ジャンプテーブルを参照してブレーク処理を実行させる方法を説明する説明図である。
なお、デバッグ関数のアドレスは、数は少ないものの、システムファームウェアが変更になるたびに変わるアドレスとなる。そのため、擬似命令中に埋め込む絶対分岐命令も、コントローラファームウェアの修正のたびに変更を行わなければならなくなる。しかしながら、本体ファームウェアの修正や変更は、支援ツールの変更と非同期に発生するものであり、本体ファームウェアが変更される度に支援ツールの変更を行っていたのでは非効率的である。
【００５３】
そこで、図１０に示すように、支援ツールで生成する擬似命令中の絶対分岐先を、デバッグ処理そのものの先頭アドレスではなく、デバッグ処理へ分岐するジャンプテーブル１１１へのアドレスとする。その上で、ジャンプテーブル１１１の中身（符号１１２）を、実際のブレーク処理関数の先頭アドレス（符号１１３）への分岐命令としておけば、このジャンプテーブル１１１の位置が変更とならない限り、本体ファームウェアの修正が支援ツールに影響しないようになる。
【図面の簡単な説明】
【００５４】
【図１】本発明の実施形態に係るプログラマブルコントローラを含むコントローラ支援装置の概念的な構成を示す構成図である。
【図２】ＡＲＭ社の汎用ＲＩＳＣマイコンのレジスタを示す説明図である。
【図３】相対分岐命令と絶対分岐命令をＡＲＭ社の汎用ＲＩＳＣマイコンのアセンブラコードで例示した説明図である。
【図４】本実施形態に係るプログラマブルコントローラで実行されるユーザプログラムの１例を示す説明図である。
【図５】図４で示したユーザプログラムのコントローラ専用コードへの変換例を示す説明図である。
【図６】実際にコントローラで実行される汎用マイコンのコードの１例を示す説明図である。
【図７】デバッグ処理への絶対分岐命令を含むユーザプログラムの１例を示す説明図である。
【図８】本発明の実施形態に係るプログラマブルコントローラにおけるコントローラ１３のメモリ配置を示す説明図である。
【図９】ユーザプログラムのある命令をブレーク処理へのジャンプ命令に置き換えたユーザプログラムの１例を示す説明図である。
【図１０】ジャンプテーブルを参照してブレーク処理を実行させる方法を説明する説明図である。
【図１１】従来の汎用マイコンコントローラにおけるブレークコードの配置を示す説明図である。
【符号の説明】
【００５５】
１０  コントローラ支援部
１１  コンパイラ
１２  伝送装置
１３  コントローラ（本発明に係るプログラマブルコントローラ）
１４  表示装置
１５  入力装置
１６  記録媒体
２１  汎用レジスタ
７１  コントローラメモリ
７２  ユーザプログラム
７４  システムファームウェア
１１１  ジャンプテーブル
【図１】
0004802775.tif 000002
【図２】
0004802775.tif 000003
【図３】
0004802775.tif 000004
【図４】
0004802775.tif 000005
【図５】
0004802775.tif 000006
【図６】
0004802775.tif 000007
【図７】
0004802775.tif 000008
【図８】
0004802775.tif 000009
【図９】
0004802775.tif 000010
【図１０】
0004802775.tif 000011
【図１１】
0004802775.tif 000012