JP7303389B2 - オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程でのポインタ要素のデータ移行の方法 - Google Patents

オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程でのポインタ要素のデータ移行の方法 Download PDF

Info

Publication number
JP7303389B2
JP7303389B2 JP2022535842A JP2022535842A JP7303389B2 JP 7303389 B2 JP7303389 B2 JP 7303389B2 JP 2022535842 A JP2022535842 A JP 2022535842A JP 2022535842 A JP2022535842 A JP 2022535842A JP 7303389 B2 JP7303389 B2 JP 7303389B2
Authority
JP
Japan
Prior art keywords
pointer
data
address
relative
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022535842A
Other languages
English (en)
Other versions
JP2022549529A (ja
Inventor
ドレーゼン,ラルフ
Original Assignee
ベックホフ オートメーション ゲーエムベーハー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ベックホフ オートメーション ゲーエムベーハー filed Critical ベックホフ オートメーション ゲーエムベーハー
Publication of JP2022549529A publication Critical patent/JP2022549529A/ja
Application granted granted Critical
Publication of JP7303389B2 publication Critical patent/JP7303389B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • G06F8/434Pointers; Aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

〔関連出願の相互参照〕
本願は、ドイツ特許出願DE 10 2019 134 353.4の優先権を主張し、その開示内容は、参照により本明細書に組み込まれる。
本発明は、オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程で行われる、ポインタ要素のデータ移行の方法に関する。
オートメーション技術において、オートメーションシステムのサブスクライバは、通常、対応する制御プログラムを周期的に実行することによってオートメーションシステムのコントローラによって制御される。それぞれのサブスクライバは、制御プログラムのそれぞれの制御命令に従って制御される周期ごとに、オートメーションシステムおよび制御プログラムの状態を記述する情報が抽出され、コントローラによって記憶される。いわゆるグローバル状態は、オートメーションシステムおよび制御プログラムの状態を反映するのに必要な完全な情報を含む。例えば、グローバル状態は、制御プログラムで使用される変数、関数、データベース、または他のオブジェクトを含んでいてもよい。さらに、グローバル状態は、オートメーションシステムのサブスクライバに関する情報またはオートメーションシステムで実行中の処理に関する情報が含まれていてもよい。
このようなグローバル状態は、各制御周期が完了した後に再生成されていてもよく、その結果、オートメーションシステムおよび制御プログラムの現在の状態は、いつでも反映されてもよい。
次の制御周期において制御プログラムが再び実行される場合、制御プログラムは、グローバル状態に記憶されたデータを参照し直してもよく、以前の制御周期におけるオートメーションシステムの状態に基づいて、次の周期におけるオートメーションシステムの制御を継続してもよい。
オートメーションシステムの運転中に、オートメーションシステムの最適なまたは最適化された運転を達成または保証するために、様々なパラメータを再調整しなければならない、または処理を変更または調整しなければならない状況がしばしば生じる。これに関連して、運転中に、必要な調整が考慮される、より最新のバージョンを有する現在実行中の制御プログラムに置換することがしばしば必要である。置換後のオートメーションシステムの再始動を回避し、代わりに現在の状態でオートメーションシステムを運転し続けることができるようにするために、制御プログラムの現在のバージョンは、グローバル状態の情報にアクセスできなければならない。これは、制御プログラムの現在のバージョンの実行が、最後に実行された制御周期におけるオートメーションシステムの状態に基づいてオートメーションシステムを制御し続けること、およびオートメーションシステムの完全な再始動が回避されることを保証する唯一の方法である。この目的のために、現在実行されているプログラムのグローバル状態を制御プログラムの現在のバージョンのグローバル状態にデータ移行が実行されなければならず、この場合、現在実行されている制御プログラムのグローバル状態の個々のオブジェクトの値は、制御プログラムの現在のバージョンのグローバル状態の対応するオブジェクトにマッピングされる。したがって、現在実行されている制御プログラムのグローバル状態の情報を、制御プログラムの現在のバージョンのグローバル状態に転送してもよい。
制御プログラムの現在のバージョンにおける変更は、グローバル状態に記憶されている情報に影響を与えると、問題が発生する可能性がある。例えば、現在のバージョンに、変数を改名したり、制御プログラムのオブジェクトのデータタイプを変更したりしている場合がある。制御プログラムの実行と、オートメーションシステムの制御とに関連する制御プログラムのオブジェクトを参照するポインタ要素またはポインタ変数に関連する変更は特に問題となる。ポインタ要素に関連するこのような変更または修正は、制御プログラムの現在のバージョンが、グローバル状態の情報に直接アクセスすることを妨げる可能性がある。なぜならば、修正後、ポインタ要素は正しいオブジェクトを参照することができなくなるからである。
したがって、グローバル状態によって包含されるポインタ要素を含む、グローバル状態の情報を、制御プログラムの現在のバージョンに適応させ、適応が成功した場合に、現在の制御プログラムがグローバル状態の情報にアクセスし、その現在の状態でオートメーションシステムを制御することができるように変化させる必要がある。
そこで、本発明の目的は、オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程で、ポインタ要素のデータ移行のための改善された方法を提供することである。
この目的は、独立請求項による方法によって解決される。好ましい実施形態は、従属請求項に示されている。
本発明の態様によれば、オートメーションシステムの制御プログラムのプログラム状態のデータ移行過程におけるポインタ要素のデータ移行方法が提供される。オートメーションシステムのコントローラは、第1制御プログラムと、第2制御プログラムとを含む。第1制御プログラムは、第1制御プログラムのプログラム状態を記述し、第1ポインタオブジェクトを参照する第1ポインタタイプの少なくとも1つの第1ポインタ要素を含む第1データ要素を含む。第2制御プログラムは、第2制御プログラムのプログラム状態を記述し、第2ポインタオブジェクトを参照するように構成された第2ポインタタイプの少なくとも1つの第2ポインタ要素を含む第2データ要素を含む。
方法は、
第1ポインタ識別ステップにおいて、第1ポインタ要素と第2ポインタ要素とを、第1リレーションを介して互いに関連付けられたポインタ要素として識別するステップと、
ポインタ移行ステップにおいて、第1ポインタ要素を第2ポインタ要素にマッピングするステップと、を含み、
ポインタ移行ステップは、
第1オブジェクト識別ステップにおいて、第1ポインタ要素によって参照される第1ポインタオブジェクトを識別するステップと、
第2オブジェクト識別ステップにおいて、第1ポインタオブジェクトに関連付けられたオブジェクトを第2ポインタオブジェクトとして識別するステップと、
第1アドレス決定ステップにおいて、第2ポインタオブジェクトの絶対メモリアドレスを決定するステップと、
第1ポインタ記憶ステップにおいて、第2ポインタオブジェクトの決定した絶対メモリアドレスを第2ポインタ要素の値として第2ポインタ要素に書き込むステップと、を含む。
これは、オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程で、ポインタ要素のデータ移行のための効果的な方法が提供され得るという技術的利点を達成する。本発明による方法によって、制御プログラムのグローバル状態の一部であるポインタ要素は、同様に、さらなる制御プログラムのグローバル状態の一部である関連するポインタ要素にマッピングされることが達成されてもよい。その際には、マッピングされたポインタ要素によってポインタ要素のマッピング後に、対応するポインタオブジェクトが参照されることが保証されるように、制御プログラムのグローバル状態の一部であるポインタ要素は、関連するポインタ要素にマッピングされてもよい。
本発明による方法は、第1制御プログラムに基づいてコントローラによって制御されるオートメーションシステムに関する。第1制御プログラムは、第1制御プログラムの実行およびオートメーションシステムの制御に必要なすべての情報が記憶された第1データ要素を含む。したがって、第1データ要素の情報は、第1制御プログラムのグローバル状態またはプログラム状態を記述し、グローバル状態は、次いで第1制御プログラムによって制御されるオートメーションシステムの状態に関する情報を含む。
第1データ要素は、ポインタオブジェクトを参照する少なくとも1つのポインタ要素を含む。以下では、ポインタ要素は、ポインタオブジェクトを参照するポインタ変数である。この文脈では、ポインタオブジェクトは、第1制御プログラムのデータオブジェクトであってもよい。あるいは、ポインタオブジェクトは、第1制御プログラムのオブジェクトではないデータオブジェクトであってもよい。
さらに、オートメーションシステムコントローラは、第2制御プログラムを含み、第2制御プログラムは、更に第2制御プログラムに関する情報が記憶された第2データ要素を含む。第2制御プログラムは、第1制御プログラムの更新されたバージョンであり、オートメーションシステムを制御するために第1制御プログラムと置き換え可能である。第2制御プログラムの第2データ要素は、第2ポインタオブジェクトを参照するように配置された第2ポインタ要素を再び含む。第2ポインタオブジェクトは、第2制御プログラムのデータオブジェクトであってもよい。あるいは、第2ポインタオブジェクトは、第2制御プログラムのオブジェクトではないデータオブジェクトであってもよい。
本発明による方法は、第1ポインタ要素によって参照された第1ポインタオブジェクトのメモリアドレスが記憶された第1ポインタ要素の値を、第2ポインタ要素に転送することで具体化される。ここで、転送後に、第2ポインタオブジェクトは、第2ポインタ要素によって参照される、すなわち第2ポインタ要素によって照会される。ここでは、第1ポインタオブジェクトと第2ポインタオブジェクトは、リレーションを介して互いに関連付けられていると仮定する。第1ポインタオブジェクトと第2ポインタオブジェクトは、第1制御プログラム内の第1ポインタオブジェクトと第2制御プログラム内の第2ポインタオブジェクトが同一の意味または同一性を有する場合、第1ポインタオブジェクトと第2ポインタオブジェクトとの間の関係を確立するリレーションを介して互いに照会してもよい。
本発明による方法は、データ移行が成功した後、すなわち、第1データ要素の情報を第2データ要素に転送した後、第2ポインタ要素による第2ポインタオブジェクトの参照が、第1ポインタ要素による第1ポインタオブジェクトの参照に対応するという効果を有する。
この目的のために、第1ポインタ要素と第2ポインタ要素との間の第1リレーションは、第1ポインタ識別ステップにおいて識別される。第1ポインタ要素と第2ポインタ要素との間の第1リレーションは、第1制御プログラム内の第1ポインタ要素が第2制御プログラム内の第2ポインタ要素と同じ意味、役割または機能を有することを意味する。第1リレーションの最も簡単なケースでは、第1制御プログラムの第1ポインタ要素と第2制御プログラムの第2ポインタ要素は、同じ変数タイプで同じ意味の同じポインタ変数を記述する。この場合の本方法の目的は、第1ポインタ要素の値をそれに応じて第2ポインタ要素にマッピングすることにより、マッピングの成功後、第2ポインタ要素は、第1制御プログラムにおける第1ポインタオブジェクトの意味、役割または機能に対応する第2制御プログラムにおける意味、役割または機能を有するデータオブジェクトを参照することを確実にすることである。
ポインタ移行ステップにおいて、第1ポインタ要素を第2ポインタ要素にマッピングするために、第1ポインタ要素によって参照される第1ポインタオブジェクトは、第1オブジェクト識別ステップにおいて識別される。第2オブジェクト識別ステップにおいて、第1ポインタオブジェクトに関連付けられたオブジェクトは、第2ポインタオブジェクトとして識別される。第2ポインタオブジェクトは、第2ポインタ要素によって参照されてもよいデータオブジェクトである。第1ポインタオブジェクトと第2ポインタオブジェクトとの間の関連は、第1制御プログラム内の第1ポインタオブジェクトと第2制御プログラム内の第2ポインタオブジェクトが同一の機能または役割を実行することを意味する。第1ポインタオブジェクトと第2ポインタオブジェクトとの最も簡単な関連は、第1制御プログラム内の第1ポインタオブジェクトと第2制御プログラム内の第2ポインタオブジェクトが同一である場合である。このようなケースでは、上記の方法に従って、移行後の各制御プログラムにおいて、第1ポインタオブジェクトと第2ポインタオブジェクトとが同一のオブジェクトを参照することが保証される。一般に、第1ポインタオブジェクトと第2ポインタオブジェクトが互いに相対している場合、すなわち、第1ポインタオブジェクトの情報内容が、対応するデータ移行の間に第2ポインタオブジェクトに転送されてもよい場合、第1ポインタオブジェクトは、第2ポインタオブジェクトに関連付けられる。
第2ポインタオブジェクトを第1ポインタオブジェクトに関連付けられたデータオブジェクトとして識別した後、第1アドレス決定ステップは、第2ポインタオブジェクトの絶対メモリアドレスを決定する。
続いて、第1ポインタ記憶ステップにおいて、第2ポインタオブジェクトの決定された絶対メモリアドレスが、第2ポインタ要素に記憶される。第1ポインタ要素から第2ポインタ要素へのマッピングがこのように完了すると、第2ポインタ要素は、第1ポインタオブジェクトに関連付けられたオブジェクトを第2ポインタオブジェクトとして参照することが達成される。したがって、2つの関連するデータオブジェクトは、第1制御プログラム内の第1ポインタ要素と、第2制御プログラム内の第2ポインタ要素とによって参照される。それぞれ2つの関連するデータオブジェクトは第1制御プログラム内および第2制御プログラム内の同一の意味、役割、または機能を満たし、最も簡単なケースでは、同一のデータオブジェクトである。
第1ポインタ要素と第2ポインタ要素は、第1リレーションを介して互いに関連付けられてもよい。例えば、第1ポインタ要素と第2ポインタ要素が第1制御プログラムと第2制御プログラムとで同じ名前になっている場合である。あるいは、互いにも相対するフィールドタイプの2つの変数の同一のインデックス要素で、ポインタ要素は、互いに関連付けられてもよい。さらに、ポインタ要素は、複合タイプの2つの変数の構成要素と関連付けられていてもよい。さらに、第1ポインタ要素と第2ポインタ要素との間の第1リレーションは、第2制御プログラムでリレーションを明示的に定義することによって達成してもよい。あるいは、リレーションは制御プログラムへの追加情報として具体化されてもよく、プログラミング環境におけるリファクタリングツールの適用によるものであってもよい。両方のポインタ要素の名前が同一でない場合、第1ポインタ要素と第2ポインタ要素との間のリレーションを記述する第2制御プログラム内の明示的な記述を使用して、対応するリレーションを実現してもよい。さらに、2つのポインタ要素の名前が異なるときに、リファクタリングツールを使用して第2制御プログラム内の第2ポインタ要素の名前を変更した場合、第1ポインタ要素と第2ポインタ要素との間の第1リレーションが生成されてもよい。
第1ポインタオブジェクトは、第1データ要素に配置されてもよく、そして第2ポインタオブジェクトは、第2データ要素に配置されてもよい。あるいは、第1ポインタオブジェクトおよび/または第2ポインタオブジェクトは、それぞれ、第1データ要素または第2データ要素の外側に配置されてもよいが、コントローラのメモリ内に配置される。
第1データ要素は、複雑なデータ構造として構成されてもよく、第1制御プログラムのプログラム状態、または第1制御プログラムとオートメーションシステムとのグローバル状態をそれぞれ記述する複数のデータオブジェクトから構成されてもよい。好ましくは、第1データ要素は、複合タイプのデータタイプを含んでもよく、そして複数の第1データサブ要素を含んでもよい。それぞれが第1制御プログラムのオブジェクトである複数のデータサブ要素は、複合タイプであってもよく、そして更に、複数のコンポーネントを含んでもよい。コンポーネントは、例えば、次に複合タイプ、フィールドタイプ、スカラタイプなどの、相違するデータタイプを有していてもよい。複合タイプのデータサブ要素をネストにするための本発明の方法によって課せられる制限はない。複合タイプのデータサブ要素のコンポーネントは、更に複合タイプのオブジェクトであり、同様に、複合タイプのコンポーネントを有する。あるいは各第1データサブ要素は、フィールドタイプであって、それぞれ複数の要素を有し、各要素が相違するデータタイプを有してもよい。あるいは、第1サブ要素は、スカラタイプであってもよい。
プログラム状態とグローバル状態は、以下で同義的に使用される。
同様に、第2データ要素は、複雑なデータ構造として構成することができ、第2制御プログラムのグローバル状態を記述する複数のオブジェクトを含んでいてもよい。好ましくは、第2データ要素は、複合タイプであってもよく、複数の第2データサブ要素を含んでもよい。第2データサブ要素は、第2制御プログラムのオブジェクトであり、複合タイプであってもよく、複数のコンポーネントを含んでいてもよい。コンポーネントは同様に、例えば、複合タイプ、フィールドタイプ、スカラタイプ、あるいはポインタタイプなどの様々なデータタイプであってもよい。あるいは、第2データサブ要素は、フィールドタイプであってもよく、それぞれが複数の要素を有してもよく、各要素は、相違するデータタイプを有していてもよい。あるいは、第2データサブ要素は、スカラタイプであってもよい。複合タイプのデータサブ要素をネストにするために、本発明による方法によって、制限されない。データサブ要素の各コンポーネントは複合タイプのオブジェクトであり、更に、複合タイプのコンポーネントも有するしてもよい。
第1ポインタオブジェクトと第2ポインタオブジェクト、すなわち第1ポインタ要素と第2ポインタ要素によって参照されるデータオブジェクトは、上述のデータサブ要素のデータタイプの一つであってもよい。さらに、第1ポインタオブジェクトと第2ポインタオブジェクトは、複合タイプのコンポーネントであっても、フィールドタイプの要素であってもよい。その場合、それぞれのポインタ要素は、対応するコンポーネントまたは対応する要素を参照する。
第1データ要素と第2データ要素は、連続するオブジェクトとして具体化され、コントローラのメモリの相違するメモリ領域に記憶される。メモリ内では、第1データ要素と第2データ要素とは、それぞれ連続するメモリ領域を占有する。第1データ要素のメモリ領域内と第2データ要素のメモリ領域内には未使用のギャップは存在せず、第1データ要素と第2データ要素とのそれぞれのオブジェクトはそれぞれのメモリ領域内で互いに密接に隣接して記憶される。これは、単なる技術的(パディング)であるギャップに影響を及ぼさない。例えば、ギャップは、データの配列(配列)によって引き起こされ、プロセッサによって動機づけられる。いわゆる「本来の配列」では、Nバイトのデータは、Nで剰余なく除算するメモリロケーションからのみロードされてもよい。Nは、2の累乗である。配列とは別に、データは可能な限り密に配置される。
以下では、オブジェクトは、制御プログラムのデータオブジェクトであり、複雑なデータ構造を有してもよく、複雑な情報内容を含んでいてもよい。さらに、例えば、オブジェクトは、任意のデータタイプであってもよく、その結果、(例えば、コンポーネントまたは要素として)任意のデータタイプのサブオブジェクトを含んでいてもよく、任意の方法でネスティングされていてもよい。グローバル状態は、第1データ要素によって包含されるオブジェクトによって形成され、オートメーションシステムを制御するために必要なすべての情報を含む。
以下では、データ移行とは、第1メモリ領域から第2メモリ領域へのデータ転送のことである。第1制御プログラムのプログラム状態を第2制御プログラムのプログラム状態にデータ移行する間に、第1データ要素のオブジェクトの値が読み出され、第2データ要素の対応するオブジェクトに転送される。したがって、第1データ要素によって記述された第1制御プログラムのグローバル状態は、第2データ要素に転送されていてもよい。第1制御プログラムの更新バージョンである第2制御プログラムは、データ移行が成功した後、第1制御プログラムのグローバル状態にアクセスしてもよい。データ移行が成功した後、第2制御プログラムのグローバル状態が、第1制御プログラムのグローバル状態に対応するか、少なくとも部分的に対応し、あるいは第1制御プログラムのグローバル状態の情報を少なくとも部分的に含むためである。これは、第1制御プログラムのグローバル状態を考慮して、第2制御プログラムに基づいてオートメーションシステムを制御することを可能にする。第1制御プログラムのグローバル状態のデータ移行は、第1データ要素に含まれるポインタ要素を第2データ要素の対応するポインタ要素に転送することを含む。
オブジェクトの絶対メモリアドレスは、それぞれのオブジェクトが記憶され、それぞれのオブジェクトが参照されるメモリ内の以下のメモリアドレスである。絶対メモリアドレスとメモリアドレスは、以下で同義的に使用される。
実施形態によれば、第1データ要素は、コントローラの第1メモリ領域に格納され、第2データ要素は、コントローラの第2メモリ領域に格納され、第1データ要素は少なくとも1つの第1データサブ要素を含み、第2データ要素は第2リレーションを介して第1データサブ要素に関連付けられた少なくとも1つの第2データサブ要素を含み、第1データサブ要素は第1ポインタオブジェクトに対応し、第1ポインタオブジェクトによって参照され、第2データサブ要素は第2ポインタオブジェクトに対応する。
ポインタ移行ステップは、
第1ポインタアドレス決定ステップにおいて、第1データサブ要素の第1相対メモリアドレスを決定するステップであって、第1相対メモリアドレスによって第1データ要素の第1メモリロケーションに相対する第1データ要素のメモリ領域内の第1データサブ要素のメモリアドレスが記述される、ステップと
第2ポインタアドレス決定ステップにおいて、第2データサブ要素の第2相対メモリアドレスを決定するステップであって、第2相対メモリアドレスによって、第2データ要素の第1メモリロケーションに相対する第2データ要素のメモリ領域内の第2データサブ要素のメモリアドレスが記述されるステップと、
第1アドレス決定ステップにおいて、第2データサブ要素の第2相対メモリアドレスと、第2データ要素の第1メモリロケーションとに基づいて、第2データサブ要素の第2絶対メモリアドレスを決定するステップと、を含む。
これは、ポインタ要素のデータ移行のための効果的な方法を提供する技術的利点を達成する。ここで、ポインタ要素は、制御プログラムのグローバル状態内のポインタオブジェクトを参照する。前記の実施形態における方法は、第1データ要素と第2データ要素とは、それぞれ複合タイプのデータタイプであり、それぞれが複数のオブジェクトを含むケースを指す。第1データ要素のオブジェクトは、第1データサブ要素として定義され、第2データ要素のオブジェクトは、第2データサブ要素として定義される。第1データサブ要素と第2データサブ要素は、第1制御プログラム及び第2制御プログラムの各データオブジェクトであり、それぞれ複合タイプ、フィールドタイプ、スカラタイプ、またはポインタタイプのデータタイプである。
第1データ要素は、少なくとも1つの第1データサブ要素を含み、第2データ要素は、少なくとも1つの第2データサブ要素を含む。第1データサブ要素と第2データサブ要素とは、第2リレーションを介して互いに関連付けられる。これらは、第1及び第2データサブ要素が同一名であるか、または対応するリレーションが第2制御プログラムの中で明示的に定義されている場合に、関連していてもよい。あるいは、第2リレーションは、リファクタリングツールを使用することによって、第2制御プログラムに関連付けられた定義において定義されてもよい。
さらに、第1ポインタ要素は、第1データ要素の第1データサブ要素を参照するように、第1ポインタオブジェクトは、第1データ要素の第1データサブ要素に対応する。同様に、第2ポインタ要素は、第2データサブ要素に対するポインタになるように、第2データサブ要素は、第2ポインタオブジェクトと一致する。前記の実施形態における方法は、第2ポインタ要素は、第2データサブ要素を第2ポインタオブジェクトとして参照するように、第2ポインタ要素は、第2データサブ要素のメモリアドレスが与えられるという効果を有する。第1データサブ要素と第2データサブ要素とは互いに関連付けられているので、転送が成功した後、第1ポインタ要素と第2ポインタ要素とは、第1制御プログラムと第2制御プログラムの対応するデータオブジェクトを参照する。
本発明による方法が実行される前の時点では、第2データ要素のオブジェクトの絶対メモリアドレスは、未知である。あるいは、第2データ要素のオブジェクトの絶対メモリアドレスは、導出されてもよい。第2データ要素は、複数のデータサブ要素または複数のデータオブジェクトを含む複合データ構造として、オートメーションシステムのコントローラの第2メモリ領域に記憶される。第2データ要素は、第2メモリ領域内の連続したオブジェクトの形態で、特に複合タイプとして複雑なデータ構造として記憶される。したがって、第2データ要素によって占有されるメモリ領域は、未占有ギャップのない連続したメモリ領域として構成される。特に、第2データ要素は、複合タイプの複合/構造化データであってもよく、メモリ内の連続したコンポーネント(および、もしあれば、メモリ配列によるギャップ)を有していてもよい。
第2データ要素の個々のオブジェクトの絶対メモリアドレスは、第2データ要素の第2メモリ領域への記憶時に未知であるか、または移行コード生成時に絶対メモリアドレスは、未知である。絶対アドレスは、例えば、制御ユニットのプロセッサのメモリ管理、または制御プログラムの1つの実行の実行時間を制御するコントローラのユニットによって第2データ要素がメモリのどの位置から開始するかが決定された後にのみ知られる。一方、サブ要素の相対アドレスは、生成時に既知である。第2データ要素の個々のオブジェクトは、第2データ要素内で互いにどのように配置されるかを記述する、第2データ要素内の構造は、既知である。さらに、第2データ要素の第1メモリロケーションは、既知であり、これによって、第2メモリ領域内の第2データ要素によって占有されるメモリ領域の第1絶対メモリアドレスが識別される。
第1データ要素の第1メモリロケーションは、第1メモリ領域の第1データ要素によって占有されるメモリ領域内で最も低いメモリアドレスを持つメモリロケーションである。したがって、第1データ要素の第1メモリロケーションは、第1メモリ領域内の第1データ要素によって占有されるメモリ領域を制限する。
同様に、第2データ要素の第1メモリロケーションは、第2メモリ領域内の第2データ要素によって占有されるメモリ領域内の最も低いメモリアドレスを持つメモリロケーションである。したがって、第2データ要素の第1メモリロケーションは、第2メモリ領域内の第2データ要素によって占有されるメモリ領域を制限する。
一般に、メモリロケーションは、以下ではオブジェクトが少なくとも部分的に記憶されてもよいメモリ内のメモリロケーションまたはメモリユニットである。各メモリロケーションは、メモリアドレスが与えられるが、これは本発明による方法では未知であってもよい。
第2ポインタ要素によって参照される第2ポインタオブジェクトとしての第2データサブ要素の絶対メモリアドレスは未知であるため、本発明の本実施形態による方法は、第2データ要素内の第2データサブ要素の相対メモリアドレスを決定することによって、第2データサブ要素の絶対メモリアドレスの決定に影響を与える。第2データ要素内の第2データサブ要素の相対メモリアドレスを決定した後、第2データサブ要素の絶対メモリアドレスは、第2データ要素の第1メモリロケーションの既知の絶対メモリアドレスを介して決定されてもよい。
この目的のために、第1データ要素の第1データサブ要素の第1相対メモリアドレスは、第1ポインタ要素の値と、第1データ要素の絶対メモリアドレスとに基づいて、第1ポインタアドレス決定ステップで決定される。ここで、第1データサブ要素の第1相対メモリアドレスは、第1データ要素の第1メモリロケーションに相対する第1データ要素のメモリ領域内のメモリアドレスを記述する。したがって、第1相対メモリアドレスは、第1データ要素の第1メモリロケーションに相対する第1データ要素のメモリ領域内のメモリアドレスを記述する。このメモリアドレスは、第1データ要素内の第1データサブ要素によって占有され、第1ポインタ要素によって参照される。
続いて、第2データサブ要素の第2相対メモリアドレスは、第2ポインタアドレス決定ステップで決定される。同様に、第2相対メモリアドレスは、第2データ要素の第1メモリロケーションに相対する第2データ要素のメモリ領域内の第2データサブ要素のメモリアドレスに対応する。
この目的のために、第1データサブ要素と第2データサブ要素との間の第2リレーションは、データ移行後に第2ポインタ要素によって参照される第2データ要素のオブジェクトを識別するために考慮される。
第1アドレス決定ステップにおいて、第2データサブ要素の決定された第2相対メモリアドレスと第2データ要素の第1メモリロケーションとに基づいて、第2データサブ要素の絶対メモリアドレスが決定される。
第1データサブ要素と第2データサブ要素との間の第2リレーションによる結合によって、第2データサブ要素は、データ移行後に第2ポインタ要素によって参照される第2データ要素のオブジェクトを識別するために使用されてもよい。第1データ要素と第2データ要素との内部構造を知ることによって、第2データ要素のメモリ領域内の第2データサブ要素の第2相対メモリアドレスは、第1データサブ要素の決定された相対メモリアドレスを使用して決定されてもよい。第2データサブ要素の第2相対メモリアドレスと、第2データ要素の第1メモリロケーションの既知の絶対メモリアドレスとを考慮して、第2データサブ要素の絶対メモリアドレスが決定されてもよい。第2データサブ要素の絶対メモリアドレスは、第2ポインタ要素の値であり、第2ポインタ要素が第2ポインタオブジェクトとして第2データサブ要素を正しく参照できるようになる。
一実施形態によれば、ポインタ移行ステップは、
第3ポインタアドレス決定ステップにおいて、第1ポインタ要素の第1相対ポインタアドレスを決定するステップであって、第1データサブ要素の第1相対メモリアドレスに相対する第1データ要素のメモリ領域内の第1ポインタ要素によって参照されるメモリロケーションは、第1ポインタ要素の第1相対ポインタアドレスによって、記述される、ステップと、
第4ポインタアドレス決定ステップにおいて、第1相対ポインタアドレスに基づいて、第2ポインタ要素の第2相対ポインタアドレスを決定するステップであって、第2データ要素のメモリ領域内のメモリロケーションは、第2ポインタ要素の第2相対ポインタアドレスによって、第2データサブ要素の第2相対メモリアドレスに相対して決定され、第2データサブ要素に関連する第2相対ポインタアドレスは、第1データサブ要素に関連する第1相対ポインタアドレスに対応すステップと、
第1アドレス決定ステップにおいて、第2相対ポインタアドレスと、第2データサブ要素の第2相対メモリアドレスと、第2メモリ領域における第2データ要素の第1メモリロケーションとに基づいて、第2データサブ要素の絶対メモリアドレスを決定するステップと、を含む。
これは、複雑なデータ構造内のデータオブジェクトの相対メモリアドレスを決定することを介して、参照されるポインタオブジェクトの絶対メモリアドレスを達成することにより、ポインタ要素の正確なデータ移行を提供する技術的利点を達成する。さらに、相対アドレスを使用することによって、データサブ要素は、分離された方法で考慮されてもよく、これは、コードが再使用されることを可能にし、それによって、ポインタ移行に必要とされるコードを低減する。
第3ポインタアドレス決定ステップにおいて、第1ポインタ要素の第1相対ポインタアドレスが決定される。第1ポインタ要素の第1相対ポインタアドレスは、第1データサブ要素の第1メモリアドレスに相対する第1データ要素のメモリ領域内の第1ポインタ要素によって参照されるメモリロケーションを記述する。第1ポインタ要素のポインタアドレスは、第1データ要素のメモリ領域内の絶対メモリアドレスを記述する。第3ポインタアドレス決定ステップにおいて、第1ポインタ要素のこの絶対メモリアドレスは、第1データサブ要素の第1相対メモリアドレスに関連する、第1ポインタ要素の絶対メモリアドレスを設定することによって、第1ポインタ要素の第1相対ポインタアドレスに変換される。
第4ポインタアドレス決定ステップにおいて、第1相対ポインタアドレスに基づいて、第2ポインタ要素の第2相対ポインタアドレスが、決定される。第2ポインタ要素の第2相対ポインタアドレスは、第2データサブ要素の第2相対メモリアドレスに相対する第2データ要素のメモリ領域内のメモリロケーションを、記述する。第2データ要素内で、第2相対ポインタアドレスは、第1データ要素における第1相対ポインタアドレスによって記述されたメモリロケーションに対応するメモリロケーションを記述する。したがって、第1データ要素内の第1相対ポインタアドレスと、第2データ要素内の第2相対ポインタアドレスは、第1データ要素と第2データ要素に関連する、それぞれ等しい有意性の2つのメモリアドレスを記述する。
第1アドレス決定ステップにおいて、第2相対ポインタアドレスと、第2データサブ要素の第2相対メモリアドレスと、第1絶対メモリアドレスまたは第2データ要素の第1メモリロケーションとに基づいて、第2データサブ要素の絶対メモリアドレスが決定される。第2相対ポインタアドレスによって記述される第2データ要素のメモリ領域内のメモリロケーションは、第2相対ポインタアドレスが参照する第2データサブ要素の第2相対メモリアドレスと、第2メモリ領域内の第2データ要素の第1メモリロケーションの絶対メモリアドレスとを考慮して、第2メモリ領域内の第2データサブ要素の絶対メモリアドレスに変換されてもよい。
第1相対ポインタアドレスと第2相対ポインタアドレスとを考慮することによって、ポインタ要素によって参照されるメモリアドレスがそれぞれ参照されるポインタオブジェクトの第1メモリロケーションと異なる場合、ポインタオブジェクト内の第1ポインタ要素によって参照されるメモリアドレスは、第2データ要素のメモリ領域内の対応するメモリアドレスに転送されることで達成されてもよい。したがって、第1ポインタ要素に対応する第2ポインタ要素がそれぞれ参照されるポインタオブジェクトの第1メモリロケーションと異なるメモリアドレスを参照することが保証されてもよい。これにより、参照されるポインタオブジェクトの第1メモリロケーションを参照せず、ポインタオブジェクトを指すポインタを移行できる。
一実施形態によれば、ポインタ移行ステップは、
第1データサブ要素と第2データサブ要素とがそれぞれ複合タイプであり、第1データサブ要素が少なくとも第1コンポーネントを含み、第2データサブ要素が少なくとも第2コンポーネントを含み、第1コンポーネントと第2コンポーネントが第3リレーションを介して関連付けられており、第1コンポーネントが第1ポインタ要素によって参照されている場合において、
第1相対コンポーネントアドレス決定ステップにおいて、第1相対ポインタアドレスに基づいて、第1コンポーネントの第1相対コンポーネントアドレスを決定するステップであって、第1コンポーネントの第1データ要素のメモリ領域内のメモリアドレスは、第1相対コンポーネントによって、第1データサブ要素の第1相対メモリアドレスに相対して記述されるステップと、
第2コンポーネントアドレス決定ステップにおいて、第1相対コンポーネントアドレスに基づいて、第2データサブ要素の第2コンポーネントの第2相対コンポーネントアドレスを決定するステップであって、第2相対コンポーネントアドレスは、第2データサブ要素の第2相対メモリアドレスに相対する、第2コンポーネントの第2データ要素のメモリ領域内のメモリアドレスを記述するステップと、
第1アドレス決定ステップにおいて、第2相対コンポーネントアドレスと、第2データサブ要素の第2相対メモリアドレスと、第2メモリ領域内の第2データ要素の第1メモリロケーションに基づいて、第2データサブ要素の第2コンポーネントの絶対メモリアドレスを決定するステップと、を含む。
これは、ポインタ要素のデータ移行のための正確な方法を提供する技術的利点を達成する。ここで、移行されるポインタ要素は複合タイプのデータタイプのデータオブジェクトのコンポーネントを参照する。
上述の実施形態における本発明による方法は、第1データサブ要素と第2データサブ要素とに関する。第1データサブ要素と第2データサブ要素との各々は、複合タイプのデータタイプであり、少なくとも第1コンポーネントと第2コンポーネントとを含む。第1コンポーネントと第2コンポーネントとは、第3リレーションを介して互いに関連付けられる。上述の第1および第2リレーションと同様に、第1コンポーネントと第2コンポーネントとがそれぞれ同じ名前である場合、または2つのコンポーネント間のリレーションが第2制御プログラムにおいて明示的に定義されている場合、第3リレーションは、第1コンポーネントと第2コンポーネントとの間に存在する。第3リレーションは、第1データサブ要素の第1コンポーネントと第2データサブ要素の第2コンポーネントとがそれぞれ第1制御プログラムと第2制御プログラムとにおける同一の機能又は役割を担うことを示している。第1データ要素の情報を第2データ要素に転送する、第1データ要素の第2データ要素へのデータ移行において、第1コンポーネントは、第2コンポーネントに転送される。第3リレーションで特徴付けられる、第2コンポーネントは、第2制御プログラムの第2データ要素における第1コンポーネントに対応するからである。
第1コンポーネントアドレス決定ステップにおいて、第1データ要素のメモリ領域内の第1コンポーネントの第1相対コンポーネントアドレスは、第1相対ポインタアドレスに基づいて決定される。ここで、第1相対コンポーネントアドレスは、第1データサブ要素の第1相対メモリアドレスに相対する、第1コンポーネントの第1データ要素のメモリ領域内のメモリアドレスを記述する。第1コンポーネントアドレス決定ステップにおいて、第1ポインタ要素によって参照される第1データサブ要素の第1コンポーネントの絶対メモリアドレスは、第1データサブ要素の既知の第1相対メモリアドレスに関連する第1コンポーネントの絶対メモリアドレスを設定することによって、第1データサブ要素内の第1コンポーネントの相対メモリアドレスに変換される。
第2コンポーネントアドレス決定ステップにおいて、第1コンポーネントの第1相対コンポーネントアドレスに基づいて、第2データサブ要素の第2コンポーネントの第2相対コンポーネントアドレスが決定される。第2相対コンポーネントアドレスは、第2データサブ要素の第2相対メモリアドレスに相対する、第2データ要素のメモリ領域内のメモリアドレスを記述する。したがって、第1相対コンポーネントアドレスによって記述される第1データ要素のメモリ領域内のメモリアドレスは、第2相対コンポーネントアドレスによって記述される第2データ要素のメモリ領域内のメモリアドレスに対応する。
第1アドレス決定ステップにおいて、第2相対コンポーネントアドレスと、第2データサブ要素の第2相対メモリアドレスと、第2データ要素の第1メモリロケーションとに基づいて、第2メモリ領域内の第2コンポーネントの絶対メモリアドレスは、決定される。第2相対コンポーネントアドレスは、第2データ要素のメモリ領域内の第2データサブ要素の既知の第2相対メモリアドレスに相対する、第2コンポーネントのメモリアドレスを記述する。この2つの情報と、第2メモリ領域内の第2データ要素の第1メモリロケーションの既知の絶対メモリアドレスとを用いて、第2データ要素の第2データサブ要素の第2コンポーネントの絶対メモリアドレスは、決定されてもよい。
一実施形態によれば、ポインタ移行ステップは、
第1データサブ要素と第2データサブ要素とは、各々同一の次元を有するフィールドタイプであり、第1データサブ要素は、複数の第1要素を含み、第2データサブ要素が複数の第2要素を含み、少なくとも第1要素と第2要素とが第4リレーションを介して関連付けられており、第1ポインタ要素は、第1要素を参照する場合において、
第1要素アドレス決定ステップにおいて、第1ポインタ要素によって参照される第1要素の第1相対要素アドレスを決定するステップであって、第1相対要素アドレスは、第1データサブ要素の第1相対メモリアドレスに相対する、第1ポインタ要素によって参照される第1要素の第1データ要素のメモリ領域内のメモリアドレスを記述する、ステップと、
第2要素アドレス決定ステップにおいて、第1相対要素アドレスに基づいて、第4リレーションを介して第1ポインタ要素によって参照される第1要素に関連付けられた第2要素の第2相対要素アドレスを決定するステップであって、第2相対要素アドレスは、第2データサブ要素の第2相対メモリアドレスに相対する、第2データ要素のメモリ領域内の第2要素のメモリアドレスを記述する、ステップと、
第1アドレス決定ステップにおいて、第2相対要素アドレスと、第2データサブ要素の第2相対メモリアドレスと、第2データ要素のメモリ領域内の第2データ要素の第1メモリロケーションとに基づいて、第2データサブ要素の第2要素の絶対メモリアドレスを決定する、ステップと、を含む。
これは、ポインタ要素は、フィールドタイプのデータタイプのデータオブジェクトの要素を参照する、ポインタ要素のデータ移行のための正確な方法を提供する技術的利点を達成する。
記載された実施形態における本発明による方法は、第1データサブ要素と第2データサブ要素とは、それぞれ同一の次元を有するフィールドタイプのデータタイプであり、第1データサブ要素は、複数の第1要素を含み、第2データサブ要素は、複数の第2要素を含み、少なくとも第1要素と第2要素とは、第4リレーションを介して互いに関連付けられる場合に関する。2つの要素は、両方の要素が同一にインデックス付けされている場合、第4リレーションを介して関連付けられる。さらに、このようなリレーションが第2制御プログラムで明示的に定義されている場合、リレーションは、フィールドタイプの2つのデータサブオブジェクトの2つの要素間に存在してもよい。
さらに、記述される実施形態における方法は、第1ポインタ要素が第1データサブ要素の第1要素を参照する場合に関する。
第1要素アドレス決定ステップにおいて、第1ポインタ要素によって参照される第1データサブ要素の第1要素の第1相対要素アドレスが決定される。ここで、第1相対要素アドレスは、第1データサブ要素の第1相対メモリアドレスに相対する、第1データ要素のメモリ領域内のメモリアドレスを記述する。したがって、第1要素アドレス決定ステップにおいて、第1メモリ領域内において第1ポインタ要素によって参照される第1データサブ要素の第1要素の絶対メモリアドレスは、第1データサブ要素の既知の第1相対メモリアドレスに相対する、第1データ要素によって占有されるメモリ領域内の第1要素の相対メモリアドレスに変換される。
第2要素アドレス決定ステップにおいて、第1相対要素アドレスに基づいて、第1要素に相対する、第2データサブ要素の第2要素の第2相対要素アドレスは、決定される。第2相対要素アドレスは、第2データサブ要素の第2相対メモリアドレスに相対する、第1要素に相対する第2要素の第2データ要素のメモリ領域内のメモリアドレスを記述する。第2データ要素のモリ領域内で、かつ第2データ要素の第1メモリロケーションに相対する、第2相対要素アドレスは、第1データ要素のメモリ領域内の第1要素の第1相対要素アドレスのメモリアドレスに対応するメモリアドレスを記述する。
第1アドレス決定ステップにおいて、第2相対要素アドレスと、第2データサブ要素の第2相対メモリアドレスと、第2メモリ領域内において第2データ要素の第1メモリロケーションの絶対メモリアドレスとに基づいて、第1要素に相対する、第2データサブ要素の第2要素の絶対メモリアドレスは、決定される。
一実施形態によれば、第1要素アドレス決定ステップは、
要素サイズ決定ステップにおいて、第1データサブ要素の第1要素の第1要素サイズを決定するステップであって、第1要素の第1要素サイズは、第1要素によって占有される第1メモリ領域内のメモリ領域に対応する、ステップと、
第1相対ポインタアドレスと第1要素サイズに基づいて、第1ポインタ要素によって参照される第1要素を決定する、ステップと、を含む。
これは、ポインタ要素によって参照される第1データサブ要素の第1要素を決定するための最も簡単な手段を提供するという技術的効果を達成する。
要素サイズ決定ステップにおいて、最初に、第1データサブ要素の第1要素のサイズが決定される。第1要素のサイズまたは第1要素サイズは、第1データ要素のメモリ領域内の第1要素によって占有されるメモリ領域を表す。
続いて、第1ポインタ要素によって参照される第1要素は、第1相対ポインタアドレスと第1要素サイズに基づいて決定される。第1相対ポインタアドレスは、第1データサブ要素の第1相対メモリアドレスに相対する、第1データ要素のメモリ領域内のメモリアドレスを記述する。したがって、第1相対ポインタアドレスは、メモリロケーションにおいてカウントされる、第1ポインタ要素によって参照されるメモリアドレスから第1データサブ要素の第1相対メモリアドレスまでの距離を記述する。第1データサブ要素の相対メモリアドレスに対する参照されたメモリアドレスのこの距離は、要素サイズに関連して設定される場合、第1相対ポインタアドレスの参照されたメモリアドレスが位置する要素が決定されてもよい。
一実施形態によれば、ポインタ移行ステップは、
第5ポインタアドレス決定ステップにおいて、第1相対ポインタアドレスと第1相対コンポーネントアドレスに基づいて、第1相対ポインタ部分アドレスを決定するステップであって、第1相対ポインタ部分アドレスによって、第1ポインタ要素によって参照される第1データ要素のメモリ領域内のメモリロケーションは、第1データサブ要素の第1コンポーネントの第1相対コンポーネントアドレスに相対して記述される、ステップと、
第6ポインタアドレス決定ステップにおいて、第1相対ポインタ部分アドレスと、第2相対ポインタアドレスと、第2相対コンポーネントアドレスとに基づいて、第2相対ポインタ部分アドレスを決定するステップであって、第2相対コンポーネントアドレスに相対する、第2データ要素のメモリ領域内のメモリロケーションは、第2相対ポインタ部分アドレスによって決定され、第2データ要素に関連する第2相対ポインタ部分アドレスは、第1データ要素に関連する第1相対ポインタ部分アドレスに対応する、ステップと、
第1アドレス決定ステップにおいて、第2相対ポインタ部分アドレスと、第2相対コンポーネントアドレスと、第2データサブ要素の第2相対メモリアドレスと、第2メモリ領域における第2データ要素の第1メモリロケーションとに基づいて、第2データサブ要素の第2コンポーネントの絶対メモリアドレスを決定する、ステップと、を含む。
これは、ポインタ要素が複合タイプのデータタイプのデータオブジェクトのコンポーネント内のメモリアドレスを参照する、ポインタ要素のデータ移行のための正確な方法を提供する技術的利点を達成する。
第5ポインタアドレス決定ステップにおいて、第1相対ポインタアドレスと、第1ポインタ要素によって参照される第1データサブ要素のコンポーネントの第1相対コンポーネントアドレスとに基づいて、第1相対ポインタ部分アドレスが決定される。第1相対ポインタ部分アドレスは、第1ポインタ要素によって参照される第1データサブ要素のコンポーネントの第1相対コンポーネントアドレスに相対する、第1ポインタ要素によって参照される第1データ要素のメモリ領域内のメモリロケーションを記述する。ここで、第1ポインタ要素によって参照されるメモリアドレスが、第1コンポーネントの第1メモリロケーションと異なる場合、第1相対ポインタ部分アドレスは第1相対コンポーネントアドレスとは異なる。これは、第1ポインタ要素が第1コンポーネントを指している場合である。特に、これは、第1データサブ要素の第1コンポーネントが同様に、複雑なデータタイプ、例えば、第1コンポーネント自身が複合タイプを有し、かつ同様に、ポインタ要素によって参照されるコンポーネントを有する場合に起こり得る。
第6ポインタアドレス決定ステップにおいて、第1相対ポインタ部分アドレスと、第2相対ポインタアドレスと、第2相対コンポーネントアドレスとに基づいて、第2相対ポインタ部分アドレスが、決定される。第2相対ポインタ部分アドレスは、第2相対コンポーネントアドレスに相対する、第2データ要素のメモリ領域内のメモリロケーションを記述する。第2データ要素内で、第2相対ポインタ部分アドレスは、第1データ要素のメモリ領域内の第1相対ポインタ部分アドレスによって記述されるメモリアドレスに対応するメモリアドレスを記述する。2つのポインタ部分アドレスの対応により、第1ポインタ要素と第2ポインタ要素とは、第1データ要素と第2データ要素内で、第1データサブ要素の第1コンポーネントと第3リレーションを介して関連付けられた第2データサブ要素の第2コンポーネントとの同じ領域に、相対的に示されている。
第1アドレス決定ステップにおいて、第2相対ポインタ部分アドレスと、第2相対コンポーネントアドレスと、第2データサブ要素の第2相対メモリアドレスと、第2データ要素の第1メモリロケーションの絶対メモリアドレスとに基づいて、第2データサブ要素の第2コンポーネントの絶対メモリアドレスが決定される。
一実施形態によれば、ポインタ移行ステップは、
第7相対ポインタアドレス決定ステップにおいて、第1相対ポインタアドレスと第1相対要素アドレスに基づいて、第3相対ポインタ部分アドレスを決定するステップであって、第3相対ポインタ部分アドレスによって、第1ポインタ要素によって参照される第1データ要素のメモリ領域内のメモリロケーションは、第1データサブ要素の第1要素の第1相対要素アドレスに相対して記述される、ステップと、
第8ポインタアドレス決定ステップにおいて、第3相対ポインタ部分アドレスと、第2相対ポインタアドレスと、第2相対要素アドレスとに基づいて、第4相対ポインタ部分アドレスを決定するステップであって、第2データ要素のメモリ領域内のメモリロケーションは、第4相対ポインタ部分アドレスによって第2相対要素アドレスに相対して決定され、第2データサブ要素に関連する第4相対ポインタ部分アドレスは、第1データサブ要素に関連する第3相対ポインタ部分アドレスに対応する、ステップと、
第1アドレス決定ステップにおいて、第4相対ポインタ部分アドレスと、第2相対要素アドレスと、第2データサブ要素の第2相対メモリアドレスと、第2メモリ領域における第2データ要素の第1メモリロケーションとに基づいて、第2データサブ要素の第2要素の絶対メモリアドレスを決定する、ステップと、含む。
これは、ポインタ要素がフィールドタイプのデータタイプのデータオブジェクトの要素を参照する、ポインタ要素のデータ移行のための正確な方法を提供する技術的利点を達成する。
第7ポインタアドレス決定ステップにおいて、第1相対ポインタアドレスと第1相対要素アドレスとに基づいて、第3相対ポインタ部分アドレスが決定される。第1データサブ要素と第2データサブ要素とが複合タイプであり、第1ポインタ要素が第1データサブ要素のコンポーネントを指す場合と同様に、第1ポインタ部分アドレスは、第1データサブ要素の参照される第1要素の第1相対要素アドレスに相対する、第1データ要素のメモリ領域内の第1ポインタ要素によって参照されるメモリアドレスを記述する。第1ポインタ要素が第1データサブ要素の第1要素を指しているとき、第3相対ポインタ部分アドレスは、第1相対要素アドレスとは異なる。これは、特に、第1要素が再び複雑なデータタイプであり、かつ再び第1ポインタ要素によって参照される固有の要素またはコンポーネントを含む場合に起こり得る。
第8ポインタアドレス決定ステップにおいて、第3相対ポインタ部分アドレスと、第2相対ポインタアドレスと、第2相対要素アドレスとに基づいて、第4相対ポインタ部分アドレスは、決定される。
続いて、第4相対ポインタ部分アドレスと、第2相対要素アドレスと、第2データサブ要素の第2相対メモリアドレスと、第2データ要素の第1メモリロケーションの絶対メモリアドレスに基づいて、第2要素の絶対メモリアドレスは、決定される。決定された第4相対ポインタ部分アドレスによって、絶対メモリアドレスが第2データ要素のメモリ領域内で決定される。この絶対メモリアドレスは、第2データ要素内で、第1データサブ要素の第1要素内の第1ポインタ要素によって参照されるメモリアドレスに対応する。これにより、第2ポインタ要素は、第1ポインタ要素によって参照される第1データサブ要素の第1要素内の領域に対応する、第2データサブ要素の第2要素内の領域を参照することを保証する。
一実施形態によれば、ポインタ移行ステップは、
第1検出ステップにおいて、第1ポインタ要素によって参照される第1メモリアドレスがデータサブ要素の第1メモリアドレスであることを検出するステップ、
第2検出ステップにおいて、第1ポインタ要素によって参照される第1メモリアドレスがデータサブ要素の第1コンポーネントの第1メモリアドレスであることを検出するステップ、
第1検出ステップにおいて、第1ポインタ要素によって参照される第1メモリアドレスがデータサブ要素の第1要素の第1メモリアドレスであることを検出するステップ、のうち少なくとも1つのステップと、さらにを含む。
これは、ポインタの明確な移行が達成されるという技術的な利点がある。特に、あいまいなメモリアドレスの場合に、明確な移行を保証し得る。第1ポインタ要素が複合タイプのデータサブ要素の第1メモリロケーションを参照する場合、この方法は、データサブ要素を参照することと、データサブ要素の第1コンポーネントを参照することとを区別することを可能にする。データサブ要素は第1メモリロケーションでも参照されてもよい。同様に、この方法は、フィールドタイプのデータサブ要素の場合、データサブ要素を参照することとデータサブ要素の第1要素を参照することとを区別することを可能にする。この目的のために、ポインタ要素のデータタイプだけでなく、データサブ要素、コンポーネント要素のデータタイプも、この方法で考慮することができる。そして、第1ポインタ要素がデータサブ要素を参照するのか、データサブ要素のコンポーネントを参照するのか、データサブ要素の要素を参照するのかを、データタイプに基づいて決定してもよい。
一実施形態によれば、第1データ要素は、少なくとも1つのさらなる第1データサブ要素を含み、第1データサブ要素と少なくとも1つのさらなる第1データサブ要素とは、第1継承リレーションを介して関連付けられ、第2データサブ要素は、少なくとも1つのさらに第2データサブ要素を含み、第2データサブ要素と少なくとも1つのさらなる第2データサブ要素とは、第2継承リレーションを介して関連付けられる。ポインタ移行ステップは、第1継承決定ステップにおいて、第1データサブ要素と少なくとも1つの更なる第1データサブ要素との間の第1継承リレーションを決定するステップであって、第1データサブ要素はさらなる第1データサブ要素のサブタイプであるステップと、第2継承決定ステップにおいて、第2データサブ要素と少なくとも1つのさらなる第2データサブ要素との間の継承リレーションを決定するステップであって、第2データサブ要素は、さらなる第2データサブ要素のサブタイプである、ステップと、を含む。
これは、継承リレーションを介してさらなるデータサブ要素に関連するデータサブ要素を参照するポインタ要素の明確な移行を提供する技術的利点を達成する。
サブタイプは、継承リレーションに従って、少なくとも1つの親オブジェクトの子オブジェクトであり、継承リレーションにより少なくとも1つの親オブジェクトの少なくとも1つの特徴または属性を持つデータオブジェクトである。
一実施形態によれば、方法はさらに、
オブジェクト検証ステップにおいて、第1ポインタオブジェクトは、第1データ要素によって包含されていることを検証する、ステップと、
第3オブジェクト識別ステップにおいて、第1ポインタオブジェクトは、第1データ要素によって包含されていない場合、第2ポインタオブジェクトを第1ポインタオブジェクトとして識別する、ステップと、
第2ポインタ記憶ステップにおいて、第1ポインタ要素の値を第2ポインタ要素に書き込む、ステップと、を含む。
これにより、ポインタ要素が、移行されるオートメーションシステムの制御プログラムのグローバル状態内にないポインタオブジェクトを参照する、ポインタ要素のデータ移行のための正確な方法を提供するという技術的利点を達成する。
本実施形態における方法は、第1ポインタ要素は、第1ポインタオブジェクトを参照し、第1ポインタオブジェクトは、第1データ要素に含まれない場合に関する。したがって、第1ポインタオブジェクトは、第1データサブ要素、第1コンポーネント、または第1データ要素の第1要素またはオブジェクトではない。
オブジェクト検証ステップは、第1ポインタオブジェクトが第1データ要素に包含されることを検証する。
第3オブジェクト識別ステップにおいて、第1ポインタオブジェクトが第1データ要素で構成されていない場合、第2ポインタオブジェクトは、第1ポインタオブジェクトとして識別される。第1ポインタ要素と第2ポインタ要素とは、第1リレーションを介して互いに関連付けられ、したがって第1制御プログラム内の第1ポインタ要素と第2制御プログラム内の第2ポインタ要素とは、同一の機能と役割を果たすので、第1ポインタ要素と第2ポインタ要素とは、同一のオブジェクトを参照するか、またはリレーションを介して互いに関連付けられた第1および第2ポインタオブジェクトをそれぞれ参照するようにしなければならない。第1ポインタオブジェクトは、第1データ要素の一部ではなく、したがって第1データ要素から第2データ要素へのデータ移行の影響を受けないため、第1ポインタ要素によって参照される第1ポインタオブジェクトのメモリアドレスは、第1データ要素から第2データ要素へのデータ移行によって変更されない。
データ移行が成功した後、第2制御プログラム内の第1ポインタ要素に対応する第2ポインタ要素が第1ポインタオブジェクトを参照することを保証するために、第3オブジェクト識別ステップにおいて、第2ポインタオブジェクトに等しい第1ポインタ要素によって参照された第1ポインタオブジェクトのメモリアドレスが、第2ポインタ記憶ステップにおいて、第2ポインタ要素に記憶される。これにより、データ移行が成功した後、第2ポインタ要素は、第1データ要素と第2データ要素の外部に記憶されたポインタオブジェクトを参照することを保証する。
一実施形態によれば、ポインタ移行ステップは
第2ポインタ識別ステップにおいて、第3ポインタ要素を識別するステップであって、第3ポインタ要素は、第1データ要素または第2データ要素のいずれかに包含されず、第3ポインタ要素は、第1データ要素に包含される第3ポインタオブジェクトを参照し、第3ポインタオブジェクトは、第1データサブオブジェクト、第1コンポーネントまたは第1要素であり、第3ポインタオブジェクトは、第2リレーション、第3リレーションまたは第4リレーションを介して、第2データサブオブジェクト、第2コンポーネントまたは第2要素に関連付けられる、ステップと、
第2アドレス決定ステップにおいて、第3ポインタオブジェクトに関連付けられた第2データサブ要素、第3ポインタオブジェクトに関連付けられた第2コンポーネント、または第2メモリ領域における第3ポインタオブジェクトに関連付けられた第2要素の絶対メモリアドレスを決定する、ステップと、
第3ポインタ記憶ステップにおいて、第3ポインタオブジェクトに関連付けられた第2データサブ要素、第3ポインタオブジェクトに関連付けられた第2コンポーネント、または第3ポインタオブジェクトに関連付けられた第2要素の絶対メモリアドレスを第3ポインタ要素の値として書き込む、ステップと、を含む。
これは、プログラム状態のデータ移行の過程で、ポインタ要素のデータ移行のための正確な方法を提供する技術的利点を提供する。この場合、ポインタ要素は、移行されるプログラム状態の一部ではなく、移行されるプログラム状態の一部であるポインタオブジェクトを参照する。
以下の実施形態における方法は、第1データ要素または第2データ要素のいずれにも含まれない第3ポインタ要素が第1データ要素のオブジェクトである第3ポインタオブジェクトを参照する場合に関する。
このために、第2ポインタ識別ステップは、第1データ要素または第2データ要素のいずれにも包含されない第3ポインタ要素を識別し、第1ポインタ要素に含まれる第3ポインタオブジェクトを参照する。第1ポインタオブジェクトは、第1データサブ要素、または第1データサブ要素の第1コンポーネントまたは第1要素であってもよい。第3ポインタオブジェクトは、第2データ要素のオブジェクトにさらに関連付けられ、対応するリレーションを介して第2データサブ要素または第2データサブ要素の第2コンポーネントまたは第2要素に対応する。
第2アドレス決定ステップにおいて、第3ポインタオブジェクトに関連付けられた第2データ要素のオブジェクトのメモリアドレスが決定される。第2データサブ要素または第2データサブ要素の第2コンポーネントまたは第2要素であってもよい、第2データ要素のオブジェクトのアドレス決定は、第1データ要素のメモリ領域内の第3ポインタオブジェクトの第1相対メモリアドレスが決定され、これらの決定された相対メモリアドレスに基づいて、第2データ要素のメモリ領域内の第3ポインタオブジェクトに関連付けられた第2データ要素のオブジェクトの相対メモリアドレスが決定される、前述の方法ステップを含んでいてもよい。
第3ポインタ記憶ステップにおいて、第3ポインタオブジェクトに関連付けられた第2データ要素のオブジェクトの決定された絶対メモリアドレスは、第3ポインタ要素に記憶され、第3ポインタ要素は、第1データ要素の第2データ要素へのデータ移行の影響を受けずに残り、第1データ要素のメモリ領域外かつ第2データ要素のメモリ領域外のメモリ領域に記憶され続ける。
一実施形態によれば、方法はさらに、
関数生成ステップにおいて、第1ポインタ要素を第2ポインタ要素にマッピングするための第1ポインタ移行関数を生成するステップであって、第1ポインタ移行関数は、第1ポインタイプのポインタ要素を第2ポインタイプのポインタ要素にマッピングし、ポインタ移行ステップを実行する、ステップを含む:。
これは、ポインタ要素のデータ移行は、第1ポインタ移行関数を実行することによって実行されてもよいという技術的利点を達成する。この目的のために、第1ポインタ移行関数は、関数生成ステップで生成される。第1ポインタ移行関数は、第1ポインタイプのポインタ要素を第2ポインタイプのポインタ要素にマッピングし、ポインタ移行ステップを実行するようにセットアップされる。
第1ポインタ移行関数は、第1ポインタ要素を第2ポインタ要素にマッピングすることに限定されない。むしろ、第1ポインタ移行関数は、それぞれが第1ポインタタイプと第2ポインタタイプで異なるポインタ要素を互いにマップングすることができる。ポインタ要素のポインタタイプは、それぞれのポインタ要素のデータタイプを記述する。それぞれのポインタ要素のポインタタイプは、ポインタ要素によって参照されるポインタオブジェクトのデータタイプを考慮に入れる。例えば、ポインタ要素は、それぞれのポインタ要素によって参照されるポインタオブジェクトと同じデータタイプであってもよい。
第1ポインタ移行関数を生成することにより、ポインタ要素の移行処理または第1データ要素から第2データ要素へのデータ移行処理が加速されることが達成される。第1ポインタ要素を第2ポインタ要素にマッピングするためにポインタ移行関数を使用することにより、複数の第1ポインタ要素から第2ポインタ要素への異なるデータ移行操作に関数が使用されてもよい。したがって、特に複数の第1および第2ポインタ要素の場合、個々の第1ポインタ要素ごとに、対応する個々の第2ポインタ要素へのマッピングルールを提供しなければならないことが回避されてもよい。代わりに、対応するポインタ要素をそれぞれのポインタタイプでマッピングするのに適した生成されたポインタ移行関数は、必要に応じて何度でも呼び出されて実行されてもよい。これにより、ポインタ要素の移行処理が時間的に高速化される。さらに、生成されたポインタ移行関数は、後続のデータ移行操作に再利用されてもよい。
一実施形態によれば、関数生成ステップは
タイプ識別ステップにおいて、第1ポインタ要素の第1ポインタタイプと第2ポインタ要素の第2ポインタタイプを識別する、ステップを含む。
これは、ポインタ移行関数が移行されるポインタ要素のそれぞれのポインタタイプに調整されてもよいという技術的利点を有する。関数生成ステップにおいて、第1ポインタ要素のポインタタイプと第2ポインタ要素のポインタタイプは、識別される。識別された第1および第2ポインタタイプに基づいて、第1ポインタ移行関数は、生成され、それにより、それぞれの生成されたポインタ移行関数は、第1ポインタタイプのポインタを第2ポインタタイプのポインタにマッピングする。第1制御プログラムと第2制御プログラムからの情報は、第1ポインタ要素の第1ポインタタイプと第2ポインタ要素の第2ポインタタイプを識別するために使用されてもよい。第1および第2ポインタ要素のポインタタイプは、第1および第2制御プログラムで定義される。
一実施形態によれば、方法はさらに、
第1検証ステップにおいて、第1ポインタ移行関数が関数生成ステップで生成可能であることを検証する、ステップと、
初期化ステップにおいて、関数生成ステップで第1ポインタ移行関数が生成され得なかった場合、第2ポインタ要素を初期値に設定する、ステップと、
および/または終了ステップにおいて、関数生成ステップで第1ポインタ移行関数が生成できなかった場合、移行を中止するステップであって、第1ポインタ要素の第1ポインタタイプが第2ポインタ要素の第2ポインタタイプで一意に表現できない場合において、第1ポインタ移行関数が、生成され得ない、ステップと、を含む。
これは、ポインタ要素のデータ移行のための柔軟な方法がオートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程で提供され得るという技術的利点を有する。
第1検証ステップにおいて、第1ポインタ移行関数が関数生成ステップで生成され得るかどうかを検証する。第1ポインタ移行関数の生成に失敗した場合、第1ポインタ要素は、第2ポインタ要素にマッピングできず、第1ポインタ要素のデータ移行は失敗する。
初期化ステップにおいて、第1ポインタ移行が生成され得なかった場合、第2ポインタ要素は初期値に設定されてもよい。これにより、第1ポインタ要素から第2ポインタ要素へのデータ移行に失敗したにもかかわらず、第2ポインタ要素は許容される数値が依然として与えられているので、第1データ要素から第2データ要素へのデータ移行が完了した後、第2制御プログラムは第2データ要素にアクセスし、第2データ要素に基づいて実行されてもよい。
あるいは終了ステップにおいて、第1ポインタ移行関数の生成が失敗した場合、第1データ要素から第2データ要素へのデータ移行、または第1ポインタ要素から第2ポインタ要素へのデータ移行は、中止されてもよい。これにより、第1ポインタ要素から第2ポインタ要素へのデータ移行に失敗した場合、第2ポインタ要素は、第1ポインタ要素の値に対応しない初期値が提供されることを回避できる。
これは、例えば、第1ポインタ要素がオートメーションシステムの制御に不可欠な第1データ要素のオブジェクトを参照する場合に、有利である。第1ポインタ要素から第2データ要素の対応する第2ポインタ要素へのデータ移行に失敗した場合、対応する第2ポインタ要素は、初期値に設定されたので、第2ポインタ要素による対応するオブジェクトの参照が保証されず、第2データ要素を考慮して第2制御プログラムに基づいてオートメーションシステムを制御する際に重大なエラーが発生し、オートメーションシステムまたはオートメーションシステムの一部に損害を与える可能性がある。
これを回避するために、データ移行に障害がある場合は、第1データ要素から第2データ要素へのデータ移行を継続し、そして第2ポインタ要素に初期値を提供する代わりに、移行が完全に中止されてもよい。データ移行を中止することによって、第1データ要素を考慮に入れた第1制御プログラムに基づいてオートメーションシステムをさらに制御するされてもよく、誤って移行された第2ポインタ要素を含む第2データ要素を考慮に入れた第2制御プログラムに基づいた制御によって正当化されるオートメーションシステムの誤動作を回避されてもよい。
一実施形態によれば、コントローラは、制御プログラムを解釈するするためのコンパイラモジュールをさらに含み、関数生成ステップはコンパイラモジュールによって実行される。
これは、ポインタ移行関数を生成するための効率的で信頼性のある解決策を達成することができるという技術的利点を有する。ポインタ移行関数と、移行される第1および第2ポインタ要素のポインタタイプの両方が生成および決定される関数生成ステップは、制御プログラムを解釈するためのコンパイラモジュールによって自動的に実行されてもよい。第2制御プログラムのソースコードのコンパイル処理中に、関数生成ステップがコンパイラモジュールによって実行され、第1ポインタ移行関数が、生成されてもよい。これらの生成されたポインタ移行関数に基づいて、第1データ要素の第1ポインタ要素は、第2データ要素の第2ポインタ要素にマッピングされてもよい。これにより、時間効率のよい移行処理が達成される。
一実施形態によれば、方法はさらに、
移行ステップにおいて、第1データ要素を第2データ要素にマッピングするステップ、
第1データサブ要素を第2データサブ要素にマッピングするステップ、
第1コンポーネントを第2コンポーネントにマッピングするステップ、
および第1要素を第2要素にマッピングするステップのうち少なくとも1つのステップを含む。
これは、ポインタ要素のデータ移行を含むオートメーションシステムの制御プログラムのプログラム状態のデータ移行のための方法が提供され得るという技術的利点を達成する。移行ステップにおいて、第1データ要素は第2データ要素にマッピングされる。これは第1データ要素のすべてのオブジェクトを、第2データ要素の対応するオブジェクトにマッピングすることを含む。第2データ要素の対応するオブジェクトは、対応するリレーションを介して第1データ要素のオブジェクトに関連付けられる。
移行ステップにおいて、したがって、第1データ要素は、対応する第2リレーションを介して関連付けされた第2データ要素にマッピングされてもよい。さらに、第1データ要素の第1コンポーネントは、対応する第3リレーションを介して関連付けられた第2データサブ要素の第2コンポーネントにマッピングされてもよい。さらに、第1データサブ要素の第1要素は、対応する第4リレーションを介して関連付けされた第2データ要素の第2データサブ要素の第2要素にマッピングされてもよい。移行ステップにおいて、第1データ要素のオブジェクトを第2データ要素のオブジェクトにマッピングすることにより、第1制御プログラムおよび第1制御プログラムを介して制御されるオートメーションシステムのグローバル状態を含む第1データ要素の情報が、第2データ要素およびそこに含まれるオブジェクトにマッピングされてもよい。
平行して、ポインタ移行ステップを使用して、第1データ要素の第1ポインタ要素を、第1リレーションを介して関連付けられた第2データ要素の第2ポインタ要素にマッピングしてもよい。これにより、第1制御プログラムのグローバル状態を第2データ要素にマッピングすることができる。
したがって、第1制御プログラムを第2制御プログラムに置き換えた後、第2制御プログラムは、移行が成功した後に第2データ要素に記憶された第1制御プログラムのグローバル状態にアクセスしてもよく、オートメーションシステムは、データ移行処理の開始前の状態における第1制御プログラムのグローバル状態を考慮して、第2制御プログラムに基づいてオートメーションシステムを制御してもよい。これは、ポインタ要素のデータ移行を含むプログラム状態を移行する効率的な方法を提供し、第1制御プログラムを第2制御プログラムに置き換え、第1制御プログラムのプログラム状態を第2制御プログラムに転送することを可能にする。
一実施形態によれば、関数生成ステップは
第2ポインタ移行関数を生成するステップであって、第2ポインタ移行関数は、第2アドレス決定ステップと、第3ポインタ記憶ステップとを実行し、第3ポインタオブジェクトを対応する第2データサブ要素、対応する第2コンポーネントまたは対応する第2要素にマッピングする、ステップを含む。
これにより、オートメーションシステムのプログラム状態のデータ移行過程において、ポインタ要素のデータ移行のための効率的な方法を提供するという技術的利点が達成される。第2アドレス決定ステップと第3ポインタ記憶ステップとを実行し、第3ポインタオブジェクトを第2データ要素の対応するオブジェクトにマッピングするように第2ポインタ移行関数を生成することによって、第3ポインタ要素の時間効率の良いデータ移行が達成されてもよい。対応する移行関数を実行することによるデータ移行は、異なる移行するポインタ要素のデータ移行が複数回実行される場合、対応する移行関数に複数回アクセスしてもよく、時間的に移行処理を高速化するという利点がある。さらに、生成されたポインタ移行関数は、後続の移行操作に再利用されてもよい。
一実施形態によれば、方法はさらに、
第1データ要素を第2データ要素にマッピングするための第1移行関数を生成するステップであって、第1移行関数は、第1メモリ領域内の第1データ要素の第1データタイプのデータを読み出し、第1データタイプの読み出したデータを第2データ要素の第2データタイプに変換し、第2データタイプに変換したデータを第2メモリ領域内に記憶する、ステップと、
第1データサブ要素を第2データサブ要素にマッピングするための第2移行関数を生成するステップであって、第2移行関数は、第1メモリ領域内の第1データサブ要素の第3データタイプのデータを読み出し、第3データタイプの読み出したデータを第2データサブ要素の第4データタイプに変換し、第4データタイプに変換したデータを第2メモリ領域内に記憶する、ステップと、
第1コンポーネントを第2コンポーネントにマッピングするための第3移行関数を生成するステップであって、第3移行関数は、第1メモリ領域内の第1コンポーネントの第5データタイプのデータを読み出し、読み出したデータを第2コンポーネントの第6データタイプに変換し、変換したデータを第2メモリ領域に記憶する、ステップと、
第1要素を第2要素にマッピングするための第4移行関数を生成するステップであって、第4移行関数は、第1メモリ領域内の第1要素の第5データタイプのデータを読み出し、読み出したデータを第2コンポーネントの第6データタイプに変換し、変換したデータを第2メモリ領域内に記憶する、ステップと、を含む。
これは、プログラム状態の正確かつ効率的なデータ移行が達成され得るという技術的利点を有する。第1データ要素を第2データ要素にマッピングするために移行関数を使用することによって、移行処理の加速を達成することができる。さらに、生成された移行関数は、将来の移行操作のために再使用されてもよい。適切な移行関数を生成することにより、これらは、移行されるそれぞれのオブジェクトに具体化されてもよい。
一実施形態によれば、生成ステップは
識別ステップにおいて、第1データ要素の第1データタイプと第2データ要素の第2データタイプを識別するステップと、
第1データサブ要素の第3データタイプと、第2データサブ要素の第4データタイプと、第1データサブ要素と第2データサブ要素との間の第2リレーションとを識別するステップと、
第1データサブ要素の第1コンポーネントの第5データタイプと、第2データサブ要素の第2コンポーネントの第6データタイプと、第1コンポーネントと第2コンポーネントとの間の第3リレーションとを識別するステップと、
第1データサブ要素の第1要素の第7データタイプと、第2データサブ要素の第2要素の第8データタイプと、第1要素と第2要素との間の第4リレーションを識別するステップと、を含む。
これは、対応する移行関数が第1データ要素と第2データ要素に移行されるそれぞれのオブジェクトのデータタイプに調整され得るという技術的利点を有する。したがって、移行関数は、第1データ要素の特定のオブジェクトを第2データ要素の特定のオブジェクトにマッピングすることに限定されず、特定のデータタイプの異なるオブジェクトを互いにマッピングするのに適している。これにより、高い柔軟性と、加速された移行処理とを達成することができる。
一実施形態によれば、方法はさらに、
第2検証ステップにおいて、第1移行関数、第2移行関数、第3移行関数、および第4移行関数の少なくとも1つが、生成ステップにおいて生成可能かどうかを検証するステップであって、第1データ要素の第1データタイプが第2データ要素の第2データタイプに変換可能でない場合に、第1移行関数を生成できず、第1データサブ要素の第3データタイプが、第2データサブ要素の第4データタイプに変換可能でない場合に、第2移行関数が生成できず、第1データサブ要素の第1コンポーネントの第5データタイプが、第2データサブ要素の第2コンポーネントの第6データタイプに変換可能でない場合に、第3移行関数を生成できず、かつ第1データサブ要素の第1コンポーネントの第6データタイプが、第2データサブ要素の第2コンポーネントの第8データタイプに変換可能でない場合に、第4移行関数を生成できない、ステップと、
終了ステップにおいて、第1移行関数、第2移行関数、第3移行関数、および第4移行関数の少なくとも1つが生成できない場合、第1データ要素から第2データ要素へのデータ移行を中止する、ステップと、を含む。
これは、第1データ要素のオブジェクトを第2データ要素のオブジェクトにマッピングするために必要な移行関数が生成できなかった場合に、第1データ要素の第2データ要素への移行が中止されてもよいという技術的な利点がある。第1データ要素から第2データ要素へのデータ移行が中止された場合、第1制御プログラムに基づいてオートメーションシステムの制御が継続されてもよい。したがって、遠いデータ要素を考慮している第2制御プログラムに基づいてオートメーションシステムの制御が、第1データ要素の第2データ要素への誤ったデータ移行によるオートメーションシステムの誤動作につながることを回避することができる。
一実施形態によれば、第1制御プログラムの周期的な実行が中断され、第1データ要素は、第1制御プログラムのプログラム状態と、第1制御プログラムに基づいて最後に実行された制御サイクル時の自動化システムの状態とを記述する。
これは、ポインタ要素の正確かつ効果的なデータ移行を保証するという技術的利点を達成する。第1制御プログラムの周期的な実行を中断することにより、データ移行時に第1データ要素の値が変更されないように残されることを確実にする。第1制御プログラムの実行を中断することにより、第1データ要素にそれ以上のデータは書き込まれず、第1データ要素の値は、最後に実行された制御サイクルの終了時の値に対応する。これにより、第1ポインタ要素の値を第2ポインタ要素に明確なマッピングをすることを含み、第1データ要素の値を第2データ要素に正確で明確なマッピングをすることが可能になる。
一実施形態によれば、第2制御プログラムは第1制御プログラムの更新であり、第2データ要素を考慮して、第2制御プログラムを周期的に実行することによって、第1制御プログラムを置換し、オートメーションシステムを制御するように構成される。
これにより、第1制御プログラムのプログラム状態のデータ移行に成功し、第2制御プログラムに基づいて第1データ要素の値を第2データ要素にマッピングした後、第1制御プログラムに基づいて最後に実行された制御サイクルの時点のオートメーションシステムの状態で、第2データ要素を考慮してオートメーションシステムを制御することができるという技術的利点が達成される。したがって、第1制御プログラムを第2制御プログラムに置き換えてもよく、最後に実行された制御サイクルの状態で、第2制御プログラムに基づいてオートメーションシステムを制御してもよい。
本発明は、添付の図面を参照してより詳細に説明される:
一実施形態によるオートメーションシステムの概略図 一実施形態によるオートメーションシステムの制御プログラムの更新処理の概略図 一実施形態によるオートメーションシステムにおけるポインタ要素のデータ移行のための方法のフローチャート さらなる実施形態によるオートメーションシステムにおけるポインタ要素のデータ移行のための方法のフローチャート 一実施形態によるオートメーションシステムにおけるポインタ要素のデータ移行におけるポインタオブジェクトのメモリアドレスの決定の概略図 さらなる実施形態による、オートメーションシステムにおけるポインタ要素のデータ移行におけるポインタオブジェクトのメモリアドレスの決定の模式図 さらなる実施形態による、オートメーションシステムにおけるポインタ要素のデータ移行におけるポインタオブジェクトのメモリアドレスの決定の概略図 一実施形態によるオートメーションシステムの制御プログラムの更新バージョンの生成処理の概略図である 一実施形態によるオートメーションシステムの制御プログラムのポインタ要素の移行処理の概略図である。
図1は、一実施形態によるオートメーションシステム100の概略図を示す。
図1のオートメーションシステム100は、コントローラ101と、マスタサブスクライバ103と、4つのスレーブサブスクライバ105とを備え、各スレーブサブスクライバはバスシステム107を介して互いに接続され、コントローラ101に接続されている。コントローラ101のメモリSPでは、第1制御プログラムAが第1メモリ領域SPAに記憶され、第2制御プログラムBが第2メモリ領域SPBに記憶される。第1制御プログラムAは、マスタサブスクライバ103およびスレーブサブスクライバ105を周期的に制御するために使用される。第2制御プログラムBは、第1制御プログラムAの更新されたバージョンであり、オートメーションシステム100のサブスクライバを周期的に制御するためにも使用される。例えば、更新版は、第1制御プログラムAの更新又は第1制御プログラムAの修正版であってもよい。したがって、第2制御プログラムBは、第1制御プログラムAに基づいており、制御プログラムの様々な領域において、第1制御プログラムAから逸脱してもよい。
図1に示されるオートメーションシステム100は、単にオートメーションシステムの例示としての役割を果たす。本発明による方法は、図1に示すオートメーションシステムに限定されることを意図しない。
図2は、一実施形態によるオートメーションシステム100の制御プログラムAの更新処理の概略図を示す。
図2は、図1のオートメーションシステム100のコントローラ101のメモリSPを示している。メモリSPは、第1メモリ領域SPAと第2メモリ領域SPBに分割されている。第1メモリ領域SPAは、第1制御プログラムAを記憶し、第2メモリ領域SPBは、第2制御プログラムBを記憶する。第1制御プログラムAは、第1実行可能コードPAと第1データ要素GAとを含み、第2制御プログラムBは、第2実行可能コードPBと第2データ要素GBとを含む。
第1制御プログラムAの第1実行可能コードPAは、制御プログラムAを実行する役目を果たし、コントローラ101によって実行されてもよい。第2制御プログラムBの第2実行可能コードPBは、第2制御プログラムBを実行するためのものであり、コントローラ101によって実行されてもよい。第1データ要素GAは、第1制御プログラムAのプログラム状態を記述する。第1制御プログラムAのプログラム状態は、第1制御プログラムAのグローバル状態に対応し、第1制御プログラムAを実行するために必要なすべての情報を含む。第1制御プログラムAのグローバル状態は、第1制御プログラムAを実行するために必要なすべての情報を含む。さらに、第1制御プログラムAのグローバル状態は、オートメーションシステム100に関するすべての情報を含み、第1制御プログラムAによって周期的に制御されるオートメーションシステム100の状態を記述する。
第1読み出し/書き込みステップにおいて、第1実行可能コードPAは、第1データ要素GAから情報を読み出したり、第1データ要素GAに情報を書き込んだりしてもよい。第2データ要素GBは、第2制御プログラムBのプログラム状態を記述し、第2制御プログラムBを実行するために必要なすべての情報が含まれる。
データ移行の時点では第2制御プログラムBは実行されず、したがって、第2データ要素GBは、オートメーションシステム100の状態に関する情報を含まない。データ移行の時点では、第2制御プログラムBを実行し、オートメーションシステム100を制御するために必要なすべてのオブジェクトは、第2データ要素GBに記憶される。しかしながら、個々のオブジェクトは、初期値でのみ開始される。
第1データ要素GAに記憶された第1制御プログラムAのグローバル状態の第2データ要素GBへのデータ移行後、第2データ要素は、第2制御プログラムBを実行するために必要な全ての情報を含む。さらに、第1制御プログラムAのグローバル状態のデータ移行が成功した後、第2データ要素GBは、データ移行が実行される前の時点、特に最後に実行された制御サイクルの時点における、オートメーションシステム100の状態に関する情報を含む。第2読み出し/書き込みステップにおいて、第2制御プログラムBの第2実行可能コードPBは、第2データ要素GBにデータを書き込んだり、第2データ要素GBからデータを読み出したりしてもよい。
第1置換ステップ202において、オートメーションシステム100の制御プログラムを制御プログラムのプログラム状態のデータ移行で更新する本発明の方法による第1制御プログラムAのプログラム状態の同時データ移行で第1制御プログラムAを第2制御プログラムに更新するために、第1制御プログラムAの第1実行可能コードPAは、第2制御プログラムBの第2実行可能コードPBを置き換える。さらに、移行ステップ261において、第1制御プログラムAのプログラム状態を記述する第1データ要素GAの値は、特に第1制御プログラムAおよびオートメーションシステム100のグローバル状態は、第2データ要素GBにマッピングされる。
移行ステップ261において、第1データ要素GAの値を第2データ要素GBにマッピングすることにより、第1制御プログラムAのプログラム状態、またはそれぞれ、第1データ要素GAの値によって記述される第1制御プログラムAおよびオートメーションシステム100のグローバル状態は、第2データ要素GBに記憶される。したがって、移行ステップ261におけるデータ移行が成功した後、第2データ要素GBは、第1制御プログラムAのプログラム状態、すなわち第1制御プログラムAおよびオートメーションシステム100のグローバル状態を記述する。
第1置換ステップ202において、第1実行可能コードPAを第2実行可能コードPBに正常に置換し、および移行ステップ261において、第1制御プログラムAまたはオートメーションシステム100のグローバル状態を第2制御プログラムBの第2データ要素GBへの正常なデータ移行の後、第2制御プログラムBは、オートメーションシステム100のコントローラ101によって実行可能であり、最後に実行された制御サイクルの時点での第1制御プログラムAまたはオートメーションシステム100のグローバル状態にアクセスしてもよいので、オートメーションシステム100は、最後に実行された制御サイクルの時点の状態で第2制御プログラムBによって制御されてもよく、オートメーションシステム100は、最後に実行された制御サイクルの時点の状態で第2制御プログラムによって制御されてもよい。
図3および図4に示す方法200の説明は、図5~図9に示すオブジェクトを参照して行われる。
図3および図4の方法200は、図1によるオートメーションシステム100および図2によるデータ移行処理を指すが、これらに限定されるものではない。
図3は、一実施形態によるオートメーションシステム100におけるポインタ要素のデータ移行のための方法200のフローチャートを示す。
図3のオートメーションシステム100の制御プログラムのプログラム状態のデータ移行の過程におけるポインタ要素のデータ移行のための方法200の実施形態において、オートメーションシステム100のコントローラ101は、第1制御プログラムAと第2制御プログラムBとを含み、第1制御プログラムAは、第1制御プログラムAのプログラム状態を記述し、第1ポインタオブジェクトZO1を参照する第1ポインタタイプの第1ポインタ要素Z1を少なくとも含む第1データ要素GAを含み、第2制御プログラムBは、第2制御プログラムBのプログラム状態を記述し、第2ポインタオブジェクトZO2を参照する第2ポインタタイプの第2ポインタ要素Z2の少なくとも1つを含む第2データ要素GBを含む。
方法200は、
第1ポインタ識別ステップ201において、第1ポインタ要素Z1と第2ポインタ要素Z2とを、第1リレーションR1を介して互いに関連付けられたポインタ要素として識別するステップと、
ポインタ移行ステップ203において、第1ポインタ要素Z1を第2ポインタ要素Z2にマッピングするステップと、を含み、
ここで、ポインタ移行ステップ203は
第1オブジェクト識別ステップ205において、第1ポインタ要素Z1によって参照される第1ポインタオブジェクトZO1を識別するステップと、
第2オブジェクト識別ステップ207において、第1ポインタオブジェクトZO1に関連付けられたオブジェクトを第2ポインタオブジェクトZO2として識別するステップと、
第1アドレス決定ステップ209において、第2ポインタオブジェクトZO2の絶対メモリアドレスを決定するステップと、
第1ポインタ記憶ステップ211において、第2ポインタオブジェクトZO2の決定されたメモリアドレスを第2ポインタ要素Z2の値として第2ポインタ要素Z2に書き込むステップと、を含む。
第1ポインタ識別ステップ201において、第1データポインタ要素Z1を第2ポインタ要素Z2にマッピングするために、第1ポインタ要素Z1と第2ポインタ要素Z2との間で第1リレーションが識別される。第1ポインタ要素Z1と第2ポインタ要素Z2とが同一名であれば、第1ポインタ要素Z1と第2ポインタ要素Z2とは、第1リレーションを介して互いに関連付けられる。さらに、第2制御プログラムBにおいてそのようなリレーションが明示的に定義されている場合、第1ポインタ要素Z1と第2ポインタ要素Z2とは、第1リレーションR1を介して互いに関連付けられてもよい。第1ポインタ要素Z1と第2ポインタ要素Z2との間のリレーションR1は、第1制御プログラムAにおける第1ポインタ要素Z1と第2制御プログラムBにおける第2ポインタ要素Z2とが同一の機能および役割を引き継ぐことを意味する。第1データ要素GAによって表される第1制御プログラムAのグローバル状態を移行するために第1データ要素GAから第2データ要素GBへのデータ移行では、第1データ要素GAの情報を第2データ要素GBにマッピングするために、第1ポインタ要素Z1と第2ポインタ要素Z1とは、互いにマッピングされる必要がある。
続いて、ポインタ移行ステップ203において、第1ポインタ要素Z1が第2ポインタ要素Z2にマッピングされる。
この目的のために、第1オブジェクト識別ステップ205において、第1ポインタ要素Z1によって参照される第1ポインタオブジェクトZO1は、識別される。
第1ポインタオブジェクトZO1を識別した後、第2オブジェクト識別ステップ207は、第1ポインタオブジェクトZO1に関連付けられたオブジェクトを、第2ポインタ要素Z2の第2ポインタオブジェクトZO2として識別する。第1ポインタオブジェクトZO1に関連付けられたオブジェクトを第2ポインタオブジェクトZO2として識別することは、第1ポインタオブジェクトZO1に関連付けられたオブジェクトが第2ポインタ要素Z2によって参照されてもよいことを保証する。
第1アドレス決定ステップ209において、第2ポインタオブジェクトZO2を識別した後、第2ポインタオブジェクトZO2のメモリアドレスが決定される。第1ポインタ記憶ステップ211において、第2ポインタオブジェクトZO2の決定されたメモリアドレスは、第2ポインタ要素Z2に記憶される。第2ポインタオブジェクトZO2の決定されたメモリアドレスを第2ポインタ要素Z2に記憶することにより、第2ポインタ要素Z2は、第2ポインタオブジェクトZO2を参照するように構成される。第2ポインタオブジェクトZO2が第1ポインタ要素Z1の第1ポインタオブジェクトZO1に関連付けられているという事実は、データの移行が完了した後、第2ポインタ要素Z2が第1ポインタオブジェクトZO1に対応するオブジェクトを参照することを保証する。例えば、両方のポインタオブジェクトが同一の場合、第1ポインタオブジェクトZO1と第2ポインタオブジェクトZO2との間に関連付けが存在する。この場合、第1ポインタ要素Z1と第2ポインタ要素Z2は、それぞれ同じオブジェクトを参照する。さらに、例えば、第1ポインタオブジェクトZO1が第1データ要素GAのオブジェクトであり、第2ポインタオブジェクトZO2が第2データ要素GBのオブジェクトであり、それぞれがリレーションを介して互いに関連付けられている場合、第1ポインタオブジェクトZO1と第2ポインタオブジェクトZO2とは、互いに関連付けられていてもよい。両方のオブジェクトが同一名である場合、またはそのようなリレーションが第2制御プログラムBにおいて明示的に定義されている場合、リレーションは存在する。
ポインタ移行ステップ203の完了後、第1ポインタ要素Z1の値は、第2ポインタ要素Z2にマッピングされ、第2ポインタ要素Z2は、第1ポインタオブジェクトZO1に関連付けられた第2ポインタオブジェクトZO2を参照する。第2制御プログラムBが引き続き実行中に、第2データ要素GBを考慮して、第1ポインタオブジェクトZO1に対応する第2ポインタ要素Z2によってオブジェクトが参照されること、または、第1制御プログラムAの状況における第1ポインタオブジェクトZO1の役割および機能に対応する役割または機能が、第2制御プログラムBの状況において、引き継がれることが保証される。
図4は、別の実施形態による、オートメーションシステム100におけるポインタ要素のデータ移行のための方法200のフローチャートを示す。
図4に示される方法200の実施形態は、図3に示される実施形態に基づいて構築され、図3に示される実施形態のすべての方法ステップを含む。図3について説明した処理のステップについては、以下ではこれ以上説明しない。
手順については、まず、ポインタ移行ステップ203の様々な方法ステップがより詳細に説明される。以下では、第1データ要素GAと第2データ要素GBとが、それぞれ第1メモリ領域SPAと第2メモリ領域SPBとに記憶され、複合タイプのデータタイプの各々であり、第1データ要素GAは、少なくとも1つの第1データサブ要素GA1を含み、第2データ要素GBは、少なくとも1つの第2データサブ要素GB1を含む場合を最初に説明する。第1データサブ要素GA1と第2データサブ要素GB1とは、第2リレーションR2を介して互いに関連付けられる。この点に関して、とりわけ図5を参照する。
さらに、第1ポインタ要素Z1は、第1データ要素GAの第1データサブ要素GA1を参照し、第1オブジェクト識別ステップ205において、第1データサブ要素GA1が第1ポインタ要素Z1の第1ポインタオブジェクトZO1として識別された。第2ポインタ要素Z2は、第2データ要素GBの第2データサブ要素GB1を参照し、第2オブジェクト識別ステップ207において、第2データサブ要素GB1は、対応して第2ポインタオブジェクトZO2として識別された。
続いて、第1ポインタアドレス決定ステップ213において、第1データサブ要素GA1の第1相対メモリアドレスRGA1は、決定される。第1相対メモリアドレスRGA1は、第1要素GAの第1メモリロケーションSPGAに相対する、第1データサブ要素GA1のメモリアドレスを、第1データ要素GAの第1メモリ領域SPA内に書き込む。第1データ要素GAは、連続するデータ要素として第1メモリ領域SPA内に記憶され、第1メモリ領域SPA内の連続するメモリ領域を占有する。
続いて、第3ポインタアドレス決定ステップ217において、第1ポインタ要素Z1の第1相対ポインタアドレスPARが決定される。第1ポインタ要素Z1の第1相対ポインタアドレスPARは、第1データサブ要素GA1の第1相対メモリアドレスRGA1に相対する、第1ポインタ要素Z1によって参照されるメモリロケーションを、第1データ要素GAのメモリ領域内に書き込む。第1相対メモリアドレスPARの説明については、図6と対応する説明セクションを参照されたい。
以下では、3つの異なるケースを考える。第1のケースは、第1データサブ要素GA1と第2データサブ要素GB1とが、それぞれスカラタイプのデータタイプである型である場合を指す。このような場合、第1ポインタ要素Z1と第2ポインタ要素Z2とは、スカラタイプとして記憶された第1データサブ要素GA1の第1メモリロケーションと第2データサブ要素GB1の第1メモリロケーションをそれぞれ参照する。この場合については、図4のフローチャートにおいて、第3ポインタアドレス決定ステップ217から始まる中央のストリングによって説明する。
第2のケースは、第1データサブエレメントGA1と第2データサブ要素GB1との両方が、複合タイプのデータタイプであり、第1データサブ要素GA1は、第1コンポーネントAMを有し、第2データサブ要素GB1は、第2コンポーネントBMを有する、型を扱う。本実施の形態では、第1ポインタ要素Z1は、第1データサブ要素GB1の第1コンポーネントAMを参照し、第2ポインタ要素Z2は、第2データサブ要素GB1の第2コンポーネントBMを参照する。第2のケースは、図4のフローチャートにおいて、第3ポインタアドレス決定ステップ217から始まる左側のストリングによって説明される。
第3のケースは、第1データサブ要素GA1と第2データサブ要素GB1とがそれぞれフィールドタイプのデータタイプであり、第1データサブ要素GA1は、第1要素AEを含み、第2データサブ要素GB1は、第2要素BEを含むという型を記述する。本実施形態では、第1ポインタ要素Z1は、第1データサブ要素GA1の第1要素AEを参照し、第2ポインタ要素Z2は、第2データサブ要素GB1の第2要素BEを参照する。第3のケースは、図4のフローチャートにおいて、第3ポインタアドレス決定ステップ217から始まる右側のストリング内に示されている。
第2ポインタアドレス決定ステップ215において、第1データサブ要素GA1と第2データサブ要素GB1とが、スカラタイプであり、第1ポインタ要素Z1と第2ポインタ要素Z2とが、第1データサブ要素GA1と第2データサブ要素GB1との第1メモリロケーションを参照する場合、第2データサブ要素GB1の第2相対メモリアドレスRGB1は、決定される。第2相対メモリアドレスRGB1は、第2データ要素GBの第1メモリロケーションSPGBに相対する、第2データ要素GBのメモリ領域内の第2データサブ要素GB1のメモリアドレスを記述する。第1データ要素GAと同様に、第2データ要素GBは、連続する要素として第2メモリ領域SPBに記憶され、第2データ要素GBによって占有されるメモリ領域の第1メモリロケーションを有する。
続いて、第4ポインタアドレス決定ステップ219において、第2ポインタ要素Z2の第2相対ポインタアドレスPBRは、第1相対ポインタアドレスPARに基づいて決定される。第2ポインタ要素Z2の第2相対ポインタアドレスPBRは、第2データサブ要素GB1の第2相対メモリアドレスRGB1に相対する、第2データ要素GBのメモリ領域内のメモリロケーションを記述する。
スカラタイプのデータタイプである第1データサブ要素GA1の第1メモリロケーションを第1ポインタ要素Z1は、参照し、同じくスカラタイプのデータタイプある第2データサブ要素GB1の第1メモリロケーションを第2ポインタ要素Z2は、参照する、第1のケースにおいて、、第1相対ポインタアドレスPARと第2相対ポインタアドレスPBRとは、値0である。これは、第1ポインタ要素Z1が、第1データサブ要素GA1の第1相対メモリアドレスRGA1によって記述されたメモリロケーションを参照し、第2ポインタ要素Z2は、第2データサブ要素GB1の第2相対メモリアドレスRGB1によって記述されたメモリアドレスを参照するためである。
したがって、第1アドレス決定ステップ209において、第2データサブ要素GB1の第2相対メモリアドレスRGB1と、第2データ要素GBの第1メモリロケーションSPGBの絶対メモリアドレスとに基づいて、第2データサブ要素GB1の絶対メモリアドレスは、決定される。第2データ要素GBの第1メモリロケーションSPGBの絶対メモリアドレスは、ポインタ要素のデータ移行が実行されるときに既知となる。さらに、第2データ要素GBの構造が既知であるので、第2データサブ要素GB1の決定された第2相対メモリアドレスRGB1と、第2データ要素GBの第1メモリロケーションSPGBの既知の絶対メモリアドレスとを使用して、第2相対メモリアドレスRGB1を絶対メモリアドレスに変換してもよい。
最後に、第1ポインタ記憶ステップ211において、第2データサブ要素GB1の決定された絶対メモリアドレスは、第2ポインタ要素Z2の値として記憶される。
第1データサブ要素GA1と第2データサブ要素GB1とが、それぞれ複合タイプであり、第1データサブ要素GA1は、第1コンポーネントAMを有し、第2データサブ要素GB1は、第2コンポーネントBMを有し、第1コンポーネントAMと第2コンポーネントBMのそれぞれが第3リレーションR3を介して互いに関連付けられている第2のケースでは、、第1コンポーネントアドレス決定ステップ221において、第1相対コンポーネントアドレスPAMは、第1コンポーネントAMを用いて決定される。第1相対コンポーネントアドレスPAMは、第1データサブ要素GA1の相対メモリアドレスに相対する、第1コンポーネントAMの第1データ要素GAのメモリ領域内に、メモリアドレスを記述する。この目的のために、図6および対応する説明セクションを参照する。
さらに、第5ポインタアドレス決定ステップ231において、第1相対ポインタ部分アドレスPAMXは、第1相対ポインタアドレスPARと第1相対コンポーネントアドレスPAMとに基づいて決定される。第1相対ポインタ部分アドレスPAMXは、第1データ要素GAのメモリ領域内の第1コンポーネントAMによって占有されるメモリ領域内のメモリロケーションを記述する。本実施形態では、第1ポインタ要素Z1が第1コンポーネントAMを指し示し、第1相対コンポーネントアドレスPAMとは異なるメモリアドレスを参照する場合について説明する。第1ポインタ要素Z1が第1コンポーネントAMによって占有されるメモリ領域の第1メモリロケーションを参照する場合、第1相対ポインタ部分アドレスは、値0となる。
さらに、第2コンポーネントアドレス決定ステップ223において、第2コンポーネントBMの第2相対コンポーネントアドレスPBMは、第1相対コンポーネントアドレスPAMに基づいて、決定される。第2相対コンポーネントアドレスPAMの決定において、第2アドレス決定ステップ215で決定された第2相対メモリアドレスRGB1と、第4ポインタアドレス決定ステップ219で決定された第2相対ポインタアドレスPBRが含まれる。第2相対コンポーネントアドレスは、第2データサブ要素GB1の第2相対メモリアドレスRGB1に相対する、第2コンポーネントBMの第2データ要素GBのメモリ領域内にメモリアドレスを記述する。
さらに、第6ポインタアドレス決定ステップ233において、第2相対ポインタ部分アドレスPMBXは、第1相対ポインタ部分アドレスPAMXと、第2相対ポインタアドレスPBRと、第2相対コンポーネントアドレスPBMとに基づいて決定される。第2相対ポインタ部分アドレスPBMXは、第2相対コンポーネントアドレスPBMに相対する、第2データ要素GBのメモリ領域内のメモリロケーションを参照する。第2データ要素GBのメモリ領域内で、第2相対ポインタ部分アドレスPBMXは、第1ポインタ要素Z1によって参照される第1データ要素GAのメモリ領域内のメモリアドレスに対応するメモリアドレスを記述する。第2相対ポインタ部分アドレスPBMXは、第2データ要素GBのメモリ領域内の第2コンポーネントBMのメモリ領域内のメモリアドレスを記述する。第1ポインタ要素Z1が第1コンポーネントAMの第1メモリロケーションを参照する場合、第2相対ポインタ部分アドレスPBMXは、値0になる。
第1アドレス決定ステップ209において、第2相対ポインタ部分アドレスPBMXと、第2相対コンポーネントアドレスPBMと、第2データサブ要素GB1の第2相対メモリアドレスRPGB1と、第2データ要素GBの第1メモリロケーションSPGBの絶対メモリアドレスに基づいて、第2ポインタ要素Z2によって参照される第2コンポーネントBMのメモリ領域内の絶対メモリアドレスが、決定される。第2ポインタ要素Z2によって参照される第2コンポーネントBMのメモリ領域内の決定されたメモリアドレスは、第2データ要素GBのメモリ領域内の第1ポインタ要素Z1によって参照される第1データ要素GAのメモリ領域内のメモリアドレスに対応する。
第1アドレス決定ステップ209で決定された第2コンポーネントBMのメモリ領域内の絶対メモリアドレスは、第1ポインタ記憶ステップ211において、第2ポインタ要素Z2に、参照される第2ポインタオブジェクトZO2のメモリアドレスとして記憶される。
第1データサブ要素GA1と第2データサブ要素GB1とが、フィールドタイプのデータタイプであり、第1データサブ要素GA1が、複数の第1要素AEを含み、第2データサブ要素GB1が、複数の第2要素BEを含み、少なくとも第1要素AEと第2要素BEとが第4リレーションR4を介して互いに関連付けられている第3のケースでは、、第1要素アドレス決定ステップ225において、第1時間要素Z1によって参照される第1要素AEの第1相対要素アドレスPAEが決定される。第1相対要素アドレスPAEは、第1データサブ要素GA1の第1相対メモリアドレスRGA1に相対する、参照される第1要素AEの第1データ要素GAのメモリ領域にメモリアドレスを書き込む。第1相対要素アドレスPAEの説明については、図7と対応する説明セクションを参照されたい。
要素サイズ決定ステップ229において、第1相対要素アドレスPAEを決定するために、第1データサブ要素GA1の第1要素AEの第1要素サイズSAEが決定される。ここで、第1要素サイズSAEは、第1要素AEによって占められるメモリ領域を示す。決定された第1要素サイズSAEと第1相対ポインタアドレスPARに基づいて、第1ポインタ要素Z1によって参照される第1要素AEが識別される。
さらに、第7ポインタアドレス決定ステップ235において、第3相対ポインタ部分アドレスPAEXは、相対ポインタアドレスPARと、第1相対要素アドレスPAEに基づいて決定される。第3相対ポインタ部分アドレスPAEXは、第1要素AEのメモリ領域内の第1ポインタ要素Z1によって参照されるメモリアドレスを記述する。第1要素AEの第1メモリロケーションが第1ポインタ要素Z1によって参照される場合、第1相対ポインタ部分アドレスPAMXは、値0になる。
さらに、第2要素アドレス決定ステップ227において、第2要素BEの第2相対要素アドレスPBEが、第1相対要素アドレスPAEに基づいて決定される。第2相対要素アドレスPBEは、第2データ要素GBのメモリ領域内に、第4リレーションR4を介して第1ポインタ要素Z1によって参照される第1要素AEに関連付けられた第2要素BEのメモリアドレスを記述する。第2相対要素アドレスPBEは、第2ポインタアドレス決定ステップ215で決定された第2データサブ要素GB1の第2相対メモリアドレスRGB1と、第4ポインタアドレス決定ステップ219で決定された第2相対ポインタアドレスPBRとを含む。
さらに、第8ポインタアドレス決定ステップ237において、第4相対ポインタ部分アドレスPBEXは、第3相対ポインタ部分アドレスPAEXと、第2相対ポインタアドレスPBRと、第2相対要素アドレスPBEとに基づいて決定される。第4相対ポインタ部分アドレスPBEXは、第2要素BEのメモリ領域内にある第2データ要素GBのメモリ領域内に、メモリアドレスを記述する。第4相対ポインタ部分アドレスPBEXによって記述されるメモリアドレスは、第2データ要素GBのメモリ領域において、第1データ要素GAのメモリ領域内の第1ポインタ要素Z1によって参照されるメモリアドレスに対応する。
また、第4相対ポインタ部分アドレスPBEXと、第2相対要素アドレスPBEと、第2相対メモリアドレスRGB1と、第2データサブ要素GB1と、第2データ要素GBの第1メモリロケーションSPGBの絶対メモリアドレスとに基づいて、絶対メモリアドレスは、決定され、絶対メモリアドレスは、第2メモリロケーションSPBにおいて、第1メモリロケーションSPAにおける第1ポインタ要素Z1によって参照されるメモリアドレスに対応する。
第4のケースでは、第2ポインタ識別ステップ245において、第1データ要素GAまたは第2データ要素GBのいずれにも含まれない第3ポインタ要素Z3を識別する。したがって、第3ポインタ要素Z3は、第1データ要素GAのオブジェクトでも第2データ要素GBのオブジェクトでもない。したがって、第3ポインタ要素Z3は、第1制御プログラムAのオブジェクトではなく、第2制御プログラムBのオブジェクトではない。例えば、第3ポインタ要素Z3は、メモリSPの別のメモリ領域に記憶され、別のプログラムのオブジェクトであってもよい。
第3ポインタ要素Z3は、第3ポインタオブジェクトZO3を参照する。第3ポインタオブジェクトZO3は、第1データ要素GAのオブジェクトであり、第1データ要素GAのメモリ領域に記憶される。例えば、第3ポインタオブジェクトZO3は、第1データサブ要素GA1または第1コンポーネントAM、すなわち、第1データ要素GAの第1データサブ要素GA1の第1要素AEであってもよい。さらに、第2データ要素GBは、第3ポインタオブジェクトZO3に関連付けられたオブジェクトを含む。例えば、これは、第2データサブ要素GB1、第2コンポーネントBM、または第2データサブ要素GB1の第2要素BEであってもよく、そして、対応する第2リレーションR2、第3リレーションR3、または第4リレーションR4を介して、第3ポインタオブジェクトZO3に関連付けられていてもよい。
第2アドレス決定ステップ247において、第3ポインタ要素Z3を識別した後、第3ポインタオブジェクトZO3に関連付けられた第2データ要素GBのオブジェクトのメモリアドレスは、決定される。第3ポインタオブジェクトZO3は、第1データサブ要素GA1、第1コンポーネントAM、または第1要素AEのいずれであるかに従って、つまり、第3ポインタオブジェクトZO3に関連付けられた第2データ要素GBのオブジェクトが、第2データサブオブジェクトGB1、第2コンポーネントBM、または第2要素BEのいずれであるかに従って、第3ポインタオブジェクトZO3に関連付けられた第2データ要素GBのオブジェクトのメモリアドレスは、参照される第2データサブオブジェクトGB1、参照される第2コンポーネントBM、または参照される第2要素BEのいずれかのメモリアドレスを決定するための上述のステップに従って決定される。第1アドレス決定ステップ209で決定された情報は、第2アドレス決定ステップ247で考慮される。
さらに、第3ポインタ記憶ステップ249において、第3ポインタオブジェクトZO3に関連付けられた第2データ要素GBのオブジェクトの決定されたメモリアドレスは、第3ポインタ要素Z3に値として記憶される。これにより、第3ポインタ要素Z3は、データ移行が成功した後、第3ポインタオブジェクトZO3に関連付けられた第2データ要素GBのオブジェクトを参照することを保証する。
第5のケースにおいて、第1データ要素GAのオブジェクトである第1ポインタ要素Z1は、第1データ要素GAのオブジェクトでも第2データ要素GBのオブジェクトでもない第1ポインタオブジェクトZO1を参照する。したがって、第1ポインタオブジェクトZO1は、メモリSPの異なるメモリ領域に記憶されてもよい。したがって、第1ポインタオブジェクトZO1は、第1制御プログラムAまたは第2制御プログラムBのオブジェクトではない。さらに、第2データ要素GBは、第1リレーションR1を介して第1ポインタ要素Z1に関連付けられた第2ポインタ要素Z2を含む。
オブジェクト検証ステップ239において、第1ポインタオブジェクトZO1は、第1データ要素GAのオブジェクトであるかどうかが検証される。オブジェクト検証ステップ239において、第1ポインタオブジェクトZO1が第1データ要素GAのオブジェクトであると判定された場合、本方法は上述のステップに従って実行される。
一方、オブジェクト検証ステップ239は、第1ポインタオブジェクトZO1が第1データ要素GAのオブジェクトでないと判定した場合、第2ポインタ要素Z2の第2ポインタオブジェクトZO2は、第3オブジェクト識別ステップ241において第1ポインタオブジェクトZO1として識別される。したがって、第2ポインタオブジェクトZO2は、第1ポインタオブジェクトZO1と等しくなる。第1ポインタオブジェクトZO1は、第1データ要素GAの要素ではないので、第1ポインタオブジェクトZO1は、第1データ要素GAの第2データ要素GBへのデータ移行中に移行される必要はなく、第1ポインタオブジェクトZO1はデータ移行の影響を受けずに残り、元の値を保持する。しかしながら、第1データ要素GAの第2データ要素GBへのデータ移行の過程で、第1リレーションR1を介して第1ポインタ要素Z1に関連付けられた第2ポインタ要素Z2が、データ移行が成功した後に第1ポインタオブジェクトZO1を参照することを保証されなければならない。これは、第1ポインタオブジェクトZO1を第2ポインタオブジェクトZO2と等しくすることによって達成される。
第2ポインタ記憶ステップ243において、第1ポインタオブジェクトZO1のメモリアドレスを含む第1ポインタ要素Z1の値は、第2ポインタ要素Z2に記憶される。方法200の実行時に、第1ポインタオブジェクトZO1のメモリアドレスは既知であり、データ移行によって変更されずに残るため、第2ポインタオブジェクトZO2のメモリアドレスの時間のかかる決定は省略され、第1ポインタオブジェクトZO1のメモリアドレスは変更されずに採用されてもよい。
前述の説明で説明したポインタ移行ステップ203に加えて、方法200は、関数生成ステップ251をさらに備える。関数生成ステップ251において、第1ポインタ移行関数ZMIG1が生成される。第1ポインタ移行関数ZMIG1は、ポインタ移行ステップ203で示された方法ステップに従って、第1ポインタ要素Z1を第2ポインタ要素Z2にマッピングするように構成される。さらに、関数生成ステップ251において、第2ポインタ移行関数ZMIG2が生成され、この関数は、第2アドレス決定ステップ247と、第3ポインタオブジェクトZO3に関連付けられた第2データ要素GBのオブジェクトの記憶アドレスを第3ポインタ要素Z3に記憶するための第3ポインタ記憶ステップ249とを実行するように構成される。
さらに、関数生成ステップ251は、第1ポインタ要素Z1のポインタタイプと、第2ポインタ要素Z2のポインタタイプまたは第3ポインタ要素Z3のポインタタイプが識別されるタイプ識別ステップ253を含む。第1ポインタ要素Z1、第2ポインタ要素Z2、または第3ポインタ要素Z3の識別されたポインタタイプに基づいて、第1ポインタ移行関数ZMIG1と第2ポインタ移行関数ZMIG2とがそれぞれ生成される。第1ポインタ移行関数ZMIG1と第2ポインタ移行関数ZMIG2とは、それぞれ、特定の第1ポインタ要素Z1を、特定の第2ポインタ要素Z2、または特定の第3ポインタ要素Z3に移行することに限定されないが、それぞれ識別されたポインタタイプの任意のポインタ要素を互いにマッピングようにセットアップされる。生成されたポインタ移行関数は、識別されたポインタタイプの任意の数のポインタ要素を互いにマッピングしてもよい。複数のポインタ要素のデータ移行では、生成されたポインタ関数に何度でも連続してアクセスしてもよい。
第1検証ステップ255において、第2関数生成ステップ251において、第1ポインタ移行関数ZMIG1と第2ポインタ移行関数ZMIG2とが生成可能か否かについてチェックが実行される。初期化ステップ257において、第1ポインタ移行関数ZMIG1を生成できなかった場合、第2ポインタ要素Z2は、初期値に設定されてもよい。これは、第1ポインタ要素Z1のデータ移行が失敗したにもかかわらず、第2ポインタ要素Z2に有効な数値が引き続き提供されることを保証するために使用されてもよい。
あるいは、終了ステップ259において、第1ポインタ移行関数の生成が失敗した場合、第1ポインタ要素Z1から第2ポインタ要素Z2への移動は中止されてもよい。これは、初期値に設定された第2ポインタ要素Z2のための第2データ要素GBを考慮する第2制御プログラムBに基づいてオートメーションシステム100の制御が誤動作をもたらす場合に有利であり得る。
関数生成ステップ251に加えて、方法200は、第1データ要素GAを第2データ要素GBにマッピングするための第1移行関数MIG1を生成する生成ステップ263をさらに含む。第1移行関数MIG1を実行することにより、第1制御プログラムAと第1制御プログラムAによって制御されるオートメーションシステム100とのグローバル状態を記述する第1データ要素GAの値を、第2データ要素GBに転送してもよい。生成ステップ263はさらに、第1データ要素GAのデータタイプと第2データ要素GBのデータタイプとを識別する識別ステップ265を含む。第1移行関数MIG1は、第1データ要素GAと第2データ要素GBとの識別されたデータタイプに基づいて生成される。したがって、第1移行関数MIG1は、第1データ要素GAを特定の第2データ要素GBにマッピングすることに限定されず、第1データ要素GAのデータタイプの任意のデータを第2データ要素GBのデータタイプの任意のデータにマッピングするようにしてもよい。
移行ステップ261において、生成ステップ263によって第1移行関数MIG1を正常に生成した後、第1移行関数MIG1を実行することによって、第1データ要素GAを第2データ要素GBにマッピングしてもよい。したがって、第1データ要素GAに記憶された第1制御プログラムとと第1制御プログラムAによって制御されるオートメーションシステム100のグローバル状態のデータ移行を、第2データ要素GBにマッピングしてもよい。第1データ要素GAの第2データ要素GBへのデータ移行が成功した後、オートメーションシステム100は、第2データ要素GBを考慮に入れて、第2制御プログラムBに基づいて制御されてもよい。データ移行が成功した後、第2制御プログラムBは、第2データ要素GBの対応するオブジェクトにアクセスすることによって、第1データ要素GAのオブジェクトの転送された数値にアクセスしてもよい。
第1データ要素GAから第2データ要素GBへのデータ移行は、ポインタ移行ステップ203の方法ステップに従って、第1データ要素GAの第1ポインタ要素Z1から第2データ要素GBの第2ポインタ要素Z2への上述のデータ移行および/または第3ポインタ要素Z3のデータ移行を含む。
初期化ステップ257において、関数生成ステップ251において、第1ポインタ移行関数ZMIG1を生成できなかった場合、第1データ要素GAの第2データ要素GBへのデータ移動が成功した後、初期化された初期値を第2データ要素GB内の対応する第2ポインタ要素Z2に与えてもよい。
図5は、実施形態に係るオートメーションシステム100におけるポインタ要素のデータ移行におけるポインタオブジェクトのメモリアドレスを決定するための概略図を示す。
図5~図7は、ポインタ移行ステップ203で決定された値を理解するための図である。図5~図7は、データオブジェクトが記憶されているメモリSPのメモリ領域を概略的に示している。表示されるデータオブジェクトのサイズは、それぞれのデータオブジェクトが占有するメモリ領域を表す。このように、大きめに描かれたオブジェクトは、より大きなメモリ領域を占有する。占有メモリ領域内の個々のメモリロケーションは表示されない。オブジェクトによって占有されるメモリ領域の第1メモリロケーションは、それぞれ、表示されたオブジェクトの上端に位置する。表示されるオブジェクトはそれぞれ、メモリSPにギャップのない連続したメモリ領域を占有する。
図5に、メモリSPの第1メモリ領域SPAとメモリSPの第2メモリ領域SPBを示す。第1メモリ領域SPAには、第1データ要素GAが示されている。第2メモリ領域SPBは、第2データ要素GBを示す。第1データ要素GAと第2データ要素GBとの両方が連続するデータ構造として示され、それぞれが第1メモリ領域SPAと第2メモリ領域SPBとの連続するメモリ領域を占有する。第1データ要素GAは、第1データ要素GAのメモリ領域に配置された第1データサブ要素GA1を含む。第2データ要素GBは、第2データ要素GBのメモリ領域に配置された第2データサブ要素GB1を含む。第1データ要素GAのメモリ領域は、第1データ要素GAの第1メモリロケーションSPGAから始まる。第2データ要素GBのメモリ領域は、第2データ要素GBの第1メモリロケーションSPGBから始まる。第1データサブ要素GA1は、第1データ要素GAのメモリ領域内の連続領域に配置され、第1データ要素GAの第1メモリロケーションSPGAに関するオフセットを有する。図5では、第1データサブ要素GA1の第1相対メモリアドレスRGA1がさらに示されている。第1データサブ要素GA1の第1相対メモリアドレスRGA1は、第1データ要素GAの第1メモリロケーションSPGAと、図示の矢印で表される第1データサブ要素GA1が占有するメモリ領域の第1メモリロケーションとの間のメモリ領域における距離を記述する。第1データサブ要素GA1の第1相対メモリアドレスRGA1は、第1データサブ要素GA1のオフセットに対応する。
同様に、第2データ要素GBは、第2データ要素GBの第1メモリロケーションSPGBを有する。第2データサブ要素GB1は、第2データ要素GBのメモリ領域内の連続するメモリ領域に記憶される。同様に、第1データサブ要素GB1は、第2データ要素GBの第1メモリロケーションSPGBに関してオフセットを有する。第2データサブ要素GB1の第2相対メモリアドレスRGB1は、第2データ要素GBの第1メモリロケーションSPGBと、図示の矢印で表される第2データサブ要素GB1の第1メモリロケーションとの間のメモリ領域における距離を記述する。第2データサブ要素GB1の第2相対メモリアドレスRGB1は、第2データサブ要素GB1のオフセットに対応する。第1データサブ要素GA1と第2データサブ要素GB1とは、第1データ要素GAの第1メモリロケーションSPGAと第2データ要素GBの第1メモリロケーションSPGBとに関してそれぞれ異なるオフセットを有する。
図6は、別の実施形態に係るオートメーションシステム100におけるポインタ要素のデータ移行におけるポインタオブジェクトのメモリアドレスの決定の概略図を示す。
図6において、第1データサブ要素GA1は複合タイプであり、第1データサブ要素GA1のメモリ領域に記憶された3つの第1コンポーネントAMを有する。第2データサブ要素GB1も複合タイプであり、第2データサブ要素GB1のメモリ領域に記憶された2つの第2コンポーネントBMを有する。第1データサブ要素GA1と第2データサブ要素GB1は、第2リレーションR2を介して互いに関連付けられる。第1データサブ要素GA1の第1コンポーネントAMは、それぞれ異なるサイズを有し、第1データサブ要素GA1のメモリ領域において異なるサイズのメモリ領域を占有する。第2データサブ要素GB1の2つの第2コンポーネントBMも、異なるサイズを有し、第2データサブ要素GB1のメモリ領域において異なるサイズのメモリ領域を占有する。第1データサブ要素GA1の第1コンポーネントAMと第2データサブ要素GB1の第2コンポーネントBMとは、第3リレーションR3を介して互いに関連付けられている。
図6はさらに、第1相対ポインタアドレスPARを示している。第1相対ポインタアドレスPARは、第1データサブ要素GA1の第1相対メモリアドレスRGA1に相対する第1ポインタ要素Z1によって参照される第1データサブ要素GA1の第1コンポーネントAMのメモリ領域内のメモリロケーションをマークする。図6において、第1ポインタ要素Z1によって参照される第1コンポーネントAMは、示される3つの第1コンポーネントAMのうちの中央のものである。
第1相対ポインタアドレスPARは、第1データサブ要素GA1の第1相対メモリアドレスRGA1と、参照される第1コンポーネントAMのメモリ領域内の参照されるメモリロケーションとの間のメモリ領域内の距離を識別する。
さらに、第1相対コンポーネントアドレスPAMは、第1データサブ要素GA1の第1相対メモリアドレスRGA1と、参照される第1コンポーネントAMの第1メモリロケーションとの間のメモリ空間における距離を記述するように示されている。加えて、第1相対ポインタ部分アドレスPAMXは、参照される第1コンポーネントAMの第1メモリロケーションと第1ポインタ要素Z1によって参照されるメモリアドレスとの間のメモリ領域内の距離を参照される第1コンポーネントAMのメモリ領域内に記述するように示されている。第1相対ポインタアドレスPARは、第1相対コンポーネントアドレスPAMと第1相対ポインタ部分アドレスPAMXの合計から得られる。
さらに、第2相対ポインタアドレスPBRが図6に示されており、これは、第2データサブ要素GB1の第2相対メモリアドレスRGB1と、参照される第2コンポーネントBMのメモリ領域内の参照されるメモリロケーションとの間の距離を記述する。さらに、第2相対コンポーネントアドレスPBMは、第2データサブ要素GB1の第2相対メモリアドレスRGB1と、参照される第2コンポーネントBMの第1メモリロケーションとの間のメモリ領域における距離を記述するように示されている。さらに、第2相対ポインタ部分アドレスPBMXは、第2コンポーネントBMの第1メモリロケーションと、参照される第2コンポーネントBMのメモリ領域内の第2相対ポインタアドレスPBRによって参照されるメモリアドレスとの間の距離を記述するように示されている。第2相対ポインタアドレスPBRは、第2相対コンポーネントアドレスPBMと第2相対ポインタ部分アドレスPBMXの合計から得られる。
第1データ要素GAのメモリ領域内で、第1相対ポインタアドレスPARによって識別される、参照された第1コンポーネントAMのメモリ領域内のメモリロケーションは、第2データ要素GBのメモリ領域内の第2相対ポインタアドレスPBRによって識別される、参照される第2コンポーネントBMのメモリ領域内のメモリロケーションに対応する。
図7は、別の実施形態に係るオートメーションシステム100におけるポインタ要素のデータ移行におけるポインタオブジェクトのメモリアドレスの決定の概略図を示す。
図7において、第1データサブ要素GA1と第2データサブ要素GB1とは、それぞれフィールドタイプとして具体化されている。第1データサブ要素GA1は、3つの第1要素AEを含み、第2データサブ要素GB1も、3つの第2要素BEを含む。第1データサブ要素GA1と第2データサブ要素GB1は、第2リレーションR2を介して互いに関連付けられる。第1データサブ要素GA1の第1要素AEと第2データサブ要素GB1の第2要素BEとは、第4リレーションR4を介して互いに関連付けられている。
図示される第1要素AEの各々は、第1要素AEによって占有されるメモリ領域のサイズを記述する第1要素サイズSAEを含む。図7では、図示された第1要素AEはすべて、同一の第1要素サイズSAEを有する。
図7において、第1相対ポインタアドレスPARは、第1ポインタ要素Z1によって参照される第1要素AEのメモリ領域内のメモリロケーションを識別する。第1相対ポインタアドレスPARは、第1相対要素アドレスPAEと第3相対ポインタ部分アドレスPAEXとの合計から得られる。第1相対要素アドレスPAEは、第1データサブ要素GA1の第1相対メモリアドレスRGA1と、参照される第1要素AEの第1メモリロケーションとの間のメモリ領域における距離を記述するものであり、第3相対ポインタ部分アドレスPAEXは、参照される第1要素AEの第1メモリロケーションと、第1相対ポインタアドレスPARによって参照される、参照される第1要素AEのメモリ領域におけるメモリロケーションとの間のメモリ領域における距離を記述する。
同様に、第2相対ポインタアドレスPBRと、第2相対要素アドレスPBEと、第4相対ポインタ部分アドレスPBEXとが示されている。第2相対ポインタアドレスPBRは、第2相対要素アドレスPBRと第4相対ポインタ部分アドレスPBEXとの合計から得られる。参照される第1要素AEのメモリ領域内の第1相対ポインタアドレスPARによって参照されるメモリロケーションは、第1データ要素GAのメモリ領域内において、第2データ要素GBのメモリ領域内の参照される第2要素BEのメモリ領域内の第2ポインタアドレスPBRによって参照されるメモリロケーションに対応する。
第1相対ポインタアドレスPARと第1要素サイズSAEとを使用して、第1ポインタ要素Z1によって参照される第1要素AEを決定してもよく、参照される第1要素AEは、関係式PAR/SAE+1から得られる。第4リレーションR4を介して、関連する第2要素BEは、決定された第1要素AEから得られる。第2相対ポインタアドレスPBRを決定することにより、第4リレーションR4を介して関連する第2要素BEのメモリ領域内のメモリアドレスを決定することができ、これは、第1ポインタ要素Z1によって参照される第1要素AEのメモリ領域内の第1相対ポインタアドレスPARによって参照されるメモリアドレスに対応する。
図5~図7について説明した実施形態は、例示の目的のためだけのものである。示されたオブジェクトの数および実施形態に関する逸脱が含まれる。
図8は、一実施形態によるオートメーションシステム100の第1制御プログラムAの更新バージョンとしての第2制御プログラムBの生成処理の概略図を示す。
図8に示す実施形態によれば、コンパイラモジュール109は、第1制御プログラムAの更新バージョンとして第2制御プログラムBを生成するために、第2制御プログラムBのソースコードQBを考慮する。コンパイル処理の変換ステップ303において、コンパイラモジュール109は、第2制御プログラムBのソースコードQBを、第2制御プログラムBの実行可能コードPBに変換する。第2制御プログラムBの実行可能コードPBは、第2制御プログラムBに基づいてオートメーションシステム100を制御するために、オートメーションシステム100のコントローラ101によって実行されてもよい。
コンパイル処理では、コンパイラモジュール109はさらに、第1データタイプTGADの定義を考慮に入れる。第1データ要素GAの第1データタイプTGADの定義では、第1データ要素GAの第1データタイプ、ならびにすべての第1データ要素GAのすべての第1データサブ要素GA1のすべてのデータタイプと、すべての第1データ要素GAのすべての第1コンポーネントAEのすべてのデータタイプと、すべての第1データ要素GAのすべての第1データサブ要素GA1のすべてのデータタイプが定義される。さらに、第1データ要素GA内のすべての第1ポインタ要素Z1のすべてのポインタタイプは、第1データタイプTGADの定義で定義される。したがって、第1データタイプTGADの定義には、第1データ要素GAのすべてのオブジェクトのすべてのデータタイプまたはポインタタイプが含まれる。
さらに、第2生成ステップ307において、コンパイル処理では、コンパイラモジュール109は、第2制御プログラムBのソースコードQBから第2データタイプTGBDの定義を生成する。第1データイプTGADの定義と同様に、第2データイプTGBDの定義は、第2データ要素GBのデータイプ、ならびに第2データ要素GBの第2データサブ要素GB1と、第2データ要素GBのすべての第2コンポーネントMBと、第2データ要素GBのすべての第2要素BEと、第2データ要素GBのすべての第2ポインタ要素Z2のすべてのポインタイプのすべてのデータイプとを含む。第1データタイプTGADの定義と同様に、第2データタイプTGBDの定義は、第2データ要素GBのすべてのオブジェクトのすべてのデータタイプとポインタタイプとを含む。
さらに、第1生成ステップ305において、コンパイル処理では、コンパイラモジュール109は、移行コードMABを生成する。移行コードMABは、第1データ要素GA、第1データサブ要素GA1、第1コンポーネントAM、および第1要素AEのうち少なくとも1つから第2データ要素GB、第2データサブ要素GB1、第2コンポーネントBM、および第2要素AEのうち少なくとも1つのデータ移行に使用される、第1、第2、第3、および第4移行関数をすべて含む。さらに、移行コードMABは、第1ポインタ要素を第2ポインタ要素にマッピングし、第3ポインタ要素をそれぞれ移行するために必要な、すべての第1ポインタ移行関数と第2ポインタ移行関数とを含む。関数生成ステップ251と生成ステップ263とを含む第1生成ステップ305を実行するために、コンパイラモジュール109は、第1データイプTGADの定義と第2生成ステップ307で生成された第2データイプTGBDの定義とを考慮に入れる。
コンパイラモジュール109は、第1データイプTGADと第2データイプTGBAとの定義に基づいて、生成ステップ263において、移行関数を生成し、関数生成ステップ251において、ポインタ移行関数を生成する。
図9は、さらなる実施形態によるオートメーションシステム100の制御プログラムAのポインタ要素の移行処理の概略図を示す。
図9は、個々の移行関数と、移行されるそれぞれのオブジェクトへのポインタ移行関数との割り振りを示している。図9はまた、第1データ要素GAの第1ポインタ要素Z1から第2データ要素GBの第2ポインタ要素Z2へのデータ移行を含む、第1データ要素GAの第2データ要素GBへの移行処理を概略化する。
図9に、メモリSPの第1メモリ領域SPAとメモリSPの第2メモリ領域SPBとを示す。第1メモリ領域SPAは、第1データ要素GAを記憶する。第1データ要素GAは、第1データサブ要素GA1と、別の第1データサブ要素GA2とを含む。第1データサブ要素GA1は、複合タイプとして具体化され、第1コンポーネントAMと、さらなる第1コンポーネントAM1とを含む。さらに、第1データ要素GAは、第1ポインタ要素Z1と、さらなる第1ポインタ要素Z11とを含む。
第2メモリ領域SPBは、第2データ要素GBを記憶する。第2メモリ要素GBは、第2データサブ要素GB1を含み、この第2データサブ要素GB1は複合タイプであり、第2コンポーネントBMと、さらなる第2コンポーネントBM1とを含む。第2データ要素GBは、さらなる第2データサブ要素GB2を含む。さらに、第2データ要素GBは、第2ポインタ要素Z2と、さらなる第2ポインタ要素Z22とを含む。
第1データサブ要素GA1と第2データサブ要素GB1とは、第2リレーションR2を介して互いに関連付けられる。第1データサブ要素GA1の第1コンポーネントAMと第2データサブ要素GB1の第2コンポーネントBMとは、第3リレーションR3を介して互いに関連付けられている。第1ポインタ要素Z1は、第1リレーションR1を介して第2ポインタ要素Z2に関連付けられている。さらなる第1ポインタ要素Z11は、さらなる第1リレーションR11を介して、さらなる第2ポインタ要素Z22と関連付けられる。さらなる第1データサブ要素GA2は、さらなる第2リレーションR22を介して、さらなる第2データサブ要素GB2に関連付けられる。
第1ポインタ要素Z1は、第1データサブ要素GA1の第1コンポーネントAMを第1ポインタオブジェクトZO1として参照する。第1メモリ領域SPAでは、さらなる第1ポインタオブジェクトZO11が更に配置され、これはさらなる第1ポインタ要素Z11によって参照される。第1メモリ領域SPA及び第2メモリ領域SPB外のメモリSPには、第1データ要素GAのさらなる第1データサブ要素GA2を第3ポインタオブジェクトZO3として参照する第3ポインタ要素Z3が更に配置されている。
さらに、図9は、第1移行関数MIG1、第1ポインタ移行関数ZMIG1、別の第1ポインタ移行関数ZMIG11、および第2ポインタ移行関数ZMIG2を含む移行コードMABを示す。
第1データ要素GAのデータ移行のために、第1移行関数MIG1は、移行ステップ261で実行される。ここで、第1移行関数MIG1は、第1メモリ領域SPA内の第1データ要素GAの値を読み出し、読み出した値を第2データ要素GB内の第2メモリ領域SPBに記憶する。
第1データ要素GAの第2データ要素GBへのデータ移行の過程で、第1ポインタ要素Z1は、第2ポインタ要素Z2にマッピングされ、さらなる第1ポインタ要素Z11は、さらなる第2ポインタ要素Z22にマッピングされ、そして第3ポインタ要素Z3が移行される。
第1データサブ要素GA1の第1コンポーネントAMを参照する第1ポインタ要素Z1をマッピングするために、第1ポインタ移行関数ZMIG1は、第1アドレス決定ステップ209を実行し、第3リレーションR3を介して第1ポインタ要素Z1によって参照される第1データサブ要素GA1の第1コンポーネントAMと関連付けられた第2コンポーネントBMのメモリアドレスを、決定する。第2データサブ要素GB1の第2コンポーネントBMのメモリアドレスを決定した後、第1ポインタ移行関数ZMIG1は、第1ポインタ記憶ステップ211において、第1リレーションR1を介して第1ポインタ要素Z1に関連付けられた第2ポインタ要素Z2に、決定したメモリアドレスを記憶する。これは第1ポインタ要素Z1の値を第2ポインタ要素Z2にマッピングし、第2ポインタ要素Z2は、第1ポインタ要素Z1によって参照される第1コンポーネントAMに対応する第2コンポーネントBMを参照する。
第1ポインタ要素Z1による第1ポインタオブジェクトZO1の参照は、破線の矢印によって示される。それぞれのポインタ要素の移行が成功した後に生成された、第2ポインタ要素Z2による第2ポインタオブジェクトZO2の参照は、点線の矢印によって示される。
さらなる第1ポインタ要素Z11からさらなる第2ポインタ要素Z22へのデータ移行のために、さらなる第1ポインタ移行関数ZMIG11は、第3オブジェクト識別ステップ241を実行し、さらなる第1ポインタ要素Z11によって参照されるさらなる第1ポインタオブジェクトZO11を決定する。さらなる第1ポインタオブジェクトZO11は、第1データ要素GAのオブジェクトではなく、第1メモリ領域SPA内の第1データ要素GAのメモリ領域外に記憶される。第3オブジェクト識別ステップ241において、さらなる第1ポインタ要素Z11のデータ移行のために、さらなる第1ポインタ移行関数ZMIG11は、さらなる第1ポインタ要素Z11によって参照されるさらなる第1ポインタオブジェクトZO11の識別を、さらなる第2ポインタ要素Z22のさらなる第2ポインタオブジェクトZO22として行う。続いて、第2ポインタ記憶ステップ243において、さらなる第1ポインタ移行関数ZMIG11は、さらなる第2ポインタ要素ZO22に、さらなる第2メモリオブジェクトZO22のメモリアドレスとして、さらなる第1ポインタオブジェクトZO11の決定されたメモリアドレスを記憶する。これにより、データ移行が成功した後、第1メモリ領域SPAに記憶されているさらなる第1ポインタオブジェクトZO11は、さらなる第2ポインタ要素ZO22によって参照されることが保証される。
メモリSP内の第1メモリ領域SPAおよびメモリSP内の第2メモリ領域SPBの外部に記憶されている第3ポインタ要素Z3のデータ移行のために、第2ポインタ移行関数ZMIG2は、第2アドレス決定ステップ247を実行し、さらなる第2データサブ要素GB2のメモリアドレスを決定する。このさらなる第2データサブ要素GB2は、さらなる第1データサブ要素GA2に、さらなる第2リレーションR22を介して関連付けられ、さらなる第1データサブ要素GA2は、第3ポインタ要素Z3によって、第3ポインタオブジェクトZO3として参照される。さらなる第2データサブ要素GB2のメモリアドレスを決定した後、第2ポインタ移行関数ZMIG2は、第3ポインタ記憶ステップ249を実行し、さらなる第2データサブ要素GB2の決定したメモリアドレスを、第3ポインタ要素Z3に記憶する。そこで、データ移行が成功した後、第3ポインタ要素Z3は、さらなる第2データサブ要素GB2を参照し、さらなる第2データサブ要素GB2は、さらなる第2リレーションR22に従って、さらなる第1データ要素GA2に対応する。
第1移行関数MIG1によって第1データ要素GAの第2データ要素GBへのデータ移行を実行するために、第1移行関数MIG1は、第1ポインタ移行関数ZMIG1、さらなる第1ポインタ移行関数ZMIG11、または第2ポインタ移行関数ZMIG2に継続的にアクセスして、対応するポインタ要素を互いにマッピングしてもよい。
図9に示す実施例に代わるものとして、複数の第1ポインタ移行関数ZMIG1と複数の第2ポインタ移行関数ZMIG2とをそれぞれ使用して、複数の第1ポインタ要素、第2ポインタ要素、および第3ポインタ要素のデータ移動を行うことができ、これらを順次アクセスしてデータ移行を行ってもよい。さらに、第1ポインタ移行関数ZMIG1または第2ポインタ移行関数ZMIG2は、ポインタ移行ステップ203内の個々の方法ステップを実行し、例えば、第1相対ポインタアドレスPAR、第2相対ポインタアドレスPBR、第1相対コンポーネントアドレスPAM、第2相対コンポーネントアドレスPBM、第1相対ポインタ部分アドレスPAMX、第2相対ポインタ部分アドレスPBMX、第1相対メモリアドレスRGA1、または第2相対メモリアドレスRGB1を決定するするように構成された複数のポインタ移行サブ関数を含んでもよい。個々のポインタ移行サブ関数は、それぞれの処理ステップを実行するために、第1ポインタ移行関数ZMIG1または第2ポインタ移行関数ZMIG2によってアクセスされてもよい。
第1データ要素GAの第2データ要素GBへの完全なデータ移行を達成するために、第1移行関数MIG1は、第2移行関数MIG2、第3移行関数MIG3、および第4移行関数MIG4にさらにアクセスして、第1データサブ要素GA1を第2データサブ要素GB1に、第1コンポーネントAMを第2コンポーネントBMに、および第1要素AEを第2要素BEにそれぞれマッピングしてもよい。図9を明確にするために、さらなる移行関数は示されていない。
本発明による方法200は、それぞれが第1制御プログラムAおよび第2制御プログラムBのグローバル状態を記述し、それぞれが複数のオブジェクトを有する、第1データ要素GAおよび第2データ要素GBに適用してもよい。第1データ要素GAのオブジェクトは、複合タイプ、フィールドタイプ、スカラタイプ、またはポインタタイプであってもよく、それぞれが複雑なデータ構造を有していてもよい。複合タイプのオブジェクトは、複数のコンポーネントを有することができ、複数のコンポーネントは、複合タイプ、フィールドタイプ、スカラタイプ、またはポインタタイプであってもよく、コンポーネントまたは要素を任意選択で有していてもよい。ネスティングの深さは、本発明による方法によって限定されない。
同様に、第2データ要素GAのオブジェクトは複合タイプ、フィールドタイプ、スカラタイプ、またはポインタタイプであってもよく、それぞれは、任意に、複合データ構造を有していてもよい。複合タイプのオブジェクトは、複数のコンポーネントを有していてもよく、複数のコンポーネントは、複合タイプ、フィールドタイプ、スカラタイプ、またはポインタタイプであってもよく、コンポーネントまたは要素を任意に含んでもいてもよい。ネスティングの深さは、本発明による方法によって限定されない。
本発明による方法は、繰り返し使用されてもよい。
第1データ要素GAの第1ポインタ要素Z1を第2データ要素GBの第2ポインタ要素Z2にデータ移行するために、第1ポインタ要素Z1によって参照される第1ポインタオブジェクトZO1が識別される。第1ポインタオブジェクトZO1は、第1データ要素GA1の任意のオブジェクトであってもよい。特に、第1ポインタオブジェクトZO1は、第2データ要素GB1のオブジェクト内に対応し、対応するリレーションを介してこのオブジェクトに関連付けられる。本発明による方法200の目的は、第2データ要素GB1のこのオブジェクトの絶対メモリアドレスを決定し、それを第2ポインタ要素Z2に書き込むことである。これにより、第2ポインタ要素Z2によるそれぞれのオブジェクトの参照が可能になる。
データ移行を行った時点では、第2データ要素GB1のオブジェクトの絶対メモリアドレスに関するより詳細な情報がなくても、第2データ要素GB1は、連続した単位として第2メモリ領域SPBに記憶されるため、第2データ要素GB1のオブジェクトの絶対アドレスは、未知である。しかしながら、第2データ要素GB1の第1メモリロケーションは既知であり、第1メモリロケーションは、第2メモリ領域SPB内の第2データ要素GB1によって占有されるメモリ領域の第1絶対メモリアドレスである。
さらに、第2データ要素GB1の内部構造は、既知であり、第2データ要素GB1の内部構造は、個々のオブジェクトが、第2データ要素GB1内でどのように配置されるかを記述する。
第1ポインタオブジェクトZO1に関連付けられた第2データ要素GB1のオブジェクトの絶対アドレスを決定するために、第1ポインタオブジェクトZO1の相対アドレスが決定される。第1ポインタオブジェクトの相対アドレスは、第1データ要素GA1内の第1ポインタオブジェクトZO1の位置を特定することを可能にする。第1ポインタオブジェクトZO1の相対アドレスに基づいて、第1ポインタオブジェクトZO1に関連付けられた第2データ要素GB1のオブジェクトの相対アドレスが決定され、第1ポインタオブジェクトZO1に関連付けられた第2データ要素GB1のオブジェクトの相対アドレスは、第2データ要素GB1内のオブジェクトの位置を特定することを可能にする。
第1ポインタオブジェクトZO1に関連付けられた第2データ要素GB1のオブジェクトの相対アドレスに基づいて、第2データ要素GB1のオブジェクトの絶対アドレスは、第2データ要素GB1の第1メモリロケーションを考慮して、次いで決定される。この絶対アドレスは次に、第2ポインタオブジェクトZO2として、第2ポインタ要素Z2によってオブジェクトを参照するためのアドレスとして使用される。
参照されるオブジェクトは上述したように、任意のデータタイプであってもよい。
複数のポインタ要素のデータ移行のために、本発明による方法は、複数回実行されてもよい。
参照番号一覧
100 オートメーションシステム
101 コントローラ
103 マスタサブスクライバ
105 スレーブサブスクライバ
107 バスシステム
109 コンパイラモジュール
A 第1制御プログラム
PA 第1実行可能コード
MAB 移行コード
SPS メモリ
SPA 第1メモリ領域
GA 第1データ要素
TGAD 第1データタイプの定義
GA1 第1データサブ要素
GA2 さらなる第1データサブ要素
AM 第1コンポーネント
AM1 さらなる第1コンポーネント
AE 第1要素
BE 第2要素
B 第2制御プログラム
QB 第2制御プログラムのソーステキスト
PB 第2実行可能コード
SPB 第2メモリ領域
GB 第2データ要素
GB1 第2データサブ要素
GB2 さらなる第2データサブ要素
BM 第2コンポーネント
BM1 さらなる第2コンポーネント
R1 第1リレーション
R11 さらなる第1リレーション
R2 第2リレーション
R22 さらなる第2リレーション
R3 第3リレーション
R4 第4リレーション
Z1 第1ポインタ要素
Z11 さらなる第1ポインタ要素
ZO1 第1ポインタオブジェクト
ZO11 さらなる第1ポインタオブジェクト
Z2 第2ポインタ要素
Z22 さらなる第2ポインタ要素
ZO2 第2ポインタオブジェクト
Z3 第3ポインタ要素
ZO3 第3ポインタオブジェクト
RGA1 第1相対メモリアドレス
RGB1 第2相対メモリアドレス
PAR 第1相対ポインタアドレス
PBR 第2相対ポインタアドレス
PAM 第1相対コンポーネントアドレス
PBM 第2相対コンポーネントアドレス
PAMX 第1相対ポインタ部分アドレス
PBMX 第2相対ポインタ部分アドレス
SAE 第1要素サイズ
PAEX 第3相対ポインタ部分アドレス
PBEX 第4相対ポインタ部分アドレス
SPGA 第1データ要素の第1メモリロケーション
SPGB 第2データ要素の第1メモリロケーション
ZMIG 第1ポインタ移行関数
ZMIG11 さらなる第1ポインタ移行関数
ZMIG2 第2ポインタ移行関数
MIG1 第1移行関数
200 方法
201 第1ポインタ識別ステップ
202 置換ステップ
203 ポインタ移行ステップ
205 第1オブジェクト識別ステップ
207 第2オブジェクト識別ステップ
209 第1アドレス決定ステップ
211 第1ポインタ記憶ステップ
213 第1ポインタアドレス決定ステップ
215 第2ポインタアドレス決定ステップ
217 第3ポインタアドレス決定ステップ
219 第4ポインタアドレス決定ステップ
221 第1コンポーネントアドレス決定ステップ
223 第2コンポーネントアドレス決定ステップ
225 第1要素アドレス決定ステップ
227 第2要素アドレス決定ステップ
229 要素サイズ決定ステップ
231 第5ポインタアドレス決定ステップ
233 第6ポインタアドレス決定ステップ
235 第7ポインタアドレス決定ステップ
237 第8ポインタアドレス決定ステップ
239 オブジェクト検証ステップ
241 第3オブジェクト識別ステップ
243 第2ポインタ記憶ステップ
245 第2ポインタ識別ステップ
247 第2アドレス決定ステップ
249 第3ポインタ記憶ステップ
251 関数生成ステップ
253 タイプ識別ステップ
255 第1検証ステップ
257 初期化ステップ
259 終了ステップ
261 移行ステップ
263 生成ステップ
265 識別ステップ
303 変換ステップ
305 第1生成ステップ
307 第2生成ステップ

Claims (15)

  1. オートメーションシステム(100)の制御プログラムのプログラム状態のデータ移行の過程におけるポインタ要素のデータ移行のための方法(200)であって、
    前記オートメーションシステム(100)のコントローラ(101)は、
    第1制御プログラム(A)と、第2制御プログラム(B)とを含み、
    前記第1制御プログラム(A)は、
    前記第1制御プログラム(A)のプログラム状態を記述し、第1ポインタオブジェクト(ZO1)を参照する第1ポインタタイプの少なくとも第1ポインタ要素(Z1)を含む第1データ要素(GA)を含み、
    前記第2制御プログラム(B)は、
    前記第2制御プログラム(B)のプログラム状態を記述し、第2ポインタオブジェクト(ZO2)を参照するように構成された第2ポインタタイプの少なくとも第2ポインタ要素(Z2)を含む第2データ要素(GB)を含み、
    前記第1データ要素(GA)は、前記コントローラ(101)の第1メモリ領域(SPA)に記憶され、
    前記第2データ要素(GB)は、前記コントローラ(101)の第2メモリ領域(SPB)に記憶され、
    前記方法は、
    第1ポインタ識別ステップ(201)において、前記第1ポインタ要素(Z1)と前記第2ポインタ要素(Z2)を、第1リレーション(R1)を介して互いに関連付けられたポインタ要素として識別するステップであって、第1制御プログラム(A)と第2制御プログラム(B)とにおいて、第1ポインタ要素(Z1)と第2ポインタ要素(Z2)とがそれぞれ同一の機能を有することを、第1リレーション(R1)は意味する、ステップと、
    ポインタ移行ステップ(203)において、前記第1ポインタ要素(Z1)を前記第2ポインタ要素(Z2)にマッピングするステップと含み、
    前記ポインタ移行ステップ(203)は、
    第1オブジェクト識別ステップ(205)において、前記第1ポインタ要素(Z1)によって参照される前記第1ポインタオブジェクト(ZO1)を識別するステップと、
    第2オブジェクト識別ステップ(207)において、前記第1ポインタオブジェクト(ZO1)に関連付けられたオブジェクトを前記第2ポインタオブジェクト(ZO2)として識別するステップと、
    第1アドレス決定ステップ(209)において、前記第2ポインタオブジェクト(ZO2)のメモリアドレスを決定するステップと、
    第1ポインタ記憶ステップ(211)において、前記第2ポインタ要素(Z2)の値として前記第2ポインタオブジェクト(ZO2)の決定されたメモリアドレスを前記第2ポインタ要素(Z2)に書き込むステップとを含む、
    方法(200)。
  2. 前記第1データ要素(GA)は、少なくとも第1データサブ要素(GA1)を含み、
    前記第2データ要素(GB)は、第2リレーション(R2)を介して前記第1データサブ要素(GA1)に関連付けられた少なくとも第2データサブ要素(GB1)を含み、
    前記第1データサブ要素(GA1)は、前記第1ポインタオブジェクト(ZO1)に対応し、前記第1ポインタ要素(Z1)によって参照され、
    前記第2データサブ要素(GB1)は、前記第2ポインタオブジェクト(ZO2)に対応し、
    前記ポインタ移行ステップ(203)は、
    第1ポインタアドレス決定ステップ(213)において、前記第1データサブ要素(GA1)の第1相対メモリアドレス(RGA1)を決定するステップであって、
    前記第1データ要素(GA)の第1メモリロケーション(SPGA)に相対する前記第1データ要素(GA)のメモリ領域内の前記第1データサブ要素(GA1)のメモリアドレスは、前記第1相対メモリアドレス(RGA1)によって記述される、ステップと、
    第2ポインタアドレス決定ステップ(215)において、前記第2データサブ要素(GB1)の第2相対メモリアドレス(RGB1)を決定するステップであって、
    前記第2データ要素(GB)の第1メモリロケーション(SPGB)に相対する前記第2データ要素(GB)のメモリ領域内の前記第2データサブ要素(GB1)のメモリアドレスは、前記第2相対メモリアドレス(RGB1)によって記述される、ステップと、
    前記第1アドレス決定ステップ(209)において、前記第2データサブ要素(GB1)の前記第2相対メモリアドレス(RGB1)と、前記第2データ要素(GB)の前記第1メモリロケーション(SPGB)とに基づいて前記第2データサブ要素(GB1)の絶対メモリアドレスを決定するステップと、
    を含む、請求項1に記載の方法(200)。
  3. 前記ポインタ移行ステップ(203)は、
    第3ポインタアドレス決定ステップ(217)において、前記第1ポインタ要素(Z1)の第1相対ポインタアドレス(PAR)を決定するステップであって、
    前記第1データサブ要素(GA1)の前記第1相対メモリアドレス(RGA1)に相対する前記第1データ要素(GA)の前記メモリ領域内の前記第1ポインタ要素(Z1)によって参照されるメモリロケーションは、前記第1ポインタ要素(Z1)の前記第1相対ポインタアドレス(PAR)によって記述される、ステップと、
    第4ポインタアドレス決定ステップ(219)において、前記第1相対ポインタアドレス(PAR)に基づいて、前記第2ポインタ要素(Z2)の第2相対ポインタアドレス(PBR)を決定するステップであって、
    前記第2データサブ要素(GB1)の前記第2相対メモリアドレス(RGB1)に相対する前記第2データ要素(GB)のメモリ領域内のメモリロケーションは、前記第2ポインタ要素(Z2)の前記第2相対ポインタアドレス(PBR)によって決定され、
    前記第2データサブ要素(GB1)に関連する前記第2相対ポインタアドレス(PBR)は、前記第1データサブ要素(GA1)に関連する前記第1相対ポインタアドレス(PAR)に対応する、ステップと、
    前記第1アドレス決定ステップ(209)において、前記第2相対ポインタアドレス(PBR)と、前記第2データサブ要素(GB1)の前記第2相対メモリアドレス(RGB1)と、前記第2メモリ領域(SPB)の前記第2データ要素(GB)の前記第1メモリロケーション(SPGB)とに基づいて、前記第2データサブ要素(GB1)の絶対メモリアドレスを決定するステップと、
    を含む、請求項2に記載の方法(200)。
  4. 前記ポインタ移行ステップ(203)は、
    前記第1データサブ要素(GA1)と前記第2データサブ要素(GB1)とが、それぞれ複合タイプであり、前記第1データサブ要素(GA1)が少なくとも1つの第1コンポーネント(AM)を含み、前記第2データサブ要素(GB1)が少なくとも1つの第2コンポーネント(BM)を含み、前記第1コンポーネント(AM)と前記第2コンポーネント(BM)とが、第3リレーション(R3)を介して関連付けられており、前記第1コンポーネント(AM)が前記第1ポインタ要素(Z1)によって参照される場合において、
    第1コンポーネントアドレス決定ステップ(221)において、前記第1相対ポインタアドレス(PAR)に基づいて前記第1コンポーネント(AM)の第1相対コンポーネントアドレス(PAM)を決定するステップであって、
    前記第1データサブ要素(GA1)の前記第1相対メモリアドレス(RGA1)に相対する前記第1コンポーネント(AM)の前記第1データ要素(GA)の前記メモリ領域内のメモリアドレスは、前記第1相対コンポーネントアドレス(PAM)によって記述される、ステップと、
    第2コンポーネントアドレス決定ステップ(223)において、前記第1相対コンポーネントアドレス(PAM)に基づいて、前記第2データサブ要素(GB1)の第2コンポーネン(BM)の第2相対コンポーネントアドレス(PBM)を決定するステップであって、
    前記第2相対コンポーネントアドレス(PBM)は、前記第2データサブ要素(GB1)の前記第2相対メモリアドレス(RGB1)に相対する前記第2コンポーネント(BM)の前記第2データ要素(GB)の前記メモリ領域内のメモリアドレスを記述する、ステップと、
    前記第1アドレス決定ステップ(209)において、前記第2相対コンポーネントアドレス(PBM)と、前記第2データサブ要素(GB1)の前記第2相対メモリアドレス(RGB1)と、前記第2メモリ領域(SPB)内の前記第2データ要素(GB)の前記第1メモリロケーション(SPGB)に基づいて、前記第2データサブ要素(GB1)の前記第2コンポーネント(BM)の絶対メモリアドレスを決定するステップと、
    を含む、請求項3に記載の方法。
  5. 前記ポインタ移行ステップ(203)は、
    前記第1データサブ要素(GA1)と前記第2データサブ要素(GB1)とは、同じ数の次元を有するそれぞれのフィールドタイプであり、前記第1データサブ要素(GA1)は、複数の第1要素(AE)を含み、前記第2データサブ要素(GB1)は、複数の第2要素(BE)を含み、少なくとも第1要素(AE)と第2要素(BE)とは、第4リレーション(R4)を介して関連付けられ、前記第1要素(AE)は、前記第1ポインタ要素(Z1)によって参照される場合において、
    第1要素アドレス決定ステップ(225)において、前記第1ポインタ要素(Z1)によって参照される前記第1要素(AE)の第1相対要素アドレス(PAE)を決定するステップであって、
    前記第1相対要素アドレス(PAE)は、前記第1データサブ要素(GA1)の前記第1相対メモリアドレス(RGA1)に相対する前記第1ポインタ要素(Z1)によって参照される前記第1要素(AE)の前記第1データ要素(GA)の前記メモリ領域内のメモリアドレスを記述する、ステップと、
    第2要素アドレス決定ステップ(227)において、前記第1相対要素アドレス(PAE)に基づいて、前記第4リレーション(R4)を介して前記第1ポインタ要素(Z1)によって参照される前記第1要素(AE)に関連付けられた第2要素(BE)の第2相対要素アドレス(PBE)を決定するステップであって、
    前記第2相対要素アドレス(PBE)は、前記第2データサブ要素(GB1)の前記第2相対メモリアドレス(RGB1)に相対する前記第2メモリ領域(SPB)内の前記第2要素(BE)のメモリアドレスを記述する、ステップと、
    前記第1アドレス決定ステップ(209)において、前記第2相対要素アドレス(PBE)と、前記第2データサブ要素(GB1)の前記第2相対メモリアドレス(RGB1)と、前記第2メモリ領域(SPB)内の前記第2データ要素(GB)の前記第1メモリロケーション(SPGB)とに基づいて、前記第2データサブ要素(GB1)の前記第2要素(BE)の絶対メモリアドレスを決定するステップと、
    を含む、請求項3に記載の方法。
  6. 前記第1要素アドレス決定ステップ(225)は、
    要素サイズ決定ステップ(229)において、前記第1データサブ要素(GA1)の前記第1要素(AE)の第1要素サイズ(SAE)を決定するステップであって、
    第1要素(AE)の前記第1要素サイズ(SAE)は、前記第1データ要素(GA)の前記メモリ領域内の前記第1要素(AE)によって占有されるメモリ空間に対応する、ステップと、
    前記第1相対ポインタアドレス(PAR)と前記第1要素サイズ(SAE)とに基づいて、前記第1ポインタ要素(Z1)によって参照される前記第1要素(AE)を決定するステップと、
    を含む、請求項5に記載の方法。
  7. 前記ポインタ移行ステップ(203)は、
    第5ポインタアドレス決定ステップ(231)において、前記第1相対ポインタアドレス(PAR)と、前記第1相対コンポーネントアドレス(PAM)とに基づいて、第1相対ポインタ部分アドレス(PAMX)を決定するステップであって、
    前記第1相対ポインタ部分アドレス(PAMX)によって、前記第1ポインタ要素(Z1)よって参照される前記第1メモリ領域(SPA)内のメモリロケーションは、前記第1データサブ要素(GA1)の前記第1コンポーネント(AM)の前記第1相対コンポーネントアドレス(PAM)に相対して記述される、ステップと、
    第6ポインタアドレス決定ステップ(233)において、前記第1相対ポインタ部分アドレス(PAMX)と、前記第2相対ポインタアドレス(PBR)と、前記第2相対コンポーネントアドレス(PBM)に基づいて、第2相対ポインタ部分アドレス(PBMX)を決定するステップであって、
    前記第2データ要素(GB)の前記メモリ領域内のメモリロケーションは、前記第2相対ポインタ部分アドレス(PBMX)によって前記第2相対コンポーネントアドレス(PBM)に相対して決定され、
    前記第2データサブ要素(GB1)に関連する前記第2相対ポインタ部分アドレス(PBMX)は、前記第1データサブ要素(GA1)に関連する前記第1相対ポインタ部分アドレス(PAMX)に対応する、ステップと、
    前記第1アドレス決定ステップ(209)において、前記第2相対ポインタ部分アドレス(PBMX)と、前記第2相対コンポーネントアドレス(PBM)と、前記第2データサブ要素(GB1)の前記第2相対メモリアドレス(RGB1)と、前記第2データ要素(GB)の前記メモリ領域内の前記第2データ要素(GB)の前記第1メモリロケーション(SPGB)とに基づいて、前記第2データサブ要素(GB1)の前記第2コンポーネント(BM)の絶対メモリアドレスを決定するステップと、
    を含む、請求項4に記載の方法。
  8. 前記ポインタ移行ステップ(203)は、
    第7ポインタアドレス決定ステップ(235)において、前記第1相対ポインタアドレス(PAR)と、前記第1相対要素アドレス(PAE)とに基づいて、第3相対ポインタ部分アドレス(PAEX)を決定するステップであって、
    前記第1データサブ要素(GA1)の前記第1要素(AE)の前記第1相対要素アドレス(PAE)に相対する前記第1ポインタ要素(Z1)によって参照される前記メモリロケーションは、前記第3相対ポインタ部分アドレス(PAEX)によって記述される、ステップと、
    第8ポインタアドレス決定ステップ(237)において、前記第3相対ポインタ部分アドレス(PAEX)と、前記第2相対要素アドレス(PBE)とに基づいて、第4相対ポインタ部分アドレス(PBEX)を決定するステップであって、
    前記第2相対要素アドレス(PBE)に相対する前記第2データ要素(GB)の前記メモリ領域内のメモリロケーションは、前記第4相対ポインタ部分アドレス(PBEX)によって決定され、
    前記第2データサブ要素(GB1)に関連する前記第4相対ポインタ部分アドレス(PBEX)は、前記第1データサブ要素(GA1)に関連する前記第3相対ポインタ部分アドレス(PAEX)に対応する、ステップと、
    前記第1アドレス決定ステップ(209)において、前記第4相対ポインタ部分アドレス(PBEX)と、前記第2相対要素アドレス(PBE)と、前記第2相対ポインタアドレス(PBR)と、前記第2データサブ要素(GB1)の前記第2相対メモリアドレス(RGB1)と、前記第2メモリ領域(SPB)の前記第2データ要素(GB)の前記第1メモリロケーション(SPGB)に基づいて、前記第2データサブ要素(GB1)の前記第2要素(BE)の絶対メモリアドレスを決定するステップと、
    を含む、請求項5または6に記載の方法。
  9. オブジェクト検証ステップ(239)において、前記第1ポインタオブジェクト(ZO1)は、前記第1データ要素(GA)に含まれるかどうかを検証するステップと、
    第3オブジェクト識別ステップ(241)において、前記第1ポインタオブジェクト(ZO1)は、前記第1データ要素(GA)に含まれていない場合、前記第2ポインタオブジェクト(ZO2)を前記第1ポインタオブジェクト(ZO1)として識別するステップと
    第2ポインタ記憶ステップ(243)において、前記第1ポインタ要素(Z1)の値を前記第2ポインタ要素(Z2)に書き込むステップと、
    をさらに含む、請求項1から8のいずれか1項に記載の方法(200)。
  10. 前記ポインタ移行ステップ(203)は、
    第2ポインタ識別ステップ(245)において、第3ポインタ要素(Z3)を識別するステップであって、
    前記第3ポインタ要素(Z3)は、前記第1データ要素(GA)または前記第2データ要素(GB)のいずれにも含まれず、
    前記第3ポインタ要素(Z3)は、前記第1データ要素(GA)に含まれる第3ポインタオブジェクト(ZO3)を参照し、
    前記第3ポインタオブジェクト(ZO3)は、前記第1データサブ要素(GA1)、第1コンポーネント(AM)、または第1要素(AE)であり、
    前記第3ポインタオブジェクト(ZO3)は、第2リレーション(R2)、第3リレーション(R3)または第4リレーション(R4)を介して、第2データサブ要素(GB1)、第2コンポーネント(BM)、または第2要素(BE)に関連付けられる、ステップと、
    第2アドレス決定ステップ(247)において、前記第3ポインタオブジェクト(ZO3)に関連付けられた前記第2データサブ要素(GB1)、前記第3ポインタオブジェクト(ZO3)に関連付けられた前記第2コンポーネント(BM)、または前記第2メモリ領域(SPB)内の前記第3ポインタオブジェクト(ZO3)に関連付けられた前記第2要素(BE)の絶対メモリアドレスを決定するステップと、
    第3ポインタ記憶ステップ(249)において、前記第3ポインタオブジェクト(ZO3)に関連付けられた前記第2データサブ要素(GB1)、前記第3ポインタオブジェクト(ZO3)に関連付けられた前記第2コンポーネント(BM)、または前記第3ポインタオブジェクト(ZO3)に関連付けられた前記第2要素(BE)の絶対メモリアドレスを前記第3ポインタ要素(Z3)の値として、書き込むステップと、
    を含む、請求項2から8および請求項2に従属する請求項9のいずれか1項に記載の方法(200)。
  11. 関数生成ステップ(251)において、前記第1ポインタ要素(Z1)を前記第2ポインタ要素(Z2)にマッピングするための第1ポインタ移行関数(ZMIG1)を生成するステップをさらに含み、
    前記第1ポインタ移行関数(ZMIG1)は、前記第1ポインタタイプのポインタ要素を前記第2ポインタタイプのポインタ要素にマッピングし、前記ポインタ移行ステップ(203)を実行するように構成される、
    請求項1から10のいずれか1項に記載の方法(200)。
  12. 前記関数生成ステップ(251)は、
    タイプ識別ステップ(253)において、前記第1ポインタ要素(Z1)の前記第1ポインタタイプと前記第2ポインタ要素(Z2)の前記第2ポインタタイプとを識別するステップを含む、請求項11に記載の方法。
  13. 第1検証ステップ(255)の前記関数生成ステップ(251)において、前記第1ポインタ移行関数(ZMIG1)が生成可能であったかどうかを検証するステップと、
    前記関数生成ステップ(251)において、前記第1ポインタ移行関数(ZMIG1)が生成可能でなかった場合、初期化ステップ(257)において、前記第2ポインタ要素(Z2)を初期値に設定するステップ、および/または、
    前記関数生成ステップ(251)において、前記第1ポインタ移行関数(ZMIG1)が生成可能でなかった場合、終了ステップ(259)において、移行をキャンセルするステップと、
    をさらに含む、請求項11または12に記載の方法(200)。
  14. 前記コントローラ(101)は、制御プログラムを変換するためのコンパイラモジュール(109)をさらに含み、
    前記関数生成ステップ(251)は、前記コンパイラモジュール(109)によって実行される、請求項11から13のいずれか1項に記載の方法。
  15. 移行ステップ(261)において、前記第1データ要素(GA)を前記第2データ要素(GB)にマッピングするステップ、
    前記第1データサブ要素(GA1)を前記第2データサブ要素(GB1)にマッピングするステップ、
    前記第1コンポーネント(AM)を前記第2コンポーネント(BM)にマッピングするステップ、および
    前記第1要素(AE)を前記第2要素(BE)にマッピングするステップのうち少なくとも1つのステップと、
    前記第2制御プログラム(B)を実行するステップと、
    前記第2データ要素(GB)を考慮して、前記第2制御プログラム(B)に基づいてオートメーションシステム(100)を制御するステップと、
    をさらに含む、請求項10に記載の方法。
JP2022535842A 2019-12-13 2020-12-11 オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程でのポインタ要素のデータ移行の方法 Active JP7303389B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102019134353.4 2019-12-13
DE102019134353.4A DE102019134353A1 (de) 2019-12-13 2019-12-13 Verfahren zur Datenmigration eines Zeigerelements im Zuge einer Datenmigration eines Programmzustands eines Steuerprogramms eines Automatisierungssystems
PCT/EP2020/085797 WO2021116428A1 (de) 2019-12-13 2020-12-11 Verfahren zur datenmigration eines zeigerelements im zuge einer datenmigration eines programmzustands eines steuerprogramms eines automatisierungssystems

Publications (2)

Publication Number Publication Date
JP2022549529A JP2022549529A (ja) 2022-11-25
JP7303389B2 true JP7303389B2 (ja) 2023-07-04

Family

ID=73834537

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022535842A Active JP7303389B2 (ja) 2019-12-13 2020-12-11 オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程でのポインタ要素のデータ移行の方法

Country Status (6)

Country Link
US (1) US11640293B2 (ja)
EP (1) EP4055472B1 (ja)
JP (1) JP7303389B2 (ja)
CN (1) CN114667503B (ja)
DE (1) DE102019134353A1 (ja)
WO (1) WO2021116428A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000137604A (ja) 1998-10-30 2000-05-16 Oki Electric Ind Co Ltd データ引き継ぎシステム
JP2002507020A (ja) 1998-03-12 2002-03-05 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) 障害を生じることなくデータを更新する技術
US20020120601A1 (en) 2001-02-26 2002-08-29 Elmendorf Peter C. Dynamic seamless reconfiguration of executing parallel software
US20110224809A1 (en) 2010-03-09 2011-09-15 Siemens Aktiengesellschaft Method for Operating an Automation System
WO2018159691A1 (ja) 2017-02-28 2018-09-07 日本電信電話株式会社 通信処理装置、情報処理装置、及び、通信処理装置の制御方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19535306A1 (de) * 1995-09-22 1997-03-27 Siemens Ag Verfahren zum Konvertieren sich unterscheidender Datenformate
US6049667A (en) * 1997-08-15 2000-04-11 International Business Machines Corporation Computer system, method of compiling and method of accessing address space with pointer of different width therefrom
NO20021247D0 (no) * 2002-03-13 2002-03-13 Ericsson Telefon Ab L M Fremgangsmåte og system for oppgradering av programvare
US7752617B2 (en) * 2003-11-20 2010-07-06 International Business Machines Corporation Apparatus, system, and method for updating an embedded code image
US20050114853A1 (en) * 2003-11-26 2005-05-26 Glider Joseph S. Software upgrade and downgrade in systems with persistent data
US20070055964A1 (en) * 2005-09-06 2007-03-08 Morfik Technology Pty. Ltd. System and method for synthesizing object-oriented high-level code into browser-side javascript
TWI484413B (zh) * 2012-04-03 2015-05-11 Mstar Semiconductor Inc 基於功能性的程式比較方法
WO2015020655A1 (en) * 2013-08-08 2015-02-12 Empire Technology Development Llc Migration of executing processes
US10108404B2 (en) * 2016-10-24 2018-10-23 International Business Machines Corporation Compiling optimized entry points for local-use-only function pointers
GB2557366B (en) * 2016-12-02 2020-10-28 Advanced Risc Mach Ltd An apparatus and method for transferring data between address ranges in memory
CN110488738B (zh) * 2019-07-23 2021-04-09 中车青岛四方机车车辆股份有限公司 一种代码生成方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002507020A (ja) 1998-03-12 2002-03-05 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) 障害を生じることなくデータを更新する技術
JP2000137604A (ja) 1998-10-30 2000-05-16 Oki Electric Ind Co Ltd データ引き継ぎシステム
US20020120601A1 (en) 2001-02-26 2002-08-29 Elmendorf Peter C. Dynamic seamless reconfiguration of executing parallel software
US20110224809A1 (en) 2010-03-09 2011-09-15 Siemens Aktiengesellschaft Method for Operating an Automation System
WO2018159691A1 (ja) 2017-02-28 2018-09-07 日本電信電話株式会社 通信処理装置、情報処理装置、及び、通信処理装置の制御方法

