【解決手段】搬送制御システム1では、一連のデータ処理を互いに独立した複数の処理に分割し、各処理を複数の処理コンポーネント21に実行させる。また、各処理コンポーネント21により入力又は出力されるデータは、処理コンポーネント21とは別のデータストア22に保持され、各処理コンポーネント21間のデータの受け渡しは、処理コンポーネント21間で直接行われずに、データストア22を介して行われる。このように、処理と処理とが分離されると共に処理とデータとが分離されることで、変更対象の処理コンポーネント21以外の処理コンポーネント21及びデータストア22に影響を与えずに、変更対象の処理コンポーネント21を異なる処理コンポーネントに変更することができる。
前記処理実行部及び前記データ保持部とは独立して動作し、前記複数の処理実行部のうち最後の処理実行部により前記処理結果として出力されるデータを保持する送信データ保持部と、
前記処理実行部及び前記データ保持部とは独立して動作し、前記送信データ保持部に保持されたデータを外部に送信する送信処理実行部と、を更に備え、
前記複数の処理実行部のうち最後の処理実行部は、前記処理結果として出力するデータを前記送信データ保持部に出力する、
請求項1又は2記載の搬送制御システム。
前記処理変更部が特定の処理実行部を異なる処理実行部に変更している最中か否かに関わらず、前記特定の処理実行部より後の処理実行部は、前記特定の処理実行部により出力されたデータが前記データ保持部に保持されている場合には、処理を実行する、
請求項4又は5記載の搬送制御システム。
【発明の概要】
【発明が解決しようとする課題】
【0004】
要求される物品の搬送量の増加に伴って、物品の搬送制御をより効率化すべく、搬送制御システムのプログラムを柔軟に変更(アップデート又はロールバック)する必要性が増大すると予想される。搬送制御システムのプログラムを変更する際には、新たな機能を部分的に導入して機能検証を行う必要がある。ここで、搬送制御システムの一部のプログラムを変更する際に搬送制御システム全体を停止してしまうと、工場生産に大きな影響を与えてしまう。一方、このような工場生産に与える影響を許容範囲内に抑えるために、搬送制御システムのプログラムの更新頻度を少なくした場合には、搬送制御システムに対する適宜の改善要求に対して迅速に対応することができない。
【0005】
そこで、一部のプログラム変更に伴うシステム全体の停止を抑制できる搬送制御システムが望まれている。
【課題を解決するための手段】
【0006】
本発明に係る搬送制御システムは、物品の搬送を制御するための一連のデータ処理を実行する搬送制御システムであって、データ処理を構成する互いに独立した複数の処理を実行する複数の処理実行部と、処理実行部により入力又は出力されるデータを複数保持する一以上のデータ保持部と、を備える。複数の処理実行部のうち先頭の処理実行部は、データ処理の対象となるデータを入力し、当該データを用いて所定の処理を実行し、当該処理の実行により得られたデータをデータ保持部に出力し、複数の処理実行部のうち先頭の処理実行部と最後の処理実行部との間の処理実行部は、当該処理実行部の直前の処理実行部によってデータ保持部に出力されたデータを入力し、当該データを用いて所定の処理を実行し、当該処理の実行により得られたデータをデータ保持部に出力し、複数の処理実行部のうち最後の処理実行部は、当該処理実行部の直前の処理実行部によってデータ保持部に出力されたデータを入力し、当該データを用いた所定の処理を実行し、当該処理の実行により得られたデータを処理結果として出力する。
【0007】
上記搬送制御システムでは、一連のデータ処理を互いに独立した複数の処理に分割し、各処理を複数の処理実行部に実行させる。また、各処理実行部により入力又は出力されるデータは、処理実行部とは別のデータ保持部に保持され、各処理実行部間のデータの受け渡しは、処理実行部間で直接行われずに、データ保持部を介して行われる。このように、処理と処理とが分離されると共に処理とデータとが分離されることで、変更対象の処理実行部以外の処理実行部及びデータ保持部に影響を加えることなく、当該変更対象の処理実行部を異なる処理実行部に変更することが可能となっている。したがって、上記搬送制御システムによれば、一部のプログラム変更に伴うシステム全体の停止を抑制できる。特に、搬送される物品が半導体であれば、短期的な需要の増減が頻繁し、需要に応じた適切な搬送量に対応するプログラムを適用することが望ましい。上記搬送制御システムによれば、一のサブ搬送制御システム(処理実行部)でプログラム変更を実行したとしても、その前後工程の他のサブ搬送制御システムは、一のサブ搬送制御システムのプログラム変更を意識することなく、処理を継続することができる。また、搬送制御システムにセキュリティの脆弱が高頻度で見つかった場合にも、他のサブ搬送制御システムの停止を考慮する必要なく、一のサブ搬送制御システムのセキュリティプログラムの更新を速やかに行うことができる。
【0008】
上記搬送制御システムでは、処理実行部及びデータ保持部とは独立して動作し、データ処理の対象となるデータを外部から受信する受信処理実行部と、処理実行部及びデータ保持部とは独立して動作し、受信処理実行部が受信したデータを保持する受信データ保持部と、を更に備え、複数の処理実行部のうち先頭の処理実行部は、受信データ保持部に保持されたデータを入力してもよい。
【0009】
上記搬送制御システムによれば、処理実行部及びデータ保持部とは独立して動作する受信処理実行部及び受信データ保持部が、処理実行部及びデータ保持部が動作しているか否かに関わらず、外部に対する入力インタフェースとして機能する。これにより、例えば処理実行部又はデータ保持部の変更作業によって、処理実行部又はデータ保持部の動作を停止させた場合であっても、外部からのデータ受信を継続することができる。
【0010】
上記搬送制御システムでは、処理実行部及びデータ保持部とは独立して動作し、複数の処理実行部のうち最後の処理実行部により処理結果として出力されるデータを保持する送信データ保持部と、処理実行部及びデータ保持部とは独立して動作し、送信データ保持部に保持されたデータを外部に送信する送信処理実行部と、を更に備え、複数の処理実行部のうち最後の処理実行部は、処理結果として出力するデータを送信データ保持部に出力してもよい。
【0011】
上記搬送制御システムによれば、処理実行部及びデータ保持部とは独立して動作する送信処理実行部及び送信データ保持部が、処理実行部及びデータ保持部が動作しているか否かに関わらず、外部に対する出力インタフェースとして機能する。これにより、例えば処理実行部又はデータ保持部の変更作業によって、処理実行部又はデータ保持部を停止した場合であっても、送信データ保持部にデータが保持されている限りにおいて、外部へのデータ送信を継続することができる。
【0012】
上記搬送制御システムでは、複数の処理実行部のうち一部の処理実行部を異なる処理実行部に変更する処理変更部を更に備え、処理変更部は、複数の処理実行部のうち変更対象の変更前処理実行部を特定する情報と、変更前処理実行部と置き換える変更後処理実行部を特定する情報とを入力する情報入力部と、変更後処理実行部を生成する処理生成部と、変更前処理実行部が処理を実行中であるか否かを判定し、処理を実行中でないと判定できた後に、変更前処理実行部を、処理を実行できない停止状態にする処理停止部と、処理停止部により変更前処理実行部が停止状態にされた後に、変更後処理実行部を、処理を実行できる起動状態にする処理起動部と、を有してもよい。
【0013】
上記搬送制御システムでは、処理変更部は、変更後の処理実行部を生成する。続いて、処理変更部は、変更前処理実行部が処理を実行中でないことを確認した上で、変更前処理実行部を停止すると共に、変更後処理実行部を実行可能な状態にする。このような処理によって、処理実行部の置き換えに係るデータ不整合を防止すると共に、変更に係る処理実行部以外の処理実行部及びデータ保持部に影響を及ぼすことなく、変更前処理実行部を変更後処理実行部に置き換えることができる。したがって、上記搬送制御システムによれば、一部のプログラム変更に伴うシステム全体の停止を抑制できる。
【0014】
上記搬送制御システムでは、処理変更部が特定の処理実行部を異なる処理実行部に変更している最中か否かに関わらず、特定の処理実行部より前の処理実行部は、処理を実行してもよい。
【0015】
上記搬送制御システムにおいては、処理実行部間のデータの受け渡しは、データ保持部を介して行われ、処理実行部間で直接行われない。このため、処理変更部によって特定の処理実行部について変更処理が実行されている最中であっても、当該特定の処理実行部より前の処理実行部は、当該特定の処理実行部の変更による影響を受けずに、処理の実行を継続することができる。したがって、上記搬送制御システムによれば、特定の処理実行部を変更している最中であっても、当該特定の処理実行部より前の処理実行部による処理が継続されることで、システム全体の停止が抑制される。
【0016】
上記搬送制御システムでは、処理変更部が特定の処理実行部を異なる処理実行部に変更している最中か否かに関わらず、特定の処理実行部より後の処理実行部は、特定の処理実行部により出力されたデータがデータ保持部に保持されている場合には、処理を実行してもよい。
【0017】
上記搬送制御システムにおいては、処理変更部によって特定の処理実行部について変更処理が実行されている最中であっても、当該特定の処理実行部より後の処理実行部は、データ保持部に入力データが保持されていれば、処理を実行することができる。したがって、上記搬送制御システムによれば、特定の処理実行部を変更している最中であっても、当該特定の処理実行部より後の処理実行部による処理が継続されることで、システム全体の停止が抑制される。
【0018】
上記搬送制御システムでは、データ保持部を異なるデータ保持部に変更するデータ変更部を更に備え、データ変更部は、データ保持部と置き換える変更後データ保持部を特定する情報と、複数の処理実行部のうち変更対象の変更前処理実行部を特定する情報と、変更前処理実行部と置き換える変更後処理実行部を特定する情報とを入力する情報入力部と、変更後データ保持部及び変更後処理実行部を生成する処理生成部と、変更前処理実行部が処理を実行中であるか否かを判定し、処理を実行中でないと判定できた後に、変更前処理実行部を、処理を実行できない停止状態にする処理停止部と、処理停止部により変更前処理実行部が停止状態にされた後に、データ保持部に保持されているデータを変更後データ保持部に移行するデータ移行部と、データ移行部によるデータの移行がされた後に、変更後処理実行部を、処理を実行できる起動状態にする処理起動部と、を有してもよい。
【0019】
上記搬送制御システムでは、データ変更部は、変更後データ保持部を生成し、変更後処理実行部を生成する。続いて、データ変更部は、変更前処理実行部を停止した後に、データ移行部によって変更前のデータ保持部から変更後データ保持部にデータを移行した後に、変更後処理実行部を起動する。このような処理によって、処理実行部及びデータ保持部の両方の置き換えを予め確立された手順で確実かつ容易に実行することができる。したがって、上記搬送制御システムによれば、一部のプログラム変更に伴うシステム全体の長期間の停止を抑制できる。
【発明の効果】
【0020】
本発明によれば、一部のプログラム変更に伴うシステム全体の停止を抑制できる搬送制御システムを提供することができる。
【発明を実施するための形態】
【0022】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一又は同等の要素には同一の符号を付し、重複する説明を省略する。
【0023】
図1に示される本実施形態に係る搬送制御システム1は、例えば半導体等の物品の搬送を制御するためのデータ処理を実行するコンピュータシステムである。
図1に示すように、搬送制御システム1は、受信インタフェース10、制御アプリケーション20、送信インタフェース30、処理変更部40、及びデータ変更部50を備える。受信インタフェース10、制御アプリケーション20、送信インタフェース30、処理変更部40、及びデータ変更部50は、例えばC#等のオブジェクト指向プログラミング言語を用いて作成されるプログラムとして実装される。このようなオブジェクト指向プログラミング言語を用いて作成されるプログラムでは、データ構造と振る舞い(処理)とを記述したクラス(雛形)に基づいて、具体的な処理を実行可能なオブジェクト(インスタンス)が後述するRAM102上に生成される。そして、RAM102上に生成されたこれらのインスタンス同士が連携して処理を実行するように構成される。以降の説明において、単に「生成」と言った場合には、クラスに基づいてインスタンスをRAM102上に生成することを意味するものとする。
【0024】
搬送制御システム1は、受信インタフェース10を介して外部システム2からデータを受信する。制御アプリケーション20は、受信インタフェース10によって受信されたデータを入力し、所定の演算処理やデータ加工処理等を実行する。そして、送信インタフェース30は、制御アプリケーション20による処理結果(演算結果や加工後データ等)を外部システム3に送信する。ここで、外部システム2及び外部システム3は、搬送制御システム1とは別のコンピュータシステムであってもよいし、後述する入力装置104及び出力装置105等を介して搬送制御システム1を利用するオペレータであってもよい。外部システム2がオペレータである場合には、受信インタフェース10は、キーボード等の入力装置104を介してオペレータにより入力されるデータを取得する。また、外部システム3がオペレータである場合には、送信インタフェース30は、ディスプレイ等の出力装置105を介してオペレータにデータを提示する。また、外部システム2は、外部システム3と同一であってもよい。
【0025】
図2に示すように、搬送制御システム1は、ハードウェア構成として、一以上のCPU101と、主記憶装置である一以上のRAM102及び一以上のROM103と、キーボード等の入力装置104と、ディスプレイ等の出力装置105と、外部との有線通信又は無線通信を行うための通信モジュール106と、ハードディスクドライブ及び半導体メモリ等の補助記憶装置107とを含むコンピュータシステムとして構成されている。
【0026】
搬送制御システム1の受信インタフェース10、制御アプリケーション20、送信インタフェース30、処理変更部40、及びデータ変更部50の各機能は、例えば、
図2に示されるCPU101、RAM102等のハードウェア上に所定のプログラムを読み込ませることにより、CPU101の制御のもとで入力装置104及び出力装置105を動作させると共に通信モジュール106を動作させ、RAM102及び補助記憶装置107におけるデータの読み出し及び書き込みを行うことで実現される。
【0027】
受信インタフェース10は、外部システム2からのデータを受信するインタフェースであり、制御アプリケーション20とは独立して動作する。受信インタフェース10は、受信処理コンポーネント(受信処理実行部)11及び受信データストア(受信データ保持部)12を有する。受信処理コンポーネント11は、外部システム2から入力されたデータを受信する処理を実行する。受信処理コンポーネント11は、外部システム2から制御アプリケーション20の処理に用いるためのデータを受信した場合には、受信したデータ(以下「データA」と表記する。)を受信データストア12に保持する。また、受信処理コンポーネント11は、外部システム2から後述する処理コンポーネント21の変更、又は後述するデータストア22の変更等の指示情報を受信してもよい。この場合には、受信処理コンポーネント11は、当該指示情報を後述する処理変更部40又はデータ変更部50に通知する。また、受信処理コンポーネント11は、受信処理の一部の処理として、外部システム2からのデータ受信の正常完了又は失敗を示す情報を応答メッセージとして外部システム2に出力してもよい。
【0028】
受信データストア12は、例えばキューとして構成され、受信処理コンポーネント11により受信されたデータを保持する。受信データストア12に保持されるデータ(データA)は、後述する制御アプリケーション20に含まれる複数の処理コンポーネントのうち先頭の処理Aを実行する処理コンポーネント21に対する入力データとなる。なお、受信処理コンポーネント11及び受信データストア12は、上述のように1種類のデータ(データA)を受信及び保持するように構成されてもよいが、複数の種類のデータを受信及び保持するように構成されてもよい。
【0029】
制御アプリケーション20は、物品の搬送を制御するための具体的なデータ処理(演算処理やデータ加工処理等)を実行する部分であり、複数(ここでは一例として3つ)の処理コンポーネント(処理実行部)21(21A,21B,21C)と、データストア(データ保持部)22とを有する。本実施形態では一例として、複数の処理コンポーネント21A,21B,21Cは、一連のデータ処理を構成する互いに独立した複数の処理の各々を順に実行するように、直列に配置され、それぞれ処理A,処理B,処理Cを実行する。データストア22は、例えば複数のデータを種類毎に蓄積するキューとして構成され、各処理コンポーネント21により入力又は出力されるデータを複数保持するデータ保持部である。各処理コンポーネント21は、後述するインスタンス構成により、データストア22にアクセス可能とされている。
【0030】
図3に、処理コンポーネント21及びデータストア22のインスタンス構成を概念的に示す。ただし、
図3に示すインスタンス構成は一例にすぎない。
図3に示すように、各処理コンポーネント21は、データストア22に保持されるデータを用いた所定の処理(演算処理、及びデータ加工等)を実行するための一以上(ここでは一例として2つ又は3つ)のインスタンス(制御ロジックL)と、制御ロジックLの実行を管理するためのインスタンス(パイプラインP)とによって構成される。なお、ここでは一例としてデータストア22が一つである場合について説明するが、データストア22は、保持するデータの種類等に応じて複数設けられてもよい。
【0031】
処理コンポーネント21を上述のようにパイプラインPと一以上の制御ロジックLとに分けて構成することで、処理コンポーネント21が実行する処理(処理A,処理B,又は処理C)を更に細かい処理単位に分割することができる。このように処理を分割することで、複数の処理コンポーネント21間で制御ロジックLの処理の共通化を図ることが容易となり、既存の制御ロジックLのクラス(プログラム)の再利用性を高めることができる。すなわち、処理コンポーネント21間で、共通の処理を実行する制御ロジックLについては、共通のクラスから生成することができるので、制御アプリケーション20全体で必要となる制御ロジックLのクラスの種類を減らすことができ、プログラム開発の負担を軽減できる。
【0032】
本実施形態では、上述したデータストア22は、制御ロジックLに対して、後述するアダプタAを介してデータアクセス機能を提供するためのインスタンスである。データストア22は、例えば、実際に扱うデータの保存フォーマット等の差異を吸収して共通的なデータアクセスが可能なように記述されたラッパークラスのインスタンス(図示省略)を、制御ロジックL及びアダプタAとの間でやり取りするためのデータとして保持してもよい。
【0033】
各制御ロジックLは、アダプタAに関連付けられ、アダプタAは、データストア22に関連付けられる。このようにして、制御ロジックLは、アダプタAを介して間接的にデータストア22にアクセスする構成とされている。これにより、制御ロジックLからデータストア22に保持されたデータに対する無制限のアクセスを禁止できる。つまり、アダプタAは、制御ロジックLに対して、データストア22に保持されたデータのうち当該制御ロジックLの処理に必要なデータに対して必要最小限のアクセス(読み出しのみ等)を提供する。これにより、制御ロジックLからデータストア22に保持されたデータに対して許可されないアクセスがされたか否か、データが改竄されたか否かといった監視の負担を軽減できる。
図3に示したように、アダプタAは、互いに異なる制御ロジックL間で許可されるデータアクセスの内容が同一の場合には、共有されてもよい。
【0034】
パイプラインPは、処理を実行することが可能か否かを示す状態(実行可能状態)として、「起動状態」、「停止状態」、及び「停止移行状態」を有する。パイプラインPは、パイプラインPの実行可能状態が上記いずれの状態であるかを示す実行可能フラグを保持する。「起動状態」は、パイプラインPが制御ロジックLに処理を実行させてもよい状態を示す。すなわち、「起動状態」は、処理コンポーネント21が処理を実行できる状態を示す。「停止状態」は、パイプラインPが制御ロジックLに処理を実行させてはならない状態を示す。すなわち、「停止状態」は、処理コンポーネント21が処理を実行できない状態を示す。「停止移行状態」は、パイプラインPが「起動状態」から「停止状態」に移行する前段階の状態を示す。より具体的には、「停止移行状態」は、既に実行開始している処理は実行を継続することができる一方で、実行開始していない処理が新たに処理を実行開始することができない状態を示す。すなわち、「停止移行状態」とは、既に実行開始している処理の終了を待つための状態である。
【0035】
パイプラインPは、処理を実行中か否かを示す状態(実行状態)として、「実行中状態」及び「非実行状態」を有する。パイプラインPは、パイプラインPの実行状態が上記いずれの状態であるかを示す実行フラグを保持する。「実行中状態」は、パイプラインPが管理する制御ロジックLのうち1以上の制御ロジックLが処理を実行している状態を示す。すなわち、「実行中状態」は、処理コンポーネント21が処理を実行している状態を示す。「非実行状態」は、パイプラインPが管理する制御ロジックLのうち処理を実行している制御ロジックLが1つもない状態を示す。すなわち、「非実行状態」は、処理コンポーネント21が処理を実行していない状態を示す。
【0036】
パイプラインPは、生成された時点では、停止状態かつ非実行状態とされる。パイプラインPは、外部刺激(オペレータ等の外部システム2からの明示の要求や、タイマー等によるトリガ等)を受けると、停止状態から起動状態に遷移する。パイプラインP及び制御ロジックLの動作は、パイプラインPの実行可能状態及び実行状態により制限される。パイプラインPは、起動状態である場合にのみ、非実行状態から実行中状態に遷移できる。すなわち、パイプラインPが起動状態である場合にのみ、パイプラインPが管理する制御ロジックLは、処理を実行することができる。また、パイプラインPが非実行状態である場合にのみ、パイプラインPは、停止状態に遷移できる。このようなパイプラインP及び制御ロジックLの動作の仕組みは、例えば、パイプラインP及び制御ロジックLが、特定の動作(停止、所定の処理の実行等)を実行する前に、パイプラインPの実行可能フラグ及び実行フラグを参照し、フラグの状態によって特定の動作の実行可否を決定することで実現される。
【0037】
また、
図3に示すように、受信処理コンポーネント11及び後述する送信処理コンポーネント31についても、処理コンポーネント21と同様のインスタンス構成とされていてもよい。
図3では、受信処理コンポーネント11及び送信処理コンポーネント31の制御ロジックLの数を1つと図示しているが、受信処理コンポーネント11及び送信処理コンポーネント31は、2以上の制御ロジックLを有する構成とされてもよい。
【0038】
続いて、
図1及び
図3を参照して、制御アプリケーション20が一連のデータ処理を実行する流れを説明する。
【0039】
まず、先頭の処理Aを実行する処理コンポーネント21Aは、受信データストア12に蓄積されたデータAをデータ処理の対象データとして入力し、データAを用いて処理Aを実行し、処理Aの実行により得られたデータ(以下「データB」と表記する。)をデータストア22に出力する。これにより、データストア22には、データBが保持される。
【0040】
処理コンポーネント21Aによる上記処理は、例えば以下のようにして実現される。先頭の制御ロジックL11は、パイプラインP1の実行可能フラグが起動状態を示している場合に、受信データストア12を定期的に監視する。制御ロジックL11は、受信データ(データA)が保持されていることを検知したら、制御ロジックL12に通知する。制御ロジックL11から通知を受けた制御ロジックL12は、アダプタA1を介して受信データストア12からデータAを取得し、所定の処理(演算処理、及びデータ加工等)を実行する。制御ロジックL12は、処理後のデータを制御ロジックL13に出力する。制御ロジックL13は、制御ロジックL12から取得したデータ(データB)を、アダプタA2を介してデータストア22に出力する。
【0041】
続いて、一連のデータ処理のうち2番目の処理Bを実行する処理コンポーネント21Bは、処理コンポーネント21Bの直前の処理コンポーネント21Aによってデータストア22に出力されたデータBを入力し、データBを用いて処理Bを実行し、処理Bの実行により得られたデータ(以下「データC」と表記する。)をデータストア22に出力する。これにより、データストア22には、データCが蓄積される。
【0042】
処理コンポーネント21Bによる上記処理は、例えば以下のようにして実現される。パイプラインP2が保持する実行可能フラグが「起動状態」を示している場合に、先頭の制御ロジックL21は、アダプタA3を介してデータストア22を定期的に監視する。制御ロジックL21は、データストア22に処理対象のデータ(データB)が保持されていることを検知したら、データストア22からデータBを取得する。制御ロジックL21は、取得したデータBを用いて所定の処理を実行し、所定の処理の実行により得られたデータを制御ロジックL22に出力する。制御ロジックL22は、制御ロジックL21から取得したデータCを、アダプタA4を介してデータストア22に出力する。
【0043】
続いて、最後の処理Cを実行する処理コンポーネント21Cは、直前の処理コンポーネント21Bによってデータストア22に出力されたデータCを入力し、当該データCを用いて処理Cを実行し、処理Cの実行により得られたデータ(以下「データD」と表記する。)を一連のデータ処理の処理結果として送信データストア32に出力する。これにより、送信データストア32には、外部システム3に送信するためのデータDが蓄積される。
【0044】
処理コンポーネント21Cによる上記処理は、例えば以下のようにして実現される。パイプラインP3が保持する実行可能フラグが「起動状態」を示している場合に、先頭の制御ロジックL31は、アダプタA4を介してデータストア22を定期的に監視する。制御ロジックL31は、データストア22に処理対象のデータ(データC)が保持されていることを検知したら、データストア22からデータCを取得する。制御ロジックL31は、取得したデータCを用いて所定の処理を実行し、所定の処理の実行により得られたデータを制御ロジックL32に出力する。制御ロジックL32は、制御ロジックL31から取得したデータDを、アダプタA5を介して送信データストア32に出力する。
【0045】
送信インタフェース30は、外部システム3にデータを送信するためのインタフェースであり、制御アプリケーション20とは独立して動作する。送信インタフェース30は、送信処理コンポーネント(送信処理実行部)31及び送信データストア(送信データ保持部)32を有する。送信データストア32は、例えばキューとして構成され、上述の通り、複数の処理コンポーネント21のうち最後の処理Cを実行する処理コンポーネント21Cが一連のデータ処理の処理結果として出力したデータDを蓄積する。送信処理コンポーネント31は、送信データストア32に蓄積されたデータDを外部システム3に送信する処理を実行する。
【0046】
送信処理コンポーネント31が外部システム3にデータDを送信するタイミングは、任意に定めることができる。例えば、送信処理コンポーネント31は、参照可能なタイマーにより、予め定められた送信時刻に達したか否かを定期的に判定し、送信時刻に達したと判定したときに送信データストア32からデータDを取得し、取得したデータDを外部システム3に送信してもよい。また、何らかの方法により外部システム3からデータ送信要求を受け付けたときに送信データストア32からデータDを取得し、取得したデータDを外部システム3に送信してもよい。また、送信処理コンポーネント31は、送信データストア32に保持されたデータDがない場合には、送信データがないことを示すメッセージを外部システム3に送信してもよい。なお、送信データストア32及び送信処理コンポーネント31は、上述のように1種類のデータ(データD)を保持及び送信するように構成されてもよいし、複数の種類のデータを保持及び送信するように構成されてもよい。
【0047】
ここで、受信インタフェース10による受信処理は、制御アプリケーション20の処理には依存しない。すなわち、受信処理コンポーネント11は、外部システム2から受信したデータをデータストア22とは独立した受信データストア12に蓄積し、制御アプリケーション20(処理コンポーネント21又はデータストア22)に対して直接データを受け渡さない。これにより、受信インタフェース10を、制御アプリケーション20とは別スレッド(又は別プロセス)として動作させることができる。この場合、受信インタフェース10による外部システム2からのデータ受信処理を、制御アプリケーション20による処理実行と並列して実行することができる。また、仮に制御アプリケーション20が動作を停止しているときにも、受信インタフェース10を動作させることができ、外部システム2との通信(データ受信等)を継続することができる。
【0048】
送信インタフェース30による送信処理も、制御アプリケーション20の処理には依存しない。すなわち、送信処理コンポーネント31は、データストア22とは独立した送信データストア32に蓄積されたデータを外部システム3への送信データとして取得し、制御アプリケーション20(処理コンポーネント21又はデータストア22)から直接データを受け取らない。これにより、送信インタフェース30を、制御アプリケーション20とは別スレッド(又は別プロセス)として動作させることができる。この場合、送信インタフェース30による外部システム3へのデータ送信処理を、制御アプリケーション20による処理実行と並列して実行することができる。また、仮に制御アプリケーション20が動作を停止しているときにも、送信インタフェース30を動作させることができ、外部システム4との通信(データ送信等)を継続することができる。
【0049】
以上述べたように、搬送制御システム1では、一連のデータ処理を互いに独立した複数の処理に分割し、各処理を直列に配置した複数の処理コンポーネント21に実行させる。また、各処理コンポーネント21により入力又は出力されるデータは、処理コンポーネント21とは別のデータストア22に保持され、各処理コンポーネント21間のデータの受け渡しは、処理コンポーネント21間で直接行われずに、データストア22を介して行われる。このように、処理と処理とが分離されると共に処理とデータとが分離されることで、後述する処理変更部40によって一部の処理コンポーネント21を異なる処理コンポーネントに変更する際に、変更対象の処理コンポーネント21以外の処理コンポーネント21及びデータストア22に影響を与えずに、変更対象の処理コンポーネント21を異なる処理コンポーネントに変更することができる。したがって、搬送制御システム1によれば、一部のプログラム変更に伴うシステム全体の停止を抑制できる。
【0050】
続いて、制御アプリケーション20において実行されるデータ処理の内容を変更するための構成を説明する。搬送制御システム1では、処理変更部40によって一部の処理コンポーネント21を置き換えることで、制御アプリケーション20における処理の一部を変更する。
【0051】
処理変更部40は、複数の処理コンポーネント21のうち一部の処理コンポーネント(例えば処理コンポーネント21B)を異なる処理コンポーネントに変更する処理変更部である。処理変更部40は、情報入力部41、処理コンポーネント生成部(処理生成部)42、処理コンポーネント停止部(処理停止部)43、処理コンポーネント起動部(処理起動部)44、及び処理コンポーネント消滅部45を備える。
【0052】
図4〜
図8を用いて、処理変更部40の各機能要素が実行する処理内容を説明すると共に、処理変更部40の処理フローについて説明する。ここでは、一例として
図1に示した処理コンポーネント21のうち変更対象の処理コンポーネント21B(変更前処理コンポーネント)を異なる処理コンポーネント21D(変更後処理コンポーネント)に変更する場合を例に説明する。ここで、
図7及び
図8に示すように、処理コンポーネント21Dは、パイプラインP4と2つの制御ロジックL41,L42とを有する。
【0053】
図4に示すように、まず、情報入力部41によって情報入力処理が実行される(ステップS1)。情報入力処理は、変更前処理コンポーネントを特定する情報と、変更前処理コンポーネントと置き換える変更後処理コンポーネントとを特定する情報と、を入力する処理である。情報入力部41は、例えば受信インタフェース10を介して、オペレータ等(外部システム2)から、変更前処理コンポーネントを特定する情報及び変更後処理コンポーネントを特定する情報を取得する。ここでは、変更前処理コンポーネントは、処理コンポーネント21Bであり、変更後処理コンポーネントは、処理コンポーネント21Dである。また、変更前処理コンポーネントを特定する情報とは、処理コンポーネント21Bを構成するインスタンス(パイプラインP2、及び制御ロジックL21,L22)を示す情報である。変更後処理コンポーネントを特定する情報とは、処理コンポーネント21Dを構成するインスタンス(パイプラインP4、及び制御ロジックL41,L42)を示す情報である。
【0054】
続いて、処理コンポーネント生成部42によって変更後処理コンポーネント生成処理が実行される(ステップS2)。変更後処理コンポーネント生成処理は、処理コンポーネント21Bを生成すると共に、処理コンポーネント21BをアダプタAを介してデータストア22に接続する処理である。
【0055】
図5に、変更後処理コンポーネント生成処理の詳細なフローを示す。
図5に示すように、処理コンポーネント生成部42は、情報入力部41から変更後処理コンポーネントを特定する情報を入力し、処理コンポーネント21Dを構成するパイプラインP4及び制御ロジックL41,L42を特定する(ステップS21)。続いて、処理コンポーネント生成部42は、ステップS21で特定したパイプラインP4を生成する(ステップS22)。続いて、処理コンポーネント生成部42は、ステップS21で特定した制御ロジックL41,L42を生成し、パイプラインP4に関連付ける(ステップS23)。続いて、処理コンポーネント生成部42は、制御ロジックL41,L42を所定のアダプタAに関連付ける(ステップS24)。この際、処理コンポーネント生成部42は、制御ロジックL41,L42を既存のアダプタAに関連付けてもよいし、新規に生成したアダプタに関連付けてもよい。これにより、制御ロジックL41,L42は、アダプタAを介してデータストア22に接続される。
【0056】
図7に、変更後処理コンポーネント生成処理が実行された後の状態を示す。この例では、制御ロジックL21に関連付けられているアダプタA2に制御ロジックL41を関連付けており、制御ロジックL22に関連付けられているアダプタA3に制御ロジックL42を関連付けている。これにより、制御ロジックL41は、アダプタA2を介してデータストア22からデータBを取得可能とされ、制御ロジックL42は、アダプタA3を介してデータストア22にデータ(データCに対応するデータ)を出力可能とされている。ただし、この時点では、処理コンポーネント21Bにより処理が実行されており、処理コンポーネント21Dは、処理を停止している。すなわち、パイプラインP4は、停止状態となっており、制御ロジックL41,L42は、処理を実行することができない状態である。
【0057】
なお、処理コンポーネント生成部42は、制御ロジックL41,L42を生成する処理、及び、制御ロジックL41,L42を所定のアダプタAに関連付ける処理を、制御ロジックL41,L42を管理するパイプラインP4に実行させてもよい。
【0058】
続いて、処理コンポーネント停止部43によって変更前処理コンポーネント停止処理が実行される(ステップS3)。変更前処理コンポーネント停止処理は、処理コンポーネント21Bが処理を実行中であるか否かを判定し、処理を実行中でないと判定できた後に、処理コンポーネント21Bを停止状態にする処理である。
【0059】
図6に、変更前処理コンポーネント停止処理の詳細なフローを示す。
図6に示すように、処理コンポーネント停止部43は、情報入力部41から変更前処理コンポーネントを特定する情報を入力し、処理コンポーネント21Bを構成するパイプラインP2を特定する(ステップS31)。続いて、処理コンポーネント停止部43は、パイプラインP2に対して、実行可能状態を停止状態に変更するように指示する(ステップS32)。指示を受け取ったパイプラインP2は、自身が保持する実行可能フラグを参照し、起動状態であるか否かを判定する(ステップS33)。ここで、実行可能フラグが停止状態である場合(ステップS33:NO)には、パイプラインP2は、処理コンポーネント停止部43に結果(正常完了)を通知して処理を終了する。一方、実行可能フラグが起動状態である場合(ステップS33:YES)には、パイプラインP2は、実行可能フラグを停止移行状態に設定する(ステップS34)。これにより、パイプラインP2が管理する制御ロジックL21,L22が一連の処理を完了してパイプラインP2の実行状態が非実行中状態となった後には、制御ロジックL21,L22は、再度処理を実行することができなくなる。その後、パイプラインP2は、実行フラグを参照し、実行フラグが非実行状態である場合(ステップS35:YES)には、実行可能フラグを停止状態にし、処理コンポーネント停止部43に結果(正常完了)を通知して処理を終了する(ステップS36)。一方、実行フラグが実行中状態である場合(ステップS35:NO)には、ステップS35の判定を所定間隔で繰り返し実行し、制御ロジックL21,L22の処理が完了してパイプラインP2の実行フラグが非実行状態となったことを判定した時点(ステップS35:YES)で、パイプラインP2の実行可能フラグを停止状態にし、処理コンポーネント停止部43に結果(正常完了)を通知して処理を終了する(ステップS36)。
【0060】
続いて、処理コンポーネント起動部44によって変更後処理コンポーネント起動処理が実行される(ステップS4)。変更後処理コンポーネント起動処理は、変更前処理コンポーネント停止処理(ステップS3)により、パイプラインP2が停止状態にされた後に、処理コンポーネント21Dを起動状態にする処理である。具体的には、処理コンポーネント起動部44は、処理コンポーネント21Dの実行可能フラグを起動状態に設定する。これにより、処理コンポーネント21Dは、処理を実行可能な状態となり、処理コンポーネント21Bから処理コンポーネント21Dへの置き換えが完了する。処理コンポーネント21Dに関連付けられるデータストアが、他の処理コンポーネント21A〜21Cに関連付けられたデータストア22と異なる場合には、処理コンポーネント21Bと処理コンポーネント21Dとを両方起動状態としてもよい。これにより、処理コンポーネント21Dの検証を、処理コンポーネント21Bを実行中としたままで行うことができ、万が一処理コンポーネント21Dに不具合があった場合には、処理コンポーネント21Dを停止及び消滅させること(処理コンポーネント21Dへの置き換えの取り消し)を容易に行うことができる。
【0061】
ステップS4までの処理が完了した後、処理コンポーネント消滅部45は、RAM102上から不要となった処理コンポーネント21Bのインスタンスを消滅させる。例えば、処理コンポーネント消滅部45は、処理コンポーネント21BのパイプラインP2及び制御ロジックL21,L22に対して消滅指示を通知する。そして、当該消滅指示の通知を受けたパイプラインP2及び制御ロジックL21,L22は、終了処理を実行し、RAM102上から消滅する(
図8参照)。
【0062】
以上述べたように、処理変更部40は、処理コンポーネント21D(変更後処理コンポーネント)を生成すると共に、処理コンポーネント21DをアダプタA2,A3を介してデータストア22に接続する。続いて、処理変更部40は、処理コンポーネント21B(変更前処理コンポーネント)が処理を実行中でないこと(パイプラインP2が非実行状態であること)を確認した上で、処理コンポーネント21Bを停止する(パイプラインP2を停止状態にする)と共に、処理コンポーネント21Dを起動状態にする。これにより、処理コンポーネント21Dがデータストア22にアクセス可能となる。このような処理によって、処理コンポーネント21B,21Dの置き換えに係るデータ不整合が防止されると共に、変更に係る処理コンポーネント21B以外の処理コンポーネント21A,21C及びデータストア22の動作に影響を及ぼすことなく、処理コンポーネント21Bを処理コンポーネント21Dに置き換えることができる。したがって、搬送制御システム1によれば、一部のプログラム変更に伴うシステム全体の停止を抑制できる。
【0063】
また、処理変更部40が処理コンポーネント21Bを異なる処理コンポーネント21Dに変更している最中か否かに関わらず、上流の処理コンポーネント21Aは、処理を実行してもよい。なぜならば、処理コンポーネント21間のデータの受け渡しは、データストア22を介して行われ、処理コンポーネント21間で直接行われないからである。このため、処理変更部40によって処理コンポーネント21Bについて変更処理が実行されている最中であっても、上流の処理コンポーネント21Aは、処理コンポーネント21Bの変更による影響を受けずに、処理の実行を継続することができる。したがって、搬送制御システム1によれば、特定の処理コンポーネント21を変更している最中であっても、当該特定の処理コンポーネント21よりも前(上流)の処理コンポーネント21による処理が継続されることで、システム全体の停止が抑制される。
【0064】
また、処理変更部40が処理コンポーネント21Bを異なる処理コンポーネント21Dに変更している最中か否かに関わらず、下流の処理コンポーネント21Cは、処理コンポーネント21Bにより出力されたデータ(データC)がデータストア22に保持されている場合には、処理を実行してもよい。なぜならば、処理変更部40によって処理コンポーネント21Bを処理コンポーネント21Dに変更する処理が実行されている最中であっても、下流の処理コンポーネント21Cは、データストアに入力データ(データC)が保持されていれば、処理を実行することができるからである。したがって、搬送制御システム1によれば、特定の処理コンポーネント21を変更している最中であっても、当該特定の処理コンポーネント21よりも後(下流)の処理コンポーネント21による処理が継続されることで、システム全体の停止が抑制される。
【0065】
なお、変更に係る特定の処理コンポーネント21の実行中に他の処理コンポーネント21が処理を実行する構成は、例えば、処理コンポーネント21毎に異なるスレッドを割り当て、複数の処理コンポーネント21を並列実行させることで実現できる。
【0066】
データ変更部50は、データストア22を異なるデータストア23に変更するデータ変更部である。例えば、複数の処理コンポーネント21A,21B,21Cの処理を変更すると共にデータストア22において保持しているデータ定義において新たな型を扱えるようにしたデータを処理コンポーネント21に処理させたい場合が考えられる。データ変更部50は、このような場合に、データの整合性を維持したまま、既存のデータストア22を、新たな型を扱えるようにしたデータを保持するデータストア23に変更する。なお、変更後のデータストア23に保持されるデータを新旧の処理コンポーネント21が利用できるように、アダプタAでデータの型の違いを吸収してもよい。データ変更部50は、情報入力部51、インスタンス生成部(処理生成部)52、処理コンポーネント停止部(処理停止部)53、データ移行部54、処理コンポーネント起動部(処理起動部)55、及びインスタンス消滅部56を備える。
【0067】
図9〜
図12を用いて、データ変更部50の各機能要素が実行する処理内容を説明すると共に、データ変更部50の処理フローについて説明する。ここでは、一例として
図1に示したデータストア22を異なるデータストア23(変更後データストア)に変更する場合を例に説明する。ここで、データ変更部50の処理フローのうち、既に処理変更部40の処理フローを説明する際に説明した内容については適宜説明を省略する。また、複数の処理コンポーネント21をそれぞれ、異なる処理コンポーネントに変更する方法はいずれも同様であるため、ここでは、処理コンポーネント21Bにのみ着目し、データストア22をデータストア23に変更すると共に処理コンポーネント21Bをデータストア23に関連付けられる処理コンポーネント21Eに変更する場合の処理手順について説明する。ここで、
図11及び
図12に示すように、処理コンポーネント21Eは、パイプラインP5と2つの制御ロジックL51,L52とを有する。
【0068】
図9に示すように、まず、情報入力部51によって情報入力処理が実行される(ステップS11)。この情報入力処理は、変更後データストアを特定する情報と、変更前処理コンポーネントを特定する情報と、変更前処理コンポーネントと置き換える変更後処理コンポーネントとを特定する情報と、を入力する処理である。情報入力部51は、例えば受信インタフェース10を介して、オペレータ等(外部システム2)から、変更後データストアを特定する情報、変更前処理コンポーネントを特定する情報、及び変更後処理コンポーネントを特定する情報を取得する。ここでは、変更後データストアは、データストア23である。上述の通り、ここでは処理コンポーネント21Bにのみ着目して説明を行うため、変更前処理コンポーネントは、処理コンポーネント21Bであり、変更後処理コンポーネントは、処理コンポーネント21Eである。
【0069】
続いて、インスタンス生成部52によってインスタンス生成処理が実行される(ステップS12)。インスタンス生成処理は、変更後のデータストア23及び処理コンポーネント21Eを生成すると共に、処理コンポーネント21EをアダプタAを介してデータストア23に接続する処理である。
【0070】
図10に、インスタンス生成処理の詳細なフローを示す。
図10に示すように、インスタンス生成部52は、情報入力部51から変更後データストアを特定する情報と変更後処理コンポーネントを特定する情報とを入力し、データストア23を特定すると共に、処理コンポーネント21Eを構成するパイプラインP5及び制御ロジックL51,L52を特定する(ステップS121)。続いて、インスタンス生成部52は、特定したデータストア23を生成する(ステップS122)。続いて、インスタンス生成部52は、データストア23にアクセスするためのアダプタA11,A12を生成し(ステップS123)、アダプタA11,A12をそれぞれデータストア23に関連付ける(ステップS124)。続いて、インスタンス生成部52は、パイプラインP5を生成する(ステップS125)。続いて、インスタンス生成部52は、ステップS121で特定した制御ロジックL51,L52を生成し、パイプラインP5に関連付ける(ステップS126)。続いて、インスタンス生成部52は、制御ロジックL51,L52をそれぞれアダプタA11,A12に関連付ける(ステップS127)。これにより、制御ロジックL51,L52は、アダプタA11,A12を介してデータストア23に接続される。
【0071】
図11に、インスタンス生成処理が実行された後の処理コンポーネント21B及び処理コンポーネント21Eの状態を示す。この時点では、処理コンポーネント21Bにより処理が実行されており、処理コンポーネント21Eは、処理を停止している。すなわち、パイプラインP5は、停止状態となっており、制御ロジックL51,L52は、処理を実行することができない状態となっている。
【0072】
続いて、処理コンポーネント停止部53によって変更前処理コンポーネント停止処理が実行される(ステップS13)。変更前処理コンポーネント停止処理は、処理コンポーネント21Bが処理を実行中であるか否かを判定し、処理を実行中でないと判定できた後に、処理コンポーネント21Bを、停止状態にする処理である。この変更前処理コンポーネント停止処理の詳細な処理フローは、上述した処理フロー(
図6参照)と同様であるため、説明を省略する。
【0073】
続いて、データ移行部54によってデータ移行処理が実行される。データ移行処理は、処理コンポーネント停止部53により処理コンポーネント21Bが停止状態にされた後に、データストア22に保持されているデータをデータストア23に移行する処理である。例えば、データ移行部54は、データストア22及びデータストア23の両方にアクセス可能なデータ移行用のデータ移行インスタンス25を生成し、データストア22からデータストア23へのデータ移行(データの移動又はコピー)をデータ移行インスタンス25に実行させることで、データストア22からデータストア23へのデータ移行を実行してもよい(
図12参照)。
【0074】
続いて、処理コンポーネント起動部55によって変更後処理コンポーネント起動処理が実行される(ステップS15)。変更後処理コンポーネント起動処理は、データ移行処理(ステップS14)の後に、処理コンポーネント21Eを起動状態にする処理である。具体的には、処理コンポーネント起動部55は、処理コンポーネント21Eの実行可能フラグを「起動状態」とする。これにより、処理コンポーネント21Eは、データストア23に保持されたデータを用いて処理を実行可能な状態となり、データストア22からデータストア23への置き換えが完了すると共に、処理コンポーネント21Bから処理コンポーネント21Eへの置き換えが完了する。なお、ここでは説明を簡単にするために処理コンポーネント21Bの置き換えについてのみ説明したが、処理コンポーネント21A,21Cについても、処理コンポーネント21Bと同様に、データストア23に関連付けられた処理コンポーネントに置き換えることができる。
【0075】
ステップS15までの処理が完了した後、インスタンス消滅部56は、RAM102上から不要となったインスタンスを消滅させる。例えば、インスタンス消滅部56は、変更前の処理コンポーネント21A,21B,21CのパイプラインP及び制御ロジックLに対して消滅指示を通知する。そして、当該消滅指示の通知を受けたパイプラインP及び制御ロジックLは、終了処理を実行し、RAM102上から消滅する。また、インスタンス消滅部56は、不要となったアダプタA及びデータストア22についても同様に消滅させてもよい。
【0076】
以上述べたように、データ変更部50は、変更後のデータストア23を生成し、処理コンポーネント21E(変更後処理コンポーネント)を生成すると共に、処理コンポーネント21EをアダプタA11,A12を介してデータストア23に接続する。続いて、データ変更部50は、処理コンポーネント21B(変更前処理コンポーネント)を停止した後に、データ移行部54によって変更前のデータストア22から変更後のデータストア23にデータを移行した後に、処理コンポーネント21Eを起動する。これにより、処理コンポーネント21Eがデータストア23にアクセス可能となる。このような処理によって、処理コンポーネント及びデータストアの両方の置き換えを予め確立された手順で確実かつ容易に実行することができる。したがって、搬送制御システム1によれば、一部のプログラム変更に伴うシステム全体の長期間の停止を抑制できる。
【0077】
以上、本発明をその実施形態に基づいて詳細に説明した。しかし、本発明は上記実施形態に限定されるものではない。本発明は、その要旨を逸脱しない範囲で様々な変形が可能である。
【0078】
本実施形態では、処理コンポーネント21が、パイプラインPと一以上の制御ロジックLとからなる構成を例に挙げて説明したが、処理コンポーネントは、必ずしもこのようなインスタンス構成となっていなくともよい。例えば、処理コンポーネントは、単一のインスタンスであってもよい。この場合には、処理コンポーネントとアダプタとが直接関連付けられる構成とすればよい。また、本実施形態では、処理コンポーネントからデータストアに対するアクセスを制限するために、処理コンポーネント(制御ロジック)とデータストアとの間にアダプタを設ける構成としたが、アダプタを設けずに、処理コンポーネントとデータストアとが直接関連付けられる構成としてもよい。
【0079】
[実施例]
制御アプリケーション20によるデータ処理の具体例として、コントローラ(搬送制御システム1)が台車(搬送機)の動作を制御するためのデータ処理を行う場合(第1の例)と、コントローラがコンベヤの動作を制御するためのデータ処理を行う場合(第2の例)とについて説明する。
【0080】
(第1の例)
第1の例では、コントローラ(搬送制御システム1)が、走行制御を行う制御装置が組み込まれた台車(外部システム2)に対して実行すべき命令を出力し、台車が、当該命令に基づいて走行制御を実行する場合のデータ処理について説明する。このデータ処理では、台車は、ある命令(ある走行ルートに沿って走行する処理等)を実行完了して停止したタイミング等で、コントローラ(搬送制御システム1)の受信インタフェース10に対して入力データを送信する。ここで、入力データは、例えば、台車の識別子(台車No)と、実行を完了した(又はこれから完了する)命令の識別子(シリアルNo)と、命令の実行を完了した(又はこれから完了する)際の台車の位置(命令完了位置)とを相互に関連付けた情報である。
【0081】
続いて、コントローラの制御アプリケーション20は、受信インタフェース10を介して台車からの入力データを入力し、各処理コンポーネント21及びデータストア22によってデータ処理を実行する。ここで実行されるデータ処理は、例えば台車の命令完了位置に基づいて台車が次に向かうべき目的地を算出する処理や、算出された目的地に到達するための最適なルートを算出する処理等である。制御アプリケーション20は、上述のデータ処理を実行し、送信インタフェース30に出力データを出力する。ここで、出力データは、例えば、制御対象の台車の識別子と、台車に対する新たな命令の識別子と、台車の目的地と、台車の走行ルートとを相互に関連付けた情報である。
【0082】
続いて、コントローラの送信インタフェース30は、制御アプリケーション20からの出力データを、当該出力データに関連付けられた「制御対象の台車の識別子」に対応する台車に送信する。台車は、送信インタフェース30から受信した出力データに基づいて走行制御を実行する。
【0083】
このようなデータ処理を実行するコントローラにおいて、処理コンポーネント21(例えば処理コンポーネント21B)のソフトウェアアップデート(別の処理コンポーネント21Dへの置き換え)を行う場合について考える。
【0084】
まず、このようなソフトウェアアップデートに伴ってコントローラをシャットダウンさせる必要がある場合について考える。この場合、ソフトウェアアップデートに伴ってコントローラがシャットダウンされている間、受信インタフェース10は、台車からの入力データを受信することができず、応答メッセージを台車に返信することができない。このため、台車は、受信インタフェース10からの応答メッセージの受信待ち状態となってしまい、他の処理を実行することができなくなってしまう。また、送信インタフェース30は、台車に対して次の命令を送信することができない。このため、処理コンポーネント21Bのソフトウェアアップデートが完了してコントローラが起動されるまでの間(例えば数秒から数十秒)、台車は、次に実行する命令を取得できないため、走行制御を実行することができない。これにより、台車による物品の搬送時間が、数秒から数十秒長くかかってしまうといった問題が生じ得る。
【0085】
次に、上述の実施形態で説明したように、コントローラをシャットダウンさせることなく処理コンポーネント21Bのソフトウェアアップデートを行う場合について考える。なお、このようにコントローラのシャットダウンを伴わないソフトウェアアップデートのことを「ノンストップアップデート」という。この場合、受信インタフェース10は、受信処理を継続して実行するため、台車からの入力データを受信し、応答メッセージを台車に返信することができる。また、送信インタフェース30は、送信データストア32にキューイングされた次の命令を、台車に送信することができる。これにより、台車は、処理コンポーネント21Bのソフトウェアアップデートの影響を受けずに走行制御を実行することができる。すなわち、台車は、処理コンポーネント21Bのソフトウェアアップデートが実行されていない時と同じ停止時間(受信インタフェース10に入力データを送信してから送信インタフェース30から出力データを受信するまでの時間)で、走行制御を実行することができる。
【0086】
(第2の例)
第2の例では、コントローラが、物品の移動制御(別のコンベヤへの載せ替えに関する制御)を行う制御装置が組み込まれたコンベヤ(外部システム2)に対して実行すべき命令を出力し、コンベヤが、当該命令に基づいて物品の移動制御を行う場合のデータ処理について説明する。このデータ処理では、コンベヤは、当該コンベヤ上の物品が次のコンベヤに移動することが可能な位置に近づいたことを検知したタイミング等で、コントローラの受信インタフェース10に対して入力データを送信する。ここで、入力データは、例えば、コンベヤの識別子(コンベヤID)と、実行を完了した(又はこれから完了する)命令の識別子(シリアルNo)とを相互に関連付けた情報である。
【0087】
続いて、コントローラの制御アプリケーション20は、受信インタフェース10を介してコンベヤからの入力データを入力し、各処理コンポーネント21及びデータストア22によってデータ処理を実行する。ここで実行されるデータ処理は、例えば予めシステムに投入されている搬送計画を示す情報に基づいて、コンベヤ上の物品をどのコンベヤに移動させるかを決定する処理等である。制御アプリケーション20は、上述のデータ処理を実行し、送信インタフェース30に出力データを出力する。ここで、出力データは、例えば、制御対象のコンベヤの識別子と、コンベヤに対する新たな命令の識別子と、物品の移動先となるコンベヤの識別子とを相互に関連付けた情報である。
【0088】
続いて、コントローラの送信インタフェース30は、制御アプリケーション20からの出力データを、当該出力データに関連付けられた「制御対象のコンベヤの識別子」に対応するコンベヤに送信する。台車は、送信インタフェース30から受信した出力データに基づいて走行制御を実行する。
【0089】
このようなデータ処理を実行するコントローラにおいて、処理コンポーネント21(例えば処理コンポーネント21B)のソフトウェアアップデート(別の処理コンポーネント21Dへの置き換え)を行う場合について考える。
【0090】
まず、このようなソフトウェアアップデートに伴ってコントローラをシャットダウンさせる必要がある場合について考える。この場合、ソフトウェアアップデートに伴ってコントローラがシャットダウンされている間、受信インタフェース10は、コンベヤからの入力データを受信することができず、応答メッセージをコンベヤに返信することができない。このため、コンベヤは、受信インタフェース10からの応答メッセージの受信待ち状態となってしまい、他の処理を実行することができなくなってしまう。また、送信インタフェース30は、コンベヤに対して次の命令を送信することができない。このため、処理コンポーネント21Bのソフトウェアアップデートが完了してコントローラが起動されるまでの間、コンベヤは、次に実行する命令を取得できないため、物品をどのコンベヤに載せ替えればよいかを把握することができない。このような物品の移動制御は、細かい時間制御が必要であるため、コントローラの停止時間が数百ミリ秒程度であったとしても、コンベヤに対する命令の送信がわずかに遅れてしまうことで、物品の載せ替えに失敗するおそれがある。その結果、コンベヤが異常停止してしまい、コンベヤを再稼働するまでに数分から数十分かかってしまうといった問題が生じ得る。
【0091】
次に、ノンストップアップデートを行う場合について考える。この場合、受信インタフェース10は、受信処理を継続して実行するため、コンベヤからの入力データを受信し、応答メッセージをコンベヤに返信することができる。また、送信インタフェース30は、送信データストア32にキューイングされた次の命令を、コンベヤに送信することができる。これにより、コンベヤは、処理コンポーネント21Bのソフトウェアアップデートの影響を受けずに物品の移動制御を実行することができるため、物品の載せ替えの失敗に起因するコンベヤの異常停止の発生を抑制することができる。
【0092】
以上述べたようなノンストップアップデートを行うことができるコントローラ(搬送制御システム1)によれば、コントローラの一部のソフトウェアアップデートによって台車やコンベヤ等の停止時間、ひいては工場の生産ラインの稼働停止時間が増加してしまうことを効果的に抑制することができる。