(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-05-15
(45)【発行日】2025-05-23
(54)【発明の名称】移行先の制御装置、制御移行方法及び制御移行プログラム
(51)【国際特許分類】
G06F 11/20 20060101AFI20250516BHJP
G05B 9/03 20060101ALI20250516BHJP
G05B 19/05 20060101ALI20250516BHJP
G06F 11/16 20060101ALI20250516BHJP
【FI】
G06F11/20 630
G05B9/03
G05B19/05 S
G06F11/16 658
(21)【出願番号】P 2024560292
(86)(22)【出願日】2023-03-24
(86)【国際出願番号】 JP2023011830
(87)【国際公開番号】W WO2024201570
(87)【国際公開日】2024-10-03
【審査請求日】2024-10-10
【早期審査対象出願】
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110002491
【氏名又は名称】弁理士法人クロスボーダー特許事務所
(72)【発明者】
【氏名】井川 昂輝
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特開2001-331201(JP,A)
【文献】特開2002-149212(JP,A)
【文献】特開2006-003985(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/20
G05B 9/03
G05B 19/05
G06F 11/16
(57)【特許請求の範囲】
【請求項1】
周期的に演算処理を実行して制御対象を制御する移行元の制御装置から、前記制御対象の制御が移行される移行先の制御装置であり、
特定周期における前記移行元の制御装置の前記演算処理に関する情報を初期同期情報として取得する初期同期部と、
前記初期同期部によって取得された前記初期同期情報に基づき、前記特定周期の次の演算周期から制御が移行される移行周期までの前記移行元の制御装置で実行される前記演算処理を実行する演算再現部と、
前記演算再現部によって実行された前記演算処理の結果を用いて、前記移行周期の後の前記演算処理を実行して、前記制御対象を制御する演算実行部と
を備える移行先の制御装置。
【請求項2】
前記演算再現部は、前記特定周期から前記移行周期までの時間である経過時間と、前記移行元の制御装置における前記演算処理の1周期にかかる時間とから、前記移行元の制御装置において前記特定周期の次の演算周期から
現在処理を実行している演算周期までに実行された又はされる前記演算処理の実行回数を推定し、前記実行回数だけ前記演算処理を実行する
請求項1に記載の移行先の制御装置。
【請求項3】
前記移行先の制御装置は、さらに、
前記特定周期の次の演算周期から前記移行周期までの前記移行元の制御装置で実行された前記演算処理に関する情報のうちの処理結果を照合するための情報である照合情報を、前記移行元の制御装置から取得する照合取得部と、
前記照合取得部によって取得された前記照合情報と、前記演算再現部によって実行された前記演算処理の結果とを照合する照合実行部と
を備える請求項1に記載の移行先の制御装置。
【請求項4】
前記移行元の制御装置は、周期的に複数の演算処理を実行して前記制御対象を制御し、
前記移行先の制御装置は、さらに、
前記複数の演算処理を移行する移行順序を、各演算処理の移行にかかる時間の合計が最短になる順序に決定する順序決定部と、
前記順序決定部によって決定された移行順序に従い、前記複数の演算処理が1つずつ移行されるように、前記初期同期部と、前記演算再現部と、前記演算実行部とを制御する移行制御部と
を備える請求項1に記載の移行先の制御装置。
【請求項5】
周期的に演算処理を実行して制御対象を制御する移行元の制御装置から、前記制御対象の制御を移行先の制御装置に移行する制御移行方法であり、
前記移行先の制御装置が、特定周期における前記移行元の制御装置の前記演算処理に関する情報を初期同期情報として取得し、
前記移行先の制御装置が、前記初期同期情報に基づき、前記特定周期の次の周期から制御が移行される移行周期までの前記移行元の制御装置で実行される前記演算処理を実行し、
前記移行先の制御装置が、前記初期同期情報に基づき実行された前記演算処理の結果を用いて、前記移行周期の後の前記演算処理を実行して、前記制御対象を制御する制御移行方法。
【請求項6】
周期的に演算処理を実行して制御対象を制御する移行元の制御装置から、前記制御対象の制御を移行先の制御装置に移行する制御移行プログラムであり、
特定周期における前記移行元の制御装置の前記演算処理に関する情報を初期同期情報として取得する初期同期処理と、
前記初期同期処理によって取得された前記初期同期情報に基づき、前記特定周期の次の周期から制御が移行される移行周期までの前記移行元の制御装置で実行される前記演算処理を実行する演算再現処理と、
前記演算再現処理によって実行された前記演算処理の結果を用いて、前記移行周期の後の前記演算処理を実行して、前記制御対象を制御する演算処理と
をコンピュータに実行させる制御移行プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御対象の制御を移行する技術に関する。
【背景技術】
【0002】
周期的な演算処理を行う制御装置と、制御対象に対し入出力制御を行う入出力装置とを、ネットワークで接続した制御システムの形態により、生産設備の制御を行うことがある。制御対象は、具体例としては、生産設備内のセンサ又はアクチュエータ等である。入出力装置による入出力制御は、制御対象からの計測値の出力、又は、制御装置の演算結果の制御対象への入力等の制御である。
【0003】
置き換え又は点検等を目的として、動作中の制御装置を、別の制御装置に交換する場合がある。この際、生産性の低下を防ぐため、制御対象である生産設備を停止せずに、制御装置を交換できることが望ましい。
これを実現するには、制御対象に影響を与えないようにしつつ、移行先となる別の制御装置の演算処理の状態を、移行元となる動作中の制御装置の演算処理の状態に同期させ移行させることができればよい。
【0004】
関連する従来技術として、多重化システムにおける復旧技術がある。
特許文献1では、現用系と待機系とのタスクの内部状態を一致させる多重系の復旧技術について記載されている。現用系は、移行元に相当する。待機系は、移行先に相当する。特許文献1では、第1手段と、第2手段とのいずれかを選択することが記載されている。第1手段は、現用系から待機系に内部状態の差分データを転送して待機系に反映する手段である。第2手段は、現用系から待機系に入力ログを転送し、待機系が入力ログに基づいて現用系の処理をリプレイする手段である。これにより、特許文献1では、多重系復旧時間の短縮化を図っている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1の技術において、状態同期のためのデータの現用系から待機系への転送時間が、タスクが実行される周期よりも常に長い場合があり得る。状態同期のためのデータは、差分データ又は入力ログである。この場合には、待機系の処理は現用系の処理に追い付くことができない。そのため、現用系と待機系のタスクの内部状態の同期が完了することがない。
本開示は、状態同期のためのデータの転送時間が、演算処理が実行される周期よりも長い場合にも、制御対象を停止させずに制御装置を交換可能にすることを目的とする。
【課題を解決するための手段】
【0007】
本開示に係る移行先の制御装置は、
周期的に演算処理を実行して制御対象を制御する移行元の制御装置から、前記制御対象の制御が移行される移行先の制御装置であり、
特定周期における前記移行元の制御装置の前記演算処理に関する情報を初期同期情報として取得する初期同期部と、
前記初期同期部によって取得された前記初期同期情報に基づき、前記特定周期の次の演算周期から制御が移行される移行周期までの前記移行元の制御装置で実行される前記演算処理を実行する演算再現部と、
前記演算再現部によって実行された前記演算処理の結果を用いて、前記移行周期の後の前記演算処理を実行して、前記制御対象を制御する演算実行部と
を備える。
【発明の効果】
【0008】
本開示では、特定周期における移行元の制御装置の演算処理に関する情報に基づき、特定周期の次の演算周期から制御が移行される移行周期までの移行元の制御装置で実行される演算処理を移行先の制御装置が実行する。
これにより、状態同期のためのデータの転送時間が、演算処理が実行される周期よりも長い場合にも、移行元の制御装置の演算処理の状態を、移行先の制御装置の演算処理の状態に移行周期において同期させることが可能になる。その結果、制御対象を停止させずに制御装置を交換可能になる。
【図面の簡単な説明】
【0009】
【
図1】実施の形態1に係る制御移行システム100の構成図。
【
図2】実施の形態1に係る移行開始前状態におけるデータフロー図。
【
図3】実施の形態1に係る移行中状態におけるデータフロー図。
【
図4】実施の形態1に係る移行中状態におけるデータフロー図。
【
図5】実施の形態1に係る移行完了後状態におけるデータフロー図。
【
図6】実施の形態1に係る移行元の制御装置10及び移行先の制御装置20のハードウェア構成図。
【
図7】実施の形態1に係る入出力装置30のハードウェア構成図。
【
図8】実施の形態1に係る移行元の制御装置10の演算実行部111の動作を示すフローチャート。
【
図9】実施の形態1に係る入出力装置30の入出力制御部31の動作を示すフローチャート。
【
図10】実施の形態1に係る移行実行部241の動作を示すフローチャート。
【
図11】実施の形態1に係る周期演算部21の動作を示すフローチャート。
【
図12】実施の形態1に係る演算再現部212の動作を示すフローチャート。
【
図13】実施の形態1に係る初期同期部242の動作を示すフローチャート。
【
図14】実施の形態1に係る移行補助部14の動作を示すフローチャート。
【
図15】実施の形態1に係る移行補助部34の動作を示すフローチャート。
【
図16】実施の形態1に係る移行中状態における演算データ部22の状態の例の説明図。
【
図17】実施の形態2に係る制御移行システム100の構成図。
【
図18】実施の形態2に係る移行実行部241の動作を示すフローチャート。
【
図19】実施の形態2に係る移行補助部14の動作を示すフローチャート。
【
図20】実施の形態2に係る照合情報転送部15の動作を示すフローチャート。
【
図21】実施の形態2に係る演算再現部212の動作を示すフローチャート。
【
図22】実施の形態2に係る照合取得部26の動作を示すフローチャート。
【
図23】実施の形態2に係る照合実行部27の動作を示すフローチャート。
【
図24】実施の形態3に係る制御移行システム100の構成図。
【
図25】実施の形態3に係る順序決定部29の動作を示すフローチャート。
【
図26】実施の形態3に係る移行順序の決定方法の具体例の説明図。
【
図27】実施の形態3に係る移行順序の決定方法の具体例の説明図。
【発明を実施するための形態】
【0010】
実施の形態1.
***構成の説明***
図1から
図5を参照して、実施の形態1に係る制御移行システム100の構成を説明する。
制御移行システム100は、移行元の制御装置10と、移行先の制御装置20と、入出力装置30とを備える。移行元の制御装置10と移行先の制御装置20と入出力装置30とは、ネットワーク91を介して接続される。入出力装置30は、制御対象40と伝送路92を介して接続される。
【0011】
続いて、制御移行システム100が有する状態を説明した上で、制御移行システム100の機能について説明する。
【0012】
**制御移行システム100が有する状態**
制御移行システム100は、移行開始前状態と、移行中状態と、移行完了後状態との3つの状態を有する。
移行開始前状態は、移行元の制御装置10が入出力装置30とネットワーク91を介して協調動作し、制御対象40を制御する状態である。
図2は、移行開始前状態のデータフローを示す。
移行中状態は、移行元の制御装置10における同期が必要な情報を、移行先の制御装置20に同期させ、入出力装置30が協調動作する制御装置を、移行元の制御装置10から移行先の制御装置20に切り替えている状態である。移行中状態では、移行開始前状態における移行元の制御装置10が入出力装置30とネットワーク91を介して協調動作し、制御対象40を制御する状態が継続されている。移行中状態の終盤に、移行開始前状態における移行元の制御装置10が入出力装置30とネットワーク91を介して協調動作し、制御対象40を制御する状態が継続されている状態から、移行先の制御装置20が入出力装置30とネットワーク91を介して協調動作し、制御対象40を制御する状態に切り替わる。
図3及び
図4は、移行中状態のデータフローを示す
移行完了後状態は、移行先の制御装置20が入出力装置30とネットワーク91を介して協調動作し、制御対象40を制御する状態である。
図5は、移行完了後状態のデータフローを示す。
【0013】
移行中状態は、初期同期中状態と、再現演算中状態と、切替制御中状態とに分類される。
初期同期中状態は、後述する移行実行部241の処理開始から、後述する初期同期部242の処理終了までの状態である。再現演算中状態は、初期同期中状態が完了してから、後述する演算再現部212の処理終了までの状態である。切替制御中状態は、再現演算中状態が完了してから、後述する移行実行部241の処理終了までの状態である。
【0014】
**制御移行システム100の機能**
制御移行システム100が備える移行元の制御装置10と移行先の制御装置20と入出力装置30との各装置の機能について説明する。
なお、各装置には、以下に説明する機能構成要素に加えて、装置内の搭載する機能の実行を管理するためのオペレーティングシステム又はハイパーバイザを含んでもよい。
【0015】
同一装置内における機能間の通知又は状態確認の手段は任意である。例えば、同一装置内における機能間の通知又は状態確認は、共有メモリ、又は、オペレーティングシステムが提供するタスク間通信機能等を用いて実現される。
【0016】
各装置内の機能は、以下の条件1及び条件2を満たすように、実行タイミング又はプロセッサ内のコア割当が制御される。条件1は、後述する演算実行部111(又は演算実行部211)が演算周期T_cyc[ms]内に計測値情報621(又は計測値情報624)を1回受信できるという条件である。条件2は、入出力制御部31が演算周期T_cyc[ms]内に演算結果情報622(又は演算結果情報627)を1回受信できるという条件である。
【0017】
*移行元の制御装置10の機能*
移行元の制御装置10は、機能構成要素として、周期演算部11と、演算データ部12と、通信制御部13と、移行補助部14とを備える。
【0018】
周期演算部11は、演算周期T_cyc[ms]で1実行単位分の演算処理を行う。演算処理は、具体例としては、周期ハンドラ又はオペレーティングシステムによって制御されるタスク、又はタスクの集合である。また、演算処理が仮想マシンで動作する処理の場合には、周期演算部11は仮想マシンを用いる。
具体的には、周期演算部11が備える演算実行部111は、演算周期T_cyc[ms]の周期で、入出力装置30から受信した計測値情報621と、演算データ部12の情報とを入力として演算を実行して演算結果情報622を生成する。演算実行部111は、演算結果情報622を入出力装置30に送信する。また、演算実行部111は、演算処理の実行中に演算データ部12の内容の一部の更新を行う。
なお、計測値情報621は、計測値及び制御データ部32の計測番号を含む。演算結果情報622は、演算結果を含む。演算結果情報622は、さらに演算データ部12の演算番号を含んでいてもよい。
【0019】
演算データ部12は、周期演算部11の演算処理に必要なデータと、演算処理の実行管理に必要なデータとを管理する。実施の形態1では、演算データ部12は、使用計測番号と、演算番号と、開始タイムスタンプと、終了タイムスタンプと、内部データとを管理する。
使用計測番号は、直近の演算で使用した計測値情報621に含まれる計測番号である。演算番号は、演算毎にインクリメントされる番号である。開始タイムスタンプは、周期演算部11の周期的な演算処理が起動された際、もしくは待機状態が解除された際の同期時刻カウンタの値である。終了タイムスタンプは、周期演算部11の周期的な演算処理が待機状態になった際の同期時刻カウンタの値である。内部データは、演算処理にあたり、内部で保持する必要があるデータである。内部データは、生成した演算結果も含む。
【0020】
通信制御部13は、他の装置内の機能と情報の送受信を行う。通信制御部13は、ネットワーク91から受信した情報をバッファリングし、装置内の他の機能に取得させる。また、通信制御部13は、装置内の他の機能から送信要求された情報をバッファリングし、特定のタイミングでネットワーク91に送信する。
計測値情報621及び演算結果情報622等の通信にはリアルタイム性が求められる。そのため、通信制御部13は、これらのデータについてはリアルタイム性が保証されるように、送信タイミングを調整する。例えば、IEEE802.1TSN規格に準拠した通信方式を採用し、これらのデータの送受信が一定時間内に完了するように制御する。TSNは、Time Sensitive Networkingの略である。
通信制御部13は、装置間の時刻を同期するための時刻同期機能を備える。この機能は、例えば、IEEE802.1TSN規格の一部であるIEEE802.1AS又は、IEEE1588等の高精度な時刻同期方式に基づいて実現される。時刻同期機能による結果は、通信制御部13に内蔵された同期時刻カウンタに反映される。
【0021】
移行補助部14は、移行先の制御装置20が備える移行制御部24内の移行実行部241及び初期同期部242を補助する。
移行補助部14は、初期同期部242から、初期同期要求625を受信した場合、初期同期情報626を生成し、初期同期部242に送信する。初期同期情報626は、周期演算部11の演算実行部111に関する、特定周期における演算番号(起点演算番号と呼ぶ)の演算実行時の演算データ部12の内容のうち、同期が必要な情報である。初期同期情報626は、使用計測番号と、演算番号と、開始タイムスタンプと、終了タイムスタンプとを必ず含む。初期同期情報626は、内部データを含むが、内部データについては、不要なデータが含まれる場合には、不要なデータを含まなくてもよい。
移行補助部14は、移行実行部241から、切替タイミング情報629を受信した後、切替タイミング情報629の条件が満了したら、周期演算部11を停止する。その後、移行補助部14は、移行実行部241に対し、切替完了6211を送信する。切替タイミング情報629は、移行元の制御装置10から移行先の制御装置20に切り替える条件を示す情報である。切替タイミング情報629は、移行元の制御装置10における情報に基づいて任意の条件が規定される。この条件は、具体例としては、「同期時刻カウンタの値がある値以上になったら」、又は、「演算データ部12内の演算番号がある値以上になったら」等である。
【0022】
*移行先の制御装置20の機能*
移行先の制御装置20は、機能構成要素として、周期演算部21と、演算データ部22と、通信制御部23と、移行制御部24と、再現データ部25とを備える。
演算データ部22及び通信制御部23については、移行元の制御装置10の演算データ部12及び通信制御部13と同じである。
【0023】
周期演算部21は、演算実行部211と、演算再現部212とを備える。演算実行部211は、移行元の制御装置10の周期演算部11が備える演算実行部111と同じである。
演算再現部212は、初期同期部242の処理が終了した後、演算データ部22及び再現データ部25の内容から、周期演算部11の演算実行部111で実行された演算を再現する再現演算を実行する。これにより、演算再現部212は、演算データ部22における同期が必要な情報を、演算データ部12の情報に同期させる。
演算再現部212は、移行補助部34に計測値情報要求623を送信し、計測値情報624を受信する度に再現データ部25内の計測値情報バッファに保存する。
【0024】
移行制御部24は、移行の制御を担う。移行制御部24は、移行実行部241と、初期同期部242とを備える。
移行実行部241は、移行の全体実行を担う。移行実行部241は、初期同期部242及び周期演算部21の実行を開始する。移行実行部241は、演算再現部212の処理が終了した後、移行補助部34から切替準備完了628を受信するまで待機する。移行実行部241は、その後切替タイミング情報629を生成して移行補助部14に送信するとともに、切替タイミング情報6210を生成して移行補助部34に送信する。移行実行部241は、移行補助部14から切替完了6211を受信するとともに、移行補助部34から切替完了6212を受信した場合、移行を終了する。
初期同期部242は、演算再現部212が計測値情報624の初回の受信を開始した場合に、移行補助部14に対して初期同期要求625を送信する。初期同期部242は、初期同期要求625の応答として初期同期情報626を受信する。初期同期部242は、初期同期情報626を演算データ部22に記憶させる。また、初期同期部242は、初期同期情報626の一部を再現データ部25が管理する起点演算番号と起点開始タイムスタンプと起点終了タイムスタンプとに反映させる。
【0025】
再現データ部25は、演算実行部111で実行された演算の再現に必要な情報を管理する。実施の形態1では、再現データ部25は、計測値情報バッファと、起点演算番号と、起点開始タイムスタンプと、起点終了タイムスタンプと、推定移行元演算番号とを管理する。
計測値情報バッファは、演算再現部212が受信した計測値情報が設定される。起点演算番号は、初期同期部242が受信した初期同期情報626内の演算番号が設定される。起点開始タイムスタンプは、初期同期部242が受信した初期同期情報626内の開始タイムスタンプが設定される。起点終了タイムスタンプは、初期同期部242が受信した初期同期情報626内の終了タイムスタンプが設定される。推定移行元演算番号は、演算再現部212が推定した、現在の演算周期で設定される演算データ部12の演算番号が設定される。
【0026】
*入出力装置30の機能*
入出力装置30は、機能構成要素として、入出力制御部31と、制御データ部32と、通信制御部33と、移行補助部34とを備える。
通信制御部33については、移行元の制御装置10の通信制御部13と同じである。
【0027】
入出力制御部31は、計測値601に基づき制御データ部32の内容を更新する。入出力制御部31は、計測値601から、計測値情報621又は計測値情報624を生成し、移行元の制御装置10と移行先の制御装置20とのうち通信先に指定された方の制御装置に対し送信する。
入出力制御部31は、通信先に指定された制御装置から受信した演算結果情報622又は演算結果情報627から演算結果602を抽出し、制御対象40に出力する。なお、演算結果情報622又は演算結果情報627の双方を受信できる状態の場合、どちらを使用してもよい。また、通信先となる制御装置は、外部から設定される。実施の形態1では、通信先となる制御装置は、移行補助部34によって設定される。
【0028】
制御データ部32は、入出力制御部31の入出力制御処理に必要なデータと、入出力制御処理の実行管理に必要なデータとを管理する。実施の形態1では、制御データ部32は、少なくとも計測番号を管理する。制御データ部32は、その他、必要な内部データを管理してもよい。
計測番号は、計測値601の入力毎にインクリメントされる番号である。
【0029】
移行補助部34は、移行実行部241の動作を補助する。
移行補助部34は、演算再現部212から計測値情報要求623を受信した場合、入出力制御部31の通信先として移行先の制御装置20を設定する。
移行補助部34は、入出力制御部31が演算結果情報627の受信を開始した場合、移行実行部241に切替準備完了628を送信する。
移行補助部34は、移行実行部241から切替タイミング情報6210を受信した後、切替タイミング情報6210の条件が満了したら、入出力制御部31通信先から移行元の制御装置10を削除する。そして、移行補助部34は、移行実行部241に対し、切替完了6212を送信する。
ここで切替タイミング情報6210は、移行元の制御装置10から移行先の制御装置20に切り替える条件を示す情報である。切替タイミング情報6210は、入力装置3内の情報に基づいて任意の条件が規定される。この条件は、具体例としては、「同期時刻カウンタの値がある値以上になったら」、又は「制御データ部32内の計測番号がある値以上になったら」等である。
【0030】
図6を参照して、実施の形態1に係る移行元の制御装置10及び移行先の制御装置20のハードウェア構成を説明する。
移行元の制御装置10及び移行先の制御装置20は、コンピュータである。
移行元の制御装置10は、プロセッサ101と、メモリ102と、ストレージ103と、通信インタフェース104とのハードウェアを備える。プロセッサ101は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
移行先の制御装置20は、プロセッサ201と、メモリ202と、ストレージ203と、通信インタフェース204とのハードウェアを備える。プロセッサ201は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【0031】
図7を参照して、実施の形態1に係る入出力装置30のハードウェア構成を説明する。
入出力装置30は、コンピュータである。
入出力装置30は、プロセッサ301と、メモリ302と、ストレージ303と、通信インタフェース304と、入出力インタフェース305とのハードウェアを備える。プロセッサ301は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【0032】
プロセッサ101,201,301は、プロセッシングを行うICである。ICはIntegrated Circuitの略である。プロセッサ101,201,301は、具体例としては、CPU、DSP、GPUである。CPUは、Central Processing Unitの略である。DSPは、Digital Signal Processorの略である。GPUは、Graphics Processing Unitの略である。
【0033】
メモリ102,202,302は、データを一時的に記憶する記憶装置である。メモリ102,202,302は、具体例としては、SRAM、DRAMである。SRAMは、Static Random Access Memoryの略である。DRAMは、Dynamic Random Access Memoryの略である。
【0034】
ストレージ103,203,303は、データを保管する記憶装置である。ストレージ103,203,303は、具体例としては、HDDである。HDDは、Hard Disk Driveの略である。また、ストレージ103,203,303は、SD(登録商標)メモリカード、CompactFlash(登録商標)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、Blu-ray(登録商標)ディスク、DVDといった可搬記録媒体であってもよい。SDは、Secure Digitalの略である。DVDは、Digital Versatile Diskの略である。
【0035】
通信インタフェース104,204,304は、ネットワーク91を介して外部の装置と通信するためのインタフェースである。通信インタフェース104,204,304は、具体例としては、Ethernet(登録商標)のポートである。
【0036】
入出力インタフェース305は、伝送路92を介して外部と入出力を行うためのインタフェースである。入出力インタフェース305は、具体例としては、USB、HDMI(登録商標)のポートである。USBは、Universal Serial Busの略である。HDMIは、High-Definition Multimedia Interfaceの略である。
【0037】
移行元の制御装置10の各機能構成要素の機能はソフトウェアにより実現される。ストレージ103には、移行元の制御装置10の各機能構成要素の機能を実現するプログラムが保存されている。このプログラムは、プロセッサ101によりメモリ102に読み込まれ、プロセッサ101によって実行される。これにより、移行元の制御装置10の各機能構成要素の機能が実現される。
同様に、移行先の制御装置20の各機能構成要素の機能はソフトウェアにより実現される。ストレージ203には、移行先の制御装置20の各機能構成要素の機能を実現するプログラムが保存されている。このプログラムは、プロセッサ201によりメモリ202に読み込まれ、プロセッサ201によって実行される。これにより、移行先の制御装置20の各機能構成要素の機能が実現される。
同様に、入出力装置30の各機能構成要素の機能はソフトウェアにより実現される。ストレージ303には、入出力装置30の各機能構成要素の機能を実現するプログラムが保存されている。このプログラムは、プロセッサ301によりメモリ302に読み込まれ、プロセッサ301によって実行される。これにより、入出力装置30の各機能構成要素の機能が実現される。
【0038】
なお、通信制御部13の機能は、通信インタフェース104を利用して実現される。同様に、通信制御部23の機能は、通信インタフェース204を利用して実現される。同様に、通信制御部33の機能は、通信インタフェース304を利用して実現される。
また、演算データ部12は、メモリ102を用いてデータを管理する。同様に、演算データ部22及び再現データ部25は、メモリ202を用いてデータを管理する。同様に、制御データ部32は、メモリ302を用いてデータを管理する。
また、入出力制御部31は、入出力インタフェース305を介して、計測値601の入力を受け付け、演算結果602を出力する。
【0039】
***動作の説明***
実施の形態1に係る制御移行システム100の動作を説明する。
実施の形態1に係る制御移行システム100の動作手順は、実施の形態1に係る制御移行方法に相当する。また、実施の形態1に係る制御移行システム100の動作を実現するプログラムは、実施の形態1に係る制御移行プログラムに相当する。
【0040】
上述した通り、制御移行システム100は、移行開始前状態と、移行中状態と、移行完了後状態との3つの状態を有する。ここでは、移行開始前状態と、移行中状態と、移行完了後状態とに分けて動作を説明する。
【0041】
**移行開始前状態**
図2と
図8と
図9とを参照して、実施の形態1に係る移行開始前状態における制御移行システム100の動作を説明する。
移行開始前状態は、移行元の制御装置10が入出力装置30とネットワーク91を介して協調動作し、制御対象40を制御する状態である。この際、移行元の制御装置10では、演算実行部111が演算処理を実行し、演算処理の演算結果により制御対象40が制御される。このとき、入出力制御部31の通信先には、移行元の制御装置10が設定されている。
【0042】
図2及び
図8を参照して、実施の形態1に係る移行元の制御装置10の演算実行部111の動作を説明する。
ステップS11では、演算実行部111は、通信制御部13の同期時刻カウンタの値を取得し、演算データ部12内の開始タイムスタンプに保存する。
ステップS12では、演算実行部111は、通信制御部13が受信した計測値情報621を取得する。
ステップS13では、演算実行部111は、ステップS12で取得した計測値情報621と演算データ部12の内部データの内容とに基づき演算処理を実行して、演算データ部12が管理する使用計測番号と演算番号と内部データとを更新し、また、演算結果情報622を生成する。
ステップS14では、演算実行部111は、ステップS13で生成した演算結果情報622の入出力制御部31への送信要求を、通信制御部13に通知する。
ステップS15では、演算実行部111は、通信制御部13の同期時刻カウンタの値を取得し、演算データ部12の終了タイムスタンプに保存する。そして、演算実行部111は、次の実行タイミングまで待機する。ここで次の実行タイミングとは、今回起動時から演算周期T_cyc[ms]経過した時刻である。待機方法は任意であり、例えば開始タイムスタンプ又は終了タイムスタンプを用いて、次回起動までの待機時間を算出し、その時間待機することが考えられる。
【0043】
図2及び
図9を参照して、実施の形態1に係る入出力装置30の入出力制御部31の動作を説明する。
ステップS21では、入出力制御部31は、入出力インタフェース304を介して制御対象40から計測値601の入力を受け付ける。
ステップS22では、入出力制御部31は、制御データ部32が管理する計測番号を更新し、計測値情報621を生成する。そして、入出力制御部31は、計測値情報621を通信先に指定されている制御装置である移行元の制御装置10に送信するための送信要求を通信制御部33に通知する。
ステップS23では、入出力制御部31は、通信先に指定されている制御装置である移行元の制御装置10から受信した演算結果情報622を通信制御部33から取得する。
ステップS24では、入出力制御部31は、ステップS23で取得した演算結果情報622から演算結果602を抽出する。そして、入出力制御部31は、演算結果602を入出力インタフェース304を介して制御対象40に出力する。
ステップS25では、入出力制御部31は、次の実行タイミングまで待機する。
【0044】
**移行中状態**
図3及び
図4と、
図10から
図15とを参照して、実施の形態1に係る移行中状態における制御移行システム100の動作を説明する。
移行中状態は、移行元の制御装置10における同期が必要な情報を、移行先の制御装置20に同期させ、入出力装置30が協調動作する制御装置を、移行元の制御装置10から移行先の制御装置20に切り替えている状態である。移行中状態では、移行開始前状態における移行元の制御装置10が入出力装置30とネットワーク91を介して協調動作し、制御対象40を制御する状態が継続されている。移行中状態の終盤に、移行開始前状態における移行元の制御装置10が入出力装置30とネットワーク91を介して協調動作し、制御対象40を制御する状態が継続されている状態から、移行先の制御装置20が入出力装置30とネットワーク91を介して協調動作し、制御対象40を制御する状態に切り替わる。
移行中状態は、初期同期中状態と、再現演算中状態と、切替制御中状態とに分類される。ここでは、初期同期中状態と、再現演算中状態と、切替制御中状態とに分けて動作を説明する。
【0045】
*初期同期中状態*
初期同期中状態は、移行実行部241の処理開始から初期同期部242の処理終了までの状態である。
制御移行が開始されると、移行先の制御装置20の移行実行部241の動作フロー(
図10参照)が開始される。また、移行元の制御装置10の移行補助部14の動作フロー(
図14参照)が開始される。また、入出力装置30の移行補助部34の動作フロー(
図15参照)が開始される。
【0046】
図10を参照して、実施の形態1に係る移行実行部241の動作を説明する。
ステップS31では、移行実行部241は、周期演算部21の動作フロー(
図11参照)と、初期同期部242の動作フロー(
図13参照)との実行を指示する。なお、周期演算部21の動作フローと、初期同期部242の動作フローとは並行して実行される。例えば、周期演算部21の動作フローと、初期同期部242の動作フローとは別タスクで実行される。
ステップS32では、移行実行部241は、周期演算部21の演算再現部212の処理が完了するまで待機する。この待機状態は切替制御中状態において解除される。そのため、ステップS33以降の処理は後述する。
【0047】
図11を参照して、実施の形態1に係る周期演算部21の動作を説明する。
ステップS41では、周期演算部21は、演算再現部212の動作フロー(
図12参照)の実行を指示する。ステップS42は、演算再現部212の動作フローが終了してから実行されるため、ステップS42以降の処理は後述する。
【0048】
図3及び
図12を参照して、実施の形態1に係る演算再現部212の動作を説明する。
ステップS51では、演算再現部212は、周期演算部21の初期化に必要な初期化処理を実行する。具体的には、演算再現部212は、演算データ部22が管理する内部データに対し、初期同期部242による同期対象でない部分を初期化する。また、演算再現部212は、演算周期T_cyc[ms]を起動する位相を、移行元の制御装置10の周期演算部11の位相に合わせる。また、演算再現部212は、入出力装置30の移行補助部34に対する計測値情報要求623の送信要求を、通信制御部23に通知する。
ステップS52では、演算再現部212は、通信制御部23から同期時刻カウンタの値を取得し、演算データ部22が管理する開始タイムスタンプに保存する。
ステップS53では、演算再現部212は、通信制御部23が計測値情報624を受信済みであれば、取得する。そして、演算再現部212は、計測値情報624を再現データ部25が管理する計測値情報バッファに保存する。
ステップS54では、演算再現部212は、初期同期部242の動作フロー(
図13参照)が完了していれば、ステップS56に処理を進める。一方、演算再現部212は、初期同期部242の動作フロー(
図13参照)が完了していなければ、ステップS55に処理を進める。
ステップS55では、演算再現部212は、通信制御部23から同期時刻カウンタの値を取得し、演算データ部22の終了タイムスタンプに保存する。そして、演算再現部212は、周期演算部21の次の実行タイミングまで待機した後、処理をステップS52に戻す。
初期同期部242の動作フローが終了すると、初期同期中状態が終了する。そこで、ステップS56以降の処理は後述する。
【0049】
図3及び
図13を参照して、実施の形態1に係る初期同期部242の動作を説明する。
ステップS71では、初期同期部242は、演算再現部212が
図12のステップS53で計測値情報624の初回受信を開始するまで待機する。
ステップS72では、初期同期部242は、通信制御部23に対し、移行元の制御装置10の移行補助部14に対する初期同期要求625の送信要求を通知する。
ステップS73では、初期同期部242は、通信制御部23が移行元の制御装置10の移行補助部14から初期同期情報626を受信するまで待機する。
ステップS74では、初期同期部242は、通信制御部23から初期同期情報626を取得する。そして、初期同期部242は、初期同期情報626の情報を、演算データ部22及び再現データ部25に反映し、処理を終了する。
ここで、初期同期情報626は、演算実行部111に関する、特定周期における演算番号(起点演算番号と呼ぶ)の演算実行時の演算データ部12の内容のうち、同期が必要な情報である。ここでは、初期同期情報626は、使用計測番号と、演算番号と、開始タイムスタンプと、終了タイムスタンプとを含む。初期同期情報626は、内部データを含んでもよい。
【0050】
図3及び
図14を参照して、実施の形態1に係る移行補助部14の動作を説明する。
ステップS81では、移行補助部14は、通信制御部13が初期同期部242から初期同期要求625を受信するまで待機する。移行補助部14は、通信制御部13が初期同期要求625を受信すると、初期同期要求625を取得する。
ステップS82では、移行補助部14は、周期演算部11の演算実行部111が次回待機状態になるまで待機する。
ステップS83では、移行補助部14は、処理を実行している時点の演算周期を特定周期として、初期同期情報626を生成する。そして、移行補助部14は、初期同期部242に対する初期同期情報626の送信要求を通信制御部13に通知する。
ステップS84では、移行補助部14は、通信制御部13が移行実行部241から切替タイミング情報629を受信するまで待機する。移行補助部14は、通信制御部13が切替タイミング情報629を受信すると、切替タイミング情報629を取得する。なお、切替タイミング情報629の受信は切替制御中状態にされるので、ステップS85以降の処理は後述する。
【0051】
図3及び
図15を参照して、実施の形態1に係る移行補助部34の動作を説明する。
ステップS91では、移行補助部34は、通信制御部33が演算再現部212から計測値情報要求623を受信するまで待機する。移行補助部34は、通信制御部33が計測値情報要求623を受信すると、計測値情報要求623を取得する。
ステップS92では、移行補助部34は、移行先の制御装置20を入出力制御部31の通信先に追加する。これにより、入出力制御部31は、計測値情報624の送信要求の通知と演算結果情報627の取得とを行うようになる。
ステップS93では、移行補助部34は、通信制御部33が移行先の制御装置20の演算実行部211から演算結果情報627の受信を開始するまで待機する。なお、演算結果情報627の受信は切替制御中状態で行われるので、ステップS94以降の処理は後述する。
【0052】
*再現演算中状態*
再現演算中状態は、初期同期中状態が完了してから演算再現部212の処理終了までの状態である。
図13に示す初期同期部242の動作フローが終了すると、初期同期中状態が終了する。すると、
図12のステップS54から処理がステップS56に進められる。
【0053】
図3及び
図12を参照して、演算再現部212の動作を説明する。
ステップS56では、演算再現部212は、通信制御部23から同期時刻カウンタの値を取得し、演算データ部22が管理する終了タイムスタンプに保存する。そして、演算再現部212は、次の実行タイミングまで待機する。ここで次の実行タイミングとは、今回起動時から演算周期T_cyc[ms]経過した時刻である。
ステップS57では、演算再現部212は、通信制御部23から同期時刻カウンタの値を取得し、演算データ部22が管理する開始タイムスタンプに保存する。
ステップS58では、演算再現部212は、通信制御部23が計測値情報624を受信済みであれば、計測値情報624を取得する。そして、演算再現部212は、再現データ部25が管理する計測値情報バッファに保存する。
ステップS59では、演算再現部212は、処理を実行している時点の演算周期における移行元の制御装置10の演算実行部111の演算番号を推定する。そして、演算再現部212は、推定された演算番号を、再現データ部25が管理する推定移行元演算番号に保存する。
【0054】
演算再現部212は、演算実行部111の演算番号を以下の手順で推定する。
まず、演算再現部212は、通信制御部23から同期時刻カウンタを取得する。演算再現部212は、同期時刻カウンタと、再現データ部25が管理する起点開始タイムスタンプの値又は起点終了タイムスタンプの値との差分から、演算実行部111が再現データ部25が管理する起点演算番号で示された演算を実行してからの経過時間を算出する。つまり、演算再現部212は、特定周期における演算処理の開始または終了時刻から、現在処理を実行している時刻までの経過時間を算出する。現在処理を実行している演算周期が、このときの移行周期に設定される。
演算再現部212は、算出された経過時間及び演算周期T_cyc[ms]から、特定周期の次の演算周期から現在処理を実行している演算周期までに演算実行部111によって実行された又はされる演算処理の実行回数を推定する。演算再現部212は、実行回数と再現データ部25が管理する起点演算番号とを加算した値を、処理を実行している演算周期における演算実行部111の演算番号として推定する。
【0055】
なお、推定移行元演算番号に一度値が設定済みであれば、それ以降は1演算周期T_cyc[ms]毎に演算番号の推定が実行される。そこで、演算再現部212は、上記処理の代わりに、現在の推定移行元演算番号の値に1加算した値を、処理を実行している演算周期における演算実行部111の演算番号として推定してもよい。
【0056】
ステップS60では、演算再現部212は、演算データ部22が管理する演算番号の値が、再現データ部25が管理する推定移行元演算番号の値未満であるか否かを判定する。演算再現部212は、演算番号の値が推定移行元演算番号の値未満である場合、処理をステップS61に進める。一方、演算再現部212は、演算番号の値が推定移行元演算番号の値未満でない場合、処理をステップS64に進める。ステップS64では、演算再現部212は、同期時刻カウンタの値を取得し、演算データ部22が管理する終了タイムスタンプに保存して、処理を終了する。
【0057】
ステップS61では、演算再現部212は、演算周期T_cyc[ms]内に、ステップS62及びステップS63の処理を制限回数C_max回未実行の場合、処理をステップS62に進める。一方、演算再現部212は、処理を制限回数C_max回実行した場合、処理をステップS56に戻す。
ここで制限回数C_maxとは、ステップS60からステップS63までの処理時間とマージン時間との合計値の最大値をd[ms]としたとき、d[ms]*C_max<=D_maxを満たす範囲で定められる自然数である。D_max[ms]は、演算処理の次の実行タイミングまでに、周期演算部21の処理を他の処理よりも優先して実行できる最大時間であり、少なくともC_max>=2がとなるように確保されるものとする。
【0058】
ステップS62では、演算再現部212は、再現データ部25が管理する計測値情報バッファから、演算データ部22が管理する使用計測番号に1加算した値と、同一の番号を含む計測値情報を取得する。
ステップS63では、演算再現部212は、ステップS62で取得した計測値情報と、演算データ部22が管理する内部データの内容とに基づき再現演算を実行する。再現演算は、演算実行部111による演算処理を再現した演算である。演算再現部212は、再現演算の演算結果を生成し、演算データ部22が管理する使用計測番号と演算番号と内部データの内容とを更新する。
【0059】
*切替制御中状態*
切替制御中状態は、再現演算中状態が完了してから移行実行部241の処理終了までの状態である。
図12に示す演算再現部212の動作フローが終了すると、
図11のステップS42の処理が開始される。また、
図10のステップS32の待機状態が解除され、ステップS33の処理が開始される。
【0060】
図4及び
図11を参照して、周期演算部21の動作を説明する。
ステップS42では、周期演算部21は、次の実行タイミングまで待機した後、処理をステップS43に進める。
ステップS43では、周期演算部21は、演算実行部211に演算処理を開始させる。これにより、演算実行部211から入出力装置30に対し、演算結果情報627の送信が開始される。そして、演算実行部211によって実行された演算処理の結果を用いて制御対象40が制御できるようになる。つまり、
図12のステップS59で最後に設定された移行周期の後は、演算実行部211によって実行された演算処理の結果を用いて制御対象40が制御できるようになる。
なお、演算実行部211の動作フロー及び説明は、
図8に示す演算実行部111の動作フロー及びその説明と原則として同じである。但し、説明における文言を、移行元の制御装置10についての文言から、移行先の制御装置20についての文言に置き換える必要がある。
【0061】
図4及び
図10を参照して、移行実行部241の動作を説明する。
ステップS33では、移行実行部241は、通信制御部23が移行補助部34から切替準備完了628を受信するまで待機する。移行実行部241は、通信制御部23が切替準備完了628を受信した場合、切替準備完了628を取得する。
ステップS34では、移行実行部241は、切替タイミング情報629及び切替タイミング情報6210を生成する。そして、移行実行部241は、移行補助部14に対する切替タイミング情報629の送信要求と、移行補助部34に対する切替タイミング情報6210の送信要求とを通信制御部23に通知する。
ステップS35では、移行実行部241は、通信制御部23が移行補助部14から切替完了6211を受信し、かつ、通信制御部23が移行補助部34から切替完了6212を受信するまで待機する。移行実行部241は、通信制御部23が切替完了6211及び切替完了6212を受信した場合、切替完了6211及び切替完了6212を取得し、終了する。
【0062】
図4及び
図14を参照して、移行補助部14の動作を説明する。
ステップS84では、移行補助部14は、ステップS34で切替タイミング情報629が送信されることにより、待機が完了する。そして、移行補助部14は、処理をステップS85に進める。
ステップS85では、移行補助部14は、切替タイミング情報629の条件が満了するまで待機する。
ステップS86では、移行補助部14は、周期演算部11の動作を停止させる。
ステップS87では、移行補助部14は、通信制御部13に対し、移行実行部241に対する切替完了6211の送信要求を通知する。
【0063】
図4及び
図15を参照して、移行補助部34の動作を説明する。
ステップS93では、移行補助部34は、
図11のステップS43で演算実行部211が演算処理を開始することにより、演算結果情報627の受信が開始され、待機が完了する。そして、移行補助部34は、処理をステップS94に進める。
ステップS94で、移行補助部34は、通信制御部33に対し、移行実行部241に対する切替準備完了628の送信要求を通知する。
ステップS95では、移行補助部34は、通信制御部33が移行実行部241から切替タイミング情報6210を受信するまで待機する。移行補助部34は、通信制御部33が切替タイミング情報6210を受信した場合、切替タイミング情報6210を取得する。
ステップS96では、移行補助部34は、切替タイミング情報6210の条件が満了するまで待機する。
ステップS97では、移行補助部34は、移行元の制御装置10を入出力制御部31の通信先から削除する。これにより、入出力制御部31は計測値情報621の送信要求の通知と演算結果情報622の取得とを行わなくなる。
ステップS98では、移行補助部34は、通信制御部33に対し、移行実行部241に対する切替完了6212の送信要求を通知する。
【0064】
**移行完了後状態**
移行完了後状態は、移行先の制御装置20が入出力装置30とネットワーク91を介して協調動作し、制御対象40を制御する状態である。この際、移行先の制御装置20では、演算実行部211が演算処理を実行し、演算処理の演算結果により制御対象40が制御される。このとき、上述した移行中状態の処理により、入出力制御部31の通信先には、移行先の制御装置20が設定されている。
【0065】
移行完了後状態における制御移行システム100の動作は、移行元の制御装置10に代わって移行先の制御装置20が制御対象40を制御する点を除き、移行開始前状態と同じである。つまり、
図5に示すように、移行完了後状態では、演算実行部111に代わって演算実行部211が演算処理を行い、演算実行部211と入出力制御部31との間で計測値情報624と演算結果情報627とが送受信されるようになる。
【0066】
*演算データ部22の状態の例*
図16を参照して、実施の形態1に係る移行中状態における演算データ部22の状態の例を説明する。
図16の例では、起点演算番号=Nとし、C_max=3として再現演算を行っている。つまり、
図14のステップS83で移行補助部14が初期同期情報626を生成する特定周期における演算番号がNである。
【0067】
初期同期中状態の完了までに、初期同期部242は、演算データ部12が管理する演算実行部111による起点演算番号Nの演算処理完了までの同期が必要な情報を含む初期同期情報626を移行元の制御装置10から取得する。そして、初期同期部242は、演算データ部22に同期させるとともに、再現データ部25に反映する。
図16では、初期同期中状態が完了する演算番号がN+10の時点で、起点演算番号Nの演算処理完了までの同期が必要な情報の同期が完了している。つまり、同期が必要な情報の転送時間が、演算周期T_cyc[ms]よりも大きい状況を表している。
また、初期同期中状態の完了までに、演算再現部212は、再現データ部25が管理する計測値情報バッファに入出力装置30から得られた計測値情報624を設定している。
【0068】
再現演算中状態では、演算データ部22及び再現データ部25が管理する情報と、同期時刻カウンタの値とから、演算再現部212が、移行元の制御装置10の演算実行部111の再現演算を行う。この際、演算再現部212は、移行元の制御装置10からの同期が必要な情報の転送を必要としない。
図16では、演算実行部111の演算番号がN+11の時点から再現演算が開始される。
まず、演算再現部212は、
図12のステップS59で推定移行元演算番号にN+11を設定する。そして、演算再現部212は、C_max=3のため、N+1とN+2とN+3との3回分の演算処理を実行する。3回分の演算処理を実行しても、演算再現部212が実行した演算処理の演算番号“N+3”は、推定移行元演算番号“N+11”未満である。そのため、
図12のステップS61で処理がステップS56に戻される。
すると、次の演算周期において、演算再現部212は、
図12のステップS59で推定移行元演算番号にN+12を設定する。そして、演算再現部212は、C_max=3のため、N+4とN+5とN+6との3回分の演算処理を実行する。3回分の演算処理を実行しても、演算再現部212が実行した演算処理の演算番号“N+6”は、推定移行元演算番号“N+12”未満である。そのため、
図12のステップS61で処理がステップS56に戻される。
同様の処理を何度か繰り返した後の演算周期において、演算再現部212は、
図12のステップS59で推定移行元演算番号にN+15を設定する。そして、演算再現部212は、N+13とN+14とN+15との演算処理を実行する。すると、演算再現部212が実行した演算処理の演算番号“N+15”は、推定移行元演算番号“N+15”未満でなくなる。そのため、移行元の制御装置10の演算データ部12と移行先の制御装置20の演算データ部22との間で、データの同期が完了する。
このように、同期が必要な情報の転送時間が、演算周期T_cyc[ms]よりも長い場合にも、演算データ部22を演算データ部12に同期させることが可能となる。
【0069】
切替制御中の状態では、演算実行部211の実行が開始され、演算実行部111と同一の演算結果が生成される。そのため、演算番号がN+16以降の演算周期でも、演算データ部22は、演算データ部12と同期した状態になる。この状態で移行制御部24と移行補助部14と移行補助部34との協調動作により、移行元の制御装置10から移行先の制御装置20への切替が行われ、移行が完了する。
以上により、制御対象40である生産設備に影響を与えないようにしつつ、移行元の制御装置10の演算処理の状態を、移行先の制御装置20の状態に同期させ、移行を完了させることができる。
【0070】
***実施の形態1の効果***
以上のように、実施の形態1に係る制御移行システム100では、初期同期部242によって特定周期における移行元の制御装置10の同期が必要な情報が、移行先の制御装置20に同期される。その後は、演算再現部212が、移行元の制御装置10の同期が必要な内容の転送を必要とせずに、演算実行部111による演算処理の再現演算を実行して、移行先の制御装置20が移行元の制御装置10に同期した状態とする。
これにより、同期が必要な情報の転送時間が、演算周期T_cyc[ms]よりも長い場合にも、演算データ部22を演算データ部12に同期させることが可能となる。その結果、制御対象40である生産設備に影響を与えないようにしつつ、移行元の制御装置10の演算処理の状態を、移行先の制御装置20の状態に同期させ、移行を完了させることができる。
【0071】
***他の構成***
<変形例1>
実施の形態1では、各機能構成要素がソフトウェアで実現された。しかし、変形例1として、各機能構成要素はハードウェアで実現されてもよい。この変形例1について、実施の形態1と異なる点を説明する。
【0072】
各機能構成要素がハードウェアで実現される場合には、移行元の制御装置10は、プロセッサ101とメモリ102とストレージ103とに代えて、電子回路を備える。電子回路は、各機能構成要素と、メモリ102と、ストレージ103との機能とを実現する専用の回路である。
【0073】
各機能構成要素がハードウェアで実現される場合には、移行先の制御装置20は、プロセッサ201とメモリ202とストレージ203とに代えて、電子回路を備える。電子回路は、各機能構成要素と、メモリ202と、ストレージ203との機能とを実現する専用の回路である。
【0074】
各機能構成要素がハードウェアで実現される場合には、入出力装置30は、プロセッサ301とメモリ302とストレージ303とに代えて、電子回路を備える。電子回路は、各機能構成要素と、メモリ302と、ストレージ303との機能とを実現する専用の回路である。
【0075】
電子回路としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAが想定される。GAは、Gate Arrayの略である。ASICは、Application Specific Integrated Circuitの略である。FPGAは、Field-Programmable Gate Arrayの略である。
各機能構成要素を1つの電子回路で実現してもよいし、各機能構成要素を複数の電子回路に分散させて実現してもよい。
【0076】
<変形例2>
変形例2として、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
【0077】
プロセッサ51とメモリ52とストレージ53と電子回路とを処理回路という。つまり、各機能構成要素の機能は、処理回路により実現される。
【0078】
実施の形態2.
実施の形態2は、演算再現部212による再現演算で更新された演算データ部22の内容と、演算実行部111による演算処理で更新された演算データ部12の内容とを照合する点が実施の形態1と異なる。実施の形態2では、この異なる点を説明し、同一の点については説明を省略する。
【0079】
***構成の説明***
図17を参照して、実施の形態2に係る制御移行システム100の構成を説明する。
制御移行システム100が備える移行元の制御装置10と移行先の制御装置20と入出力装置30との各装置の機能について説明する。
【0080】
*移行元の制御装置10の機能*
移行元の制御装置10は、機能構成要素として、照合情報転送部15を備える点が
図1に示す移行元の制御装置10と異なる。
【0081】
移行補助部14は、実施の形態1で説明した機能に加え、照合情報転送部15の実行を開始する機能を有する。
【0082】
照合情報転送部15は、移行先の制御装置20に対し、移行元照合情報6213を転送する。移行元照合情報6213は、演算データ部12が管理する情報のうち、演算毎に処理結果を照合すべき情報である。例えば、移行元照合情報6213は、使用計測番号と、演算番号と、演算結果等の内部データの一部とである。
【0083】
*移行先の制御装置20の機能*
移行先の制御装置20は、機能構成要素として、照合取得部26と、照合実行部27と、照合データ部28とを備える点が
図1に示す移行先の制御装置20と異なる。
【0084】
演算再現部212は、実施の形態1で説明した機能に加え、再現照合情報を生成し、照合データ部28の再現照合情報バッファに保存する機能を有する。再現照合情報は、移行元照合情報6213の構成と同一となるように構成される。
【0085】
照合取得部26は、照合情報転送部15から転送された移行元照合情報6213を取得し、照合データ部28の移行元照合情報バッファに保存する。
【0086】
照合実行部27は、照合データ部28における移行元照合情報バッファの情報と再現照合情報バッファの情報とを照合し、一致しているか否かを判定する。照合実行部27は、不一致の場合には、任意のエラー処理を行うことで信頼性を高める。例えば、照合実行部27は、リトライ処理又は移行中断の処理を行う。照合実行部27は、一致した場合には、照合完了6214を照合情報転送部15に送信する。なお、照合完了6214は一致確認毎に送信されるのではなく、全データの照合完了後に送信される。
【0087】
照合データ部28は、照合用の情報を管理する。具体的には、照合データ部28は、移行元照合情報バッファを用いて照合取得部26が取得した移行元照合情報6213を管理する。また、照合データ部28は、再現照合情報バッファを用いて演算再現部212が生成した再現照合情報を管理する。
【0088】
移行実行部241は、照合実行部27及び照合取得部26の実行を開始する機能と、照合実行部27の実行完了を待機する機能とを有する。
【0089】
***動作の説明***
実施の形態2に係る制御移行システム100の動作を説明する。
実施の形態2に係る制御移行システム100の動作手順は、実施の形態2に係る制御移行方法に相当する。また、実施の形態2に係る制御移行システム100の動作を実現するプログラムは、実施の形態2に係る制御移行プログラムに相当する。
【0090】
移行開始前状態と、移行中状態と、移行完了後状態との3つの状態のうち、移行中状態における動作が、実施の形態1と異なる。
【0091】
**移行中状態**
図17から
図23を参照して、実施の形態2に係る移行中状態における制御移行システム100の動作を説明する。
制御移行が開始されると、移行先の制御装置20の移行実行部241の動作フロー(
図18参照)が開始される。また、移行元の制御装置10の移行補助部14の動作フロー(
図19参照)が開始される。また、入出力装置30の移行補助部34の動作フロー(
図15参照)が開始される。
【0092】
図18を参照して、実施の形態2に係る移行実行部241の動作を説明する。
ステップS103からステップS105の処理は
図10のステップS33からステップS35の処理と同じである。
ステップS101では、移行実行部241は、周期演算部21の動作フロー及び初期同期部242の動作フローに加え、照合取得部26の動作フロー(
図22参照)及び照合実行部27の動作フロー(
図23参照)の実行を開始する。なお、周期演算部21の動作フローと、初期同期部242の動作フローと、照合取得部26の動作フローと、照合実行部27の動作フローとは並行して実行される。
ステップS102では、移行実行部241は、演算再現部212の処理に加え、照合実行部27の処理が完了するまで待機する。
【0093】
図19を参照して、実施の形態2に係る移行補助部14の動作を説明する。
ステップS111からステップS112の処理は、
図14のステップS81からステップS82の処理と同じである。ステップS114からステップS118の処理は、
図14のステップS83からステップS87の処理と同じである。
ステップS113では、移行補助部14は、照合情報転送部15の動作フロー(
図20参照)の実行を開始する。照合情報転送部15の動作フローは他の動作フローと並行して実行される。
【0094】
図20を参照して、実施の形態2に係る照合情報転送部15の動作を説明する。
ステップS121では、照合情報転送部15は、周期演算部11の周期演算部11が待機状態、かつ、演算データ部12が管理する現在の演算番号の移行元照合情報6213が未生成の場合、処理をステップS122に進める。一方、照合情報転送部15は、そうでない場合、処理をステップS121に戻す。なお、現在の演算番号が、初期同期情報626に含まれる演算番号と一致する場合には、照合情報転送部15は、処理をステップS122に進めず、ステップS121に戻してもよい。
ステップS122では、照合情報転送部15は、通信制御部13が照合取得部26から照合完了6214を未受信の場合、処理をステップS123に進める。一方、照合情報転送部15は、照合完了6214を受信済の場合、処理をステップS124に進める。ステップS124では、照合情報転送部15は、通信制御部13から照合完了6214を取得し、処理を終了する。
ステップS123では、照合情報転送部15は、移行元照合情報6213を生成する。そして、照合情報転送部15は、照合取得部26に対する移行元照合情報6213の送信要求を通信制御部13に通知する。
なお、照合情報転送部15は、演算番号毎にステップS123の処理を行う必要がある。そのため、周期演算部11の演算実行部111が待機状態になってから次に起動するまでに、ステップS123の処理が少なくとも1回実行できるように、実行タイミング及びプロセッサ101のコア割当が制御されるものとする。
【0095】
図21を参照して、実施の形態2に係る演算再現部212の動作を説明する。
ステップS131からステップS144の処理は、
図12のステップS51からステップS64の処理と同じである。
ステップS145では、演算再現部212は、演算データ部22が管理する情報から再現照合情報を生成し、再現照合情報バッファに保存する。ここで生成される再現照合情報は、直近に実行されたステップS143における演算番号に対応する情報である。
【0096】
図22を参照して、実施の形態2に係る照合取得部26の動作を説明する。
ステップS151では、照合取得部26は、照合実行部27の動作フローが完了していない場合、処理をステップS2に進める。一方、照合取得部26は、照合実行部27の動作フローが完了している場合、処理を終了する。
ステップS152では、照合取得部26は、通信制御部23が移行元照合情報6213を受信するまで待機する。照合取得部26は、通信制御部23が移行元照合情報6213を受信した場合、移行元照合情報6213を取得して照合データ部28が管理する移行元照合情報バッファに保存する。なお、照合取得部26は、待機には制限時間を設けておき、制限時間内に移行元照合情報6213を取得できない場合には、処理をステップS151に戻してもよい。
【0097】
図23を参照して、実施の形態2に係る照合実行部27の動作を説明する。
ステップS161では、照合実行部27は、照合データ部28が管理する再現照合情報バッファに未照合の再現照合情報がある場合、処理をステップS162に進める。一方、照合実行部27は、再現照合情報バッファに未照合の再現照合情報がない場合、処理をステップS166に進める。ステップS166では、照合実行部27は、演算再現部212の動作フローが完了していない場合、処理をステップS161に戻す。一方、照合実行部27は、演算再現部212の動作フローが完了している場合、処理をステップS167に進める。ステップS167では、照合実行部27は、照合情報転送部15に対する照合完了6214の送信要求を通信制御部23に通知し、処理を終了する。
ステップS162では、照合実行部27は、照合データ部28が管理する再現照合情報バッファから未照合の再現照合情報を取得する。
ステップS163では、照合実行部27は、照合データ部28が管理する移行元照合情報バッファに、ステップS162で取得した再現照合情報と同一の演算番号の照合情報がある場合、処理をステップS164に進める。一方、照合実行部27は、再現照合情報と同一の演算番号の移行元照合情報6213がない場合、処理をステップS163に戻す。なお、再現演算処理が誤った演算番号を含む再現照合情報を生成した場合等を考慮し、照合実行部27は、再現照合情報と同一の演算番号の移行元照合情報6213がない状態の継続に制限時間を設けてもよい。そして、照合実行部27は、再現照合情報と同一の演算番号の移行元照合情報6213がない状態が制限時間を超えた場合、後述するS168と同様のエラー処理を行ってもよい。
ステップS164では、照合実行部27は、照合データ部28が管理する移行元照合情報バッファから再現照合情報と同一の演算番号の移行元照合情報6213を取得する。そして、照合実行部27は、取得した移行元照合情報6213と、ステップS162で取得した再現照合情報とを比較する。
ステップS165では、照合実行部27は、取得した移行元照合情報6213と、ステップS162で取得した再現照合情報とが一致した場合、処理をステップS161に戻す。一方、照合実行部27は、取得した移行元照合情報6213と、ステップS162で取得した再現照合情報とが一致しなかった場合、処理をステップS168に進める。
ステップS168では、照合実行部27は、任意のエラー処理を行い、処理を終了する。
【0098】
***実施の形態2の効果***
以上のように、実施の形態2に係る制御移行システム100は、演算再現部212による再現演算で更新された演算データ部22の内容と、演算実行部111による演算処理で更新された演算データ部12の内容とを照合する。これにより、実施の形態1の効果を得つつ、再現演算の信頼性を高くすることができる。
【0099】
実施の形態3.
実施の形態3は、移行元の制御装置10で複数の演算処理が実行されている場合に、演算処理の移行順序を決定する点が実施の形態1,2と異なる。実施の形態3では、この異なる点を説明し、同一の点については説明を省略する。
実施の形態3では、実施の形態1に機能を加えた場合について説明する。しかし、実施の形態2に機能を加えることも可能である。
【0100】
移行元の制御装置10において、プロセッサ101内の同一コアで複数の演算処理が実行され、複数の演算処理をすべて移行先の制御装置20に移行し、プロセッサ201内の同一コアで実行する場合を考える。この場合に、制御処理を移行させる移行順序によって、それぞれの演算再現部212が設定可能な制限回数C_maxの値が異なる場合がある。そのため、制御処理を移行させる移行順序によって、演算再現部212の処理時間が異なる場合がある。そこで、移行順序によって移行に要する合計時間が変化する可能性がある。
実施の形態2では、演算再現部212の処理時間を事前に推測可能である場合に、移行に要する合計時間が最小となるような順序を推測し、その順序で移行を行うようにする。
【0101】
***構成の説明***
図24を参照して、実施の形態3に係る制御移行システム100の構成を説明する。
制御移行システム100は、移行元の制御装置10と、移行先の制御装置20と、複数の入出力装置30とを備える。移行元の制御装置10と移行先の制御装置20と各入出力装置30とは、ネットワーク91を介して接続される。各入出力装置30は、対応する制御対象40と伝送路92を介して接続される。各入出力装置30は、他の入出力装置30とは独立して制御される。
図24では、制御移行システム100は、入出力装置30Aと入出力装置30Bとの2つの入出力装置30を備えている。入出力装置30Aは、制御対象40Aと接続されている。入出力装置30Bは、制御対象40Bと接続されている。なお、制御移行システム100は、3つ以上の入出力装置30を備えていてもよい。
【0102】
制御移行システム100が備える移行元の制御装置10と移行先の制御装置20と入出力装置30との各装置の機能について説明する。
【0103】
*移行元の制御装置10の機能*
移行元の制御装置10は、複数の演算処理それぞれについて、周期演算部11と演算データ部12と移行補助部14との組を備える点が
図1に示す移行元の制御装置10と異なる。演算処理は、入出力装置30毎に設けられている。
図24では、移行元の制御装置10は、入出力装置30Aに対応した演算処理Aについて、周期演算部11Aと演算データ部12Aと移行補助部14Aとの組Aを備える。また、移行元の制御装置10は、入出力装置30Bに対応した演算処理Bについて、周期演算部11Bと演算データ部12Bと移行補助部14Bとの組Bを備える。
【0104】
*移行先の制御装置20の機能*
移行先の制御装置20は、順序決定部29を備える点が
図1に示す移行先の制御装置20と異なる。
また、移行先の制御装置20は、複数の演算処理それぞれについて、周期演算部21と演算データ部22と移行制御部24と再現データ部25との組を備える点が
図1に示す移行先の制御装置20と異なる。演算処理は、入出力装置30毎に設けられている。
図24では、移行先の制御装置20は、入出力装置30Aに対応した演算処理Aについて、周期演算部21Aと演算データ部22Aと移行制御部24Aと再現データ部25Aとの組Aを備える。また、移行先の制御装置20は、入出力装置30Bに対応した演算処理Bについて、周期演算部21Bと演算データ部22Bと移行制御部24Bと再現データ部25Bとの組Bを備える。
【0105】
順序決定部29は、複数の演算処理を移行する移行順序を、各演算処理の移行にかかる時間の合計が最短になる順序に決定する。
【0106】
*入出力装置30の機能*
各入出力装置30の機能構成は、実施の形態1と同じである。
【0107】
***動作の説明***
実施の形態3に係る制御移行システム100の動作を説明する。
実施の形態3に係る制御移行システム100の動作手順は、実施の形態3に係る制御移行方法に相当する。また、実施の形態3に係る制御移行システム100の動作を実現するプログラムは、実施の形態3に係る制御移行プログラムに相当する。
【0108】
移行開始前状態と、移行中状態と、移行完了後状態との3つの状態のうち、移行開始前状態における動作が、実施の形態1と異なる。
【0109】
**移行開始前状態**
移行開始前状態において、順序決定部29の動作フロー(
図25参照)が開始される。
図25参照して、実施の形態3に係る順序決定部29の動作を説明する。
ステップS171では、順序決定部29は、複数の演算処理を移行する各順序における、各演算再現部212の処理時間を推測する。順序決定部29は、各順序について、各演算再現部212の処理時間の合計を計算する。そして、順序決定部29は、処理時間の合計が最短になる順序を移行順序に決定する。処理時間の合計が最短になる順序の特定方法は任意であり、例えば全探索により実現される。
【0110】
ステップS172では、順序決定部29は、ステップS171で決定された移行順序で演算処理の移行を行うように、各移行制御部24に指示する。
【0111】
図24の場合には、ステップS171において、順序決定部29は、演算処理A、演算処理Bの順序と、演算処理B、演算処理Aの順序とのそれぞれについて、演算再現部212Aの処理時間と、演算再現部212Bの処理時間とを推定する。そして、順序決定部29は、演算処理A、演算処理Bの順序についての演算再現部212Aの処理時間と演算再現部212Bの処理時間との合計を計算する。また、順序決定部29は、演算処理B、演算処理Aの順序についての演算再現部212Aの処理時間と演算再現部212Bの処理時間との合計を計算する。そして、順序決定部29は、処理時間の合計が短い方の順序を移行順序に決定する。
【0112】
図26及び
図27を参照して、実施の形態3に係る移行順序の決定方法の具体例を説明する。
図26及び
図27では、周期演算部11A及び周期演算部11Bを、それぞれ周期演算部21A及び周期演算部21Bに移行する順序が決定される。
ここでは、周期演算部11A及び周期演算部11Bの演算周期T_cyc[ms]はいずれも同一である。また、演算再現部212A及び演算再現部212Bにおいて、少なくとも演算周期C_max>=2が実現できるように、起動タイミングが調整されているものとする。また、演算再現部212A及び演算再現部212Bの動作フロー(
図12参照)のステップS54のYes条件成立までの処理時間は、移行順序によらず一定であると仮定する。ステップS54のYes条件が成立し、ステップS57の初回実行が開始されてからの演算周期T_cyc[ms]単位で考えた処理時間の推測値は、演算再現部212Aがt_a[ms]であり、演算再現部212Bがt_b[ms]であるとする。また、その他の要素の処理時間も、移行順序によらず一定であると仮定する。
【0113】
ここで、以下の2通りの移行順序におけるt_a+t_bの値を推測する。
<移行順序1>1回目に周期演算部11A、2回目に周期演算部11Bの順序に移行を行う場合(
図26参照)
周期演算部21Aの演算再現部212Aで制限回数C_max=11が設定可能であり、初回の再現演算開始時の推定移行元演算番号と初回の再現演算後の演算データ部22Aが管理する演算番号との差分が480であったとする。そして、t_a=48ms*T_cyc[ms]と推測されたとする。
周期演算部21Bの演算再現部212Bで制限回数C_max=4が設定可能であり、初回の再現演算開始時の推定移行元演算番号と初回の再現演算後の演算データ部22Bが管理する演算番号との差分が30であったとする。そして、t_b=10ms*T_cyc[ms]と推測されたとする。
このとき、t_a+t_b=58*T_cyc[ms]となる。
【0114】
<移行順序2>1回目に周期演算部11B、2回目に周期演算部11Aの順に移行を行う場合(
図27参照)
周期演算部21Bの演算再現部212Bで制限回数C_max=6が設定可能であり、初回の再現演算開始時の推定移行元演算番号と初回の再現演算後の演算データ部22Bが管理する演算番号との差分が30であったとする。そして、t_a=6ms*T_cyc[ms]が推測されたとする。
周期演算部21Aの演算再現部212AでC_max=9が設定可能であり、初回の再現演算開始時の推定移行元演算番号と初回の再現演算後の演算データ部22Aが管理する演算番号との差分が480で、t_b=60ms*T_cyc[ms]が推測されたとする。
このとき、t_a+t_b=66*T_cyc[ms]となる。
【0115】
この場合には、移行順序1の方が、t_a+t_bの値が小さい。そのため、周期演算部21A、22Bの順序が移行順序に決定される。
【0116】
***実施の形態3の効果***
以上のように、実施の形態3に係る制御移行システム100は、移行元の制御装置10で複数の演算処理が実行されている場合に、処理時間が短くなる順序に演算処理の移行順序を決定する。これにより、実施の形態1の効果を得つつ、移行に要する時間を短くすることが可能になる。
【0117】
なお、以上の説明における「部」を、「回路」、「工程」、「手順」、「処理」又は「処理回路」に読み替えてもよい。
【0118】
以上、本開示の実施の形態及び変形例について説明した。これらの実施の形態及び変形例のうち、いくつかを組み合わせて実施してもよい。また、いずれか1つ又はいくつかを部分的に実施してもよい。なお、本開示は、以上の実施の形態及び変形例に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【0119】
100 制御移行システム、10 移行元の制御装置、11 周期演算部、111 演算実行部、12 演算データ部、13 通信制御部、14 移行補助部、15 照合情報転送部、20 移行先の制御装置、21 周期演算部、211 演算実行部、212 演算再現部、22 演算データ部、23 通信制御部、24 移行制御部、241 移行実行部、242 初期同期部、25 再現データ部、26 照合取得部、27 照合実行部、28 照合データ部、29 順序決定部、30 入出力装置、31 入出力制御部、32 制御データ部、33 通信制御部、34 移行補助部、40 制御対象、601 計測値、602 演算結果、621 計測値情報、622 演算結果情報、623 計測値情報要求、624 計測値情報、625 初期同期要求、626 初期同期情報、627 演算結果情報、628 切替準備完了、629 切替タイミング情報、6210 切替タイミング情報、6211 切替完了、6212 切替完了、6213 移行元照合情報、6214 照合完了、91 ネットワーク、92 伝送路。