JP2018067057A - 制御プログラムの検証装置及びプログラム - Google Patents
制御プログラムの検証装置及びプログラム Download PDFInfo
- Publication number
- JP2018067057A JP2018067057A JP2016203814A JP2016203814A JP2018067057A JP 2018067057 A JP2018067057 A JP 2018067057A JP 2016203814 A JP2016203814 A JP 2016203814A JP 2016203814 A JP2016203814 A JP 2016203814A JP 2018067057 A JP2018067057 A JP 2018067057A
- Authority
- JP
- Japan
- Prior art keywords
- executed
- instruction
- variable
- control program
- conditional expression
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】精度良く装置の制御プログラムの検証を行える検証装置を提供する。【解決手段】検証装置は、検証対象装置において制御プログラムを実行する制御部の動作を模擬するシミュレータと、制御プログラムにおいて検証対象装置のリソースに対応する変数についての条件式と、当該変数が当該条件式を満たすときに実行される命令と、当該命令の実行状態と、を示す実行状態情報を保持する保持手段と、シミュレータから実行した命令を示す実行情報が通知されると、実行状態情報の当該命令を実行済に設定する設定手段と、シミュレータから変数に対する書き込みアクセスが通知されると、当該変数が書込み前の値であるときに満たされる条件式で実行される命令を判定し、判定した命令の実行状態に基づき制御プログラムのエラーの有無を判定するエラー判定手段と、を備えている。【選択図】図1
Description
本発明は、装置の制御プログラムの検証を行う検証装置に関する。
装置の制御プログラムには、複数の制御対象を並列に処理するマルチタスク処理や、割込み処理が多用されている。そのため、処理が複雑になり、データ及び周辺ハードウェアといったリソースへのアクセス手順が設計通りに実装されないということが生じ得る。制御プログラムの検証を行うため、特許文献1は、メモリに対する書込アクセスと読出しアクセスをモニタし、読出しアクセスが実行される前に、書込みアクセスが実行された場合に不適切なアクセスと判定することを開示している。また、特許文献2は、検出すべきアクセス種別の順序を示すアクセスパターンと、制御プログラムの実行結果とを比較することで、不適切なアクセスを検出することを開示している。
例えば、割り込みを通知するためにメモリAの第1ビットと第2ビットが使用されているものとする。また、メモリAの第1ビット及び第2ビットがそれぞれ割り込みの発生を示すと、第1ビットに対応する割込み処理を行い、割り込み処理が終了すると、第1ビットをクリアするための書込みを行い、続いて、第2ビットに対応する割込み処理を行うものとする。この場合、割り込みが生じたことを示すためのメモリAに対する書込みと、割り込みの発生を判定するためのメモリAの読出しと、第1ビットに対応する割込み処理完了後のメモリAに対する書込みが順に発生する。ここで、制御プログラムのバグにより、第1ビットに対応する割込み処理の完了後、メモリAの第1ビットのみならず、第2ビットをクリアする処理を行っていたものとする。この場合でも、メモリAに対するアクセスは、書込み、読出し、書込みの順である。したがって、リソースに対するアクセスパターンのみでは、エラーを精度良く判定できない場合がある。
本発明は、精度良く装置の制御プログラムの検証を行える検証装置及びプログラムを提供するものである。
本発明の一側面によると、検証対象装置で動作する制御プログラムの検証装置は、前記検証対象装置において前記制御プログラムを実行する制御部の動作を模擬するシミュレータと、前記制御プログラムにおいて前記検証対象装置のリソースに対応する変数についての条件式と、当該変数が当該条件式を満たすときに実行される命令と、当該命令の実行状態と、を示す実行状態情報を保持する保持手段と、前記シミュレータから実行した命令を示す実行情報が通知されると、前記実行状態情報の当該命令を実行済に設定する設定手段と、前記シミュレータから変数に対する書き込みアクセスが通知されると、当該変数が書込み前の値であるときに満たされる条件式で実行される命令を判定し、前記判定した命令の実行状態に基づき前記制御プログラムのエラーの有無を判定するエラー判定手段と、を備えていることを特徴とする。
本発明によると、装置の制御プログラムの検証を精度良く行うことができる。
以下、本発明の例示的な実施形態について図面を参照して説明する。なお、以下の実施形態は例示であり、本発明を実施形態の内容に限定するものではない。また、以下の各図においては、実施形態の説明に必要ではない構成要素については図から省略する。
<第一実施形態>
図2は、本実施形態による検証装置の実行環境であるコンピュータシステム201の構成図である。本体部202のハードディスク205は、コンピュータシステム201を検証装置として動作させるためのプログラム及びデータを格納しており、中央処理部203は、これらプログラムやデータを主記憶装置204にロードして実行する。これにより、コンピュータシステム201は、検証装置として動作する。また、ハードディスク205は、検証装置の検証対象装置の制御部が実行する、検証対象の制御プログラムも格納している。検証装置として動作するコンピュータシステム201は、この制御プログラムを実行して、制御プログラムのエラーを判定する。なお、表示装置206は、本体部202からの指示によりユーザに各種表示を行う出力インタフェースである。また、キーボード207及びマウス208は、コンピュータシステム201にユーザが指示を与えるための入力インタフェースである。
図2は、本実施形態による検証装置の実行環境であるコンピュータシステム201の構成図である。本体部202のハードディスク205は、コンピュータシステム201を検証装置として動作させるためのプログラム及びデータを格納しており、中央処理部203は、これらプログラムやデータを主記憶装置204にロードして実行する。これにより、コンピュータシステム201は、検証装置として動作する。また、ハードディスク205は、検証装置の検証対象装置の制御部が実行する、検証対象の制御プログラムも格納している。検証装置として動作するコンピュータシステム201は、この制御プログラムを実行して、制御プログラムのエラーを判定する。なお、表示装置206は、本体部202からの指示によりユーザに各種表示を行う出力インタフェースである。また、キーボード207及びマウス208は、コンピュータシステム201にユーザが指示を与えるための入力インタフェースである。
図1は、本実施形態による検証装置の構成図である。検証装置は、実行部101と、マップ生成部102と、を備えている。実行部101は、検証対象装置の各機能を模擬するものであり、マップ生成部102は、後述する実行処理マップ115を生成する。以下では、まず、実行部101の各機能ブロックについて説明する。CPUシミュレータ103は、検証対象装置のCPUの動作を模擬する。つまり、検証対象装置の制御プログラムを実行して、検証対象装置の各部に対する制御動作を模擬する。CPUシミュレータ103は、メモリシミュレータ104や装置シミュレータ105に対して直接アクセスを行うのではなく、アクセスを行う場合には、管理部106にアクセス情報を通知する。なお、アクセス情報は、アクセスするリソースのアドレスと、アクセス種別と、アクセス種別が書込みである場合には、書込む値と、を含んでいる。なお、アクセス種別は、データの読出し(以下、リード)であるか、データの書込み(以下、ライト)である。なお、リソースとは、制御で使用する一時的な値、検証対象装置のハードウェアを制御するためのレジスタの設定値、信号値、命令等であるが、制御プログラムでは、これらは変数として扱われることが一般的であり以下の説明では変数として表記する。また、CPUシミュレータ103は、命令を実行すると、実行した命令を示す情報を含む実行情報を管理部106に通知する。実行した命令を示す情報は、以下の説明では、実行した命令が格納されているプログラムカウンタの値、つまり、メモリアドレスの値とする。CPUシミュレータ103は、管理部106にアクセス情報を通知すると、模擬動作を一旦停止する。その後、管理部106から再開通知を受けることで模擬動作を再開する。
メモリシミュレータ104は、検証対象装置の制御部の主メモリの動作を模擬する。メモリシミュレータ104には、検証対象装置の主メモリの各領域と1対1で対応する領域が定義される。装置シミュレータ105は、検証対象装置の制御部により制御される各機能の動作を模擬する。例えば、検証対象装置が画像形成装置である場合は、装置シミュレータ105は、画像形成を行うためのユニットやマイコンのペリフェラルの動作を模擬する。
管理部106は、CPUシミュレータ103、メモリシミュレータ104、装置シミュレータ105との間のデータ入出力を管理するとともに、CPUシミュレータ103による制御プログラムの実行を監視する。管理部106は、CPUシミュレータ103からのアクセス情報を処理するアクセス管理部108と、CPUシミュレータ103からの実行情報を処理する実行管理部109と、を備えている。
アクセス管理部108のアクセス情報管理部110は、CPUシミュレータ103からのアクセス情報に基づきアクセス対象の変数を特定し、かつ、アクセス種別を特定する。アクセス種別がライトの場合、アクセス情報管理部110は、アクセス対象の変数を判定対象として、解析部107にエラーの判定依頼を行う。このとき、アクセス情報管理部110は、判定対象の変数の書込み前の値を解析部107に通知する。情報伝達部111は、CPUシミュレータ103と、メモリシミュレータ104と、装置シミュレータ105との間で入出力されるデータを伝達する。再開処理部112は、解析部107から依頼したエラー判定の判定結果を受け取ると、CPUシミュレータ103に対して再開通知を行う。
実行管理部109の実行情報記憶部114は、実行処理マップ115に含まれる命令の実行状態を示す実行状態情報を記憶している。図3は、実行情報記憶部114が保持する実行状態情報の説明図である。実行状態情報は、条件式と、当該条件式が満たされたときに実行される命令と、当該命令の実行状態を示す情報である。なお、実行される命令は、実行情報と同様に、当該命令が格納されているメモリのアドレスで示される。実行状態情報の条件式と、当該条件式が満たされたときに実行される命令との対応関係は、解析部107の実行処理マップ115に示されており、実行管理部109は、この対応関係を解析部107から取得して実行情報記憶部114に格納しておく。なお、条件式とは、制御プログラムの変数を使用した分岐条件の条件式である。実行情報管理部113は、CPUシミュレータ103から実行情報を受け取ると、実行状態情報のエントリの内、当該実行情報に含まれる命令に対応するエントリの実行状態を実行済にする。例えば、CPUシミュレータ103が、アドレス0x56785678を含む実行情報を通知すると、実行情報管理部113は、図3の上から3番目のエントリの実行状態を実行済に変更する。
解析部107の実行処理マップ115は、上述した様に、条件式と、当該条件式が満たされたときに実行される命令を示す情報である。なお、実行処理マップ115は、マップ生成部102が予め制御プログラムに基づき生成したものである。判定部116は、管理部106から判定対象の変数についてのエラーの判定依頼を受けると、合わせて通知される判定対象の変数の現在の値に基づき、制御プログラムのエラーの有無の判定を行う。このとき、判定部116は、実行情報記憶部114に記憶されている実行状態情報等を判定に使用する。これら判定に必要な情報は、管理部106が判定依頼と共に解析部107に通知する構成でも、解析部107が必要に応じて管理部106から取得する構成でも、その両方を含む構成であっても良い。なお、判定部116における判定処理の詳細は後述する。警告出力部117は、判定部116がエラーと判定すると、判定結果等を表示装置206に表示させてユーザに伝達する。
図4は、アクセス管理部108における処理フローである。アクセス管理部108は、図4の処理を繰り返し実行する。アクセス管理部108は、S101で、CPUシミュレータ103よりアクセス情報が通知されるまで待機する。アクセス情報を受けると、アクセス管理部108は、S102でアクセス情報の内容を判定し、S103で、取得したアクセス情報のアクセス種別がリードであるかライトであるかを判定する。
アクセス種別がリードである場合、アクセス管理部108は、S104で、リード処理を行う。具体的には、アクセス情報で指定された変数(リソース)の現在の値を読み出してCPUシミュレータ103に通知する。その後、アクセス管理部108は、S108で、CPUシミュレータ103に対し処理の再開を通知する。一方、S103の判定において、アクセス種別がライトである場合、アクセス管理部108は、S105で、解析部107に、アクセス対象の変数及び当該変数の現在の値を通知してエラー判定を依頼する。解析部107による判定が完了すると、S106で、管理部106は、実行情報記憶部114が記憶する実行状態情報の内、判定対象の変数であって、当該変数の実行前の値で満たされる条件式に対応するエントリの実行状態を未実行に更新する。なお、解析部107による判定結果がエラーであると、図4の処理を停止する構成であっても良い。つまり、S106が実行されるのが、解析部107による判定結果がエラー無であると場合のみとする構成であっても良い。
管理部106は、S107で、ライト処理を行う。具体的には、メモリシミュレータ104や装置シミュレータ105にアクセスし、アクセス情報で指定された変数に対応するリソースに指定された値を書き込む。その後、管理部106は、S108でCPUシミュレータ103に対し処理の再開を通知する。
続いて、判定部116でのエラー判定処理の一例について図6を用いて説明する。図6(A)は、割込の発生を示す要因ビットレジスタを示し、図6(B)は、実行情報記憶部114が記憶する実行状態情報の内、要因ビットレジスタの値を条件式とする部分を示している。図6(B)によると、CPUシミュレータ103は、要因ビットレジスタのビット0の値が1であると、アドレス0x1234AAAAに格納された命令を実行する。CPUシミュレータ103は、当該命令の実行後、要因ビットレジスタのビット0の値を0に変更する。同様に、CPUシミュレータ103は、要因ビットレジスタのビット1の値が1であると、アドレス0x1234BBBBに格納された命令を実行し、要因ビットレジスタのビット1の値を0に変更する。ここで、例えば、制御プログラムは、要因ビットレジスタのビット0及びビット1の値が共に1であると、ビット0に対応する命令を実行し、ビット0に0を設定した後、ビット1に対応する命令を実行する様に設計されているものとする。しかしながら、制御プログラムのバグにより、CPUシミュレータ103は、ビット0に対応するアドレス0x1234AAAAに格納された命令の実行後、要因ビットレジスタのビット0及びビット1の両方に0を書込む様になっていたものとする。
この場合、CPUシミュレータ103は、まず、要因ビットレジスタのビット0の値が1であることから、アドレス0x1234AAAAに格納された命令を実行し、実行情報で、アドレス0x1234AAAAを実行管理部109に通知する。これにより、実行管理部109は、図6(C)に示す様に、実行状態情報の内、アドレス0x1234AAAAに対応するエントリの実行状態を実行済に変更する。続いて、CPUシミュレータ103は、要因ビットレジスタのビット0及びビット1に対するライトアクセスを示すアクセス情報をアクセス管理部108に通知する。なお、ビット0及びビット1に0を書込むのはバグであり、制御プログラムが設計通りであれば、ビット0のみに0を書込む。図4のS105で述べた様に、アクセス種別がライトであることから、アクセス管理部108は、解析部107にエラー判定を依頼する。このとき、アクセス管理部108は、ライト対象である要因ビットレジスタのビット0及びビット1を判定対象とし、それぞれの書込み前の値である1を解析部107に通知する。
解析部107の判定部116は、通知された要因ビットレジスタのビット0及ビット1の値が通知された1であるときに実行されるべき命令を実行処理マップ115に基づき判定する。そして、判定した命令の実行状態を実行管理部109から取得する。本例では、図6(C)に示す様に、0x1234AAAAの実行状態は実行済であるが、0x1234BBBBの実行状態は未実行である。判定部116は、実行管理部109から取得した総ての命令が実行されていないとエラーであると判定する。つまり、判定部116は、変数(上記例では要因ビットレジスタのビット0及びビット1)へのライトアクセスがあると、当該変数がライト前の値であるときに実行されるべき命令に未実行のものがあるとエラーと判定する。
図5は、判定部116における判定処理のフローチャートである。S201で判定部116は、判定対象の変数と、当該変数の現在の値を取得する。上記例では、判定対象の変数は要因ビットレジスタのビット0及びビット1であり、現在の値は共に1である。判定部116は、実行処理マップ115を参照して判定対象の変数が現在の値であるときに実行されるべき命令を判定し、判定した命令の実行状態をS202で実行管理部109から取得する。S203で、判定部116は、取得した実行状態が総て実行済みであるかを判定する。総て実行済であると、判定部116は、S204で正常と判定し、判定結果を管理部106に通知する。一方、総て実行済ではないと、判定部116は、S205でエラーと判定し、判定結果を管理部106に通知すると共に、S206で警告出力部117に警告を出力させる。
続いて、マップ生成部102について説明する。マップ生成部102は、制御プログラムを読み込んで、実行処理マップ115を生成し、解析部107に通知する。さらに、この情報は、実行管理部109にも通知される。情報抽出部118は、制御プログラムを読み込んで、変数と各変数について、分岐条件で参照されている箇所を抽出し、さらに、抽出した分岐条件に応じて実行される命令を抽出する。この様に、情報抽出部118は、制御プログラムの中の変数の条件式と、当該変数が当該条件式を満たすときに実行される命令と、の対応関係を判定する対応関係判定部として動作する。情報解析部119は、情報抽出部118が抽出した、変数に関する条件式と、当該条件式が満たされたときに実行される命令が格納されているアドレスの対応関係を判定して実行処理マップ115を生成する。
以上、変数へのライトアクセスがあると、当該変数が、その書込み前の値であるときに実行されるべき命令の実行状態を判定し、実行されていない命令が存在すると制御プログラムにエラーが有ると判定する。この構成により精度良く制御プログラムのエラーを判定することができる。
<第二実施形態>
続いて、本実施形態について第一実施形態との相違点を中心に説明する。第一実施形態では、制御プログラムによるライトアクセスをトリガとして、書込み対象の変数の変更前の値で実行されるべき総ての命令が実行されたか否かによりエラーを判定していた。ここで、制御プログラムによる処理において状態Aと状態Bの2つの状態が定義されているものとする。なお、状態Aと状態Bは互いに排他的であるものとする。また、状態Aのときには、ある変数を使用した分岐条件により処理Aが実行され、状態Bのときには同じ変数の同じ分岐条件で処理Bが実行されるものとする。第一実施形態の構成では、この変数に対するライトアクセスでの判定において、処理Aと処理Bの両方が実行されていないとエラーと判定され得る。
続いて、本実施形態について第一実施形態との相違点を中心に説明する。第一実施形態では、制御プログラムによるライトアクセスをトリガとして、書込み対象の変数の変更前の値で実行されるべき総ての命令が実行されたか否かによりエラーを判定していた。ここで、制御プログラムによる処理において状態Aと状態Bの2つの状態が定義されているものとする。なお、状態Aと状態Bは互いに排他的であるものとする。また、状態Aのときには、ある変数を使用した分岐条件により処理Aが実行され、状態Bのときには同じ変数の同じ分岐条件で処理Bが実行されるものとする。第一実施形態の構成では、この変数に対するライトアクセスでの判定において、処理Aと処理Bの両方が実行されていないとエラーと判定され得る。
このため、本実施形態では、図7に示す様に、解析部107に無効マップ301を設ける。以下、無効マップ301を使用した判定部116でのエラー判定処理についてモータ駆動処理を例にして説明する。本説明例において、検証対象装置は、2つのモータA及びモータBを有し、これらモータは、定常駆動状態とステップ駆動状態という2つの排他的な状態で制御されるものとする。また、モータ駆動のため、図8(A)に示すモータ駆動レジスタを使用し、モータ駆動レジスタのビット0はモータAの駆動/停止を示し、ビット1はモータBの駆動/停止を示すものとする。
図8(B)は、本例における実行状態情報を示している。なお、図8(B)において、条件式が同じエントリが2つ記載されているのは、モータには定常駆動状態とステップ駆動状態の2つの状態が定義されているからである。図8(B)において、処理A〜Dは、定常駆動状態である場合に実行される命令での処理であり、処理E〜Hはステップ駆動状態である場合に実行される命令での処理である。例えば、ステップ駆動状態であると、CPUシミュレータ103は、モータ駆動レジスタのビット0の値を判定し、1であると処理Eを実行し、0であると処理Fを実行する。その後、モータ駆動レジスタのビット1の値を判定し、1であると処理Gを実行し、0であると処理Hを実行する。定常駆動状態の場合のCPUシミュレータ103の処理フローを図9に示す。定常駆動状態の場合もステップ駆動状態の場合と基本的に同じであるが、モータAの駆動ビット、つまり、モータ駆動レジスタのビット0が1であると、処理Aを行い、処理Aの終了後、モータAが故障しているか否かを判定する。そして、モータAが故障であれば、モータAの駆動ビットを0に設定している。モータBについても同様である。
図10は、本例による無効マップ301を示している。無効マップ301は、条件式を満たすときに実行されない命令を示している。つまり、無効マップ301は、命令と、当該命令が実行されない検証対象装置のリソースの状態との対応関係を示す実行不可情報である。上述した様に、定常駆動状態では、処理A〜Dは実行され得るが、処理E〜Hは実行されない。一方、ステップ駆動状態では、処理E〜Hは実行され得るが、処理A〜Dは実行されない。このため、無効マップ301は、ステップ駆動状態であると処理A〜Dに対応する命令が実行されないことを示し、定常駆動状態であると、処理E〜Hに対応する命令が実行されないことを示している。無効マップは、例えば、ユーザが予め作成して解析部107に保存しておく。
図9に示す様に、モータAの駆動ビットが1であることから処理Aを行ったものとする。これにより、図8(B)の処理Aは実行済に設定される。その後のモータAの故障判定でモータAが故障であり、CPUシミュレータ103が、モータAの駆動ビット、つまり、モータ駆動レジスタのビット0の値を0にするライトアクセスを行ったものとする。この場合、判定部116は、モータ駆動レジスタのビット0が1であるときに実行されるべき命令を実行処理マップ115に基づき判定する。つまり、図11(A)に示す処理A及び処理Eが判定される。第一実施形態では、処理Eが未実行であることからエラーと判定される。一方、本実施形態では、図11(A)に示す2つの処理に対応する命令を無効マップ301から抽出する。つまり、図11(B)に示す2つのエントリが抽出される。判定部116は、図11(B)の条件式に基づき、状態を示す変数がステップ駆動を示しているのか、定常駆動を示しているのかを管理部106に問い合わせて取得する。本例では、定常駆動であるので無効マップ301に基づき処理Eが抽出され、図11(A)の内、処理Eについては実行済であるか否かの判定から除外される。その結果、処理Aのみが実行済であるか否かの判定対象となり、本例では、実行済であるのでエラー無と判定される。
続いて、制御プログラムにバグが有り、図9のフローチャートにおいて、モータAが故障している場合、モータ駆動レジスタのビット0及びビット1を0に設定する様になっていた場合について説明する。この場合、モータAが故障と判定されたことにより、CPUシミュレータ103は、モータ駆動レジスタのビット0及びビット1の値を0にするライトアクセスを行う。したがって、判定部116は、モータ駆動レジスタのビット0及びビット1が1であるときに実行されるべき命令を実行処理マップ115に基づき判定する。つまり、図12(A)に示す処理A、処理B、処理E及び処理Fが判定される。判定部116は、さらに、抽出した処理に対応する命令のエントリを無効マップ301から抽出する。つまり、図12(B)に示す4つのエントリが抽出される。上述したのと同様に、本例では、定常駆動状態であるので、判定部116は、図12(A)の処理E及び処理Fについては判定から除外する。つまり、判定部116は、処理A及びBの両方が実行済であるか否かを判定する。本例では、処理Bが未実行であるためエラーと判定される。本実施形態における判定部116での処理は、図6のS203における実行済であるか否かの判定対象を、無効マップ301に基づき決定すること以外は同じである。
以上、無効マップ301により実行済か否かの判定対象を制限することで、精度良く制御プログラムのエラー検証を行うことができる。なお、無効マップ301は、条件式で示された条件を満たすときに判定から除外される命令を示すものであった。しかしながら、条件式で示された条件を満たすときに判定に使用する命令を示す有効マップを使用する構成であっても良い。有効マップは、命令と、当該命令が実行され得る検証対象装置のリソースの状態との対応関係を示す実行可能情報である。
<第三実施形態>
第一実施形態では、制御プログラムの総ての変数に関する条件式と、当該条件式を満たしたときに実行される命令との関係を判定し、総ての変数それぞれに対するライトアクセス時にエラー判定を行っていた。本実施形態では、ユーザが指定した変数についてのみ監視を行う。図13は、本実施形態によるマップ生成部102の構成図である。有効リソースリスト401は、監視対象の変数を指定するものであり、ユーザにより作成される。本実施形態によるマップ生成部102での実行処理マップ115の生成手順は、基本的に第一実施形態と同様である。しかしながら、本実施形態では、有効リソースリスト401に含まれる変数についてのみ実行処理マップ115を生成し、有効リソースリスト401に含まれない変数については実行処理マップ115に含めない。この構成により、必要な変数についてのみ監視を行うことができる。
第一実施形態では、制御プログラムの総ての変数に関する条件式と、当該条件式を満たしたときに実行される命令との関係を判定し、総ての変数それぞれに対するライトアクセス時にエラー判定を行っていた。本実施形態では、ユーザが指定した変数についてのみ監視を行う。図13は、本実施形態によるマップ生成部102の構成図である。有効リソースリスト401は、監視対象の変数を指定するものであり、ユーザにより作成される。本実施形態によるマップ生成部102での実行処理マップ115の生成手順は、基本的に第一実施形態と同様である。しかしながら、本実施形態では、有効リソースリスト401に含まれる変数についてのみ実行処理マップ115を生成し、有効リソースリスト401に含まれない変数については実行処理マップ115に含めない。この構成により、必要な変数についてのみ監視を行うことができる。
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
103:CPUシミュレータ、113:実行情報管理部、114:実行情報記憶部、116:判定部
Claims (8)
- 検証対象装置で動作する制御プログラムの検証装置であって、
前記検証対象装置において前記制御プログラムを実行する制御部の動作を模擬するシミュレータと、
前記制御プログラムにおいて前記検証対象装置のリソースに対応する変数についての条件式と、当該変数が当該条件式を満たすときに実行される命令と、当該命令の実行状態と、を示す実行状態情報を保持する保持手段と、
前記シミュレータから実行した命令を示す実行情報が通知されると、前記実行状態情報の当該命令を実行済に設定する設定手段と、
前記シミュレータから変数に対する書き込みアクセスが通知されると、当該変数が書込み前の値であるときに満たされる条件式で実行される命令を判定し、前記判定した命令の実行状態に基づき前記制御プログラムのエラーの有無を判定するエラー判定手段と、
を備えていることを特徴とする検証装置。 - 前記エラー判定手段は、前記判定した命令の実行状態に未実行のものがあると前記制御プログラムにエラーが有ると判定することを特徴とする請求項1に記載の検証装置。
- 前記設定手段は、前記エラー判定手段が前記制御プログラムにエラーが無いと判定すると、前記判定した命令の実行状態を未実行に設定することを特徴とする請求項1又は2に記載の検証装置。
- 前記制御プログラムを読み込んで、前記制御プログラムの中の変数の条件式と、当該変数が当該条件式を満たすときに実行される命令と、の対応関係を判定する対応関係判定手段をさらに備えていることを特徴とする請求項1から3のいずれか1項に記載の検証装置。
- 前記対応関係判定手段は、指定された変数について、前記制御プログラムの中の条件式と、当該条件式を満たすときに実行される命令と、の対応関係を判定することを特徴とする請求項4に記載の検証装置。
- 前記エラー判定手段は、命令と、当該命令が実行されない検証対象装置のリソースの状態との対応関係を示す実行不可情報を保持しており、前記シミュレータから変数に対する書き込みアクセスが通知されると、当該変数が書込み前の値であるときに満たされる条件式で実行される命令を判定し、前記判定した命令それぞれについて、当該命令が実行され得るか否かを前記実行不可情報に基づき判定し、前記判定した命令の内、実行され得る命令の実行状態に基づき前記制御プログラムのエラーの有無を判定することを特徴とする請求項1から5のいずれか1項に記載の検証装置。
- 前記エラー判定手段は、命令と、当該命令が実行され得る検証対象装置のリソースの状態との対応関係を示す実行可能情報を保持しており、前記シミュレータから変数に対する書き込みアクセスが通知されると、当該変数が書込み前の値であるときに満たされる条件式で実行される命令を判定し、前記判定した命令それぞれについて、当該命令が実行され得るか否かを前記実行可能情報に基づき判定し、前記判定した命令の内、実行され得る命令の実行状態に基づき前記制御プログラムのエラーの有無を判定することを特徴とする請求項1から5のいずれか1項に記載の検証装置。
- 請求項1から7のいずれか1項に記載の検証装置としてコンピュータを機能させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016203814A JP2018067057A (ja) | 2016-10-17 | 2016-10-17 | 制御プログラムの検証装置及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016203814A JP2018067057A (ja) | 2016-10-17 | 2016-10-17 | 制御プログラムの検証装置及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018067057A true JP2018067057A (ja) | 2018-04-26 |
Family
ID=62087107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016203814A Pending JP2018067057A (ja) | 2016-10-17 | 2016-10-17 | 制御プログラムの検証装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018067057A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7479188B2 (ja) | 2020-05-07 | 2024-05-08 | 三菱電機エンジニアリング株式会社 | デバッグ支援装置、デバッグ支援方法およびプログラム |
-
2016
- 2016-10-17 JP JP2016203814A patent/JP2018067057A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7479188B2 (ja) | 2020-05-07 | 2024-05-08 | 三菱電機エンジニアリング株式会社 | デバッグ支援装置、デバッグ支援方法およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9519495B2 (en) | Timed API rules for runtime verification | |
US20140372985A1 (en) | API Rules Verification Platform | |
US9665469B2 (en) | System and method of runtime downloading of debug code and diagnostics tools in an already deployed baseboard management controller (BMC) devices | |
US8904240B2 (en) | Monitoring and resolving deadlocks, contention, runaway CPU and other virtual machine production issues | |
US20140331209A1 (en) | Program Testing Service | |
JP2020091835A (ja) | 情報を処理するための方法及び装置 | |
WO2020063197A1 (zh) | 数据库切换方法、***、电子设备和计算机可读介质 | |
US10789111B2 (en) | Message oriented middleware with integrated rules engine | |
EP3356939B1 (en) | Accurate generation of multiple dimensions of computer load | |
CN107608609B (zh) | 一种事件对象发送方法与装置 | |
JPWO2013088565A1 (ja) | 検知装置、検知プログラムおよび検知方法 | |
US20140331205A1 (en) | Program Testing Service | |
EP2992419A1 (en) | Program testing service | |
US9535713B2 (en) | Manipulating rules for adding new devices | |
US9075921B2 (en) | Error simulation | |
EP3321808B1 (en) | Verification system and verification method | |
JP5452336B2 (ja) | 周辺機器障害模擬システム、周辺機器障害模擬方法および周辺機器障害模擬プログラム | |
JP2018067057A (ja) | 制御プログラムの検証装置及びプログラム | |
US20230275931A1 (en) | Dynamic management of role-based access control systems | |
JP6366811B2 (ja) | 検査装置、検査方法、及び、プログラム | |
JP7023807B2 (ja) | 管理システム、情報処理装置、設定管理方法、およびプログラム | |
JP6726136B2 (ja) | データアクセス装置及びアクセスエラーの通知方法 | |
CN110674622A (zh) | 可视化图表生成方法、***、存储介质及电子设备 | |
CN110888665B (zh) | 一种变更内容提交方法、装置、设备及存储介质 | |
JP2019079219A (ja) | 半導体装置及びデバッグシステム |