(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-08-22
(54)【発明の名称】オートメーションシステムの制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法、およびオートメーションシステム
(51)【国際特許分類】
G06F 11/32 20060101AFI20230815BHJP
G05B 19/042 20060101ALI20230815BHJP
【FI】
G06F11/32 140
G05B19/042
【審査請求】有
【予備審査請求】有
(21)【出願番号】P 2023506001
(86)(22)【出願日】2021-07-27
(85)【翻訳文提出日】2023-03-27
(86)【国際出願番号】 EP2021070993
(87)【国際公開番号】W WO2022023338
(87)【国際公開日】2022-02-03
(31)【優先権主張番号】102020119853.1
(32)【優先日】2020-07-28
(33)【優先権主張国・地域又は機関】DE
(81)【指定国・地域】
(71)【出願人】
【識別番号】505344063
【氏名又は名称】ベックホフ オートメーション ゲーエムベーハー
(74)【代理人】
【識別番号】110000338
【氏名又は名称】弁理士法人 HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】ドレーゼン,ラルフ
【テーマコード(参考)】
5B042
5H220
【Fターム(参考)】
5B042MA08
5B042MA10
5B042MC03
5B042MC21
5H220AA04
5H220BB11
5H220CX04
5H220CX06
5H220JJ12
5H220JJ26
(57)【要約】
本発明は、オートメーションシステム(200)の制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステム(200)の制御方法(100)に関する。当該方法(100)は、ポインタアドレス決定工程(103)において、前記ポインタ要素のポインタアドレス(ZA)を決定すること;第1アドレスオフセット決定工程(107)において、前記ポインタ要素の前記ポインタアドレス(ZA)の第1アドレスオフセット(AO1)を決定すること;第1プログラムオブジェクト特定工程(109)において、前記プログラム状態(PZ)の前記配置構造に従って、前記プログラム状態(PZ)の前記第1メモリロケーションから前記第1アドレスオフセット(AO1)だけ離隔したプログラムオブジェクト(PO)を、前記第1メモリ領域(SP1)におけるその前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する第1プログラムオブジェクト(PO1)として特定すること;ポインタオブジェクト特定工程(111)において、前記第1プログラムオブジェクトを、前記ポインタ要素によって参照される前記ポインタオブジェクト(ZO)と特定すること;完全指定決定工程(113)において、特定された前記ポインタ要素の完全修飾指定を決定すること;および、表示工程(115)において、前記制御装置に接続された表示要素上に、前記ポインタ要素によって参照される前記ポインタオブジェクト(ZO)の前記完全修飾指定を表示することを含む。本発明はさらに、前記制御方法(100)を実行するためのオートメーションシステム(200)に関する。
【特許請求の範囲】
【請求項1】
オートメーションシステム(200)の制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステム(200)の制御方法(100)であって、
前記オートメーションシステム(200)の制御装置(201)は、制御プログラムを含み、
前記制御プログラムのプログラム状態(PZ)は、前記制御装置の第1メモリ領域(SP1)に格納され、
前記プログラム状態(PZ)は、前記制御プログラムの複数のプログラムオブジェクトを含み、
複数の前記プログラムオブジェクト(PO)は、前記プログラム状態(PZ)の所定の配置構造において、互いに対して配置され、
メモリポジション(P)およびメモリサイズ(SG)は、前記配置構造を介して、各プログラムオブジェクト(PO)に割り当てられ、
プログラムオブジェクト(PO)のメモリポジション(P)によって、プログラムオブジェクト(PO)が前記プログラム状態(PZ)の第1メモリロケーションからメモリロケーションの数だけ離隔してメモリ領域に格納される、当該メモリロケーションの数が定められ、
プログラムオブジェクト(PO)のメモリサイズ(SG)によって、メモリオブジェクトがメモリ領域内において占めるメモリロケーションの数が定められ、
前記プログラム状態(PZ)は、少なくとも1つのポインタ要素を含み、
ポインタオブジェクト(ZO)は、前記ポインタ要素によって参照され、
前記ポインタオブジェクト(ZO)は、前記制御プログラムのプログラムオブジェクト(PO)であり、
前記制御プログラムのスタックは、前記制御装置の第2メモリ領域(SP2)内において設定され、
複数のプログラムオブジェクト(PO)は、前記制御プログラムの実行時間中に前記スタックに格納され得、
前記制御方法(100)は、
実行工程(101)において、前記制御プログラムを実行すること;
ポインタアドレス決定工程(103)において、前記ポインタ要素のポインタアドレス(ZA)を決定すること、ここで、前記ポインタアドレス(ZA)は、前記ポインタ要素によって参照されるメモリアドレスに対応する;
チェック工程(105)において、前記ポインタ要素の前記ポインタアドレス(ZA)が、前記プログラム状態(PZ)の前記第1メモリ領域(SP1)内に位置するのか、または、前記スタックの前記第2メモリ領域(SP2)内に位置するのかをチェックすること;
第1アドレスオフセット決定工程(107)において、前記ポインタ要素の前記ポインタアドレス(ZA)が前記プログラム状態(PZ)の前記第1メモリ領域(SP1)内に配置されている場合に、前記ポインタ要素の前記ポインタアドレス(ZA)の第1アドレスオフセット(AO1)を決定すること、ここで、前記第1アドレスオフセット(AO1)は、前記ポインタ要素の前記ポインタアドレス(ZA)が前記第1メモリ領域(SP1)における前記プログラム状態(PZ)の第1メモリアドレスからメモリロケーションの数だけ離隔した、当該メモリロケーションの数を定める;
第1プログラムオブジェクト特定工程(109)において、前記プログラム状態(PZ)の前記配置構造に従って、前記プログラム状態(PZ)の前記第1メモリロケーションから前記第1アドレスオフセット(AO1)だけ離隔したプログラムオブジェクト(PO)を、前記第1メモリ領域(SP1)におけるその前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する第1プログラムオブジェクト(PO1)として特定すること;
ポインタオブジェクト特定工程(111)において、前記第1プログラムオブジェクトを、前記ポインタ要素によって参照される前記ポインタオブジェクト(ZO)と特定すること;
完全指定決定工程(113)において、特定された前記ポインタ要素の完全修飾指定を決定すること;および、
表示工程(115)において、前記制御装置に接続された表示要素上に、前記ポインタ要素によって参照される前記ポインタオブジェクト(ZO)の前記完全修飾指定を表示すること
を含む、方法(100)。
【請求項2】
前記プログラム状態(PZ)のプログラムオブジェクト(PO)は、上位第2プログラムオブジェクト(PO2)として具現化され、
前記上位第2プログラムオブジェクト(PO2)は、少なくとも1つの下位部分的プログラムオブジェクト(TPO)を含み、
前記第1プログラムオブジェクト(PO1)は、前記上位第2プログラムオブジェクト(PO2)によって、下位部分的プログラムオブジェクト(TPO)として含まれ、
前記第1プログラムオブジェクト特定工程(109)は、
第2プログラムオブジェクト特定工程(117)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記プログラム状態(PZ)の前記第1メモリロケーションから前記第1アドレスオフセット(AO1)だけ離隔したメモリロケーションを含むメモリ領域が、前記プログラム状態(PZ)のプログラムオブジェクト(PO)について定められた、前記プログラム状態(PZ)の当該プログラムオブジェクト(PO)を、前記上位第2プログラムオブジェクト(PO2)として特定し、当該上位第2プログラムオブジェクト(PO2)を、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクト(PO)として特定すること;
第2アドレスオフセット決定工程(119)において、第2アドレスオフセット(AO2)を決定すること、ここで、前記第2アドレスオフセット(AO2)は、前記第1アドレスオフセット(AO1)と前記第2プログラムオブジェクト(PO2)の前記第1相対メモリアドレス(SPO2)との間の差によって、決定される;
第2データ型決定工程(121)において、前記上位第2プログラムオブジェクト(PO2)のデータ型を決定すること、ここで、前記データ型は、前記上位第2プログラムオブジェクト(PO2)の下位部分的プログラムオブジェクト(TPO)の数が前記上位第2プログラムオブジェクト(PO2)のデータ構造において定められる前記上位第2プログラムオブジェクト(PO2)の当該データ構造を決定し、前記上位第2プログラムオブジェクト(PO2)の前記データ構造内におけるメモリサイズ(SG)およびメモリポジション(P)は、各下位部分的プログラムオブジェクト(TPO)につき決定される;
前記上位第2プログラムオブジェクト(PO2)の前記データ構造に従って、前記上位第2プログラムオブジェクト(PO2)の第1メモリロケーションから前記第2アドレスオフセット(AO2)だけ離隔した前記上位第2プログラムオブジェクト(PO2)の下位部分的プログラムオブジェクト(TPO)を特定し、前記上位第2プログラムオブジェクト(PO2)の当該下位部分的プログラムオブジェクト(TPO)を、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する前記第1プログラムオブジェクト(PO1)として特定すること
を含む、請求項1に記載の方法(100)。
【請求項3】
前記プログラム状態(PZ)のプログラムオブジェクト(PO)は、上位第3プログラムオブジェクト(PO3)として具現化され、
前記上位第3プログラムオブジェクト(PO3)は、少なくとも1つの下位部分的プログラムオブジェクト(TPO)を含み、
前記上位第2プログラムオブジェクト(PO2)は、前記上位第3プログラムオブジェクト(PO3)によって、下位部分的プログラムオブジェクト(TPO)として含まれ、
前記第2プログラムオブジェクト特定工程(117)は、
第3プログラムオブジェクト特定工程(123)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記プログラム状態(PZ)の前記第1メモリロケーションから前記第1アドレスオフセット(AO1)だけ離隔したメモリロケーションを含むメモリ領域が、前記プログラム状態(PZ)のプログラムオブジェクト(PO)について定められた、前記プログラム状態(PZ)の当該プログラムオブジェクト(PO)を、前記上位第3プログラムオブジェクト(PO3)として特定し、当該上位第3プログラムオブジェクト(PO3)を、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクト(PO)として特定すること;
第3アドレスオフセット決定工程(125)において、第3アドレスオフセット(AO3)を決定すること、ここで、前記第3アドレスオフセット(AO3)は、前記第1アドレスオフセット(AO1)と前記第3プログラムオブジェクト(PO3)の第1相対メモリアドレス(SPO3)との間の差によって、決定される;
第3データ型決定工程(127)において、前記上位第3プログラムオブジェクト(PO3)のデータ型を決定すること、ここで、前記データ型は、前記上位第3プログラムオブジェクト(PO3)の下位部分的プログラムオブジェクト(TPO)の数が前記上位第3プログラムオブジェクト(PO3)のデータ構造において定められる前記上位第3プログラムオブジェクト(PO3)の当該データ構造を決定し、前記上位第2プログラムオブジェクト(PO3)の前記データ構造内におけるメモリサイズ(SG)およびメモリポジション(P)は、各下位部分的プログラムオブジェクト(TPO)につき決定される;
前記上位第3プログラムオブジェクト(PO3)の前記データ構造に従って、前記上位第3プログラムオブジェクト(PO3)の第1メモリロケーションから前記第3アドレスオフセット(AO3)だけ離隔した前記上位第3プログラムオブジェクト(PO3)の下位部分的プログラムオブジェクト(TPO)を特定し、前記上位第3プログラムオブジェクト(PO3)の当該下位部分的プログラムオブジェクト(TPO)を、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記上位第2プログラムオブジェクト(PO2)として特定すること
を含み、
ここで、前記第2アドレスオフセット(AO2)は、前記第1アドレスオフセット(AO1)と、前記第3プログラムオブジェクト(PO3)の前記第1相対メモリアドレス(SPO3)および前記第2プログラムオブジェクト(PO2)の前記第1相対メモリアドレス(SPO2)の和との間の差によって、決定される、請求項2に記載の方法(100)。
【請求項4】
前記プログラム状態(PZ)のプログラムオブジェクト(PO)は、上位第nプログラムオブジェクトとして具現化され、
前記上位第nプログラムオブジェクトは、n-1ネスティング深さにおいて、互いを含む複数の下位部分的プログラムオブジェクト(TPO)を含み、
前記上位第2プログラムオブジェクト(PO2)は、前記上位第nプログラムオブジェクトによって、第n-2ネスティング深さにおける下位部分的プログラムオブジェクト(TPO)として含まれ、
前記第1プログラムオブジェクト(PO1)は、前記上位第nプログラムオブジェクトによって、第n-1ネスティング深さにおける下位部分的プログラムオブジェクト(TPO)として含まれ、
nは、4以上の自然数であり、
前記第1プログラムオブジェクト特定工程(109)は、
第nプログラムオブジェクト特定工程(129)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記プログラム状態(PZ)の前記第1メモリロケーションから前記第1アドレスオフセット(AO1)だけ離隔したメモリロケーションを含むメモリ領域が、前記プログラム状態(PZ)のプログラムオブジェクト(PO)について定められた、前記プログラム状態(PZ)の当該プログラムオブジェクト(PO)を、前記上位第nプログラムオブジェクトとして特定し、当該上位第nプログラムオブジェクトを、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクト(PO)として特定すること;
第nアドレスオフセット決定工程(131)において、第nアドレスオフセットを決定すること、ここで、前記第nアドレスオフセットは、前記第1アドレスオフセット(AO1)と前記第nプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第nデータ型決定工程(133)において、前記上位第nプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第nプログラムオブジェクトの下位部分的プログラムオブジェクトの数が前記上位第nプログラムオブジェクトのデータ構造において定められる前記上位第nプログラムオブジェクトの当該データ構造を決定し、前記上位第nプログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリポジション(P)は、各下位部分的プログラムオブジェクトにつき決定される;
第n-1プログラムオブジェクト特定工程(135)において、前記上位第nプログラムオブジェクトの前記データ構造に従って、前記上位第nプログラムオブジェクトの第1メモリロケーションから前記第nアドレスオフセットだけ離隔した前記上位第nプログラムオブジェクトの下位部分的プログラムオブジェクト(TPO)を特定し、前記上位第nプログラムオブジェクトの当該下位部分的プログラムオブジェクト(TPO)を、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める上位第n-1プログラムオブジェクトとして特定すること
を含み、
前記第n-1プログラムオブジェクト特定工程(135)は、
第n-1アドレスオフセット決定工程(137)において、第n-1アドレスオフセットを決定すること、ここで、前記第n-1アドレスオフセットは、前記第1アドレスオフセット(AO1)と前記第nプログラムオブジェクトの前記第1相対メモリアドレスおよび前記第n-1プログラムオブジェクトの第1相対アドレスの和との間の差によって、決定される;
第n-1データ型決定工程(139)において、前記上位第n-1プログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第n-1プログラムオブジェクトの下位部分的プログラムオブジェクトの数が前記上位第n-1プログラムオブジェクトのデータ構造において定められる前記上位第n-1プログラムオブジェクトの当該データ構造を決定し、前記上位第n-1プログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリポジション(P)は、各下位部分的プログラムオブジェクトにつき決定される;
第n-2プログラムオブジェクト特定工程(141)において、前記上位第n-1プログラムオブジェクトの前記データ構造に従って、前記上位第n-1プログラムオブジェクトの第1メモリロケーションから前記第n-1アドレスオフセットだけ離隔した前記上位第n-1プログラムオブジェクトの下位部分的プログラムオブジェクト(TPO)を特定し、前記上位第n-1プログラムオブジェクトの当該下位部分的プログラムオブジェクト(TPO)を、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める上位第n-2プログラムオブジェクトとして特定すること;
再帰工程(143)において、n-2>2が成り立つ場合に、前記第n-1アドレスオフセット決定工程(137)、前記第n-1データ型決定工程(139)、前記第n-2プログラムオブジェクト特定工程(141)を再帰的に実行すること;
前記第2アドレスオフセット決定工程(119)において、前記第2アドレスオフセット(AO2)を決定すること、ここで、前記第2アドレスオフセット(AO2)は、前記第1アドレスオフセット(AO1)と前記第nプログラムオブジェクトから前記第2プログラムオブジェクト(PO2)までの第1相対メモリアドレスの総和との間の差によって、決定される;
前記第2データ型決定工程(121)において、前記上位第2プログラムオブジェクト(PO2)のデータ型を決定すること、ここで、前記データ型は、前記上位第2プログラムオブジェクト(PO2)の下位部分的プログラムオブジェクトの数が前記上位第2プログラムオブジェクト(PO2)のデータ構造において定められる前記上位第2プログラムオブジェクト(PO2)の当該データ構造を決定し、前記上位第2プログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリポジション(P)は、各下位部分的プログラムオブジェクト(TPO)につき決定される;
前記上位第n-1プログラムオブジェクトの前記データ構造に従って、前記上位第2プログラムオブジェクト(PO2)の第1メモリロケーションから前記第2アドレスオフセット(AO2)だけ離隔した前記上位第2プログラムオブジェクト(PO2)の前記下位部分的プログラムオブジェクト(TPO)を特定し、前記上位第2プログラムオブジェクト(PO2)の当該下位部分的プログラムオブジェクト(TPO)を、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する前記第1プログラムオブジェクト(PO1)として特定すること
を含む、請求項2に記載の方法(100)。
【請求項5】
スタック構造決定工程(145)において、前記ポインタ要素の前記ポインタアドレス(ZA)が前記スタック(ST)の前記第2メモリ領域(SP2)内に配置されている場合に、前記スタック(ST)の構造を決定すること、ここで、メモリポジション(P)およびメモリサイズ(SG)は、前記スタックの前記構造を介して、前記スタック(ST)に格納された各スタックプログラムオブジェクトに割り当てられ、スタックプログラムオブジェクトのメモリポジション(P)によって、スタックプログラムオブジェクトが前記スタック(ST)の第1メモリロケーションからメモリロケーションの数だけ離隔してメモリ領域に格納される、当該メモリロケーションの数が定められる;
第1スタックアドレスオフセット決定工程(147)において、前記ポインタ要素の前記ポインタアドレス(ZA)の第1スタックアドレスオフセットを決定すること、ここで、前記第1スタックアドレスオフセットは、前記ポインタ要素の前記ポインタアドレス(ZA)が前記第2メモリ領域(SP2)における前記スタック(ST)の第1メモリアドレスからメモリロケーションの数だけ離隔した、当該メモリロケーションの数を定める;
第1スタックプログラムオブジェクト特定工程(149)において、各スタックプログラムオブジェクトがメモリロケーション(P)およびメモリサイズ(SG)を割り当てられた前記スタック(ST)の配置構造に従って、前記スタック(ST)の前記第1メモリロケーションから前記第1スタックアドレスオフセットだけ離隔したスタックプログラムオブジェクトを、前記第2メモリロケーション(SP2)におけるその前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する第1スタックプログラムオブジェクトとして特定すること;ならびに、
前記ポインタオブジェクト特定工程(111)において、前記第1スタックプログラムオブジェクトを、前記ポインタ要素によって参照される前記ポインタオブジェクト(ZO)と特定すること
をさらに含む、請求項1~4のいずれか一項に記載の方法(100)。
【請求項6】
前記第1スタックプログラムオブジェクト特定工程(149)は、
フレーム特定工程(151)において、前記ポインタ要素の前記ポインタアドレス(ZA)の前記第1スタックアドレスオフセットと前記スタック(ST)の前記配置構造とを考慮に入れて、前記スタック(ST)の前記第2メモリ領域(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)の前記メモリアドレスを含むメモリ領域を占める前記スタック(ST)のフレームを特定すること;
関数特定工程(153)において、前記スタック(ST)の特定された前記フレームの関数を特定すること;および、
その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する特定された前記関数のローカル変数を、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する前記スタック(ST)の前記第1スタックプログラムオブジェクトとして特定すること
を含む、請求項5に記載の方法(100)。
【請求項7】
前記スタック(ST)のスタックプログラムオブジェクトは、上位第2スタックプログラムオブジェクトとして具現化され、
前記上位第2スタックプログラムオブジェクトは、少なくとも1つの下位スタック部分的プログラムオブジェクトを含み、
前記第1スタックプログラムオブジェクトは、前記上位第2スタックプログラムオブジェクトによって、下位スタック部分的プログラムオブジェクトとして含まれ、
前記第1スタックプログラムオブジェクト特定工程(149)は、
第2スタックプログラムオブジェクト特定工程(155)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記スタック(ST)の前記第1メモリロケーションから前記第1スタックアドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が、前記スタック(ST)のプログラムオブジェクトについて定められた、前記スタック(ST)の当該プログラムオブジェクトを、前記上位第2スタックプログラムオブジェクトとして特定し、当該上位第2スタックプログラムオブジェクトを、前記スタック(ST)の前記第2メモリロケーション(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクトとして特定すること;
第2スタックアドレスオフセット決定工程(157)において、第2スタックアドレスオフセットを決定すること、ここで、前記第2スタックアドレスオフセットは、前記第1スタックアドレスオフセットと、前記第2スタックプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第2スタックデータ型決定工程(159)において、前記上位第2スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第2スタックプログラムオブジェクトのデータ構造において定められる前記上位第2スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第2プログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリロケーション(P)は、各下位スタック部分的プログラムオブジェクトにつき決定される;
前記上位第2スタックプログラムオブジェクトの前記データ構造に従って、前記上位第2スタックプログラムオブジェクトの第1メモリロケーションから前記第2アドレスオフセットだけ離隔した前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第2スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する前記第1スタックプログラムオブジェクトとして特定すること
を含む、請求項5または6に記載の方法(100)。
【請求項8】
前記スタック(ST)のスタックプログラムオブジェクトは、上位第3スタックプログラムオブジェクトとして具現化され、
前記上位第3スタックプログラムオブジェクトは、少なくとも1つの下位スタック部分的プログラムオブジェクトを含み、
前記上位第2スタックプログラムオブジェクトは、前記上位第3スタックプログラムオブジェクトによって、下位スタック部分的プログラムオブジェクトとして含まれ、
前記第2スタックプログラムオブジェクト特定工程(155)は、
第3スタックプログラムオブジェクト特定工程(161)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記スタック(ST)の前記第1メモリロケーションから前記第1スタックアドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が、前記スタック(ST)のプログラムオブジェクトについて定められた、前記スタック(ST)の当該プログラムオブジェクトを、前記上位第3スタックプログラムオブジェクトとして特定し、当該上位第3スタックプログラムオブジェクトを、前記スタック(ST)の前記第2メモリロケーション(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクトとして特定すること;
第3スタックアドレスオフセット決定工程(163)において、第3スタックアドレスオフセットを決定すること、ここで、前記第3スタックアドレスオフセットは、前記第1スタックアドレスオフセットと、前記第3スタックプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第3スタックデータ型決定工程(165)において、前記上位第3スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第3スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第3スタックプログラムオブジェクトのデータ構造において定められる前記上位第3スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第3スタックプログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリロケーション(P)は、各下位スタック部分的プログラムオブジェクトにつき決定される;
前記上位第3スタックプログラムオブジェクトの前記データ構造に従って、前記上位第3スタックプログラムオブジェクトの第1メモリロケーションから前記第3スタックアドレスオフセットだけ離隔した前記上位第3スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第3スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、前記スタックの前記第2メモリ領域(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリ領域を占める前記上位第2スタックプログラムオブジェクトとして特定すること
を含み、
ここで、前記第2スタックアドレスオフセットは、前記第1スタックアドレスオフセットと前記第3スタックプログラムオブジェクトの前記第1相対メモリアドレスおよび前記第2スタックプログラムオブジェクトの前記第1相対メモリアドレスの和との間の差によって、決定される、請求項7に記載の方法(100)。
【請求項9】
前記スタック(ST)のスタックプログラムオブジェクトは、上位第nスタックプログラムオブジェクトとして具現化され、
前記上位第nスタックプログラムオブジェクトは、n-1ネスティング深さにおいて、互いを含む複数の下位スタック部分的プログラムオブジェクトを含み、
前記上位第2スタックプログラムオブジェクトは、前記上位第nスタックプログラムオブジェクトによって、第n-2ネスティング深さにおける下位スタック部分的プログラムオブジェクトとして含まれ、
前記第1スタックプログラムオブジェクトは、前記上位第nスタックプログラムオブジェクトによって、第n-1ネスティング深さにおける下位スタック部分的プログラムオブジェクトとして含まれ、
nは、4以上の自然数であり、
前記第1スタックプログラムオブジェクト特定工程(149)は、
第nスタックプログラムオブジェクト特定工程(167)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記スタック(ST)の前記第1メモリロケーションから前記第1スタックアドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が、前記スタック(ST)のプログラムオブジェクトについて定められた、前記スタック(ST)の当該プログラムオブジェクトを、前記上位第nスタックプログラムオブジェクトとして特定し、当該上位第nスタックプログラムオブジェクトを、前記スタック(ST)の前記第2メモリロケーション(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクトとして特定すること;
第nスタックアドレスオフセット決定工程(169)において、第nスタックアドレスオフセットを決定すること、ここで、前記第nスタックアドレスオフセットは、前記第1スタックアドレスオフセットと、前記第nスタックプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第nスタックデータ型決定工程(171)において、前記上位第nスタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第nスタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第nスタックプログラムオブジェクトのデータ構造において定められる前記上位第nスタックプログラムオブジェクトの当該データ構造を決定し、前記上位第nスタックプログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリロケーション(P)は、各下位スタック部分的プログラムオブジェクトにつき決定される;
第n-1スタックプログラムオブジェクト特定工程(173)において、前記上位第nスタックプログラムオブジェクトの前記データ構造に従って、前記上位第nスタックプログラムオブジェクトの第1メモリロケーションから前記第nスタックアドレスオフセットだけ離隔した前記上位第nスタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第nスタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、前記スタック(ST)の前記第2メモリロケーション(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める上位第n-1スタックプログラムオブジェクトとして特定すること
を含み、
前記第n-1スタックプログラムオブジェクト特定工程(173)は、
第n-1スタックアドレスオフセット決定工程(175)において、第n-1スタックアドレスオフセットを決定すること、ここで、前記第n-1スタックアドレスオフセットは、前記第1スタックアドレスオフセットと、前記第nスタックプログラムオブジェクトの前記第1相対メモリアドレスおよび前記第n-1スタックプログラムオブジェクトの第1相対メモリアドレスの和との間の差によって、決定される;
第n-1スタックデータ型決定工程(177)において、前記上位第nスタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第n-1スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第n-1スタックプログラムオブジェクトのデータ構造において定められる前記上位第n-1スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第n-1スタックプログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリロケーション(P)は、各下位スタック部分的プログラムオブジェクトにつき決定される;
第n-2スタックプログラムオブジェクト特定工程(179)において、前記上位第n-1スタックプログラムオブジェクトの前記データ構造に従って、前記上位第n-1スタックプログラムオブジェクトの第1メモリロケーションから前記第n-1スタックアドレスオフセットだけ離隔した前記上位第n-1スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第n-1スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、前記プログラム状態(PZ)の前記第2メモリロケーション(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める上位第n-2スタックプログラムオブジェクトとして特定すること
を含み、
第n-2スタックプログラムオブジェクト特定工程(179)は、
さらなる再帰工程(181)において、n-2>2が成り立つ場合に、前記第n-1スタックアドレスオフセット決定工程(175)および前記第n-2スタックプログラムオブジェクト特定工程(179)を再帰的に実行すること;
前記第2スタックアドレスオフセット決定工程(157)において、第2スタックアドレスオフセットを決定すること、ここで、前記第2スタックアドレスオフセットは、前記第1スタックアドレスオフセットと前記第nスタックプログラムオブジェクトから前記第2スタックプログラムオブジェクトまでの第1相対メモリアドレスの総和との間の差によって、決定される;
第2スタックデータ型決定工程(159)において、前記上位第2スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第2スタックプログラムオブジェクトのデータ構造において定められる前記上位第2スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第2スタックプログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリロケーション(P)は、各下位スタック部分的プログラムオブジェクトにつき決定される;
前記上位第2スタックプログラムオブジェクトの前記データ構造に従って、前記上位第2スタックプログラムオブジェクトの第1メモリロケーションから前記第2アドレスオフセットだけ離隔した前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第2スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する前記第1スタックプログラムオブジェクトとして特定すること
を含む、請求項7または8に記載の方法(100)。
【請求項10】
第1データ型決定工程(183)において、前記第1プログラムオブジェクト(PO1)のデータ型を決定すること、ここで、前記第1プログラムオブジェクトの前記データ型は、前記第1プログラムオブジェクト(PO1)のデータ構造を決定する;
および/または、
第1スタックデータ型決定工程(185)において、前記第1スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記第1プログラムオブジェクトの前記データ型は、前記第1プログラムオブジェクト(PO1)のデータ構造を決定する
をさらに含む、請求項1~9のいずれか一項に記載の方法(100)。
【請求項11】
前記ポインタ要素によって参照される前記ポインタオブジェクト(ZO)の前記完全修飾指定は、
第1プログラムオブジェクトの前記指定、および/もしくは、複数の上位プログラムオブジェクトの前記指定を含み、
または、
第1スタックプログラムオブジェクトの前記指定、および/もしくは、複数の上位スタックプログラムオブジェクトの前記指定、および/もしくは、特定されたフレームの前記指定、および/もしくは、特定された前記関数の名前を含む、請求項1~10のいずれか一項に記載の方法(100)。
【請求項12】
上位プログラムオブジェクトまたは上位スタックプログラムオブジェクトは、複合型、フィールド型、または文字列型である、請求項1~11のいずれか一項に記載の方法(100)。
【請求項13】
選択工程(187)において、前記プログラム状態(PZ)の複数のプログラムオブジェクトを選択すること、ここで、選択されたプログラムオブジェクトは、前記ポインタ要素である;
前記完全指定決定工程(113)において、選択された複数の前記プログラムオブジェクトの複数の完全修飾指定を決定すること;
前記表示工程(115)において、前記制御装置に接続された前記表示要素上に、選択された複数の前記プログラムオブジェクトの複数の前記完全修飾指定を表示すること
をさらに含む、請求項1~12のいずれか一項に記載の方法(100)。
【請求項14】
前記表示工程(115)において、前記完全修飾指定に加えて、それぞれの前記プログラムオブジェクト(PO)の値が表示され、
前記制御方法(100)は、
調整工程(189)において、プログラムオブジェクト(PO)の少なくとも1つの値を調整すること;および、
制御工程(191)において、少なくとも1つの前記プログラムオブジェクト(PO)の少なくとも1つの変更された前記値を考慮に入れて、前記制御プログラムによるオートメーション処理を制御すること
をさらに含む、請求項1~13のいずれか一項に記載の方法(100)。
【請求項15】
前記制御方法(100)は、
デバッグ処理において実行され得、
および/または、
前記オートメーションシステム(200)の制御処理において実行される、請求項1~14のいずれか一項に記載の方法(100)。
【請求項16】
前記表示要素は、ヒューマンマシンインターフェースとして具現化され、前記制御システムに組み込まれている、請求項1~15のいずれか一項に記載の方法(100)。
【請求項17】
制御装置と、
前記制御装置(201)に接続された表示要素(207)と、
を備え、
前記制御装置(201)は、請求項1~16のいずれか一項に記載の方法(100)を実行するように構成されている、オートメーションシステム(200)。
【発明の詳細な説明】
【発明の詳細な説明】
【0001】
本発明は、オートメーションシステムの制御プログラムのプログラムオブジェクトを視覚化することを可能にするオートメーションシステムの制御方法に関する。本発明はさらに、当該方法を実行するためのオートメーションシステムに関する。
【0002】
本特許出願は、独国特許出願DE 10 2020 119 853.1の優先権を主張するものである。その開示内容は、参照によって本明細書に援用される。
【0003】
オートメーション技術において、オートメーションシステムのサブスクライバは、通常、対応する制御プログラムを周期的に実行することによって、当該オートメーションシステムの制御装置により制御される。それぞれのサブスクライバが制御プログラムのそれぞれの制御命令に従って制御される各サイクルにつき、オートメーションシステムおよび制御プログラムの状態を記述する情報が記録され、制御装置によって格納される。いわゆるプログラム状態(program state)には、オートメーションシステムおよび制御プログラムの状態を反映するのに必要な、完全な情報が含まれる。例えば、プログラム状態には、制御プログラムにおいて使用される変数、関数、データベース、または他のオブジェクトが含まれていてもよい。さらに、プログラム状態には、オートメーションシステムのサブスクライバに関する情報、または、オートメーションシステムにおいて実行中の処理(プロセス)に関する情報が含まれていてもよい。
【0004】
かかるプログラム状態は、オートメーションシステムおよび制御プログラムの現在の状態がいつでも再現され得るように、各制御サイクルの完了後に再生成されてもよい。
【0005】
後の制御サイクルにおいて制御プログラムが再び実行される場合、当該制御プログラムは、グローバル状態において格納されたデータを参照し直し、前の制御サイクルにおけるオートメーションシステムの状態に基づいて、当該後のサイクルにおけるオートメーションシステムの制御を継続してもよい。
【0006】
しばしば、オートメーションシステムの動作中には、当該オートメーションシステムの最適な動作または最適化された動作が達成または保証されるように、様々なパラメータが再調整される必要のある状況、または、処理が変更もしくは適合される必要のある状況が生じる。オートメーション処理の経過が観察できるように、制御プログラムによって制御されるオートメーション処理の特定のパラメータをユーザが追う(follow)ことができるよう、対応してプログラム状態に格納された制御プログラムの対応するパラメータまたはオブジェクトを、そのそれぞれの値を含めて当該ユーザに表示する、という課題が生じる。オートメーション処理または実行された制御プログラムの状態に関する直接的に自己説明的な(self-explanatory)情報を提供する有意義な表示をユーザに提供できるようにするためには、表示対象となるパラメータまたはオブジェクトの完全修飾指定(fully qualified designation)の表示が必要となる。この文脈において、完全修飾指定には、それぞれのパラメータまたはオブジェクトの完全な名前(complete name)が含まれてもよい。
【0007】
完全修飾指定の表現については、特に、ポインタ変数に関して問題がある。ポインタ変数の値は、ポインタ変数によって参照されるオブジェクトのメモリアドレスである、という問題がここに生じる。しかしながら、参照されたアドレスは、どのオブジェクトがポインタ変数によって参照されているのかを直接的に決定するためには使用できないため、参照された当該アドレスをポインタ変数の値として表示することによっては、直接的に自己説明的な情報がユーザに提供されない。
【0008】
このように、プログラム状態のオブジェクトの情報、および、もし必要であれば、制御プログラムのローカルオブジェクトが格納されているスタックの情報を、制御プログラムのポインタ変数およびポインタ要素を含めて、それぞれ、直接的に理解できる方法で表現する必要がある。このことは、オートメーション処理を制御するための制御プログラムを実行するときに、および、制御プログラムのデバッグ処理の実行中に、特に重要である。
【0009】
したがって、オートメーションシステムの制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムを制御するための改良された制御方法を提供すること、および、前記制御方法を実行するためのオートメーションシステムを提供することが、本発明の目的である。
【0010】
この目的は、独立請求項に係る方法およびオートメーションシステムによって、解決される。好ましい実施形態は、従属請求項の対象である。
【0011】
本発明の一態様によれば、オートメーションシステムの制御プログラムの複数のプログラムオブジェクトの視覚化を伴う当該オートメーションシステムの制御方法であって、
前記オートメーションシステムの制御装置は、制御プログラムを含み、
前記制御プログラムのプログラム状態は、前記制御装置の第1メモリ領域に格納され、
前記プログラム状態は、前記制御プログラムの複数のプログラムオブジェクトを含み、
複数の前記プログラムオブジェクトは、前記プログラム状態の所定の配置構造において、互いに対して配置され、
メモリポジションおよびメモリサイズは、前記配置構造を介して、各プログラムオブジェクトに割り当てられ、
プログラムオブジェクトのメモリポジションによって、プログラムオブジェクトが前記プログラム状態の第1メモリロケーションからメモリロケーションの数だけ離隔してメモリ領域に格納される、当該メモリロケーションの数が定められ、
プログラムオブジェクトのメモリサイズによって、メモリオブジェクトがメモリ領域内において占めるメモリロケーションの数が定められ、
前記プログラム状態は、少なくとも1つのポインタ要素を含み、
ポインタオブジェクトは、前記ポインタ要素によって参照され、
前記ポインタオブジェクトは、前記制御プログラムのプログラムオブジェクトであり、
前記制御プログラムのスタックは、前記制御装置の第2メモリ領域内において設定され、
複数のプログラムオブジェクトは、前記制御プログラムの実行時間中に前記スタックに格納され得、
前記制御方法は、
実行工程において、前記制御プログラムを実行すること;
ポインタアドレス決定工程において、前記ポインタ要素のポインタアドレスを決定すること、ここで、前記ポインタアドレスは、前記ポインタ要素によって参照されるメモリアドレスに対応する;
第1チェック工程において、前記ポインタ要素の前記ポインタアドレスが、前記プログラム状態の前記第1メモリ領域内に位置するのか、または、前記スタックの前記第2メモリ領域内に位置するのかをチェックすること;
第1アドレスオフセット決定工程において、前記ポインタ要素の前記ポインタアドレスが前記プログラム状態の前記第1メモリ領域内に位置している場合に、前記ポインタ要素の前記ポインタアドレスの第1アドレスオフセットを決定すること、ここで、前記第1アドレスオフセットは、前記ポインタ要素の前記ポインタアドレスが前記第1メモリ領域における前記プログラム状態の第1メモリアドレスからメモリロケーションの数だけ離隔した、当該メモリロケーションの数を定める;
第1プログラムオブジェクト特定工程において、前記プログラム状態の前記配置構造に従って、前記プログラム状態の前記第1メモリロケーションから前記第1アドレスオフセットだけ離隔したプログラムオブジェクトを、前記第1メモリ領域におけるその前記メモリアドレスが前記ポインタ要素の前記ポインタアドレスに対応する第1プログラムオブジェクトとして特定する(識別する:identify)こと;
ポインタオブジェクト特定工程において、前記第1プログラムオブジェクトを、前記ポインタ要素によって参照される前記ポインタオブジェクトと特定すること;
完全指定決定工程において、特定された前記ポインタオブジェクトの完全修飾指定を決定すること;および、
表示工程において、前記制御装置に接続された表示要素上に、前記ポインタ要素によって参照される前記ポインタオブジェクトの前記完全修飾指定を表示すること
を含む、方法が提供される。
【0012】
これは、オートメーションシステムを制御するための制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法が提供され得るという、技術的利点を有する。この制御方法では、オートメーションシステムの制御装置による制御プログラムの実行中に、プログラム状態のプログラムオブジェクトが、それぞれのプログラムオブジェクトの完全修飾指定で、制御装置に接続された表示要素に表示され得る。これにより、それぞれの表示されたプログラムオブジェクトの直接的に理解可能な情報が、オートメーションシステムのユーザに提供され得る。特に、制御プログラムのプログラム状態のポインティング要素によって参照されるプログラムオブジェクトが、対応する完全修飾指定で表示されることが、この制御方法によって可能となる。
【0013】
本出願の意味において、制御プログラムのプログラム状態は、所定の配置構造において配置された制御プログラムの複数のプログラムオブジェクトの、包括的なセットである。この文脈において、プログラムオブジェクトは、制御プログラムの任意の変数またはデータオブジェクトであってもよく、フィールド型(field type)、複合型(compound type)、文字列型(character string type)、または数値型(number type)等の、種々のデータ型を有してもよい。あらかじめ堅固に定められた配置構造において、個々のプログラムオブジェクトは、プログラム状態内において、互いに対して配置されている。これには、個々のプログラムオブジェクト間の関係(relation)、種々のプログラムオブジェクトの参照(reference)、ならびに、複数のプログラムオブジェクトのネスティング(nesting)および/または継承割り当て(inheritance allocation)がカバーされている。当該プログラム状態において、複数のプログラムオブジェクトは、互いにネスティングされた上位プログラムオブジェクト(superordinate program object)および下位プログラムオブジェクト(subordinate program object)として、配置されている。制御プログラムの実行中に、プログラム状態の配置構造は、変更されないままである。そのため、制御プログラムの実行中に、プログラムオブジェクト間の関係、プログラムオブジェクトの参照、および複数のプログラムオブジェクトのネスティングは、変更されないままである。
【0014】
本出願の用語では、ポインタ要素は、ポインタオブジェクトを参照するポインタ変数である。本出願の意味において、ポインタオブジェクトは、制御プログラムの任意のプログラムオブジェクトである。
【0015】
本出願人の意味において、スタックは、ローカル変数および関数が、制御プログラムの実行時間中、または、制御プログラムのサブルーチンの実行時間中にそれぞれ格納される、ランタイムセラ(runtime cellar)である。
【0016】
本出願の意味において、ポインタアドレスは、ポインタ要素によって参照されるポインタオブジェクトのメモリアドレスである。
【0017】
本出願の目的に関して、メモリロケーションは、データユニットが格納され得るメモリのユニットである。本出願の目的に関して、メモリアドレスは、メモリのそれぞれのメモリロケーションに格納されたデータオブジェクトを参照またはアドレシングするために使用され得るアドレスが与えられた、メモリのメモリロケーションである。
【0018】
制御プログラムの実行中、制御プログラムのプログラムオブジェクトには、プログラム状態に格納された値であって、実行される制御プログラムの状態、または、制御プログラムによって制御されるオートメーション処理の状態を反映する値が与えられる。プログラムオブジェクトの値は、制御対象のオートメーション処理の現在の状態を表す。これに関して、プログラム状態のポインタ要素によって参照されるポインタオブジェクトのポインタアドレスが決定され、このポインタアドレスがプログラム状態のメモリ領域に位置するか否かが決定される。この目的のために、それぞれのポインタ変数またはそれぞれのポインタ要素の値が、それぞれ、単純に読み取られてもよい。
【0019】
ポインタアドレスがプログラム状態のメモリ領域に位置する場合、プログラム状態の第1メモリアドレスに対するポインタアドレスの第1アドレスオフセットが決定される。第1アドレスオフセットは、ポインタアドレスと、プログラム状態の第1メモリアドレスとの間の差を表す。制御プログラムの実行中に変更できない複数のプログラムオブジェクトの配置構造を有するプログラム状態は、この目的のために提供されるメモリの第1メモリ領域に格納された、包括的なデータオブジェクト(例えば、複合型)として解釈されてもよい。このため、メモリのアドレス構造において、プログラム状態の第1メモリ領域には、プログラム状態を格納するために確保されたメモリ内のメモリ領域の第1メモリアドレスに対応する、既知の絶対第1メモリロケーションが含まれる。
【0020】
決定された第1アドレスオフセットと、プログラム状態内における各プログラムオブジェクトにメモリポジションおよびメモリサイズを割り当てるプログラム状態の配置構造と、に基づいて、プログラム状態のメモリ領域におけるそのメモリアドレスがポインタアドレスに対応する第1プログラムオブジェクトが特定される。この目的のために、プログラム状態の各プログラムオブジェクトについて、それぞれのプログラムオブジェクトがプログラム状態の第1メモリアドレスからそれぞれのメモリポジションおよびメモリサイズだけ離隔した、当該それぞれのメモリポジションおよびメモリサイズに基づいて、メモリロケーションの数が決定される。プログラム状態の第1メモリアドレスから、第1アドレスオフセットによって決定されるメモリロケーションの数だけ離隔したプログラムオブジェクトが、プログラム状態のメモリ領域におけるそのメモリアドレスがポインタアドレスに対応する第1プログラムオブジェクトとして、特定される。
【0021】
プログラム状態の個々のデータオブジェクトの絶対メモリアドレスは未知である。そのため、プログラム状態内のメモリポジションを各プログラムオブジェクトに割り当てるプログラム状態の既知の配置構造と、プログラム状態の既知の絶対第1メモリアドレスとを介して、プログラム状態の各プログラムオブジェクトに、プログラム状態の絶対第1メモリアドレスに対する相対アドレスが、第1メモリアドレスに対する隔たりを介して割り当てられる。第1アドレスオフセットを介して、ポインタアドレスが、プログラム状態の第1メモリアドレスに対する相対アドレスに変換される。その結果、ポインタアドレスの相対アドレス(すなわち、第1アドレスオフセット)に対応するプログラム状態内の相対アドレスを有するプログラムオブジェクトが、ポインタアドレスに対応する絶対アドレスを有するプログラム状態のプログラムオブジェクトとして、特定され得る。
【0022】
続いて、第1プログラムオブジェクトが、ポインタ要素によって参照されるポインタオブジェクトと特定される。
【0023】
表示要素における、参照されるポインタオブジェクトの完全修飾指定がこれに続く。
【0024】
本出願の目的に関して、プログラムオブジェクトの完全修飾指定は、それぞれのプログラムオブジェクトの一意の特定を可能にする指定である。例えば、完全修飾指定は、名前または有効な指定(telling designation)であってもよい。また、完全修飾指定には、プログラムオブジェクトの参照またはネスティングの完全なリストが含まれてもよい。
【0025】
これによって、オートメーションシステムの制御プログラムのプログラム状態の任意のポインタ要素について、それぞれの参照されたポインタオブジェクトの完全修飾指定を特定し、その結果、それぞれのポインタ要素の内容の直接的に理解可能な情報を提供し得る方法が提供され得る。
【0026】
一実施形態によれば、前記プログラム状態のプログラムオブジェクトは、上位第2プログラムオブジェクトとして具現化され、
前記上位第2プログラムオブジェクトは、少なくとも1つの下位部分的プログラムオブジェクトを含み、
前記第1プログラムオブジェクトは、前記上位第2プログラムオブジェクトによって、下位部分的プログラムオブジェクトとして含まれ、
前記第1プログラムオブジェクト特定工程は、
第2プログラムオブジェクト特定工程において、それぞれの前記メモリロケーションおよび前記メモリサイズに従って、前記プログラム状態の前記第1メモリロケーションから前記第1アドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が前記プログラム状態のプログラムオブジェクトについて前記プログラム状態の当該プログラムオブジェクトを、前記上位第2プログラムオブジェクトとして特定し、当該上位第2プログラムオブジェクトを、前記プログラム状態の前記第1メモリ領域において前記ポインタ要素の前記ポインタアドレスを含むメモリ領域を占める前記プログラムオブジェクトとして特定すること;
第2アドレスオフセット決定工程において、第2アドレスオフセットを決定すること、ここで、前記第2アドレスオフセットは、前記第1アドレスオフセットと前記第2プログラムオブジェクトの前記第1相対メモリアドレスとの間の差によって、決定される;
第2データ型決定工程において、前記上位第2プログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第2プログラムオブジェクトの下位部分的プログラムオブジェクトの数が前記上位第2プログラムオブジェクトのデータ構造において定められる前記上位第2プログラムオブジェクトの当該データ構造を決定し、前記上位第2プログラムオブジェクトの前記データ構造内におけるメモリサイズおよびメモリポジションは、各下位部分的プログラムオブジェクトにつき決定される;
前記第2プログラムオブジェクトの前記データ構造に従って、前記上位第2プログラムオブジェクトの第1メモリロケーションから前記第2アドレスオフセットだけ離隔した前記上位第2プログラムオブジェクトの下位部分的プログラムオブジェクトを特定し、前記上位第2プログラムオブジェクトの当該下位部分的プログラムオブジェクトを、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレスに対応する前記第1プログラムオブジェクトとして特定すること
を含む。
【0027】
これにより、第1ネスティング深さを有するポインタオブジェクトであって、上位プログラムオブジェクトの下位プログラムオブジェクトであるポインタオブジェクトの完全修飾指定が提供されるという、技術的利点がもたらされる。
【0028】
この目的のために、まず、プログラム状態のメモリ領域においてポインタ要素によって参照されるポインタアドレスを含む領域を占める上位第2プログラムオブジェクトが、第1アドレスオフセットと、プログラム状態の配置構造とに基づいて、特定される。この目的のために、やはり、プログラム状態の各プログラムオブジェクトについて、それぞれのプログラムオブジェクトがプログラム状態の第1メモリアドレスからメモリロケーションの数だけ離隔した、当該メモリロケーションの数が決定される。この目的のために、前記配置構造に従って、個々のプログラムオブジェクトのメモリポジションおよびメモリサイズが考慮に入れられ、プログラム状態のメモリ領域に順々に配置されたプログラムオブジェクトについて、プログラム状態の第1メモリアドレスからの対応する隔たりが決定される。
【0029】
続いて、第1アドレスオフセットと第2プログラムオブジェクトの第1相対メモリアドレスとの間の差から得られる第2アドレスオフセットが決定され、ポインタ要素のポインタアドレスが上位第2プログラムオブジェクトの第1相対メモリアドレスからメモリロケーションの数だけ離隔した、当該メモリロケーションの数が定められる。
【0030】
本出願の意味において、プログラムオブジェクトの第1相対メモリアドレスは、それぞれのプログラムオブジェクトがメモリ内において占める第1メモリアドレスである。しかしながら、これは、メモリの絶対アドレスではなく、それぞれの上位オブジェクトに対して決定されたものである。上位オブジェクトは、プログラム状態であってもよく、スタックであってもよく、または、それぞれのプログラムオブジェクトが含まれる上位プログラムオブジェクトであってもよい。このため、第1相対メモリアドレスは、上位オブジェクトのそれぞれの構造に対して決定され、それぞれのプログラムオブジェクトのそれぞれの上位オブジェクトの第1メモリアドレスに対する隔たりを示す。上位オブジェクトが上位プログラムオブジェクトである場合、上位プログラムオブジェクトによって含まれるプログラムオブジェクトの第1相対メモリアドレスは、含まれた当該プログラムオブジェクトの、それぞれの上位プログラムオブジェクトの第1相対メモリアドレスに対する隔たりを示す。したがって、プログラムオブジェクトの第1相対メモリアドレスは、それぞれのプログラムオブジェクトの第1メモリロケーションがそれぞれの上位プログラムオブジェクトの第1メモリロケーションからメモリロケーションの数だけ離隔した、当該メモリロケーションの数を表す。このように、第1相対メモリロケーションおよびアドレスオフセットは、両変数がメモリロケーションの数を表しているため、加算および減算されてもよい。
【0031】
続いて、特定された上位第2プログラムオブジェクトのデータ型が決定される。上位第2プログラムオブジェクトのデータ型は、例えば、フィールド型、複合型または文字列型であってもよい。これには、複数の下位プログラムオブジェクトが含まれる。当該データ型を決定することによって、複数の下位プログラムオブジェクトを含む上位第2プログラムオブジェクトのデータ構造がさらに決定され、各下位プログラムオブジェクトに、上位第2プログラムオブジェクト内のメモリロケーションおよびメモリサイズが割り当てられる。
【0032】
上位第2プログラムオブジェクトのデータ構造を考慮に入れて、上位第2プログラムオブジェクトの第1相対メモリアドレスに対する第2アドレスオフセットのメモリロケーションの数だけ、上位第2プログラムオブジェクトに対してデータ構造内において離隔した、上位第2プログラムオブジェクトの下位プログラムオブジェクトが特定される。上位第2プログラムオブジェクトの特定された下位プログラムオブジェクトが、プログラム状態のメモリ空間においてポインタ要素のポインタアドレスに対応するメモリアドレスを有する第1プログラムオブジェクトとして、特定される。
【0033】
これによって、プログラム状態のプログラムオブジェクトの下位オブジェクトであるポインタオブジェクトの完全修飾指定が提供され得る。これによって、例えば、ポインタ要素によって参照されたフィールド型の要素、複合型のコンポーネント、または、文字列型の要素の完全修飾指定が提供され得る。完全修飾指定には、上位第2プログラムオブジェクト(すなわち、フィールド型、複合型、または文字列型)の指定、および、第1プログラムオブジェクト(すなわち、フィールド型の要素、複合型のコンポーネント、または文字列型の要素)の指定が含まれてもよい。
【0034】
本出願の意味において、上位プログラムオブジェクトは、複数の下位プログラムオブジェクトを含む、プログラム状態のデータオブジェクトである。したがって、上位プログラムオブジェクトは、要素またはコンポーネントを含む、複合型、フィールド型または文字列型のデータオブジェクトであってもよい。本出願の意味において、複数の下位プログラムオブジェクトは、上位プログラムオブジェクトによって含まれる、プログラム状態の複数のプログラムオブジェクトである。このため、これらは、例えば、複合型、フィールド型、または文字列型のデータオブジェクトの要素またはコンポーネントであってもよい。複数の下位プログラムオブジェクトもまた、複数の下位プログラムオブジェクトを含んでもよく、そのため、含まれる複数の当該下位プログラムオブジェクトに対する、複数の上位プログラムオブジェクトとして働いてもよい。例えば、複合型のデータオブジェクトは、それら自体がさらなる複数のコンポーネントを含む、複合型の複数のコンポーネントを含んでもよい。
【0035】
上位プログラムオブジェクトデータ構造(当該データ構造内における各下位プログラムオブジェクトに、メモリポジションおよびメモリサイズを割り当てる)を介して、また、第2アドレスオフセット(上位プログラムオブジェクトの第1相対メモリアドレスに対する、ポインタアドレスの相対的な隔たりを決定し、第1アドレスオフセットと、第2プログラムオブジェクトの第1相対メモリアドレスとの間の差から得られる)を決定することによって、ポインタ要素のポインタアドレスが、上位プログラムオブジェクトの第1相対メモリアドレスに対する相対アドレスに変換される。
【0036】
上位プログラムオブジェクトの第1相対メモリアドレスは、プログラム状態の第1メモリアドレスおよびメモリ構造を介して決定され得る。上位プログラムオブジェクトのデータ構造内において、上位プログラムオブジェクトの各下位プログラムオブジェクトには、それぞれの下位プログラムオブジェクトが上位プログラムオブジェクトの第1相対メモリアドレスからメモリロケーションの数だけ離隔した当該メモリロケーションの数に対応する相対アドレスが割り当てられ得る。上位プログラムオブジェクトのデータ構造内において、上位プログラムオブジェクトの第1相対メモリアドレスから第2アドレスオフセットに対応するメモリロケーションの数だけ離隔した下位プログラムオブジェクトが、そのメモリアドレスがポインタアドレスに対応する下位プログラムオブジェクトとして、特定される。
【0037】
一実施形態によれば、前記プログラム状態のプログラムオブジェクトは、上位第3プログラムオブジェクトとして具現化され、
前記上位第3プログラムオブジェクトは、少なくとも1つの下位部分的プログラムオブジェクトを含み、
前記上位第2プログラムオブジェクトは、前記上位第3プログラムオブジェクトによって、下位部分的プログラムオブジェクトとして含まれ、
前記第2プログラムオブジェクト特定工程は、
第3プログラムオブジェクト特定工程において、それぞれの前記メモリロケーションおよび前記メモリサイズに従って、前記プログラム状態の前記第1メモリロケーションから前記第1アドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が、前記プログラム状態のプログラムオブジェクトについて定められた、前記プログラム状態の当該プログラムオブジェクトを、前記上位第3プログラムオブジェクトとして特定し、当該上位第3プログラムオブジェクトを、前記プログラム状態の前記第1メモリ領域において前記ポインタ要素の前記ポインタアドレスを含むメモリ領域を占める前記プログラムオブジェクトとして特定すること;
第3アドレスオフセット決定工程において、第3アドレスオフセットを決定すること、ここで、前記第3アドレスオフセットは、前記第1アドレスオフセットと、前記第3プログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第3データ型決定工程において、前記上位第3プログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第3プログラムオブジェクトの下位部分的プログラムオブジェクトの数が前記上位第3プログラムオブジェクトのデータ構造において定められる前記上位第3プログラムオブジェクトの当該データ構造を決定し、前記上位第2プログラムオブジェクトの前記データ構造内におけるメモリサイズおよびメモリポジションは、各下位部分的プログラムオブジェクトにつき決定される;
前記上位第3プログラムオブジェクトの前記データ構造に従って、前記上位第3プログラムオブジェクトの第1メモリロケーションから前記第3アドレスオフセットだけ離隔した前記上位第3プログラムオブジェクトの下位部分的プログラムオブジェクトを特定し、前記上位第3プログラムオブジェクトの当該下位部分的プログラムオブジェクトを、前記プログラム状態の前記第1メモリ領域において前記ポインタ要素の前記ポインタアドレスを含むメモリ領域を占める前記上位第2プログラムオブジェクトとして特定すること
を含み、ここで、前記第2アドレスオフセットは、前記第1アドレスオフセットと前記第3プログラムオブジェクトの前記第1相対メモリアドレスおよび前記第2プログラムオブジェクトの第1相対メモリアドレスの和との間の差によって、決定される。
【0038】
これにより、三重ネスティング深さを有するプログラム状態のプログラムオブジェクトの下位プログラムオブジェクトであるポインタ要素によって参照されたポインタオブジェクトの完全修飾指定を提供するという、技術的利点がもたらされる。
【0039】
この目的のために、まず、プログラム状態のメモリ領域内においてポインタ要素のポインタアドレスを含む領域を占める上位第3プログラムオブジェクトが、プログラム状態の配置構造と、第1アドレスオフセットとに基づいて、特定される。
【0040】
続いて、第3アドレスオフセットが、第1アドレスオフセットと、第3プログラムオブジェクトの第1相対メモリアドレスとの間の差に基づいて決定され、特定された当該上位第3プログラムオブジェクトの第1相対メモリアドレスからポインタアドレスがメモリロケーションの数だけ離隔した、当該メモリロケーションの数が定められる。
【0041】
続いて、上位第3プログラムオブジェクトのデータ型が決定される。上位第3プログラムオブジェクトの当該データ型は、上位第3プログラムオブジェクトのデータ構造を定め、上位第3プログラムオブジェクトの下位部分的プログラムオブジェクトの数を定め、当該データ構造内におけるメモリサイズおよびメモリポジションを、各下位部分的プログラムオブジェクトに割り当てる。
【0042】
上位第3プログラムオブジェクトのデータ型のデータ構造に基づいて、かつ、第3アドレスオフセットに基づいて、上位第3プログラムオブジェクトのデータ構造において上位第3プログラムオブジェクトの第1相対メモリアドレスから第3アドレスオフセットだけ離隔した上位第3プログラムオブジェクトの下位部分的プログラムオブジェクトであって、したがって、プログラム状態のメモリ領域においてポインタアドレスを含む領域を占める上位第3プログラムオブジェクトの下位部分的プログラムオブジェクトとして、上位第2プログラムオブジェクトが特定される。
【0043】
続いて、第2アドレスオフセットと特定された上位第2プログラムオブジェクトのデータ型とが、上述の記載に従って決定される。そして、第2アドレスオフセットと上位第2プログラムオブジェクトのデータ構造とに基づいて、第1プログラムオブジェクトがポインタオブジェクトとして特定される。ここで、第2アドレスオフセットは、第1アドレスオフセットと第3プログラムオブジェクトの第1相対メモリアドレスおよび第2プログラムオブジェクトの第1相対メモリアドレスの和との間の差から得られる。
【0044】
ポインタオブジェクトの完全修飾指定には、第1プログラムオブジェクトの名前、上位第2プログラムオブジェクトの名前、および上位第3プログラムオブジェクトの名前、ならびにネスティング階層(nesting hierarchy)が含まれてもよい。このことは、複数の完全修飾指定が、例えばフィールド型の要素である複数のポインタ要素について特定されてもよく、これがフィールド型の要素であることを意味する。
【0045】
この手順は、上位第2プログラムオブジェクトの場合における実施形態について上述した手順と同様である。含まれる複数の下位プログラムオブジェクトのそれぞれの相対アドレスは、それぞれの上位プログラムオブジェクトの第1相対メモリアドレスに対するそれぞれの下位プログラムオブジェクトのメモリポジションの隔たりとして、決定される。その相対アドレスがそれぞれのアドレスオフセットに対応し、または、第1メモリアドレスからそれぞれのアドレスオフセットだけ離隔したメモリアドレスを含むメモリ領域を占める下位プログラムオブジェクトは、そのメモリアドレスがポインタアドレスに対応し、または、そのメモリ領域がポインタアドレスを含むプログラムオブジェクトとして、特定される。このプロセスは、そのメモリアドレスがポインタアドレスに対応する下位プログラムオブジェクトとしてポインタオブジェクトが特定されるまで、それぞれのネスティング深さについて継続される。
【0046】
一実施形態によれば、前記プログラム状態のプログラムオブジェクトは、上位第nプログラムオブジェクトとして具現化され、
前記上位第nプログラムオブジェクトは、n-1ネスティング深さにおいて、互いを含む複数の下位部分的プログラムオブジェクトを含み、
前記上位第2プログラムオブジェクトは、前記上位第nプログラムオブジェクトのn-2ネスティング深さにおける下位部分的プログラムオブジェクトとして含まれ、
前記第1プログラムオブジェクトは、前記上位第nプログラムオブジェクトによって、第n-1ネスティング深さにおける下位部分的プログラムオブジェクトとして含まれ、
nは、4以上の自然数であり、
前記第1プログラムオブジェクト特定工程は、
第nプログラムオブジェクト特定工程において、それぞれの前記メモリロケーションおよび前記メモリサイズに従って、前記プログラム状態の前記第1メモリロケーションから前記第1アドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が、前記プログラム状態のプログラムオブジェクトについて定められた、前記プログラム状態の当該プログラムオブジェクトを、前記上位第nプログラムオブジェクトとして特定し、当該上位第nプログラムオブジェクトを、前記プログラム状態の前記第1メモリ領域において前記ポインタ要素の前記ポインタアドレスを含むメモリ領域を占める前記プログラムオブジェクトとして特定すること;
第nアドレスオフセット決定工程において、第nアドレスオフセットを決定すること、ここで、前記第nアドレスオフセットは、前記第1アドレスオフセットと前記第nプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第nデータ型決定工程において、前記上位第nプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第nプログラムオブジェクトの下位部分的プログラムオブジェクトの数が前記上位第nプログラムオブジェクトのデータ構造において定められる前記上位第nプログラムオブジェクトの当該データ構造を決定し、前記上位第nプログラムオブジェクトの前記データ構造内におけるメモリサイズおよびメモリポジションは、各下位部分的プログラムオブジェクトにつき決定される;
第n-1プログラムオブジェクト特定工程において、前記上位第nプログラムオブジェクトの前記データ構造に従って、前記上位第nプログラムオブジェクトの第1メモリロケーションから前記第nアドレスオフセットだけ離隔した前記上位第nプログラムオブジェクトの下位部分的プログラムオブジェクトを特定し、前記上位第nプログラムオブジェクトの当該下位部分的プログラムオブジェクトを、前記プログラム状態の前記第1メモリ領域において前記ポインタ要素の前記ポインタアドレスを含むメモリ領域を占める上位第n-1プログラムオブジェクトとして特定すること
を含み、
第n-1アドレスオフセット決定工程において、第n-1アドレスオフセットを決定すること、ここで、前記第n-1アドレスオフセットは、前記第1アドレスオフセットと前記第nプログラムオブジェクトの前記第1相対メモリアドレスおよび前記第n-1プログラムオブジェクトの第1メモリアドレスの和との間の差によって、決定される;
第n-1データ型決定工程において、前記上位第n-1プログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第n-1プログラムオブジェクトの下位部分的プログラムオブジェクトの数が前記上位第n-1プログラムオブジェクトのデータ構造において定められる前記上位第n-1プログラムオブジェクトの当該データ構造を決定し、前記上位第n-1プログラムオブジェクトの前記データ構造内におけるメモリサイズおよびメモリポジションは、各下位部分的プログラムオブジェクトにつき決定される;
第n-2プログラムオブジェクト特定工程において、前記上位第n-1プログラムオブジェクトの前記データ構造に従って、前記上位第n-1プログラムオブジェクトの第1メモリロケーションから前記第n-1アドレスオフセットだけ離隔した前記上位第n-1プログラムオブジェクトの下位部分的プログラムオブジェクトを特定し、前記上位第n-1プログラムオブジェクトの当該下位部分的プログラムオブジェクトを、前記プログラム状態の前記第1メモリロケーションにおいて前記ポインタ要素の前記ポインタアドレスを含むメモリロケーションを占める上位第n-2プログラムオブジェクトとして特定すること;
一再帰工程において、n-2>2が成り立つ場合に、前記第n-1アドレスオフセット決定工程、前記第n-1データ型決定工程、前記第n-2プログラムオブジェクト特定工程を再帰的に実行すること;
前記第2アドレスオフセット決定工程において、前記第2アドレスオフセットを決定すること、ここで、前記第2アドレスオフセットは、前記第1アドレスオフセットと前記第nプログラムオブジェクトから前記第2プログラムオブジェクトまでの第1相対メモリアドレスの総和との間の差によって、決定される;
第2データ型決定工程において、前記上位第2プログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第n-1プログラムオブジェクトの下位部分的プログラムオブジェクトの数が前記上位第2プログラムオブジェクトのデータ構造において定められる前記上位第2プログラムオブジェクトの当該データ構造を決定し、前記上位第2プログラムオブジェクトの前記データ構造内におけるメモリサイズおよびメモリポジションは、各下位部分的プログラムオブジェクトにつき決定される;
前記上位第2プログラムオブジェクトの前記データ構造に従って、前記上位第2プログラムオブジェクトの第1メモリロケーションから前記第2アドレスオフセットだけ離隔した前記上位第2プログラムオブジェクトの前記下位部分的プログラムオブジェクトを特定し、前記上位第2プログラムオブジェクトの当該下位部分的プログラムオブジェクトを、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレスに対応する前記第1プログラムオブジェクトとして特定すること
を含む。
【0047】
これにより、任意のネスティング深さにおける上位プログラムオブジェクトの複数の下位プログラムオブジェクトである複数のプログラムオブジェクトについての完全修飾指定が提供され得るという、技術的利点が達成される。
【0048】
この目的のために、個々のプログラムオブジェクトの特定に関する上述した工程が、n重再帰で実行される。
【0049】
言及した工程を再帰的に実行することによって、さらなるネスティング深さの上位第nプログラムオブジェクトが、言及した工程を繰り返し実行した後に第2プログラムオブジェクトが特定されるまで処理される。この文脈において、第2プログラムオブジェクトは、第1プログラムオブジェクト、すなわちポインタ要素によって参照されるポインタオブジェクトを、その直接上位のプログラムオブジェクトとして含む、プログラムオブジェクトである。
【0050】
まず、プログラム状態の配置構造と第1アドレスオフセットとに基づいて、上位第nプログラムオブジェクトが特定される。この第nプログラムオブジェクトに対して、ポインタアドレスと上位第nプログラムオブジェクトの第1相対メモリアドレスとの間の差を決定する第nアドレスオフセットが決定される。続いて、上位第nプログラムオブジェクトのデータ型が決定される。上位第nプログラムオブジェクトの当該データ型によって、上位第nプログラムオブジェクトによって含まれる複数の下位部分的プログラムオブジェクトのデータ構造が定められる。第nアドレスオフセットと上位第nプログラムオブジェクトのデータ構造とに基づいて、ポインタアドレスを含むメモリ領域を占める上位第nプログラムオブジェクトの下位部分的プログラムオブジェクトが特定される。
【0051】
特定されたこの下位部分的プログラムオブジェクトが、上位第n-1プログラムオブジェクトとして特定される。続いて、第n-1アドレスオフセットと上位第n-1プログラムオブジェクトのデータ型とが決定される。ここで、第n-1アドレスオフセットは、第1アドレスオフセットと第nプログラムオブジェクトの第1相対メモリアドレスおよび第n-1プログラムオブジェクトの第1相対メモリアドレスの和との間の差から得られる。第n-1アドレスオフセットと上位第n-1プログラムオブジェクトのデータ型とに基づいて、上位第n-1プログラムオブジェクトの第1相対メモリアドレスから第n-1アドレスオフセットのメモリロケーションの数だけ離隔した上位第n-1プログラムオブジェクトの下位部分的プログラムオブジェクトであって、したがって、ポインタアドレスを含むメモリ領域を占める上位第n-1プログラムオブジェクトの下位部分的プログラムオブジェクトが特定される。
【0052】
特定されたこの下位部分的プログラムオブジェクトが、上位第n-2プログラムオブジェクトとして特定される。続いて、上記の工程が、プログラム状態のメモリ領域においてポインタ要素のポインタアドレスに対応するメモリアドレスを占める第1プログラムオブジェクトが特定されるまで、再帰的に実行される。
【0053】
これにより、n重ネスティング深さにおける上位プログラムオブジェクトの下位部分的プログラムオブジェクトであるポインタオブジェクトについての完全修飾指定が提供され得る。それぞれの完全修飾指定には、特定されたポインタオブジェクトの全ての上位プログラムオブジェクトの名前および指定、ならびに、それぞれの関係(relation)およびネスティングが含まれてもよい。
【0054】
一実施形態によれば、前記制御方法は、
スタック構造決定工程において、前記ポインタ要素の前記ポインタアドレスが前記スタックの前記第2メモリ領域内に配置されている場合に、前記スタックの構造を決定すること、ここで、メモリポジションおよびメモリサイズは、前記スタックの前記構造を介して、前記スタックに格納された各スタックプログラムオブジェクトに割り当てられ、スタックプログラムオブジェクトのメモリポジションによって、スタックプログラムオブジェクトが前記スタックの第1メモリロケーションからメモリロケーションの数だけ離隔してメモリ領域に格納される、当該メモリロケーションの数が定められる;
第1スタックアドレスオフセット決定工程において、前記ポインタ要素の前記ポインタアドレスの第1スタックアドレスオフセットを決定すること、ここで、前記第1スタックアドレスオフセットは、前記ポインタ要素の前記ポインタアドレスが前記第2メモリ領域における前記スタックの第1メモリアドレスからメモリロケーションの数だけ離隔した、当該メモリロケーションの数を定める;
第1スタックプログラムオブジェクト特定工程において、各スタックプログラムオブジェクトがメモリロケーションおよびメモリサイズを割り当てられた前記スタックの前記構造に従って、前記スタックの前記第1メモリロケーションから前記第1スタックアドレスオフセットだけ離隔したスタックプログラムオブジェクトを、前記第2メモリロケーションにおけるその前記メモリアドレスが前記ポインタ要素の前記ポインタアドレスに対応する第1スタックプログラムオブジェクトとして特定すること;ならびに、
前記ポインタオブジェクト特定工程において、前記第1スタックプログラムオブジェクトを、前記ポインタ要素によって参照される前記ポインタオブジェクトと特定すること
をさらに含む。
【0055】
これにより、オートメーションシステムの制御装置のスタックに格納されたポインタ要素のポインタオブジェクトについての完全修飾指定が提供され得るという、技術的利点が達成される。依然としてポインタ要素が制御プログラムのプログラム状態のプログラムオブジェクトである一方、ポインタ要素によって参照されるポインタオブジェクトは、スタックのオブジェクトまたはランタイムメモリのオブジェクトであり、したがって、プログラム状態のプログラムオブジェクトではない。
【0056】
まず、スタックの各プログラムオブジェクトに対してメモリポジションおよびメモリサイズを割り当てる、スタックの構造が決定される。プログラム状態の配置構造と同様に、スタックの構造によって、複数のスタックプログラムオブジェクトの一意の位置決めが可能になる。
【0057】
以下、スタックプログラムオブジェクトは、制御プログラム、制御プログラムのサブルーチンまたは制御プログラムの関数の実行中にローカル変数としてスタックに格納される、データオブジェクトである。
【0058】
スタックの構造が決定された後、ポインタアドレスの第1スタックアドレスオフセットが決定される。第1スタックアドレスオフセットは、ポインタアドレスがスタックの第1メモリアドレスからメモリロケーションの数だけ離隔した当該メモリロケーションの数を定める。ポインタ要素によって参照され、かつスタックに格納されたポインタオブジェクトがスタックのメモリ領域内においてスタックの開始位置に対して有する、メモリ領域内における隔たりが、これによって特定される。
【0059】
スタックの構造と第1スタックアドレスオフセットとに基づいて、スタックの第1メモリアドレスから第1スタックアドレスオフセットのメモリロケーションの数だけスタックの構成において離隔した第1スタックプログラムオブジェクトが、特定される。この第1スタックプログラムオブジェクトは、スタックの第2メモリロケーションにおいてポインタ要素のポインタアドレスに対応するメモリアドレスを有するスタックプログラムオブジェクトとして、特定される。
【0060】
続いて、ポインタオブジェクトとして特定されたスタックプログラムオブジェクトの完全修飾指定が提供される。これにより、スタックに格納されポインタ要素によって参照されるポインタオブジェクトに、完全修飾指定を与えることができるようになる。当該完全修飾指定には、少なくとも、ローカル変数の名前またはスタックプログラムオブジェクトの名前が含まれる。
【0061】
一実施形態によれば、前記第1スタックプログラムオブジェクト特定工程は、
フレーム特定工程において、前記ポインタ要素の前記ポインタアドレスの前記第1スタックアドレスオフセットと前記スタックの前記配置構造とを考慮に入れて、前記スタックの前記第2メモリ領域において前記ポインタ要素の前記ポインタアドレスの前記メモリアドレスを含むメモリ領域を占める前記スタックのフレームを特定すること;
関数特定工程において、前記スタックの特定された前記フレームの関数を特定すること;および、
その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレスに対応する特定された前記関数のローカル変数を、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレスに対応する前記スタックの前記第1スタックプログラムオブジェクトとして特定すること
を含む。
【0062】
これにより、スタックに格納されポインタ要素によって参照されるポインタオブジェクトの完全修飾指定が、関数およびフレームの指定によって拡張され得るという、技術的利点が達成される。この目的のために、まず、第1スタックアドレスオフセットとスタックの構造とを考慮に入れて、特定された第1スタックプログラムオブジェクトを含み、したがってスタックのメモリ領域におけるポインタアドレスを含むフレームが、特定される。続いて、特定されたフレームに格納された、特定された第1スタックプログラムオブジェクトの関数が特定される。フレームの指定と第1スタックプログラムオブジェクトの関数の指定との両方が、第1スタックプログラムオブジェクトによって表されるポインタオブジェクトの完全修飾指定に含まれてもよい。
【0063】
一実施形態によれば、前記スタックのスタックプログラムオブジェクトは、上位第2スタックプログラムオブジェクトとして具現化され、
前記上位第2スタックプログラムオブジェクトは、少なくとも1つの下位スタック部分的プログラムオブジェクトを含み、
前記第1スタックプログラムオブジェクトは、前記上位第2スタックプログラムオブジェクトによって、下位スタック部分的プログラムオブジェクトとして含まれ、
前記第1スタックプログラムオブジェクト特定工程は、
第2スタックプログラムオブジェクト特定工程において、それぞれの前記メモリロケーションおよび前記メモリサイズに従って、前記スタックの前記第1メモリロケーションから前記第1スタックアドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が、前記スタックのプログラムオブジェクトについて定められた、前記スタックの当該プログラムオブジェクトを、前記上位第2スタックプログラムオブジェクトとして特定し、当該上位第2スタックプログラムオブジェクトを、前記スタックの前記第2メモリ領域において前記ポインタ要素の前記ポインタアドレスを含むメモリ領域を占める前記プログラムオブジェクトとして特定すること;
第2スタックアドレスオフセット決定工程において、第2スタックアドレスオフセットを決定すること、ここで、前記第2スタックアドレスオフセットは、前記第1スタックアドレスオフセットと、前記第2スタックプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第2スタックデータ型決定工程において、前記上位第2スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第2スタックプログラムオブジェクトのデータ構造において定められる前記上位第2スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第2プログラムオブジェクトの前記データ構造内におけるメモリサイズおよびメモリロケーションは、各下位スタック部分的プログラムオブジェクトにつき決定される;
前記上位第2スタックプログラムオブジェクトの前記データ構造に従って、前記上位第2スタックプログラムオブジェクトの第1メモリロケーションから前記第2アドレスオフセットだけ離隔した前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第2スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレスに対応する前記第1スタックプログラムオブジェクトとして特定すること
を含む。
【0064】
これにより、スタックに格納された上位プログラムオブジェクトの下位部分的オブジェクトであるポインタオブジェクトに関する完全修飾指定が提供されるという、技術的利点がもたらされる。例えば、ポインタ要素によって参照されるポインタオブジェクトは、スタックに格納されたフィールド型の要素、スタックに格納された複合型のコンポーネント、または、スタックに格納された文字列型の要素であってもよい。この場合において、ポインタオブジェクトの完全修飾指定には、上位スタックプログラムオブジェクトの指定と、下位スタック部分的プログラムオブジェクトの指定と、が含まれてもよい。ここで、ポインタ要素の完全修飾指定の決定は、プログラム状態に格納された単一のネスティング深さを有するポインタ要素の完全修飾指定の決定に関して上述した手順と同様に、実行される。
【0065】
一実施形態によれば、前記スタックのスタックプログラムオブジェクトは、上位第3スタックプログラムオブジェクトとして具現化され、
前記上位第3スタックプログラムオブジェクトは、少なくとも1つの下位スタック部分的プログラムオブジェクトを含み、
前記上位第2スタックプログラムオブジェクトは、前記上位第3スタックプログラムオブジェクトによって、下位スタック部分的プログラムオブジェクトとして含まれ、
前記第2スタックプログラムオブジェクト特定工程は、
第3スタックプログラムオブジェクト特定工程において、それぞれの前記メモリロケーションおよび前記メモリサイズに従って、前記スタックの前記第1メモリアドレスから前記第1スタックアドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が、前記スタックのプログラムオブジェクトについて定められた、前記スタックの当該プログラムオブジェクトを、前記上位第3スタックプログラムオブジェクトとして特定し、当該上位第3スタックプログラムオブジェクトを、前記スタックの前記第2メモリ領域において前記ポインタ要素の前記ポインタアドレスを含むメモリ領域を占める前記プログラムオブジェクトとして特定すること;
第3スタックアドレスオフセット決定工程において、第3スタックアドレスオフセットを決定すること、ここで、前記第3スタックアドレスオフセットは、前記第1スタックアドレスオフセットと、前記第3スタックプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第3スタックデータ型決定工程において、前記上位第3スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第3スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第3スタックプログラムオブジェクトのデータ構造において定められる前記上位第3スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第3スタックプログラムオブジェクトの前記データ構造内におけるメモリサイズおよびメモリロケーションは、各下位スタック部分的プログラムオブジェクトにつき決定される;
前記上位第3スタックプログラムオブジェクトの前記データ構造に従って、前記上位第3スタックプログラムオブジェクトの第1メモリロケーションから前記第3スタックアドレスオフセットだけ離隔した前記上位第3スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第3スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、前記スタックの前記第2メモリ領域において前記ポインタ要素の前記ポインタアドレスを含むメモリ領域を占める前記上位第2スタックプログラムオブジェクトとして特定すること
を含み、
ここで、前記第2スタックアドレスオフセットは、前記第1スタックアドレスオフセットと前記第3プログラムオブジェクトの前記第1相対メモリアドレスおよび前記第2スタックプログラムオブジェクトの前記第1相対メモリアドレスの和との間の差によって、決定される。
【0066】
これにより、スタックに格納された二重ネスティング深さのスタックプログラムオブジェクトの下位オブジェクトであるスタックに格納されたポインタオブジェクトの完全修飾指定が提供されるという、技術的利点がもたらされる。修飾指定は、プログラム状態に格納されたポインタオブジェクトであって、二重ネスティング深さの上位プログラムオブジェクトの部分的オブジェクトとして形成されたポインタオブジェクトの修飾指定の決定に関して上述した方法と同様に、決定される。
【0067】
一実施形態によれば、前記スタックのスタックプログラムオブジェクトは、上位第nスタックプログラムオブジェクトとして具現化され、
前記上位第nスタックプログラムオブジェクトは、n-1ネスティング深さにおいて、互いを含む複数の下位スタック部分的プログラムオブジェクトを含み、
前記上位第2スタックプログラムオブジェクトは、前記上位第nスタックプログラムオブジェクトによって、第n-2ネスティング深さにおける下位スタック部分的プログラムオブジェクトとして含まれ、
前記第1スタックプログラムオブジェクトは、前記上位第nスタックプログラムオブジェクトによって、第n-1ネスティング深さにおける下位スタック部分的プログラムオブジェクトとして含まれ、
nは、4以上の自然数であり、
前記第2スタックプログラムオブジェクト特定工程は、
第nスタックプログラムオブジェクト特定工程において、それぞれの前記メモリロケーションおよび前記メモリサイズに従って、前記スタックの前記第1メモリロケーションから前記第1スタックアドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が、前記スタックのプログラムオブジェクトについて定められた、前記スタックの当該プログラムオブジェクトを、前記上位第nスタックプログラムオブジェクトとして特定し、当該上位第nスタックプログラムオブジェクトを、前記スタックの前記第2メモリ領域において前記ポインタ要素の前記ポインタアドレスを含むメモリ領域を占める前記プログラムオブジェクトとして特定すること;
第nスタックアドレスオフセット決定工程において、第nスタックアドレスオフセットを決定すること、ここで、前記第nスタックアドレスオフセットは、前記第1スタックアドレスオフセットと前記第nスタックプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第nスタックデータ型決定工程において、前記上位第nスタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第nスタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第nスタックプログラムオブジェクトのデータ構造において定められる前記上位第nスタックプログラムオブジェクトの当該データ構造を決定し、前記上位第nスタックプログラムオブジェクトの前記データ構造内におけるメモリサイズおよびメモリロケーションは、各下位スタック部分的プログラムオブジェクトにつき決定される;
第n-1スタックプログラムオブジェクト特定工程において、前記上位第nスタックプログラムオブジェクトの前記データ構造に従って、前記上位第nスタックプログラムオブジェクトの第1メモリロケーションから前記第nスタックアドレスオフセットだけ離隔した前記上位第nスタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第nスタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、前記スタックの前記第2メモリロケーションにおいて前記ポインタ要素の前記ポインタアドレスを含むメモリロケーションを占める上位第n-1スタックプログラムオブジェクトとして特定すること
を含み、
第n-1スタックアドレスオフセット決定工程において、第n-1スタックアドレスオフセットを決定すること、ここで、前記第n-1スタックアドレスオフセットは、前記第1スタックアドレスオフセットと前記第nスタックプログラムオブジェクトの前記第1相対メモリアドレスおよび前記第n-1スタックプログラムオブジェクトの第1相対メモリアドレスの和との間の差によって、決定される;
第n-1スタックデータ型決定工程において、前記上位第n-1スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第n-1スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第n-1スタックプログラムオブジェクトのデータ構造において定められる前記上位第n-1スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第n-1スタックプログラムオブジェクトの前記データ構造内におけるメモリサイズおよびメモリロケーションは、各下位スタック部分的プログラムオブジェクトにつき決定される;
第n-2スタックプログラムオブジェクト特定工程において、前記上位第n-1スタックプログラムオブジェクトの前記データ構造に従って、前記上位第n-1スタックプログラムオブジェクトの第1メモリロケーションから前記第n-1スタックアドレスオフセットだけ離隔した前記上位第n-1スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第n-1スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、前記プログラム状態の前記第2メモリロケーションにおいて前記ポインタ要素の前記ポインタアドレスを含むメモリロケーションを占める上位第n-2スタックプログラムオブジェクトとして特定すること
を含み、
別の再帰工程において、n-2>2が成り立つ場合に、前記第n-1スタックアドレスオフセット決定工程および前記第n-2スタックプログラムオブジェクト特定工程を再帰的に実行すること;
第2スタックアドレスオフセット決定工程において、第2スタックアドレスオフセットを決定すること、ここで、前記第2スタックアドレスオフセットは、前記第1スタックアドレスオフセットと前記第nスタックプログラムオブジェクトから前記第2スタックプログラムオブジェクトまでの第1相対メモリアドレスの総和との間の差によって、決定される;
第2スタックデータ型決定工程において、前記上位第2スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第2スタックプログラムオブジェクトのデータ構造において定められる前記上位第2スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第2スタックプログラムオブジェクトの前記データ構造内におけるメモリサイズおよびメモリロケーションは、各下位スタック部分的プログラムオブジェクトにつき決定される;
前記上位第2スタックプログラムオブジェクトの前記データ構造に従って、前記上位第2スタックプログラムオブジェクトの第1メモリロケーションから前記第2アドレスオフセットだけ離隔した前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第2スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレスに対応する前記第1スタックプログラムオブジェクトとして特定すること
を含む。
【0068】
これにより、スタックに格納された第nネスティング深さの上位スタックプログラムオブジェクトのサブ要素であるスタックに格納されたポインタ要素の修飾指定が提供されるという、技術的利点が達成される。スタックに格納されたポインタ要素であって、第nネスティング深さの上位スタックプログラムオブジェクトのサブオブジェクトとして具現化されたポインタ要素の完全修飾指定の決定は、プログラム状態に格納されたポインタオブジェクトであって、第nネスティング深さの上位プログラムオブジェクトのサブオブジェクトとして具現化されたポインタオブジェクトの完全修飾指定の決定に関して上述した方法と同様に、実行される。
【0069】
一実施形態によれば、前記制御方法は、
第1データ型決定工程において、前記第1プログラムオブジェクトのデータ型を決定すること、ここで、前記第1プログラムオブジェクトの前記データ型は、前記第1プログラムオブジェクトのデータ構造を決定する;
および/または、
第1スタックデータ型決定工程において、前記第1スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記第1プログラムオブジェクトの前記データ型は、前記第1プログラムオブジェクトのデータ構造を決定する
をさらに含む。
【0070】
これにより、プログラム状態またはスタックに格納されたポインタオブジェクトの完全修飾指定に、ポインタオブジェクトのデータ型が含まれ得るという、技術的利点が達成される。その結果、ポインタオブジェクトの完全修飾指定によって提供される、ポインタオブジェクトについての情報内容が増加し得る。
【0071】
一実施形態によれば、前記ポインタ要素によって参照される前記ポインタオブジェクトの前記完全修飾指定は、
第1プログラムオブジェクトの前記指定、および/もしくは、複数の上位プログラムオブジェクトの前記指定を含み、
または、
第1スタックプログラムオブジェクトの前記指定、および/もしくは、複数の上位スタックプログラムオブジェクトの前記指定、および/もしくは、特定されたフレームの前記指定、および/もしくは、特定された前記関数の名前を含む。
【0072】
これは、参照されるポインタオブジェクトの包括的な完全修飾指定が提供され得るという、技術的利点を有する。包括的な当該完全修飾指定には、特に、複数の上位プログラムオブジェクトとのポインタオブジェクトの任意の関係に関する、参照されるポインタオブジェクトに関連する任意の情報が含まれる。当該任意の情報には、ネスティング深さおよび対応するデータ型、または、場合によっては、ポインタオブジェクトの関数の名前が含まれる。このように、ポインタ要素によって参照されるポインタオブジェクトについての包括的な情報が、ユーザに提供され得る。
【0073】
一実施形態によれば、上位プログラムオブジェクトまたは上位スタックプログラムオブジェクトは、複合型、フィールド型、または文字列型である。
【0074】
これにより、種々のデータ型について、ポインタ要素の完全修飾指定が提供され得るという、技術的利点が達成される。これにより、本発明による方法が、広範に適用できるようになる。
【0075】
一実施形態によれば、前記制御方法は、
選択工程において、前記プログラム状態の複数のプログラムオブジェクトを選択すること、ここで、選択されたプログラムオブジェクトは、前記ポインタ要素である;
前記完全指定決定工程において、選択された複数の前記プログラムオブジェクトの複数の完全修飾指定を決定すること;
前記表示工程において、前記制御装置に接続された前記表示要素上に、選択された複数の前記プログラムオブジェクトの複数の前記完全修飾指定を表示すること
をさらに含む。
【0076】
これにより、それについての完全修飾指定を決定して表示要素に表示するプログラム状態の複数のプログラムオブジェクトについての選択オプションが提供され得るという、技術的利点が達成される。このため、ユーザは、制御プログラムの実行中に関心のあるプログラム状態の複数のプログラムオブジェクトを選択し、上述された方法工程に従って選択された複数のプログラムオブジェクトについての完全修飾指定を決定し、制御プログラムの実行中にそれを表示させることができる。このように、ユーザは、複数のプログラムオブジェクトを個々に選択して、オートメーション処理または実行された制御プログラムの評価に関して関心のある複数のプログラムオブジェクトの完全修飾指定と対応する値とを表示させることができる。
【0077】
一実施形態によれば、前記表示工程において、前記完全修飾指定に加えて、それぞれの前記プログラムオブジェクトの値が表示され、
前記制御方法は、
調整工程において、プログラムオブジェクトの少なくとも1つの値を調整すること;および、
制御工程において、少なくとも1つの前記プログラムオブジェクトの少なくとも1つの変更された前記値を考慮に入れて、前記制御プログラムによるオートメーション処理を制御すること
をさらに含む。
【0078】
これにより、プログラムオブジェクトの表示された情報に基づいて、特に、プログラムオブジェクトの表示された完全修飾指定および対応する値に基づいて、オートメーションシステムのオートメーション処理の制御装置が適合および修正され得るという、技術的利点が達成される。ユーザは、プログラムオブジェクトの対応する値に関連するプログラムオブジェクトの表示された完全修飾指定によって、制御対象のオートメーション処理の状態を直ちに評価することが可能になり、場合によっては、プログラムオブジェクトの値またはオートメーション処理のパラメータの値が所望の値に対応していないと判断した場合に、適切な調整を行うことが可能になる。これにより、オートメーション処理を直ちに調整することができるようになる。その結果、オートメーション処理またはオートメーションシステムの制御が改善し、より正確になる。それぞれのプログラムオブジェクトの値とともに完全修飾指定を特定することによって、ユーザは、オートメーション処理の特定の適合または修正を達成するために、どのプログラムオブジェクトについて値の変更がなされる必要があるのかを直ちに判断し得る。
【0079】
一実施形態によれば、前記制御方法は、デバッグ処理において実行されてもよく、および/または、前記オートメーションシステムの制御処理において実行されてもよい。
【0080】
これにより、本発明による方法が広範に適用できるようになり得るという、技術的利点が達成される。任意のプログラムオブジェクトおよびそれぞれのプログラムオブジェクトの対応する値がオートメーション処理の制御中にユーザに表示され得るように、本発明による方法は、オートメーション処理を制御するための制御プログラムの実行中に行われてもよい。これによって、制御されたオートメーション処理のトラッキングが可能となり得る。これによって、オートメーション処理のモニタリングが可能となる。そして、場合によっては、オートメーション処理の欠陥のある過程(faulty course)が判定され、排除され得る。
【0081】
あるいは、本発明による方法は、制御プログラムの関数能力(functional capability)がチェックされるデバッグ処理の間に実行されてもよい。この目的のために、様々なプログラムオブジェクトの表示された値に基づいて実行された制御プログラムの関数能力を判定するために、ユーザは、制御プログラムの当該様々なプログラムオブジェクトを表示させてもよい。
【0082】
一実施形態によれば、前記表示要素は、ヒューマンマシンインターフェースとして具現化され、前記制御システムに組み込まれている。
【0083】
これにより、制御プログラムのプログラム状態のプログラムオブジェクトの修飾指定を可能な限り快適に表現することができるという、技術的利点が達成される。特に制御プログラムによるオートメーション処理の制御中に、ユーザは、関連する値を有する対応するプログラムオブジェクトを、オートメーションシステムの制御装置に直接、表示させ得る。
【0084】
本発明の第2態様によれば、制御装置と、前記制御装置に接続された表示要素と、を含むオートメーションシステムが提供される。前記制御装置は、本発明に係る方法を実行するように具現化されている。
【0085】
これにより、上述した複数の技術的利点を有する本発明による方法を実行するように構成されたオートメーションシステムが提供されるという、技術的利点が達成される。
【0086】
本発明は、添付の図面を参照しつつ、より詳細に説明される。当該添付の図面は、以下の事柄を示す:
図1は、一実施形態による、オートメーションシステムの概略図である;
図2は、一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法のフローチャートである;
図3は、さらなる一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法のさらなるフローチャートである;
図4は、当該方法の
図2における一実施形態による、ポインタオブジェクトの決定の概略図である;
図5は、さらなる一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法のさらなるフローチャートである;
図6は、さらなる一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法のさらなるフローチャートである;
図7は、当該方法の
図6における一実施形態による、ポインタオブジェクトの決定の概略図である;
図8は、さらなる一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法のさらなるフローチャートである。
【0087】
図1は、一実施形態による、オートメーションシステム200の概略図を示す。
【0088】
図1には、バスシステム205を介して複数のオートメーションデバイス203に接続された制御装置201を有するオートメーションシステム200が示されている。制御装置201は、メモリSPを含む。当該メモリSPは、第1メモリ領域SP1および第2メモリ領域SP2を含む。第1メモリ領域SP1には、制御装置の制御プログラムのプログラム状態PZが格納される。第2メモリ領域SP2には、スタックSTが格納される。
図1に示す実施形態において、オートメーションシステム200は、制御装置201に接続された表示要素207をさらに含む。
【0089】
描写されたオートメーションシステム200は、任意のオートメーションシステムであってもよい。オートメーションデバイス203は、オートメーション処理を実行するために使用される、任意のセンサおよびアクチュエータであってもよい。
【0090】
特に、オートメーション処理は、制御装置201によって制御プログラムを周期的に実行することにより、制御されてもよい。
【0091】
図1に示すオートメーションシステム200は、単なる例示であり、本発明を限定することを意図するものではない。
図1に示すオートメーションシステム200の実施形態に関して、様々な変更が行われてもよい。その全てが、本発明の保護範囲に含まれる。
【0092】
図2は、一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステム200の制御方法100のフローチャートを示す。
【0093】
図4を参照しつつ、
図2に示す方法100の実施形態を説明する。
【0094】
図2に示す方法100の実施形態は、
図1に示す実施形態によるオートメーションシステム200に適用することができる。
【0095】
特に、方法100は、制御プログラムがメモリSPに格納された制御装置201を含む、オートメーションシステム200に適用可能である。前記制御プログラムのプログラム状態PZは、前記制御装置201の第1メモリ領域SP1に格納される。前記プログラム状態PZは、前記制御プログラムの複数のプログラムオブジェクトを含む。複数の前記プログラムオブジェクトPOは、前記プログラム状態PZの所定の配置構造において、互いに対して配置される。各プログラムオブジェクトPOには、前記配置構造を介して、メモリポジションPおよびメモリサイズSGが割り当てられる。プログラムオブジェクトPOのメモリポジションPによって、プログラムオブジェクトPOが前記プログラム状態PZの第1メモリロケーションからメモリロケーションの数だけ離隔してメモリ領域に格納される、当該メモリロケーションの数が定められる。プログラムオブジェクトPOのメモリサイズSGによって、メモリオブジェクトがメモリ領域内において占めるメモリロケーションの数が定められ、前記プログラム状態PZは、少なくとも1つのポインタ要素を含み、ポインタオブジェクトZOは、前記ポインタ要素によって参照され、前記ポインタオブジェクトZOは、前記制御プログラムのプログラムオブジェクトPOであり、前記制御プログラムのスタックは、前記制御装置の第2メモリ領域SP2内において設定され、複数のプログラムオブジェクトPOは、前記制御プログラムの実行時間中に前記スタックに格納可能である。
【0096】
方法100を実行するために、実行工程101において、まず、制御プログラムが、オートメーションシステム200の制御装置201上で実行される。実行工程101において、制御プログラムは、オートメーションシステム200のオートメーション処理を制御するために実行されてもよい。この文脈において、制御処理は、オートメーションデバイス203を制御プログラムに従って制御することによって、制御プログラムに基づいて実行される。あるいは、実行工程101において、制御プログラムは、制御プログラムの機能性(functionality)をトレースまたはチェックするデバッグ処理を行うために実行されてもよい。
【0097】
制御プログラムを実行することによって、当該制御プログラムの個々のプログラムオブジェクトに、値が割り当てられる。これらの値は、プログラム状態に格納されており、制御プログラムの実行状態またはオートメーションシステム200の制御されたオートメーション処理の状態を反映している。個々のプログラムオブジェクトの値は、オートメーションシステム200のセンサ要素の測定値に基づくものであってもよい。
【0098】
オートメーション処理を制御するために、まず、オートメーションシステム200のセンサによって、測定値が記録される。これらの測定値に基づいて、対応する制御値が、制御プログラムを実行することによって、決定される。これらの制御値は、オートメーションシステム200における対応するアクチュエータを制御して、オートメーション処理を制御するために用いられる。決定された制御値は、制御プログラムの対応するプログラムオブジェクトの値として、プログラム状態に格納されてもよい。さらに、センサ要素の測定値は、対応するプログラムオブジェクトの値として、プログラム状態に格納されてもよい。加えて、制御プログラムの実行の中間結果に基づく値であって、制御プログラムをさらに実行するために必要な値が、対応するプログラムオブジェクトの対応する値として、プログラム状態に格納されてもよい。
【0099】
ポインタアドレス決定工程103において、ポインタ要素のポインタアドレスZAが決定される。ポインタアドレスZAは、制御装置201のメモリSP内における、ポインタ要素によって参照されるメモリアドレスに対応する。前記ポインタ要素は、制御プログラムのプログラムオブジェクトであってもよく、制御プログラムのプログラム状態PZに格納されていてもよい。ポインタアドレスZAを決定するために、これがポインタ要素の値として読み出されてもよい。
【0100】
チェック工程105において、ポインタアドレスZAがプログラム状態PZの第1メモリ領域SP1内に配置されているか否かについて、チェックが行われる。どのプログラムオブジェクトがポインタ要素によって参照されるのかに応じて、ポインタアドレスがメモリSPの異なる領域内に配置されていてもよい。メモリSPを、第1メモリ領域と第2メモリ領域とに分割することが知られている。その結果、2つのメモリ領域のうちの1つのメモリ領域に、ポインタアドレスを割り当てることが可能となる。
【0101】
第1アドレスオフセット決定工程107において、ポインタアドレスZAがプログラム状態PZの第1メモリ領域SP1内に位置する場合に、第1アドレスオフセットAO1が決定される。ここで、第1アドレスオフセットAO1は、ポインタアドレスZAがプログラム状態PZの第1メモリアドレスSPZからメモリロケーションの数だけ離隔した、当該メモリロケーションの数を表す。
【0102】
ポインタアドレスZAが第1メモリ領域SP1内に配置されているという事実は、プログラム状態PZ内のプログラムオブジェクトがポインタ要素によって参照されていることを意味する。他方、ポインタアドレスZAが第2メモリ領域内に配置されていることは、スタック内のプログラムオブジェクトPOがポインタ要素によって参照されていることを意味する。
【0103】
したがって、第1アドレスオフセットAO1は、ポインタ要素のポインタアドレスZAと、メモリSPの第1メモリ領域SP1内におけるプログラム状態PZの第1メモリアドレスSPZとの間の差とみなされてもよい。ポインタアドレスZA(メモリSP内の絶対メモリアドレスである)は、第1アドレスオフセットAO1を介して、プログラム状態PZによって占められる第1メモリ領域SP1内の相対メモリアドレス(プログラム状態PZの第1メモリアドレスSPZに対してのアドレシングを表す)として、表されてもよい。当該相対アドレスは、プログラム状態PZの第1メモリアドレスSPZからの隔たりによって、定められてもよい。
【0104】
第1プログラムオブジェクト特定工程109において、プログラム状態PZの第1メモリアドレスSPZから、第1アドレスオフセットAO1によって定められるメモリロケーションの数だけ離隔したプログラム状態PZのプログラムオブジェクトPOが特定される。さらに、ポインタアドレスZAもまた、プログラム状態PZの第1メモリアドレスSPZから第1アドレスオフセットAO1だけ離隔しているため、特定されたプログラムオブジェクトPOは、プログラム状態PZの第1メモリ領域SP1内においてポインタ要素のポインタアドレスZAと同一のメモリアドレスを有する第1プログラムオブジェクトPO1として特定される。
【0105】
プログラム状態PZの配置構造を介して、プログラム状態PZの各プログラムオブジェクトPOには、メモリポジションPおよびメモリサイズSGが割り当てられる。メモリサイズSGによって、それぞれのプログラムオブジェクトPOがそれぞれのメモリ領域内において占めるメモリロケーションの数が定められる。プログラム状態PZの第1メモリ領域SP1に連続して格納されたプログラムオブジェクトPOの各々について、プログラム状態PZの第1メモリアドレスSPZに対する隔たりが、個々のプログラムオブジェクトPOのそれぞれのメモリポジションPおよびメモリサイズSGに基づいて、決定されてもよい。この隔たりは、各々の場合において、それぞれのプログラムオブジェクトの第1メモリアドレスがメモリSP内においてプログラム状態の第1メモリアドレスSPZからメモリロケーションの数だけ離隔した当該メモリロケーションの数を表す。プログラム状態PZの第1メモリアドレスSPZからのプログラムオブジェクトPOの隔たりが第1アドレスオフセットAO1に対応する当該プログラムオブジェクトPOが、第1プログラムオブジェクトPO1として特定される。プログラム状態PZの第1メモリロケーションSPZに対する第1プログラムオブジェクトPO1の隔たりが第1アドレスオフセットAO1に対応するため、第1プログラムオブジェクトPO1は、ポインタアドレスZAに対応するメモリアドレスに格納されている。したがって、特定された第1プログラムオブジェクトPOは、ポインタ要素によって参照されている。
【0106】
ポインタオブジェクト特定工程111において、特定された第1プログラムオブジェクトPO1が、ポインタ要素によって参照されるポインタオブジェクトZOと特定される。これにより、プログラム状態PZのプログラムオブジェクトPOが、ポインタ要素のポインタアドレスZAに、一意に割り当てられる。
【0107】
続いて、完全指定決定工程113において、第1プログラムオブジェクトPO1によって表されたポインタオブジェクトZOに、完全修飾指定が割り当てられる。ここで、ポインタオブジェクトZOの完全修飾指定は、少なくとも、プログラム状態PZの特定された第1プログラムオブジェクトPO1の名前または指定によって表される。特定された第1プログラムオブジェクトPO1の名前は、第1プログラムオブジェクトPO1によって表される変数の制御プログラムにおいて定められた名前であってもよく、または、表示されるデータオブジェクトの制御プログラムにおいて定められた名前であってもよい。
【0108】
続いて、表示工程115において、ポインタオブジェクトZOの完全修飾指定が、オートメーションシステム200の表示要素上に表示されてもよい。この目的のために、表示要素207が制御装置201に接続されている。表示要素207は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、またはモバイルデバイスであってもよい。あるいは、表示要素207は、ヒューマンマシンインターフェースとして、制御装置201に組み込まれていてもよい。
【0109】
当該表示工程において、特定のポインタオブジェクトZOに加えて、複数のプログラムオブジェクトPOの完全修飾指定が表示されてもよい。それぞれのプログラムオブジェクトPOは、ポインタ要素によって参照されるポインタオブジェクトZOである必要はなく、制御プログラムの任意の変数または制御対象のオートメーション処理のパラメータであってもよい。
【0110】
プログラム状態PZの複数のプログラムオブジェクトPOの完全修飾指定を表示することによって、プログラム状態PZの複数のプログラムオブジェクトPOの値に関する直接的に読み取り可能な情報が、ユーザに提供されてもよい。表示要素207は、個々のプログラムオブジェクトPOの完全修飾指定に加えて、表示された各プログラムオブジェクトPOにつき、制御プログラムの実行中に有するプログラムオブジェクトのそれぞれの値を表示してもよい。これにより、制御プログラムの実行に基づくオートメーションシステム200のオートメーション処理の制御中に、プログラムオブジェクトの値に基づいて、オートメーション処理のシーケンスを評価することができるようになる。
【0111】
したがって、表示要素207上のプログラムオブジェクトPOの表示された完全修飾指定に基づいて、制御プログラムと制御プログラムによって制御されるオートメーションシステム200のオートメーション処理との評価が行われてもよい。さらに、表示された完全修飾指定に従って、制御プログラムの修正が行われてもよく、修正された制御プログラムに基づいて、オートメーションシステム200の制御が行われてもよい。
【0112】
あるいは、プログラムオブジェクトの表示された値と完全修飾指定とに基づいて、オートメーション処理が、対応して変更された制御パラメータの入力を介して、具現化または修正されてもよい。この文脈において、制御パラメータは、オートメーション処理がパラメータ値に基づいて制御され得る当該パラメータ値である。
【0113】
図3は、別の一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステム200の制御方法100の別のフローチャートを示す。
【0114】
図3における実施形態は、
図2における実施形態に基づいており、
図2に示す全方法工程を含んでいる。
図3における実施形態においてこれらが変更されないままである限り、新たな説明は省略される。
【0115】
図2における実施形態とは異なり、
図3における実施形態に係る方法100は、調整工程189と、制御工程191と、を含む。
【0116】
調整工程において、表示工程115において表示された制御プログラムのプログラムオブジェクトの完全修飾指定に基づくプログラムオブジェクトの値の調整が行われる。この目的のために、表示工程115において、プログラムオブジェクトの完全修飾指定に加えて、それぞれのプログラムオブジェクトPOの値が表示される。プログラムオブジェクトの完全修飾指定とプログラムオブジェクトの値とに基づいて、制御プログラムによって制御されるオートメーションシステム200のオートメーション処理の評価が実行され得る。この評価に基づいて、プログラムオブジェクトPOの値が、オートメーション処理を再調整するために、または、変更後の状態にそれを適合させるために、具現化または変更されてもよい。ここで、プログラムオブジェクトPOの値の適合は、それぞれのプログラムオブジェクトPOの型と、制御対象のそれぞれのオートメーション処理とに依存し得る。表示工程115において完全修飾指定が表示され、調整工程189において値が具現化されるプログラムオブジェクトPOは、制御プログラムの任意のプログラムオブジェクトPOであってもよく、ポインタ要素によって参照されるポインタオブジェクトZOに限られるものではない。
【0117】
次に、制御工程191において、プログラムオブジェクトPOの具現化された値または修正された値に基づいて、オートメーション処理が制御される。この場合において、制御することには、制御プログラムに基づいて、オートメーションシステム200の対応するアクチュエータを、対応する制御命令を介して作動させることが含まれる。また、制御には、オートメーションシステム200のセンサの測定値を記録すること、制御プログラムの実行によりセンサの値を制御装置の入力値として処理すること、および、アクチュエータに対する対応する制御命令を制御装置の出力値の形態において生成することが含まれる。
【0118】
図2に示す実施形態とは異なり、
図3に示す実施形態に係る方法100は、第1データ型決定工程183をさらに含む。第1データ型決定工程183は、第1プログラムオブジェクト特定工程109の後に実行される。第1データ型決定工程183において、特定された第1プログラムオブジェクトPO1のデータ型が決定される。その後、完全指定決定工程113において、第1プログラムオブジェクトPO1のデータ型が、ポインタオブジェクトZOの完全修飾指定に、プログラムオブジェクトの名前または指定以外の追加情報として含まれてもよい。
【0119】
第1プログラムオブジェクトPO1がプログラム状態PZ内に位置するのか、またはスタック内に位置するのかにかかわらず、第1プログラムオブジェクトPO1は、整数型、浮動小数点型、ブーリアン型、または他の任意のスカラー型等の、任意のデータ型であってもよい。あるいは、第1プログラムオブジェクトは、複合型、フィールド型、または文字列型であってもよい。あるいは、第1プログラムオブジェクトは、ポインタ型であってもよい。
【0120】
さらに、
図3における実施形態には、チェック工程105において、ポインタ要素のポインタアドレスZAが、スタックSTの第2メモリ領域SP2に格納されていると判定される場合が含まれている。
【0121】
この場合には、スタック構造決定工程145において、スタックの構造が決定される。スタックの構造は、プログラム状態PZの配置構造と同様に、個々のスタックプログラムオブジェクトの配置を表す。スタックの構造によって、スタックSTの各スタックプログラムオブジェクトに、それぞれのスタックプログラムオブジェクトがスタックの構造において占めるメモリポジションおよびメモリサイズが割り当てられる。
【0122】
第1スタックアドレスオフセット決定工程147において、第1スタックアドレスオフセットが決定される。当該第1スタックアドレスオフセットは、第2メモリ領域SP2においてポインタアドレスZAがスタックの第1メモリアドレスからメモリロケーションの数だけ離隔した、当該メモリロケーションの数を定める。この工程は、第1アドレスオフセット決定工程107と同様である。
【0123】
続いて、第1スタックプログラムオブジェクト特定工程149において、スタックの構造と第1スタックアドレスオフセットとを考慮に入れて、スタックの第1メモリアドレスから第1スタックアドレスオフセットにおいて定められたメモリロケーションの数だけ離隔した第1スタックプログラムオブジェクトが特定される。
【0124】
上述した実施形態と同様に、スタックに格納された各スタックプログラムオブジェクトについて、スタックの第1メモリアドレスに対する隔たりが、スタックの構造において決定されたそれぞれのメモリポジションおよびメモリサイズに従って、決定される。スタックの第1メモリアドレスからのスタックプログラムオブジェクトの隔たりが第1スタックアドレスオフセットにおいて決定されたメモリロケーションの数に対応する当該スタックプログラムオブジェクトが、ポインタオブジェクトのポインタアドレスZAに対応するスタックSTの第2メモリ領域SP2におけるメモリアドレスを有する第1スタックプログラムオブジェクトとして、特定される。
【0125】
第1スタックデータ型決定工程185において、特定された第1スタックプログラムオブジェクトのデータ型が決定される。
【0126】
ポインタオブジェクト特定工程111において、特定された第1スタックプログラムオブジェクトが、ポインタ要素のポインタオブジェクトZOと特定される。
【0127】
第1スタックアドレスオフセット決定工程147における、第1スタックアドレスオフセットの決定、および、第1スタックプログラムオブジェクト特定工程149における、第1スタックプログラムオブジェクトの決定は、それぞれ、第1アドレスオフセットの決定に関する、対応する方法工程、および、プログラム状態PZの第1プログラムオブジェクトの特定に関する、対応する方法工程と同様に、実行される。
【0128】
図4は、方法100の
図2における一実施形態による、ポインタオブジェクトZOの決定の概略図を示す。
【0129】
図4は、制御装置201のメモリSPの第1メモリ領域SP1内におけるプログラム状態PZの複数のプログラムオブジェクトPOの配置を示す。
図4は、第1プログラムオブジェクトPO1を、ポインタ要素によって参照されるポインタオブジェクトZOとして特定することを示すための図である。ポインタオブジェクトZOは、プログラム状態PZの第1メモリ領域SP1において、ポインタアドレスZAに格納されている。
【0130】
図4は、メモリSP内の第1メモリ領域SP1を示す。第1メモリ領域SP1において、プログラム状態PZは、第1メモリ領域SP1内の連続領域として示されている。
図4に示す実施形態において、プログラム状態PZは、第1プログラムオブジェクトPO1と、さらなるプログラムオブジェクトPOと、を含む。
図4に示すサイズ比は、例示を目的として歪められている。さらに、プログラム状態PZが含むプログラムオブジェクトPOは、純粋に例示的な数で示されている。両方とも、例示のみを目的とするものである。
【0131】
プログラムオブジェクトPOは、プログラム状態PZの配置構造内において、第1メモリポジションP1に配置されている。一方、第1プログラムオブジェクトPO1は、第2メモリポジションP2に配置されている。両方のプログラムオブジェクトは、メモリサイズSGを有する。メモリサイズSGは、それぞれのプログラムオブジェクトPO、PO1がプログラム状態PZの第1メモリ領域SP1内に占める、メモリロケーションの数を表す。あるいは、プログラムオブジェクトPOのメモリサイズと第1プログラムオブジェクトPO1のメモリサイズとは、異なるものであってもよい。
【0132】
図4における実施形態において、第1プログラムオブジェクトPO1は、ポインタオブジェクトZOに対応する。第1プログラムオブジェクトPO1は、プログラム状態PZの第1メモリ領域SP1において、ポインタオブジェクトZOのポインタアドレスZAに対応するメモリアドレスに格納されている。ポインタアドレスZAは、メモリSPのアドレス空間内における絶対メモリアドレスに対応する。
【0133】
さらに、
図4には、第1アドレスオフセットAO1が示されている。第1アドレスオフセットAO1は、ポインタアドレスZAとプログラム状態PZの第1メモリアドレスSPZとの間の隔たりを表す。したがって、第1アドレスオフセットAO1は、プログラム状態PZの第1メモリアドレスSPZに対してポインタアドレスZAが有する隔たりを表す。
【0134】
したがって、メモリアドレスZA、具体的には、第1プログラムオブジェクトPO1のメモリアドレスは、プログラム状態PZの第1メモリアドレスSPZと第1アドレスオフセットAO1との和として表され得る。
【0135】
(i)第1アドレスオフセット決定工程107において、プログラム状態PZの第1メモリアドレスSPZに対するポインタアドレスZAの差として、第1アドレスオフセットAO1を決定し、(ii)プログラム状態PZ内のPO1、PO2にメモリポジションを割り当てるプログラム状態PZの配置構造であって、プログラム状態PZの各プログラムオブジェクトにメモリサイズSGを割り当てるプログラム状態PZの配置構造を考慮に入れ、プログラム状態PZの個々のプログラムオブジェクトPO、PO1がプログラム状態PZの第1メモリ領域SP1内において占めるメモリロケーションを、プログラム状態PZの第1メモリアドレスSPZから数える。これにより、プログラム状態PZの第1メモリアドレスSPZから第1アドレスオフセットAO1だけ離隔したプログラムオブジェクトであって、ポインタオブジェクトZOのポインタアドレスZAに対応する、プログラム状態PZの第1メモリ領域SP1内におけるメモリアドレスを占めるプログラムオブジェクト(
図4における実施形態では、第1プログラムオブジェクトPO1)が特定され得る。これにより、ポインタオブジェクトZOを、プログラム状態PZの特定された第1プログラムオブジェクトPO1によって特定することができる。
【0136】
図4に示す手順は、ポインタオブジェクトZOのポインタアドレスZAがスタック内に位置する場合に関するスタックの対応するスタックプログラムオブジェクトの特定に対して、同様に適用され得る。
【0137】
図5は、別の一実施形態による、制御プログラムの複数のプログラムオブジェクトPOの視覚化を伴うオートメーションシステム200の制御方法100の別のフローチャートを示す。
【0138】
方法100の
図5における実施形態は、
図7と、
図7のために提供された説明とを参照して、説明される。
【0139】
図5に示す実施形態は、
図3における実施形態に基づいており、
図3に記載された全方法工程を含んでいる。
図5における実施形態においてこれらが変更されないままである限り、新たな説明は省略される。
【0140】
図5における実施形態には、第1プログラムオブジェクトPO1が上位第2プログラムオブジェクトPO2の下位部分的プログラムオブジェクトである場合が記載されている。上位第2プログラムオブジェクトPO2のデータ型は、例えば、複合型、フィールド型、または文字列型であってもよく、これに応じて、下位第1プログラムオブジェクトPO1は、例えば、フィールド型の要素、複合型のコンポーネント、または文字列型の要素であってもよい。
【0141】
このため、第1プログラムオブジェクトPO1を特定するために、第1プログラムオブジェクト特定工程109は、第2プログラムオブジェクト特定工程117を含む。第2プログラムオブジェクト特定工程117において、プログラム状態PZの配置構造と第1アドレスオフセットAO1とを考慮に入れて、プログラム状態PZの第1メモリ領域SP1内においてポインタアドレスZAを含むメモリ領域を占める上位第2プログラムオブジェクトPO2が特定される。ここで、上位第2プログラムオブジェクトPO2は、プログラム状態PZの配置構造に従って、プログラム状態PZの第1メモリアドレスSPZから第1アドレスオフセットAO1だけ離隔したメモリロケーションが配置されたメモリ領域を占める、プログラム状態PZのプログラムオブジェクトPOを特定することによって、特定される。
【0142】
上位第2プログラムオブジェクトPO2の特定は、上述した第1プログラムオブジェクトPO1の特定と同様に、プログラム状態PZの個々のプログラムオブジェクトPOの、プログラム状態PZの第1メモリアドレスSPZからの隔たりを決定することによって行われる。この文脈において、プログラムオブジェクトPOの隔たりは、それぞれのプログラムオブジェクトの第1相対メモリアドレスがメモリSP内においてプログラム状態PZの第1メモリアドレスSPZからメモリロケーションの数だけ離隔して配置される、当該メモリロケーションの数である。プログラム状態PZの配置構造に従って、プログラム状態PZの第1メモリアドレスSPZから、決定された第1アドレスオフセットAO1だけ離隔したメモリロケーションを含む領域を、プログラム状態PZ内において占めるプログラムオブジェクトPOが、上位第2プログラムオブジェクトPO2として特定される。
【0143】
続いて、第2アドレスオフセット決定工程119において、第2アドレスオフセットAO2が決定される。第2アドレスオフセットAO2は、第1アドレスオフセットと、第2プログラムオブジェクトPO2の第1相対メモリアドレスSPO2との間の差である。また、第2アドレスオフセットAO2は、上位第2プログラムオブジェクトPO2の第1相対メモリアドレスSPO2からポインタアドレスZAがメモリロケーションの数だけ離隔した、当該メモリロケーションの数を定める。
【0144】
第2データ型決定工程121において、上位第2プログラムオブジェクトPO2のデータ型が決定される。上位プログラムオブジェクトPO2のデータ型は、上位第2プログラムオブジェクトPO2の下位部分的プログラムオブジェクトの数を含む。また、当該データ型は、個々の下位部分的プログラムオブジェクトが構造において上位第2プログラムオブジェクトPO2内に配置される当該構造を表す。この文脈において、各下位部分的プログラムオブジェクトには、上位第2プログラムオブジェクトPO2が占めるメモリ領域内のメモリポジションおよびメモリサイズが割り当てられる。各場合において、第2プログラムオブジェクトPO2の第1メモリロケーションに対するメモリポジションが、決定される。
【0145】
続いて、第2アドレスオフセットAO2と上位第2プログラムオブジェクトPO2の構造とを考慮に入れて、上位第2プログラムオブジェクトPO2の第1相対メモリアドレスSPO2から第2アドレスオフセットAO2だけ離隔した上位第2プログラムオブジェクトPO2の下位部分的プログラムオブジェクトが、決定される。特定されたこの下位部分的プログラムオブジェクトは、第1メモリ領域SP1のプログラム状態PZ内において、ポインタオブジェクトZOのポインタアドレスZAに対応するメモリアドレスに位置する第1プログラムオブジェクトPO1として、特定される。
【0146】
上位第2プログラムオブジェクトPO2の第1メモリロケーションから複数の下位部分的プログラムオブジェクトが離隔する隔たりが、上位第2プログラムオブジェクトPO2の全ての下位部分的プログラムオブジェクトについて、それぞれのメモリポジションおよびメモリサイズに従って決定される、という点において、第1プログラムオブジェクトPO1は、上位第2プログラムオブジェクトPO2の特定と類似する方法、または、上位第2プログラムオブジェクトPO2の特定と同等の方法によって、特定される。下位部分的プログラムオブジェクトの隔たりが第2アドレスオフセットAO2に対応する当該下位部分的プログラムオブジェクトが、そのメモリアドレスがプログラム状態PZの第1メモリアドレスSPZから第1アドレスオフセットAO1だけ離隔しているためポインタアドレスZAに対応する第1プログラムオブジェクトPO1として、特定される。すでに上述したように、隔たりは、メモリロケーションの数であり、それぞれのプログラムオブジェクトPOの第1相対メモリアドレスは、メモリSPにおけるそれぞれの直接上位のプログラムオブジェクトPOの第1相対メモリアドレスに対して、当該メモリロケーションの数だけ離れて配置される。
【0147】
この文脈において、第1アドレスオフセットAO1は、第2アドレスオフセットAO2とプログラム状態PZ内における上位第2プログラムオブジェクトPO2の第1相対メモリアドレスSPO2との和として表され得る。
【0148】
完全指定決定工程113における、特定(識別)された(identified)ポインタオブジェクトの完全修飾指定において、特定された第1プログラムオブジェクトPO1の指定と、特定された上位第2プログラムオブジェクトPO2の指定との両方が特定され(specified)てもよい。このため、フィールド型の要素、複合型のコンポーネントまたは文字列型の要素がポインタ要素によって参照されている場合、完全修飾指定は、参照された要素またはコンポーネントと、対応するフィールド型、複合型または文字列型とを、特定してもよい。
【0149】
また、
図5には、ポインタアドレスZAがスタックSTの第2メモリ領域SP2に位置し、かつ、上位スタックプログラムオブジェクトの下位スタック部分的オブジェクトがポインタ要素によって参照されている場合についても、記載されている。上述した事柄と同様に、ここでは、スタックに格納された複合型、フィールド型または文字列型の要素またはコンポーネントがポインタ要素によって参照されている場合について説明する。
【0150】
この目的のために、第1スタックプログラムオブジェクト特定工程149は、フレーム特定工程151を含む。フレーム特定工程において、スタックSTの第2メモリ領域SP2内のメモリアドレスを占めるスタックのフレームが特定される。そのうちの1つは、スタックの第1メモリアドレスから、第1スタックアドレスオフセットだけ離隔している。この目的のために、メモリポジションおよびメモリサイズがスタックの各プログラムオブジェクトに割り当てられるスタックの構造に基づいて、ポインタアドレスZAを含むメモリ領域をスタックにおいて占めるフレームが決定されてもよい。
【0151】
スタックの複数のフレームは、通常、一続きに配置されている。したがって、フレームの内容は、それぞれの後続のフレームの構造を推測するために使用され得る。スタックの第1フレームの構造は、通常、既知である。特に、フレームの構造は、フレームの対応する関数によって決定されてもよい。もし必要ならば、フレームの構造を決定するために、関数の実行位置も考慮に入れる必要があり得る。
【0152】
関数特定工程153では、特定されたフレームの関連する関数がさらに特定される。
【0153】
第2スタックプログラムオブジェクト特定工程155において、以前に決定されたフレームにおいてフレームの第1メモリアドレスから離隔したメモリアドレスを占める上位第2スタックプログラムオブジェクトが特定される。
【0154】
第2スタックプログラムオブジェクト特定工程155における手順は、第2プログラムオブジェクト特定工程117における手順と同様である。
【0155】
第2スタックアドレスオフセット決定工程157において、第2スタックアドレスオフセットが、第1スタックアドレスオフセットと、第2スタックプログラムオブジェクトPO2の第1相対メモリアドレスとの間の差に基づいて決定される。当該第2スタックアドレスオフセットは、上位第2スタックプログラムオブジェクトの第1相対メモリアドレスからポインタアドレスZAがメモリロケーションの数だけ離隔した、当該メモリロケーションの数を定める。
【0156】
第2スタックデータ型決定工程159において、上位第2スタックプログラムオブジェクトのデータ型が決定される。
【0157】
第2スタックアドレスオフセットと、上位第2スタックプログラムオブジェクトの複数の下位スタック部分的プログラムオブジェクトの配置構造を定める、上位第2スタックプログラムオブジェクトのデータ型とに基づいて、第1スタックプログラムオブジェクトが、上位第2スタックプログラムオブジェクトの第1相対メモリアドレスから第2スタックアドレスオフセットだけ離隔した上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトとして、特定される。
【0158】
上位第2スタックプログラムオブジェクトの特定、第2スタックアドレスオフセットの決定、および、第1スタックプログラムオブジェクトの特定は、プログラム状態の対応するアドレスオフセットの決定、および、プログラム状態の対応するプログラムオブジェクトの特定に関する、上述した手順と同様に、実行される。
【0159】
上述した事柄と同様に、ポインタオブジェクトZOの完全修飾指定には、参照されたコンポーネントまたは要素の指定と、上位フィールド型、複合型または文字列型の指定との両方が含まれてもよい。さらに、ポインタオブジェクトZOの完全修飾指定には、ポインタオブジェクトZOを含むフレームの指定、または、フレームに属する関数の指定を含まれてもよい。
【0160】
図6は、さらなる一実施形態による、制御プログラムの複数のプログラムオブジェクトPOの視覚化を伴うオートメーションシステム200の制御方法100のさらなるフローチャートを示す。
【0161】
方法100の
図6における実施形態は、
図7と、
図7のために提供された説明とを参照して、説明される。
【0162】
図6における実施形態は、
図5における実施形態に基づいており、
図5に記載された全方法工程を含んでいる。
図6における実施形態においてこれらが変更されないままである限り、新たな説明は省略される。
【0163】
図6における実施形態には、ポインタ要素によって参照されるポインタオブジェクトが二重ネスティング深さにおける上位プログラムオブジェクトの下位部分的プログラムオブジェクトである場合が記載されている。
図6には、例えば、フィールド型のオブジェクトの要素がポインタ要素によって参照される場合であって、当該フィールド型オブジェクトがフィールド型のさらなるオブジェクトの要素である場合が記載されている。同様に、ポインタオブジェクトは、そのオブジェクトが上位の複合型のコンポーネントである、複合型のコンポーネントであってもよい。同様に、フィールド型、複合型およびさらなる型は、やはりそれらを組み合わせて、互いに任意にネスティングされてもよい。ここで、ネスティング深さは、任意である。
【0164】
この目的のために、
図6に示す実施形態において、第2プログラムオブジェクト特定工程117は、第3プログラムオブジェクト特定工程123を含む。第3プログラムオブジェクト特定工程123において、上位第3プログラムオブジェクトPO3が、ポインタアドレスZAが位置するメモリ領域を占めるプログラム状態PZのプログラムオブジェクトPOとして特定される。上位第3プログラムオブジェクトPO3は、複数の下位部分的プログラムオブジェクトを含む。複数の下位部分的プログラムオブジェクトのうちの1つの下位部分的プログラムオブジェクトは、上位第2プログラムオブジェクトである。当該上位第2プログラムオブジェクトは、第1プログラムオブジェクトPO1を含む。
【0165】
上位第3プログラムオブジェクトPO3は、
図5に関して説明した上位第2プログラムオブジェクトPO2と同様に特定される。
【0166】
第3アドレスオフセット決定工程125において、第3アドレスオフセットAO3が決定される。第3アドレスオフセットAO3は、ポインタアドレスZA、すなわち、プログラム状態PZの第1メモリアドレスSPZから第1アドレスオフセットAO1だけ離隔したアドレスと、上位第3プログラムオブジェクトPO3の第1相対メモリアドレスSPO3との間の隔たりを表す。この決定は、
図5に関して説明した第2アドレスオフセットAO2の決定に類似している。
【0167】
ここで、第3アドレスオフセットAO3は、ポインタアドレスZAが上位第2プログラムオブジェクトPO3の第1相対メモリアドレスSPO3からメモリロケーションの数だけ離隔した、当該メモリロケーションの数を表す。
【0168】
このように、第3アドレスオフセットAO3は、第1アドレスオフセットAO1と、第3プログラムオブジェクトPO3の第1相対メモリアドレスSPO3との間の差から得られる。
【0169】
第3データ型決定工程127において、上位第3プログラムオブジェクトPO3のデータ型が決定される。
【0170】
上位第3プログラムオブジェクトPO3のデータ型および第3アドレスオフセットAO3に基づいて、第2プログラムオブジェクト特定工程117において、工程123、工程125、工程127が実行された後、ポインタアドレスZAを含む上位第2プログラムオブジェクトPO2が、上位第3プログラムオブジェクトPO3の下位プログラムサブオブジェクトとして特定される。上位第2プログラムオブジェクトPO2の特定は、第3プログラムオブジェクトPO3の第1メモリロケーションに対する、上位第3プログラムオブジェクトPO3の複数の下位部分的プログラムオブジェクトの隔たりを決定し、決定された隔たりとそれぞれのメモリサイズSGとに従って、上位第3プログラムオブジェクトPO3のメモリ領域内の領域を占める上位第3プログラムオブジェクトPO3の下位部分的プログラムオブジェクトであって、第3プログラムオブジェクトPO3の第1相対メモリアドレスSPO3から第3アドレスオフセットAO3だけ離隔したメモリアドレスを含む上位第3プログラムオブジェクトPO3の下位部分的プログラムオブジェクトを決定する点において、
図5に関して説明した第1プログラムオブジェクト特定工程109におけるものと類似している。
【0171】
このように、上位第2プログラムオブジェクトPO2の特定は、第3アドレスオフセットAO3と、第3プログラムオブジェクトPO3の複数の下位部分的プログラムオブジェクトの配置が第3プログラムオブジェクトPO3の特定の型の構造によって定められる当該構造の知識と、に基づく。これにより、第3プログラムオブジェクトPO3の当該下位部分的プログラムオブジェクトが、第2プログラムオブジェクトPO2のメモリ領域が第3プログラムオブジェクトPO3の第1相対メモリロケーションから第3アドレスオフセットAO3だけ離隔したメモリロケーションを含む当該第2プログラムオブジェクトPO2として、決定される。
【0172】
同様に、上位第3スタックプログラムオブジェクトを決定するために、第2スタックプログラム特定工程155において、第3スタックプログラム特定工程161が実行される。続いて、第3スタックアドレスオフセット決定工程163において、第3スタックアドレスオフセットが、ポインタアドレスZAと上位第3スタックプログラムオブジェクトの第1相対メモリアドレスとの間の隔たりを決定することによって、決定される。続いて、第3スタックデータ型決定工程165において、上位第3スタックプログラムオブジェクトのデータ型が決定される。
【0173】
これに基づいて、第2スタックプログラムオブジェクト特定工程155において、上位第2スタックプログラムオブジェクトが特定される。
【0174】
上位第3スタックプログラムオブジェクトの特定、第3スタックアドレスオフセットの決定、または、上位第3スタックプログラムオブジェクトのデータ型の決定は、上位第2スタックプログラムオブジェクトの特定、第2スタックアドレスオフセットの決定または、第2スタックプログラムオブジェクトのデータ型の決定と同様に、実行される。
【0175】
上述した第2プログラムオブジェクト特定工程117における上位第2プログラムオブジェクトPO2の特定と同様に、第2スタックプログラムオブジェクト特定工程155において、第2スタックプログラムオブジェクトが、第3スタックアドレスオフセットと、上位第3スタックプログラムオブジェクトのデータ型とに基づいて、特定される。
【0176】
図5における実施形態とは異なり、
図6における実施形態に係る方法100には、選択工程187が含まれる。選択工程187において、完全修飾指定の決定および完全修飾指定の表示が本発明の方法に従って行われるプログラム状態PZの複数のプログラムオブジェクトまたはスタックの複数のスタックプログラムオブジェクトが、選択される。
【0177】
図7は、方法100の
図2における一実施形態による、ポインタオブジェクトZOの決定の概略図を示す。
【0178】
図7におけるプログラム状態PZのメモリ領域の概略図は、
図4における概略図に基づいている。
図7における概略図は、ポインタ要素によって参照されるポインタオブジェクトZOが二重ネスティング深さにおける上位プログラムオブジェクトの下位部分的プログラムオブジェクトである
図6に関して記載された場合について、記載されている。
【0179】
この目的のために、
図7において、プログラム状態PZが、メモリSPの第1メモリ領域SP1内に配置されている。
図7における実施形態では、これは、プログラムオブジェクトPOと、上位第3プログラムオブジェクトPO3として具現化された、さらなるプログラムオブジェクトPOと、を含む。上位第3プログラムオブジェクトPO3は、さらなる複数の下位部分的プログラムオブジェクトTPOを含む。上位第3プログラムオブジェクトPO3は、下位部分的プログラムオブジェクトを、上位第2プログラムオブジェクトPO2の形態においてさらに含む。上位第2プログラムオブジェクトPO2は、3つの下位部分的プログラムオブジェクトTPOを含む。当該3つの下位部分的プログラムオブジェクトTPOのうちの1つの下位部分的プログラムオブジェクトTPOが、第1プログラムオブジェクトPO1として特定される。
【0180】
図4と同様に、第1プログラムオブジェクトPO1が、ポインタオブジェクトZOとして特定される。第1プログラムオブジェクトPO1は、プログラム状態PZの第1メモリ領域SP1内において、ポインタアドレスZAに位置する。
【0181】
さらに、
図7には、第1アドレスオフセットAO1が示されている。第1アドレスオフセットAO1は、ポインタアドレスZAと、プログラム状態PZの第1メモリアドレスSPZとの間の隔たりを表す。さらに、第2アドレスオフセットAO2が示されている。第2アドレスオフセットAO2は、第1アドレスオフセットAO1と、第2プログラムオブジェクトPO2の第1相対メモリアドレスSPO2および第3プログラムオブジェクトPO3の第1相対メモリアドレスSPO3との間の差から得られる。第2アドレスオフセットAO2は、第2プログラムオブジェクトPO2の第1相対メモリアドレスSPO2と、プログラム状態PZの第1メモリアドレスSPZから第1アドレスオフセットAO1だけ離隔したメモリロケーションとの間の隔たりを表す。
【0182】
さらに、第3アドレスオフセットAO3が示されている。第3アドレスオフセットAO3は、第1アドレスオフセットAO1と、第3プログラムオブジェクトPO3の第1相対メモリアドレスSPO3との間の差から得られる。第3アドレスオフセットAO3は、第3プログラムオブジェクトPO3の第1相対メモリアドレスSPO3と、プログラム状態PZの第1メモリアドレスSPZから第1アドレスオフセットAO1だけ離隔したメモリロケーションとの間の隔たりを表す。
【0183】
プログラム状態PZのプログラムオブジェクトPOを、ポインタ要素によって参照されるポインタオブジェクトZOとして特定するために、まず、第1アドレスオフセットAO1が決定される。当該第1アドレスオフセットAO1は、ポインタアドレスZAの、プログラム状態PZの第1メモリアドレスSPZに対する隔たりを表す。続いて、第1アドレスオフセットAO1と、それ自体は上位プログラムオブジェクトの下位プログラムオブジェクトではないプログラム状態PZの各プログラムオブジェクトPOに対してメモリポジションPおよびメモリサイズSGを割り当てる、プログラム状態PZの配置構造と、に基づいて、プログラム状態PZの第1メモリ領域SP1において、プログラム状態PZの第1メモリアドレスSPZから第1アドレスオフセットAO1だけ離隔したメモリロケーションを含むメモリ領域を占める、プログラム状態PZのプログラムオブジェクトPOとして、上位第3プログラムオブジェクトPO3を特定する。
【0184】
上位第3プログラムオブジェクトPO3を特定した後、第3アドレスオフセットAO3(第3アドレスオフセットAO3は、第1アドレスオフセットAO1と、第3プログラムオブジェクトPO3の第1相対メモリアドレスSPO3との間の差から得られる)が決定され、ポインタアドレスZAが上位第3プログラムオブジェクトの第1相対メモリアドレスSPO3からメモリロケーションの数だけ離隔した当該メモリロケーションの数が定められる。さらに、上位第3プログラムオブジェクトのデータ型が決定される。当該データ型は、
図7における実施形態では、上位第3プログラムオブジェクトPO3が下位部分的プログラムオブジェクトを上位第2プログラムオブジェクトPO2の形態において含むことを示している。
【0185】
続いて、上位第2プログラムオブジェクトPO2が、プログラム状態PZのメモリ領域において、上位第3プログラムオブジェクトPO3の第1相対メモリロケーションSPO3から第3アドレスオフセットAO3だけ離隔したメモリロケーションを含むメモリ領域を占める、上位第3プログラムオブジェクトPO3の下位部分的プログラムオブジェクトとして、特定される。
【0186】
続いて、第2アドレスオフセットAO2が決定される。ここで、第2アドレスオフセットAO2は、第1アドレスオフセットAO1と、第3プログラムオブジェクトPO3の第1相対メモリアドレスSPO3および第2プログラムオブジェクトPO2の第1相対メモリアドレスSPO2の和との間の差から得られ、当該第2アドレスオフセットAO2は、ポインタアドレスZAが上位第2プログラムオブジェクトPO2の第1相対メモリアドレスSPO2からメモリロケーションの数だけ離隔した、当該メモリロケーションの数を表す。さらに、上位第2プログラムオブジェクトPO2のデータ型が決定される。当該データ型は、
図7における実施形態では、上位第2プログラムオブジェクトPO2が、3つの下位部分的プログラムオブジェクトTPOを含むことを示している。当該3つの下位部分的プログラムオブジェクトTPOは、上位第2プログラムオブジェクトPO2が占めるメモリ領域内において、第1メモリロケーションP1、第2メモリロケーションP2および第3メモリロケーションP3に配置されている。
図7では、上位第2プログラムオブジェクトPO2の複数の下位部分的プログラムオブジェクトのメモリポジションのみに、参照符号が与えられている。しかしながら、これに加えて、プログラム状態PZの他の全てのプログラムオブジェクトPO(上位第3プログラムオブジェクトPO3および上位第2プログラムオブジェクトPO2が含まれる)が、プログラム状態PZのメモリ領域内において、個々に定められたメモリポジションを有する。
【0187】
第2アドレスオフセットAO2と、上位第2プログラムオブジェクトPO2のデータ型のデータ構造とに基づいて、上位第2プログラムオブジェクトPO2の第1相対メモリアドレスSPO2から第2アドレスオフセットAO2だけ離隔した上位第2プログラムオブジェクトPO2の下位部分的プログラムオブジェクトTPOとして、第1プログラムオブジェクトPO1が特定される。さらに、結果として、当該第1プログラムオブジェクトPO1が、第1メモリ領域SP1内にポインタオブジェクトZOのポインタアドレスZAに対応するメモリアドレスにおいて格納されたプログラム状態PZのプログラムオブジェクトPOとして、特定される。これにより、特定された第1プログラムオブジェクトPO1が、ポインタオブジェクトZOとして特定される。
【0188】
図7に示すポインタオブジェクトの特定に係る図解は、特定のアドレスオフセットと、個々のプログラムオブジェクトまたはプログラム状態PZのそれぞれのデータ構造または配置構造と、に基づいて、ネスティングされた個々のプログラムオブジェクトを特定する手順を説明するための、純粋に例示的な役割を果たす。
図7に示すプログラム状態PZのメモリ領域の描写は、純粋に例示的なものであって、実際の大きさを示すものでもないし、オートメーションシステムの制御プログラムを実行するときに実際に予想されるプログラム状態を表現するものでもない。
【0189】
アドレスオフセットと第1相対メモリアドレスとを表す矢印の長さは、それぞれの矢印が示すそれぞれのメモリアドレスが、プログラム状態の第1メモリアドレスまたはそれぞれの上位のプログラムオブジェクトPOの第1相対アドレスから、メモリロケーションの数だけ離隔した、当該メモリロケーションの数を表す。
【0190】
図8は、さらなる一実施形態による、制御プログラムの複数のプログラムオブジェクトPOの視覚化を伴うオートメーションシステム200の制御方法100のさらなるフローチャートを示す。
【0191】
方法100の
図8に示す実施形態は、
図6の実施形態に基づいており、
図6に記載された全方法工程を含んでいる。
図8における実施形態においてこれらが変更されないままである限り、さらなる説明が与えられることはない。
【0192】
図8には、n重ネスティング深さを有するプログラム状態PZの上位プログラムオブジェクトPOの下位部分的プログラムオブジェクトを表すポインタオブジェクトZOを、ポインタ要素が参照する場合が示されている。
図8に示す実施形態には、方法100の再帰的な実行可能性が示されている。n重ネスティング深さを有する上位プログラムオブジェクトPOの下位部分的プログラムオブジェクトとして具現化されたプログラムオブジェクトPOを特定するために、方法100が再帰的にn重に適用され得る、という点において、方法100は、再帰的に実行可能である。
【0193】
この目的のために、第1プログラムオブジェクト特定工程109は、第nプログラムオブジェクト特定工程129を含む。第nプログラムオブジェクト特定工程129において、上位第nプログラムオブジェクトが特定される。続いて、第nアドレスオフセット決定工程131において、第nアドレスオフセットが決定される。ここで、第nアドレスオフセットは、第1アドレスオフセットAO1と第nプログラムオブジェクトの第1相対メモリアドレスとの間の差から決定される。さらに、第nデータ型決定工程133において、上位第nプログラムオブジェクトのデータ型が決定される。
【0194】
続いて、第n-1プログラムオブジェクト特定工程135において、上位第nプログラムオブジェクトの第1相対メモリアドレスから第nアドレスオフセットだけ離隔したアドレスを含む、上位第nプログラムオブジェクトの下位部分的プログラムオブジェクトが、上位第n-1プログラムオブジェクトとして特定される。続いて、第n-1アドレスオフセット決定工程137において、第n-1アドレスオフセットが決定される。ここで、第n-1アドレスオフセットは、第1アドレスオフセットAO1と、第nプログラムオブジェクトの第1相対メモリアドレスおよび第n-1プログラムオブジェクトの第1相対メモリアドレスの和との間の差によって、決定される。次に、第n-1データ型決定工程139において、上位第n-1プログラムオブジェクトのデータ型が決定される。
【0195】
これに基づき、第n-2プログラムオブジェクト特定工程141において、上位第n-1プログラムオブジェクトの下位部分的プログラムオブジェクトが、上位第n-2プログラムオブジェクトとして特定される。
【0196】
n-2が2より大きい場合には、上位第2プログラムオブジェクトPO2が特定され得るまで、手順が再帰的に続けられる。その後、第2アドレスオフセット決定工程119において、第2アドレスオフセットが決定され、第2データ型決定工程121において、上位第2プログラムオブジェクトPO2のデータ型が決定される。この実施形態において、第2アドレスオフセットAO2は、第1アドレスオフセットAO1と、第nプログラムオブジェクトから第2プログラムオブジェクトまでの第1相対メモリアドレスの総和との間の差から得られる。これに基づいて、プログラム状態PZの第1メモリ領域SP1内にポインタアドレスZAに対応するメモリアドレスにおいて格納されたプログラムオブジェクトとして、第1プログラムオブジェクトPO1が特定される。
【0197】
ここに記載された実施形態では、第nプログラムオブジェクトは、第n-1ネスティング深さを有し、第n-1プログラムオブジェクトを含む。第n-1プログラムオブジェクトは、第n-2プログラムオブジェクトを含む。第n-2プログラムオブジェクトは、第n-3プログラムオブジェクトを含む。この系列は、第2プログラムオブジェクトまで続く。そして、第2プログラムオブジェクトは、ポインタ要素によって参照された第1プログラムオブジェクトを含む。言及された全てのプログラムオブジェクトは、言及したものに加えて、さらなる複数のプログラムオブジェクトを含んでもよい。
【0198】
上述の工程を再帰的に実行することによって、nプログラムオブジェクト内において対応するネスティング深さでネスティングされた複数のプログラムオブジェクトが、第2プログラムオブジェクトまで順々に特定され、最終的に、ポインタ要素によって参照された第1プログラムオブジェクトが特定される。
【0199】
上述したものと同様に、n-1ネスティング深さを有し、ネスティングされた複数のスタックプログラムオブジェクトを含む、第nスタックプログラムオブジェクトについても、同じことが当てはまる。
【0200】
この手順は、スタックに格納された第nネスティング深さの上位プログラムオブジェクトの下位部分的プログラムオブジェクトであるポインタオブジェクトZOを、ポインタ要素が参照する場合についても同様である。
【0201】
この目的のために、第1スタックプログラムオブジェクト特定工程149は、第nスタックプログラムオブジェクト特定工程167を含む。第nスタックプログラムオブジェクト特定工程167において、上位第nスタックプログラムオブジェクトが特定される。続いて、第nスタックアドレスオフセット決定工程169において、第nスタックアドレスオフセットが決定される。続いて、第nスタックデータ型決定工程171において、上位第nスタックプログラムオブジェクトのデータ型が特定される。
【0202】
続いて、第n-1スタックプログラムオブジェクト特定工程173において、上位第nスタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトが、上位第n-1スタックプログラムオブジェクトとして特定される。続いて、第n-1スタックアドレスオフセット決定工程175において、第n-1スタックアドレスオフセットが決定される。続いて、第n-1スタックデータ型決定工程177において、上位第n-1スタックプログラムオブジェクトのデータ型が決定される。
【0203】
続いて、第2スタックプログラムオブジェクト特定工程179において、上位第n-1スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトが、上位第n-2スタックプログラムオブジェクトとして特定される。
【0204】
さらなる再帰工程181において、n-2が2より大きいことが真である場合には、下位スタック部分的プログラムオブジェクトが上位第2スタック部分的プログラムオブジェクトとして特定されるまで、この方法が再帰的に実行される。続いて、第2スタックアドレスオフセット決定工程157において、第2スタックアドレスオフセットが決定される。続いて、第2スタックデータ型決定工程159において、上位第2スタックプログラムオブジェクトのデータ型が決定される。これに基づいて、第1スタックプログラムオブジェクトが、最終的に、スタックの第2メモリ領域内にポインタオブジェクトのポインタアドレスZAに対応するメモリアドレスにおいて格納されたスタックプログラムオブジェクトとして、特定される。
【0205】
続いて、完全指定決定工程113において、参照されたポインタオブジェクトの個々のプログラムオブジェクトおよび/または個々のスタックプログラムオブジェクトの完全なネスティング階層が表されるように、複数の上位プログラムオブジェクトおよび/または複数の上位スタックプログラムオブジェクトならびに第1プログラムオブジェクトおよび/または第1スタックプログラムオブジェクトの全ての指定が表示されてもよい。
【0206】
個々のプログラムオブジェクト特定工程および個々のスタックプログラムオブジェクト特定工程、アドレスオフセット決定工程およびスタックアドレスオフセット決定工程、ならびに、データ型決定工程およびスタックデータ型決定工程の実行は、上述した複数の実施形態と同様に行われる。
図8における実施形態は、実行される方法100の再帰深さにおいてのみ、上述した実施形態とは異なっている。
【0207】
本発明による本方法100は、プログラム状態PZのそれぞれのプログラムオブジェクトPOの任意のネスティング深さに対して、再帰的に適用可能である。さらに、プログラムオブジェクトおよびスタックプログラムオブジェクトは、複合型であり得るのみならず、フィールド型または別の型であってもよく、前述した複数のデータ型を組み合わせることも可能である。
【0208】
(参照符号のリスト)
100 方法
101 実行工程
103 ポインタアドレス決定工程
105 チェック工程
107 第1アドレスオフセット決定工程
109 第1プログラムオブジェクト特定工程
111 ポインタオブジェクト特定工程
113 完全指定決定工程
115 表示工程
117 第2プログラムオブジェクト特定工程
119 第2アドレスオフセット決定工程
121 第2データ型決定工程
123 第3プログラムオブジェクト特定工程
125 第3アドレスオフセット決定工程
127 第3データ型決定工程
129 第nプログラムオブジェクト特定工程
131 第nアドレスオフセット決定工程
133 第nデータ型決定工程
135 第n-1プログラムオブジェクト特定工程
137 第n-1アドレスオフセット決定工程
139 第n-1データ型決定工程
141 第n-2プログラムオブジェクト特定工程
143 再帰工程
145 スタック構造決定工程
147 第1スタックアドレスオフセット決定工程
149 第1スタックプログラムオブジェクト特定工程
151 フレーム特定工程
153 関数特定工程
155 第2スタックプログラムオブジェクト特定工程
157 第2スタックアドレスオフセット決定工程
159 第2スタックデータ型決定工程
161 第3スタックプログラムオブジェクト特定工程
163 第3スタックアドレスオフセット決定工程
165 第3スタックデータ型決定工程
167 第nスタックプログラムオブジェクト特定工程
169 第nスタックアドレスオフセット決定工程
171 第nスタックデータ型決定工程
173 第n-1スタックプログラムオブジェクト特定工程
175 第n-1スタックアドレスオフセット決定工程
177 第n-1スタックデータ型決定工程
179 第n-2スタックプログラムオブジェクト特定工程
181 さらなる再帰工程
183 第1データ型決定工程
185 第1スタックデータ型決定工程
187 選択工程
189 調整工程
191 制御工程
200 オートメーションシステム
201 制御装置
203 オートメーションデバイス
205 バスシステム
207 表示装置
AO1 第1アドレスオフセット
AO2 第2アドレスオフセット
SP メモリ
SP1 第1メモリ領域
SP2 第2メモリ領域
PZ プログラム状態
PO プログラムオブジェクト
PO1 第1プログラムオブジェクト
PO2 上位第2プログラムオブジェクト
PO3 上位第3プログラムオブジェクト
TPO 下位部分的プログラムオブジェクト
SPO2 第1相対メモリアドレス第2プログラムオブジェクト
SPO3 第1相対メモリアドレス第3プログラムオブジェクト
SPZ プログラム状態の第1メモリアドレス
P メモリポジション
P1 第1メモリポジション
P2 第2メモリポジション
P3 第3メモリポジション
SG メモリサイズ
ST スタック
ZO ポインタオブジェクト
ZA ポインタアドレス
【図面の簡単な説明】
【0209】
【
図1】一実施形態による、オートメーションシステムの概略図である。
【
図2】一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法のフローチャートである。
【
図3】さらなる一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法のさらなるフローチャートである。
【
図4】当該方法の
図2における一実施形態による、ポインタオブジェクトの決定の概略図である。
【
図5】さらなる一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法のさらなるフローチャートである。
【
図6】さらなる一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法のさらなるフローチャートである。
【
図7】当該方法の
図6における一実施形態による、ポインタオブジェクトの決定の概略図である。
【
図8】さらなる一実施形態による、制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステムの制御方法のさらなるフローチャートである。
【手続補正書】
【提出日】2022-05-05
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
オートメーションシステム(200)の制御プログラムの複数のプログラムオブジェクトの視覚化を伴うオートメーションシステム(200)の制御方法(100)であって、
前記オートメーションシステム(200)の制御装置(201)は、制御プログラムを含み、
前記制御プログラムのプログラム状態(PZ)は、前記制御装置の第1メモリ領域(SP1)に格納され、
前記プログラム状態(PZ)は、前記制御プログラムの複数のプログラムオブジェクトを含み、
複数の前記プログラムオブジェクト(PO)は、前記プログラム状態(PZ)の所定の配置構造において、互いに対して配置され、
メモリポジション(P)およびメモリサイズ(SG)は、前記配置構造を介して、各プログラムオブジェクト(PO)に割り当てられ、
プログラムオブジェクト(PO)のメモリポジション(P)によって、プログラムオブジェクト(PO)が前記プログラム状態(PZ)の第1メモリロケーションからメモリロケーションの数だけ離隔してメモリ領域に格納される、当該メモリロケーションの数が定められ、
プログラムオブジェクト(PO)のメモリサイズ(SG)によって、メモリオブジェクトがメモリ領域内において占めるメモリロケーションの数が定められ、
前記プログラム状態(PZ)は、少なくとも1つのポインタ要素を含み、
ポインタオブジェクト(ZO)は、前記ポインタ要素によって参照され、
前記ポインタオブジェクト(ZO)は、前記制御プログラムのプログラムオブジェクト(PO)であり、
前記制御プログラムのスタックは、前記制御装置の第2メモリ領域(SP2)内において設定され、
複数のプログラムオブジェクト(PO)は、前記制御プログラムの実行時間中に前記スタックに格納され得、
前記制御方法(100)は、
実行工程(101)において、前記制御プログラムを実行すること;
ポインタアドレス決定工程(103)において、前記ポインタ要素のポインタアドレス(ZA)を決定すること、ここで、前記ポインタアドレス(ZA)は、前記ポインタ要素によって参照されるメモリアドレスに対応する;
チェック工程(105)において、前記ポインタ要素の前記ポインタアドレス(ZA)が、前記プログラム状態(PZ)の前記第1メモリ領域(SP1)内に位置するのか、または、前記スタックの前記第2メモリ領域(SP2)内に位置するのかをチェックするこ
と
を含む、制御方法(100)において、
第1アドレスオフセット決定工程(107)において、前記ポインタ要素の前記ポインタアドレス(ZA)が前記プログラム状態(PZ)の前記第1メモリ領域(SP1)内に配置されている場合に、前記ポインタ要素の前記ポインタアドレス(ZA)の第1アドレスオフセット(AO1)を決定すること、ここで、前記第1アドレスオフセット(AO1)は、前記ポインタ要素の前記ポインタアドレス(ZA)が前記第1メモリ領域(SP1)における前記プログラム状態(PZ)の第1メモリアドレスからメモリロケーションの数だけ離隔した、当該メモリロケーションの数を定める;
第1プログラムオブジェクト特定工程(109)において、前記プログラム状態(PZ)の前記配置構造に従って、前記プログラム状態(PZ)の前記第1メモリロケーションから前記第1アドレスオフセット(AO1)だけ離隔したプログラムオブジェクト(PO)を、前記第1メモリ領域(SP1)におけるその前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する第1プログラムオブジェクト(PO1)として特定すること;
ポインタオブジェクト特定工程(111)において、前記第1プログラムオブジェクト
(PO1)を、前記ポインタ要素によって参照される前記ポインタオブジェクト(ZO)と特定すること;
完全指定決定工程(113)において、特定された前記ポインタ
オブジェクト(ZO)の完全修飾指定を決定すること
、ここで、特定された前記ポインタオブジェクト(ZO)の前記完全修飾指定は、特定された前記第1プログラムオブジェクト(PO1)の名前を含む;および、
表示工程(115)において、前記制御装置に接続された表示要素上に、前記ポインタ要素によって参照される前記ポインタオブジェクト(ZO)の前記完全修飾指定を表示すること
を含む
ことを特徴とする、方法(100)。
【請求項2】
前記プログラム状態(PZ)のプログラムオブジェクト(PO)は、上位第2プログラムオブジェクト(PO2)として具現化され、
前記上位第2プログラムオブジェクト(PO2)は、少なくとも1つの下位部分的プログラムオブジェクト(TPO)を含み、
前記第1プログラムオブジェクト(PO1)は、前記上位第2プログラムオブジェクト(PO2)によって、下位部分的プログラムオブジェクト(TPO)として含まれ、
前記第1プログラムオブジェクト特定工程(109)は、
第2プログラムオブジェクト特定工程(117)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記プログラム状態(PZ)の前記第1メモリロケーションから前記第1アドレスオフセット(AO1)だけ離隔したメモリロケーションを含むメモリ領域が、前記プログラム状態(PZ)のプログラムオブジェクト(PO)について定められた、前記プログラム状態(PZ)の当該プログラムオブジェクト(PO)を、前記上位第2プログラムオブジェクト(PO2)として特定し、当該上位第2プログラムオブジェクト(PO2)を、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクト(PO)として特定すること;
第2アドレスオフセット決定工程(119)において、第2アドレスオフセット(AO2)を決定すること、ここで、前記第2アドレスオフセット(AO2)は、前記第1アドレスオフセット(AO1)と前記第2プログラムオブジェクト(PO2)
の第1相対メモリアドレス(SPO2)との間の差によって、決定される;
第2データ型決定工程(121)において、前記上位第2プログラムオブジェクト(PO2)のデータ型を決定すること、ここで、前記データ型は、前記上位第2プログラムオブジェクト(PO2)の下位部分的プログラムオブジェクト(TPO)の数が前記上位第2プログラムオブジェクト(PO2)のデータ構造において定められる前記上位第2プログラムオブジェクト(PO2)の当該データ構造を決定し、前記上位第2プログラムオブジェクト(PO2)の前記データ構造内におけるメモリサイズ(SG)およびメモリポジション(P)は、各下位部分的プログラムオブジェクト(TPO)につき決定される;
前記上位第2プログラムオブジェクト(PO2)の前記データ構造に従って、前記上位第2プログラムオブジェクト(PO2)の第1メモリロケーションから前記第2アドレスオフセット(AO2)だけ離隔した前記上位第2プログラムオブジェクト(PO2)の下位部分的プログラムオブジェクト(TPO)を特定し、前記上位第2プログラムオブジェクト(PO2)の当該下位部分的プログラムオブジェクト(TPO)を、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する前記第1プログラムオブジェクト(PO1)として特定すること
を含む、請求項1に記載の方法(100)。
【請求項3】
前記プログラム状態(PZ)のプログラムオブジェクト(PO)は、上位第3プログラムオブジェクト(PO3)として具現化され、
前記上位第3プログラムオブジェクト(PO3)は、少なくとも1つの下位部分的プログラムオブジェクト(TPO)を含み、
前記上位第2プログラムオブジェクト(PO2)は、前記上位第3プログラムオブジェクト(PO3)によって、下位部分的プログラムオブジェクト(TPO)として含まれ、
前記第2プログラムオブジェクト特定工程(117)は、
第3プログラムオブジェクト特定工程(123)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記プログラム状態(PZ)の前記第1メモリロケーションから前記第1アドレスオフセット(AO1)だけ離隔したメモリロケーションを含むメモリ領域が、前記プログラム状態(PZ)のプログラムオブジェクト(PO)について定められた、前記プログラム状態(PZ)の当該プログラムオブジェクト(PO)を、前記上位第3プログラムオブジェクト(PO3)として特定し、当該上位第3プログラムオブジェクト(PO3)を、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクト(PO)として特定すること;
第3アドレスオフセット決定工程(125)において、第3アドレスオフセット(AO3)を決定すること、ここで、前記第3アドレスオフセット(AO3)は、前記第1アドレスオフセット(AO1)と前記第3プログラムオブジェクト(PO3)の第1相対メモリアドレス(SPO3)との間の差によって、決定される;
第3データ型決定工程(127)において、前記上位第3プログラムオブジェクト(PO3)のデータ型を決定すること、ここで、前記データ型は、前記上位第3プログラムオブジェクト(PO3)の下位部分的プログラムオブジェクト(TPO)の数が前記上位第3プログラムオブジェクト(PO3)のデータ構造において定められる前記上位第3プログラムオブジェクト(PO3)の当該データ構造を決定し、前記上位第2プログラムオブジェクト(PO3)の前記データ構造内におけるメモリサイズ(SG)およびメモリポジション(P)は、各下位部分的プログラムオブジェクト(TPO)につき決定される;
前記上位第3プログラムオブジェクト(PO3)の前記データ構造に従って、前記上位第3プログラムオブジェクト(PO3)の第1メモリロケーションから前記第3アドレスオフセット(AO3)だけ離隔した前記上位第3プログラムオブジェクト(PO3)の下位部分的プログラムオブジェクト(TPO)を特定し、前記上位第3プログラムオブジェクト(PO3)の当該下位部分的プログラムオブジェクト(TPO)を、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記上位第2プログラムオブジェクト(PO2)として特定すること
を含み、
ここで、前記第2アドレスオフセット(AO2)は、前記第1アドレスオフセット(AO1)と、前記第3プログラムオブジェクト(PO3)の前記第1相対メモリアドレス(SPO3)および前記第2プログラムオブジェクト(PO2)の前記第1相対メモリアドレス(SPO2)の和との間の差によって、決定される、請求項2に記載の方法(100)。
【請求項4】
前記プログラム状態(PZ)のプログラムオブジェクト(PO)は、上位第nプログラムオブジェクトとして具現化され、
前記上位第nプログラムオブジェクトは、n-1ネスティング深さにおいて、互いを含む複数の下位部分的プログラムオブジェクト(TPO)を含み、
前記上位第2プログラムオブジェクト(PO2)は、前記上位第nプログラムオブジェクトによって、第n-2ネスティング深さにおける下位部分的プログラムオブジェクト(TPO)として含まれ、
前記第1プログラムオブジェクト(PO1)は、前記上位第nプログラムオブジェクトによって、第n-1ネスティング深さにおける下位部分的プログラムオブジェクト(TPO)として含まれ、
nは、4以上の自然数であり、
前記第1プログラムオブジェクト特定工程(109)は、
第nプログラムオブジェクト特定工程(129)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記プログラム状態(PZ)の前記第1メモリロケーションから前記第1アドレスオフセット(AO1)だけ離隔したメモリロケーションを含むメモリ領域が、前記プログラム状態(PZ)のプログラムオブジェクト(PO)について定められた、前記プログラム状態(PZ)の当該プログラムオブジェクト(PO)を、前記上位第nプログラムオブジェクトとして特定し、当該上位第nプログラムオブジェクトを、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクト(PO)として特定すること;
第nアドレスオフセット決定工程(131)において、第nアドレスオフセットを決定すること、ここで、前記第nアドレスオフセットは、前記第1アドレスオフセット(AO1)と前記第nプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第nデータ型決定工程(133)において、前記上位第nプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第nプログラムオブジェクトの下位部分的プログラムオブジェクトの数が前記上位第nプログラムオブジェクトのデータ構造において定められる前記上位第nプログラムオブジェクトの当該データ構造を決定し、前記上位第nプログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリポジション(P)は、各下位部分的プログラムオブジェクトにつき決定される;
第n-1プログラムオブジェクト特定工程(135)において、前記上位第nプログラムオブジェクトの前記データ構造に従って、前記上位第nプログラムオブジェクトの第1メモリロケーションから前記第nアドレスオフセットだけ離隔した前記上位第nプログラムオブジェクトの下位部分的プログラムオブジェクト(TPO)を特定し、前記上位第nプログラムオブジェクトの当該下位部分的プログラムオブジェクト(TPO)を、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める上位第n-1プログラムオブジェクトとして特定すること
を含み、
前記第n-1プログラムオブジェクト特定工程(135)は、
第n-1アドレスオフセット決定工程(137)において、第n-1アドレスオフセットを決定すること、ここで、前記第n-1アドレスオフセットは、前記第1アドレスオフセット(AO1)と前記第nプログラムオブジェクトの前記第1相対メモリアドレスおよび前記第n-1プログラムオブジェクトの第1相対アドレスの和との間の差によって、決定される;
第n-1データ型決定工程(139)において、前記上位第n-1プログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第n-1プログラムオブジェクトの下位部分的プログラムオブジェクトの数が前記上位第n-1プログラムオブジェクトのデータ構造において定められる前記上位第n-1プログラムオブジェクトの当該データ構造を決定し、前記上位第n-1プログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリポジション(P)は、各下位部分的プログラムオブジェクトにつき決定される;
第n-2プログラムオブジェクト特定工程(141)において、前記上位第n-1プログラムオブジェクトの前記データ構造に従って、前記上位第n-1プログラムオブジェクトの第1メモリロケーションから前記第n-1アドレスオフセットだけ離隔した前記上位第n-1プログラムオブジェクトの下位部分的プログラムオブジェクト(TPO)を特定し、前記上位第n-1プログラムオブジェクトの当該下位部分的プログラムオブジェクト(TPO)を、前記プログラム状態(PZ)の前記第1メモリロケーション(SP1)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める上位第n-2プログラムオブジェクトとして特定すること;
再帰工程(143)において、n-2>2が成り立つ場合に、前記第n-1アドレスオフセット決定工程(137)、前記第n-1データ型決定工程(139)、前記第n-2プログラムオブジェクト特定工程(141)を再帰的に実行すること;
前記第2アドレスオフセット決定工程(119)において、前記第2アドレスオフセット(AO2)を決定すること、ここで、前記第2アドレスオフセット(AO2)は、前記第1アドレスオフセット(AO1)と前記第nプログラムオブジェクトから前記第2プログラムオブジェクト(PO2)までの第1相対メモリアドレスの総和との間の差によって、決定される;
前記第2データ型決定工程(121)において、前記上位第2プログラムオブジェクト(PO2)のデータ型を決定すること、ここで、前記データ型は、前記上位第2プログラムオブジェクト(PO2)の下位部分的プログラムオブジェクトの数が前記上位第2プログラムオブジェクト(PO2)のデータ構造において定められる前記上位第2プログラムオブジェクト(PO2)の当該データ構造を決定し、前記上位第2プログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリポジション(P)は、各下位部分的プログラムオブジェクト(TPO)につき決定される;
前記上位第n-1プログラムオブジェクトの前記データ構造に従って、前記上位第2プログラムオブジェクト(PO2)の第1メモリロケーションから前記第2アドレスオフセット(AO2)だけ離隔した前記上位第2プログラムオブジェクト(PO2)の前記下位部分的プログラムオブジェクト(TPO)を特定し、前記上位第2プログラムオブジェクト(PO2)の当該下位部分的プログラムオブジェクト(TPO)を、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する前記第1プログラムオブジェクト(PO1)として特定すること
を含む、請求項2に記載の方法(100)。
【請求項5】
スタック構造決定工程(145)において、前記ポインタ要素の前記ポインタアドレス(ZA)が前記スタック(ST)の前記第2メモリ領域(SP2)内に配置されている場合に、前記スタック(ST)の構造を決定すること、ここで、メモリポジション(P)およびメモリサイズ(SG)は、前記スタックの前記構造を介して、前記スタック(ST)に格納された各スタックプログラムオブジェクトに割り当てられ、スタックプログラムオブジェクトのメモリポジション(P)によって、スタックプログラムオブジェクトが前記スタック(ST)の第1メモリロケーションからメモリロケーションの数だけ離隔してメモリ領域に格納される、当該メモリロケーションの数が定められる;
第1スタックアドレスオフセット決定工程(147)において、前記ポインタ要素の前記ポインタアドレス(ZA)の第1スタックアドレスオフセットを決定すること、ここで、前記第1スタックアドレスオフセットは、前記ポインタ要素の前記ポインタアドレス(ZA)が前記第2メモリ領域(SP2)における前記スタック(ST)の第1メモリアドレスからメモリロケーションの数だけ離隔した、当該メモリロケーションの数を定める;
第1スタックプログラムオブジェクト特定工程(149)において、各スタックプログラムオブジェクトがメモリロケーション(P)およびメモリサイズ(SG)を割り当てられた前記スタック(ST)の配置構造に従って、前記スタック(ST)の前記第1メモリロケーションから前記第1スタックアドレスオフセットだけ離隔したスタックプログラムオブジェクトを、前記第2メモリロケーション(SP2)におけるその前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する第1スタックプログラムオブジェクトとして特定すること;ならびに、
前記ポインタオブジェクト特定工程(111)において、前記第1スタックプログラムオブジェクトを、前記ポインタ要素によって参照される前記ポインタオブジェクト(ZO)と特定すること
をさらに含む、請求項1~4のいずれか一項に記載の方法(100)。
【請求項6】
前記第1スタックプログラムオブジェクト特定工程(149)は、
フレーム特定工程(151)において、前記ポインタ要素の前記ポインタアドレス(ZA)の前記第1スタックアドレスオフセットと前記スタック(ST)の前記配置構造とを考慮に入れて、前記スタック(ST)の前記第2メモリ領域(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)の前記メモリアドレスを含むメモリ領域を占める前記スタック(ST)のフレームを特定すること;
関数特定工程(153)において、前記スタック(ST)の特定された前記フレームの関数を特定すること;および、
その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する特定された前記関数のローカル変数を、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する前記スタック(ST)の前記第1スタックプログラムオブジェクトとして特定すること
を含む、請求項5に記載の方法(100)。
【請求項7】
前記スタック(ST)のスタックプログラムオブジェクトは、上位第2スタックプログラムオブジェクトとして具現化され、
前記上位第2スタックプログラムオブジェクトは、少なくとも1つの下位スタック部分的プログラムオブジェクトを含み、
前記第1スタックプログラムオブジェクトは、前記上位第2スタックプログラムオブジェクトによって、下位スタック部分的プログラムオブジェクトとして含まれ、
前記第1スタックプログラムオブジェクト特定工程(149)は、
第2スタックプログラムオブジェクト特定工程(155)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記スタック(ST)の前記第1メモリロケーションから前記第1スタックアドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が、前記スタック(ST)のプログラムオブジェクトについて定められた、前記スタック(ST)の当該プログラムオブジェクトを、前記上位第2スタックプログラムオブジェクトとして特定し、当該上位第2スタックプログラムオブジェクトを、前記スタック(ST)の前記第2メモリロケーション(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクトとして特定すること;
第2スタックアドレスオフセット決定工程(157)において、第2スタックアドレスオフセットを決定すること、ここで、前記第2スタックアドレスオフセットは、前記第1スタックアドレスオフセットと、前記第2スタックプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第2スタックデータ型決定工程(159)において、前記上位第2スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第2スタックプログラムオブジェクトのデータ構造において定められる前記上位第2スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第2プログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリロケーション(P)は、各下位スタック部分的プログラムオブジェクトにつき決定される;
前記上位第2スタックプログラムオブジェクトの前記データ構造に従って、前記上位第2スタックプログラムオブジェクトの第1メモリロケーションから前記第2アドレスオフセットだけ離隔した前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第2スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する前記第1スタックプログラムオブジェクトとして特定すること
を含む、請求項5または6に記載の方法(100)。
【請求項8】
前記スタック(ST)のスタックプログラムオブジェクトは、上位第3スタックプログラムオブジェクトとして具現化され、
前記上位第3スタックプログラムオブジェクトは、少なくとも1つの下位スタック部分的プログラムオブジェクトを含み、
前記上位第2スタックプログラムオブジェクトは、前記上位第3スタックプログラムオブジェクトによって、下位スタック部分的プログラムオブジェクトとして含まれ、
前記第2スタックプログラムオブジェクト特定工程(155)は、
第3スタックプログラムオブジェクト特定工程(161)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記スタック(ST)の前記第1メモリロケーションから前記第1スタックアドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が、前記スタック(ST)のプログラムオブジェクトについて定められた、前記スタック(ST)の当該プログラムオブジェクトを、前記上位第3スタックプログラムオブジェクトとして特定し、当該上位第3スタックプログラムオブジェクトを、前記スタック(ST)の前記第2メモリロケーション(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクトとして特定すること;
第3スタックアドレスオフセット決定工程(163)において、第3スタックアドレスオフセットを決定すること、ここで、前記第3スタックアドレスオフセットは、前記第1スタックアドレスオフセットと、前記第3スタックプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第3スタックデータ型決定工程(165)において、前記上位第3スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第3スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第3スタックプログラムオブジェクトのデータ構造において定められる前記上位第3スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第3スタックプログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリロケーション(P)は、各下位スタック部分的プログラムオブジェクトにつき決定される;
前記上位第3スタックプログラムオブジェクトの前記データ構造に従って、前記上位第3スタックプログラムオブジェクトの第1メモリロケーションから前記第3スタックアドレスオフセットだけ離隔した前記上位第3スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第3スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、前記スタックの前記第2メモリ領域(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリ領域を占める前記上位第2スタックプログラムオブジェクトとして特定すること
を含み、
ここで、前記第2スタックアドレスオフセットは、前記第1スタックアドレスオフセットと前記第3スタックプログラムオブジェクトの前記第1相対メモリアドレスおよび前記第2スタックプログラムオブジェクトの前記第1相対メモリアドレスの和との間の差によって、決定される、請求項7に記載の方法(100)。
【請求項9】
前記スタック(ST)のスタックプログラムオブジェクトは、上位第nスタックプログラムオブジェクトとして具現化され、
前記上位第nスタックプログラムオブジェクトは、n-1ネスティング深さにおいて、互いを含む複数の下位スタック部分的プログラムオブジェクトを含み、
前記上位第2スタックプログラムオブジェクトは、前記上位第nスタックプログラムオブジェクトによって、第n-2ネスティング深さにおける下位スタック部分的プログラムオブジェクトとして含まれ、
前記第1スタックプログラムオブジェクトは、前記上位第nスタックプログラムオブジェクトによって、第n-1ネスティング深さにおける下位スタック部分的プログラムオブジェクトとして含まれ、
nは、4以上の自然数であり、
前記第1スタックプログラムオブジェクト特定工程(149)は、
第nスタックプログラムオブジェクト特定工程(167)において、それぞれの前記メモリポジション(P)および前記メモリサイズ(SG)に従って、前記スタック(ST)の前記第1メモリロケーションから前記第1スタックアドレスオフセットだけ離隔したメモリロケーションを含むメモリ領域が、前記スタック(ST)のプログラムオブジェクトについて定められた、前記スタック(ST)の当該プログラムオブジェクトを、前記上位第nスタックプログラムオブジェクトとして特定し、当該上位第nスタックプログラムオブジェクトを、前記スタック(ST)の前記第2メモリロケーション(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める前記プログラムオブジェクトとして特定すること;
第nスタックアドレスオフセット決定工程(169)において、第nスタックアドレスオフセットを決定すること、ここで、前記第nスタックアドレスオフセットは、前記第1スタックアドレスオフセットと、前記第nスタックプログラムオブジェクトの第1相対メモリアドレスとの間の差によって、決定される;
第nスタックデータ型決定工程(171)において、前記上位第nスタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第nスタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第nスタックプログラムオブジェクトのデータ構造において定められる前記上位第nスタックプログラムオブジェクトの当該データ構造を決定し、前記上位第nスタックプログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリロケーション(P)は、各下位スタック部分的プログラムオブジェクトにつき決定される;
第n-1スタックプログラムオブジェクト特定工程(173)において、前記上位第nスタックプログラムオブジェクトの前記データ構造に従って、前記上位第nスタックプログラムオブジェクトの第1メモリロケーションから前記第nスタックアドレスオフセットだけ離隔した前記上位第nスタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第nスタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、前記スタック(ST)の前記第2メモリロケーション(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める上位第n-1スタックプログラムオブジェクトとして特定すること
を含み、
前記第n-1スタックプログラムオブジェクト特定工程(173)は、
第n-1スタックアドレスオフセット決定工程(175)において、第n-1スタックアドレスオフセットを決定すること、ここで、前記第n-1スタックアドレスオフセットは、前記第1スタックアドレスオフセットと、前記第nスタックプログラムオブジェクトの前記第1相対メモリアドレスおよび前記第n-1スタックプログラムオブジェクトの第1相対メモリアドレスの和との間の差によって、決定される;
第n-1スタックデータ型決定工程(177)において、前記上位第nスタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第n-1スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第n-1スタックプログラムオブジェクトのデータ構造において定められる前記上位第n-1スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第n-1スタックプログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリロケーション(P)は、各下位スタック部分的プログラムオブジェクトにつき決定される;
第n-2スタックプログラムオブジェクト特定工程(179)において、前記上位第n-1スタックプログラムオブジェクトの前記データ構造に従って、前記上位第n-1スタックプログラムオブジェクトの第1メモリロケーションから前記第n-1スタックアドレスオフセットだけ離隔した前記上位第n-1スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第n-1スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、前記プログラム状態(PZ)の前記第2メモリロケーション(SP2)において前記ポインタ要素の前記ポインタアドレス(ZA)を含むメモリロケーションを占める上位第n-2スタックプログラムオブジェクトとして特定すること
を含み、
第n-2スタックプログラムオブジェクト特定工程(179)は、
さらなる再帰工程(181)において、n-2>2が成り立つ場合に、前記第n-1スタックアドレスオフセット決定工程(175)および前記第n-2スタックプログラムオブジェクト特定工程(179)を再帰的に実行すること;
前記第2スタックアドレスオフセット決定工程(157)において、第2スタックアドレスオフセットを決定すること、ここで、前記第2スタックアドレスオフセットは、前記第1スタックアドレスオフセットと前記第nスタックプログラムオブジェクトから前記第2スタックプログラムオブジェクトまでの第1相対メモリアドレスの総和との間の差によって、決定される;
第2スタックデータ型決定工程(159)において、前記上位第2スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記データ型は、前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトの数が前記上位第2スタックプログラムオブジェクトのデータ構造において定められる前記上位第2スタックプログラムオブジェクトの当該データ構造を決定し、前記上位第2スタックプログラムオブジェクトの前記データ構造内におけるメモリサイズ(SG)およびメモリロケーション(P)は、各下位スタック部分的プログラムオブジェクトにつき決定される;
前記上位第2スタックプログラムオブジェクトの前記データ構造に従って、前記上位第2スタックプログラムオブジェクトの第1メモリロケーションから前記第2アドレスオフセットだけ離隔した前記上位第2スタックプログラムオブジェクトの下位スタック部分的プログラムオブジェクトを特定し、前記上位第2スタックプログラムオブジェクトの当該下位スタック部分的プログラムオブジェクトを、その前記メモリアドレスが前記ポインタ要素の前記ポインタアドレス(ZA)に対応する前記第1スタックプログラムオブジェクトとして特定すること
を含む、請求項7または8に記載の方法(100)。
【請求項10】
第1データ型決定工程(183)において、前記第1プログラムオブジェクト(PO1)のデータ型を決定すること、ここで、前記第1プログラムオブジェクトの前記データ型は、前記第1プログラムオブジェクト(PO1)のデータ構造を決定する;
および/または、
第1スタックデータ型決定工程(185)において、前記第1スタックプログラムオブジェクトのデータ型を決定すること、ここで、前記第1プログラムオブジェクトの前記データ型は、前記第1プログラムオブジェクト(PO1)のデータ構造を決定する
をさらに含む、請求項1~9のいずれか一項に記載の方法(100)。
【請求項11】
前記ポインタ要素によって参照される前記ポインタオブジェクト(ZO)の前記完全修飾指定は、
前記第1プログラムオブジェクトの前記指定、および/もしくは、複数の
前記上位プログラムオブジェクトの前記指定を含み、
または、
第1スタックプログラムオブジェクトの前記指定、および/もしくは、複数の上位スタックプログラムオブジェクトの前記指定、および/もしくは、特定されたフレームの前記指定、および/もしくは、特定された前記関数の名前を含む、請求項1~10のいずれか一項に記載の方法(100)。
【請求項12】
上位プログラムオブジェクトまたは上位スタックプログラムオブジェクトは、複合型、フィールド型、または文字列型である、請求項1~11のいずれか一項に記載の方法(100)。
【請求項13】
選択工程(187)において、前記プログラム状態(PZ)の複数のプログラムオブジェクトを選択すること、ここで、選択されたプログラムオブジェクトは、前記ポインタ要素である;
前記完全指定決定工程(113)において、選択された複数の前記プログラムオブジェクトの複数の完全修飾指定を決定すること;
前記表示工程(115)において、前記制御装置に接続された前記表示要素上に、選択された複数の前記プログラムオブジェクトの複数の前記完全修飾指定を表示すること
をさらに含む、請求項1~12のいずれか一項に記載の方法(100)。
【請求項14】
前記表示工程(115)において、前記完全修飾指定に加えて、それぞれの前記プログラムオブジェクト(PO)の値が表示され、
前記制御方法(100)は、
調整工程(189)において、プログラムオブジェクト(PO)の少なくとも1つの値を調整すること;および、
制御工程(191)において、少なくとも1つの前記プログラムオブジェクト(PO)の少なくとも1つの変更された前記値を考慮に入れて、前記制御プログラムによるオートメーション処理を制御すること
をさらに含む、請求項1~13のいずれか一項に記載の方法(100)。
【請求項15】
前記制御方法(100)は、
デバッグ処理において実行され得、
および/または、
前記オートメーションシステム(200)の制御処理において実行される、請求項1~14のいずれか一項に記載の方法(100)。
【請求項16】
前記表示要素は、ヒューマンマシンインターフェースとして具現化され、前記制御システムに組み込まれている、請求項1~15のいずれか一項に記載の方法(100)。
【請求項17】
制御装置と、
前記制御装置(201)に接続された表示要素(207)と、
を備え、
前記制御装置(201)は、請求項1~16のいずれか一項に記載の方法(100)を実行するように構成されている、オートメーションシステム(200)。
【国際調査報告】