Also Published As

Publication number Publication date
EP4055472B1 (de) 2023-04-19
CN114667503A (zh) 2022-06-24
EP4055472A1 (de) 2022-09-14
DE102019134353A1 (de) 2021-06-17
US20220261237A1 (en) 2022-08-18
CN114667503B (zh) 2023-08-04
US11640293B2 (en) 2023-05-02
WO2021116428A1 (de) 2021-06-17
JP2022549529A (ja) 2022-11-25

Similar Documents

Publication Publication Date Title
US6092097A (en) Parallel processing system with efficient data prefetch and compilation scheme
KR101107797B1 (ko) 프로그램 코드 변환을 위한 공유 코드 캐싱 방법 및 장치
KR100518584B1 (ko) 공유 라이브러리 시스템 및 상기 시스템 구축 방법
US7412710B2 (en) System, method, and medium for efficiently obtaining the addresses of thread-local variables
RU2676018C2 (ru) Система и способ для создания выборочных моментальных снимков базы данных
EP2246786A1 (en) Managing a shared memory region
JPH03150637A (ja) パイプライン対応のレジスタ割付け方式
CN103645888A (zh) 一种自动构建操作***的***及方法
CN103677778A (zh) 一种CAP文件Classref常量的解析方法
JP7303389B2 (ja) オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程でのポインタ要素のデータ移行の方法
CN86103694A (zh) 缩减指令集的计算机中字节传送的方法和装置
US11748078B1 (en) Generating tie code fragments for binary translation
US9189297B2 (en) Managing shared memory
JP7270112B2 (ja) 制御プログラムのプログラム状態のデータ移行で自動化システムの制御プログラムを更新するための方法
JP6102136B2 (ja) モジュール管理装置、モジュール管理システム及びモジュール管理方法
Numrich F^{--}: A Parallel Extension to Cray Fortran
WO2009024907A2 (en) Data processing with protection against soft errors
EP2171591B1 (en) Efficiently locating transactional code blocks in a transactional memory system
US11640372B2 (en) System and method for providing a container environment in a single file
WO2016167797A1 (en) Morphed instruction according to configuration update
CN101216757A (zh) 一种risc处理器及其数据访存方法
JP7499966B2 (ja) 制御装置、及び、アドレス管理方法
JP2014149587A (ja) 情報処理装置およびコンパイラプログラム
Rzońca et al. Interfacing inputs and outputs with IEC 61131-3 control software
JP2014149810A (ja) 情報処理装置およびコンパイラプログラム

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20220809

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220809

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230310

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230606

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230622

R150 Certificate of patent or registration of utility model

Ref document number: 7303389

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150