(57)【要約】      （修正有）【課題】シミュレーション環境において制御装置の制御プログラムをテストする際にエラーを監視する。【解決手段】エミュレータは、制御プログラムのプログラム変数に拡張された値領域５０、６０を割り当て、プログラム変数に割り当てられた変数値５２、６２が拡張された値領域５０、６０に格納される。エミュレータは、プログラム変数をエラー有り又はエラー無しとマーキングする。ここで、エラー無しのプログラム変数を第１のカテゴリＫ１に割り当て、エラー有りのプログラム変数を第２のカテゴリＫ２に割り当てることに基づいてマーキングを行い、第２のカテゴリＫ２の全てのプログラム変数の拡張された値領域６０がデータフィールド６４を有するようにする。【選択図】図２
2017188112.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ（３０）上のシミュレーション環境（４０）において制御装置の制御プログラム（１０）をテストする際にエラーを監視する方法であって、
・前記シミュレーション環境（４０）を前記コンピュータ（３０）上に形成し、
・前記制御プログラム（１０）をエミュレータによって実行し、
・プロセッサ及びメモリ領域（２４）を有する前記制御装置の少なくとも一部を模擬するエミュレータを前記コンピュータ（３０）上で実行し、ここで、前記エミュレータ（２０）はデータの入出力のためのインタフェース（２２）を有し、
・環境値（４２）を、前記シミュレーション環境（４０）から前記インタフェース（２２）を介して、エミュレートされたメモリ領域（２４）に書き込み、
・前記制御プログラム（１０）は、複数のプログラム変数を有し、
・前記制御プログラム（１０）は、前記制御プログラム（１０）の実行中、少なくとも幾つかのプログラム変数に変数値（５２，６２，７２）を１つずつ割り当て、
・前記変数値（５２，６２，７２）を、前記エミュレートされたメモリ領域（２４）のメモリアドレスへのアクセスによって求める、
方法において、
・前記エミュレータは、前記制御プログラム（１０）の全てのプログラム変数に、拡張された値領域（５０，６０，７０）を１つずつ割り当て、
・前記プログラム変数に割り当てられた変数値（５２，６２，７２）を、前記拡張された値領域（５０，６０，７０）に格納し、
・前記エミュレータは、プログラム変数をエラー有り又はエラー無しとマーキングし、
・エラー無しのプログラム変数を第１のカテゴリ（Ｋ１）に割り当て、エラー有りのプログラム変数を第２のカテゴリ（Ｋ２）に割り当てることに基づいて前記マーキングを行い、前記第２のカテゴリ（Ｋ２）の全てのプログラム変数の前記拡張された値領域（６０）がデータフィールド（６４）を有するようにするか、又は、
・前記拡張された値領域（７０）に格納されたエラーフィールド（７６）に基づいて、エラー無しのプログラム変数の前記エラーフィールド（７６）に予め定められた数値もしくは非数値の第１の有効値を割り当て、エラー有りのプログラム変数のエラーフィールド（７６）に予め定められた数値もしくは非数値の第１のエラー値を割り当てることによって前記マーキングを行い、全てのプログラム変数の前記拡張された値領域（７０）がデータフィールド（７４）を有するようにし、
・前記マーキングを、変数値（５２，６２，７２）を求める際に行い、
・第１のプログラム変数の変数値（５２，７２）を求める際に、エミュレートされたプロセッサ（２０）が、前記エミュレートされたメモリ領域（２４）の、存在しておりかつ書き込まれている第１のメモリアドレスにアクセスする場合、又は、前記第１のカテゴリ（Ｋ１）に割り当てられた第２のプログラム変数に、もしくは第１の有効値を有するエラーフィールド（７２）を備えた第２のプログラム変数にアクセスする場合には、
・前記プログラム変数をエラー無しとマーキングし、
・求められた変数値を前記拡張された値領域（５０，７０）に格納し、
・第１のプログラム変数（５０，７０）の変数値（５２，７２）を求める際に、前記エミュレートされたプロセッサ（２０）が、前記エミュレートされたメモリ領域（２４）の、存在していないかもしくは書き込まれていない第２のメモリアドレスにアクセスする場合、又は、前記第２のカテゴリ（Ｋ２）に割り当てられた第３のプログラム変数に、もしくは第１のエラー値を有するエラーフィールド（７２）を備えた第３のプログラム変数にアクセスする場合には、
・前記第１のプログラム変数をエラー有りとマーキングし、
・前記第１のプログラム変数（５０，７０）の変数値（５２，７２）に、予め定められた数値もしくは非数値の第２のエラー値を割り当て、
・存在していないかもしくは書き込まれていない前記第２のメモリアドレス、又は、前記第３のプログラム変数のデータフィールド（６４，７４）の全てのエントリのコピーを、前記第１のプログラム変数のデータフィールド（６４，７４）に書き込む、
ことを特徴とする方法。
【請求項２】
第１のプログラム変数の変数値（６２，７２）を求める際に、前記第２のカテゴリ（Ｋ２）に割り当てられた第２のプログラム変数に、又は、第１のエラー値を有するエラーフィールド（７２）を備えた第２のプログラム変数にアクセスすることにより、前記第２のプログラム変数の識別子を前記第１のプログラム変数のデータフィールド（６４，７４）に書き込む、
請求項１に記載の方法。
【請求項３】
前記制御プログラム（１０）が、前記第２のカテゴリ（Ｋ２）に割り当てられた第１のプログラム変数に、又は、第１のエラー値を有するエラーフィールド（７２）を備えた第１のプログラム変数に、設定値を割り当てる場合、
・前記第１のプログラム変数をエラー無しとマーキングし、
・前記設定値を変数値（５２，７２）として、前記プログラム変数の前記拡張された値領域（５０，７０）に格納し、
・第１のカテゴリ（Ｋ１）もしくは第２のカテゴリ（Ｋ２）への割り当てに基づくマーキングの際に、前記拡張された値領域（５０，６０）から前記データフィールド（６４）を消去し、
・エラーフィールド（７６）に基づくマーキングの際に、前記データフィールド（７４）の全てのエントリを消去する、
請求項１又は２に記載の方法。
【請求項４】
前記制御プログラムが少なくとも２つのプログラムブロックを有し、当該プログラムブロックが、前記制御プログラムの規定の分岐規則にしたがって、前記第２のカテゴリ（Ｋ２）に割り当てられた第１のプログラム変数に、又は第１のエラー値を有するエラーフィールド（７２）を備えた第１のプログラム変数に依存するという条件に応じて代替的に実行される場合、全てのプログラムブロックを実行する、
請求項１から３までのいずれか１項に記載の方法。
【請求項５】
前記プログラムブロックの実行中に１つずつ値が割り当てられた別のプログラム変数の全てをエラー有りとマーキングし、
前記第１のプログラム変数のデータフィールド（６４，７４）の全てのエントリのコピーのそれぞれを、前記別のプログラム変数のデータフィールド（６４，７４）へ書き込み、
前記別のプログラム変数の変数値（６２，７２）に、それぞれ第２のエラー値を割り当てる、
請求項４に記載の方法。
【請求項６】
前記プログラムブロックの実行後、前記制御プログラム（１０）が第１のプログラムブロックの実行中にも別のプログラムブロックの実行中にも変数値（５２，６２，７２）を割り当てた別のプログラム変数の全てについて、割り当てられた各変数値（５２，６２，７２）を比較し、
割り当てられた各変数値（５２，６２，７２）の間に偏差がある場合、
・前記別のプログラム変数をエラー有りとマーキングし、
・前記別のプログラム変数の変数値（６２，７２）に第２のエラー値を割り当て、
・前記第１のプログラム変数のデータフィールド（６４，７４）の全てのエントリのコピーを、前記別のプログラム変数のデータフィールド（６４，７４）に書き込む、
請求項４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上のシミュレーション環境において制御装置の制御プログラムをテストする方法に関する。
【０００２】
J.Mauss, “Chip simulation used to run automotive software on PC”, Proceedings to Embedded Real Time Software and Systems (ERTS) 2014から、制御装置ソフトウェアをＰＣ上でテストするワークツールが公知であり、ここでは制御装置ソフトウェアがエミュレートされたプロセッサ上で実行され、環境データが模擬される。制御装置ソフトウェアの一部のみを検査するには、ユーザは仕様ファイルにおいて実行すべき機能の選択を指示すればよい。なお、仕様ファイルのエラーを求めるために、制御装置ソフトウェアの実行は、デバッガによってステップごとに行うことができる。
【０００３】
こうした背景から、本発明の課題は、従来技術を発展させた方法を提供することである。
【０００４】
この課題は、請求項１の特徴を有する、コンピュータ上のシミュレーション環境において制御装置の制御プログラムをテストする方法によって解決される。本発明の有利な実施形態は従属請求項の対象発明となっている。
【０００５】
本発明の対象発明により、コンピュータ上のシミュレーション環境において制御装置の制御プログラムをテストする方法が提供される。シミュレーション環境はコンピュータ上に作成される。制御プログラムはエミュレータによって実行され、ここで、エミュレータは、プロセッサ及びメモリ領域を有する制御装置の少なくとも一部を模擬する。エミュレータはコンピュータ上で実行され、データの入出力のためのインタフェースを有し、ここで、環境値がシミュレーション環境からインタフェースを介してエミュレートされたメモリ領域に書き込まれる。制御プログラムは、複数のプログラム変数を有し、ここで、制御プログラムは、この制御プログラムの実行中、少なくとも幾つかのプログラム変数に変数値を１つずつ割り当て、ここで、変数値は、エミュレートされたメモリ領域のメモリアドレスへのアクセスによって求められる。
【０００６】
エミュレータは、制御プログラムの各プログラム変数に、拡張された値領域を割り当てる。ここで、プログラム変数の１つずつに割り当てられた変数値は、拡張された値領域に格納され、エミュレータはプログラム変数をエラー有り又はエラー無しとマーキングする。
【０００７】
当該マーキングは、エラー無しのプログラム変数を第１のカテゴリに割り当て、エラー有りのプログラム変数を第２のカテゴリに割り当てることに基づいて行われる。この場合、第２のカテゴリの各プログラム変数の拡張された値領域は、データフィールドを有する。
【０００８】
これに代えて、拡張された値領域に格納されたエラーフィールドに基づいて、エラー無しのプログラム変数のエラーフィールドに予め定められた数値もしくは非数値の第１の有効値を割り当て、エラー有りのプログラム変数のエラーフィールドに予め定められた数値もしくは非数値の第１のエラー値を割り当てることにより、プログラム変数のマーキングを行い、ここで第１の有効値が第１のエラー値と異なっており、全てのプログラム変数の拡張された値領域がデータフィールドを有するようにしてもよい。
【０００９】
マーキングは、変数値を求める際に行われる。第１のプログラム変数の変数値を求めるために、エミュレートされたプロセッサが、エミュレートされたメモリ領域の、存在しておりかつ書き込まれているメモリアドレスにアクセスする場合、又は、第１のカテゴリに割り当てられた第２のプログラム変数もしくは第１の有効値を有するエラーフィールドを備えた第２のプログラム変数にアクセスする場合、プログラム変数がエラー無しとマーキングされ、求められた変数値が拡張された値領域に格納される。
【００１０】
第１のプログラム変数の変数値を求める際に、エミュレートされたプロセッサが、エミュレートされたメモリ領域の存在していないかもしくは書き込まれていない第２のメモリアドレスにアクセスする場合、又は、第２のカテゴリに割り当てられた第３のプログラム変数もしくは第１のエラー値を有するエラーフィールドを備えた第３のプログラム変数にアクセスする場合には、第１のプログラム変数がエラー有りとマーキングされ、第１のプログラム変数の変数値に、予め定められた数値もしくは非数値の第２のエラー値が割り当てられ、存在していないかもしくは書き込まれていない第２のメモリアドレス、又は、第３のプログラム変数のデータフィールドの全てのエントリのコピーが、第１のプログラム変数のデータフィールドに書き込まれる。
【００１１】
ここではいわゆるオフラインシミュレーション、すなわち、制御ソフトウェアがコンピュータ上、例えばＰＣ上のシミュレーション環境においてテストされるシミュレーションを説明していることに注意されたい。オフラインシミュレーションでは大抵の場合、リアルタイムでのシミュレーションは必要ない。
【００１２】
エミュレータにより、制御装置プロセッサがエミュレートを行うことで、制御プログラムを直接に機械言語で実行することができる。エミュレータとしてここでは制御コンピュータを模擬するプログラムが挙げられ、これにより、エミュレータが模擬している制御コンピュータ上の制御プログラムを実行することができる。
【００１３】
制御装置のオンチップ機能、例えばＣＡＮコントローラ、ＡＤ／ＤＡ変換器もしくは制御装置の他の内部機能を表現するために、いわゆる制御装置記述ファイルへのアクセスが行われる。いわゆる制御装置記述ファイルは、全ての機能部、変数名及びその対応アドレスのリストを含み、例えばいわゆるａ２ｌデータファイルであってよい。
【００１４】
本発明を理解するために、制御プログラムがプロセッサをエミュレートするエミュレータ上で実行されるため、本発明の方法においては機械言語で存在することに注意されたい。相応に、制御プログラムの変数はメモリアドレスによって表されるものであり、変数値は、エミュレートされたメモリの、変数に対応するメモリセルのメモリアドレスの１つに格納された変数値である。変数という概念の使用は、技術的観点における、機械言語で格納されたプログラムの説明には必要ない。本発明の明細書では、本発明の対象を明確にするためにこうした概念を用いているのみである。
【００１５】
したがって、本発明は、変数値が格納されたメモリアドレスに上述したように拡張された値領域が割り当てられ、拡張された値領域が割り当てられたメモリアドレスが上述したようにエラー有り又はエラー無しとマーキング可能であり、エミュレートされたメモリ領域の、存在していないかもしくは書き込まれていない第２のメモリアドレスから変数値の読み込みが試みられると、当該第２のメモリアドレスがエラー有りとマーキングされ、エラー有りとマーキングされた第３のメモリアドレスへのアクセスが試みられると、第１のメモリアドレスに新たな変数値を格納するために、第１のメモリアドレスがエラー有りとマーキングされるように構成可能であることと、技術的に同義に構成可能である。
【００１６】
シミュレーション環境の作成により、ユーザは、エミュレータが制御プログラムの実行に必要とするパラメータを形成する。環境値と称される当該パラメータは、ここでは、制御装置の変数値であっても外部センサもしくはその他の値であってもよく、例えばバイパスプロセスによって制御プログラムに供給可能である。
【００１７】
拡張された値領域により、変数の本来の値のほか、例えばエラーもしくは補完的機能に関する別の情報も管理できる。当該拡張された値領域は、例えばメモリの所定領域を含む。この領域はプログラム変数に割り当てられ、この領域にプログラム変数の変数値のほか、別の情報も格納される。
【００１８】
拡張された値領域のエントリの数及び形式は、全てのプログラム変数について等しくなるように構成できる。ここで、拡張された値領域は、変数値に加えて、エラーをマーキングするためにエラーフィールドを有し、エラーの伝播をドキュメント化するためにデータフィールドを有する。データフィールドには、エラー有りのプログラム変数の場合、数値もしくは非数値の第１のエラー値が割り当てられる。プログラム変数がエラーを有さない場合、エラーフィールドに数値もしくは非数値の第１の有効値が割り当てられる。
【００１９】
エラーフィールドは、プログラム変数をエラー有りもしくはエラー無しとマーキングするために用いられる。したがって、エラーが発生した場合にエラーフィールドに割り当てられる非数値もしくは数値の第１のエラー値は任意の値であってよいが、この値は一義的で、かつ、エラー無しの場合のエラーフィールドによって割り当てられた数値もしくは非数値の第１の有効値と異なっていなければならない。例えば、当該エラーフィールドには、エラーが発生していない場合、第１の有効値として値０を割り当てることができ、エラーが発生すると、この値が第１のエラー値１へ変更される。
【００２０】
エラーマーキングがプログラム変数をそれぞれ異なるカテゴリへ割り当てることによって行われる場合、プログラム変数の拡張された値領域の数及び形式は、対応するプログラム変数が割り当てられているカテゴリに応じて定められる。
【００２１】
カテゴリは、例えば、オブジェクト指向プログラミングにおけるクラスであってよい。クラスとして、属性及びプロセスに対応する変数形式が挙げられる。つまり、本発明の値領域はオブジェクト指向クラスにおける属性及びプロセスを含むことができる。拡張された値領域は変数の管理及び処理に並行して導かれる１つもしくは複数のリスト及び変数そのものから形成することができ、ここでは例えばカテゴリごとに１つのリストが定められ、リストに格納される情報はカテゴリによって設定される。
【００２２】
それぞれ異なるカテゴリへの割り当てによってエラーマーキングが行われる場合、エラーを有するために第２のカテゴリに属するプログラム変数の拡張された値領域は、変数値に加えて、エラー伝播のドキュメント化のためのデータフィールドを有する。エラー無しのプログラム変数は第１のカテゴリに属する。拡張された値領域は変数値のみを有すればよい。データフィールドは不要である。
【００２３】
エラー有りのプログラム変数の識別は、例えば第２のエラー値が非数値であって、制御プログラムにおける一義的な値である場合には、変数値そのものに基づいて可能である。エラー有りのプログラム変数の確実な識別は、エラーフィールドの値に基づいて、又は、プログラム変数のカテゴリに基づいて、可能である。
【００２４】
エラー有りのメモリアドレスへのアクセス又はエラー有りの変数へのアクセスが行われた際に変数値に割り当てられる第２のエラー値は、典型的には数値である有効性を表す変数値に対して一義的に区別可能な任意の非数値のエラー値、例えば“ｅｒｒｏｒ”であってよい。ドキュメント化と、カテゴリ割り当てによるエラーマーキング又はエラーアクセスがあった場合のエラーフィールドによるエラーマーキングに基づいて、変数値に数値のエラー値、例えば０を割り当てることができる。
【００２５】
本発明の方法の利点は、エラーの発生が制御プログラムの循環動作を中断しないということである。エラー発生時にもエミュレータが制御プログラムを完全に実行することにより、制御プログラムの部分ごとのテストが可能である。制御プログラムの個々の機能がテストされる場合、テストすべき機能に必要な全ての環境値のみをシミュレーション環境で模擬し、エミュレータのインタフェースを介して、エミュレートされるメモリ領域に書き込めばよい。なぜなら、テストすべきでない他の機能に対する環境値であれば、欠落しても、制御プログラムの中断に到らないからである。
【００２６】
特に有利には、本来のエラー源に関する情報が引き継がれる。つまり、制御プログラムの循環動作の完了後、プログラム変数ごとに、エラー源のデータフィールドにエントリされているアドレスに基づいて直接に読み出しを行うことができる。これにより、作成されたシミュレーションのエラーもしくは不完全性に関する情報が、所期のように、関心対象としてのプログラム変数に関連して形成される。
【００２７】
一実施形態では、第１のプログラム変数の変数値を求める場合、第２のカテゴリに割り当てられたプログラム変数へのアクセス又は第１のエラー値を有するエラーフィールドを備えた第２のプログラム変数へのアクセスが行われた際に、第２のプログラム変数の識別子が第１のプログラム変数のデータフィールドに書き込まれる。これにより、エラー又はエラーの伝播の全経路がドキュメント化される。プログラム変数の識別子としては、プログラム変数を一義的に識別できさえすれば、例えばプログラム変数名もしくはプログラム変数のメモリアドレスなど、あらゆるパラメータが適する。
【００２８】
別の一実施形態によれば、制御プログラムが、第２のカテゴリに割り当てられた第１のプログラム変数もしくは第１のエラー値を有するエラーフィールドを備えた第１のプログラム変数に設定値を割り当てる場合、第１のプログラム変数がエラー無しとマーキングされ、当該設定値が変数値として第１のプログラム変数の拡張された値領域に格納される。ここで、第１のカテゴリもしくは第２のカテゴリへの割り当てに基づくマーキングが行われる場合には、データフィールドが拡張された値領域から消去され、エラーフィールドに基づくマーキングが行われる場合には、データフィールドの全てのエントリが消去される。これにより、エラーの伝播が防止される。有効値の割り当てによって、プログラム変数は再び有効とマーキングされるか又は続行される。
【００２９】
エラー伝播のドキュメント化に関連して、例えば必要なメモリアドレスをエミュレートすることによってエラーを必ずしもその源で除去するのでなく、後続するプログラム変数に直接に有効値を割り当てることによって除去する手段が得られる。
【００３０】
カテゴリ割り当てに基づくマーキングが行われる場合、エラーを有さないために第１のカテゴリに割り当てられたプログラム変数がデータフィールドを有する必要はないものと理解されたい。ただし、第１のカテゴリに割り当てられたプログラム変数の値領域に、エントリを有さないデータフィールドを設けることもできる。第１のカテゴリに割り当てられたプログラム変数もデータフィールドを有する場合には、第２のカテゴリから第１のカテゴリへのプログラム変数のカテゴリ変更が行われる際に、データフィールド全体が拡張された値領域から消去されるのでなく、データフィールドのエントリのみが全て消去されるか、又は、データフィールドのエントリの伝送が行われない。
【００３１】
別の一実施形態によれば、制御プログラムは少なくとも２つのプログラムブロックを有し、各プログラムブロックは、制御プログラムの定められた分岐規則にしたがって、所定の条件に応じて代替的に実行される。当該条件が、第２のカテゴリに割り当てられた第１のプログラム変数もしくは第１のエラー値を有するエラーフィールドを備えた第１のプログラム変数、すなわち、エラー有りの第１のプログラム変数に依存する場合、全てのプログラムブロックが実行される。制御プログラムの全ての代替的な規則が実行されることにより、制御プログラムの実行後に可能な全てのプログラム変数についてユーザに情報が提供される。
【００３２】
別の一実施形態によれば、プログラムブロックの実行中に値が割り当てられた別の全てのプログラム変数がエラー有りとマーキングされ、第１のプログラム変数のデータフィールドの全てのエントリのコピーのそれぞれが別のプログラム変数のデータフィールドに書き込まれて、当該別のプログラム変数の変数値にそれぞれ第２のエラー値が割り当てられる。これにより、制御プログラムの実行後には、定められた分岐規則に依存する全てのプログラム変数を確実かつ容易に識別できる。
【００３３】
代替的な一実施形態によれば、プログラムブロックの実行後、制御プログラムが第１のプログラムブロックの実行中及び別のプログラムブロックの実行中に変数値を割り当てた別のプログラム変数の全てについて、割り当てられた変数値が比較される。割り当てられた変数値の間に偏差がある場合、当該別のプログラム変数がエラー有りとマーキングされ、その変数値に第２のエラー値が割り当てられ、第１のプログラム変数のデータフィールドの全てのエントリのコピーが当該別のプログラム変数のデータフィールドに書き込まれる。これにより、実際に分岐規則に依存する変数値を有するプログラム変数のみがエラー有りとマーキングされて、エラー源に関する情報が形成されることが保証される。
【００３４】
例えば定められた分岐が形式のみに関する場合、例えば、種々のプログラムブロックでのプログラム変数に割り当てられる変数値が等しい場合、エラーはマーキングされないか又は引き継がれない。１つもしくは複数のプログラム変数に関してのみ、例えば唯一の変数Ａについて、純粋に形式的に定められた分岐が存在するのに対し、別のプログラム変数の変数値は定められた分岐規則に依存する場合、１つもしくは複数のプログラム変数、例えば変数Ａはエラー無しとマーキングされ、別のプログラム変数はエラー有りとマーキングされる。
【００３５】
本発明を以下に図を参照しながら詳細に説明する。この場合、同じ要素には同一の参照番号を付してある。図示の実施形態はきわめて模式的なものである。
【図面の簡単な説明】
【００３６】
【図１】エミュレータ及びシミュレーション環境を示す概略図である。
【図２】プログラム変数の第１の実施形態を示す概略図である。
【図３】プログラム変数の第２の実施形態を示す概略図である。
【００３７】
図１には、コンピュータ３０上のエミュレータ２０が、制御装置のプロセッサと当該制御装置のメモリ領域２４とを模擬することで、機械言語で存在している（図示されていない）制御装置用の制御プログラム１０を実行する、第１の実施形態の平面図が示されている。データの入出力のために、エミュレータ２０はインタフェース２２を有する。
【００３８】
制御プログラム１０の１つもしくは複数の機能部Ｆ１，Ｆ２，Ｆ３をテストするために、コンピュータ３０上のシミュレーション環境４０において、１つもしくは複数の機能部Ｆ１，Ｆ２，Ｆ３が必要とする全ての環境値４２が形成される。各環境値４２は、エミュレートされたメモリ領域２４への、データの入出力のためのインタフェース２２を介した書き込みにより、エミュレータ２０へ供給される。環境値４２は、制御装置の変数、例えばオンチップコンポーネントによって利用可能となる複数の機能と、制御装置外、例えば外部センサなどから伝送されてくるデータとの双方を表すことができる。
【００３９】
制御プログラム１０の実行中、プログラム変数に変数値が割り当てられる。このために、エミュレートされたメモリ領域２４のメモリアドレスへのアクセス、又は、少なくとも１つの別のプログラム変数へのアクセスのいずれかが行われる。作成されたシミュレーション環境又は形成された各環境値が不完全である場合、エミュレートされたメモリ領域内の、制御プログラムの問い合わせを受けたメモリアドレスは欠落しているか又は記述されていない可能性がある。どちらの場合にもプログラム変数にエラー有りの変数値が生じる。したがって、エラー有りのプログラム変数へのアクセスから連鎖エラーが生じる。
【００４０】
本発明によれば、エラーをドキュメント化するために、プログラム変数に、拡張された値領域５０，６０，７０が割り当てられる。図２の左側には、第１のプログラム変数の概略図が示されている。図示されている第１のプログラム変数は、エラー無しのため、エミュレータ２０により第１のカテゴリＫ１に割り当てられている。当該第１のプログラム変数は、変数値５２を有する拡張された値領域５０を有する。
【００４１】
図２の右側には、エラーを有するために第２のカテゴリＫ２に割り当てられた第２のプログラム変数の概略図が示されている。第１のプログラム変数の変数値５２が任意の値を有するのに対して、第２のプログラム変数の変数値６２にはつねに第２のエラー値ｅｒｒｏｒが割り当てられる。第２のプログラム変数のデータフィールド６４には、メモリアドレスが格納されている。当該メモリアドレスは、制御プログラム１０の実行中、第２のプログラム変数への値割り当てのために問い合わされたメモリアドレスであって、エミュレートされたメモリ領域２４に存在していないかもしくは書き込まれていないメモリアドレスに相当する。
【００４２】
図２に示されている第１の実施形態によれば、エラー有りのプログラム変数とエラー無しのプログラム変数とに対して、それぞれ異なるカテゴリＫ１，Ｋ２が設けられている。エミュレートされたメモリ領域の、存在していないかもしくは書き込まれていないメモリアドレスへのアクセスによってエラーが発生すると、プログラム変数に第２のカテゴリＫ２が割り当てられる。付加的に、変数値６２に第２のエラー値ｅｒｒｏｒが割り当てられ、当該メモリアドレスがデータフィールド６４に書き込まれる。エラー有りの別のプログラム変数へのアクセスが行われてエラーが発生すると、第２のプログラム変数が同様に第２のカテゴリＫ２に割り当てられ、変数値６２に第２のエラー値ｅｒｒｏｒが割り当てられ、付加的に、エラー有りの別のプログラム変数のデータフィールドに書き留められている全てのメモリアドレスが第２のプログラム変数のデータフィールド６４にコピーされる。
【００４３】
第２の実施形態が図３に示されている。ここでは、全てのプログラム変数が同一に構成された拡張された値領域７０を有しており、この値領域７０は変数値７２及びデータフィールド７４に加え、エラーフィールド７６を含んでいる。エラー無しのプログラム変数のエラーフィールド７６には、第１の有効値、例えば０が割り当てられている。エラーが発生すると、当該第２の実施形態ではカテゴリの変更は行われず、エラーフィールドに第１のエラー値、例えば１が割り当てられる。
【００４４】
エラーの引き継ぎにより、すなわち、メモリアドレスをデータフィールド６４，７４に書き込み又はコピーすることにより、循環動作後、発生したエラーについて必要な全ての情報が形成される。つまり、第１の機能部Ｆ１に関連する環境値のみがシミュレーション環境に形成され、インタフェース２２を介してエミュレータに供給されることにより、制御プログラム１０の第１の機能部Ｆ１のみをテストすることもできる。結果として、関心対象でない別の機能部Ｆ２，Ｆ３の出力値はエラーを有することになる。
【００４５】
変数値及び／又はカテゴリ及び／又は第１の機能部Ｆ１の出力値として送出されるプログラム変数のエラーフィールドに基づいて、第１の機能部Ｆ１の実行時にエラーが発生したか否かが検出される。プログラム変数のデータフィールド６４，７４は、どの位置でエラーが発生したか、及び、当該エラーがどのように伝播したかについての情報を送出する。
【図１】
2017188112.tif 000003
【図２】
2017188112.tif 000004
【図３】
2017188112.tif 000005
【外国語明細書】
2017188112.tif 000006
2017188112.tif 000007
2017188112.tif 000008
2017188112.tif 000009
2017188112.tif 000010
2017188112.tif 000011
2017188112.tif 000012
2017188112.tif 000013
2017188112.tif 000014
2017188112.tif 000015
2017188112.tif 000016
2017188112.tif 000017
2017188112.tif 000018
2017188112.tif 000019
2017188112.tif 000020
2017188112.tif 000021
2017188112.tif 000022
2017188112.tif 000023