JP7270112B2 - 制御プログラムのプログラム状態のデータ移行で自動化システムの制御プログラムを更新するための方法 - Google Patents

制御プログラムのプログラム状態のデータ移行で自動化システムの制御プログラムを更新するための方法 Download PDF

Info

Publication number
JP7270112B2
JP7270112B2 JP2022535845A JP2022535845A JP7270112B2 JP 7270112 B2 JP7270112 B2 JP 7270112B2 JP 2022535845 A JP2022535845 A JP 2022535845A JP 2022535845 A JP2022535845 A JP 2022535845A JP 7270112 B2 JP7270112 B2 JP 7270112B2
Authority
JP
Japan
Prior art keywords
data
control program
sub
type
data type
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
JP2022535845A
Other languages
English (en)
Other versions
JP2022551342A (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 JP2022551342A publication Critical patent/JP2022551342A/ja
Application granted granted Critical
Publication of JP7270112B2 publication Critical patent/JP7270112B2/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
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/0205Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric not using a model or a simulator of the controlled system
    • G05B13/021Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric not using a model or a simulator of the controlled system in which a variable is automatically adjusted to optimise the performance
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/0205Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric not using a model or a simulator of the controlled system
    • G05B13/024Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric not using a model or a simulator of the controlled system in which a parameter or coefficient is automatically adjusted to optimise the performance
    • 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/436Semantic checking
    • G06F8/437Type checking

Description

〔関連出願の相互参照〕
本特許出願は、ドイツ特許出願DE 10 2019 134 373.9の優先権を主張し、その開示内容は、参照により本明細書に組み込まれる。
本発明は、自動化システムの制御プログラムを更新し、同時に制御プログラムのプログラム状態を記述するデータを移行することに関する。
自動化技術において、自動化システムの加入者は、通常、対応する制御プログラムを周期的に実行することによって、自動化システムのコントローラによって制御され、読み出される。それぞれの加入者が制御プログラムのそれぞれの制御命令に従って制御されるサイクル毎に、自動化システム及び制御プログラムの状態を記述する情報は、コントローラによって記録され、保存される。このようにアクセスされるグローバル状態は、自動化システムと制御プログラムの状態を反映するために必要な完全な情報を含む。例えば、グローバル状態は、制御プログラムで使用される変数、機能、データベース、又は他のオブジェクトを含むことができる。更に、グローバル状態は、自動化システムの加入者に関する情報、又は自動化システムで実行されている処理に関する情報を含むことができる。
このようなグローバル状態は、各制御サイクルの完了後に再作成することができ、その結果、自動化システム及び制御プログラムの現在の状態をいつでも反映することができる。グローバル状態は、対応するグローバルメモリ領域の内容である。制御プログラムのサイクルの実行の間、メモリを(必要に応じて、数回)変更することができる。メモリが変更する毎に、状態は、変更する可能性がある。無効な中間状態が発生することがある。サイクルの終わりに向かって、グローバル状態は、一貫しており、次の実行サイクルの開始まで維持される。
制御プログラムが後続の制御サイクルで再び実行されるとき、制御プログラムは、グローバル状態で保存されたデータを検索し、従って、前の制御サイクルにおける自動化システムの状態に基づいて、後続のサイクルにおける自動化システムを制御し続けることができる。
自動化システムの動作中に、自動化システムの最適化された動作を達成又は保証するために、様々なパラメータを再調整しなければならない、又はプロセスを変更又は調整しなければならない状況が、しばしば生じる。これに関連して、動作中に、現在実行中の制御プログラムを、必要な調整が考慮されるより最新のバージョンに置き換えることがしばしば必要である。交換後の自動化システムの再開始を回避し、代わりに現在の状態で自動化システムを動作させ続けることができるようにするために、制御プログラムの現在のバージョンは、最後に実行された制御サイクルの時点での制御プログラム及び自動化システムの状態を記述するグローバル状態の情報にアクセスできなければならない。これは、制御プログラムの現在のバージョンの実行が自動化システムの現在の状態に基づいて自動化システムを制御し続けることができ、自動化システムの完全な再開始を回避することができることを保証する唯一の方法である。
現在のバージョンの制御プログラムにおける変更がグローバル状態に保存されている情報に影響を与えると、問題が発生する。例えば、現在のバージョンの制御プログラムにおいて、変数の名称変更、削除、追加を行ったり、制御プログラムのオブジェクトのデータ型を変更したりする場合がある。更新された制御プログラムの変数又はオブジェクトとグローバル状態に保存されたオブジェクトとの間のマッピングが妨げられる可能性があるため、このような変更又は修正は、現在のバージョンの制御プログラムがグローバル状態の情報に直接アクセスすることを妨げ得る。
換言すると、制御プログラムの実行可能コードは、グローバル状態の特定の構造を想定することができ、例えば、対応するメモリのどの相対位置に変数が配置され、メモリの内容がどのように解釈されるかを想定することができる。
従って、グローバル状態の情報を現在のバージョンの制御プログラム及びその中で行われた変更に適応させる必要があり、その結果、調整が成功した場合、現在の制御プログラムは、グローバル状態の情報にアクセスし、その現在の状態で自動化システムを制御することができる。
従って、本発明の目的は、自動化システムの制御プログラムを更新し、同時に現在のプログラム状態を移転する改良された方法を提供することである。
本目的は、独立請求項による方法によって解決される。好ましい実施形態は、従属請求項に示されている。
本発明の第1の態様によれば、自動化システムの制御プログラムを、制御プログラムのプログラム状態のデータ移行で更新する方法が、提供され、自動化システムのコントローラは、第1の制御プログラム及び第2の制御プログラムを含み、第1の制御プログラムは、自動化システムを制御するためにサイクリックに実行され、第2の制御プログラムは、第1の制御プログラムの更新であり、第1の制御プログラムは、第1の制御プログラムのプログラム状態を記述し、コントローラの第1のメモリ領域に保存された、第1のデータ型の第1のデータ要素を含み、第2の制御プログラムは、第2の制御プログラムのプログラム状態を記述し、第2のメモリ領域に保存された、第2のデータ型の第2のデータ要素を含み、第1の生成ステップにおいて、第1のデータ要素を第2のデータ要素にマッピングするための第1の移行関数を生成するステップ、中断ステップにおいて、第1の制御プログラムのサイクリック実行を中断するステップ、第1の決定ステップにおいて、第1のデータ要素の値を決定するステップであって、第1のデータ要素の決定された値は、中断時の制御プログラムのプログラム状態を記述する、ステップ、及び移行ステップにおいて、第1の移行関数を実行することによって、第1のデータ要素の値を第2のデータ要素にマッピングするステップ、を含む。
これは、自動化システムの制御プログラムを更新するための改善された方法を提供することができ、同時に、制御プログラムのプログラム状態のデータ移行を可能にするという技術的利点を達成する。本方法は、自動化システムのサイクリック制御に使用される制御プログラムが、自動化システムの動作の間に、更新されたバージョンの制御プログラムによって置き換えられることを可能にする。
本目的のために、自動化システムを制御する方法の実行時にサイクリックにアクセスされ実行される第1の制御プログラムと、更新されたバージョンの第1の制御プログラムであってよく、第1の制御プログラムを置き換えることを意図した第2の制御プログラムとが、自動化システムのコントローラのメモリに保存される。第1の制御プログラムは、メモリの第1のメモリ領域に保存され、自動化システムの状態及び第1の制御プログラムを記述する第1のデータ要素を更に含む。
第2の制御プログラムは、更新されたバージョンの第1の制御プログラムであってよく、更新の形式において第1の制御プログラムへの変更を含んでよい。代替的に、第2の制御プログラムは、現在のバージョンの第1の制御プログラムとは異なる、古いバージョンの第1の制御プログラムであってよい。代替的に、第2の制御プログラムは、第1の制御プログラムに基づく必要のない、独立してプログラムされた制御プログラムであってもよい。
第1のデータ要素は、複雑なデータ構造として構築され、複数のオブジェクトを含み、第1の制御プログラム及び自動化システムのグローバル状態を記述することができる。
以下において、オブジェクトは、制御プログラムのデータオブジェクト又はオブジェクトであり、また、複雑なデータ構造を有し、複雑な情報内容を含むことができる。グローバル状態は、第1のデータ要素によって成り立つオブジェクトによって形成され、自動化システムの制御に必要な全ての情報を含む。
第2のメモリ領域は、第2の制御プログラムを保存し、これは、更新されたバージョンの第1の制御プログラムであってもよく、第1の制御プログラムの代替としてサーブする。第2の制御プログラムは、第2の制御プログラムのグローバル状態に関する情報が保存され得る第2のデータ要素を含む。第2のデータ要素は、同様に複雑なデータ構造を有し、第2の制御プログラム内で定義された複数のオブジェクトを含むことができる。オブジェクト又は第2のデータ要素によって成り立つ情報は、第2の制御プログラムのグローバル状態を記述する。
第1の制御プログラムを第2の制御プログラムに置き換え、第1の制御プログラムのグローバル状態を第2の制御プログラムに転送するために、第1の生成ステップにおいて、第1の移行関数は、生成される。第1の移行関数は、第1のデータ要素を第2のデータ要素にマッピングし、従って第1の制御プログラムのグローバル状態に関する情報を第2の制御プログラムの名称集として転送する、又は第2の状態の解釈又は意味が可能な限り第1の状態に対応するように、第2のデータ要素に保存された第2の制御プログラムのオブジェクト内の第1の制御プログラムのグローバル状態の情報を表現するために、サーブする。
中断ステップにおいて、第1の制御プログラムのサイクリック実行は、中断され、第1の決定ステップにおいて、第1のデータ要素の値は、続いて決定される。第1の制御プログラムのサイクリック実行が中断されるとき、第1の制御プログラムのグローバル状態に関する情報と、第1の制御プログラムのサイクリック実行中断時の自動化システムの情報は、第1のデータ要素に保存される。従って、第1のデータ要素の値は、サイクリック実行の中断時、又は最後に実行された制御サイクルの完了時又は完了後の自動化システムのグローバル状態を記述する。
第1の制御プログラムのサイクリック実行を中断することは、制御サイクルの間、2つの制御サイクルの間、制御サイクルが開始される前、又は制御サイクルが完了した後に実行されてよい。
移行ステップにおいて、第1のデータ要素の値は、第1の移行関数を実行することによって、第2のデータ要素にその後、マッピングされる。第1の移行関数は、第1のデータ要素の値を読み出し、読み出した値を第2のデータ要素に書き込む。従って、第1の移行関数は、第1のデータ要素の値を第2の制御プログラムの値にマッピングし、読み出した値を第2のデータ要素に書き込む。
第1の制御プログラム及び最後に実行された制御サイクルの時点における自動化システムのグローバル状態を記述する第1のデータ要素の値を第2のデータ要素にマッピングすることにより、第1の制御プログラムのグローバル状態は、第2の制御プログラムに移行されることができる。その後のステップにおいて、自動化システムが第2の制御プログラムを実行することによって制御される場合、第2の制御プログラムは、最後に実行された制御サイクルの時点における自動化システムのグローバル状態の情報にアクセスすることができ、この情報は、移行ステップによって第2のデータ要素にマッピングされ、自動化システムは、第2の制御プログラムに基づいて、最後に実行された制御サイクルの状態においてシームレスに制御されることができる。
グローバル状態を第2の制御プログラムに転送することによって、第2の制御プログラムに基づく自動化システムの制御は、最後に決定された状態で継続されることができ、第1の制御プログラムのグローバル状態の情報が失われ、自動化システムの各プロセスが再開されなければならず、開始状態で制御を開始する、自動化システムの再開始を、回避することができる。
従って、自動化システムの実質的な停止なしに、第1の制御プログラムに基づく制御と、自動化システムの第2の制御プログラムに基づく制御との間の円滑な移行を、達成することができる。好ましくは、第2の制御プログラムによる第1の制御プログラムの置換は、2つの連続する制御サイクルの間の中断の間に実行されてよく、その結果、自動化システムの停止は、完全に回避されてよい。
第1の制御プログラムAのグローバル状態と、第1の制御プログラムに基づいて実行された最後の制御サイクルの時点の自動化システムのグローバル状態とを、データ移行後の第2のメモリ領域内の第2のデータ要素にマッピングすることにより、グローバル状態は、使用不可能なメモリギャップなしに第2のデータ要素に保存される。第2のデータ要素は、第2のデータ要素の全てのオブジェクトが密にパックされ、使用できないメモリギャップなしに配置される、第2のメモリ領域内の連続した領域を形成する。第1の制御プログラムAに基づいて実行された最後の制御サイクルの時点における第1の制御プログラム及び自動化システムのグローバル状態を、移行ステップにおいてオブジェクトごとに第2のデータ要素オブジェクトの対応するオブジェクトにマッピングすることにより、グローバル状態は、正常なデータ移行後に、第2のメモリ領域に連続したユニットとして保存される。グローバル状態が、第1のデータ要素のオブジェクトを一方で追加し、一方で第1のデータ要素内でのオブジェクトの使用を中止する代わりに、新しいメモリ領域内でデータ移行によって完全に再構築されるため、メモリ領域の断片化が防止され得る。
第1のデータ要素及び第2のデータ要素は、以下でそれぞれが複数の構成要素又はオブジェクトを含む複雑なデータ構造を有することができ、これらの構成要素又はオブジェクトは同様に、複雑なデータ型であってよい。第1のデータ要素は、第1の制御プログラム及び自動化システムのグローバル状態を記述し、従って自動化システム又は第1の制御プログラムのそれぞれの状態を記述するために必要な情報を含む。第2のデータ要素は、第2の制御プログラム及び自動化システムのグローバル状態を記述するように構成される。この方法を実行する際に、第2のデータ要素は、第2の制御プログラム内で定義された全てのオブジェクトを既に含むことができる。
グローバル状態は、制御プログラムが自動化システムにアクセスするために必要とする全ての変数又は異なる設定されたオブジェクトを含むことができる。グローバル状態において、制御プログラムのそれぞれのオブジェクトは、自動化システムを動作させ、自動化システムのそれぞれの状態を記述することによって、生成された対応する値又は測定値を含むことができる。
以下において、データ移行は、第1のメモリ領域から第2のメモリ領域へのデータの転送である。データ移行は、第1のメモリ領域のデータを読み出し、第2のメモリ領域にデータを書き込むことに加えて、それぞれのデータ型の変換を含むことができる。従って、データ移行のコース内において、第1のメモリ領域内の第1のデータ型のデータを第2のデータ型のデータに変換し、第2のメモリ領域に保存することができる。
一実施形態によれば、本方法は、第1の検証ステップにおいて、第1のデータ要素の値が第2のデータ要素に十分に正確にマッピングされ得るかどうかを検証するステップであって、第1のデータ要素の値が第2のデータ要素に表され得る場合、第1のデータ要素の値が、第2のデータ要素に十分に正確にマッピングされ得、第1のデータ要素の値が第2のデータ要素にマッピングされ得る場合、第2の制御プログラムにサイクリックにアクセスし、第1の制御ステップにおいて、第2の制御プログラムを根拠として、第2のデータ要素を考慮し、自動化システムを制御し、且つ第1のデータ要素の値が第2のデータ要素にマッピングされ得ない場合、第2の制御ステップにおいて、第1の制御プログラムを根拠として、第1の制御プログラムのサイクリックアクセスを継続し、第1のデータ要素を考慮し、第1の制御プログラムに基づいて自動化システムを制御する、ステップを更に含む。
これは、制御プログラムのプログラム状態の同時データ移行による制御プログラムの更新方法が提供され、満足できる結果が得られない場合、プログラム状態のデータ移行が中止され、データ移行が中止された後、元の制御プログラム及び関連付けられたプログラム状態を根拠として、自動化システムの制御が継続されるという技術的利点を達成する。
検証ステップにおいて、第1のデータ要素の値が第2のデータ要素に十分に正確にマッピングされ得るかどうかが、検証される。第1のデータ要素のデータ型及び第2のデータ要素のデータ型が、変換によって第1のデータ要素の値の情報内容を実質的に変更せずに互いに変換できない場合、第1のデータ要素と第2のデータ要素との十分に正確なマッピングは、禁止され得る。
検証ステップにおける検証は、第1のデータ要素及び第2のデータ要素のデータ型に応じて変更することができる。例えば、第1のデータ要素及び第2のデータ要素がスカラデータ型である場合、明示的に検証が実行される。第1のデータ要素及び第2のデータ要素が複合型又はフィールド型である場合、検証は、複合型の構成要素又はフィールド型の構成要素がスカラデータ型であれば、十分な精度で互いにマッピングされ得るかどうかを検証することによって間接的に実行される。それらが十分な精度で互いにマッピングされ得ない場合、第1のデータ要素及び第2のデータ要素は、十分な精度で互いにマッピングされ得ない。複合型の構成要素又はフィールド型の要素が再び複合型又はフィールド型である場合、それらの構成要素又は要素が検証に使用される。検証は、複合型の構成要素又はフィールド型の要素がスカラデータ型を有するまで、このように続く。
以下において、マッピングによって元のデータ要素の情報内容が変更された場合、データ要素は、十分な精度で互いにマッピング可能ではないと見なされる。代替的に、元のデータ要素の情報内容がマッピングによって重大に変更され、変更された情報内容が更なる考慮のために使用不可能である場合、データ要素は、十分な精度で互いにマッピングすることができないと見なされてもよい。これは、ケースバイケースで決定されなければならないかもしれない。
以下において、複合型のデータ型を有するデータ要素とフィールド型のデータ型を有するデータ要素とは十分な精度で互いにマッピング可能であるとはみなされない。更に、複合型のデータ型を有するデータ要素とスカラ型のデータ型を有するデータ要素とは、十分な精度で互いにマッピング可能であるとはみなされない。更に、フィールド型のデータ型のデータ要素とスカラ型のデータ型のデータ要素とは、互いに十分な精度でマッピングできないとみなされる。更に、スカラ型のデータ型の2つのデータ要素は、十分な精度で互いにマッピングされないこともある。
異なる種類のデータ型のために第1のデータ要素を第2のデータ要素に十分に正確にマッピングすることができない場合に加えて、第2のデータ要素のデータ型が原則的に互換性のあるデータ型にもかかわらず、第1のデータ要素の値を完全に表現するのに適していない場合は、十分に正確なマッピングも失敗することがある。例えば、第1のデータ要素のデータ型が符号なし16ビット整数であり、第2のデータ要素のデータ型が符号なし8ビット整数であり、第1のデータ要素に1000の値が格納されていると、この値1000は、第2のデータ要素の符号なし8ビット整数で完全に表現できず、その最大数値は、255になる。第1のデータ要素のデータ型と第2のデータ要素のデータ型、及び2つのデータ型のそれぞれの互換性に加えて、第1の検証ステップにおいて、第1のデータ要素の値は、第2のデータ要素のデータ型によって、表現可能性を追加でチェックされる。第1のデータ要素の実際の値が、第2のデータ要素のデータ型において完全に、又は必要とされる精度で表現され得ない場合、第1のデータ要素及び第2のデータ要素は、十分な精度で互いにマッピングされ得るとはみなされない。
検証ステップにおいて、第1のデータ要素の値が第2のデータ要素に十分に正確にマッピングされ得ることと認識された場合、第2の制御プログラムは、移行ステップにおいて、第1のデータ要素の値がマッピングされた第2のデータ要素を考慮して、第1の制御ステップにおいて自動化システムを制御するためにサイクリックにアクセスされる。従って、第1の制御プログラムは、第2の制御プログラムによって正常に置き換えられ、第1の制御プログラムのプログラム状態又はグローバル状態を記述し、これに関連付けられた自動化システムの第1のデータ要素のデータ移行の正常さのため、自動化システムは、第1の制御プログラムが第2の制御プログラムによって置き換えられた後、第2の制御プログラムに基づいて現在の状態で動作し続けることができる。
正常なデータ移行及び第1のデータ要素の値の第2のデータ要素への十分に正確なマッピングの結果として、第2の制御プログラムは、第1の制御プログラムのグローバル状態に関する第2のデータ要素に保存された情報にアクセスし、この状態に基づいて自動化システムを制御することができる。従って、自動化システムのグローバル状態に関する情報が正常なデータ移行によって第2の制御プログラムの名称集に転送され得、従って、第2の制御プログラムが自動化システムのグローバル状態の情報にアクセスし得るため、制御プログラムを更新した後の自動化システムの再開始は、回避され得る。
一方で、検証ステップにおいて、第1のデータ要素の値が第2のデータ要素に十分に正確にマッピングされ得ないと判定された場合、第1の制御プログラムへのサイクリックのアクセスは、第1のデータ要素を考慮して、第2の制御ステップにおいて継続される。グローバル状態のデータ移行が失敗し、第1のデータ要素の値が第2のデータ要素に十分に正確にマッピングできない場合、第1の制御プログラムの更新は、破棄され、元のグローバル状態を考慮した変更されていない第1の制御プログラムに基づいて自動化システムが制御される。このようにして、グローバル状態の不正確なデータ移行、又は第1のデータ要素の値の第2のデータ要素への不正確なマッピングのために、自動化システムの動作が中断されなければならないことは、回避することができる。
第1の制御プログラム及び第1のデータ要素が第1のメモリ領域に保存され、第2の制御プログラム及び第2のデータ要素が第2のメモリ領域に保存されるため、第1の制御プログラム及び第1のデータ要素の両方は、データ移行及び第1のデータ要素の値の第2のデータ要素へのマッピングの影響を受けず、正常及び失敗の両方のデータ移行後も引き続き利用可能である。これは、グローバル状態のデータ移行が失敗した場合、又は第1のデータ要素の値の第2のデータ要素へのマッピングが失敗した場合、元の第1の制御プログラム及び第1のデータ要素に記憶された第1の制御プログラムと自動化システムのグローバル状態とが、いつでも戻され、従って、自動化システムの制御が継続され得ることを提供する。従って、自動化システムの停止又は自動化システムの再開始を回避することができる。第1の制御プログラムのグローバル状態のデータ移行によって、第1の制御プログラムの更新は、後の時点で再度実行されてよい。
一実施形態によれば、移行ステップにおける第1のデータ要素の値の第2のデータ要素へのマッピングが所定の期間を超える場合、第1のデータ要素の値は、第2のデータ要素に更に十分に正確にマッピングすることができない。
これは、自動化システムのより長い停止が回避され得るという技術的利点を達成する。移行ステップが所定の時間を超える場合、第2の制御ステップは、自動化システムを制御するための第1のデータ要素を考慮して、第1の制御プログラムのサイクリックのアクセスを継続する。第1のデータ要素に保存されたグローバル状態のデータ移行が所定の時間枠内に正常に実行できない場合、第2の制御プログラムによる第1の制御プログラムの更新と、第1の制御プログラムのグローバル状態の関連付けられたデータ移行とが破棄され、第1の制御プログラムと第1のデータ要素に保存されたグローバル状態とに基づいて、自動化システムの制御が継続される。従って、自動化システムの連続的な動作を保証することができる。
一実施形態によれば、本方法は、第1の移行関数が第2の検証ステップにおける第1の生成ステップにおいて生成され得るかどうかを検証するステップであって、第1の生成ステップにおいて第1の移行関数が生成され得なかった場合、第1のデータ要素を考慮して第1の制御プログラムのサイクリックのアクセスを継続し、第2の制御ステップにおいて第1の制御プログラムに基づいて自動化システムを制御する、ステップを更に含む。
これは、第1のデータ要素に保存されたグローバル状態の不正確な又は不完全なデータ移行の場合、第1の制御プログラム及び第1のデータ要素に保存されたグローバル状態を根拠にして、自動化システムの制御を継続することができるという技術的利点を達成する。検証ステップが、第1のデータ要素を第2のデータ要素にマッピングするための第1の移行関数を生成できなかったことを示した場合、第2の制御ステップにおいて、第1のデータ要素を考慮して第1の制御プログラムに基づいて自動化システムの制御は、継続される。
第1の生成ステップにおける第1の移行関数の生成は特に、第1のデータ要素によって包含される情報内容の実質的な修正を引き起こすことなく、第1のデータ要素と第2のデータ要素が十分な精度で互いにマッピングすることができない異なるデータ型をそれぞれ有するため、第1のデータ要素を十分な精度で第2のデータ要素にマッピングすることができない場合、失敗することがある。
従って、第1のデータ要素と第2のデータ要素がそれぞれのデータ型の性質上、互いに十分な精度でマッピングできない2つのデータ型を有する場合、第2の検証ステップの後にデータ移行が中止され、第1の制御プログラムと第1のデータ要素を根拠にして、第2の制御ステップで自動化システムの制御が継続される。これにより、第1のデータ要素に保存された自動化システムのグローバル状態のデータ移行が失敗したために、自動化システムの動作を一時停止する必要がなくなる。
一実施形態によれば、第1の移行関数は、第1のメモリ領域内の第1のデータ型のデータを読み出し、第1のデータ型の読み出しデータを第2のデータ型に変換し、第2のデータ型に変換したデータを第2のメモリ領域に保存するように設定され、移行ステップは、第1の読み出しステップにおいて、第1の移行関数を用いて第1のメモリ領域内の第1のデータ要素の位置にある第1のデータ要素の値を読み出し、第1の変換ステップにおいて、第1の移行関数を用いて第1の移行関数により第1のデータ要素の値を第2のデータ型に変換し、第1の書き込みステップにおいて、第1の移行関数により、第2のデータ型に変換された第1のデータ要素の値を、第2のメモリ領域内の第2のデータ要素の位置に書き込むことを含む。
これは、移行ステップにおいて第1のデータ要素の第2のデータ要素への信頼性のあるマッピングが保証され得るという技術的利点を達成する。第1の移行関数は、第1のデータ要素の第1のデータ型のデータを第2のデータ要素の第2のデータ型のデータにマップするように実施される。この目的のために、第1の移行関数は、第1のデータ要素が保存されている第1のメモリ領域内の位置で第1のデータ要素の値を読み出し、必要に応じて第1のデータ要素の読み出し値を第2のデータ要素の第2のデータ型に変換し、変換した値を第2のデータ要素が保存されている第2のメモリ領域内の位置に書き込むようにセットアップされている。第1のデータ要素と第2のデータ要素が同じデータ型の場合、第1のデータ要素の読み出し値の変換は省略され、第1の移行関数は、読み出した値を第2のメモリ領域の対応する位置に直接保存する。第1と第2のデータ要素のデータ型が同じ場合、第1のデータ要素の値がブロック単位で第2のメモリ領域の第2のデータ要素の位置にコピーされることがある。これにより、移行処理を高速化することができる。特に、ブロック単位のコピーは、大きなメモリ空間を要件とするフィールド及び/又は複合型にとって有利である。
第1の移行関数は、第1のデータ型のデータが第2のデータ型で十分に表現されていれば、第1のデータ要素の第1のデータ型からの任意のデータを、第2のデータ要素の第2のデータ型からの許可データにマップしてもよいことを特徴とする。従って、第1の移行関数は、第1のデータ要素を第2のデータ要素にマッピングすることに限定されず、第1のデータ型の任意の異なるデータ要素及び第2のデータ型のデータ要素に使用することができる。第1のデータ型の複数のデータ要素を第2のデータ型の複数のデータ要素にマッピングする場合、第1の移行関数は、第1のデータ型のデータ要素を第2のデータ型のデータ要素にマッピングするごとに、再利用してもよい。
第1の移行関数は、必ずしも全射的である必要はない。例えば、変数の型が8ビット整数から16ビット整数に変更された場合、これが第2の型の有効な値であっても、データは、データ移行で生成されないことがある。
しかしながら、第1の移行関数は、常に画像領域の値、すなわちターゲット型の有効値を返す。nビット整数型の場合、nビットの任意の配列が有効な整数であるが、浮動小数点型の場合、浮動小数点数に割り当てられていない無効なビット配列が提供されることがある。同じことは、サブ範囲型、つまり意図的に制限された値の範囲を持つ整数型にも当てはまる場合がある。
ターゲット型がソース型の全ての値を十分な精度で表すことができない場合、移行関数の定義範囲は、制限されてよい。従って、移行関数は、第1のデータ型の全てのデータに適用できない場合もある。代替的に移行関数は、ソース型の全てのデータに適用できるが、実行時に相互にデータをマップすることを拒否する場合がある。
これは、第1の生成ステップにおいて第1の移行関数のみ生成されればよいという利点を有する。これは、複数の第1のデータ要素が複数の第2のデータ要素にマッピングされる場合であっても、個々の第1のデータ要素をそれぞれの第2のデータ要素にマッピングするための各ケースにおいて、そのようなマッピングのためにセットアップされた第1の移行関数だけにアクセスし、再度実行すればよいという点で、処理を実質的に加速することができることを意味する。
特に、プログラムメモリは、移行関数に対応するためにセーブされてもよい。その結果、生成、変換、及びロード時間が短縮されることがある。更に、キャッシュ効果により、典型的なプロセッサ上のより小さなコードサイズは、移行時間に有利な効果をもつことがある。
従って、複数の第1及び第2のデータ要素をマッピングするための複数の第1の移行関数を生成することは、省略することができる。
一実施形態によれば、第1の生成ステップは、第1の識別ステップにおいて、第1のデータ要素のデータ型を第1のデータ型として識別するステップと、第2のデータ型として第2のデータ要素のデータ型を識別するステップとを更に含み、第1の移行関数は、識別された第1のデータ型及び識別された第2のデータ型に基づいて生成される。
これは、第1及び第2のデータ要素の第1及び第2のデータ型に個々に適合された第1の移行関数を生成することができるという技術的利点を達成する。第1の生成ステップにおいて、第1のデータ要素の第1のデータ型と第2のデータ要素の第2のデータ型を識別することにより、第1のデータ型のデータを第2のデータ型のデータにマッピングするように第1の移行関数は、セットアップされてもよい。
更に、第1の識別ステップにおける第1及び第2のデータ要素の第1及び第2のデータ型の識別は、第2の検証ステップにおいて、第1のデータ型のデータを第2のデータ型のデータにマッピングするための第1の移行関数が生成されてもよいかどうかを検証してもよいことを保証してもよい。第1のデータ型及び第2のデータ型の識別の間、第1のデータ型が十分な精度で第2のデータ型にマッピングされ得るかどうか、又は第1のデータ型が十分な精度で第2のデータ型に変換され得るかどうかを分析することができる。
更に、任意の第1のデータ型の任意のデータ要素及び任意の第2のデータ型の任意の第2のデータ要素のために、第1の識別ステップにおいて、第1のデータ型のデータから第2のデータ型のデータへの対応する第1の移動関数が、各第1のデータ要素及び各第2のデータ要素について、対応する第1のデータ型及び第2のデータ型を識別することによって生成され得ることが、達成される。このような方法で生成される第1の移行関数は、第1及び第2のデータ要素に限定されず、一般に第1及び第2のデータ型のデータ又はデータ要素に適用可能である。これは、必要な移行関数の数を制限し、生成された移行関数は、再利用されることができる。
一実施形態によれば、第1の生成ステップは、第1のデータ要素の第1のデータ型及び第2のデータ要素の第2のデータ型がそれぞれ複合型である場合、第1のデータ要素が第3のデータ型の少なくとも第1のデータサブ要素を含み、第2のデータ要素が第4のデータ型の少なくとも第2のデータサブ要素を含む場合、第2の識別ステップにおいて、第1のデータサブ要素のデータ型を第3のデータサブ型として識別し、第2のデータサブ要素のデータ型を第4のデータ型として識別するステップと、第2の生成ステップにおいて、識別された第3のデータ型及び識別された第4のデータ型を根拠として、第1のデータサブ要素を第2のデータサブ要素にマッピングする第2の移行関数を生成するステップとを更に含み、第2の移行関数は、第1のメモリ領域内の第3のデータ型のデータ要素を読み出し、第3のデータ型の読み出しデータを第4のデータ型に変換し、第4のデータ型に変換されたデータを第2のメモリ領域に保存するように設計される。
これは、各々が複合型である第1及び第2のデータ要素のために、第1のデータ要素に保存されたグローバル状態の十分に正確なデータ移動が可能であるという技術的利点を達成する。
実際に、第1の制御プログラム及び第2の制御プログラムのグローバル状態をそれぞれ記述する第1のデータ要素及び第2のデータ要素は、通常、複合型のデータ型であり、複数のオブジェクト又は従属データ要素又はデータサブ要素を備える。それぞれの第1及び第2のデータ要素の個々のデータサブ要素は、個々の変数、複雑なデータオブジェクト、又は対応する第1及び第2の制御プログラムの他のオブジェクトであってもよい。
第1のデータ要素及び第2のデータ要素が複合型の各々であり、第1のデータ要素が少なくとも1つの第1のデータサブ要素を有し、第2のデータ要素が少なくとも1つの第2のデータサブ要素を有する場合、第2の識別ステップは、第1のデータサブ要素のデータ型及び第2のデータサブ要素のデータ型を識別する。
第1のデータサブ要素及び第2のデータサブ要素のデータ型を識別した後、第1のデータサブ要素を第2のデータサブ要素にマッピングするための第2の生成ステップにおいて、第2の移行関数が、生成される。第2の移行関数は、第1のデータサブ要素のデータ型の任意のデータを、第2のデータサブ要素のデータ型の任意のデータにマップするようにセットアップされる。この目的のために、第2の移行関数は、第1のメモリ領域内の第1のデータサブ要素のデータ型の対応するデータ要素を読み出し、読み出したデータを第2のデータサブ要素のデータ型に変換し、変換したデータを第2のメモリ領域に保存するようにセットアップされている。第1のデータ要素と第2のデータサブ要素が同じデータ型の場合において、変換は、省略され、第2の移行関数は、第1のメモリ領域の第1のデータサブ要素のデータ型のデータを読み出し、第2のメモリ領域に保存する。第1及び第2のデータサブ要素のデータ型が同じである場合、第1のデータサブ要素の値は、ブロック単位で第2のメモリ領域内の第2のデータサブ要素の位置にコピーされてもよい。これは、移行処理を高速化し得る。
第1の移行関数と同様に、第2の移行関数も、第1のデータサブ要素から第2のデータサブ要素へのマッピングに限定されない。むしろ、第2の移行関数は、第3のデータ型の任意のデータ要素を第4のデータ型の任意のデータ要素にマップするようにセットアップされている。これは、同一のデータ型の各々を有する、複数の第1のデータサブ要素がそれらの間でも同一のデータ型を有する複数の第2のデータサブ要素にマッピングされるとき、第2の移行関数のみを生成すればよいという利点を有する。複数の第1のデータサブ要素の複数の第2のデータサブ要素へのマッピングは、第1のデータサブ要素及び第2のデータサブ要素に第2の移行関数を繰り返しアクセスし、適用することによって達成することができる。
これは、少数の第1及び第2の移行関数を生成すればよく、その関数によって複数の第1及び第2のデータ要素又は第1及び第2のデータサブ要素が互いにマッピングされ得ることによって、結果としてグローバル状態の移行を加速し得る。特に、移行コードの節約は、例えば、第1及び第2のデータサブ要素の2つのペアのケースにおいて、第2のデータ要素は、同一のデータ型を有し、第2のデータ要素は各々、同一のデータ型を有する場合、節約され得る。この場合において、第2の移行関数のみが、2つのペアのデータ移行のために生成する必要とする。また、移行関数を保持するためのプログラムメモリが節約される場合がある。結果として、生成、変換、ロード時間が短縮され得る。更に、キャッシュ効果により、典型的なプロセッサ上のより小さなコードサイズは、移行時間に有利な効果を有し得る。
一実施形態によれば、第1の生成ステップは、第3の識別ステップにおいて、第1のデータサブ要素と第2のデータサブ要素との間の割当てを可能にする第1のデータサブ要素と第2のデータサブ要素との間の第1の関係を識別するステップ、を更に含む。
これは、正確かつ高速な移行という技術的利点を提供する。識別された関係は、第1のデータサブ要素を第2のデータサブ要素にマッピングするために使用されることがあり、その関係は、どの第1のデータサブ要素がどの第2のデータサブ要素にマッピングされるかを述べる。その上、データサブ要素とメモリ領域内のデータサブ要素の位置情報との間の関係を使用し、第2のデータサブ要素が第2のメモリ領域内のどの相対位置に位置するかを決定することができる。
第3の識別ステップにおいて、第1のデータサブ要素と第2のデータサブ要素との間の第1の関係は、更に決定される。第1の関係は、第1のデータサブ要素と第2のデータサブ要素との間の十分に正確な割り当てを可能にし、少なくとも、第1のデータサブ要素と第2のデータサブ要素とが同じ名前である場合に、存在する。
第1のデータサブ要素と第2のデータサブ要素との間の識別された関係は、それぞれの要素間のマッピングを可能にし、これは、グローバル状態のデータ移行のために、どの第1のデータサブ要素がどの第2のデータサブ要素にマッピングされる必要があるかを決定するために使用されてもよい。データ移行の間、第1のデータ要素におけるグローバル状態の情報内容が第2のデータ要素へのマッピングにおいて変更されずに保持されることを保証するために、第1のデータ要素は、第1のデータ要素と第2のデータ要素との間に関係が存在する第2のデータ要素に排他的にマッピングされる。第1のデータ要素と第2のデータ要素との間の識別された関係は、第1の制御プログラム及び第2の制御プログラムに従って、それぞれの関連する第1のデータ要素及び第2のデータ要素が同一の関数及び意味を有することを保証する。関係を介して互いに関連付けられているデータサブ要素のみが互いにマッピングされる。このようにして、十分に正確なデータ移動を達成することができる。
数学的な意味において、それぞれが複合型である1つのペアのデータ要素のために、一方のデータ要素の構成要素を他方のデータ要素の構成要素に関係づける2桁の関係が提供され得る。
両方のデータ要素は、他のデータ要素の構成要素に関連しない構成要素が含んでよい。1つのデータ要素の1つの構成要素は、各場合において他のデータ要素の1つの構成要素との関係のみを有することができる。従って、形式的に、関係は、1つのデータ要素の構成要素をそれぞれの他のデータ要素の構成要素に割り当てる部分関数であってもよい。
一実施形態によれば、移行ステップは、第1の移行関数によって第2の移行関数にアクセスするステップ、第2の移行関数を実行し、第1の部分移行ステップにおいて第2のデータサブ要素の値を第2のデータサブ要素の位置にマッピングすることを含み、第1の部分移行ステップは、第2の読み出しステップにおいて、第2の移行関数によって第1のメモリ領域における第1のデータサブ要素の位置にある第1のデータサブ要素の値を読み出し、第2の変換ステップにおいて、第2の移行関数を用いて第1のデータサブ要素の値を第4のデータ型に変換し、第2の書き込みステップにおいて、前記第2の移行関数を使用して、第4のデータ型に変換した第1のデータサブ要素の値を第2のメモリ領域における第2のデータサブ要素の位置に書き込むこと、を含む。
これは、第1のデータ要素の第1のデータサブ要素を第2のデータ要素の対応する第2のデータサブ要素に十分に正確にマッピングすることによって、グローバル状態の十分に正確な移行を達成するという技術的利点を提供する。
この目的のために、部分移行ステップにおいて、第1の移行関数は、第1のデータサブ要素の値を第2のデータサブ要素にマッピングするために第2の移行関数にアクセスする。第1の移行関数がアクセスされ、第1のデータ要素を第2のデータ要素にマップされ、第1のデータ要素が少なくとも1つの第1のデータサブ要素を含み、第2のデータ要素が第1のデータサブ要素に関連する少なくとも1つの第2のデータサブ要素を含むことが識別された後、第2の移行関数は、アクセスされ、実行され、第1の移行関数を使用して第1のデータサブ要素を第2のデータサブ要素にマップする。
この目的のために、第1のデータサブ要素のメモリアドレスと第2のデータサブ要素のメモリアドレスは、最初に決定されてよい。これは、第1の移行関数を使用して実行することができる。第2の移行関数がアクセスされるとき、第1のデータサブ要素のメモリアドレスと第2のデータサブ要素のメモリアドレスは、第1の移行関数から第2の移行関数に渡され得る。
第1のデータサブ要素を第2のデータサブ要素にマッピングするために、第2の移行関数は、第1のメモリ領域から第1のデータサブ要素の値を読み取り、必要に応じて、その値を第2のデータサブ要素のデータ型に変換し、読み取り、場合によっては変換された値を第2のメモリ領域内の第2のデータサブ要素の位置に書き込む。第1のデータサブ要素と第2のデータサブ要素がそれぞれ同一のデータ型を有する場合、読み取り値の変換は、省略され、第2の移行関数は、第1のデータサブ要素の読み取り値を第2のメモリ領域内の第2のデータサブ要素の位置に直接、書き込む。
第1のデータ要素が複数の第1のデータサブ要素を含み、第2のデータ要素が複数の第2のデータサブ要素を含み、第1のデータサブ要素がそれぞれ同一の第3のデータ型であり、第2のデータサブ要素がそれぞれ同一の第4のデータ型であり、間に関係がある第1のデータサブ要素と第2のデータサブ要素の複数のペアが存在する場合、第1の移行関数は、第2の移行関数に複数回、アクセスして、第1のデータサブ要素と第2のデータサブ要素のペアのそれぞれを相互にマッピングする。
第1のデータ要素が異なるデータ型の複数の第1のデータサブ要素を含み、第2のデータ要素が異なるデータ型の複数の第2のデータサブ要素を含む場合、間に関係が存在する第1のデータサブ要素及び第2のデータサブ要素のペアごとに、第2の移行関数が、生成される。グローバル状態を移行し、第1のデータサブ要素をそれらに関連する第2のデータサブ要素にマッピングするために、第1の移行関数は、関連する第2の移行関数に次々にアクセスし、実行し、それぞれの場合において、ペアになっている第1のデータサブ要素をそれらに関連する第2のデータサブ要素にマッピングするようにする。
第1の移行関数を介して第2の移行関数に連続的にアクセスして実行することにより、グローバル状態のデータ移行手順は、再び加速されることがある。特に、移行コードの節約は、例えば第1及び第2のデータサブ要素の2つのペアのケースにおいて、2つの第1のデータ要素が同一のデータ型を有し、2つの第2のデータ要素が各々、同一のデータ型を有する場合、達成され得る。この場合において、第2の移行関数は、2つのペア間でデータを移行するために必要とされ、2回、実行される。その上、移行関数を保持するためのプログラムメモリが節約され得る。その結果として、生成、変換、及びロード時間が短縮され得る。更に、キャッシュ効果により、典型的なプロセッサ上のより小さなコードサイズは、移行時間に有利な効果を有し得る。
第1の部分移行ステップにおいて第1の移行関数を使用して第2の移行関数にアクセスすることによって、グローバル状態のデータ移行の複雑さは、結果として低減され得る。
一実施形態によれば、第1の部分移行ステップは、第1のデータサブ要素の第1のデータ型と第2のデータサブ要素の第2のデータ型がそれぞれ複合型である場合、及び第1のデータサブ要素の第3のデータ型と第2のデータサブ要素の第4のデータ型が同じスカラ型である場合、第2の読み出しステップにおいて、第2の移行関数を用いて第1のメモリ領域の第1のデータサブ要素の位置にある第1のデータサブ要素の値を読み出し、第2の書き込みステップにおいて、第2の移行関数を用いて、第2のメモリ領域の第2のデータサブ要素の位置に読み出し値を書き込むことを含む。
これは、グローバル状態のデータ移行の加速が達成され得るという技術的利点を達成する。第1及び第2のデータ要素が、それぞれ複合型であり、少なくとも1つの第1のデータサブ要素及び第2のデータサブ要素を含む場合、及び第1及び第2のデータサブ要素が同一のスカラ型である場合、第1のデータサブ要素を第2のデータサブ要素にマッピングすることは、第2の移行関数を用いて第1のメモリ領域内の第1のデータサブ要素の型を読み出し、第2の移行関数を用いて第2のメモリ領域内の第2のデータサブ要素の位置に読み出し型を書き込むことに限定される。
これは、同一のデータ型、特に同一のスカラ型のために、第1及び第2のデータサブ要素のマッピングが第1のメモリ領域に保存された第1のデータサブ要素の値をブロック単位で第2のメモリ領域のそれぞれの対応する位置にコピーすることによって達成されるという技術的利点を達成することができる。これにより、グローバル状態の移行プロセスの実質的な加速は、達成され得る。第1のメモリ領域内の第1のデータサブ要素の値を第2のメモリ領域内の対応する位置にブロック単位でコピーするために、第2の移行関数、又は複数の第2の移行関数は、第1のデータサブ要素の値を第1のメモリ領域に読み出し、読み出した値を第2のメモリ領域内の対応する位置に直接書き込む。追加の変換ステップは、必要でない。
一実施形態によれば、第1の生成ステップは、第1のデータサブ要素の第3のデータ型及び第2のデータサブ要素の第3のデータ型が複合型であり、第1のデータサブ要素が第5のデータ型の第1の構成要素を少なくとも含み、第2のデータサブ要素が第6のデータ型の第2の構成要素を少なくとも含む場合、第4の識別ステップにおいて、第1の構成要素のデータ型を第5のデータ型として、第2の構成要素のデータ型を第6のデータ型として識別するステップと、第3の生成ステップにおいて、識別された第5のデータ型及び第6のデータ型に基づいて、第1の構成要素を第2の構成要素にマップするための第3の移行関数を生成するステップと、を更に含み、第3の移行関数は、第1のメモリ領域において第5のデータ型のデータを読み出し、読み出したデータを第6のデータ型に変換し、第6のデータ型に変換されたデータを第2のメモリ領域に保存するように構成される。
これは、複雑なグローバル状態のフレキシブルで信頼性のあるデータ移行を可能にするという技術的利点を達成する。第1のデータ要素及び第2のデータ要素がそれぞれ複合型であり、第1のデータ要素が少なくとも第1のデータサブ要素を含み、第2のデータ要素が少なくとも第2のデータ要素を含む場合、及び第1のデータサブ要素及び第2のデータサブ要素もそれぞれ複合型であり、第1のデータサブ要素が少なくとも第1の構成要素を含み、第2のデータサブ要素が少なくとも第2の構成要素を含む場合、第1の構成要素のデータ型及び第2の構成要素のデータ型は、第4の識別ステップにおいて識別される。
第1の構成要素及び第2の構成要素の識別されたデータ型を根拠として、第3の生成ステップにおいて、第1の構成要素を第2の構成要素にマッピングするための第3の移行関数は、生成される。第3の移行関数は、第1のメモリ領域内の第1の構成要素の第5のデータ型から任意のデータを読み出し、読み出したデータを第2の構成要素の第6のデータ型に変換し、変換したデータを第2のメモリ領域に保存するようにセットアップされている。
第1の移行関数及び第2の移行関数と同様にして、第3の移行関数は、第1の構成要素から第2の構成要素へのマッピングに限定されない。むしろ、第3の移行関数は、第1の構成要素の第5のデータ型の任意のデータを第2の構成要素の第6のデータ型の任意のデータに一般的にマッピングするためにもセットアップされる。これは、第1のデータサブ要素が複数の第1の構成要素を含み、第2のデータサブ要素が複数の第2の構成要素を含むケース、及び第1の構成要素の各々が同じデータ型を有し、第2の構成要素の各々が同一のデータ型を有するケースにおいて、第1の構成要素の第5のデータ型のデータを第2の構成要素の第6のデータ型のデータにマッピングするように具現化される、複数の第1の構成要素を複数の第2の構成要素にマッピングするために第3の移行関数のみを生成する必要があるという利点を結果として達成する。これは、グローバル状態の移行プロセスが単純化され、従って、より短い時間で実行され得るという利点を結果として有する。
特に、プログラムメモリは、移行関数に対応するために節約されてもよい。その結果として、生成、変換、及びロード時間が短縮され得る。更に、キャッシュ効果により、典型的なプロセッサ上のより小さなコードサイズは、移行時間に有利な効果を有し得る。
第1の構成要素及び第2の構成要素の識別されたデータ型を根拠として、第3の移行関数を生成することによって、第3の移行関数は、第1の構成要素のデータ型のデータを第2の構成要素のデータ型のデータにマッピングするようにセットアップされることが保証される。
第1と第2の構成要素は、以下のデータ要素又はデータオブジェクト内にあり、複雑なデータ構造を有し得る。
一実施形態に従って、第1の生成ステップは、第5の識別ステップにおいて、第1の構成要素と第2の構成要素との間の十分に正確なマッピングを提供する第1の構成要素と第2の構成要素との間の第2の関係を識別するステップを含む。
これは、正確な移行が可能であるという技術的利点を有する。識別された関係は、関係がどの第1の構成要素がどの第2の構成要素にマッピングされるべきかを示すという点で、第1の構成要素を第2の構成要素にマッピングするために使用されてもよい。更に、メモリ領域内の構成要素と構成要素の位置情報との関係は、第2の構成要素が第2のメモリ領域内のどの相対位置に位置するかを決定するために使用され得る。
第1の構成要素と第2の構成要素との間の関係を識別することによって、第1の構成要素の値が、第1の構成要素に関連する第2のデータサブ要素の第2の構成要素に排他的にマッピングされることを保証することができる。第1の構成要素と第2の構成要素との間の関係は、ここでは両方の構成要素が各ケースにおいて同一に命名される場合に与えられる。第1のデータサブ要素の第1の構成要素と第2のデータサブ要素の第2の構成要素との間に存在する関係は、第1の制御プログラム内の第1のデータサブ要素の第1の構成要素が第1の構成要素に関連する第2の制御プログラム内の第2のデータサブ要素の第2の構成要素と同じ意味及び関数又は役割を有することを意味する。
第1のデータサブ要素が複数の第1の構成要素を含み、第2のデータサブ要素が複数の第2の構成要素を含む場合、第1の構成要素と第2の構成要素との間の関係を識別するステップを使用し、第3の移行関数を適用することによって、第1の構成要素の内のどれが第2の構成要素の内のどれにマッピングされるべきかを決定することができる。代替的に、第1の構成要素及び第2の構成要素は、単一の関係を介して互いに関連付けられてもよい。第2の構成要素の内の1つとの関係が識別され得ない第1の構成要素は、第3の移行関数によって第2のデータサブ要素の第2の構成要素にマッピングされない。同じことは、第1の構成要素の内の1つとの関係が識別できない第2の構成要素にも適用する。第1のデータサブ要素の第1の構成要素の値は、これらの第2の構成要素にマッピングされない。第1及び第2のデータサブ要素のケースと同様に、関係が識別可能な第1の構成要素及び第2の構成要素のみは、互いにマッピングされる。このケースにおいて、第1の構成要素の情報は、廃棄されてもよい。一方で、第2の構成要素は、初期値にセットされてもよい。
代替的に、第1のデータサブ要素の第1の構成要素と第2のデータサブ要素の第2の構成要素との間の関係は、対応する第1のデータサブ要素と対応する第2のデータサブ要素との間の第1の関係によって含まれてもよく、その結果、第1のデータサブ要素と第2のデータサブ要素との間の第1の関係は、第1のデータサブ要素の第1の構成要素を第2のデータサブ要素の第2の構成要素にも関連付ける。
代替的に、第1のデータサブ要素の複数の第1の構成要素は、第2の関係を介して第2のデータサブ要素の複数の第2の構成要素に関連付けられてもよい。
一実施形態によれば、移行ステップは、第2の部分移行ステップにおいて、第2の移行関数を用いて第3の移行関数にアクセスし、第3の移行関数を実行するステップを含み、第2の部分移行ステップは、第3の読み出しステップにおいて、第3の移行関数を使用して第1のメモリ領域内の第1の構成要素の位置にある第1の構成要素の値を読み出し、第3の変換ステップにおいて、第3の移行関数によって第1の構成要素の値を第6のデータ型に変換し、第3の書き込みステップにおいて、第3の移行関数を用いて第6のデータ型に変換した第1の構成要素の値を第2のメモリ領域内の第2の構成要素の位置に書き込むことを含む。
これは、グローバル状態のデータ移行のフレキシブル且つ正確な移行プロセスを提供することができるという技術的利点を達成する。第3の移行関数を生成した後、及び第1のデータサブ要素の第3のデータサブ要素及び第2のデータサブ要素の第4のデータ型を識別し、第1の構成要素及び第2の構成要素を識別した後、第2の部分移行ステップにおいて、第1のデータサブ要素の第1の構成要素を、第1の構成要素に関係する第2のデータサブ要素の第2の構成要素にマップするために、第2の移行関数によって、第3の移行関数がアクセスされ、実行される。
この目的のために、第1の構成要素のメモリアドレスと第2の構成要素のメモリアドレスは、最初に決定され得る。これは、第2の移行関数によって行うことができる。第3の移行関数がアクセスされるとき、第1の構成要素のメモリアドレスと第2の構成要素のメモリアドレスは、第2の移行関数から第3の移行関数に渡され得る。
マッピングのために、第3の移行関数は、第1のメモリ領域の第1の構成要素の値を読み出し、必要に応じて第2の構成要素の第6のデータ型に値を変換し、変換された値を第2のメモリ領域内の第2の構成要素の位置に保存する。第1の構成要素と第2の構成要素が同じデータ型である場合、読み出した値を第2の構成要素のデータ型に変換する必要はなく、第1の構成要素の読み出した値は、第2のメモリ領域の対応する位置に直接保存される。第1及び第2の構成要素のデータ型が同一である場合、第1の構成要素の値は、ブロック単位で第2のメモリ領域内の第2の構成要素の位置にコピーされてよい。これにより、移行処理を高速化することができる。
第1のデータサブ要素が複数の第1の構成要素を含み、第2のデータサブ要素が複数の第2の構成要素を含むケース、及び第1の構成要素を第2の構成要素へ十分に正確にマッピングすることを可能にする複数の第1の構成要素と複数の第2の構成要素との間に関係が存在するケース、及び少なくとも関連する第1の構成要素及び第2の構成要素のいくつかが異なるデータ型を有するケースにおいて、複数の第1の構成要素を複数の第2の構成要素にマッピングするために複数の第3の移行関数は、アクセスされ、実行され、複数の移行関数の各々は、第1の構成要素の内の少なくとも1つの第1の構成要素の第5のデータ型のデータを、第2の構成要素の内の少なくとも1つの第2の構成要素の第6のデータ型のデータにマッピングするように構成される。
複数の第3の移行関数は、第2の移行関数によってそれぞれ次々にアクセスされて実行されるため、各々のケースにおいて、第1の構成要素は、連続して第1の構成要素に関連する第2の構成要素にマッピングされる。このようにして、必要な移行関数を最小限に抑えることにより、第1の制御プログラムのグローバル状態の移行処理は、複雑性を低減され、且つ、時間が短縮される。
一実施形態によれば、第1の生成ステップは、第3のデータ型及び第4のデータ型がフィールド型である場合、第1のデータサブ要素及び第2のデータサブ要素が同一数の次元を含み、第1のインデックス範囲[U0,...,UM]による少なくとも1つの次元の第1のデータサブ要素が第7のデータ型のインデックスされた第1の要素を含み、第2のデータサブ要素が第2のインデックス範囲[X0,...,XN]による少なくとも1つの次元の第8のデータ型のインデックスされた第2の要素を含む場合、並びに第1のインデックス範囲[U0,...,UM]及び第2のインデックス範囲[X0,...,XN]が等しい場合、第1のインデックス範囲[U0,...、UM]によるインデックスされた各第1の要素のデータ型を第7のデータ型として識別し、第2のインデックス範囲[X0,...,XN]によるインデックスされた各第2の要素のデータ型を第8のデータ型として識別するステップを更に含み、第6の識別ステップにおいて、第4の生成ステップにおいて、第1の要素を第2の要素にマッピングするための第4の移行関数を、識別された第7のデータ型及び第8のデータ型に基づいて生成し、第4の移行関数は、第1のメモリ領域内の第7のデータ型のデータを読み出し、読み出したデータを第8のデータ型に変換し、変換されたデータを第2のメモリ領域に保存するように構成される。
これは、プログラム状態のデータ移行で制御プログラムを更新するためのフレキシブル且つ正確な方法を提供するという技術的利点を達成する。第1のデータサブ要素及び第2のデータサブ要素がそれぞれフィールド型であるケースにおいて、フィールド型は、同じ数の次元をそれぞれ含み、第1のデータサブ要素が、第1のインデックス範囲に従った少なくとも1つの次元において、同一の第7のデータ型を有するインデックスされた第1の要素を有するケース、第2のデータサブ要素が、第2のインデックス範囲に従った少なくとも1つの次元において、同一の第8のデータ型のインデックスされた第2の要素を有するケースにおいて、第6の識別ステップにおいて、第1のインデックス範囲の第1の要素の第7のデータ型及び第2のインデックス範囲の第2の要素の第8のデータ型は、識別される。更に、第3の識別ステップにおいて、第1の要素と第2の要素との間の関係が識別され、第1の要素及び第2の要素は、それぞれ同一にインデックスされる場合、第1の要素は、第2の要素に関連付けられる。
第1の要素の第7のデータ型、第2の要素の第8のデータ型、並びに第1及び第2の要素間の関係を識別した後、第4の生成ステップは、識別されたデータ型及び識別された関係に基づいて、第1の要素を第2の要素にマッピングするための第4の移行関数を生成する。
第1の移行関数、第2の移行関数、及び第3の移行関数と同様にして、第4の移行関数は、第1の要素を第2の要素にマッピングすることに限定されない。むしろ、第4の移行関数は、第7のデータ型の任意のデータを第8のデータ型の任意のデータにマップするように配置されている。この目的のために、第4の移行関数は、第1のメモリ領域内の第7のデータ型のデータを読み出し、必要に応じて読み出したデータを第8のデータ型に変換し、読み出したデータと可能な限り変換したデータを第2のメモリ領域に保存するように構成されている。
従って、第1のデータサブ要素を第2のデータサブ要素にマッピングするために、第4の移行関数のみが生成され、これは、第7のデータ型のデータを第8のデータ型のデータにマッピングするために具体化される。複数の第1の要素を複数の第2の要素にマッピングするために、対応する第4の移行関数は、連続して複数回アクセスされ、関連する第1及び第2の要素のペア上で実行される。従って、それぞれが第1のデータサブ要素の第1の要素を第2のデータサブ要素の第2の要素にマッピングすることに限定される複数の第4の移行関数は、回避され得る。これにより、第1の制御プログラムのグローバル状態の移行処理は、簡略化され、時間的に高速化され得る。
代替的に、第1のデータサブ要素は、複数の第1のインデックス範囲に従って複数の次元でインデックスされた第1の要素を有する。同様に、第2のデータサブ要素は、複数の第2のインデックス範囲に従って複数の次元においてインデックスされた第2の要素を有する。第1のインデックス範囲は、同じであってよく、等しい数の第1の要素を有し得る。同様に、第2のインデックス範囲は、同じであってよく、等しい数の第2の要素を有し得る。代替的に、第1のインデックス範囲は、異なってよく、異なる数の第1の要素を有し得る。同様に、第2のインデックス範囲は、異なってよく、異なる数の第2の要素を有し得る。
一実施形態によれば、第1の生成ステップは、第7の識別ステップにおいて、第1の要素と第2の要素との間の十分に正確なマッピングを提供する第1の要素と第2の要素との間の第3の関係を識別するステップを含む。
これは、正確な移行が可能であるという技術的利点を有する。識別された関係は、第1の要素を第2の要素にマッピングするために使用されることがあり、その関係は、どの第1の要素がどの第2の要素にマッピングされるかを述べる。更に、第2のメモリ領域内のどの相対的位置に第2の要素が配置されているかを決定するために、メモリ領域内の要素と要素の位置情報との関係は、使用され得る。
代替的に、第1のデータサブ要素の第1の要素と第2のデータサブ要素の第2の要素との間の第3の関係は、対応する第1のデータサブ要素と対応する第2のデータサブ要素との間の第1の関係によって構成されてよく、その結果、第1のデータサブ要素と第2のデータサブ要素との間の第1の関係によって、第1のデータサブ要素の第1の要素も第2のデータサブ要素の第2の要素に関連付けられる。代替的に、第1のデータサブ要素と第2のデータサブ要素との間の第1の関係は、複数の第1の要素を複数の第2の要素に関連付けることができる。
代替的に、第1のデータサブ要素の複数の第1の構成要素は、第3の関係を介して第2のデータサブ要素の複数の第2の構成要素に関連付けられてもよい。代替的に、第1の要素及び第2の要素のペアは、複数の第3の関係によって関連付けられてもよい。
一実施形態によれば、第1の生成ステップは、第1のインデックス範囲[U0,...,UM]及び第2のインデックス範囲[X0,...,XN]が等しくない場合、インデックス決定ステップにおいて、R=max(X0,U0)及びS=min(XN、UM)を有する第1のデータサブ要素及び第2のデータサブ要素のインデックス範囲における間隔[R、S]を決定し、Rは、2つの下限X0,U0のより大きい方であり、Sは、2つの上限XN、UMのうちの小さい方であり、第6の識別ステップにおいて、間隔[R、S]に従ってインデックスされた各第1の要素のデータ型を第7のデータ型として識別し、間隔[R、S]に従ってインデックスされた各第2の要素のデータ型を第8のデータ型として識別し、第4の生成ステップにおいて、識別された第7のデータ型及び第8のデータ型に基づいて、第1の要素を第2の要素にマッピングするための第4の移行関数を生成するステップを更に含み、第4の移行関数は、第1のメモリ領域内の第7のデータ型のデータを読み出し、読み出したデータを第8のデータ型に変換し、第8のデータ型に変換されたデータを第2のメモリ領域に保存するように設定される。
これは、第1の制御プログラムのグローバル状態のフレキシブル且つ正確な移行プロセスを提供することができるという技術的利点を達成する。第1のデータサブ要素の第1のインデックス範囲と第2のデータサブ要素の第2のインデックス範囲とが同一でない場合、すなわち、第1のインデックス範囲と第2のインデックス範囲とのインデックス化が完全に一致せず、少なくとも1つの値が異なる場合、両方のインデックス範囲の交差範囲は、第6の識別ステップにおいて決定される。決定された交差領域に関して、第1のインデックス範囲及び第2のインデックス範囲におけるインデックス化は、同一である。
第4の移行関数は、第1の要素を第2の要素にマッピングするために、交差領域の第1及び第2の要素に対して生成される。交差領域の第1の要素のみが、交差領域の第2の要素にマッピングされる。交差領域の外側にインデックスを有する第1及び第2の要素は、データ移行の影響を受けないままである。
一実施形態によれば、第1の部分移行ステップは、第2の移行関数を使用して第4の移行関数にアクセスし、第3の部分移行ステップにおいて、第4の移行関数を実行して、第1の要素を第2の要素にマッピングする。第3の移行ステップは、第4の読み出しステップにおいて第4の移行関数を使用して、第1のメモリ領域内の第1の要素の位置にある第1の要素の値を読み出し、第4の変換ステップにおいて、第4の移行関数を使用して第1の要素の値を第8のデータ型に変換し、第4の書き込みステップにおいて、第4の移行関数を使用して、第8のデータ型に変換した第1の要素の値を第2のメモリ領域内の第2の要素の位置に書き込むステップを含む。
これは、第1の制御プログラムのグローバル状態のフレキシブル且つ正確な移行が提供され得るという技術的利点を達成する。第4の生成ステップにおいて、第4の移行関数が生成された、1つのフィールド型のそれぞれが等しい次元数を有する第1のデータサブ要素及び第2のデータサブ要素について、第3の部分移行ステップにおいて、第4の移行関数は、第2の移行関数によってアクセスされ、実行される。
この目的のために、第1の要素のメモリアドレスと第2の要素のメモリアドレスは、最初に決定されてよい。これは、第2の移行関数を使用して行うことができる。第4の移行関数がアクセスされるとき、第1の要素のメモリアドレスと第2の要素のメモリアドレスは、第2の移行関数から第4の移行関数に渡され得る。
この目的のために、第3の部分移行ステップは、第4の移行関数を使用して、第1のメモリ領域内の第1の要素の位置にある第1の要素の値を読み出し、読み出した値を第2のデータサブ要素の第2の要素のデータ型に変換し、読み出した値及び可能な限り変換した値を第2のメモリ領域内の第2の要素の位置に書き込むことを含む。第1の要素のデータ型と第2の要素のデータ型が同一である場合、第4の移行関数による変換は、必要ない。第1及び第2の要素のデータ型が同一である場合、第1の要素の値は、ブロック単位で第2のメモリ領域の第2の要素の位置にコピーされ得る。これは、移行処理を高速化することができる。特に、第1及び第2のデータサブ要素のフィールド型が同じである場合、第1のデータサブ要素は、ブロック単位でコピーされ得る。同一の第7及び第8のデータ型を有する第1及び第2の要素のために、各要素は、ブロックごとにコピーされ得る。場合によって、いくつかの隣接する要素は、(インデックス関係に応じて)1つのブロックにコピーされ得る。
第4の移行関数は、同時に第1の要素の1つの値のみを第2の要素にマッピングする。複数の第1の要素及び第2の要素のケースにおいて、第4の移行関数は、第1の要素及び第2の要素を連続して横断し、それぞれのケースにおいて第1の要素を第2の要素に連続してマッピングする。この目的のために、移行関数は、マッピングされる第1の要素ごとに、第2の移行関数によって順番にアクセスされ、実行されてよい。
複数の第1の要素を複数の第2の要素にマッピングするために、各ケースにおいて、この目的のために1つの移行関数のみが必要であり、これは、第7のデータ型のデータを第8のデータ型のデータにマッピングするために具体化され、データは、値、データ、及びデータ要素を含むことができる。第1の移行関数、第2の移行関数、及び第3の移行関数と同様に、第4の移行関数は、第1のデータサブ要素の第1の要素を第2のデータサブ要素の第2の要素にマッピングすることに限定されない。また、第4の移行関数は、第7のデータ型の任意のデータを第8のデータ型のデータにマップするようにセットアップされている。これは、移行プロセスの複雑さが低減され、従って、時間に関して移行プロセスを高速化する。
一実施形態によれば、第1のデータサブ要素の値が第2のデータサブ要素に十分に正確にマッピングできない場合、及び/又は第1の構成要素の値が第2の構成要素に十分に正確にマッピングできない場合、及び/又は第1の要素の値が第2の要素に十分に正確にマッピングできない場合、第1のデータ要素の値は、第2のデータ要素に十分に正確にマッピングでき、第1の検証ステップは、第1のデータサブ要素の値が第2のデータサブ要素に十分に正確にマッピングされ得るかどうかを検証するステップと、第1の構成要素の値が第2の構成要素に十分に正確にマッピングできるかどうかを検証するステップと、第1の要素の値が第2の要素に十分に正確にマッピングできるかどうかを検証するステップとを更に含む。
これは、移行がエラーなしに実行され得ない場合、移行プロセスが中止され得るという技術的利点を達成する。これは、第1の制御プログラムのグローバル状態が十分な精度で、又はエラーなしに、第2のデータ要素にマッピングされ得ない場合、第1の制御プログラムのグローバル状態の移行、又は第1のデータ要素の第2のデータ要素へのマッピングが破棄され得、自動化システムの制御は、第2の制御ステップにおいて、第1のデータ要素及びそこに保存されたグローバル状態を考慮して、第1の制御プログラムへのサイクリックアクセスを用いて継続され得るという利点を達成する。
例えば第1のデータサブ要素のデータ型と第2のデータサブ要素のデータ型とが互換性がない、又は第1のデータサブ要素の値が第2のデータサブ要素のデータ型で完全に表現できないために、第1のデータサブ要素を第2のデータサブ要素に十分な精度でマッピングできない場合、第1のデータ要素は、第2のデータ要素に十分な精度でマッピングすることができず、従って第1の制御プログラムのグローバル状態を第2の制御プログラムのグローバル状態に十分な精度で統合することができない。このケースにおいて、移行は、中止され、自動化システムは、第1の制御プログラム及び対応するグローバル状態を根拠として、制御され続ける。
例えば、第1のデータサブ要素の第1の構成要素が十分な精度で第2のデータサブ要素の第2の構成要素にマッピング可能でない場合、又は第1のデータサブ要素の第1の要素が十分な精度で第2のデータサブ要素の第2の要素にマッピング可能でない場合、第1のデータサブ要素は、十分な精度で第2のデータサブ要素にマッピング可能でないことがある。どちらのケースにおいても、第1のデータ要素から第2のデータ要素への移行は、中止され得る。
次に、第1の構成要素及び第2の構成要素が互換性のないデータ型を有する場合、又は第1の構成要素の値が第2の構成要素のデータ型で完全に表現可能でない場合、第1の構成要素は、十分な精度で第2の構成要素にマッピング可能でないことがある。次に、第1のデータ要素のデータ型が第2のデータ要素のデータ型と互換性がない場合、第1のデータサブ要素の第1の要素は、第2のデータサブ要素の第2の要素に十分な精度でマッピングできないことがある。更に、第1の要素の値が第2の要素のデータ型で完全に表現できない場合、第1の要素は、第2の要素に十分に正確にマッピングできない。
一実施形態によれば、関係は、第1のデータサブ要素及び第2のデータサブ要素について、第1の構成要素及び第2の構成要素について、並びに第1のデータサブ要素及び第2のデータサブ要素が同じ名前であるときと、第1の構成要素及び第2の構成要素が同じ名前であるときと、第1の要素及び第2の要素が同じインデックスが付けられているときと、で識別可能である。
これは、関係が自動的に生成されるという技術的利点を達成する。同じ命名で、オブジェクトは、自動的に互いに関連付けられ、第1のデータサブ要素と第2のデータサブ要素との間、第1の構成要素と第2の構成要素との間、及び第1の要素と第2の要素との間の十分に正確な関連付けが識別され得る。これは、正確で信頼性の高い移行プロセスを保証する。
第1のデータサブ要素と第2のデータサブ要素が同じ名前である場合、第1のデータサブ要素と第2のデータサブ要素は、互いに関連している。第1の構成要素と第2の構成要素が同じ名前である場合、第1のデータサブ要素の第1の構成要素と第2のデータサブ要素の第2の構成要素は、互いに関連している。第1の構成要素と第2の構成要素が同じインデックスを付けられている場合、第1のデータサブ要素の第1の構成要素と第2のデータサブ要素の第2の構成要素は、互いに関連している。
代替的に、第1のデータサブ要素と第2のデータサブ要素は、そのような関係が第2の制御プログラム又は制御プログラムに関連するライブラリで命名されている場合、互いに関連していてもよい。例えば、同一の名前が付けられていない第1のデータサブ要素及び第2のデータサブ要素について、第1のデータサブ要素と第2のデータサブ要素とが互いに関連していることは、制御プログラム内で定義されてもよい。同じことは、第1の構成要素及び第2の構成要素、並びに第1の要素及び第2の要素にも当てはまり、第1の構成要素及び第2の構成要素に同じ名前が付けられていない場合、又は第1の要素及び第2の要素に同じインデックスが付けられていない場合、関係は、第2の制御プログラムにおいて、定義され得る。
その上、第1のデータサブ要素を第2のデータサブ要素に、又は第1の構成要素を第2の構成要素に名前変更するために、又は第1の要素のインデックス範囲を第2の要素にマッチングするために、リファクタリングツール又はインデックスマッチングツールが使用された場合、第1のデータサブ要素と第2のデータサブ要素との間、第1の構成要素と第2の構成要素との間、及び第1の要素と第2の要素との間に、関係は、存在し得る。このようなマッチングツールを使用することによって、対応する第1のデータサブ要素と第2のデータサブ要素との間、第1の構成要素と第2の構成要素との間、及び第1の要素と第2の要素との間の関係は、識別され得る。
移行プロセスにおいて、第1のデータサブ要素の値のみが、第1のデータサブ要素に関連する第2のデータサブ要素にマッピングされる、又は第1の構成要素の値は、第1の構成要素に関連する第2の構成要素に排他的にマッピングされ、第1の要素の値は、第1の要素に関連する第2の要素に排他的にマッピングされるため、追加的に識別可能な関係は、可能な限り包括的である第1のデータ要素の値が第2のデータ要素にマッピングされることを保証することができる。従って、可能な限り包括的な第1の制御プログラムのグローバル状態の値は、第2の制御プログラムのグローバル状態に転送され得ることが達成され得る。
一実施形態によれば、コントローラは、制御プログラムを変換又は解釈するための変換モジュールを更に含み、第1の生成ステップは、変換モジュールによって実行される。
これは、移行関数を生成するための便利な解決策を提供するという技術的利点を有する。変換モジュールは、例えば第2の制御プログラムの、生成されたソースコードをコントローラによって自動化システムを制御するために実行可能な実行可能コードに変換するために使用される。同時に、変換モジュールは、第1の移行関数、第2の移行関数、第3の移行関数、及び第4の移行関数をそれぞれ生成するための第1の生成ステップ、第2の生成ステップ、第3の生成ステップ、及び第4の生成ステップを実行するように具現化される。更に、変換モジュールは、第1のデータ要素の第1のデータ型と第2のデータ要素の第2のデータ型とを識別する第1の識別ステップと、第1のデータサブ要素の第3のデータ型と第2のデータサブ要素の第4のデータ型とを識別する第2の識別ステップと、第1のデータサブ要素と第2のデータサブ要素との第1の関係を識別する第3の識別ステップと、第1の構成要素の第5のデータ型と第2の構成要素の第6のデータ型とを識別する第4の識別ステップと、第1の構成要素と第2の構成要素との関係を識別する第5の識別ステップと、第1の要素の第7のデータ型と第2の要素の第8のデータ型とを識別する第6の識別ステップと、第1の要素と第2の要素との関係を識別する第7の識別ステップとを実行するように具体化される。
更に、変換モジュールは、第1の生成ステップにおいて第1の移行関数が生成され得るかどうかを検証するため、第2の生成ステップにおいて第2の移行関数が生成され得るかどうかを検証するため、第3の生成ステップにおいて第3の移行関数が生成され得るかどうかを検証するため、及び第4の生成ステップにおいて第4の移行関数が生成され得るかどうかを検証するための第2の検証ステップを実行するように具現化される。
全ての移行関数を生成するように設定され、データ要素及びデータサブ要素の全てのデータ型及び、データ要素とデータサブ要素の全ての関係、並びに、そのデータサブ要素の構成要素及び要素を識別するように構成されている変換モジュールによって、移行関数を生成する簡単な可能性は、提示される。更新された第2の制御プログラムの修正又は新しく作成されたソースコードのコンパイル処理の間、変換モジュールは、第1のデータ要素のオブジェクトおよび第1のデータサブ要素のそれぞれ並びに第2のデータ要素のオブジェクトおよび第2のデータサブ要素のそれぞれのデータ型及び関係を識別し、同時に、対応する第1から第4の移行関数を生成するように構成される。以下において、第1のデータ要素のオブジェクトは、第1のデータサブ要素によって与えられてもよく、第2のデータ要素のオブジェクトは、第2のデータサブ要素によって与えられてもよい。コンパイル処理の間にこれらのステップが全て実行される場合、コンパイル処理の完了後に、第1の制御プログラムのグローバル状態の移行は、実行され得る。これは、コンパイル処理の複雑さを更に低減する。シナジー効果は、変換、関係決定、型決定、及び移行関数の生成のための個々の労力の合計を低減し得る。
一実施形態によれば、本方法は、初期化ステップにおいて第2のデータ要素を初期化するステップを更に含み、初期化するステップは、第2のデータ要素を所定の値にセットすることを含み、第2のデータ要素を初期化するステップは、第2のデータサブ要素及び/又は第2の構成要素及び/又は第2の要素を初期化することを含む。
これは、自動化システムの制御が第2のデータ要素を考慮に入れて、第2の制御プログラムに基づいて実行され得るという技術的利点を達成する。第2のデータ要素の全ての値が初期値にセットされている第2のデータ要素を初期化することによって、第2の制御プログラムは、自動化システムの制御のために第2のデータ要素の値を直接考慮することができる。これは、初期状態から第2の制御プログラムを開始することに相当する。ここでの第2のデータ要素の初期化は、第2のデータ要素の全ての第2のデータサブ要素の初期化を含む。ここでの全ての第2のデータサブ要素の初期化は、全ての第2のデータサブ要素の全ての第2の構成要素又は第2の構成要素を初期化することを含む。
移行ステップにおいて、及び第1から第3の部分移行ステップにおいて、第1のデータサブ要素又は第1の構成要素の値、及び第1のデータサブ要素の第1の値は、各第1のデータサブ要素又は第1の構成要素、及び第1の要素との関係が存在する第2のデータサブ要素の、第2のデータサブ要素又は第2の構成要素又は第2の要素に排他的にマッピングされる。対応する第1のデータサブ要素、第1の構成要素、又は第1の要素との関係が識別され得ない第2のデータサブ要素、第2の構成要素、又は第2の要素は、データ移行において無視される。これらの第2のデータサブ要素、第2の構成要素又は第2の要素は、初期化において、所定の初期値にセットされる。これは、第2のデータ要素の全てのオブジェクトに、第1のデータ要素の対応するオブジェクトの値に対応する、又は初期値である有効な数値を割り当てることができる。このようにして、第2の制御プログラムは、第2のデータ要素を根拠として、実行されてよい。
これは、第2のデータ要素の全てのオブジェクトを1つのステップで初期値にセットすることにより、データ移行を簡素化する技術的な利点を提供する。
代替的に、初期化ステップにおいて、選択された第2のデータサブ要素及び/又は第2の構成要素及び/又は第2の要素のみが初期化されてよい。
代替的に、移行ステップの前に初期化ステップを行ってもよい。特に、初期化ステップは、第1の制御プログラムがまだ実行されている間に既に実行されていてもよい。これは、移行処理を短縮することができ、第1の制御プログラム及び第2の制御プログラムの実行が中断され、自動化システムが動作しない時間を短縮することができる。
このケースにおいて、第1のデータ要素から第2のデータ要素へのデータ移行を開始する前に、全ての第2のデータサブ要素、並びに全ての第2の構成要素及び/又は全ての第2の要素は、初期値にセットされ得る。本発明による方法に従ってデータ移行を実行することができる第2のデータサブ要素及び/又は第2の構成要素及び/又は第2の要素のケースにおいて、それぞれの初期値は、移行ステップにおいて、第1のデータ要素の対応する第1のデータサブ要素、第1の構成要素及び/又は第1の要素の値で、続いて上書きされる。
特に、初期化は、既に存在する初期化関数が通常の開始の場合に開始状態を構築するために使用され得るため、選択的初期化のためにそれ以上の計算又はメモリリソースが消費されないという利点を達成する。更に、第1の制御プログラムがまだ実行されている間、初期化関数が既に実行されていてもよいという利点が得られる。従って、初期化は、第1及び第2の制御プログラムの周期的な実行が中断される時間的に重要な期間内に、入らない。
一実施形態によれば、第1のデータ要素は、第3のデータ型の複数の第1のデータサブ要素を含み、第2のデータ要素は、第4のデータ型の複数の第2のデータサブ要素を含み、第1のデータサブ要素の各々のために、第3のデータ型は、複合型、フィールド型、スカラ型又はポインタ型であり、第2のデータサブ要素の各々のために、第4のデータ型は、複合型、フィールド型、スカラ型又はポインタ型である。
これは、制御プログラムをプログラム状態の同時データ移行で更新するためのフレキシブルで広く適用可能な方法を提供する技術的利点を提供する。第1のデータ要素及び第2のデータ要素は、複数の第1のデータサブ要素及び第2のデータサブ要素をそれぞれ含むことができる。第1のデータサブ要素の各々及び第2のデータサブ要素の各々は、複合型、フィールド型、スカラ型、又はポインタ型の各々であり得る。第1のデータサブ要素又は第2のデータサブ要素が複合型である場合、第1のデータサブ要素又は第2のデータサブ要素は、複数の第1の構成要素又は第2の構成要素をそれぞれ含むことができる。次に第1の構成要素又は第2の構成要素の各々は、複合型、フィールド型、スカラ型、又はポインタ型であってもよい。第1のデータサブ要素又は第2のデータサブ要素がフィールド型の場合、第1のデータサブ要素の第1の要素又は第2のデータサブ要素の第2の要素は、スカラ型又はポインタ型で、それぞれあってよい。これは、第1の制御プログラムのグローバル状態から第2の制御プログラムのグローバル状態への移行処理を、異なるデータ型を用いる様々な異なるデータ構造に対して実行することができる。従って、プログラム状態のデータ移行で制御プログラムを更新するための本発明による方法の高いフレキシビリティ及び適用性は、達成される。
本発明は、添付の図面に関連してより詳細に説明される。
一実施形態による、自動化システムの模式図である。 一実施形態による、自動化システムの制御プログラムの更新処理の模式図である。 一実施形態による、データ移行で自動化システムの制御プログラムを更新するための方法のフローチャートである。 更なる実施形態による、データ移行で自動化システムの制御プログラムを更新するための方法のフローチャートである。 更なる実施形態による、データ移行で自動化システムの制御プログラムを更新するための方法のフローチャートである。 一実施形態による、自動化システムの更新されたバージョンの制御プログラムの生成プロセスの模式図である。 一実施形態による、自動化システムの制御プログラムのデータ要素の移行プロセスの模式図である。 更なる実施形態による、自動化システムの制御プログラムのデータ要素の移行プロセスの模式図である。
図1は、一実施形態による、自動化システム100の模式図を示す。
図1における自動化システム100は、コントローラ101と、マスター加入者103と、4つのスレーブ加入者105とを含み、各々は、バスシステム107を介して互いに接続され、コントローラ101に接続されている。代替的に、コントローラ101自体が、マスター加入者を形成してもよい。コントローラ101のメモリSPにおいて、第1の制御プログラムAは、第1のメモリ領域SPAに保存され、第2の制御プログラムBは、第2のメモリ領域SPBに保存される。第1の制御プログラムAは、マスター加入者103及びスレーブ加入者105にサイクリックにアドレス指定するために使用される。第2の制御プログラムBは、更新されたバージョンの第1の制御プログラムAであってよく、その上、自動化システム100の加入者にサイクリックにアドレス指定するために使用される。更新されたバージョンは、例えば、それぞれ、第1の制御プログラムAの更新、又は第1の制御プログラムAの修正されたバージョンであってもよい。代替的に、更新されたバージョンは、完全に新たなプログラムされた制御プログラムであってよく、第1の制御プログラムの元のバージョンに対する更新されたバージョンの参照は、有利に提供される。従って、第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は、実行可能コード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の読み出し/書き込みステップ204において、第1の実行可能コードPAは、第1のデータ要素GAから情報を読み出す、又は第1のデータ要素GAに情報を書き込むことができる。第2の制御プログラムBの第2の実行可能コードPBは、制御プログラムBを実行するためのものであり、自動化システム100のコントローラ101によって実行されてもよい。第2のデータ要素GBは、第2の制御プログラムBのプログラム状態を記述し、第2の制御プログラムBを実行するために必要な情報を含む。
データ移行の時点において、第2の制御プログラムBは、実行されず、従って、第2のデータ要素GBは、自動化システム100の状態に関する情報を構成しない。データ移行の時点において、第2のデータ要素GBは、第2の制御プログラムBを実行すること及び自動化システム100を制御することに必要な全てのオブジェクトを含む。しかしながら、個々のオブジェクトは、初期値でのみ開始される。データ要素GBは、開始状態に対応する初期値を含む。従って、2つのデータ要素の全てのオブジェクトには、数値が提供され、従って初期化される。
第1のデータ要素GAに保存された第1の制御プログラムAのグローバル状態の第2のデータ要素GBへの正常なデータ移行の後、第2のデータ要素は、第2の制御プログラムBを実行するために必要な全ての情報を含む。更に、第1の制御プログラムAのグローバル状態の正常なデータ移行の後、第2のデータ要素GBは、データ移行が実行される前に、特に最後に実行された制御サイクルの直後の時点における、自動化システム100の状態に関する情報を含む。第2の読出し/書き込みステップ206において、第2の制御プログラムBの第2の実行可能コードPBは、第2のデータ要素GBにデータを書き込む、又は第2のデータ要素GBからデータを読み出すことができる。必要に応じて、データ移行が実行された後、第1のデータ要素GAの情報は、第2のデータ要素GBに完全にマッピングされないことがある。第1のデータ要素GAの対応する第1のデータサブ要素の値を割り当てることができないオブジェクト又は第2のデータサブ要素は、その初期値を保持する。
制御プログラムのプログラム状態のデータ移行で自動化システムの制御プログラムを更新する本発明の方法による第1の制御プログラムAのプログラム状態の同時データ移行により第1の制御プログラムAを更新するために、第1の置換ステップ202において、第1の制御プログラムAの第1の実行可能コードPAは、第2の制御プログラムBの第2の実行可能コードPBに置き換えられる。第1の実行可能コードPAと第2の実行可能コードPBとの間の図2に示す矢印は、第1の実行可能コードPAと第2の実行可能コードPBとが置き換えられ、第2の実行可能コードPBが第1の実行可能コードPAに少なくとも部分的に基づいて、又はそれから派生され、両方のコードが同じ自動化システム100を制御するために役立つという共通性を少なくとも有することを意味する。これは、第2の実行可能コードPBが第1の実行可能コードPAから完全に独立して生成されたことを除外するものではない。更に、第1の制御プログラムAのプログラム状態を記述する第1のデータ要素GAの値、特に第1の制御プログラムA及び自動化システム100のグローバル状態は、移行ステップ207において、第2のデータ要素GBにマッピングされる。
移行ステップ207において、第1のデータ要素GAの値を第2のデータ要素GBにマッピングすることにより、第1の制御プログラムAのプログラム状態又は第1の制御プログラムAのグローバル状態、及び第1のデータ要素GAの値によって記述される自動化システム100のグローバル状態は、第2のデータ要素GBに保存される。移行ステップ207における正常なデータ移行の後、従って、第2のデータ要素GBは、第1の制御プログラムAのプログラム状態、すなわち第1の制御プログラムA及び自動化システム100のグローバル状態を記述する。従って、第2のデータ要素GBは、GAの情報の少なくとも部分を含み、情報は、第2の実行可能コードPBを実行するために必要な形式で表現される。
第1の置換ステップ202における第2の実行可能コードPBによる第1の実行可能コードPAの正常な置換、及び移行ステップ207における第1の制御プログラムA又は自動化システム100のグローバル状態の第2の制御プログラムBの第2のデータ要素GBへの正常なデータ移行の後、第2の制御プログラムBは、自動化システム100のコントローラ101によって実行可能であり、最後に実行された制御サイクルの後の時点で第1の制御プログラムA又は自動化システム100のグローバル状態にアクセスすることができ、その結果、自動化システム100は、最後に実行された制御サイクルの時点の状態において第2の制御プログラムBによって制御されてもよい。従って、第1の制御プログラムAのグローバル状態は、第1の制御プログラムAの最後の実行後にグローバル状態として解釈されてもよく、一方で、データ移行によって生成され、第2のデータ要素GBによって表現された状態は、第2の制御プログラムBの第1の実行前に別のグローバル状態として解釈されてもよく、両方の状態は、第1の実行可能コードPA及び第2の実行可能コードPBによる解釈とほぼ同義である。
図3は、一実施形態による、データ移行で自動化システム100の制御プログラムAを更新するための方法200のフローチャートを示す。
図3に示す実施形態によれば、制御プログラムのプログラム状態のデータ移行で自動化システム100の制御プログラムを更新するための方法200は、図1及び図2による自動化システム100に関する。ここで、自動化システム100のコントローラ101は、第1の制御プログラムA及び第2の制御プログラムBを含み、第1の制御プログラムAは、自動化システムを制御するためにサイクリックに実行され、第2の制御プログラムBは、第1の制御プログラムAの更新であり、第1の制御プログラムAは、第1の制御プログラムAのプログラム状態を記述しコントローラ101の第1のメモリ領域SPAに保存される第1のデータ型の第1のデータ要素GAを含み、第2の制御プログラムBは、第2の制御プログラムBのプログラム状態を記述し、第2のメモリ領域SPBに保存される第2のデータ型の第2のデータ要素GBを含む。
図3に示す実施形態によれば、方法200は、以下の、第1の生成ステップ201において、第1のデータ要素GAを第2のデータ要素GBにマッピングするための第1の移行関数MIG1を生成するステップ、中断ステップ203において、第1の制御プログラムAのサイクリックな実行を中断するステップ、第1の決定ステップ205において、第1のデータ要素GAの値を決定するステップであって、第1のデータ要素GAの決定された値は、中断時の制御プログラムAのプログラム状態を記述する、ステップ、及び移行ステップ207において、第1の移行関数MIG1を実行することによって、第1のデータ要素GAの値を第2のデータ要素GBにマッピングするステップ、方法ステップを含む。
自動化システム100は、第1の制御プログラムAをサイクリックに実行することによってコントローラ101を介してアクセスされる。第1のデータ要素GAは、第1の制御プログラムAを実行するために必要な第1の制御プログラムAに関する情報を保存する。この情報は、自動化システム100を制御するために第1の制御プログラムによってアクセスされなければならない変数、関数、又はライブラリ、又はその他の確立されたオブジェクトを含むことができる。
第1の制御プログラムAをサイクリックに実行する間、第1の制御プログラムAは、第1のデータ要素GAにアクセスし、第1のデータ要素GAからデータを読み出す、又は第1のデータ要素GAにデータを書き込むことができる。従って、第1のデータ要素GA内の情報は、第1の制御プログラムAのプログラム状態を記述し、これは、第1の制御プログラムAが取る状態を記述する。第1のデータ要素GAは更に、自動化システム100に関する情報を保存し、これは、自動化システム100が取る状態を定義するために使用される。第1のデータ要素GAに保存された情報は、以下で、第1の制御プログラムA及び自動化システム100のグローバル状態として解釈される。グローバル状態は、第1の制御プログラムAのプログラム状態を記述し、同時に自動化システム100の状態を記述する。
第2の制御プログラムBは、更新されたバージョンの第1の制御プログラムAを表現し、第1の制御プログラムAを置き換える役割を果たす。第2の制御プログラムBのプログラム状態を示す情報は、第2のデータ要素GBに保存される。方法200の実行の間、第2の制御プログラムBは、実行されず、自動化システム100の状態に関する情報は第2のデータ要素GBに位置しない。代替的に、第2のデータ要素GBは、初期値で初期化されてもよい。方法200の実行の間、従って、移行ステップ207によるデータ移行の完了の前に、一時的に、第2の制御プログラムBを実行するために必要な全ての変数、関数、データベース、パラメータ、又はその他のオブジェクトは、第2のデータ要素GBに保存される。しかしながら、第2のデータ要素GBに保存されたオブジェクトは、自動化システム100の現在の状態を記述するのに適した値を有していない。
制御プログラムのプログラム状態のデータ移行で自動化システムの制御プログラムを更新する方法200のオブジェクトは、第1の制御プログラムAを第2の制御プログラムBに置き換え、自動化システム100の状態に関する第1のデータ要素GAに保存された情報を第2のデータ要素GBに転送することであり、その結果、第2の制御プログラムBによる第1の制御プログラムAの正常な置換の後、第2の制御プログラムBが第2のデータ要素GBの情報を読み出すことにより、第2の制御プログラムBは、自動化システム100の状態にアクセスすることができ、その結果、自動化システム100の制御は、第1の制御プログラムAを第2の制御プログラムBの置換後にシームレスに継続され得る。
この目的のために、第1の制御プログラムAのプログラム状態に関する情報又は自動化システム100の状態に関する情報を含む第1のデータ要素GAの値の第2のデータ要素GBへの転送は、必要である。
この目的のために、第1の生成ステップ201において、第1のデータ要素GAを第2のデータ要素GBにマッピングするための第1の移行関数MIG1は、生成される。第1の移行関数MIG1は、第1のデータ要素GAに保存された情報を第2のデータ要素GBに転送するために使用される。第1のデータ要素GAに保存された情報は、以下で第1のデータ要素GAの値として解釈され、第2のデータ要素GBに保存された情報は、以下で第2のデータ要素GBの値として解釈される。
第1の生成ステップ201において、第1の移行関数MIG1を生成した後、中断ステップ203において、第1の制御プログラムAのサイクリックの実行を中断する。第1の制御プログラムAのサイクリックの実行を中断することにより、自動化システム100の動作は、中断される。第1のデータ要素GAにおいて、最後に実行された制御サイクル後の自動化システム100の状態は、記載される。中断ステップ203において、第1の制御プログラムAのサイクリックの実行を中断することによって、第1のデータ要素GAの値がそれ以上変更されないことが保証され、その結果、第1のデータ要素GAの値の第2のデータ要素GBへの一貫した転送は、可能になる。中断ステップ203において第1の制御プログラムAのサイクリックのアクセスを中断した後、第1のデータ要素GAの値は、最後に実行された制御サイクルの終了時における第1の制御プログラムAのプログラム状態に対応する。同様に、第1のデータ要素GAの値は、最後に実行された制御サイクルの終了時における自動化システム100の状態を記述する。
中断ステップ203における第1の制御プログラムAのサイクリックの実行の中断は、以前に実行された制御サイクルの完了後に行われることが好ましく、従って、制御プログラムAの完全な実行後に行われることが好ましい。代替的に、しかしながら中断ステップ203は、実行された制御サイクル内の任意の時点で行われることもできる。
中断ステップ203において第1の制御プログラムAのサイクリックの実行を中断した後、第1の決定ステップ205において第1のデータ要素GAの値は、決定される。既に述べたように、第1のデータ要素GAの値は、最後に実行された制御サイクルの時点又は第1の制御プログラムAの実行の中断の時点での、第1の制御プログラムAのプログラム状態又は自動化システム100の状態を記述する。中断ステップ203における第1の制御プログラムAのサイクリックの実行の中断の後、第1の制御プログラムAの値がもはや実行されず、従って第1のデータ要素GAから値を読み取ることも、第1のデータ要素GAに値を書き込むこともできないので、第1のデータ要素GAの値は、もはや変更されない。
第1の決定ステップ205において第1のデータ要素GAの値を決定した後、第1の移行関数MIG1は、移行ステップ207で実行され、第1のデータ要素GAの値を第2のデータ要素GBに転送することによって、第1のデータ要素GAの値は、第2のデータ要素GBにマッピングされる。このプロセスにおいて、第2のデータ要素GBに含まれるオブジェクトの値は、第1のデータ要素GAの対応するオブジェクトの値によって上書きされる。第1のデータ要素GAの値を第2のデータ要素GBにマッピングすることにより、最後に実行された制御サイクルの時点での第1の制御プログラムA又は自動化システム100のグローバル状態は、第2のデータ要素GBに転送される。第2のデータ要素GBに保存された値を読み出すことにより第2の制御プログラムBを実行する場合、最後に実行された制御サイクルの時点での自動化システム100のグローバル状態にアクセスすることができるため、その結果、第2の制御プログラムBを実行することによる自動化システム100の制御は、最後に実行された制御サイクルからシームレスに追従し得る。
図4は、別の実施形態による、データ移行を介して自動化システム100の制御プログラムAを更新するための方法200のフローチャートを示す。
図4に示される処理200の実施形態は、図3に示される処理200の実施形態に基づいて構築され、図3に示される実施形態の処理ステップの全てを含む。
図3に示す実施形態とは対照的に、図4の方法200の実施形態において、第1の生成ステップ201の完了後、第2の検証ステップ215は、第1の生成ステップ201において第1の移行関数MIG1を生成することができたかどうかを検証する。第1の生成ステップ201における第1の移行関数MIG1の生成は、例えば、第1のデータ要素GA及び第2のデータ要素GBが第1のデータ要素GAの値を第2のデータ要素GBのデータ型に充分な精度で変換することができない互換性のないデータ型を有する場合、失敗することがある。
第2の検証ステップ215が、移行関数MIG1が生成できなかったことを検出した場合、第2の制御ステップ213において、第1のデータ要素GAと、第1の制御プログラムAに基づく自動化システム100の制御とを考慮に入れた第1の制御プログラムAへのサイクリックのアクセスは、継続される。第1の生成ステップ201において第1の移行関数MIG1が生成されない場合、移行処理は、中止され、第1の制御プログラムAは、第2の制御プログラムBに置き換えられない。その代り、第1のデータ要素GAに保存されたグローバル状態を考慮して、第1の制御プログラムAに基づいて自動化システム100の制御は、継続する。
一方で、第2の検証ステップ215において、第1の生成ステップ201において第1の移行関数MIG1が生成され得ることが検出された場合、方法200は、中断ステップ203において、第1の制御プログラムAのサイクリックの実行の中断を継続する。
また、図3に示される実施形態から逸脱して、図4による実施形態において、移行ステップ207の実行の後、移行ステップ207において第1の移行関数を実行することによって、第1のデータ要素GAの値が第2のデータ要素GBに十分に正確にマッピングされ得るかどうかについて、第1の検証ステップ209においてチェックは、実行される。第1のデータ要素GAの値が第2のデータ要素GBの第2のデータ型で表現され得る場合、第1のデータ要素GAの値は、この文脈において、第2のデータ要素GBに十分に正確にマッピングされ得る。例えば、第1のデータ要素GAの値の数値が第2のデータ要素GAの第2のデータ型で表すことができる最大限の数値を超える場合、第1のデータ要素GAの値は、第2のデータ要素GBの第2のデータ型で十分に正確に表すことができない。
第1の検証ステップ209が、移行ステップ207において第1のデータ要素GAの値を第2のデータ要素GBに十分に正確にマッピングすることができなかったと決定した場合、第2の制御ステップ213において、第1の制御プログラムAを根拠とした第1の制御プログラムAのサイクリックのアクセス及び自動化システム100の制御は、第1のデータ要素GAに保存されたグローバル状態を考慮して、継続される。このときに、グローバル状態の移行は終了し、第1の制御プログラムAに基づく制御は、継続される。第1の制御プログラムA及び第1のデータ要素GAを第1のメモリ領域SPAに、第2の制御プログラムB及び第2のデータ要素GBを第2のメモリ領域SPBに保存することにより、第1のデータ要素GAは、データ移行の影響を受けないままである。このようなデータ移行が上述した理由等により失敗した場合、最後に実行された制御サイクルの状態において、第1の制御プログラムA及び第1のデータ要素GAに基づいて、自動化システム100の制御を問題なく継続することができる。一方で、移行は、破棄される。
一方で、第1の検証ステップ209において、移行ステップ207において第1の移行関数を実行することにより、第1のデータ要素GAの値を第2データ要素GBに十分に正確にマッピングできると決定された場合、第1制御プログラムAは、置換ステップ202において第2制御プログラムBに置換される。
置換ステップ202において第1の制御プログラムAを第2の制御プログラムBに置換した後、第1の制御ステップ211において、自動化システム100は、第2のデータ要素GBを考慮して第2の制御プログラムBにサイクリックにアクセスすることによって制御される。移行ステップ207において正常な移行の後、第2のデータ要素GBの値は、第1の制御プログラムAに基づいて実行された最後の制御サイクルの時点における第1の制御プログラムA及び自動化システム100のグローバル状態を記述する。移行ステップ207において第1のデータ要素GAの値を第2のデータ要素GBに正常に移行した後、自動化システム100は、第1の制御プログラムAに基づいて最後に実行された制御サイクルの状態における第2の制御プログラムBに基づいて制御される。これは、更新された制御プログラムを用いた自動化システム100のシームレスな制御を可能にする。
置換ステップ202において、第1の制御プログラムAを第2の制御プログラムBに置き換えることは、第1の制御プログラムAに代えて、第2の制御プログラムBに基づいて自動化システム100を実行し、制御することに関するものである。第1の制御プログラムAを第2の制御プログラムBに置き換えることは、第1の制御プログラムAが第1のメモリ領域SPAに保存され続けることを妨げない。
データ移行後の第1の制御プログラムAを根拠として実行された最後の制御サイクルの時点における第1の制御プログラムA及び自動化システム100のグローバル状態を第2のメモリ領域SPB内の第2のデータ要素GBにマッピングすることにより、グローバル状態は、使用不可能なメモリギャップなしに第2のデータ要素GBに保存される。第2のデータ要素GBは、第2のデータ要素GBの全てのオブジェクトが密にパックされ、使用できないメモリギャップなしに配置される、第2のメモリ領域SPB内の連続領域を形成する。移行ステップ207において、第1の制御プログラムAと、第1の制御プログラムAに基づいて実行された最後の制御サイクルの時点での自動化システム100のグローバル状態とを、オブジェクト単位で第2のデータ要素GBの対応するオブジェクトにマッピングすることにより、グローバル状態は、正常なデータ移行の後、第2のメモリ領域SPBに連続した単位として保存される。
図5は、更なる実施形態による、データ移行で自動化システム100の制御プログラムAを更新するための方法200のフローチャートを示す。図5に示す方法200の実施形態は、図3及び図4に示す実施形態に基づいており、これらの図に示す全ての方法ステップを含む。
図3及び図4に示す実施形態とは対照的に、図5に示す実施形態における第1の生成ステップ201は、第1の識別ステップ223において、第1のデータ要素GAのデータ型を第1のデータ型として識別するステップと、第2のデータ要素GBのデータ型を第2のデータ型として識別するステップとを含む。第1のデータ要素GAの第1のデータ型と第2のデータ要素GBの第2のデータ型とを識別した後、第1の生成ステップ201は、識別された第1のデータ型と識別された第2のデータ型に基づいて、第1の移行関数MIG1を生成する。
例えば、第1のデータ要素GAの第1のデータ型と第2のデータ要素GBの第2のデータ型は、複合型、フィールド型、又は別の一般的なデータ型であってもよい。使用時に、第1のデータ要素GAの第1のデータ型及び第2のデータ要素GBの第2のデータ型は、典型的には複合型であり、第1のデータ要素GA及び第2のデータ要素GBは、それぞれ、第1のデータサブ要素GA1及び第2のデータサブ要素GB1として以下に定義される複数のオブジェクトから構成される。
第1の識別ステップ223において識別された第1のデータ要素GAの第1のデータ型が複合型であり、第1のデータ要素GAが少なくとも1つのデータサブ要素GA1を含む場合、及び識別された第2のデータ要素GBの第2のデータ型も複合型であり、第2のデータ要素GBが少なくとも1つの第2のデータサブ要素GB1を含む場合、次に第2の識別ステップ225において、第1のデータサブ要素GA1のデータ型は、第3のデータ型として識別され、第2のデータサブ要素GB1のデータ型は、第4のデータ型として識別される。第1のデータサブ要素GA1の第3のデータ型と第2のデータサブ要素GB1の第4のデータ型は、同様に複合型、フィールド型、スカラ型、ポインタ型であってよい。
続いて、第3の識別ステップ227において、第1の関係R1が、第1のデータサブ要素GA1と第2のデータサブ要素GB1との間で識別される。第1の関係R1は、第1のデータサブ要素GA1と第2のデータサブ要素GB1との間の十分に正確な関連付けを可能にする。
移行ステップ207において、第1のデータ要素GAのオブジェクト又は第1のデータサブ要素GA1と、第2のデータ要素GBのオブジェクト又は第2のデータサブ要素GB1との間の識別された関係は、第1のデータ要素GAのどのオブジェクト又は第1のデータサブ要素GA1が第2のデータ要素GBのどのオブジェクト又は第2のデータサブ要素GB1にマッピングされるかを示す。
少なくとも第1のデータサブ要素GA1及び第2のデータサブ要素GB1が同じ名前付けされている場合、第1の関係R1は、第1のデータサブ要素GA1と第2のデータサブ要素GB1との間に存在する。第1のデータサブ要素GA1及び第2のデータサブ要素GB1は、それぞれ第1の制御プログラムA及び第2の制御プログラムBのオブジェクトを記述する。第1のデータサブ要素GA1及びデータサブ要素GB1のデータ型に応じて、これらのオブジェクトは、複雑なオブジェクトを記述したり、スカラ値、ポインタ、数値、文字列又は非構造化値を表現したりする。変数は、複素数データ型を有することもできる。第1のデータサブ要素GA1と第2のデータサブ要素GB1との間の第1の関係R1は、第1の制御プログラムAにおける第1のデータサブ要素GA1と、第2の制御プログラムBにおける第2のデータサブ要素GB1とが同一の意味及び役割を有することを表現する。第1の制御プログラムA内のオブジェクト及び第2の制御プログラムB内のオブジェクトの同一の意味は、第1のデータ要素GAの値の第2のデータ要素GBへのデータ移行において、第1のデータ要素GA内のオブジェクトの値がPBによるGAの解釈及びPBによるGBの解釈が等価となるように、第2のデータ要素GB内のオブジェクトにマッピングされなければならないことを必要とする。従って、第1のデータサブ要素GA1と第2のデータサブ要素GB1との間の識別された第1の関係R1は、移行ステップ207において、第1のデータ要素GAの第2のデータ要素GBへのデータ移行の間、第1のデータサブ要素GA1の値を第2のデータサブ要素GB1にマッピングしなければならないことを示す。
第2の識別ステップ225において、第3のデータ型と第4のデータ型を識別し、第3の識別ステップ227において、第1の関係R1を識別した後、識別された第3のデータ型、識別された第4のデータ型、及び識別された第1の関係R1を根拠として、第2の生成ステップ229において、第1のデータサブ要素GA1を第2のデータサブ要素GB1にマッピングするための第2の移行関数MIG2は、生成される。これにより、第2の移行関数MIG2は、第2の移行関数MIG2が第1のメモリ領域SPA内の第3のデータ型のデータを読み出し、第3のデータ型の読み出しデータを第4のデータ型に変換し、第4のデータ型に変換したデータを第2のメモリ領域SPBに保存する点において、第3のデータ型のデータを第4のデータ型のデータにマッピングするように設定される。結果的に、第1のデータサブ要素GA1の第3のデータ型と第2のデータサブ要素GB1の第4のデータ型が同一である場合、読み出したデータの変換は、省略される。第3のデータ型と第4のデータ型が同一である場合、第1のデータサブ要素GA1の値は、ブロック単位で第2のメモリ領域SPB内の第2のデータサブ要素GB1の位置PGB1にコピーされてよい。
結果的に、第1のデータサブ要素GA1の第3のデータ型と第2のデータサブ要素GB1の第4のデータ型が複合型である場合、及び第1のデータサブ要素GA1が少なくとも第1の構成要素MAを含み、第2のデータサブ要素GB1が少なくとも第2の構成要素MBを含む場合、第4の識別ステップ239において、第1の構成要素MAのデータ型は、第5のデータ型として識別され、第2の構成要素MBのデータ型は、第6のデータ型として識別される。第1の構成要素MAの第5のデータ型と第2の構成要素MBの第6のデータ型は、それぞれ複合型、フィールド型、スカラ型、又はポインタ型であってよい。更に、第1のデータサブ要素GA1は、複数の第1の構成要素MAを有することができ、第1の構成要素MAの各々は、同一の第5のデータ型を有することができる。代替的に、第1の構成要素MAの一部は、同一の第5のデータ型を有することができる。代替的に、複数の第1の構成要素MAの各々は、異なるデータ型を有することができる。第2のデータサブ要素GB1は、複数の第2の構成要素MBを有することができ、第2の構成要素MBの各々は、第6のデータ型であってよい。代替的に、第2の構成要素MBの各々は、異なるデータ型を有することができる。
第4の識別ステップ239において、第1の構成要素MAの第5のデータ型及び第2の構成要素MBの第6のデータ型を識別した後、第5の識別ステップ241において、第1の構成要素MAと第2の構成要素MBとの間の第2の関係R2は、識別される。第2の関係R2は、第1の構成要素MAと第2の構成要素MBとの間の十分に正確なマッピングを提供する。第1の構成要素MA及び第2の構成要素MBが同じ名前付けされる場合、第1の構成要素MA及び第2の構成要素MBは、少なくとも第2の関係R2を介して関連付けられる。第1のデータサブ要素GA1が複数の第1の構成要素MAを含み、第2のデータサブ要素GB1が複数の第2の構成要素MBを含む場合、複数の第2の関係R2は、第1の構成要素MAと第2の構成要素MBのそれぞれのペアの間で識別される。代替的に、複数の第1の構成要素MA及び複数の第2の構成要素MBは、単一の第2の関係R2を介して互いに関連付けられてもよい。
第4の識別ステップ239において、第5のデータ型と第6のデータ型を識別し、第5の識別ステップ241において、第2の識別ステップR2を識別した後、第3の生成ステップ243において、識別された第5のデータ型と識別された第6のデータ型を根拠として、第3の移行関数MIG3は、生成され、第3の移行関数MIG3は、第1のメモリ領域における第5のデータ型のデータを読み出す第3の移行関数MIG3によって第5のデータ型のデータを第6のデータ型にマッピングし、読み出したデータを第6のデータ型に変換し、変換したデータを第2のメモリ領域SPBに保存するように構成される。第5及び第6のデータ型が同一である場合、読み出しデータの変換は、省略され、第1の構成要素MAの値は、ブロック単位で第2の構成要素MBの位置PMBにコピーされ得る。代替的に、識別された第2の関係R2は、第3の移行関数MIG3を生成するために使用され得る。
生成された第3の移行関数MIG3は、第1の構成要素MAを第2の構成要素MBにマッピングすることに限定されず、第5のデータ型の任意のデータを第6のデータ型の任意のデータにマッピングするように配置される。第1のデータサブ要素GA1が第5のデータ型である複数の第1の構成要素MAを有し、第2のデータサブ要素GB1が第6のデータ型である複数の第2の構成要素MBを有する場合、第5のデータ型のデータを第6のデータ型のデータにマッピングするように設定された第3の移行関数MIG3のみを生成すれば十分である。
複数の第1の構成要素MAを第2の構成要素MBにマッピングするために、1つの第3の移行関数MIG3は、複数回実行されることがあり、それぞれ別々の第1の構成要素MAは、第2の構成要素MBにマッピングされ得る。結果として、第1のデータサブ要素GA1が各々が異なるデータ型を有する複数の第1の構成要素MAを含み、第2のデータサブ要素GB1が各々が異なるデータ型を有する複数の第2の構成要素MBを有する場合、第3の生成ステップ243において、複数の第3の移行関数MIG3は、生成されなければならず、特に、各第3の移行関数MIG3が、複数の第1の構成要素MAの1つのデータ型のデータを複数の第2の構成要素MBの1つのデータ型のデータにマッピングする、それぞれのケースにおいて設定され、第3の移行関数MIG3は、これまで生成されていない複数の第1の構成要素MA及び第2の構成要素MBのデータ型の各ペアのために生成されなければならない。
第2の識別ステップ225において、第1のデータサブ要素GA1の第3のデータ型がフィールド型であり、第1のデータサブ要素GB1の第4のデータ型もフィールド型であり、第1のデータサブ要素GA1及び第2のデータサブ要素GB1が同一の数の次元を有し、少なくとも1つの次元について、第1のデータサブ要素GA1は、第1のインデックス範囲[U0,...,UM]に従ってインデックス付けされた第1の要素を含み、第2のデータサブ要素GB1は、第2のインデックス範囲[X0,...,XN]に従ってインデックス付けされた第2の要素を含み、第1のインデックス範囲[U0,...,UM]及び第2のインデックス範囲[X0,...,XN]は、等しく、第6の識別ステップ253において、第1のインデックス範囲[U0,...,UM]に従ってインデックス付けされた各第1の要素のデータ型は、第7のデータ型として識別され、第2のインデックス範囲[X0,...,XN]に従ってインデックス付けされた各第2の要素のデータ型は、第8のデータ型として識別される。第7のデータ型と第8のデータ型は、フィールド型、複合型、及び、数値、ポインタ、文字列などのスカラを含む任意のデータ型である。
続いて、第7の識別ステップ255において、第1のインデックス範囲[U0,...,UM]に従ってインデックス付けされた第1の要素と、第2のインデックス範囲[X0,...,XN]に従ってインデックス付けされた第2の要素との間の第3の関係は、識別され、これは、第1の要素と第2の要素との間の十分に正確な割り当てを可能にする。第1のインデックス範囲[U0,...,UM]の第1の要素と、第2のインデックス範囲[X0,...,XN]の第2の要素とは、第1の要素と第2の要素とが同じインデックス付けされている場合、関連する。第1のインデックス範囲[U0,...,UM]の第1の要素と第2のインデックス範囲[X0,...,XN]の第2の要素との間の第3の関係は、第1のデータサブ要素GA1の値が第2のデータサブ要素GB1に移行されるとき、第1の要素の値も第3の関係を介して第1の要素に関連する第2の要素にマッピングされなければならないことを意味する。
続いて、第4の生成ステップ257において、第4の移行関数MIG4は、識別された第7のデータ型と識別された第8のデータ型と識別された第3の関係とを根拠として、生成され、第4の移行関数MIG4は、第7のデータ型のデータを第8のデータ型のデータにマッピングするようにセットアップされ、第4の移行関数MIG4は、第1のメモリ領域SPA内の第7のデータ型のデータを読み出し、読み出したデータを第8のデータ型に変換し、変換したデータを第2のメモリ領域SPBに保存する。第7のデータ型と第8のデータ型が同一である場合、読み出したデータの変換は、省略される。第7のデータ型と第8のデータ型が同一である場合、第1の要素の値は、ブロック単位で第2の要素の場所にコピーされ得る。
第1のインデックス範囲[U0,...,UM]と第2のインデックス範囲[X0,...,XN]とが同一でない場合、次にインデックス決定ステップ259において、間隔[R、S]は、R=max[X0,U0]及びS=min[XN、UM]である第1のデータサブ要素GA1及び第2のデータサブ要素GB1のインデックス範囲において決定される。ここで、Rは、2つの下限X0及びU0の内の大きい方であり、一方で、Sは、2つの上限XN及びUMの内の小さい方である。間隔[R、S]を決定した後、第6の識別ステップ253、第7の識別ステップ255、及び第4の生成ステップ257は、間隔に従ってインデックス付けされた第1の要素及び第2の要素に対して実行され、それぞれが同じインデックス付けされる。間隔[R、S]は、同一のインデックスを有する第1の要素及び第2の要素を含まない場合、第4の生成ステップ257において、第4の移行関数MIG4は、生成されず、第1のデータサブ要素GA1の値の第2のデータサブ要素GB1へのデータ移行は、実行されない。代替的に、第4の移行関数は、生成されるが、実行されないため、この場合も、移行は、発生しない。
第1の生成ステップ201及び/又は第2の生成ステップ229及び/又は第3の生成ステップ243及び/又は第4の生成ステップ257の完了後、第2の検証ステップ215において、第1の生成ステップ201において第1の移行関数MIG1を生成することができたかどうか、及び/又は第2の生成ステップ229において第2の移行関数MIG2を生成することができたかどうか、及び/又は第3の生成ステップ243において第3の移行関数MIG3を生成することができたかどうか、及び/又は第4の生成ステップ257において第4の移行関数MIG4を生成することができたかどうかは、検証される。
本発明に従った方法200は、第1の移行関数MIG1、第2の移行関数MIG2、第3の移行関数MIG3、第4の移行関数MIG4が再帰的に実行されてもよく、1つの階層レベルの移行関数は、それぞれ次の下位階層レベルの移行関数を呼び出してもよく、第1の移行関数は、最上位階層レベルの移行関数であるという点で、再帰的に実行されてもよい。
移行関数は、移行されるデータ要素のデータ型に基づいて生成され、特定のデータ型のデータ要素を特定のデータ型のデータ要素にマッピングするようにセットアップされる。
例えば、第1のデータ要素GA及び第2のデータ要素GBがそれぞれ複合型である場合、第1の移行関数MIG1が生成され、これは、少なくとも1つのデータサブ要素を有する複合型のデータオブジェクトを、複合型でもあり、また、複合型の構成要素としてデータサブ要素も有する別のデータオブジェクトにマッピングするように配置される。第1のデータ要素GA及び/又は第2のデータ要素GBが異なる構成要素の数を有する場合、第1のデータ要素GA及び/又は第2のデータ要素GBのデータ型は、変更し、生成された第1の移行関数MIG1は、異なる特性を有する。
第1のデータサブ要素GA1及び第2のデータサブ要素GB1のデータ型に応じて、第1のデータサブ要素GA1のデータ型のデータ要素を第2のデータサブ要素GB1のデータ型のデータ要素にマッピングするようにセットアップされた第1のデータサブ要素GA1を第2のデータサブ要素GB1にマッピングするための第2の移行関数MIG2は、更に生成される。第1のデータサブ要素GA及び第2のデータサブ要素GBがそれぞれ複数の第1のデータサブ要素GA1及び第2のデータサブ要素GB1を有する場合、次に第1のデータサブ要素GA1が同一のデータ型を有し、第2のデータサブ要素GB1が同一のデータ型を有する場合、データサブ要素をマッピングするための第2の移行関数MIG2は、複数回実行されてよい。第1のデータサブ要素GA1が異なるデータ型を有し、且つ/又は第2のデータサブ要素GB1が異なるデータ型を有する場合、データサブ要素をマッピングするためにいくつかの第2の移行関数は、必要とされる。
第1のデータサブ要素GA1及び第2のデータサブ要素GB1がそれぞれ複合型であり、第1のデータサブ要素GA1が、例えば3つの第1の構成要素MAを含み、第2のデータサブ要素GB1が、例えば3つの第2の構成要素MBを含む場合、第2の移行関数は、3つの構成要素を有する複合型のデータ要素を3つの構成要素を有する複合型の更なるデータ要素にマッピングするようにセットアップされる。この状況は、異なる数の構成要素についても同じである。
3つの第1の構成要素MAを3つの第2の構成要素MBにマッピングするために、少なくとも第3の移行関数MIG3は、生成され、これは、第1の構成要素MAのデータ型のデータ要素を第2の構成要素MBのデータ型のデータ要素にマッピングするようにセットアップされる。3つの第1の構成要素MAが異なるデータ型を有する場合、及び/又は3つの第2の構成要素MBが異なるデータ型を有する場合、少なくとも2つ及び最大3つの第3の移行関数MIG3は、生成されなければならない。全ての3つの第1の構成要素MAの各々が、同じデータ型を有し、全ての3つの第2の構成要素MBの各々が、同じデータ型を有する場合、3つの第1の構成要素MAを3つの第2の構成要素MBにマッピングするために数回実行される第3の移行関数MIG3で、十分である。
上述の実施例において、第1の移行関数MIG1は、複合型のデータ要素として形成され、更に3つの構成要素を有する、複合型のデータ要素を、やはり複合型のデータ要素であり、更に複合型のデータ要素として具体化され、更に3つの構成要素を有する、構成要素を有する、データ要素にマッピングするためにセットアップされる。
第1のデータ要素GAを第2のデータ要素GBにマッピングするために、本発明に従って第1の移行関数MIG1は、実行され、第1の移行関数MIG1は、第1のデータ要素GAの複合型のデータ要素を第2のデータ要素GBの複合型のデータ要素にマッピングするようにセットアップされる。
第1のデータサブ要素GA1を第2のデータサブ要素GB1にマッピングするために、第1の移行関数MIG1は、第1のデータサブ要素GA1の複合型のデータ要素を第2のデータサブ要素GB1の複合型のデータ要素にマッピングするように配置された第2の移行関数MIG2を呼び出す。
3つの第1の構成要素MAを3つの第2の構成要素MBにマッピングするために、第2の移行関数MIG2は、第1の構成要素MAのデータ型のデータ要素を第2の構成要素MBのデータ型のデータ要素にマッピングするようにそれぞれ具体化される、1つまたは複数の第3の移行関数MIG3に次々にアクセスする。
第1の構成要素MAと第2の構成要素MBがそれぞれスカラ型である場合、移行関数の再帰的実行は、第3の移行関数MIG3で終了する。第3の移行関数MIG3を実行し、第1の構成要素MAを第2の構成要素MBにマッピングした後、第3の移行関数MIG3は、終了する。その結果、第2の移行MIG2は、第1のデータサブ要素GA1を第2のデータサブ要素GB1にもマッピングし、これも、終了する。その結果、第1の移行関数MIG1は、第1のデータ要素GAを第2のデータ要素GBにもマッピングし、これも、終了する。従ってデータの移行は、完了する。
第1の構成要素MA及び第2の構成要素MBがスカラ型ではなく、例えば、再び複合型であり、同様に、更なる第1の構成要素及び更なる第2の構成要素を含む場合、本発明による上述した方法は、所望に応じて再帰的に継続されてよい。このようなケースにおいて、複合型として具現化された第1の構成要素MAの更なる第1の構成要素を第2の構成要素MBの更なる第2の構成要素にマッピングするために具現化される、少なくとも更なる第5の移行関数が、必要とされる。
この第5の移行関数は、第1の構成要素MAを第2の構成要素MBにマッピングするために、第3の移行関数MIG3によってアクセスされ、実行される。
この場合において、第5の移行関数は、更なる第1の構成要素及び更なる第2の構成要素のデータ型に従ってセットアップされ、更なる第1の構成要素のデータ型のデータ要素を更なる第2の構成要素のデータ型のデータ要素にマッピングする。
それぞれの第1の構成要素MAをそれぞれの第2の構成要素MBにマッピングするために、第3の移行関数MIG3は、対応してセットアップされた第5の移行関数にアクセスし、それにより、後者は、少なくとも1つの更なる第1の構成要素を更なる第2の構成要素にマッピングする。異なるデータ型を有する複数の更なる第1の構成要素及び/又は異なるデータ型を有する複数の更なる第2の構成要素の場合には、対応する数の第5の移行関数が、生成されなければならず、次々と、第3の移行関数によって連続的にアクセスされ、実行される。
データ要素が複合型の他のデータ要素の構成要素として配置され、同様に複合型などの他のデータ要素の構成要素である、個々のデータ要素のネスティングに応じて、対応する数の移行関数は、生成され、これを再帰的に実行して、ネスティングされたデータ要素をマッピングする。
本発明による方法200によってカバーされ得る再帰の程度は、方法200によって限定されない。制限は、単に方法200を実行するデータ処理ユニットの利用可能な計算能力に起因し得る。
上記の実施例は、データ要素のネスティングの程度に関して任意に拡張可能である。更に、第1及び第2のデータサブ要素の数、並びに第1及び第2の構成要素は、任意に拡張可能である。複数の第1及び第2のデータサブ要素の場合において、複数の第2の移行関数MIG2は、生成される必要があり得る。
第1及び第2のデータサブ要素又は第1及び第2の構成要素が複合型の代わりにフィールド型である場合において、上述した手順は、同様に実行される。
各々がフィールド型であるデータ要素のネスティングは、対応する移行関数に再帰的にアクセスし、実行することによって、本発明による方法200によって、同様に処理することができる。
しかしながら、本発明に従った、この目的のために生成された移行関数は、複合型のデータ要素をマッピングするための移行関数と比較して、フィールド型のデータ要素をマッピングするときに特別な特徴を有する。
例えば、第1のデータサブ要素GA1及び第2のデータサブ要素GB1が第1及び第2の要素がそれに応じて配置される次元数が等しいフィールド型である場合、第1のデータサブ要素の第1の要素のデータ型の次元数及び要素数を有するフィールド型のデータ要素を、第2のデータサブ要素の第2の要素の次元数及びデータ型の要素数を有するフィールド型のデータ要素にマッピングするように構成される、第2の移行関数MIG2が生成される。
更に、第1の要素のデータ型のデータ要素を第2の要素のデータ型のデータ要素にマッピングするように構成される第4の移行関数が生成される。第4の移行関数は、第1のデータサブ要素GA1の第1の要素を対応する第2のデータサブ要素GB1の第2の要素に個々にマッピングするように具体化され、第2の移行関数MIG2によってアクセスされ、実行される。
上述した実施例から逸脱して、フィールド型のケースにおいて、第2の移行関数MIG2は、ネストされたループにおいて第4の移行関数にアクセスするように構成され、ネストされたループの数は、フィールド型のデータ型の第1及び第2のデータサブ要素の次元の数に関連する。
ネストされたループにおいて第2の移行関数MIG2を介して第4の移行関数にアクセスすることにより、第4の移行関数は、第1の要素を第2の要素にマッピングするためにアクセスされ、この要素をマッピングし、再び終了される。その後、ループの実行において、次の第1の要素を次の第2の要素にマッピングするための第4の移行関数がアクセスされ、実行される。第4の移行関数をネストされたループで実行することにより、第4の移行関数を個々に実行することにより、マッピングされるべき全ての第1の要素を第2のデータサブ要素の対応する第2の要素にマッピングすることができる。
上記の実施例と同様に、本発明による方法200は、データ要素がフィールド型のデータ型の更なるデータ要素の要素として構成される、データ要素の任意のネスティングのフィールド型のデータ型のデータ要素にも適用可能である。データ移行を実行するために、本発明による方法200による、更なる第5、第6、又は更なる移行関数を生成しなければならず、これは、再帰的に実行することができる。
この点に関して、本発明による方法200は、任意の程度のデータ要素のネスティングに対応することができる。処理可能なネスティングの限界は、むしろ、方法200を実行するデータ処理ユニットの計算能力によって決定される。
上記の実施例は、単に説明を目的としたものであり、本発明による方法200は、本明細書に記載された例示的な実施形態に限定されることを意図したものではない。データ要素、データサブ要素、構成要素、要素の数に関する、記載されたデータ要素、データサブ要素、構成要素、要素のそれぞれのデータ型に関する、及びデータ要素、データサブ要素、構成要素、要素のネスティングの程度に関する変形例は、本発明による方法200によってカバーされる。
第1のデータ要素GAの第1のデータ型を第2のデータ要素GBの第2のデータ型に変換できない場合、第1の移行関数MIG1を生成することは、失敗することがある。これは、例えば第1のデータ型と第2のデータ型に互換性がない場合である。第1のデータサブ要素GA1の第3のデータ型と第2のデータサブ要素GB1の第4のデータ型が互いに変換できない場合、第2の移行関数MIG2を生成することは、失敗することがある。第1の構成要素MAの第5のデータ型が第2の構成要素MBの第6のデータ型に変換できない場合、第3の移行関数を生成することは、失敗することがある。第1要素の第7のデータ型を第2の要素の第8のデータ型に変換できない場合、第4の移行関数MIG4を生成することは、失敗することがある。
代替的に、第1の移行関数MIG1、第2の移行関数MIG2、第3の移行関数MIG3、又は第4の移行関数MIG4は、上記の場合において生成されてもよいが、それぞれのデータ型を互いに変換することができないため、実行されない。
例えば、第1のデータ要素GAの第1のデータ型が複合型であり、第2のデータ要素GBの第2のデータ型が複合型でない場合、第1のデータ要素GAは、第2のデータ要素GBに変換されることはできない。
同様に、第1のデータサブ要素GA1の第3のデータ型は、例えば第3のデータ型が複合型であり、第4のデータ型が複合型でない場合、第2のデータ要素GB1の第4のデータ型に変換できない。更に、第4のデータ型がフィールド型であり、第3のデータ型がフィールド型ではない、又はフィールド型でもあるが、次元数が異なる場合、第3のデータ型は、第4のデータ型に変換されることはできない。
更に、第3のデータ型の第1のデータサブ要素GA1の値は、第3のデータ型及び第4のデータ型がそれぞれ複合型である場合、第4のデータ型の第2のデータサブ要素GB1に転送できないが、第2のデータサブ要素GB1の第4のデータ型は、第1のデータサブ要素GA1の第1の構成要素MAに関連する第2の構成要素MBを有さない。
更に、第3のデータ型は、両方のデータ型がフィールド型である場合、第4のデータ型に変換できないが、第4のデータ型は、第3のデータ型の第1の要素に関連する第2の要素を有さない。
同様に、第1の構成要素MAの第5のデータ型は、第5のデータ型及び/又は第6のデータ型が複合型及び/又はフィールド型である場合、第2の構成要素MBの第6のデータ型に変換することができない。
第1の構成要素MAの第5のデータ型と第2の構成要素MBの第6のデータ型又は第1の構成要素の第7のデータ型又は第2の構成要素の第8のデータ型がスカラ型である場合、第6のデータ型が第5のデータ型の全ての値を表す場合、又は第8のデータ型が第7のデータ型の全ての値を表す場合、第5のデータ型は、第6のデータ型に変換される、又は第7のデータ型は、第8のデータ型に変換されることができる。例えば、整数INTは、Long Integer LINTに変換できる。符号付き16ビット整数データ型の値は、情報を失うことなく、常に符号付き64ビット整数データ型の値に変換できる。Long Integer LINTの値の少なくとも部分がInteger INTで表現される得る場合、必要に応じて、Long Integer LINTも、Integer INTに変換されることがある。場合によっては、少なくとも比較可能又は類似の値が実数の場合と同様に整数INTで表現されることがある場合、実数は、整数INTにも変換可能である。逆に、例えば、符号付き64ビット整数データ型の値は、符号付き16ビット整数データ型の値によって表現される場合、情報を失うことなく、符号付き16ビット整数データ型の値にのみ変換できる。
具体的に、IEC 61131-3標準において複合型として定義されているデータ型Struct、Class、及びFunction_Blockは、互いに変換することができる。例えば、Structの値は、Function_Blockの値に変換できる。
具体的に、マッピングされるべきスカラ型のデータ要素はより大きなスカラ型の別のデータ要素に十分に正確にマッピングされてもよく、例えば、16ビット整数は、64ビット整数にマッピングされてもよい。
更に、マッピングされるべきより大きいスカラ型のデータ要素の値が更なるデータ要素のより小さいスカラ型で表現されてもよい場合、マッピングされるべきスカラ型のデータ要素は、より小さいスカラ型の更なるデータ要素に十分に正確にマッピングされてもよい。これは、マッピングされるべきデータ要素の値が更なるデータ要素のより小さいスカラ型で使用可能なビット番号の2進数として表現され得る場合である。
その上、マッピングされるべきスカラ型のデータ要素は、マッピングされるべきより大きなスカラ型のデータ要素の値が更なるデータ要素のより小さなスカラ型で表現され得ないが、更なるデータ要素のより小さなスカラ型で表現され得る最大値が十分な精度でマッピングされるべきデータ要素の値を表現する場合、十分な精度で、より小さなスカラ型の更なるデータ要素にマッピングされ得る。この目的のために、移行前にマッピングされるデータ要素について限界値は、決定されてもよく、これは、マッピングされるデータ要素の値のどのサイズから開始して、更なるデータ要素による値の描写がもはや十分な精度で不可能であるかを指定する。ここで説明するものは、全ての第1のデータ要素GA、第2のデータ要素GB、データサブ要素GA1、第2のデータサブ要素GB1、第1の構成要素MA、第2の構成要素MB、第1の要素及びスカラ型である第2の要素に適用される。
更に、第1の移行関数MIG1、第2の移行関数MIG2、第3の移行関数MIG3、又は第4の移行関数MIG4の生成は、第1のデータ要素GAと第2のデータ要素GB、又は第1のデータサブ要素GA1と第2のデータサブ要素GB1、又は第1の構成要素MAと第2の構成要素MB、又は第1の要素と第2の要素との間に関係が識別できない場合、失敗することがある。代替的に、第3の移行関数MIG3は、生成されてもよいが、関係が識別されなかったため、実行されなくてもよい。
第1の移行関数MIG1及び/又は第2の移行関数MIG2及び/又は第3の移行関数MIG3及び/又は第4の移行関数MIG4を生成することができる場合、方法200は、図3及び図4に関して説明した中断ステップ203、第1の決定ステップ205、及び移行ステップ207に従って継続される。
手順は、全ての第1のデータサブ要素GA1が全ての第2のデータサブ要素GB1にマッピングされる、又は全ての第1の構成要素MAが第2の構成要素MBにマッピングされる、又は全ての第1の構成要素がそれぞれのデータ型に従って互いにマッピングされ得る第2の構成要素にマッピングされるまで継続される。この目的のために、第1の移行関数MIG1は、第2の移行関数MIG2に連続的にアクセスし、次に、必要に応じて、対応する第3の移行関数MIG3及び/又は第4の移行関数MIG4に連続的にアクセスする。
図3及び図4に示す実施形態とは逸脱し、図5に示す実施形態の移行ステップ207は、第1のデータ要素GA及び第2のデータ要素GB上で第1の移行関数MIG1を発動し、アクセスすることを含む。第1のデータ要素GA及び第2のデータ要素GB上で第1の移行関数MIG1を実行することは、第1の読み出しステップ217において第1のメモリ領域SPA内の第1のデータ要素GAの位置PGAで第1のデータ要素GAの値を読み出し、第1の変換ステップ219においてその値を第2のデータ型に変換し、第1の書き込みステップ221において第2のデータ型に変換された値を第2のメモリ領域SPB内の第2のデータ要素GBの位置PGBに書き込むことを含む。
第1のデータ要素GA及び第2のデータ要素GBが複合型であり、第1のデータ要素GAが少なくとも第1のデータサブ要素GA1を含み、第2のデータ要素GBが少なくとも第2のデータサブ要素GB1を含む場合、移行ステップ207は、第1の部分移行ステップを更に含む。第1の部分移行ステップ231において、第1のデータサブ要素GB1を第2のデータサブ要素GB2にマッピングするための第2の移行関数MIG2は、第1の移行関数MIG1によってアクセスされる。第2の移行関数MIG2にアクセスするとき、第1の移行関数MIG1は、第1のメモリ領域SPAの第1のデータサブ要素GA1が保存されるメモリ位置、および、第2のメモリ領域SPBの第2のデータサブ要素GB1が保存されるメモリ位置を渡す。
第2の移行関数MIG2にアクセスした後、第1の部分移行ステップ231は、第2の読み出しステップ233において、第1のメモリ領域SPAの第1のデータサブ要素GA1の位置PGA1で第1のデータサブ要素GA1の値を読み出し、第2の変換ステップ235において読み出した値を第4のデータ型の値に変換し、第2の書き込みステップ237において、第2のデータサブ要素GBの位置PGB1に第4のデータ型に変換した値を書き込むことを含む。
第1のデータサブ要素GA1及び第2のデータサブ要素GB1がそれぞれ複合型であり、第1のデータサブ要素GA1が少なくとも第1の構成要素MAを含み、第2のデータサブ要素GB1が少なくとも第2の構成要素MBを含む場合、移行ステップ207は、第2の移行関数MIG2が第3の移行関数MIG3にアクセスし、第1の構成要素MAを第2の構成要素MBにマッピングする第2の部分移行ステップ245を更に含む。第3の移行関数MIG3にアクセスするとき、第2の移行関数MIG2は、第1のメモリ領域SPA内の第1の構成要素MAのアドレスを渡し、第2のメモリ領域SPB内の第2の構成要素MBを渡す。
第3の移行関数MIG3にアクセスした後、第2の部分移行ステップ245は、第3の読み出しステップ247において、第1のメモリ領域SPA内の第1の構成要素MAの位置PMAで第1の構成要素MAの値を読み出し、第3の変換ステップ249において、読み出した値を第2の構成要素MBの第6のデータ型の値に変換し、第3の書き込みステップ251において、第6のデータ型に変換された第1の構成要素MAの値を第2のメモリ領域SPB内の第2の構成要素MBの位置PMBに書き込むことを含む。
第1のデータサブ要素GA1及び第2のデータサブ要素GB1がそれぞれ同一の次元数を有するフィールド型であり、第1のデータサブ要素GA1が第1のインデックス範囲[U0,...,UM]において少なくとも1つの次元でインデックス付けされた第1の要素を含み、第2のデータサブ要素GB1が第2のインデックス範囲[X0,...,XN]において少なくとも1つの次元でインデックス付けされた第2の要素を含む場合、移行ステップ207は、第2の移行関数MIG2が第1の要素を第2の要素にマッピングするための第4の移行関数MIG4にアクセスする第3の部分移行ステップを含む。第4の移行関数MIG4にアクセスするとき、第2の移行関数MIG2は、第1のメモリ領域SPA内の第1の要素のメモリ位置と、第2のメモリ領域SPB内の関連する第2の要素のメモリ位置とを転送する。
第4の移行関数MIG4が第2の移行関数MIG2によってアクセスされた場合、第3の部分移行ステップ261は、第4の読み込みステップ263において、第1のメモリ領域SPA内の第1の要素の位置にある第1の要素の値を読み出し、第4の変換ステップ265において、読み出した値を第2の要素の第8のデータ型の値に変換し、第4の書き込みステップ267において、第2のメモリ領域SPB内の第2の要素の位置に第8のデータ型に変換した値を書き込むことを含む。
第1のデータ要素GA及び第2のデータ要素GBがそれぞれ、第1の関係R1がそれぞれ識別され、第1のデータ型及び第2のデータ型が互いに変換され得る複数の第1のデータサブ要素GA1及び複数の第2のデータサブ要素GB1を含み、複数の第1のデータサブ要素GA1が異なる第2のデータ型を含み、複数の第2のデータサブ要素GB1が複数の異なる第4のデータ型を含む場合、第1の移行関数MIG1は、第1の部分移行ステップ231において、複数の第1のデータサブ要素GA1を複数の第2のデータサブ要素GB1にマッピングするための複数の異なる第2の移行関数MIG2にアクセスする。複数の第2移行関数MIG2は、複数の第3データ型と複数の第4データ型とでそれぞれ異なる。各第2の移行関数MIG2は、第1のデータサブ要素GA1を第2のデータサブ要素GB1にマッピングするために、第2の読み出しステップ233、第2の変換ステップ235、及び第2の書き込みステップ237をそれぞれ通過する。
第1のデータサブ要素GA1が複数の第1の構成要素MAをそれぞれ含み、第2のデータサブ要素GB1が複数の第2の構成要素MBをそれぞれ含み、複数の第1の構成要素MAが複数の異なる第5のデータ型を含み、複数の第2の構成要素MBが複数の異なる第6のデータ型を含む場合、第2の部分移行ステップ245において、第2の移行関数MIG2は、複数の第1の構成要素MAを複数の第2の構成要素MBにマッピングするための複数の第3の移行関数MIG3にアクセスし、第3の移行関数MIG3のそれぞれは、マッピングされる第5のデータ型及び第6のデータ型に関して異なる。第2の部分移行ステップ245において、第1の構成要素MAを第2の構成要素MBにマッピングするためのそれぞれの第3の移行関数MIG3は、第3の読み出しステップ247、第3の変換ステップ249、及び第3の書き込みステップ251を実行する。
第1のデータサブ要素GA1が複数の第1の要素を含み、第2のデータサブ要素GB1が複数の第2の要素を含む場合、第3の部分移行ステップ261において複数の第1の要素を第2の要素にマッピングするために、第4の移行関数MIG4は、第2の移行関数MIG2によって複数回、連続してアクセスされ、第3の関係に従って関連付けられた第2の要素によってそれぞれの第1の要素をマッピングする。それぞれのマッピングのために、第4の移行関数MIG4は、第3の部分移行ステップ261において、第4の読み出しステップ263、第4の変換ステップ265、及び第4の書き込みステップ267を実行する。代替的に、連続する第1のインデックス範囲は、第3の関係を介して、連続する第2のインデックス範囲に関連付けられてもよい。
一実施形態において、MIG2は、ネストされたループ(次元当たり1つ)を含み、MIG4は、最も内側のループでアクセスされる。この利点は、第2の移行関数MIG2からのコードサイズがフィールド型の次元数において線形であり、フィールド型のサイズと共に線形に増加しないことである。第4の移行関数MIG4へのアクセスがループ無しでフィールド型の各要素に対して生成された場合、第2の移行関数MIG2のコードは、大きなフィールド型の問題のあるサイズにすばやく到達し、もはや実行できなかった、又は実行に困難を伴った。
代替的に、複数の第1の要素を複数の第2の要素にマッピングするために、複数の第4の移行関数MIG4は、第2の移行関数MIG2によって連続的にアクセスされ、それぞれの第1の要素がそれぞれの第4の移行関数MIG4に従った第3の関係に従って関連付けられた第2の要素にマッピングされるように、複数の第4の移行関数MIG4を生成することができる。それぞれの個々の第4の移行関数MIG4は、第4の読み出しステップ263、第4の変換ステップ265、及び第4の書き込みステップ267を通過して、第3の部分移行ステップにおいて、対応する第1の要素を対応する第2の要素にマッピングする。
移行ステップ207を完了した後、図4の実施形態による方法200は、第1の検証ステップ209、置換ステップ202、及び第1の制御ステップ211又は第2の制御ステップ213を継続する。
一実施形態によれば、自動化システム100は、自動化システム100の制御プログラムを解釈するように構成された変換モジュール109を含む。更に、変換モジュール109は、第1の生成ステップ201、第1の識別ステップ223、第2の識別ステップ225、第3の識別ステップ227、第2の生成ステップ229、第4の識別ステップ239、第5の識別ステップ241、第3の生成ステップ243、第6の識別ステップ253、第7の識別ステップ255、第4の生成ステップ257、及びインデックス決定ステップ259を実行するように構成される。
更なる実施形態によれば、第2のデータ要素GBは、移行ステップ207を実行する前に初期化されてもよい。第2のデータ構成要素GBを初期化することにより、第2のデータ要素GBの値は、全ての第2のデータサブ要素GB1の値、又は全ての第2の構成要素MB又は全ての第2の構成要素の値を含む初期値にセットアップされる。
第1の部分移行ステップ231、第2の部分移行ステップ245、及び第3の部分移行ステップ261を含む移行ステップ207を実行するとき、第1の関係R1、第2の関係R2及び/又は第3の関係のための、第2のデータサブ要素GB1、第2の構成要素MB及び/又は第2の構成要素のために、対応する第1のデータサブ要素GA1、対応する第1の構成要素MA及び/又は対応する第1の構成要素が識別され、第2の移行関数MIG2、第3の移行関数MIG3及び/又は第4の移行関数MIG4が生成され、それぞれの初期値は、識別された関係を介して、第1のデータサブ要素GA1、第1の構成要素MA及び/又は関連付けられた第1の構成要素の対応する移行された値によって上書きされる。第2のデータサブ要素GB1、第2の構成要素MB、及び/又は第1のデータサブ要素GA1、第1の構成要素MA、及び/又は第1の要素のいずれとも関係が識別され得ない第2の要素について、それぞれの初期値は、移行ステップ207の完了後に保持される。
第1の制御ステップ211における第2のデータ要素GBを根拠として、第1の関係R1、第2の関係R2及び/又は第3の関係の形式で第1のデータ要素GA内で対応関係を識別することができなかった第2のデータ要素GBのオブジェクトは、第2の制御プログラムBのサイクリックの実行の間、それぞれのオブジェクトに対応する初期値を考慮して使用される。
図6は、一実施形態による自動化システム100の第1の制御プログラムAの更新バージョンとしての第2の制御プログラムBの生成プロセスの模式図を示す。
図6に示す実施形態によれば、変換モジュール109は、第2の制御プログラムBのソースコードQBを考慮して、第2の制御プログラムBを第1の制御プログラムAの更新バージョンとして生成する。この目的のために、変換モジュール109は、入力ステップ309において、第2の制御プログラムBのソースコードQBを読み込む。コンパイル処理301の変換ステップ303において、変換モジュール109は、第2の制御プログラムBのソースコードQBを、第2の制御プログラムBに基づいて自動化システム100を制御するために自動化システム100のコントローラ101によって実行されてもよい第2の制御プログラムBの実行可能コードPBに変換する。第2の制御プログラムBの実行可能コードPBは、出力ステップ311において、変換モジュール109を出力する。
コンパイル処理301において、変換モジュール109は更に、第1のデータ型TGADの定義を考慮に入れ、変換モジュールは、入力ステップ309において読み込む。第1のデータ要素GAの第1のデータ型TGADの定義は、第1のデータ要素GAの第1のデータ型とともに、全ての第1のデータサブ要素GA1の全ての第3のデータ型、全ての第1のデータサブ要素GA1の全ての第1の構成要素MAの全ての第5のデータ型、及び第1のデータ要素GAの全ての第1のデータ要素GA1の全ての第1の要素の全ての第7のデータ型を定義する。従って、第1のデータ型TGADの定義は、全ての第1のデータ型、全ての第3のデータ型、全ての第5のデータ型TMA、及び第1のデータ要素GAの全てのオブジェクトの全ての第7のデータ型を含む。
更に、コンパイル処理301において、変換モジュール109は、第2の生成ステップ307において、第2の制御プログラムBのソーステキストQBから第2のデータ型TGBDの定義を生成し、これは、出力ステップ311において出力される。第1のデータ型TGADの定義と同様に、第2のデータ型TGBDの定義は、第2のデータ要素GBの第2のデータ型並びに、全ての第2のデータサブ要素GB1の全ての第4のデータ型、並びに全ての第2のデータサブ要素GB1の全ての第2のデータサブ構成要素MBの全ての第6のデータ型、並びに第2のデータ要素GBの全ての第2のデータサブ構成要素GB1の全ての第2の要素の全ての第8のデータ型を含む。第1のデータ型TGADの定義と同様に、第2のデータ型TGBDの定義は、全ての第2のデータ型、全ての第4のデータ型、全ての第6のデータ型、及び第2のデータ要素GBの全てのオブジェクトの全ての第8のデータ型を含む。
更に、コンパイルステップ301において、変換モジュール109は、第1の生成ステップ305において移行コードMABを生成し、これは、出力ステップ311において出力される。移行コードMABは、第1の生成ステップ201、第2の生成ステップ229、第3の生成ステップ243、及び第4の生成ステップ257においてそれぞれ生成された、全ての第1の移行関数MIG1、全ての第2の移行関数MIG2、全ての第3の移行関数MIG3、及び全ての第4の移行関数MIG4を含む。第1の生成ステップ305及び関連付けられた第1の生成ステップ201、第2の生成ステップ229、第3の生成ステップ243、及び第4の生成ステップ257を実行するために、変換モジュール109は、第1のデータ型TGADの定義と、第2の生成ステップ307で生成された第2のデータ型TGBDの定義とを考慮する。
全ての第1のデータ型、全ての第3のデータ型、全ての第5のデータ型TGMA及び第1のデータ要素GAの全てのオブジェクトの全ての第7のデータ型を含む第1のデータ型TGADの定義を根拠として、全ての第2のデータ型、全ての第4のデータ型、全ての第6のデータ型TGMB及び第2のデータ要素GBの全てのオブジェクトの全ての第8のデータ型を含む第2のデータ型TGBDの定義を考慮して、第1の生成ステップ201において、第1の移行関数MIG1は、変換モジュール109によって生成され、第2の生成ステップ229において、第2の移行関数MIG2は、生成され、第3の生成ステップ243において、第3の移行関数MIG3は、生成され、第4の生成ステップ257において、第4の移行関数MIG4は、生成される。代替的に、変換モジュール109は、第2の制御プログラムBのソースコードQBから直接、移行関数を生成するための情報を抽出することができる。第1の移行関数MIG1、第2の移行関数MIG2の全て、第3の移行関数MIG3の全て、及び第4の移行関数MIG4の全てに加えて、第1の生成ステップ305において変換モジュール109によって生成された移行コードMABは、第1のデータ要素GAの対応するオブジェクトを第2のデータ要素GBの対応するオブジェクトに移行するための個々の第1の移行関数MIG1、第2の移行関数MIG2、第3の移行関数MIG3、及び第4の移行関数MIG4にアクセスして実行する方法に関する実行命令を含む。
図7は、一実施形態による自動化システム100の制御プログラムAのデータ要素の移行プロセスの模式図を示す。
図7は、第1のデータ要素GAから第2のデータ要素GBへの移行プロセスを示しており、第1のデータ要素GAは、第1のデータサブ要素GA1を含み、第2のデータ要素GBは、第2のデータサブ要素GB1を含む。図示されている移行プロセスは、上記の生成ステップにおいて移行関数を生成することと、対応する移行関数を適用することによって移行されるオブジェクトのマッピングを実行することとを含む。
第1に、変換モジュール109は、第1の生成ステップ201において、第1の移行関数MIG1を生成し、第2の生成ステップ229において、第2の移行関数MIG2を生成し、第3の生成ステップ243において、第3の移行関数MIG3を生成し、第4の生成ステップ257において、第4の移行関数MIG4を生成する。移行関数は、移行コードMABの一部である。
第1の移行関数MIG1は、第1のデータ要素GAを第2のデータ要素GBにマップするために具体化される。第2の移行関数MIG2は、第1のデータサブ要素GA1を第2のデータサブ要素GB1にマップするように構成される。図示された実施形態は、第1のデータ要素GAを第2のデータ要素GBにマッピングし、第1のデータサブ要素GA1を第2のデータサブ要素GB1にマッピングすることに限定される。更なる第1の構成要素MA、第2の構成要素MB、第1の要素、及び第2の要素は、示されていない。第1のデータサブ要素GA1が第1の構成要素MA又は第1の要素を持たない場合、又は第2のデータサブ要素GB1が第2の構成要素MB又は第2の要素を持たない場合、第3の移行関数MIG3及び第4の移行関数MIG4は、生成されない。
移行を実行するために、アクセスされた第1の移行関数MIG1は、第1の読み出しステップ217において、第1のメモリ領域SPA内の第1のデータ要素GAの値を読み出す。ここで、第1のデータ要素GAの第1のデータ型を認識している第1の移行関数MIG1は、第1のデータ要素GAの第1のデータサブ要素GA1を識別する。識別は、第1の移行関数MIG1が所与のアドレスGAからGA1のアドレスを導出することを含むことができる。第1の移行関数MIG1は更に、第2のデータ要素GBの第2のデータ型を認識し、第2のデータ要素GBの第2のデータサブ要素GB1を識別する。更に、第1の移行関数MIG1は、第1のデータ要素GAのメモリ位置PGAと、第1のメモリ領域SPA内の第1のデータサブ要素GA1のメモリ位置PGA1とを知っている。代替的に、第1の移行関数MIG1がアクセスされるとき、第1のデータ要素GAのメモリ位置PGA、及び第1のメモリ領域SPA内の第1のデータサブ要素GA1のメモリ位置PGA1、及び/又は第2のデータ要素GBのメモリ位置PGB、及び第2のメモリ領域SPB内の第2のデータサブ要素GB1のメモリ位置PGB1は、第1の移行関数MIG1に転送される。代替的に、第1のデータ要素GAのメモリ位置PGAと第2のデータ要素GBのメモリ位置PGBに基づいて、第1の移行関数MIG1は、第1のデータサブ要素GA1のメモリ位置PGA1と第2のデータサブ要素GB1のメモリ位置PGB1を導出することができる。更に、第1の移行関数MIG1は、第2のデータ要素GBのメモリ位置PGBと、第2のメモリ領域SPBにおける第2のデータサブ要素GB1のメモリ位置PGB1とを知っている。
続いて、第1の移行関数MIG1は、第1の部分移行ステップにおいて、第1のデータサブ要素GA1を第2のデータサブ要素GB1にマッピングするための第2の移行関数MIG2にアクセスする。更に、第1の移行関数MIG1は、第1のメモリ領域SPA内の第1のデータサブ要素GA1のメモリ位置PGA1と、第2のメモリ領域SPB内の第1のデータサブ要素GB1のメモリ位置PGB1を第2の移行関数MIG2に渡す。
その後、第2の読み出しステップ233において、第2の移行関数MIG2は、第1のメモリ領域SPA内の第1のデータサブ要素GA1の位置PGA1で、第1のデータサブ要素GA1の値を読み出す。続いて、第2の変換ステップ235(図7には図示せず)において、第2の移行関数MIG2は、第1のデータサブ要素GA1の読み出し値を第3のデータ型から第2のデータサブ要素GB1の第4のデータ型の値に変換する。
以下において、第2の移行関数MIG2は、第2の書き込みステップ237において、第1のデータサブ要素GA1の変換された値を、第2のメモリ領域SPB内の第2のデータサブ要素GB1のメモリ位置PGB1に書き込む。従って、第1のデータサブ要素GA1の値は、第2のデータサブ要素GB1にマッピングされる。
以下において、第1の終了ステップ238において、第2の移行関数MIG2は、終了し、第1の移行関数MIG1は、実行し続ける。
以下において、第1の移行関数MIG1は、第1の書き込みステップ221において、第2のメモリ領域SPB内の第2のデータ要素GBのメモリ位置PGBに第1のデータ要素GAの値を書き込む。従って、第1のデータ要素GAの値は、第2のデータ要素GBにマッピングされ、移行処理は、完了する。本実施形態において、第1のデータ要素GAは、第1のデータサブ要素GA1のみを含み、第2のデータ要素GBは、第2のデータサブ要素GB1のみを含む。本発明による方法200は、それに限定されることを意図せず、第1のデータ要素GA及び第2のデータ要素GBの両方は、より複雑なデータ構造を有することができ、それぞれ、複数の第1のデータサブ要素GA1及び第2のデータサブ要素GB1を含むことができ、これらは、同様に、複雑なデータ構造を有することができ、一方で、複数の第1の構成要素MA及び/又は第1の要素と、複数の第2の構成要素MB及び/又は複数の第2の要素とをそれぞれ含むことができる。
方法200は、再帰的に継続するが、これは、明確にするために図7には示されていない。複数の第1のデータサブ要素GA1及び第2のデータサブ要素GB1を考慮すると、第1の移行関数MIG1によって第2の移行関数MIG1は、連続して複数回アクセスされる。代替的に、第2の移行関数MIG2は、続けて複数回アクセスされる。次に、第2の移行関数は、第3の移行関数MIG3及び/又は第4の移行関数MIG4に、場合によっては複数回アクセスする。第2の移行関数MIG2は、第3の移行関数MIG3及び/又は第4の移行関数MIG4が全て完了するまで実行される。第1の移行関数MIG1は、全ての第2の移行関数MIG2が完了するまで実行される。
図8は、更なる実施形態による自動化システム100の制御プログラムAのデータ要素の移行プロセスの模式図を示す。
図8は、移行プロセスの更なる実施形態を示す。図7の実施形態から逸脱すると、図8の第1のデータ要素GAは、第1のデータサブ要素GA1と、第1のデータサブ要素GA11を含み、第1のデータサブ要素GA1は、複合型であり、3つの第1の構成要素MAを含む。更なる第1のデータサブ要素GA11は、異なる第3のデータ型であり、これは、以下の説明において何の役割も果たさず、従って、無視される。
第2のデータサブ要素GBは、同様に、第2のデータサブ要素GB1及び更なる第2のデータサブ要素GB11を含み、そのうちの第2のデータサブ要素GB1は同様に、複合型であり、3つの第2の構成要素MBを含む。更なる第2のデータサブ要素GB11は、更に異なる、第4のデータ型であり、これは、更なる説明において役割を果たさず、従って、無視される。
第1のデータサブ要素GA1と第2のデータサブ要素GB1は、第1の関係R1を介して互いに関連づけられる。更なる第1のデータサブ要素GA11は、関係を介して、第2のデータサブ要素GB1及び更なる第2のデータサブ要素GB11に関連付けられていない。同じことが、第1のデータサブ要素GA1及び更なる第1のデータサブ要素GA11のいずれにも関連付けられていない、更なる第2のデータサブ要素GB11にも適用される。
第1のデータサブ要素GA1の2つの第1の構成要素MAは、第2の関係R2を介して第2のデータサブ構成要素GB1の2つの第2の構成要素MBと関連付けられる。第1のデータサブ要素GA1の第1の構成要素MAは、第2のデータサブ要素GB1の第2の構成要素MBに関連付けられていない。同じことは、更に第1のデータサブ要素GA1の第1の構成要素MAのいずれとも関連付けられていない第2のデータサブ要素GB1の第2の構成要素MBに適用される。
第1のデータサブ要素GA1を、第1の関係R1を介してこの第1のデータサブ要素GA1に関連する第2のデータサブ要素GB1にマッピングするために、第2の移行関数MIG2は、R2を介して関連付けられた第1の構成要素MA及び第2の構成要素MBの各ペアに対して第3の移行関数MIG3にアクセスし、各第1の構成要素MA及び第2の構成要素MBのメモリアドレスは、渡される。以前に、第2の移行関数MIG2は、図7について説明したように、第1の移行関数MIG1によってアクセスされており、第1のデータサブ要素GA1及び第2のデータサブ要素GB1の対応するメモリ位置は、第2の移行関数MIG2に転送されていたが、これは明確にするために図8には示されていない。
第2の移行関数MIG2は、第1のデータサブ要素GA1の第1の構成要素MAのデータ型と、第2のデータサブ要素GB1の第2の構成要素MAのデータ型との知識を用いて生成された。結果として、第2の部分移行ステップ245において、第1のデータサブ要素GA1の第1の構成要素MAのデータ型と、第2のデータサブ要素GB1の第2の構成要素MAのデータ型との知識を用いて、第1のデータサブ要素GA1の第1の構成要素MAを第2のデータサブ要素GB1の第1の第2の構成要素MBにマッピングするための対応する第3の移行関数MIG3にアクセスする。第3の移行関数MIG3は、最初に、第1の構成要素MAを第2の構成要素MBに、例えば左の第1の構成要素MAを左の第2の構成要素MBにマッピングし、最初にその上で終了する。第1の構成要素MA及び第2の構成要素MBがそれぞれ同じデータ型である場合、第3の移行関数MIG2は、再びアクセスされ、右側の第1の構成要素MAが中央の第2の構成要素MBにマッピングされる。その後、第3の移行関数MIG3は、第2の終了ステップ252において終了し、第2の移行関数MIG2は、実行を継続する。第1の構成要素MAと第2の構成要素MBがそれぞれ同じデータ型でない場合、2つの異なる第3の移行関数にアクセスし、第1の構成要素MAを第2の構成要素MBにマッピングする。
第3の移行関数MIG3は、第2の移行関数MIG2から、第1のメモリ領域SPA内の左の第1の構成要素MAのメモリ位置と、第2のメモリ領域SPB内の左の第2の構成要素MBのメモリ位置を受信する。第2の関係R2を介して第2のデータサブ要素GB1の左の2つの第2の構成要素MBに関連する左の第1の構成要素MAのみが、第3の移行関数MIG3によってマッピングされる。その後、第3の移行関数MIG3は、終了し、第2の移行関数MIG2によって再びアクセスされ、右の第1の構成要素MAを中央の第2の構成要素MBにマッピングする。この目的のために、第3の移行関数MIG3は、第1のメモリ領域SPA内の右の第1の構成要素MAのメモリ位置と、第2のメモリ領域SPB内の中央の第2の構成要素MBのメモリ位置とを、第2の移行関数MIG2から受信する。第3の移行関数MIG3のこのバージョンにおいて、右側の第1の構成要素MAのみは、マッピングされる。
マッピングのために、いずれの場合において、第3の移行関数MIG3は、第3の読み出しステップ247において、第1のデータサブ要素GA1の第1の構成要素MAの値をそれぞれ読み出す。第3の変換ステップ249(図8には示されていない)において、第3の移行関数は、第1の構成要素MAの読み出し値を、第2のデータサブ要素GB1の第2の構成要素MBの第6のデータ型に変換する。第3の書き込みステップ251において、第3の移行関数MIG3は、変換された値を第2のメモリ領域SPB内の第2の構成要素MBの位置に書き込む。これは、第1構成要素MAの値を第2構成要素MBにマッピングする。
中央の第1の構成要素MAは、第2の関係R2を介して第2のデータサブ構成要素GB1の第2の構成要素MBに関連付けられておらず、第3の移行関数MIG3を介して第2のデータサブ構成要素GB1にマッピングされていない。従って、中央の第1の構成要素MAの情報は、第2のデータサブ要素GBに転送することができない。
2つの第1の構成要素MAを2つの第2の構成要素MBにマッピングした後、第3の移行関数MIG3は、第2の終了ステップ252において終了され、第2の移行関数MIG2は、引き続き実行される。更なる第1の構成要素MAが更なる第2の構成要素MBにマッピングされる、又は更なる第1の構成要素が更なる第2の構成要素にマッピングされる場合、第2の移行関数MIG2は、これを実行し、更なる第3の移行関数MIG3及び/又は第4の移行関数MIG4にアクセスする。更なる構成要素又は要素が移行されるべきでない場合、第2の移行関数は、第1の終了ステップ238において終了される。これは、第1のデータサブ要素GA1の値が第2のデータサブ要素GB1にマッピングする。
更に第1のデータサブ要素GA11は、第1の関係R1を介して第2のデータサブ要素GB1、GB11のいずれにも関連付けられておらず、データ移行において第2のデータサブ要素GB1、GB11にマッピングされない。従って、更なる第1のデータサブ要素GA11の情報は、第2のデータ要素GBに転送されなくてもよい。
第1のデータサブ要素GA1のいずれにも関連付けられていない、更なる第2のデータサブ要素GB11と、第1の構成要素MAのいずれにも関連付けられていない右の第2の構成要素MBとは、初期化ステップ269において初期化され、更なる第2のデータサブ要素GB11の値と第2の構成要素MBの値とは、初期値にセットされる。代替的に、移行関数を実行する前に、全ての第2のデータ要素GB1、第2の構成要素MB及び/又は第2のデータ要素GBの第2の構成要素は、初期化されてよい。移行関数の移行又は実行は、第2のデータサブ要素GB1、第2の構成要素MB及び/又は第2のデータ要素GBの第2の要素の初期値を、対応する第1のデータサブ要素GA1、第1の構成要素MA及び/又は第1のデータ要素GAの第1の要素の値で上書きする。
これは、第1のデータサブ要素GA1から第2のデータサブ要素GB1への移行を完了する。第2の移行関数と第3の移行関数を複合型である第1のデータサブ要素GA1に適用することにより、第1のデータ要素GAの値で表現される第1の制御プログラムAのグローバル状態の一部を第2のデータ要素GBにマッピングすることができた。第2のデータ要素GBに対応しない第1のデータ要素GAのオブジェクト、特に、第1の関係R1を介して、任意の第2のデータサブ要素GB1にも関連しない第1のデータサブ要素GA11を表現し、第2の関係R2を介して、任意の第2の構成要素MBにも関連しない表現された中央の第1の構成要素MAを、移行プロセスにおいてマッピングすることができなかった。
移行プロセスを完了した後、第2のデータ要素GBは、対応する移行関数を適用することによってマッピングすることができる第1の要素のオブジェクトの値を含み、その値が初期値を含むオブジェクト、特に、第1の関係R1を介して、任意の第1のデータサブ要素GA1にも関連付けられていない第2のデータサブ要素GB11と、第2の関係R2を介して、任意の第1の構成要素MAにも関連付けられていない右の第2の構成要素MBとを含む。
第1の制御プログラムAを根拠として実行される最後の制御サイクルの時点で第1のデータ要素GAの値によって表現される、第1の制御プログラムAと自動化システム100のグローバル状態を完全に移行するために必要とされ得る更なるステップは、図8に記載されていない。フィールド型の第1のデータサブ要素GA1の同じフィールド型の第2のデータサブ要素GB1へのデータ移行は、図8に記載されている移行プロセスと同様に実行される。上記の複合型の移行との相違は、フィールド型のデータサブ要素GA1の第1の要素が全て同じデータ型を有するという事実から生じ、このことは、そのフィールドタイプのデータサブ要素GA1の第1の要素にも適用する。結果として、第4の移行関数MIG4のみが必要とされ、これは、ループ内で、又はネスティングされたループ内で実行され、第1の要素を第2の要素に連続的に個別にマッピングする。
〔参照番号の一覧〕

100 自動化システム
101 コントローラ
103 マスター加入者
105 スレーブ加入者
107 バスシステム
109 コンパイラモジュール

A 第1の制御プログラム
Pa 第1の実行可能コード
MAB 移行コード
SPS メモリ
SPA 第1のメモリ領域
GA 第1のデータ要素
PGA 第1のデータ要素のメモリ位置
TGAD 第1のデータ型の定義
GA1 第1のデータサブ要素
GA11 更なる第1のデータサブ要素
PGA1 第1のデータサブ要素のメモリ位置
MA 第1の構成要素
PMA 第1の構成要素のメモリ位置
B 第2の制御プログラム
QB 第2の制御プログラムのソーステキスト
PB 第2の実行可能コード
SPB 第1のメモリ領域
GB 第2のデータ要素
PGB 第2のデータ要素のメモリ位置
TGBD 第2のデータ型の定義
GB1 第2のデータサブ要素
GB11 更なる第2のデータサブ要素
PGB1 第2のデータサブ要素のメモリ位置
MB 第2の構成要素
PMB 第2の構成要素のメモリ位置
R1 第1の関係
R2 第2の関係

MIG1 第1の移行関数
MIG2 第2の移行関数
MIG3 第3の移行関数
MIG4 第4の移行関数

200 制御プログラムの更新のための方法
201 第1の生成ステップ
202 交換ステップ
203 中断ステップ
204 第1の読み出し/書き込みステップ
205 第1の決定ステップ
206 第2の読み出し/書き込みステップ
207 移行ステップ
209 第1の検証ステップ
211 第1の制御ステップ
213 第2の制御ステップ
215 第2の検証ステップ
217 第1の読み出しステップ
219 第1の変換ステップ
221 第1の書き込みステップ
223 第1の識別ステップ
225 第2の識別ステップ
227 第3の識別ステップ
229 第2の生成ステップ
231 第1の部分移行ステップ
233 第2の読み出しステップ
235 第2の変換ステップ
237 第2の書き込みステップ
238 第1の終了ステップ
239 第4の識別ステップ
241 第5の識別ステップ
243 第3の生成ステップ
245 第2の部分移行ステップ
247 第3の読み出しステップ
249 第3の変換ステップ
251 第3の書き込みステップ
252 第2の終了ステップ
253 第6の識別ステップ
255 第7の識別ステップ
257 第4の生成ステップ
259 インデックス決定ステップ
261 第3の部分移行ステップ
263 第4の読み出しステップ
265 第4の変換ステップ
267 第4の書き込みステップ
268 第3のリターンステップ
269 初期化ステップ

301 コンパイルプロセス
303 変換ステップ
305 第1の生成ステップ
307 第2の生成ステップ
309 入力ステップ
311 出力ステップ

Claims (15)

  1. 自動化システム(100)の制御プログラムを、前記制御プログラムのプログラム状態のデータ移行で更新する方法(200)であって、前記自動化システム(100)のコントローラ(101)は、第1の制御プログラム(A)及び第2の制御プログラム(B)を含み、前記第1の制御プログラム(A)は、前記自動化システム(100)を制御するためにサイクリックに実行され、前記第2の制御プログラム(B)は、前記第1の制御プログラム(A)の更新であり、前記第1の制御プログラム(A)は、前記第1の制御プログラム(A)のプログラム状態を記述し、前記コントローラ(101)の第1のメモリ領域(SPA)に保存された、第1のデータ型の第1のデータ要素(GA)を含み、前記第1のデータ要素(GA)は、前記第1の制御プログラム(A)を実行するために必要とされる複数の第1のデータサブ要素(GA1)を含み、前記第2の制御プログラム(B)は、前記第2の制御プログラム(B)のプログラム状態を記述し、第2のメモリ領域(SPB)に保存された、第2のデータ型の第2のデータ要素(GB)を含み、前記第2のデータ要素(GB)は、前記第2の制御プログラム(B)を実行するために必要とされる複数の第2のデータサブ要素を含み、
    前記方法(100)は、
    初期化ステップ(269)において、前記第2のデータ要素(GB)を初期化するステップであって、初期化するステップは、前記第2のデータ要素(GB)の値を事前定義された初期の値にセットするステップを含み、前記第2のデータ要素(GB)の初期化するステップは、前記第2のデータ要素の全ての第2のデータサブ要素(GB1)を初期化するステップを含む、ステップ、
    第1の生成ステップ(201)において、前記第1のデータ要素(GA)を前記第2のデータ要素(GB)にマッピングするための第1の移行関数(MIG1)を生成するステップ、
    中断ステップ(203)において、前記第1の制御プログラム(A)の前記サイクリック実行を中断するステップ、
    第1の決定ステップ(205)において、前記第1のデータ要素(GA)の値を決定するステップであって、前記第1のデータ要素(GA)の前記決定された値は、前記中断時の前記第1の制御プログラム(A)のプログラム状態を記述する、ステップ、及び
    移行ステップ(207)において、前記第1の移行関数(MIG1)を実行することによって前記第1のデータ要素(GA)の前記値を前記第2のデータ要素(GB)にマッピングし、第1のデータサブ要素(GA1)の値を、初期の値によって初期化された第2のデータサブ要素(GB1)に書き込むステップであって、前記初期化ステップ(269)は、時間的には、前記移行ステップ(207)より前に実行される、ステップ、を含むことを特徴とする、方法(200)。
  2. 第1の検証ステップ(209)において、前記第1のデータ要素(GA)の前記値が前記第2のデータ要素(GB)に十分に正確にマッピングされ得るかどうかを検証するステップであって、前記第1のデータ要素(GA)の前記値が前記第2のデータ型で表され得る場合、前記第1のデータ要素(GA)の前記値が第2のデータ要素(GA)に十分に正確にマッピングされ得る、ステップ、
    前記第1のデータ要素(GA)の前記値が前記第2のデータ要素(GB)にマッピングされ得る場合、第1の制御ステップ(211)において、前記第2のデータ要素(GB)を考慮に入れる前記第2の制御プログラム(B)にサイクリックに実行し、且つ、前記第2の制御プログラム(B)に基づいて前記自動化システム(100)を制御するステップ、及び
    前記第1のデータ要素(GA)の前記値が前記第2のデータ要素(GB)にマップされることができない場合、第2の制御ステップ(213)において、前記第1のデータ要素(GA)を考慮に入れ、前記第1の制御プログラム(A)の前記サイクリック実行を継続し、前記第1の制御プログラム(A)に基づいて前記自動化システム(100)を制御するステップ、
    を更に含む、請求項1に記載の方法(200)。
  3. 前記移行ステップ(207)における前記第1のデータ要素(GA)の前記値を前記第2のデータ要素(GB)にマッピングすることが所定の期間を超える場合、前記第1のデータ要素(GA)の前記値は、前記第2のデータ要素(GB)に更に十分に正確にマッピングすることができない、請求項1又は2に記載の方法(200)。
  4. 第2の検証ステップ(215)において、前記第1の移行関数(MIG1)が前記第1の生成ステップ(201)において生成され得るかどうかを検証するステップ、及び
    前記第1の移行関数(MIG1)が前記第1の生成ステップ(201)において生成されることができない場合、第2の制御ステップ(213)において、前記第1のデータ要素(GA)を考慮して前記第1の制御プログラム(A)の前記サイクリック実行を継続し、前記第1の制御プログラム(A)に基づいて前記自動化システム(100)を制御するステップ、
    を更に含む、請求項1、2、又は3に記載の方法(200)。
  5. 前記第1の移行関数(MIG1)は、前記第1のメモリ領域(SPA)内の前記第1のデータ型のデータを読み出し、前記第1のデータ型の読み出しデータを前記第2のデータ型のデータに変換し、且つ前記第2のデータ型に変換されたデータを前記第2のメモリ領域(SPB)に保存するように構成され、
    前記移行ステップ(207)は、
    第1の読み出しステップ(217)において、前記第1の移行関数(MIG1)を使用して、前記第1のメモリ領域(SPA)内の前記第1のデータ要素(GA)のメモリ位置(PGA)にある前記第1のデータ要素(GA)の前記値を読み出すステップ、
    第1の変換ステップ(219)において、前記移行関数(MIG1)を使用して、前記第1のデータ要素(GA)の前記値を前記第2のデータ型の値に変換するステップ、及び 第1の書き込みステップ(221)において、前記第1の移行関数(MIG1)を使用して、前記第2のメモリ領域(SPB)内の前記第2のデータ要素(GB)のメモリ位置(PGB)に、前記第2のデータ型に変換された前記第1のデータ要素(GA)の前記値を書き込むステップ、を含む、請求項1~4の何れか1項に記載の方法(200)。
  6. 前記第1の生成ステップ(201)は、
    第1の識別ステップ(223)において、前記第1のデータ要素(GA)の前記データ型を、前記第1のデータ型として識別し、且つ前記第2のデータ要素(GB)の前記データ型を前記第2のデータ型として識別するステップであって、前記識別された第1のデータ型及び前記識別された第2のデータ型に基づいて前記第1の移行関数(MIG1)が生成される、ステップ、
    を更に含む、請求項1~5の何れか1項に記載の方法(200)。
  7. 前記第1の生成ステップ(201)は、
    前記第1のデータ要素(GA)の前記第1のデータ型及び前記第2のデータ要素(GB)の前記第2のデータ型が、それぞれ複合型である場合、及び前記第1のデータ要素(GA)が、第3のデータ型の少なくとも1つの第1のデータサブ要素(GA1)を含み、且つ前記第2のデータ要素が、第4のデータ型の少なくとも1つの第2のデータサブ要素(GB1)を含む場合、
    第2の識別ステップ(225)において、前記第1のデータサブ要素(GA1)の前記データ型を前記第3のデータ型として、且つ前記第2のデータサブ要素(GB1)の前記データ型を前記第4のデータ型として識別するステップ、
    第2の生成ステップ(229)において、前記識別された第3のデータ型と前記識別された第4のデータ型を根拠として、前記第1のデータサブ要素(GA1)を前記第2のデータサブ要素(GB1)にマッピングするための第2の移行関数(MIG2)を生成するステップであって、前記第2の移行関数(MIG2)は、前記第1のメモリ領域(SPA)内の前記第3のデータ型のデータ要素を読み出し、前記第3のデータ型の読み出されたデータを前記第4のデータ型に変換し、且つ前記第2のメモリ領域(SPB)内に前記第4のデータ型に変換されたデータを保存するように構成されている、ステップ、
    を更に含む、請求項1~6の何れか1項に記載の方法(200)。
  8. 前記移行ステップ(207)は、
    第1の部分移行ステップ(231)において、前記第1の移行関数(MIG1)を介して前記第2の移行関数(MIG2)に実行するステップ、及び前記第2の移行関数(MIG2)を実行し、前記第1のデータサブ要素(GA1)の値を前記第2のデータサブ要素(GB1)にマッピングするステップであって、前記第1の部分移行ステップ(231)は、
    第2の読み出しステップ(233)において、前記第2の移行関数(MIG2)を使用して、前記第1のメモリ領域(SPA)内の前記第1のデータサブ要素(GA1)のメモリ位置(PGA1)で前記第1のデータサブ要素(GA1)の値を読み出すステップ、
    第2の変換ステップ(235)において、前記第2の移行関数(MIG2)を使用して、前記第1のデータサブ要素(GA1)の前記値を、前記第4のデータ型に変換するステップ、及び
    第2の書き込みステップ(237)において、前記第2の移行関数(MIG2)を使用して、前記第4のデータ型に変換された前記第1のデータサブ要素(GA1)の前記値を、前記第2のメモリ領域(SPB)内の前記第2のデータサブ要素(GB)のメモリ位置(PGB1)に書き込むステップ、
    を含む、請求項7に記載の方法。
  9. 前記第1の生成ステップ(201)は、
    前記第1のデータサブ要素(GA1)の前記第3のデータ型及び前記第2のデータサブ要素(GB1)の前記第4のデータ型は、複合型である場合、及び
    前記第1のデータサブ要素(GA1)は、第5のデータ型の少なくとも第1の構成要素(MA)を含み、前記第2のデータサブ要素(GB1)は、第6のデータ型の少なくとも第2の構成要素(MB)を含む場合、
    第4の識別ステップ(239)において、前記第1の構成要素(MA)の前記データ型を前記第5のデータ型として、且つ前記第2の構成要素(MB)のデータ型を前記第6のデータ型として識別するステップ、及び
    第3の生成ステップ(243)において、前記識別された第5のデータ型及び第6のデータ型に基づいて、前記第1の構成要素(MA)を前記第2の構成要素(MB)にマッピングするための第3の移行関数(MIG3)を生成するステップであって、前記第3の移行関数(MIG3)は、前記第1のメモリ領域(SPA)内の前記第5のデータ型のデータを読み出し、読み出されたデータを第6のデータ型に変換し、且つ第2のメモリ領域(SPB)に前記第6のデータ型に変換されたデータを保存するように構成されている、ステップ、
    を更に含む、請求項7又は8に記載の方法。
  10. 移行ステップ(207)は、
    2の部分移行ステップ(245)において、前記第2の移行関数(MIG2)を介して、前記第3の移行関数(MIG3)に実行し、且つ前記第3の移行関数(MIG3)を実行するステップであって、前記第2の部分移行ステップ(245)は、
    第3の読み出しステップ(247)において、前記第3の移行関数(MIG3)を使用して、前記第1のメモリ領域(SPA)内の前記第1の構成要素(MA)のメモリ位置(PMA)での前記第1の構成要素(MA)の値を読み出すステップ、
    第3の変換ステップ(249)において、前記第3の移行関数(MIG3)を使用して、前記第1の構成要素(MA)の前記値を、前記第6のデータ型に変換するステップ、及び
    第3の書き込みステップ(251)において、前記第3の移行関数(MIG3)を使用して、前記第6のデータ型に変換された前記第1の構成要素(MA)の前記値を、前記第2のメモリ領域(SPB)内の前記第2の構成要素(MB)のメモリ位置(PMB)に書き込むステップ、を含むこと、
    を含む、請求項9に記載の方法。
  11. 前記第1の生成ステップ(201)は、
    前記第3のデータ型及び前記第4のデータ型は、フィールド型である場合、及び
    前記第1のデータサブ要素(GA1)及び前記第2のデータサブ要素(GB1)は、同一の数の次元を含む場合であって、少なくとも1つの次元内の前記第1のデータサブ要素(GA1)が、第1のインデックス範囲[U0,...,UM]に従ってインデックス付けされた第7のデータ型の第1の要素を含み、且つ少なくとも1つの次元の前記第2のデータサブ要素(GB1)が、第2のインデックス範囲[X0,...,XN]に従ってインデックス付けされた第8のデータ型の第2の要素を含む、場合、及び
    少なくとも1つの次元のために、前記第1のインデックス範囲[U0,...,UM]と前記第2のインデックス範囲[X0,...,XN]とが等しい場合、
    第6の識別ステップ(253)において、前記第1のインデックス範囲[U0,...,UM]に従ってインデックス付けされた各第1の要素の前記データ型を、前記第7のデータ型として、且つ前記第2のインデックス範囲[X0,...,XN]に従ってインデックス付けされた各第2の要素の前記データ型を、前記第8のデータ型として、識別するステップ、
    第4の生成ステップ(257)において、前記識別された第7のデータ型及び第8のデータ型に基づいて、第1の要素を第2の要素にマッピングするための第4の移行関数を生成するステップであって、前記第4の移行関数は、前記第1のメモリ領域(SPA)内の前記第7のデータ型のデータを読み出し、読み出したデータを前記第8のデータ型の値に変換し、且つ前記第2のメモリ領域(SPB)に、変換されたデータを保存するように構成された、ステップ、
    を更に含む、請求項7~10のいずれか1項に記載の方法。
  12. 前記第1の生成ステップ(201)は、
    第1のインデックス範囲[U0,...,UM]と第2のインデックス範囲[X0,...,XN]とが等しくない場合、インデックス決定ステップ(259)において、R=max(X0,U0)及びS=min(XN、UM)を有する前記第1のデータサブ要素(GA1)及び前記第2のデータサブ要素(GB1)の前記インデックス範囲における間隔[R、S]を決定するステップであって、Rは、前記2つの値X0及びU0の最大値に対応し、Sは、前記2つの値XN及びUMの最小値に対応する、ステップ、
    第6の識別ステップ(253)において、前記間隔[R、S]又は前記第1のインデックス範囲[U0,...,UM]に従ってインデックス付けされた各第1の要素の前記データ型を、前記第7のデータ型として、間隔[R、S]又は前記第2のインデックス範囲[X0,...,XN]に従ってインデックス付けされた各第2の要素の前記データ型を、前記第8のデータ型として識別するステップ、及び
    第4の生成ステップ(257)において、前記識別された第7のデータ型及び前記第8のデータ型に基づいて第1の要素を第2の要素にマッピングするための第4の移行関数を生成するステップであって、前記第4の移行関数は、前記第1のメモリ領域(SPA)内の前記第7のデータ型のデータを読み出し、前記第8のデータ型に読み出したデータを変換し、且つ前記第2のメモリ領域(SPB)内に第8のデータ型に変換されたデータを保存するように設定される、ステップ、
    を更に含む、請求項11に記載の方法。
  13. 前記第1の部分移行ステップ(231)は、
    第3の部分移行ステップ(261)において、第2の移行関数(MIG2)を介して、前記第4の移行関数を実行するステップ、及び前記第4の移行関数(MIG4)を実行し、前記第1の要素を前記第2の要素にマッピングするステップを含み、前記第3の部分移行ステップ(261)は、
    第4の読み出しステップ(263)において、前記第4の移行関数によって、前記第1のメモリ領域(SPA)内の前記第1の要素のメモリ位置にある第1の要素の値を読み出すステップ、
    第4の変換ステップ(265)において、前記第4の移行関数を介して、前記第1の要素の前記値を前記第8のデータ型に変換するステップ、及び
    第4の書き込みステップ(267)において、前記第4の移行関数を介して、前記第2のメモリ領域(SPB)内の前記第2の要素のメモリ位置に、前記第8のデータ型に変換された前記第1の要素の前記値を書き込むステップ、
    を含む、請求項8を引用する11又は8を引用する12に記載の方法。
  14. 前記第1のデータサブ要素(GA1)の値が、第2のデータサブ要素(GB1)に十分に正確にマッピング可能でない場合、及び/又は第1の構成要素(MA)の値が、第2の構成要素(MB)に十分に正確にマッピング可能でない場合、及び/又は第1の要素の値が、第2の要素に十分に正確にマッピング可能でない場合、前記第1のデータ要素(GA)の前記値は、前記第2のデータ型の値に更に十分に正確にマッピング可能ではなく、前記第1の検証ステップ(209)は、
    第1のデータサブ要素(GA1)の値が第2のデータサブ要素(GB1)に十分に正確にマッピングされ得るかどうかを検証するステップ、第1の構成要素(MA)の値が第2の構成要素(MB)に十分に正確にマッピングされ得るかどうかを検証するステップ、及び第1の要素の値が、十分に正確に第2の要素にマッピングされ得ることを検証するステップ、
    を更に含む、請求項2、および2を引用する3~13のいずれか1項に記載の方法(200)。
  15. 前記コントローラは、制御プログラムを変換するための変換モジュール(109)を更に含み、前記第1の生成ステップ(201)は、前記変換モジュール(109)によって実行される、請求項1~14のいずれか1項に記載の方法。
JP2022535845A 2019-12-13 2020-12-11 制御プログラムのプログラム状態のデータ移行で自動化システムの制御プログラムを更新するための方法 Active JP7270112B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102019134373.9A DE102019134373A1 (de) 2019-12-13 2019-12-13 Verfahren zum Aktualisieren eines Steuerprogramms eines Automatisierungssystems mit Datenmigration eines Programmzustands des Steuerprogramms
DE102019134373.9 2019-12-13
PCT/EP2020/085799 WO2021116429A1 (de) 2019-12-13 2020-12-11 Verfahren zum aktualisieren eines steuerprogramms eines automatisierungssystems mit datenmigration eines programmzustands des steuerprogramms

Publications (2)

Publication Number Publication Date
JP2022551342A JP2022551342A (ja) 2022-12-08
JP7270112B2 true JP7270112B2 (ja) 2023-05-09

Family

ID=73834538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022535845A Active JP7270112B2 (ja) 2019-12-13 2020-12-11 制御プログラムのプログラム状態のデータ移行で自動化システムの制御プログラムを更新するための方法

Country Status (6)

Country Link
US (1) US20220276616A1 (ja)
EP (1) EP4055473B1 (ja)
JP (1) JP7270112B2 (ja)
CN (1) CN114787769B (ja)
DE (1) DE102019134373A1 (ja)
WO (1) WO2021116429A1 (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 (3)

* 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
US20160335025A1 (en) * 2015-05-11 2016-11-17 Kaminario Technologies Ltd. Data migration system and method thereof
US10908886B2 (en) * 2016-07-12 2021-02-02 Oracle International Corporation Accessing a migrated member in an updated type

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
US20220276616A1 (en) 2022-09-01
EP4055473C0 (de) 2023-07-26
JP2022551342A (ja) 2022-12-08
CN114787769A (zh) 2022-07-22
DE102019134373A1 (de) 2021-06-17
CN114787769B (zh) 2023-08-08
WO2021116429A1 (de) 2021-06-17
EP4055473A1 (de) 2022-09-14
EP4055473B1 (de) 2023-07-26

Similar Documents

Publication Publication Date Title
US5805899A (en) Method and apparatus for internal versioning of objects using a mapfile
US6212578B1 (en) Method and apparatus for managing dependencies in a distributed computing environment for ensuring the safety of remote procedure calls
TWI453671B (zh) 用於程式碼轉換期間之本機碼和目標碼的組合執行之方法與裝置
US8464214B2 (en) Apparatus, method and system for building software by composition
EP0390900B1 (en) Generic code sharing arrangement for digital data processing system
US8776035B2 (en) Providing performance tuned versions of compiled code to a CPU in a system of heterogeneous cores
JPH06266683A (ja) 並列処理装置
EP0509623A2 (en) Program processing system and method
US7412710B2 (en) System, method, and medium for efficiently obtaining the addresses of thread-local variables
KR100301274B1 (ko) 컴퓨터시스템및프로그램제품전송방법
US7337435B2 (en) Efficient configuration data migration technique
CN112882718B (zh) 编译处理方法、装置、设备及存储介质
CN114090013A (zh) 确定可执行代码文件的变更集的方法及装置
CN108694049B (zh) 一种更新软件的方法和设备
EP3380899B1 (en) Program randomization for cyber-attack resilient control in programmable logic controllers
JP7270112B2 (ja) 制御プログラムのプログラム状態のデータ移行で自動化システムの制御プログラムを更新するための方法
Resmerita et al. Applying real-time programming to legacy embedded control software
US20120005460A1 (en) Instruction execution apparatus, instruction execution method, and instruction execution program
US11748078B1 (en) Generating tie code fragments for binary translation
US6496976B1 (en) Method and system for dynamic recompilation of statements of a first language embedded in a program having statements of a second language
JP7303389B2 (ja) オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程でのポインタ要素のデータ移行の方法
CN112148283B (zh) 一种跨平台的abi兼容c++组件框架的实现方法
US7024664B2 (en) Symbolic assembly language
WO2016167797A1 (en) Morphed instruction according to configuration update
US11886839B2 (en) Non-transitory computer-readable recording medium, function generation method, and information processing device

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: 20220808

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220808

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230228

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: 20230411

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230424

R150 Certificate of patent or registration of utility model

Ref document number: 7270112

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150