(57)【要約】【課題】一部のプログラム変更に伴うシステム全体の停止を抑制できる搬送制御システムを提供する。【解決手段】搬送制御システム１では、一連のデータ処理を互いに独立した複数の処理に分割し、各処理を複数の処理コンポーネント２１に実行させる。また、各処理コンポーネント２１により入力又は出力されるデータは、処理コンポーネント２１とは別のデータストア２２に保持され、各処理コンポーネント２１間のデータの受け渡しは、処理コンポーネント２１間で直接行われずに、データストア２２を介して行われる。このように、処理と処理とが分離されると共に処理とデータとが分離されることで、変更対象の処理コンポーネント２１以外の処理コンポーネント２１及びデータストア２２に影響を与えずに、変更対象の処理コンポーネント２１を異なる処理コンポーネントに変更することができる。【選択図】図１
2015191245.tif 000002
【特許請求の範囲】
【請求項１】
物品の搬送を制御するための一連のデータ処理を実行する搬送制御システムであって、
前記データ処理を構成する互いに独立した複数の処理を実行する複数の処理実行部と、
前記処理実行部により入力又は出力されるデータを複数保持する一以上のデータ保持部と、を備え、
前記複数の処理実行部のうち先頭の処理実行部は、前記データ処理の対象となるデータを入力し、当該データを用いて所定の処理を実行し、当該処理の実行により得られたデータを前記データ保持部に出力し、
前記複数の処理実行部のうち先頭の処理実行部と最後の処理実行部との間の処理実行部は、当該処理実行部の直前の処理実行部によって前記データ保持部に出力されたデータを入力し、当該データを用いて所定の処理を実行し、当該処理の実行により得られたデータを前記データ保持部に出力し、
前記複数の処理実行部のうち最後の処理実行部は、当該処理実行部の直前の処理実行部によって前記データ保持部に出力されたデータを入力し、当該データを用いた所定の処理を実行し、当該処理の実行により得られたデータを処理結果として出力する、
搬送制御システム。
【請求項２】
前記処理実行部及び前記データ保持部とは独立して動作し、前記データ処理の対象となるデータを外部から受信する受信処理実行部と、
前記処理実行部及び前記データ保持部とは独立して動作し、前記受信処理実行部が受信したデータを保持する受信データ保持部と、を更に備え、
前記複数の処理実行部のうち先頭の処理実行部は、前記受信データ保持部に保持されたデータを入力する、
請求項１記載の搬送制御システム。
【請求項３】
前記処理実行部及び前記データ保持部とは独立して動作し、前記複数の処理実行部のうち最後の処理実行部により前記処理結果として出力されるデータを保持する送信データ保持部と、
前記処理実行部及び前記データ保持部とは独立して動作し、前記送信データ保持部に保持されたデータを外部に送信する送信処理実行部と、を更に備え、
前記複数の処理実行部のうち最後の処理実行部は、前記処理結果として出力するデータを前記送信データ保持部に出力する、
請求項１又は２記載の搬送制御システム。
【請求項４】
前記複数の処理実行部のうち一部の処理実行部を異なる処理実行部に変更する処理変更部を更に備え、
前記処理変更部は、
前記複数の処理実行部のうち変更対象の変更前処理実行部を特定する情報と、前記変更前処理実行部と置き換える変更後処理実行部を特定する情報とを入力する情報入力部と、
前記変更後処理実行部を生成する処理生成部と、
前記変更前処理実行部が処理を実行中であるか否かを判定し、処理を実行中でないと判定できた後に、前記変更前処理実行部を、処理を実行できない停止状態にする処理停止部と、
前記処理停止部により前記変更前処理実行部が前記停止状態にされた後に、前記変更後処理実行部を、処理を実行できる起動状態にする処理起動部と、を有する、
請求項１〜３のいずれか一項記載の搬送制御システム。
【請求項５】
前記処理変更部が特定の処理実行部を異なる処理実行部に変更している最中か否かに関わらず、前記特定の処理実行部より前の処理実行部は、処理を実行する、
請求項４記載の搬送制御システム。
【請求項６】
前記処理変更部が特定の処理実行部を異なる処理実行部に変更している最中か否かに関わらず、前記特定の処理実行部より後の処理実行部は、前記特定の処理実行部により出力されたデータが前記データ保持部に保持されている場合には、処理を実行する、
請求項４又は５記載の搬送制御システム。
【請求項７】
前記データ保持部を異なるデータ保持部に変更するデータ変更部を更に備え、
前記データ変更部は、
前記データ保持部と置き換える変更後データ保持部を特定する情報と、前記複数の処理実行部のうち変更対象の変更前処理実行部を特定する情報と、前記変更前処理実行部と置き換える変更後処理実行部を特定する情報とを入力する情報入力部と、
前記変更後データ保持部及び前記変更後処理実行部を生成する処理生成部と、
前記変更前処理実行部が処理を実行中であるか否かを判定し、処理を実行中でないと判定できた後に、前記変更前処理実行部を、処理を実行できない停止状態にする処理停止部と、
前記処理停止部により前記変更前処理実行部が前記停止状態にされた後に、前記データ保持部に保持されているデータを前記変更後データ保持部に移行するデータ移行部と、
前記データ移行部によるデータの移行がされた後に、前記変更後処理実行部を、処理を実行できる起動状態にする処理起動部と、を有する、
請求項１〜６のいずれか一項記載の搬送制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物品の搬送を制御するための搬送制御システムに関する。
【背景技術】
【０００２】
工場等において物品の搬送を制御するためのコンピュータシステム（以下「搬送制御システム」という。）として、例えば下記特許文献１には、半導体生産ラインにおいて半導体の搬送を制御するシステムについて記載されている。例えば半導体を生産する工場においては、要求される半導体の搬送量は、近年増加の傾向にあり、工場の稼働を長期間停止することは困難な状況となっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２６２５８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
要求される物品の搬送量の増加に伴って、物品の搬送制御をより効率化すべく、搬送制御システムのプログラムを柔軟に変更（アップデート又はロールバック）する必要性が増大すると予想される。搬送制御システムのプログラムを変更する際には、新たな機能を部分的に導入して機能検証を行う必要がある。ここで、搬送制御システムの一部のプログラムを変更する際に搬送制御システム全体を停止してしまうと、工場生産に大きな影響を与えてしまう。一方、このような工場生産に与える影響を許容範囲内に抑えるために、搬送制御システムのプログラムの更新頻度を少なくした場合には、搬送制御システムに対する適宜の改善要求に対して迅速に対応することができない。
【０００５】
そこで、一部のプログラム変更に伴うシステム全体の停止を抑制できる搬送制御システムが望まれている。
【課題を解決するための手段】
【０００６】
本発明に係る搬送制御システムは、物品の搬送を制御するための一連のデータ処理を実行する搬送制御システムであって、データ処理を構成する互いに独立した複数の処理を実行する複数の処理実行部と、処理実行部により入力又は出力されるデータを複数保持する一以上のデータ保持部と、を備える。複数の処理実行部のうち先頭の処理実行部は、データ処理の対象となるデータを入力し、当該データを用いて所定の処理を実行し、当該処理の実行により得られたデータをデータ保持部に出力し、複数の処理実行部のうち先頭の処理実行部と最後の処理実行部との間の処理実行部は、当該処理実行部の直前の処理実行部によってデータ保持部に出力されたデータを入力し、当該データを用いて所定の処理を実行し、当該処理の実行により得られたデータをデータ保持部に出力し、複数の処理実行部のうち最後の処理実行部は、当該処理実行部の直前の処理実行部によってデータ保持部に出力されたデータを入力し、当該データを用いた所定の処理を実行し、当該処理の実行により得られたデータを処理結果として出力する。
【０００７】
上記搬送制御システムでは、一連のデータ処理を互いに独立した複数の処理に分割し、各処理を複数の処理実行部に実行させる。また、各処理実行部により入力又は出力されるデータは、処理実行部とは別のデータ保持部に保持され、各処理実行部間のデータの受け渡しは、処理実行部間で直接行われずに、データ保持部を介して行われる。このように、処理と処理とが分離されると共に処理とデータとが分離されることで、変更対象の処理実行部以外の処理実行部及びデータ保持部に影響を加えることなく、当該変更対象の処理実行部を異なる処理実行部に変更することが可能となっている。したがって、上記搬送制御システムによれば、一部のプログラム変更に伴うシステム全体の停止を抑制できる。特に、搬送される物品が半導体であれば、短期的な需要の増減が頻繁し、需要に応じた適切な搬送量に対応するプログラムを適用することが望ましい。上記搬送制御システムによれば、一のサブ搬送制御システム（処理実行部）でプログラム変更を実行したとしても、その前後工程の他のサブ搬送制御システムは、一のサブ搬送制御システムのプログラム変更を意識することなく、処理を継続することができる。また、搬送制御システムにセキュリティの脆弱が高頻度で見つかった場合にも、他のサブ搬送制御システムの停止を考慮する必要なく、一のサブ搬送制御システムのセキュリティプログラムの更新を速やかに行うことができる。
【０００８】
上記搬送制御システムでは、処理実行部及びデータ保持部とは独立して動作し、データ処理の対象となるデータを外部から受信する受信処理実行部と、処理実行部及びデータ保持部とは独立して動作し、受信処理実行部が受信したデータを保持する受信データ保持部と、を更に備え、複数の処理実行部のうち先頭の処理実行部は、受信データ保持部に保持されたデータを入力してもよい。
【０００９】
上記搬送制御システムによれば、処理実行部及びデータ保持部とは独立して動作する受信処理実行部及び受信データ保持部が、処理実行部及びデータ保持部が動作しているか否かに関わらず、外部に対する入力インタフェースとして機能する。これにより、例えば処理実行部又はデータ保持部の変更作業によって、処理実行部又はデータ保持部の動作を停止させた場合であっても、外部からのデータ受信を継続することができる。
【００１０】
上記搬送制御システムでは、処理実行部及びデータ保持部とは独立して動作し、複数の処理実行部のうち最後の処理実行部により処理結果として出力されるデータを保持する送信データ保持部と、処理実行部及びデータ保持部とは独立して動作し、送信データ保持部に保持されたデータを外部に送信する送信処理実行部と、を更に備え、複数の処理実行部のうち最後の処理実行部は、処理結果として出力するデータを送信データ保持部に出力してもよい。
【００１１】
上記搬送制御システムによれば、処理実行部及びデータ保持部とは独立して動作する送信処理実行部及び送信データ保持部が、処理実行部及びデータ保持部が動作しているか否かに関わらず、外部に対する出力インタフェースとして機能する。これにより、例えば処理実行部又はデータ保持部の変更作業によって、処理実行部又はデータ保持部を停止した場合であっても、送信データ保持部にデータが保持されている限りにおいて、外部へのデータ送信を継続することができる。
【００１２】
上記搬送制御システムでは、複数の処理実行部のうち一部の処理実行部を異なる処理実行部に変更する処理変更部を更に備え、処理変更部は、複数の処理実行部のうち変更対象の変更前処理実行部を特定する情報と、変更前処理実行部と置き換える変更後処理実行部を特定する情報とを入力する情報入力部と、変更後処理実行部を生成する処理生成部と、変更前処理実行部が処理を実行中であるか否かを判定し、処理を実行中でないと判定できた後に、変更前処理実行部を、処理を実行できない停止状態にする処理停止部と、処理停止部により変更前処理実行部が停止状態にされた後に、変更後処理実行部を、処理を実行できる起動状態にする処理起動部と、を有してもよい。
【００１３】
上記搬送制御システムでは、処理変更部は、変更後の処理実行部を生成する。続いて、処理変更部は、変更前処理実行部が処理を実行中でないことを確認した上で、変更前処理実行部を停止すると共に、変更後処理実行部を実行可能な状態にする。このような処理によって、処理実行部の置き換えに係るデータ不整合を防止すると共に、変更に係る処理実行部以外の処理実行部及びデータ保持部に影響を及ぼすことなく、変更前処理実行部を変更後処理実行部に置き換えることができる。したがって、上記搬送制御システムによれば、一部のプログラム変更に伴うシステム全体の停止を抑制できる。
【００１４】
上記搬送制御システムでは、処理変更部が特定の処理実行部を異なる処理実行部に変更している最中か否かに関わらず、特定の処理実行部より前の処理実行部は、処理を実行してもよい。
【００１５】
上記搬送制御システムにおいては、処理実行部間のデータの受け渡しは、データ保持部を介して行われ、処理実行部間で直接行われない。このため、処理変更部によって特定の処理実行部について変更処理が実行されている最中であっても、当該特定の処理実行部より前の処理実行部は、当該特定の処理実行部の変更による影響を受けずに、処理の実行を継続することができる。したがって、上記搬送制御システムによれば、特定の処理実行部を変更している最中であっても、当該特定の処理実行部より前の処理実行部による処理が継続されることで、システム全体の停止が抑制される。
【００１６】
上記搬送制御システムでは、処理変更部が特定の処理実行部を異なる処理実行部に変更している最中か否かに関わらず、特定の処理実行部より後の処理実行部は、特定の処理実行部により出力されたデータがデータ保持部に保持されている場合には、処理を実行してもよい。
【００１７】
上記搬送制御システムにおいては、処理変更部によって特定の処理実行部について変更処理が実行されている最中であっても、当該特定の処理実行部より後の処理実行部は、データ保持部に入力データが保持されていれば、処理を実行することができる。したがって、上記搬送制御システムによれば、特定の処理実行部を変更している最中であっても、当該特定の処理実行部より後の処理実行部による処理が継続されることで、システム全体の停止が抑制される。
【００１８】
上記搬送制御システムでは、データ保持部を異なるデータ保持部に変更するデータ変更部を更に備え、データ変更部は、データ保持部と置き換える変更後データ保持部を特定する情報と、複数の処理実行部のうち変更対象の変更前処理実行部を特定する情報と、変更前処理実行部と置き換える変更後処理実行部を特定する情報とを入力する情報入力部と、変更後データ保持部及び変更後処理実行部を生成する処理生成部と、変更前処理実行部が処理を実行中であるか否かを判定し、処理を実行中でないと判定できた後に、変更前処理実行部を、処理を実行できない停止状態にする処理停止部と、処理停止部により変更前処理実行部が停止状態にされた後に、データ保持部に保持されているデータを変更後データ保持部に移行するデータ移行部と、データ移行部によるデータの移行がされた後に、変更後処理実行部を、処理を実行できる起動状態にする処理起動部と、を有してもよい。
【００１９】
上記搬送制御システムでは、データ変更部は、変更後データ保持部を生成し、変更後処理実行部を生成する。続いて、データ変更部は、変更前処理実行部を停止した後に、データ移行部によって変更前のデータ保持部から変更後データ保持部にデータを移行した後に、変更後処理実行部を起動する。このような処理によって、処理実行部及びデータ保持部の両方の置き換えを予め確立された手順で確実かつ容易に実行することができる。したがって、上記搬送制御システムによれば、一部のプログラム変更に伴うシステム全体の長期間の停止を抑制できる。
【発明の効果】
【００２０】
本発明によれば、一部のプログラム変更に伴うシステム全体の停止を抑制できる搬送制御システムを提供することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の一実施形態に係る搬送制御システムの機能構成を示すブロック図である。
【図２】搬送制御システムのハードウェア構成の一例を示すブロック図である。
【図３】搬送制御システムのインスタンス構成を概念的に示したブロック図である。
【図４】処理変更部の動作を示すフローチャートである。
【図５】図４の変更後処理コンポーネント生成処理のフローチャートである。
【図６】図４の変更前処理コンポーネント停止処理のフローチャートである。
【図７】図４の変更後処理コンポーネント生成処理後の状態を説明するための図である。
【図８】図４の変更前処理コンポーネント削除処理後の状態を説明するための図である。
【図９】データ変更部の動作を示すフローチャートである。
【図１０】図９のインスタンス生成処理のフローチャートである。
【図１１】図９の変更後処理コンポーネント生成処理後の状態を説明するための図である。
【図１２】図９のデータ移行処理を説明するための図である。
【発明を実施するための形態】
【００２２】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一又は同等の要素には同一の符号を付し、重複する説明を省略する。
【００２３】
図１に示される本実施形態に係る搬送制御システム１は、例えば半導体等の物品の搬送を制御するためのデータ処理を実行するコンピュータシステムである。図１に示すように、搬送制御システム１は、受信インタフェース１０、制御アプリケーション２０、送信インタフェース３０、処理変更部４０、及びデータ変更部５０を備える。受信インタフェース１０、制御アプリケーション２０、送信インタフェース３０、処理変更部４０、及びデータ変更部５０は、例えばＣ＃等のオブジェクト指向プログラミング言語を用いて作成されるプログラムとして実装される。このようなオブジェクト指向プログラミング言語を用いて作成されるプログラムでは、データ構造と振る舞い（処理）とを記述したクラス（雛形）に基づいて、具体的な処理を実行可能なオブジェクト（インスタンス）が後述するＲＡＭ１０２上に生成される。そして、ＲＡＭ１０２上に生成されたこれらのインスタンス同士が連携して処理を実行するように構成される。以降の説明において、単に「生成」と言った場合には、クラスに基づいてインスタンスをＲＡＭ１０２上に生成することを意味するものとする。
【００２４】
搬送制御システム１は、受信インタフェース１０を介して外部システム２からデータを受信する。制御アプリケーション２０は、受信インタフェース１０によって受信されたデータを入力し、所定の演算処理やデータ加工処理等を実行する。そして、送信インタフェース３０は、制御アプリケーション２０による処理結果（演算結果や加工後データ等）を外部システム３に送信する。ここで、外部システム２及び外部システム３は、搬送制御システム１とは別のコンピュータシステムであってもよいし、後述する入力装置１０４及び出力装置１０５等を介して搬送制御システム１を利用するオペレータであってもよい。外部システム２がオペレータである場合には、受信インタフェース１０は、キーボード等の入力装置１０４を介してオペレータにより入力されるデータを取得する。また、外部システム３がオペレータである場合には、送信インタフェース３０は、ディスプレイ等の出力装置１０５を介してオペレータにデータを提示する。また、外部システム２は、外部システム３と同一であってもよい。
【００２５】
図２に示すように、搬送制御システム１は、ハードウェア構成として、一以上のＣＰＵ１０１と、主記憶装置である一以上のＲＡＭ１０２及び一以上のＲＯＭ１０３と、キーボード等の入力装置１０４と、ディスプレイ等の出力装置１０５と、外部との有線通信又は無線通信を行うための通信モジュール１０６と、ハードディスクドライブ及び半導体メモリ等の補助記憶装置１０７とを含むコンピュータシステムとして構成されている。
【００２６】
搬送制御システム１の受信インタフェース１０、制御アプリケーション２０、送信インタフェース３０、処理変更部４０、及びデータ変更部５０の各機能は、例えば、図２に示されるＣＰＵ１０１、ＲＡＭ１０２等のハードウェア上に所定のプログラムを読み込ませることにより、ＣＰＵ１０１の制御のもとで入力装置１０４及び出力装置１０５を動作させると共に通信モジュール１０６を動作させ、ＲＡＭ１０２及び補助記憶装置１０７におけるデータの読み出し及び書き込みを行うことで実現される。
【００２７】
受信インタフェース１０は、外部システム２からのデータを受信するインタフェースであり、制御アプリケーション２０とは独立して動作する。受信インタフェース１０は、受信処理コンポーネント（受信処理実行部）１１及び受信データストア（受信データ保持部）１２を有する。受信処理コンポーネント１１は、外部システム２から入力されたデータを受信する処理を実行する。受信処理コンポーネント１１は、外部システム２から制御アプリケーション２０の処理に用いるためのデータを受信した場合には、受信したデータ（以下「データＡ」と表記する。）を受信データストア１２に保持する。また、受信処理コンポーネント１１は、外部システム２から後述する処理コンポーネント２１の変更、又は後述するデータストア２２の変更等の指示情報を受信してもよい。この場合には、受信処理コンポーネント１１は、当該指示情報を後述する処理変更部４０又はデータ変更部５０に通知する。また、受信処理コンポーネント１１は、受信処理の一部の処理として、外部システム２からのデータ受信の正常完了又は失敗を示す情報を応答メッセージとして外部システム２に出力してもよい。
【００２８】
受信データストア１２は、例えばキューとして構成され、受信処理コンポーネント１１により受信されたデータを保持する。受信データストア１２に保持されるデータ（データＡ）は、後述する制御アプリケーション２０に含まれる複数の処理コンポーネントのうち先頭の処理Ａを実行する処理コンポーネント２１に対する入力データとなる。なお、受信処理コンポーネント１１及び受信データストア１２は、上述のように１種類のデータ（データＡ）を受信及び保持するように構成されてもよいが、複数の種類のデータを受信及び保持するように構成されてもよい。
【００２９】
制御アプリケーション２０は、物品の搬送を制御するための具体的なデータ処理（演算処理やデータ加工処理等）を実行する部分であり、複数（ここでは一例として３つ）の処理コンポーネント（処理実行部）２１（２１Ａ，２１Ｂ，２１Ｃ）と、データストア（データ保持部）２２とを有する。本実施形態では一例として、複数の処理コンポーネント２１Ａ，２１Ｂ，２１Ｃは、一連のデータ処理を構成する互いに独立した複数の処理の各々を順に実行するように、直列に配置され、それぞれ処理Ａ，処理Ｂ，処理Ｃを実行する。データストア２２は、例えば複数のデータを種類毎に蓄積するキューとして構成され、各処理コンポーネント２１により入力又は出力されるデータを複数保持するデータ保持部である。各処理コンポーネント２１は、後述するインスタンス構成により、データストア２２にアクセス可能とされている。
【００３０】
図３に、処理コンポーネント２１及びデータストア２２のインスタンス構成を概念的に示す。ただし、図３に示すインスタンス構成は一例にすぎない。図３に示すように、各処理コンポーネント２１は、データストア２２に保持されるデータを用いた所定の処理（演算処理、及びデータ加工等）を実行するための一以上（ここでは一例として２つ又は３つ）のインスタンス（制御ロジックＬ）と、制御ロジックＬの実行を管理するためのインスタンス（パイプラインＰ）とによって構成される。なお、ここでは一例としてデータストア２２が一つである場合について説明するが、データストア２２は、保持するデータの種類等に応じて複数設けられてもよい。
【００３１】
処理コンポーネント２１を上述のようにパイプラインＰと一以上の制御ロジックＬとに分けて構成することで、処理コンポーネント２１が実行する処理（処理Ａ，処理Ｂ，又は処理Ｃ）を更に細かい処理単位に分割することができる。このように処理を分割することで、複数の処理コンポーネント２１間で制御ロジックＬの処理の共通化を図ることが容易となり、既存の制御ロジックＬのクラス（プログラム）の再利用性を高めることができる。すなわち、処理コンポーネント２１間で、共通の処理を実行する制御ロジックＬについては、共通のクラスから生成することができるので、制御アプリケーション２０全体で必要となる制御ロジックＬのクラスの種類を減らすことができ、プログラム開発の負担を軽減できる。
【００３２】
本実施形態では、上述したデータストア２２は、制御ロジックＬに対して、後述するアダプタＡを介してデータアクセス機能を提供するためのインスタンスである。データストア２２は、例えば、実際に扱うデータの保存フォーマット等の差異を吸収して共通的なデータアクセスが可能なように記述されたラッパークラスのインスタンス（図示省略）を、制御ロジックＬ及びアダプタＡとの間でやり取りするためのデータとして保持してもよい。
【００３３】
各制御ロジックＬは、アダプタＡに関連付けられ、アダプタＡは、データストア２２に関連付けられる。このようにして、制御ロジックＬは、アダプタＡを介して間接的にデータストア２２にアクセスする構成とされている。これにより、制御ロジックＬからデータストア２２に保持されたデータに対する無制限のアクセスを禁止できる。つまり、アダプタＡは、制御ロジックＬに対して、データストア２２に保持されたデータのうち当該制御ロジックＬの処理に必要なデータに対して必要最小限のアクセス（読み出しのみ等）を提供する。これにより、制御ロジックＬからデータストア２２に保持されたデータに対して許可されないアクセスがされたか否か、データが改竄されたか否かといった監視の負担を軽減できる。図３に示したように、アダプタＡは、互いに異なる制御ロジックＬ間で許可されるデータアクセスの内容が同一の場合には、共有されてもよい。
【００３４】
パイプラインＰは、処理を実行することが可能か否かを示す状態（実行可能状態）として、「起動状態」、「停止状態」、及び「停止移行状態」を有する。パイプラインＰは、パイプラインＰの実行可能状態が上記いずれの状態であるかを示す実行可能フラグを保持する。「起動状態」は、パイプラインＰが制御ロジックＬに処理を実行させてもよい状態を示す。すなわち、「起動状態」は、処理コンポーネント２１が処理を実行できる状態を示す。「停止状態」は、パイプラインＰが制御ロジックＬに処理を実行させてはならない状態を示す。すなわち、「停止状態」は、処理コンポーネント２１が処理を実行できない状態を示す。「停止移行状態」は、パイプラインＰが「起動状態」から「停止状態」に移行する前段階の状態を示す。より具体的には、「停止移行状態」は、既に実行開始している処理は実行を継続することができる一方で、実行開始していない処理が新たに処理を実行開始することができない状態を示す。すなわち、「停止移行状態」とは、既に実行開始している処理の終了を待つための状態である。
【００３５】
パイプラインＰは、処理を実行中か否かを示す状態（実行状態）として、「実行中状態」及び「非実行状態」を有する。パイプラインＰは、パイプラインＰの実行状態が上記いずれの状態であるかを示す実行フラグを保持する。「実行中状態」は、パイプラインＰが管理する制御ロジックＬのうち１以上の制御ロジックＬが処理を実行している状態を示す。すなわち、「実行中状態」は、処理コンポーネント２１が処理を実行している状態を示す。「非実行状態」は、パイプラインＰが管理する制御ロジックＬのうち処理を実行している制御ロジックＬが１つもない状態を示す。すなわち、「非実行状態」は、処理コンポーネント２１が処理を実行していない状態を示す。
【００３６】
パイプラインＰは、生成された時点では、停止状態かつ非実行状態とされる。パイプラインＰは、外部刺激（オペレータ等の外部システム２からの明示の要求や、タイマー等によるトリガ等）を受けると、停止状態から起動状態に遷移する。パイプラインＰ及び制御ロジックＬの動作は、パイプラインＰの実行可能状態及び実行状態により制限される。パイプラインＰは、起動状態である場合にのみ、非実行状態から実行中状態に遷移できる。すなわち、パイプラインＰが起動状態である場合にのみ、パイプラインＰが管理する制御ロジックＬは、処理を実行することができる。また、パイプラインＰが非実行状態である場合にのみ、パイプラインＰは、停止状態に遷移できる。このようなパイプラインＰ及び制御ロジックＬの動作の仕組みは、例えば、パイプラインＰ及び制御ロジックＬが、特定の動作（停止、所定の処理の実行等）を実行する前に、パイプラインＰの実行可能フラグ及び実行フラグを参照し、フラグの状態によって特定の動作の実行可否を決定することで実現される。
【００３７】
また、図３に示すように、受信処理コンポーネント１１及び後述する送信処理コンポーネント３１についても、処理コンポーネント２１と同様のインスタンス構成とされていてもよい。図３では、受信処理コンポーネント１１及び送信処理コンポーネント３１の制御ロジックＬの数を１つと図示しているが、受信処理コンポーネント１１及び送信処理コンポーネント３１は、２以上の制御ロジックＬを有する構成とされてもよい。
【００３８】
続いて、図１及び図３を参照して、制御アプリケーション２０が一連のデータ処理を実行する流れを説明する。
【００３９】
まず、先頭の処理Ａを実行する処理コンポーネント２１Ａは、受信データストア１２に蓄積されたデータＡをデータ処理の対象データとして入力し、データＡを用いて処理Ａを実行し、処理Ａの実行により得られたデータ（以下「データＢ」と表記する。）をデータストア２２に出力する。これにより、データストア２２には、データＢが保持される。
【００４０】
処理コンポーネント２１Ａによる上記処理は、例えば以下のようにして実現される。先頭の制御ロジックＬ１１は、パイプラインＰ１の実行可能フラグが起動状態を示している場合に、受信データストア１２を定期的に監視する。制御ロジックＬ１１は、受信データ（データＡ）が保持されていることを検知したら、制御ロジックＬ１２に通知する。制御ロジックＬ１１から通知を受けた制御ロジックＬ１２は、アダプタＡ１を介して受信データストア１２からデータＡを取得し、所定の処理（演算処理、及びデータ加工等）を実行する。制御ロジックＬ１２は、処理後のデータを制御ロジックＬ１３に出力する。制御ロジックＬ１３は、制御ロジックＬ１２から取得したデータ（データＢ）を、アダプタＡ２を介してデータストア２２に出力する。
【００４１】
続いて、一連のデータ処理のうち２番目の処理Ｂを実行する処理コンポーネント２１Ｂは、処理コンポーネント２１Ｂの直前の処理コンポーネント２１Ａによってデータストア２２に出力されたデータＢを入力し、データＢを用いて処理Ｂを実行し、処理Ｂの実行により得られたデータ（以下「データＣ」と表記する。）をデータストア２２に出力する。これにより、データストア２２には、データＣが蓄積される。
【００４２】
処理コンポーネント２１Ｂによる上記処理は、例えば以下のようにして実現される。パイプラインＰ２が保持する実行可能フラグが「起動状態」を示している場合に、先頭の制御ロジックＬ２１は、アダプタＡ３を介してデータストア２２を定期的に監視する。制御ロジックＬ２１は、データストア２２に処理対象のデータ（データＢ）が保持されていることを検知したら、データストア２２からデータＢを取得する。制御ロジックＬ２１は、取得したデータＢを用いて所定の処理を実行し、所定の処理の実行により得られたデータを制御ロジックＬ２２に出力する。制御ロジックＬ２２は、制御ロジックＬ２１から取得したデータＣを、アダプタＡ４を介してデータストア２２に出力する。
【００４３】
続いて、最後の処理Ｃを実行する処理コンポーネント２１Ｃは、直前の処理コンポーネント２１Ｂによってデータストア２２に出力されたデータＣを入力し、当該データＣを用いて処理Ｃを実行し、処理Ｃの実行により得られたデータ（以下「データＤ」と表記する。）を一連のデータ処理の処理結果として送信データストア３２に出力する。これにより、送信データストア３２には、外部システム３に送信するためのデータＤが蓄積される。
【００４４】
処理コンポーネント２１Ｃによる上記処理は、例えば以下のようにして実現される。パイプラインＰ３が保持する実行可能フラグが「起動状態」を示している場合に、先頭の制御ロジックＬ３１は、アダプタＡ４を介してデータストア２２を定期的に監視する。制御ロジックＬ３１は、データストア２２に処理対象のデータ（データＣ）が保持されていることを検知したら、データストア２２からデータＣを取得する。制御ロジックＬ３１は、取得したデータＣを用いて所定の処理を実行し、所定の処理の実行により得られたデータを制御ロジックＬ３２に出力する。制御ロジックＬ３２は、制御ロジックＬ３１から取得したデータＤを、アダプタＡ５を介して送信データストア３２に出力する。
【００４５】
送信インタフェース３０は、外部システム３にデータを送信するためのインタフェースであり、制御アプリケーション２０とは独立して動作する。送信インタフェース３０は、送信処理コンポーネント（送信処理実行部）３１及び送信データストア（送信データ保持部）３２を有する。送信データストア３２は、例えばキューとして構成され、上述の通り、複数の処理コンポーネント２１のうち最後の処理Ｃを実行する処理コンポーネント２１Ｃが一連のデータ処理の処理結果として出力したデータＤを蓄積する。送信処理コンポーネント３１は、送信データストア３２に蓄積されたデータＤを外部システム３に送信する処理を実行する。
【００４６】
送信処理コンポーネント３１が外部システム３にデータＤを送信するタイミングは、任意に定めることができる。例えば、送信処理コンポーネント３１は、参照可能なタイマーにより、予め定められた送信時刻に達したか否かを定期的に判定し、送信時刻に達したと判定したときに送信データストア３２からデータＤを取得し、取得したデータＤを外部システム３に送信してもよい。また、何らかの方法により外部システム３からデータ送信要求を受け付けたときに送信データストア３２からデータＤを取得し、取得したデータＤを外部システム３に送信してもよい。また、送信処理コンポーネント３１は、送信データストア３２に保持されたデータＤがない場合には、送信データがないことを示すメッセージを外部システム３に送信してもよい。なお、送信データストア３２及び送信処理コンポーネント３１は、上述のように１種類のデータ（データＤ）を保持及び送信するように構成されてもよいし、複数の種類のデータを保持及び送信するように構成されてもよい。
【００４７】
ここで、受信インタフェース１０による受信処理は、制御アプリケーション２０の処理には依存しない。すなわち、受信処理コンポーネント１１は、外部システム２から受信したデータをデータストア２２とは独立した受信データストア１２に蓄積し、制御アプリケーション２０（処理コンポーネント２１又はデータストア２２）に対して直接データを受け渡さない。これにより、受信インタフェース１０を、制御アプリケーション２０とは別スレッド（又は別プロセス）として動作させることができる。この場合、受信インタフェース１０による外部システム２からのデータ受信処理を、制御アプリケーション２０による処理実行と並列して実行することができる。また、仮に制御アプリケーション２０が動作を停止しているときにも、受信インタフェース１０を動作させることができ、外部システム２との通信（データ受信等）を継続することができる。
【００４８】
送信インタフェース３０による送信処理も、制御アプリケーション２０の処理には依存しない。すなわち、送信処理コンポーネント３１は、データストア２２とは独立した送信データストア３２に蓄積されたデータを外部システム３への送信データとして取得し、制御アプリケーション２０（処理コンポーネント２１又はデータストア２２）から直接データを受け取らない。これにより、送信インタフェース３０を、制御アプリケーション２０とは別スレッド（又は別プロセス）として動作させることができる。この場合、送信インタフェース３０による外部システム３へのデータ送信処理を、制御アプリケーション２０による処理実行と並列して実行することができる。また、仮に制御アプリケーション２０が動作を停止しているときにも、送信インタフェース３０を動作させることができ、外部システム４との通信（データ送信等）を継続することができる。
【００４９】
以上述べたように、搬送制御システム１では、一連のデータ処理を互いに独立した複数の処理に分割し、各処理を直列に配置した複数の処理コンポーネント２１に実行させる。また、各処理コンポーネント２１により入力又は出力されるデータは、処理コンポーネント２１とは別のデータストア２２に保持され、各処理コンポーネント２１間のデータの受け渡しは、処理コンポーネント２１間で直接行われずに、データストア２２を介して行われる。このように、処理と処理とが分離されると共に処理とデータとが分離されることで、後述する処理変更部４０によって一部の処理コンポーネント２１を異なる処理コンポーネントに変更する際に、変更対象の処理コンポーネント２１以外の処理コンポーネント２１及びデータストア２２に影響を与えずに、変更対象の処理コンポーネント２１を異なる処理コンポーネントに変更することができる。したがって、搬送制御システム１によれば、一部のプログラム変更に伴うシステム全体の停止を抑制できる。
【００５０】
続いて、制御アプリケーション２０において実行されるデータ処理の内容を変更するための構成を説明する。搬送制御システム１では、処理変更部４０によって一部の処理コンポーネント２１を置き換えることで、制御アプリケーション２０における処理の一部を変更する。
【００５１】
処理変更部４０は、複数の処理コンポーネント２１のうち一部の処理コンポーネント（例えば処理コンポーネント２１Ｂ）を異なる処理コンポーネントに変更する処理変更部である。処理変更部４０は、情報入力部４１、処理コンポーネント生成部（処理生成部）４２、処理コンポーネント停止部（処理停止部）４３、処理コンポーネント起動部（処理起動部）４４、及び処理コンポーネント消滅部４５を備える。
【００５２】
図４〜図８を用いて、処理変更部４０の各機能要素が実行する処理内容を説明すると共に、処理変更部４０の処理フローについて説明する。ここでは、一例として図１に示した処理コンポーネント２１のうち変更対象の処理コンポーネント２１Ｂ（変更前処理コンポーネント）を異なる処理コンポーネント２１Ｄ（変更後処理コンポーネント）に変更する場合を例に説明する。ここで、図７及び図８に示すように、処理コンポーネント２１Ｄは、パイプラインＰ４と２つの制御ロジックＬ４１，Ｌ４２とを有する。
【００５３】
図４に示すように、まず、情報入力部４１によって情報入力処理が実行される（ステップＳ１）。情報入力処理は、変更前処理コンポーネントを特定する情報と、変更前処理コンポーネントと置き換える変更後処理コンポーネントとを特定する情報と、を入力する処理である。情報入力部４１は、例えば受信インタフェース１０を介して、オペレータ等（外部システム２）から、変更前処理コンポーネントを特定する情報及び変更後処理コンポーネントを特定する情報を取得する。ここでは、変更前処理コンポーネントは、処理コンポーネント２１Ｂであり、変更後処理コンポーネントは、処理コンポーネント２１Ｄである。また、変更前処理コンポーネントを特定する情報とは、処理コンポーネント２１Ｂを構成するインスタンス（パイプラインＰ２、及び制御ロジックＬ２１，Ｌ２２）を示す情報である。変更後処理コンポーネントを特定する情報とは、処理コンポーネント２１Ｄを構成するインスタンス（パイプラインＰ４、及び制御ロジックＬ４１，Ｌ４２）を示す情報である。
【００５４】
続いて、処理コンポーネント生成部４２によって変更後処理コンポーネント生成処理が実行される（ステップＳ２）。変更後処理コンポーネント生成処理は、処理コンポーネント２１Ｂを生成すると共に、処理コンポーネント２１ＢをアダプタＡを介してデータストア２２に接続する処理である。
【００５５】
図５に、変更後処理コンポーネント生成処理の詳細なフローを示す。図５に示すように、処理コンポーネント生成部４２は、情報入力部４１から変更後処理コンポーネントを特定する情報を入力し、処理コンポーネント２１Ｄを構成するパイプラインＰ４及び制御ロジックＬ４１，Ｌ４２を特定する（ステップＳ２１）。続いて、処理コンポーネント生成部４２は、ステップＳ２１で特定したパイプラインＰ４を生成する（ステップＳ２２）。続いて、処理コンポーネント生成部４２は、ステップＳ２１で特定した制御ロジックＬ４１，Ｌ４２を生成し、パイプラインＰ４に関連付ける（ステップＳ２３）。続いて、処理コンポーネント生成部４２は、制御ロジックＬ４１，Ｌ４２を所定のアダプタＡに関連付ける（ステップＳ２４）。この際、処理コンポーネント生成部４２は、制御ロジックＬ４１，Ｌ４２を既存のアダプタＡに関連付けてもよいし、新規に生成したアダプタに関連付けてもよい。これにより、制御ロジックＬ４１，Ｌ４２は、アダプタＡを介してデータストア２２に接続される。
【００５６】
図７に、変更後処理コンポーネント生成処理が実行された後の状態を示す。この例では、制御ロジックＬ２１に関連付けられているアダプタＡ２に制御ロジックＬ４１を関連付けており、制御ロジックＬ２２に関連付けられているアダプタＡ３に制御ロジックＬ４２を関連付けている。これにより、制御ロジックＬ４１は、アダプタＡ２を介してデータストア２２からデータＢを取得可能とされ、制御ロジックＬ４２は、アダプタＡ３を介してデータストア２２にデータ（データＣに対応するデータ）を出力可能とされている。ただし、この時点では、処理コンポーネント２１Ｂにより処理が実行されており、処理コンポーネント２１Ｄは、処理を停止している。すなわち、パイプラインＰ４は、停止状態となっており、制御ロジックＬ４１，Ｌ４２は、処理を実行することができない状態である。
【００５７】
なお、処理コンポーネント生成部４２は、制御ロジックＬ４１，Ｌ４２を生成する処理、及び、制御ロジックＬ４１，Ｌ４２を所定のアダプタＡに関連付ける処理を、制御ロジックＬ４１，Ｌ４２を管理するパイプラインＰ４に実行させてもよい。
【００５８】
続いて、処理コンポーネント停止部４３によって変更前処理コンポーネント停止処理が実行される（ステップＳ３）。変更前処理コンポーネント停止処理は、処理コンポーネント２１Ｂが処理を実行中であるか否かを判定し、処理を実行中でないと判定できた後に、処理コンポーネント２１Ｂを停止状態にする処理である。
【００５９】
図６に、変更前処理コンポーネント停止処理の詳細なフローを示す。図６に示すように、処理コンポーネント停止部４３は、情報入力部４１から変更前処理コンポーネントを特定する情報を入力し、処理コンポーネント２１Ｂを構成するパイプラインＰ２を特定する（ステップＳ３１）。続いて、処理コンポーネント停止部４３は、パイプラインＰ２に対して、実行可能状態を停止状態に変更するように指示する（ステップＳ３２）。指示を受け取ったパイプラインＰ２は、自身が保持する実行可能フラグを参照し、起動状態であるか否かを判定する（ステップＳ３３）。ここで、実行可能フラグが停止状態である場合（ステップＳ３３：ＮＯ）には、パイプラインＰ２は、処理コンポーネント停止部４３に結果（正常完了）を通知して処理を終了する。一方、実行可能フラグが起動状態である場合（ステップＳ３３：ＹＥＳ）には、パイプラインＰ２は、実行可能フラグを停止移行状態に設定する（ステップＳ３４）。これにより、パイプラインＰ２が管理する制御ロジックＬ２１，Ｌ２２が一連の処理を完了してパイプラインＰ２の実行状態が非実行中状態となった後には、制御ロジックＬ２１，Ｌ２２は、再度処理を実行することができなくなる。その後、パイプラインＰ２は、実行フラグを参照し、実行フラグが非実行状態である場合（ステップＳ３５：ＹＥＳ）には、実行可能フラグを停止状態にし、処理コンポーネント停止部４３に結果（正常完了）を通知して処理を終了する（ステップＳ３６）。一方、実行フラグが実行中状態である場合（ステップＳ３５：ＮＯ）には、ステップＳ３５の判定を所定間隔で繰り返し実行し、制御ロジックＬ２１，Ｌ２２の処理が完了してパイプラインＰ２の実行フラグが非実行状態となったことを判定した時点（ステップＳ３５：ＹＥＳ）で、パイプラインＰ２の実行可能フラグを停止状態にし、処理コンポーネント停止部４３に結果（正常完了）を通知して処理を終了する（ステップＳ３６）。
【００６０】
続いて、処理コンポーネント起動部４４によって変更後処理コンポーネント起動処理が実行される（ステップＳ４）。変更後処理コンポーネント起動処理は、変更前処理コンポーネント停止処理（ステップＳ３）により、パイプラインＰ２が停止状態にされた後に、処理コンポーネント２１Ｄを起動状態にする処理である。具体的には、処理コンポーネント起動部４４は、処理コンポーネント２１Ｄの実行可能フラグを起動状態に設定する。これにより、処理コンポーネント２１Ｄは、処理を実行可能な状態となり、処理コンポーネント２１Ｂから処理コンポーネント２１Ｄへの置き換えが完了する。処理コンポーネント２１Ｄに関連付けられるデータストアが、他の処理コンポーネント２１Ａ〜２１Ｃに関連付けられたデータストア２２と異なる場合には、処理コンポーネント２１Ｂと処理コンポーネント２１Ｄとを両方起動状態としてもよい。これにより、処理コンポーネント２１Ｄの検証を、処理コンポーネント２１Ｂを実行中としたままで行うことができ、万が一処理コンポーネント２１Ｄに不具合があった場合には、処理コンポーネント２１Ｄを停止及び消滅させること（処理コンポーネント２１Ｄへの置き換えの取り消し）を容易に行うことができる。
【００６１】
ステップＳ４までの処理が完了した後、処理コンポーネント消滅部４５は、ＲＡＭ１０２上から不要となった処理コンポーネント２１Ｂのインスタンスを消滅させる。例えば、処理コンポーネント消滅部４５は、処理コンポーネント２１ＢのパイプラインＰ２及び制御ロジックＬ２１，Ｌ２２に対して消滅指示を通知する。そして、当該消滅指示の通知を受けたパイプラインＰ２及び制御ロジックＬ２１，Ｌ２２は、終了処理を実行し、ＲＡＭ１０２上から消滅する（図８参照）。
【００６２】
以上述べたように、処理変更部４０は、処理コンポーネント２１Ｄ（変更後処理コンポーネント）を生成すると共に、処理コンポーネント２１ＤをアダプタＡ２，Ａ３を介してデータストア２２に接続する。続いて、処理変更部４０は、処理コンポーネント２１Ｂ（変更前処理コンポーネント）が処理を実行中でないこと（パイプラインＰ２が非実行状態であること）を確認した上で、処理コンポーネント２１Ｂを停止する（パイプラインＰ２を停止状態にする）と共に、処理コンポーネント２１Ｄを起動状態にする。これにより、処理コンポーネント２１Ｄがデータストア２２にアクセス可能となる。このような処理によって、処理コンポーネント２１Ｂ，２１Ｄの置き換えに係るデータ不整合が防止されると共に、変更に係る処理コンポーネント２１Ｂ以外の処理コンポーネント２１Ａ，２１Ｃ及びデータストア２２の動作に影響を及ぼすことなく、処理コンポーネント２１Ｂを処理コンポーネント２１Ｄに置き換えることができる。したがって、搬送制御システム１によれば、一部のプログラム変更に伴うシステム全体の停止を抑制できる。
【００６３】
また、処理変更部４０が処理コンポーネント２１Ｂを異なる処理コンポーネント２１Ｄに変更している最中か否かに関わらず、上流の処理コンポーネント２１Ａは、処理を実行してもよい。なぜならば、処理コンポーネント２１間のデータの受け渡しは、データストア２２を介して行われ、処理コンポーネント２１間で直接行われないからである。このため、処理変更部４０によって処理コンポーネント２１Ｂについて変更処理が実行されている最中であっても、上流の処理コンポーネント２１Ａは、処理コンポーネント２１Ｂの変更による影響を受けずに、処理の実行を継続することができる。したがって、搬送制御システム１によれば、特定の処理コンポーネント２１を変更している最中であっても、当該特定の処理コンポーネント２１よりも前（上流）の処理コンポーネント２１による処理が継続されることで、システム全体の停止が抑制される。
【００６４】
また、処理変更部４０が処理コンポーネント２１Ｂを異なる処理コンポーネント２１Ｄに変更している最中か否かに関わらず、下流の処理コンポーネント２１Ｃは、処理コンポーネント２１Ｂにより出力されたデータ（データＣ）がデータストア２２に保持されている場合には、処理を実行してもよい。なぜならば、処理変更部４０によって処理コンポーネント２１Ｂを処理コンポーネント２１Ｄに変更する処理が実行されている最中であっても、下流の処理コンポーネント２１Ｃは、データストアに入力データ（データＣ）が保持されていれば、処理を実行することができるからである。したがって、搬送制御システム１によれば、特定の処理コンポーネント２１を変更している最中であっても、当該特定の処理コンポーネント２１よりも後（下流）の処理コンポーネント２１による処理が継続されることで、システム全体の停止が抑制される。
【００６５】
なお、変更に係る特定の処理コンポーネント２１の実行中に他の処理コンポーネント２１が処理を実行する構成は、例えば、処理コンポーネント２１毎に異なるスレッドを割り当て、複数の処理コンポーネント２１を並列実行させることで実現できる。
【００６６】
データ変更部５０は、データストア２２を異なるデータストア２３に変更するデータ変更部である。例えば、複数の処理コンポーネント２１Ａ，２１Ｂ，２１Ｃの処理を変更すると共にデータストア２２において保持しているデータ定義において新たな型を扱えるようにしたデータを処理コンポーネント２１に処理させたい場合が考えられる。データ変更部５０は、このような場合に、データの整合性を維持したまま、既存のデータストア２２を、新たな型を扱えるようにしたデータを保持するデータストア２３に変更する。なお、変更後のデータストア２３に保持されるデータを新旧の処理コンポーネント２１が利用できるように、アダプタＡでデータの型の違いを吸収してもよい。データ変更部５０は、情報入力部５１、インスタンス生成部（処理生成部）５２、処理コンポーネント停止部（処理停止部）５３、データ移行部５４、処理コンポーネント起動部（処理起動部）５５、及びインスタンス消滅部５６を備える。
【００６７】
図９〜図１２を用いて、データ変更部５０の各機能要素が実行する処理内容を説明すると共に、データ変更部５０の処理フローについて説明する。ここでは、一例として図１に示したデータストア２２を異なるデータストア２３（変更後データストア）に変更する場合を例に説明する。ここで、データ変更部５０の処理フローのうち、既に処理変更部４０の処理フローを説明する際に説明した内容については適宜説明を省略する。また、複数の処理コンポーネント２１をそれぞれ、異なる処理コンポーネントに変更する方法はいずれも同様であるため、ここでは、処理コンポーネント２１Ｂにのみ着目し、データストア２２をデータストア２３に変更すると共に処理コンポーネント２１Ｂをデータストア２３に関連付けられる処理コンポーネント２１Ｅに変更する場合の処理手順について説明する。ここで、図１１及び図１２に示すように、処理コンポーネント２１Ｅは、パイプラインＰ５と２つの制御ロジックＬ５１，Ｌ５２とを有する。
【００６８】
図９に示すように、まず、情報入力部５１によって情報入力処理が実行される（ステップＳ１１）。この情報入力処理は、変更後データストアを特定する情報と、変更前処理コンポーネントを特定する情報と、変更前処理コンポーネントと置き換える変更後処理コンポーネントとを特定する情報と、を入力する処理である。情報入力部５１は、例えば受信インタフェース１０を介して、オペレータ等（外部システム２）から、変更後データストアを特定する情報、変更前処理コンポーネントを特定する情報、及び変更後処理コンポーネントを特定する情報を取得する。ここでは、変更後データストアは、データストア２３である。上述の通り、ここでは処理コンポーネント２１Ｂにのみ着目して説明を行うため、変更前処理コンポーネントは、処理コンポーネント２１Ｂであり、変更後処理コンポーネントは、処理コンポーネント２１Ｅである。
【００６９】
続いて、インスタンス生成部５２によってインスタンス生成処理が実行される（ステップＳ１２）。インスタンス生成処理は、変更後のデータストア２３及び処理コンポーネント２１Ｅを生成すると共に、処理コンポーネント２１ＥをアダプタＡを介してデータストア２３に接続する処理である。
【００７０】
図１０に、インスタンス生成処理の詳細なフローを示す。図１０に示すように、インスタンス生成部５２は、情報入力部５１から変更後データストアを特定する情報と変更後処理コンポーネントを特定する情報とを入力し、データストア２３を特定すると共に、処理コンポーネント２１Ｅを構成するパイプラインＰ５及び制御ロジックＬ５１，Ｌ５２を特定する（ステップＳ１２１）。続いて、インスタンス生成部５２は、特定したデータストア２３を生成する（ステップＳ１２２）。続いて、インスタンス生成部５２は、データストア２３にアクセスするためのアダプタＡ１１，Ａ１２を生成し（ステップＳ１２３）、アダプタＡ１１，Ａ１２をそれぞれデータストア２３に関連付ける（ステップＳ１２４）。続いて、インスタンス生成部５２は、パイプラインＰ５を生成する（ステップＳ１２５）。続いて、インスタンス生成部５２は、ステップＳ１２１で特定した制御ロジックＬ５１，Ｌ５２を生成し、パイプラインＰ５に関連付ける（ステップＳ１２６）。続いて、インスタンス生成部５２は、制御ロジックＬ５１，Ｌ５２をそれぞれアダプタＡ１１，Ａ１２に関連付ける（ステップＳ１２７）。これにより、制御ロジックＬ５１，Ｌ５２は、アダプタＡ１１，Ａ１２を介してデータストア２３に接続される。
【００７１】
図１１に、インスタンス生成処理が実行された後の処理コンポーネント２１Ｂ及び処理コンポーネント２１Ｅの状態を示す。この時点では、処理コンポーネント２１Ｂにより処理が実行されており、処理コンポーネント２１Ｅは、処理を停止している。すなわち、パイプラインＰ５は、停止状態となっており、制御ロジックＬ５１，Ｌ５２は、処理を実行することができない状態となっている。
【００７２】
続いて、処理コンポーネント停止部５３によって変更前処理コンポーネント停止処理が実行される（ステップＳ１３）。変更前処理コンポーネント停止処理は、処理コンポーネント２１Ｂが処理を実行中であるか否かを判定し、処理を実行中でないと判定できた後に、処理コンポーネント２１Ｂを、停止状態にする処理である。この変更前処理コンポーネント停止処理の詳細な処理フローは、上述した処理フロー（図６参照）と同様であるため、説明を省略する。
【００７３】
続いて、データ移行部５４によってデータ移行処理が実行される。データ移行処理は、処理コンポーネント停止部５３により処理コンポーネント２１Ｂが停止状態にされた後に、データストア２２に保持されているデータをデータストア２３に移行する処理である。例えば、データ移行部５４は、データストア２２及びデータストア２３の両方にアクセス可能なデータ移行用のデータ移行インスタンス２５を生成し、データストア２２からデータストア２３へのデータ移行（データの移動又はコピー）をデータ移行インスタンス２５に実行させることで、データストア２２からデータストア２３へのデータ移行を実行してもよい（図１２参照）。
【００７４】
続いて、処理コンポーネント起動部５５によって変更後処理コンポーネント起動処理が実行される（ステップＳ１５）。変更後処理コンポーネント起動処理は、データ移行処理（ステップＳ１４）の後に、処理コンポーネント２１Ｅを起動状態にする処理である。具体的には、処理コンポーネント起動部５５は、処理コンポーネント２１Ｅの実行可能フラグを「起動状態」とする。これにより、処理コンポーネント２１Ｅは、データストア２３に保持されたデータを用いて処理を実行可能な状態となり、データストア２２からデータストア２３への置き換えが完了すると共に、処理コンポーネント２１Ｂから処理コンポーネント２１Ｅへの置き換えが完了する。なお、ここでは説明を簡単にするために処理コンポーネント２１Ｂの置き換えについてのみ説明したが、処理コンポーネント２１Ａ，２１Ｃについても、処理コンポーネント２１Ｂと同様に、データストア２３に関連付けられた処理コンポーネントに置き換えることができる。
【００７５】
ステップＳ１５までの処理が完了した後、インスタンス消滅部５６は、ＲＡＭ１０２上から不要となったインスタンスを消滅させる。例えば、インスタンス消滅部５６は、変更前の処理コンポーネント２１Ａ，２１Ｂ，２１ＣのパイプラインＰ及び制御ロジックＬに対して消滅指示を通知する。そして、当該消滅指示の通知を受けたパイプラインＰ及び制御ロジックＬは、終了処理を実行し、ＲＡＭ１０２上から消滅する。また、インスタンス消滅部５６は、不要となったアダプタＡ及びデータストア２２についても同様に消滅させてもよい。
【００７６】
以上述べたように、データ変更部５０は、変更後のデータストア２３を生成し、処理コンポーネント２１Ｅ（変更後処理コンポーネント）を生成すると共に、処理コンポーネント２１ＥをアダプタＡ１１，Ａ１２を介してデータストア２３に接続する。続いて、データ変更部５０は、処理コンポーネント２１Ｂ（変更前処理コンポーネント）を停止した後に、データ移行部５４によって変更前のデータストア２２から変更後のデータストア２３にデータを移行した後に、処理コンポーネント２１Ｅを起動する。これにより、処理コンポーネント２１Ｅがデータストア２３にアクセス可能となる。このような処理によって、処理コンポーネント及びデータストアの両方の置き換えを予め確立された手順で確実かつ容易に実行することができる。したがって、搬送制御システム１によれば、一部のプログラム変更に伴うシステム全体の長期間の停止を抑制できる。
【００７７】
以上、本発明をその実施形態に基づいて詳細に説明した。しかし、本発明は上記実施形態に限定されるものではない。本発明は、その要旨を逸脱しない範囲で様々な変形が可能である。
【００７８】
本実施形態では、処理コンポーネント２１が、パイプラインＰと一以上の制御ロジックＬとからなる構成を例に挙げて説明したが、処理コンポーネントは、必ずしもこのようなインスタンス構成となっていなくともよい。例えば、処理コンポーネントは、単一のインスタンスであってもよい。この場合には、処理コンポーネントとアダプタとが直接関連付けられる構成とすればよい。また、本実施形態では、処理コンポーネントからデータストアに対するアクセスを制限するために、処理コンポーネント（制御ロジック）とデータストアとの間にアダプタを設ける構成としたが、アダプタを設けずに、処理コンポーネントとデータストアとが直接関連付けられる構成としてもよい。
【００７９】
［実施例］
制御アプリケーション２０によるデータ処理の具体例として、コントローラ（搬送制御システム１）が台車（搬送機）の動作を制御するためのデータ処理を行う場合（第１の例）と、コントローラがコンベヤの動作を制御するためのデータ処理を行う場合（第２の例）とについて説明する。
【００８０】
（第１の例）
第１の例では、コントローラ（搬送制御システム１）が、走行制御を行う制御装置が組み込まれた台車（外部システム２）に対して実行すべき命令を出力し、台車が、当該命令に基づいて走行制御を実行する場合のデータ処理について説明する。このデータ処理では、台車は、ある命令（ある走行ルートに沿って走行する処理等）を実行完了して停止したタイミング等で、コントローラ（搬送制御システム１）の受信インタフェース１０に対して入力データを送信する。ここで、入力データは、例えば、台車の識別子（台車Ｎｏ）と、実行を完了した（又はこれから完了する）命令の識別子（シリアルＮｏ）と、命令の実行を完了した（又はこれから完了する）際の台車の位置（命令完了位置）とを相互に関連付けた情報である。
【００８１】
続いて、コントローラの制御アプリケーション２０は、受信インタフェース１０を介して台車からの入力データを入力し、各処理コンポーネント２１及びデータストア２２によってデータ処理を実行する。ここで実行されるデータ処理は、例えば台車の命令完了位置に基づいて台車が次に向かうべき目的地を算出する処理や、算出された目的地に到達するための最適なルートを算出する処理等である。制御アプリケーション２０は、上述のデータ処理を実行し、送信インタフェース３０に出力データを出力する。ここで、出力データは、例えば、制御対象の台車の識別子と、台車に対する新たな命令の識別子と、台車の目的地と、台車の走行ルートとを相互に関連付けた情報である。
【００８２】
続いて、コントローラの送信インタフェース３０は、制御アプリケーション２０からの出力データを、当該出力データに関連付けられた「制御対象の台車の識別子」に対応する台車に送信する。台車は、送信インタフェース３０から受信した出力データに基づいて走行制御を実行する。
【００８３】
このようなデータ処理を実行するコントローラにおいて、処理コンポーネント２１（例えば処理コンポーネント２１Ｂ）のソフトウェアアップデート（別の処理コンポーネント２１Ｄへの置き換え）を行う場合について考える。
【００８４】
まず、このようなソフトウェアアップデートに伴ってコントローラをシャットダウンさせる必要がある場合について考える。この場合、ソフトウェアアップデートに伴ってコントローラがシャットダウンされている間、受信インタフェース１０は、台車からの入力データを受信することができず、応答メッセージを台車に返信することができない。このため、台車は、受信インタフェース１０からの応答メッセージの受信待ち状態となってしまい、他の処理を実行することができなくなってしまう。また、送信インタフェース３０は、台車に対して次の命令を送信することができない。このため、処理コンポーネント２１Ｂのソフトウェアアップデートが完了してコントローラが起動されるまでの間（例えば数秒から数十秒）、台車は、次に実行する命令を取得できないため、走行制御を実行することができない。これにより、台車による物品の搬送時間が、数秒から数十秒長くかかってしまうといった問題が生じ得る。
【００８５】
次に、上述の実施形態で説明したように、コントローラをシャットダウンさせることなく処理コンポーネント２１Ｂのソフトウェアアップデートを行う場合について考える。なお、このようにコントローラのシャットダウンを伴わないソフトウェアアップデートのことを「ノンストップアップデート」という。この場合、受信インタフェース１０は、受信処理を継続して実行するため、台車からの入力データを受信し、応答メッセージを台車に返信することができる。また、送信インタフェース３０は、送信データストア３２にキューイングされた次の命令を、台車に送信することができる。これにより、台車は、処理コンポーネント２１Ｂのソフトウェアアップデートの影響を受けずに走行制御を実行することができる。すなわち、台車は、処理コンポーネント２１Ｂのソフトウェアアップデートが実行されていない時と同じ停止時間（受信インタフェース１０に入力データを送信してから送信インタフェース３０から出力データを受信するまでの時間）で、走行制御を実行することができる。
【００８６】
（第２の例）
第２の例では、コントローラが、物品の移動制御（別のコンベヤへの載せ替えに関する制御）を行う制御装置が組み込まれたコンベヤ（外部システム２）に対して実行すべき命令を出力し、コンベヤが、当該命令に基づいて物品の移動制御を行う場合のデータ処理について説明する。このデータ処理では、コンベヤは、当該コンベヤ上の物品が次のコンベヤに移動することが可能な位置に近づいたことを検知したタイミング等で、コントローラの受信インタフェース１０に対して入力データを送信する。ここで、入力データは、例えば、コンベヤの識別子（コンベヤＩＤ）と、実行を完了した（又はこれから完了する）命令の識別子（シリアルＮｏ）とを相互に関連付けた情報である。
【００８７】
続いて、コントローラの制御アプリケーション２０は、受信インタフェース１０を介してコンベヤからの入力データを入力し、各処理コンポーネント２１及びデータストア２２によってデータ処理を実行する。ここで実行されるデータ処理は、例えば予めシステムに投入されている搬送計画を示す情報に基づいて、コンベヤ上の物品をどのコンベヤに移動させるかを決定する処理等である。制御アプリケーション２０は、上述のデータ処理を実行し、送信インタフェース３０に出力データを出力する。ここで、出力データは、例えば、制御対象のコンベヤの識別子と、コンベヤに対する新たな命令の識別子と、物品の移動先となるコンベヤの識別子とを相互に関連付けた情報である。
【００８８】
続いて、コントローラの送信インタフェース３０は、制御アプリケーション２０からの出力データを、当該出力データに関連付けられた「制御対象のコンベヤの識別子」に対応するコンベヤに送信する。台車は、送信インタフェース３０から受信した出力データに基づいて走行制御を実行する。
【００８９】
このようなデータ処理を実行するコントローラにおいて、処理コンポーネント２１（例えば処理コンポーネント２１Ｂ）のソフトウェアアップデート（別の処理コンポーネント２１Ｄへの置き換え）を行う場合について考える。
【００９０】
まず、このようなソフトウェアアップデートに伴ってコントローラをシャットダウンさせる必要がある場合について考える。この場合、ソフトウェアアップデートに伴ってコントローラがシャットダウンされている間、受信インタフェース１０は、コンベヤからの入力データを受信することができず、応答メッセージをコンベヤに返信することができない。このため、コンベヤは、受信インタフェース１０からの応答メッセージの受信待ち状態となってしまい、他の処理を実行することができなくなってしまう。また、送信インタフェース３０は、コンベヤに対して次の命令を送信することができない。このため、処理コンポーネント２１Ｂのソフトウェアアップデートが完了してコントローラが起動されるまでの間、コンベヤは、次に実行する命令を取得できないため、物品をどのコンベヤに載せ替えればよいかを把握することができない。このような物品の移動制御は、細かい時間制御が必要であるため、コントローラの停止時間が数百ミリ秒程度であったとしても、コンベヤに対する命令の送信がわずかに遅れてしまうことで、物品の載せ替えに失敗するおそれがある。その結果、コンベヤが異常停止してしまい、コンベヤを再稼働するまでに数分から数十分かかってしまうといった問題が生じ得る。
【００９１】
次に、ノンストップアップデートを行う場合について考える。この場合、受信インタフェース１０は、受信処理を継続して実行するため、コンベヤからの入力データを受信し、応答メッセージをコンベヤに返信することができる。また、送信インタフェース３０は、送信データストア３２にキューイングされた次の命令を、コンベヤに送信することができる。これにより、コンベヤは、処理コンポーネント２１Ｂのソフトウェアアップデートの影響を受けずに物品の移動制御を実行することができるため、物品の載せ替えの失敗に起因するコンベヤの異常停止の発生を抑制することができる。
【００９２】
以上述べたようなノンストップアップデートを行うことができるコントローラ（搬送制御システム１）によれば、コントローラの一部のソフトウェアアップデートによって台車やコンベヤ等の停止時間、ひいては工場の生産ラインの稼働停止時間が増加してしまうことを効果的に抑制することができる。
【符号の説明】
【００９３】
１…搬送制御システム、２，３…外部システム、１１…受信処理コンポーネント（受信処理実行部）、１２…受信データストア（受信データ保持部）、２１，２１Ａ，２１Ｂ，２１Ｃ，２１Ｄ…処理コンポーネント（処理実行部）、２２，２３…データストア（データ保持部）、３１…送信処理コンポーネント（送信処理実行部）、３２…送信データストア（送信データ保持部）、４０…処理変更部、４１，５１…情報入力部、４２…処理コンポーネント生成部（処理生成部）、４３，５３…処理コンポーネント停止部（処理停止部）、４４，５５…処理コンポーネント起動部（処理起動部）、５０…データ変更部、５２…インスタンス生成部（処理生成部），５４…データ移行部。
【図１】
2015191245.tif 000003
【図２】
2015191245.tif 000004
【図３】
2015191245.tif 000005
【図４】
2015191245.tif 000006
【図５】
2015191245.tif 000007
【図６】
2015191245.tif 000008
【図７】
2015191245.tif 000009
【図８】
2015191245.tif 000010
【図９】
2015191245.tif 000011
【図１０】
2015191245.tif 000012
【図１１】
2015191245.tif 000013
【図１２】
2015191245.tif 000014