以下に、本発明に係る実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、下記実施例における構成要素には、当業者が置換可能かつ容易なもの、あるいは実質的に同一のものが含まれる。
図1は、本実施例に係る処理システム1の主要構成を示す図である。処理システム1は、部品処理装置5と、搬送スケジュール生成装置20とを備える。部品処理装置5は、三以上の処理部(例えば処理槽2A〜2G)と、搬送装置10と、制御装置3とを備える。以下の記載において、図1の右側を上流側とし、図1の左側を下流側とする。本実施例に係る処理システム1は、複数の部品の各々に表面処理を施す表面処理システムである。
三以上の処理部は、処理対象物(部品)にそれぞれ異なる処理を施す。具体的には、三以上の処理部は、少なくとも一つが、処理対象物を浸す液体が貯留できる処理槽である。本実施例では、七つの処理槽2A,2B,2C,2D,2E,2F,2Gを有する処理システム1について説明する。一つの処理槽(処理槽2A,2B,2C,2D,2E,2F,2G)は、それぞれ一つの処理部である。七つの処理槽2A,2B,2C,2D,2E,2F,2Gは、部品の表面処理に関する各種の処理(例えば、脱脂処理、洗浄処理、エッチング処理、アノダイズ処理、化成処理、乾燥処理等)に関して個別に設けられる。また、脱脂処理として例えば水系脱脂、アルカリ脱脂等があり、洗浄処理として例えば湯洗、水洗等がある。本実施例の処理システム1は、具体的内容が異なる処理を行う七つの処理槽2A,2B,2C,2D,2E,2F,2Gが設けられる。処理システム1は、一部又は全部の処理について、同一の処理を行う処理槽が複数設けられていてもよい。また、処理開始前の部品を載置するための処理槽(入口)2A及び処理完了後の部品を載置するための処理槽(出口)2Gが含まれていてもよい。各処理に対応する処理槽2A〜2Gの配置(上流側又は下流側の位置関係)は、任意である。
搬送装置10は、三以上の処理部(例えば七つの処理槽2A,2B,2C,2D,2E,2F,2G)のいずれかの処理部から他のいずれかの処理部に処理対象物を搬送する三以上の処理部の数よりも一以上少ない複数のクレーン(例えばクレーン12A,12B)が同一のレール上で三以上の処理部間を移動する。具体的には、搬送装置10は、一対のレール11と、二つのクレーン12A,12Bとを有する。二つのクレーン12A,12Bは、レール11に沿って移動可能に設けられている。二つのクレーン12A,12Bは、レール11上を走行するための駆動部を備え、制御装置3の制御下で駆動部を動作させて移動する。
図1に示すように、処理槽2A〜2Gが並列する方向とレール11の敷設方向とは同一である。二つのクレーン12A,12Bは、レール11に沿って移動することで、アームで担持した部品を処理槽間で搬送することができるよう設けられている。
制御装置3は、搬送装置10の各クレーン12A,12Bの動作を制御する。具体的には、制御装置3は、駆動部やアームの操作系に対する命令を出力する装置(コンピューター等)である。制御装置3は、搬送スケジュール生成装置20から出力された搬送スケジュールデータに従って各クレーン12A,12Bの動作を制御する。
図2は、搬送スケジュール生成装置20の主要構成を示すブロック図である。搬送スケジュール生成装置20は、部品処理装置5による処理対象物の搬送スケジュールを生成する。搬送スケジュール生成装置20は、例えば、記憶部25と、演算部26とを備える情報処理装置(コンピューター)である。記憶部25は、クレーン干渉確認プログラム51、処理工程確認プログラム52、スケジュール作成プログラム53等の各種のソフトウェア・プログラム及びこれらのソフトウェア・プログラムの実行に際して用いられるデータを記憶する。演算部26は、記憶部25に記憶されたソフトウェア・プログラムを読み出して実行処理する。これによって、搬送スケジュール生成装置20は、干渉範囲設定部21、判定部22及び算出部23として機能する。
記憶部25は、処理部と処理対象物との関係に基づいて、当該処理部を処理対象物で処理する必要処理時間及び処理対象物に対して処理部で処理を実行する順序を記憶する。具体的には、記憶部25は、例えば、レイアウトデータ61と、作業時間データ62と、処理手順データ63と、クレーン配置データ64と、移動時間データ65と、処理便データ66とを記憶する。これらのデータの詳細については後述する。
干渉範囲設定部21は、一つのクレーン(例えばクレーン12A又はクレーン12B)の位置を基準としてクレーンの干渉範囲を設定する。具体的には、干渉範囲設定部21は、一つの処理槽に存する部品を他の処理槽に搬送する一つのクレーンに関して、現在の位置並びに搬送前の処理槽に対応するレール11上の位置及び搬送後の処理槽に対応するレール11上の位置を取得する。干渉範囲設定部21は、取得された三つの位置を包括するレール11上の範囲を干渉範囲として設定する。
図3は、処理槽2A〜2Gとクレーン12A,12Bの動作可能範囲MA,MBとの関係の一例を示す図である。図3では、七つの処理槽2A,2B,2C,2D,2E,2F,2Gと二つのクレーン12A,12Bとの組み合わせであり、レール11の敷設範囲が七つの処理槽2A,2B,2C,2D,2E,2F,2Gに対する搬送に最低限必要な範囲であり、レール11の敷設方向に関する処理槽2A〜2Gの幅が等しく、かつ、レール11の敷設方向に関する一つのクレーン12A(12B)の幅が一つの処理槽の幅に対応する場合の例について記載している。クレーン12A,12Bは、同一のレール11上に存することから、一方のクレーンの上流側又は下流側に存する他方のクレーンにより占有される範囲に応じて動作可能範囲が制限される。図3に示す例では、クレーン12Aの動作可能範囲MA及びクレーン12Bの動作可能範囲MBを示している。各クレーンの干渉範囲は、各クレーンの動作可能範囲内で設定される。言い換えれば、各クレーンは、その動作可能範囲内の処理槽2A,2B,2C,2D,2E,2F,2Gのいずれかに存する部品を、その動作可能範囲内の別の処理槽2A,2B,2C,2D,2E,2F,2Gのいずれかに搬送することができる。図示しないが、クレーンの数が三以上である場合、最上流でなく、かつ、最下流でないクレーンは、上流側及び下流側に存する他のクレーンにより占有される範囲に応じて動作可能範囲が制限される。すなわち、ある一つのクレーンにとっての「他のクレーンに占有される範囲」とは、レール11上の全範囲のうち、他のクレーンが物理的に占有する範囲及び他のクレーンを挟んで当該一つのクレーンの反対側に存する範囲をさす。
判定部22は、クレーン(例えばクレーン12A,12B)による処理対象物の搬送動作の実行を判定する。
図4及び図5は、二つのクレーン12A,12Bが干渉しない場合の一例を示す図である。例えば図4に示すように、クレーン12Bの干渉範囲KA内にクレーン12Aが存せず、かつ、クレーン12Aが干渉範囲KA内に進入する動作を行わない時間帯については、クレーン12Bが部品を搬送することを妨げる他のクレーンがないことになる。この場合、判定部22は、当該時間帯にクレーン12Bによる部品の搬送を行うことができるものと判定する。また、図5に示すように、クレーン12Aの干渉範囲KB内にクレーン12Bが存するものの、クレーン12Aによる搬送方向と同一の方向にクレーン12Bが移動して干渉範囲KB外に出る動作を行う時間帯については、クレーン12Aが部品を搬送することを妨げる他のクレーンがないことになる。この場合、判定部22は、当該時間帯にクレーン12Aによる部品の搬送を行うことができるものと判定する。このように、判定部22は、干渉範囲(例えば干渉範囲KB)内に他のクレーン(例えばクレーン12B)が存在する場合、他のクレーンを干渉範囲の外に移動させることができるときに、一つのクレーン(例えばクレーン12A)による処理対象物の搬送を行うことができると判定する。また、クレーン12Bが、既にクレーン12Aの干渉範囲の外に移動しているときも同様である。
図6及び図7は、二つのクレーン12A,12Bが干渉する場合の一例を示す図である。例えば図6に示すようにクレーン12Aの干渉範囲KC内にクレーン12Bが存し、かつ、クレーン12Bがクレーン12Aと衝突せずに干渉範囲KC外に移動することができない時間帯については、クレーン12Aが部品を搬送することを妨げる他のクレーンがあることになる。この場合、判定部22は、当該時間帯にクレーン12Aによる部品の搬送を行うことができないものと判定する。また、図7に示すように、クレーン12Aの干渉範囲KD内にクレーン12Bが存しないものの、クレーン12Aが搬送を行ったと仮定した場合の時間帯にクレーン12Bが干渉範囲KD内に進入する動作を伴う時間帯については、クレーン12Aが部品を搬送することを妨げる他のクレーンがあることになる。この場合、判定部22は、当該時間帯にクレーン12Aによる部品の搬送を行うことができないものと判定する。このように、判定部22は、干渉範囲(例えば干渉範囲KC、KD)に他のクレーン(例えばクレーン12B)が侵入している場合、一つのクレーン(例えばクレーン12A)による処理が実行不可と判定する。
ある時間帯に一つのクレーンによる部品の搬送を行うことができない場合、判定部22は、別の時間帯に関して当該一つのクレーンによる部品の搬送を行うことができるか否か再度判定する。判定部22は、当該一つのクレーンによる部品の搬送を行うことができる時間帯が発見されるまで、判定を繰り返す。
図8は、七つの処理槽2A〜2G間で部品を搬送する二つのクレーン12A,12Bの動作時間帯及び移動状況の一例を示すガントチャートである。算出部23は、所定の条件下で全ての処理対象物の一連の処理の開始から終了までの搬送スケジュールを算出する。具体的には、算出部23は、例えば図8に示すようなガントチャートに対応する搬送スケジュールを算出して出力する。すなわち算出部23は、処理対象物に対する各処理の開始時刻及び終了時刻を示すデータ並びに各クレーン12A,12Bの時系列に沿った位置情報を示すデータを出力する。図8に示すように、処理システム1は、部品処理を複数の処理対象物の各々に対して並行して実施する。
図9〜13は、算出部23により参照されるデータの一例を示す図である。算出に際して、算出部23は、判定部22による判定に基づいて、複数のクレーン(例えばクレーン12A,12B)のそれぞれで処理対象物を並行して各処理部(例えば七つの処理槽2A,2B,2C,2D,2E,2F,2G)に移動させる搬送スケジュールを算出する。具体的には、算出部23は、算出に際して、レイアウトデータ61と、作業時間データ62と、処理手順データ63と、クレーン配置データ64と、移動時間データ65と、処理便データ66とを記憶部25から読み出して参照し、搬送スケジュールを算出する。
図9は、レイアウトデータ61の一例を示す図である。レイアウトデータ61は、三以上の処理部(例えば処理槽2A〜2G)のレイアウトを示すデータである。具体的には、レイアウトデータ61は、例えば図9に示すように、初期値を1として純増するナンバー(No)と、各処理槽に対して割り振られる個別の処理槽IDと、各処理槽の概要を示す内容とを含む。図9では、内容として各処理槽の符号を付した記載を用いているが、一例であってこれに限られるものでない。例えば、各処理槽で行われる処理の具体的内容を示す情報を含んでいてもよい。レイアウトデータ61においてナンバーがより小さい処理槽が上流側に配置され、より大きい処理槽が下流側に配置される。すなわち図9に示すレイアウトデータ61は、上流側から順に下流側に向かって配置される処理槽2A〜2Gの配置順を示す。
図10は、作業時間データ62の一例を示す図である。作業時間データ62は、各処理部における処理時間の上限及び下限等を示すデータである。具体的には、作業時間データ62は、例えば図10に示すように、処理槽IDと、処理槽ID毎の処理工程を示す内容(作業項目)と、各処理槽で部品が連続して待機可能な時間(処理時間)の下限及び上限と、各処理槽でクレーン(例えばクレーン12A,12B)が部品を搬入又は搬出する場合に費やされるクレーン12A,12Bの上げ下げ時間とを含む。なお、上限及び下限が「0」である作業時間は、作業時間に上限及び下限の制限がないことを示す。作業時間データ62が示すように、一連の処理である部品処理は、三以上の処理部(例えば処理槽2A〜2G)の一部又は全部を個別に定められた下限以上かつ上限以下である処理時間占有する。このように、処理部(例えば七つの処理槽2A,2B,2C,2D,2E,2F,2Gのいずれか)で処理対象物を処理する必要処理時間は、上限時間と下限時間とが設定されている。なお、同一の処理槽による処理について複数種類の処理工程と各処理工程の処理時間を作業時間データ62で定義することもできる。例えば、一連の処理において同一の処理槽による処理を複数回行う場合等に、このような定義が行われる。
図11は、処理手順データ63の一例を示す図である。処理手順データ63は、部品に施される各処理の処理手順を示すデータである。具体的には、処理手順データ63は、例えば図11に示すように、処理手順に含まれる各処理の名称(処理名称)と、各処理で用いられる内容(処理槽)及び処理槽IDとを含む。図11に示す処理手順データ63は、一種類の部品処理に関する処理手順を示すデータであるが、複数種類の部品処理の各々に関する処理手順を示すデータであってもよい。処理手順データ63が示すように、部品処理においては、個別に定められた順序で各処理槽間を移動することが要求される。図11に示す処理手順データ63は、上に記載された処理から順に処理を進めることを示している。当該処理手順データ63は、処理が移行するタイミングで処理槽間を移動することを要求している。
図12は、クレーン配置データ64の一例を示す図である。クレーン配置データ64は、クレーンの数及び各クレーン(例えばクレーン12A,12B)の動作可能範囲等を示すデータである。具体的には、クレーン配置データ64は、例えば図12に示すように、処理槽IDと、各クレーン12A,12Bの初期位置及び動作可能範囲を示す列データとを含む。図12に示す最左列の処理槽IDよりも右側に存する列の数がクレーンの数に対応する。また、処理槽IDよりも右側に存する各列の二重丸(◎)が各クレーン12A,12Bの初期位置を示し、一重丸(○)が各クレーン12A,12Bの動作可能範囲を示す。
図13は、移動時間データ65の一例を示す図である。移動時間データ65は、各処理部間の移動に関するクレーン12A,12Bの移動時間を示すデータである。具体的には、移動時間データ65は、例えば図13に示すように、処理槽IDの組み合わせパターンと、各処理槽IDに対応する処理槽間でクレーン12A,12Bを移動させた場合に移動開始から移動完了までに費やされる時間とを対応付けたデータである。また、移動時間データ65は、クレーン12A,12Bが部品を担持している搬送時の移動時間と、クレーン12A,12Bが部品を担持していない空搬送時の移動時間とを含む。図13に示す移動時間データ65における境界線Lの上側が搬送時の移動時間を示し、下側が空搬送時の移動時間を示す。空搬送時の移動時間は、例えば部品を担持していない状態のクレーン12A,12Bを搬送対象である部品が存する処理槽2A,2B,2C,2D,2E,2F,2Gのいずれかまで移動させる場合の移動時間を示す。また、空搬送時の移動時間は、部品の搬送を行っていないクレーンを他のクレーンの干渉範囲外まで移動させる場合の移動時間を示す。本実施例では、等条件下での各クレーン12A,12Bの性能は全て同一であるものとする。
処理便データ66は、処理対象物の数及び各部品に対する処理の種別を示すデータである。具体的には、処理便データ66は、例えば一つの搬送スケジュールで処理される部品の数と、各部品に対して施される処理手順とを示すデータを含む。各部品に対して施される処理手順は、処理手順データ63に含まれる処理手順との対応付けを示すデータである。ここで、各部品に対して施される処理手順が全て同一である場合、処理手順データ63は、一種類の部品処理に関する処理手順を示すデータになる。一方、施される処理手順が異なる部品が一つの搬送スケジュールで処理される場合、処理手順データ63は、複数種類の部品処理に関する処理手順を示すデータになる。以下、一つの部品の処理開始から処理終了までの一連の作業を「処理便」と記載することがある。
本実施例の処理便データ66は、複数(例えば三つ)の部品の処理便の開始時刻を所定時間(例えば1.5時間)ずつずらして行うことを示すデータである。算出部23は、処理便データ66に従い、複数の処理対象物の一連の処理(部品処理)の各々の開始タイミングが所定時間(例えば1.5時間)ずつずらされた条件下で搬送スケジュールを算出する。
図14は、搬送スケジュールの最適解の算出に関する処理の流れの一例を示すフローチャートである。図14に示すフローチャートに関する処理は、例えば、演算部26がスケジュール作成プログラム53を実行処理することで行われる。算出部23は、複数の処理便の開始時刻の時間間隔を設定する(ステップS1)。具体的には、算出部23は、例えば処理便データ66に従い、所定時間(例えば1.5時間)ずつずらされた時間間隔で処理便を開始するものとして設定する。算出部23は、ステップS1にて設定された時間間隔で処理便データ66に含まれる複数の処理便を開始した場合の搬送スケジュールを生成する(ステップS2)。
図15は、搬送スケジュールの生成処理(ステップS2等)の流れの一例を示すフローチャートである。図15に示すフローチャートに関する処理は、例えば、演算部26がスケジュール作成プログラム53を実行処理することで行われる。算出部23は、搬送スケジュールのシミュレーション時刻をシミュレーション開始時刻に設定する(ステップS11)。具体的には、例えば最初に処理される処理便の開始時刻が10:10である場合、シミュレーション開始時刻は10:10になる。この場合、算出部23は、シミュレーション時刻を10:10に設定する。以後、最新のシミュレーション時刻を「現在のシミュレーション時刻」と記載する。
算出部23は、現在のシミュレーション時刻が開始時刻である処理便における最初の処理の開始イベントを生成する(ステップS12)。算出部23は、全ての処理便に関する全てのイベントが完了したか否か判定する(ステップS13)。ここで、全てのイベントが完了していないと判定された場合(ステップS13;No)、算出部23は、現在のシミュレーション時刻にて未処理のイベントがあるか否か判定する(ステップS14)。ここで、未処理のイベントがあると判定された場合(ステップS14;Yes)、現在のシミュレーション時刻に完了イベントがあるか否か判定する(ステップS15)。ここで、完了イベントが存在しない場合(ステップS15;No)、算出部23は、開始イベントを一つ選択して、一つの開始イベントに関する処理を行う(ステップS16)。
なお、各処理便の最初の開始イベントは、処理便データ66に応じて自動的に設定される。最初の開始イベントは、処理手順データ63に応じて設定される。本実施例では、入口2Aでの処理工程である。開始イベントは、処理便に含まれる各処理工程を実施するための各種の動作のうち一つの動作を開始するために設定されるイベントである。完了イベントは、開始イベントにより開始された動作を完了するために設定されるイベントである。
図16は、一つの開始イベントに関する処理(ステップS16)の流れの一例を示すフローチャートである。図16に示すフローチャートに関する処理は、例えば、演算部26が処理工程確認プログラム52を実行処理することで行われる。算出部23は、工程の種類が処理槽での処理工程かクレーン搬送工程であるか判別する(ステップS31)。ここで、処理槽での処理工程であると判定された場合、算出部23は、処理便の最初の処理であるか否か判定する(ステップS32)。処理便の最初の処理であると判定された場合(ステップS32;Yes)、算出部23は、最初の処理に使用する処理槽が空いているか否か判定する(ステップS33)。処理槽が空いていると判定された場合(ステップS33;Yes)、算出部23は、現在のシミュレーション時刻を当該開始イベントの開始時刻として記録する(ステップS34)。また、算出部23は、当該開始イベントに対応する完了イベントを生成し、そのシミュレーション時刻(完了時刻)を算出する(ステップS35)。具体的には、算出部23は、作業時間データ62を参照して該当する処理における処理時間の下限を特定し、現在のシミュレーション時刻から特定された時間が経過した後の時刻を完了時刻として算出し、完了イベントに設定する。
ステップS33にて処理槽が空いていないと判定された場合(ステップS33;No)、当該処理の作業は開始されない。すなわち算出部23は、開始イベントの実施を先送りにすることを目的とした開始イベントの再生成を行う(ステップS36)。具体的には、算出部23は、所定の再設定時間(例えば1秒)経過後の開始時刻で開始イベントの再生成を行う。ステップS35又はステップS36の処理後、算出部23は、開始イベントに関する処理を終了する。
開始イベントに関する処理(ステップS16)の終了後、図15に示すように、ステップS14の処理に移行する。具体例を挙げると、最初の処理便における最初のイベントである「入口」の処理槽の場合、必ず空いていることから、上記のステップS35の処理により、同時刻のシミュレーション時刻が設定された完了イベントが生成される。この場合、未処理のイベントがあることになる(ステップS14;Yes)。ステップS15にて完了イベントが存在する場合(ステップS15;Yes)、算出部23は、完了イベントを一つ選択して、一つの完了イベントに関する処理を行う(ステップS17)。
図17は、一つの完了イベントに関する処理(ステップS17)の流れの一例を示すフローチャートである。図17に示すフローチャートに関する処理は、例えば、演算部26が処理工程確認プログラム52を実行処理することで行われる。算出部23は、ステップS35の処理によって算出された完了時刻を記録する(ステップS51)。算出部23は、完了イベントがクレーン搬送工程であるか否か判定する(ステップS52)。クレーン搬送工程でないと判定された場合(ステップS52;No)、算出部23は、当該完了イベントに対応する処理工程の開始イベントのシミュレーション時刻からステップS51にて記録された完了時刻までの処理時間(実行処理時間)が、当該処理工程の必要処理時間を逸脱しているか否か判定する(ステップS53)。具体的には、当該完了イベントに対応する処理工程の開始イベントのシミュレーション時刻からステップS51にて記録された完了時刻までの処理時間について、算出部23は、例えば作業時間データ62により定められた下限時間及び上限時間の範囲内の処理時間から逸脱しているか否か判定する。実行処理時間が処理時間を逸脱していないと判定された場合(ステップS53;No)、算出部23は、次工程が存在するか否か判定する(ステップS54)。具体的には、算出部23は、処理便の処理工程が処理手順データ63の最終工程(出口)になっているか否か判定する。ここで、次工程が存在しない場合(ステップS54;No)、算出部23は、完了イベントに関する処理を終了する。一方、次工程が存在する場合(ステップS54;Yes)、算出部23は、次工程の開始イベントを生成し(ステップS55)、その後に完了イベントに関する処理を終了する。具体例を挙げると、処理手順データ63によれば、最初の処理便の最初のイベントである入口2Aの処理槽の後には処理槽2Bの処理槽がある。よって、算出部23は、「クレーンによる入口2Aから処理槽2Bへの搬送」を行うためのクレーン搬送工程の開始イベントを生成する。この場合、開始イベントのシミュレーション時刻は、現在のシミュレーション時刻になる。
完了イベントに関する処理(ステップS17)の終了後、図15に示すように、ステップS14に移行する。ここで、例えば上記のようにクレーン搬送工程の開始イベントが生成されている場合、再びステップS16の処理に移行する。
図16に示すように、ステップS31にて工程の種類がクレーン搬送工程であると判定された場合、判定部22は、搬送先の処理槽が空いているか否か判定する(ステップS37)。搬送先の処理槽が空いていると判定された場合(ステップS37;Yes)、判定部22は、搬送に使用するクレーン(例えばクレーン12A,12Bのいずれか)が空いているか否か判定する(ステップS38)。クレーンが空いていると判定された場合(ステップS38;Yes)、干渉範囲設定部21は、空いていると判定された一つのクレーン(対象クレーン)による搬送に伴う移動範囲を干渉範囲として設定する(ステップS39)。判定部22は、対象クレーンの干渉範囲に関する処理を行う(ステップS40)。このように、干渉範囲設定部21は、判定部22で判定を行う時点毎に干渉範囲を設定する。
本実施例では、対象クレーンが処理対象物を保持していない状態である動作開始前の位置から、当該処理対象物が存する位置に対応するレール11上の位置まで対象クレーンを移動させて当該処理対象物を保持するための当該対象クレーンの動作(保持前動作)と、当該対象クレーンが当該処理対象物を搬送先の処理槽に搬送する動作(保持後動作)とに個別に開始イベント及び完了イベントを設定し、個別の干渉範囲を設定する。すなわち、干渉範囲設定部21は、一つのクレーンが処理対象物を保持していない場合、保持する対象の処理対象物を特定し、特定した処理対象物までの一つのクレーンの移動範囲を干渉範囲に設定する。また、干渉範囲設定部21は、一つのクレーンが処理対象物を保持している場合、当該処理対象物の搬送に伴う一つのクレーンの移動範囲を干渉範囲に設定する。このように、本実施例では、一つのクレーンによる処理対象物の搬送工程を複数の時点に分けて干渉範囲を設定する。
図18は、対象クレーンの干渉範囲に関する処理(ステップS40)の流れの一例を示すフローチャートである。図18に示すフローチャートに関する処理は、例えば、演算部26がクレーン干渉確認プログラム51を実行処理することで行われる。判定部22は、対象クレーンでない他の一つのクレーンについて、クレーンが干渉範囲内にいるか否か判定する(ステップS71)。ここで、当該他の一つのクレーンが干渉範囲内にいないと判定された場合(ステップS71;No)、判定部22は、当該他の一つのクレーンが占有中であって、かつ、干渉範囲内に向かって移動する動作を伴っているか否か判定する(ステップS72)。ここで、当該他の一つのクレーンが占有中であって、かつ、干渉範囲内に向かって移動する動作を伴っていると判定された場合(ステップS72;Yes)、判定部22は、対象クレーンと他のクレーンとの干渉が発生すると判定し(ステップS73)、クレーンの干渉範囲に関する処理を終了する。
ステップS71にて当該他の一つのクレーンが干渉範囲内にいると判定された場合(ステップS71;Yes)、判定部22は、当該他の一つのクレーンが占有中であるか否か判定する(ステップS74)。当該他の一つのクレーンが占有中でないと判定された場合(ステップS74;No)、判定部22は、当該他の一つのクレーンを干渉範囲外に移動させる回避動作を実施することができるか否か判定する(ステップS75)。回避動作を実施することができないと判定された場合(ステップS75;No)、ステップS73の処理に移行する。すなわち判定部22は、対象クレーンと他のクレーンとの干渉が発生すると判定し、クレーンの干渉範囲に関する処理を終了する。
ステップS74にて当該他の一つのクレーンが占有中であると判定された場合(ステップS74;Yes)、判定部22は、干渉範囲内で当該他の一つのクレーンが移動を伴わない作業を行っているか否か判定する(ステップS76)。言い換えれば、判定部22は、現在のシミュレーション時刻に当該他の一つのクレーンが処理槽で部品の持ち上げ作業又は降ろし作業を行っているか否か判定する。当該他の一つのクレーンが移動せずに作業していると判定された場合(ステップS76;Yes)、ステップS73の処理に移行する。すなわち判定部22は、対象クレーンと他のクレーンとの干渉が発生すると判定し、クレーンの干渉範囲に関する処理を終了する。
ステップS76にて干渉範囲内で当該他の一つのクレーンが移動を伴わない作業を行っていないと判定された場合(ステップS76;No)、判定部22は、当該他の一つのクレーンが対象クレーンの移動方向と同一の方向に移動して干渉範囲外に出るか否か判定する(ステップS77)。当該他の一つのクレーンの移動方向が対象クレーンの移動方向と異なる方向であると判定された場合や、当該他の一つのクレーンの移動先が干渉範囲内であると判定された場合(ステップS77;No)、ステップS73の処理に移行する。すなわち判定部22は、対象クレーンと他のクレーンとの干渉が発生すると判定し、クレーンの干渉範囲に関する処理を終了する。
それ以外の場合、判定部22は、対象クレーンと当該他の一つのクレーンとの関係に関して、干渉が発生しないと判定する。それ以外の場合とは、すなわち、「ステップS72;No」、「ステップS75;Yes」及び「ステップS77;Yes」の場合である。「ステップS72;No」の場合とは、干渉範囲内にいない他の一つのクレーンが占有中でない又は干渉範囲内に向かって移動する動作を伴っていないと判定された場合である。「ステップS75;Yes」の場合とは、干渉範囲内に存する占有中でない他の一つのクレーンの回避動作を実施することができると判定された場合である。また、「ステップS77;Yes」の場合とは、干渉範囲内に存する占有中の他の一つのクレーンが、対象クレーンの移動方向と同一の方向に移動して干渉範囲外に出る場合である。すなわち判定部22は、干渉範囲内に他のクレーンが存する場合、他のクレーンを干渉範囲外に移動させることができるとき一つのクレーン(対象クレーン)による処理対象物の搬送を行うことができると判定する。
判定部22は、対象クレーン以外の全てのクレーンについて個別にステップS71から開始される対象クレーンの干渉範囲に関する処理を実施する。ただし、判定部22は、ステップS73の処理を経て処理を終了した場合、まだ対象クレーンの干渉範囲に関する処理が未実施である他のクレーンが残っていたとしても、未実施である他のクレーンについて、対象クレーンの干渉範囲に関する処理を省略する。すなわち一台でも対象クレーンに干渉する他のクレーンがあると判定された場合、現在のシミュレーション時刻に対象クレーンによるクレーン搬送工程を実施することはできないことから、判定部22は、その時点で対象クレーンの干渉範囲に関する処理を終了する。一方、対象クレーン以外の全てのクレーンについて、干渉が発生しないと判定された場合、判定部22は、対象クレーンと他のクレーンとの干渉が発生しないと判定する(ステップS78)。
ただし、ステップS75では、クレーンの数が三以上である場合、複数の他のクレーンに関する判定が含まれる。具体的には、対象クレーンを基準としてその上流側又は下流側のいずれか一方のレール11上に複数の他のクレーンが存する場合、判定部22は、複数の他のクレーンを考慮した判定を行う。具体的には、当該一方に存する全てのクレーンの位置、占有状態及び回避動作により干渉範囲外に出た場合に他のクレーンにより占有されるレール11上の領域を満たして、他のクレーンを干渉範囲外に移動させる回避動作を実施することができるか否か判定する。例えば、対象クレーンの上流側に二つの他のクレーンが存し、かつ、上流側の干渉範囲外の領域が一つのクレーンに対応する分しかない場合、二つのクレーンのうち一つのクレーンは、干渉範囲外に移動することができない。このような場合、判定部22は、回避動作を実施することができないと判定する。また、当該一方に存する複数のクレーンのうち一部のクレーンが干渉範囲外で移動を伴わない作業を行っている等の理由により、干渉範囲内の他のクレーンの移動先が制限されて干渉範囲外に移動することができない等の場合においても、判定部22は、回避動作を実施することができないと判定する。このように、判定部22は、ステップS75にて、対象クレーンを基準としてその上流側又は下流側のいずれか一方のレール11上に存する他のクレーンの数に応じた判定を行う。言い換えれば、判定部22は、ステップS75にて、当該一方に存する全てのクレーンが当該一方側における干渉範囲外に存することができるか否か判定する。判定部22は、係る判定を上流側と下流側で個別に行う。
ステップS78にて対象クレーンと他のクレーンとの干渉が発生しないと判定された場合、判定部22は、回避動作(ステップS75を参照)が必要であるか否か判定する(ステップS79)。すなわち判定部22は、対象クレーンと他のクレーンとの干渉を発生させないために他のクレーンの一部又は全部に回避動作をさせる必要があるか否か判定する。回避動作が必要であると判定された場合(ステップS79;Yes)、算出部23は、現在のシミュレーション時刻から回避動作の完了までのシミュレーション時刻まで回避動作を行う他のクレーンを占有するための処理(占有処理)を行う(ステップS80)。占有処理は、回避動作の対象となる他のクレーンを対象クレーンの干渉範囲外に移動させるための処理である。占有処理は、回避動作の対象となる他のクレーンの各々に対して個別に行われる。すなわち占有処理に係り他のクレーンが移動する時間は、他のクレーンの各々の位置及び回避動作のために必要な移動距離に応じる。ステップS80の処理後又はステップS79にて回避動作が必要でないと判定された場合(ステップS79;No)、判定部22は、クレーンの干渉範囲に関する処理を終了する。
対象クレーンの干渉範囲に関する処理(ステップS40)の終了後、図16に示すように、判定部22は、ステップS40の処理結果に基づいて対象クレーンと他のクレーンとの干渉が発生するか否か判定する(ステップS41)。対象クレーンと他のクレーンとの干渉が発生すると判定された場合(ステップS41;Yes)、算出部23は、開始イベントの実施を先送りにすることを目的とした開始イベントの再生成を行う(ステップS42)。具体的には、算出部23は、所定の再設定時間(例えば1秒)経過後の開始時刻で開始イベントの再生成を行う。また、ステップS37にて搬送先の処理槽が空いていないと判定された場合(ステップS37;No)及びステップS38にて搬送に使用するクレーンが空いていないと判定された場合(ステップS38;No)も、ステップS42の処理に移行する。ステップS42の処理後、算出部23は、開始イベントに関する処理を終了する。
ステップS41にて対象クレーンと他のクレーンとの干渉が発生しないと判定された場合(ステップS41;No)、算出部23は、当該開始イベント、すなわち当該クレーン搬送工程における搬送先の処理槽及び対象クレーンの占有処理を行う(ステップS43)。また、算出部23は、当該開始イベントにおける搬送元の処理槽について、対象クレーンが部品の持ち上げを完了して搬送先側に一つの処理槽分だけ移動した時刻で占有が解除されるように予約する処理を行う(ステップS44)。ステップS43,S44の処理後、ステップS34の処理に移行する。具体的には、算出部23は、作業時間データ62及び移動時間データ65を参照して、搬送前の処理槽への空搬送時の移動時間、部品の持ち上げ時間、搬送前の処理槽から搬送後の処理槽への搬送時の移動時間及び部品の降ろし時間を特定する。算出部23は、クレーン搬送工程の完了イベントを生成し、現在のシミュレーション時刻から特定された時間が経過した後の時刻を完了時刻として算出して完了イベントに設定する。すなわち、対象クレーンが占有中となる時間帯は、現在のシミュレーション時刻からステップS35にて算出された完了時刻までの時間帯である。また、算出部23は、当該クレーン搬送工程の搬送前の処理槽を用いた処理槽での処理工程の完了時刻を算出する。具体的には、算出部23は、例えば対象クレーンが搬送前の処理槽に移動して部品の持ち上げを開始した時刻を当該処理槽での処理工程の完了時刻として算出する。ステップS35の処理後、算出部23は、開始イベントに関する処理を終了する。
開始イベントに関する処理(ステップS16)の終了後、図15に示すように、ステップS14に移行する。ここで、上記のクレーン搬送工程の完了イベントは現在のシミュレーション時刻より後の時刻であることから、ステップS14にて未処理のイベントがないと判定されることになる(ステップS14;No)。この場合、算出部23は、シミュレーション時刻を進める。具体的には、算出部23は、所定の進行時間(例えば1秒)シミュレーション時刻を進める(ステップS18)。その後、ステップS12の処理に移行する。
その後、シミュレーション時刻が上記のクレーン搬送工程の完了イベントのシミュレーション時刻になった場合の完了イベントに関する処理について、図17を参照して説明する。算出部23は、ステップS35の処理によって算出された完了時刻を記録する(ステップS51)。ステップS52にて、クレーン搬送工程であると判定された場合(ステップS52;Yes)、算出部23は、当該完了イベントまで占有されていた対象クレーンの占有を解除し(ステップS56)、ステップS53の処理に移行する。ここで、算出部23は、当該完了イベントに対応する処理工程の実行処理時間が、当該処理工程の必要処理時間を逸脱しているか否か判定する。例えば、処理槽2Bから処理槽2Cへの搬送工程であった場合、算出部23は、処理槽2Bを用いた処理槽の処理工程の実行処理時間が必要処理時間を逸脱しているか否か判定する。ここで、実行処理時間が必要処理時間を逸脱していると判定された場合(ステップS53;Yes)、算出部23は、搬送スケジュールの生成に関する処理を強制終了する(ステップS57)。すなわち、処理時間が必要処理時間を逸脱している処理工程が含まれる場合、そのシミュレーション結果を採用することはできないことから、算出部23は、処理を打ち切る。強制終了後の処理の流れについては後述する。
クレーン搬送工程の完了イベントに関する処理において、ステップS55にて生成される次工程の開始イベントは、搬送後の処理槽を用いた処理槽での処理工程の開始イベントである。
クレーン搬送工程を一回以上実施した後の処理便における処理槽での処理工程の開始イベントに関する処理(図16参照)では、ステップS32にて処理便の最初の工程でないと判定される(ステップS32;No)。この場合、ステップS34の処理に移行する。入口を除く処理槽での処理工程については、クレーン搬送工程の完了を以て処理が開始されていることから、開始の先送りが不可能である。よって、入口2Aを除く処理槽2B〜2Gでの処理工程は、強制的に開始されるとともに、下限の時間で完了イベントが生成されることになる。その後、クレーン搬送工程の開始時刻に基づいて、シミュレーションにおける各処理工程の完了時刻が記録される。
図15〜図18を参照した説明に含まれる処理で示すように、判定部22は、必要処理時間と干渉範囲と処理対象物に対して実行する処理の順序と処理部(例えば七つの処理槽2A,2B,2C,2D,2E,2F,2G)で処理対象物に実行している実行処理時間とを用いて、クレーン(例えばクレーン12A,12B)による処理対象物の搬送動作の実行を判定する。
搬送スケジュール生成装置20は、各処理便の出口2Gの完了イベントが生成されるまで、上記にて説明した処理を繰り返す。また、処理便データ66により設定された各処理便の開始時刻に応じて、ステップS12が実施される(図15参照)。ステップS13にて全ての処理便の全てのイベントが完了したと判定された場合(ステップS13;Yes)、算出部23は、各工程の開始時刻、終了時刻等(クレーン12A,12Bの各種動作状態を示す時刻を含む)を示す搬送スケジュールデータを生成する(ステップS19)。ステップS19の処理後、算出部23は、搬送スケジュールの生成処理を終了する。
ステップS2の処理後、図14に示すように、算出部23は、生成された最新の搬送スケジュールデータを最適解データとする(ステップS3)。ステップS2実施後のステップS3では、ステップS2にて生成された搬送スケジュールデータが最適解データとなる。
ステップS3の処理後、算出部23は、処理便データ66に設定された各処理便間の時間間隔をより短い時間とする処理を行う。具体的には、算出部23は、例えば所定の短縮時間(例えば1秒)ずつ各処理便間の時間間隔を短縮する。その後、算出部23は、より短い時間とされた各処理便間の時間間隔に基づいて、搬送スケジュールの生成処理を再度実施する(ステップS4)。ステップS4の搬送スケジュールの生成処理の具体的内容は、ステップS2の搬送スケジュールの生成処理と同様である。
ステップS4の処理後、算出部23は、現在の最適解データによる処理の開始時刻から終了時刻までの時間と、ステップS4にて生成された搬送スケジュールデータによる処理の開始時刻から終了時刻までの時間とを比較し、最適解データよりも時間が短縮されたか否か判定する(ステップS5)。ここで、最適解データよりも時間が短縮されたと判定された場合(ステップS5;Yes)、ステップS3の処理に移行する。すなわち算出部23は、時間が短縮された搬送スケジュールデータを最適解データとする。このように、算出部23は、各処理便間の時間間隔(所定時間)をより短い時間にした場合に全ての処理対象物の部品処理の開始から終了までの経過時間が短縮されたとき、所定時間をより短い時間にする。
ステップS5にて最適解データよりも時間が短縮されていないと判定された場合(ステップS5;No)、算出部23は、ステップS4にて生成された搬送スケジュールにおいて搬送に用いられているクレーン(例えばクレーン12A又はクレーン12B)を変化させた場合の搬送スケジュールを生成する(ステップS6)。具体的には、算出部23は、例えばあるクレーン搬送工程において採用可能なクレーンが複数ある場合に、直前に生成された搬送スケジュールで用いられた一つのクレーンでない他のクレーンによって当該クレーン搬送工程を完了させるように変更して搬送スケジュールを生成する。また、算出部23は、例えばクレーンの空きが一つしかないタイミングで実施されたクレーン搬送工程について、よりそのクレーン搬送工程に用いることがふさわしい(例えば移動距離がより短い等)他のクレーンが空くまで待機し、当該他のクレーンが空き次第当該クレーン搬送工程を完了させるようにしてもよい。クレーンの使用パターンの変更を除き、ステップS6の処理の具体的内容は、ステップS2の搬送スケジュールの生成処理と同様である。
ステップS6の処理後、算出部23は、現在の最適解データによる処理の開始時刻から終了時刻までの時間と、ステップS6にて生成された搬送スケジュールデータによる処理の開始時刻から終了時刻までの時間とを比較し、最適解データよりも時間が短縮されたか否か判定する(ステップS7)。ここで、最適解データよりも時間が短縮されたと判定された場合(ステップS7;Yes)、ステップS3の処理に移行する。すなわち算出部23は、時間が短縮された搬送スケジュールデータを最適解データとする。このように、算出部23は、全ての処理対象物の部品処理の開始から終了までの搬送スケジュール中に処理対象物の搬送に用いられるクレーンを他のクレーンに変更可能な場合に変更後の経過時間が変更前の経過時間よりも短縮されたとき、処理対象物の搬送に用いられるクレーンを他のクレーンに変更する。
ステップS7にて最適解データよりも時間が短縮されていないと判定された場合(ステップS7;No)、算出部23は、現在の最適解データを搬送スケジュールデータとして出力し(ステップS8)、搬送スケジュールの最適解の算出に関する処理を終了する。
なお、ステップS57の処理による強制終了(図17参照)が発生した場合、算出部23は、異なる条件で搬送スケジュールを再度生成する。具体的には、搬送スケジュール生成装置20は、例えばステップS57の処理による強制終了後にステップS4の処理に移行することで、搬送スケジュールを再度生成する。このように、算出部23は、処理部での処理時間が必要処理時間に含まれない処理を含む搬送スケジュールが算出された場合、当該搬送スケジュールを破棄して搬送スケジュールを再度算出する。
以上のように、本実施例によれば、処理部(例えば七つの処理槽2A,2B,2C,2D,2E,2F,2G)で処理対象物を処理する必要処理時間と処理部で処理対象物に実行している実行処理時間とを用いてクレーンによる処理対象物の搬送動作の実行を判定するので、各処理部で処理される実行処理時間が必要処理時間により近い時間となるようにクレーン(例えばクレーン12A,12B)による処理対象物の搬送を行うことで、各処理部で処理される実行処理時間を必要処理時間により近づけることができる。すなわち、クレーンによる処理対象物の搬送動作の実行を判定する対象となる時間を、実行処理時間が必要処理時間により近い時間になる時間として搬送スケジュールを算出することで、処理対象物が搬送される三以上の処理部における各処理の処理時間を考慮して搬送を行うことができる。このように、本実施例によれば、処理対象物が搬送される三以上の処理部における各処理を適切に実行しつつ、処理対象物の搬送を行うことができる。また、判定を行う時点毎に干渉範囲を設定するので、その時点でのクレーンの動作に必要な最小の干渉範囲とすることができる。このため、クレーン同士の干渉が生じる可能性をより低減することができる。よって、クレーンの待機時間をより短くすることができることから、搬送スケジュールの短縮がより容易となる。
また、既に処理対象物を保持しているクレーンの干渉範囲を、当該処理対象物の搬送に伴う必要最低限の移動範囲とすることができる。このため、クレーン同士の干渉が生じる可能性をより低減することができる。
また、まだ処理対象物を保持していないクレーンの干渉範囲を、当該クレーンが処理対象物を保持することができる位置まで移動させるための必要最低限の移動範囲とすることができる。このため、クレーン同士の干渉が生じる可能性をより低減することができる。また、干渉範囲の設定の時点でクレーンが処理対象物を保持しているか否かに応じてクレーンの干渉範囲を個別に設定することで、移動開始前のクレーンが処理対象物を保持可能な位置まで移動し、その後に当該処理対象物を搬送先まで搬送するために移動する一連の搬送工程を複数の時点に分けて干渉範囲を設定することができる。このため、各時点の干渉範囲を最小限にすることができる。
また、必要処理時間に含まれない処理を含む搬送スケジュールが破棄されるので、必ず必要処理時間を満たす搬送スケジュールを算出することができる。
また、他のクレーンを干渉範囲の外に移動させて一つのクレーンによる処理対象物の搬送を行うことができるようになるので、当該一つのクレーンによる処理が実行不可と判定される機会をより低減することができる。このため、当該一つのクレーンによる搬送をより前倒ししやすくなる。よって、搬送スケジュール全体の処理時間(リードタイム)をより短縮することができる。
また、所定時間間隔で処理対象物に対する処理を開始することができる。また、最初に占有する処理槽が同一である複数の処理対象物についても、所定時間ずつ開始タイミングをずらすことで、各処理対象物により占有されることになる処理槽を重複させることなく処理を行うことができる。すなわち各処理対象物の処理待ち状態を生じさせにくくすることができることから、処理時間の上限及び下限を満たす搬送スケジュールの生成がより容易になる。
また、所定時間をより短い時間にした場合に全ての処理対象物の一連の処理の開始から終了までの経過時間が短縮されたとき、所定時間をより短い時間にすることで、リードタイムをより縮めることができる。また、搬送スケジュールが成立し得るより短い時間間隔(サイクルタイム)を発見することができる。
また、搬送スケジュール中で処理対象物の搬送に用いられるクレーンを別のクレーンに変更可能な場合に、クレーンの変更後の全ての処理対象物の一連の処理の開始から終了までの経過時間がクレーンの変更前の経過時間よりも短縮されたとき、処理対象物の搬送に用いられるクレーンを別のクレーンに変更することで、リードタイムをより縮めることができる。また、より短いサイクルタイムを発見することができる。
上記の実施例はあくまで一例であり、その具体的内容について適宜変更可能である。例えば、上記の実施例で、算出部23は、ステップS35にて作業時間データ62を参照して該当する処理における処理時間の下限を特定し、現在のシミュレーション時刻から特定された時間が経過した後の時刻を完了時刻として算出し、完了イベントに設定しているが、これは完了時刻の算出に係る一例であってこれに限られるものでない。例えば、処理部による処理時間に関して、上限及び下限に加えて、最良の処理時間(ベストタイミング)が存する場合、算出部23は、ステップS35にて処理時間が最良の処理時間となるように完了時刻を算出し、完了イベントに設定するようにしてもよい。この場合、例えば作業時間データ62に最良の処理時間を示す情報がさらに含まれる。また、算出部23は、作業時間データ62における上限と下限の中間の時間を最良の処理時間とするようにしてもよい。
また、上記の実施例では、一度設定された時刻で開始イベントを実施することができない場合に、ステップS36やステップS42にて開始イベントの実施時刻を先送りすることで開始イベントを実施することができる時刻を求めているが、これは開始イベントの実施時刻の変更方法の一例であってこれに限られるものでない。例えば、上記のように算出部23によりステップS35にて処理時間が最良の処理時間となる完了時刻が完了イベントに設定されている場合、この完了イベントに関連する開始イベント(例えば処理便での処理工程の完了イベントに対応するクレーン搬送工程)について一度設定された時刻で開始イベントを実施することができない場合に、この最良の処理時間に対応する時刻から時刻を前倒しするようにしてもよい。
図19は、時刻を前倒しにする場合の開始イベントに関する処理の流れの一例を示すフローチャートである。図19に示す処理は、1つの開始イベントに関する処理(ステップS16)として実行される処理の一例である。図19に示すフローチャートに含まれる処理のうち、図16に示すフローチャートに含まれる処理と同様の処理については同じステップ番号を付して説明を省略する。時刻を前倒しにする場合の開始イベントに関する処理では、算出部23は、開始イベントの実施を先送りにしていたステップS36の処理及びステップS42の処理に代えて、開始イベントの実施を前倒しにすることを目的とした開始イベントの再生成を行う(ステップS91,S92)。具体的には、算出部23は、所定の前倒し時間(例えば1秒)だけ前の開始時刻で開始イベントの再生成を行う。ステップS91,S92にて再生成された開始イベントは、「前倒し開始イベント」になる。
図20、図21は、時刻を前倒しにする場合の搬送スケジュールの生成処理(ステップS2等)の流れの一例を示すフローチャートである。図20、図21に示すフローチャートに含まれる処理のうち、図15に示すフローチャートに含まれる処理と同様の処理については同じステップ番号を付して説明を省略する。ステップS13にて全てのイベントが完了していないと判定された場合(ステップS13;No)、算出部23は、現在のシミュレーション時刻において再生成された前倒し開始イベントがあるかどうか判定する(ステップS101)。前倒し開始イベントがないと判定された場合(ステップS101;No)、ステップS14の処理に移行する。一方、ステップS101にて前倒し開始イベントがあると判定された場合(ステップS101;Yes)、算出部23は、現在のシミュレーション時刻において処理された全ての開始イベント及び完了イベントを未処理の状態に戻す(ステップS102)。その後、算出部23は、所定の前倒し時間(例えば1秒)シミュレーション時刻を戻し(ステップS103)、ステップS14の処理に移行する。
図19から図21に示すように、処理部での処理時間が必要処理時間に含まれない処理を含む搬送スケジュールが算出された場合、当該搬送スケジュールを破棄して搬送スケジュールを再度算出する、つまり計算済みの処理を破棄して、所定の時間分処理を戻して、搬送スケジュールを再度算出することで、対象のイベントを当初の算出結果から前倒ししたタイミングで実行した搬送スケジュールを算出することができる。これにより、より適切な搬送スケジュールが算出しやすくなる。
処理部は、前倒しでもスケジュールを設定できることで、処理のベストタイミングを基準として前後にタイミングを移動させることができ、各処理槽での処理をより適切な時間で実行する搬送スケジュールを作成することができる。
また、搬送スケジュール生成装置20は、最良の処理時間からの先送りと前倒しとの両方を組み合わせて搬送スケジュールを生成するようにしてもよい。この場合、算出部23は、例えば、必要処理時間の上限時間と下限時間との間における最良の処理時間の位置づけに応じて、先送りにするか前倒しにするかを決定するようにしてもよい。具体的には、算出部23は、例えば、最良の処理時間が下限時間よりも上限時間寄りであった場合、先送りにし、逆の場合には前倒しにするようにしてもよい。これによって、先送り又は前倒しにすることができる試行回数をより増やすことができる。これは先送り又は前倒しのいずれを用いるかの決定方法の一例であって、これに限られるものでない。例えば、前倒し又は先送りのいずれを優先するかを示す情報を各処理工程に設定してもよい。また、先送り又は前倒しを限界まで試行しても搬送を行うことができないと判定された場合に、限界まで施行された時間のシフトと逆の時間のシフト(先送り試行済みの場合は前倒し、前倒し試行済みの場合は先送り)を行うようにしてもよい。
上記の実施例では、レール11によるクレーン12A,12Bの可動範囲が処理槽の数と厳密に対応しているが、レール11がさらに延長されてもよい。すなわち搬送を行わないクレーン12A,12Bを退避させるための専用の領域(退避領域)が設けられていてもよい。この場合、よりクレーン12A,12B同士の干渉が生じにくくなることから、よりサイクルタイム及びリードタイムを短縮しやすい。
また、上記の実施例における処理部である処理槽の配置は一例であり、具体的な処理内容に応じて処理部の配置を変更するようにしてもよい。例えば、三以上の処理部の位置関係を決定する配置を変更することでサイクルタイムやリードタイムをより縮められる場合があり得る。よって、搬送スケジュールの生成に係り、三以上の処理部の配置パターンを複数設定するようにしてもよい。この場合、搬送スケジュール生成装置20は、各配置パターンの搬送スケジュールの生成を行い、最もリードタイムが短い搬送スケジュールと当該搬送スケジュールに対応する処理部の配置パターンとの組み合わせを最適解とするようにしてもよい。
図22は、配置パターン設定装置を備える処理システム1Aを示す図である。処理システム1Aは、図22に示すように、三以上の処理部の配置パターンを複数設定するための構成(配置パターン設定装置70)を備えてもよい。配置パターン設定装置70は、上流側から下流側にかけての三以上の処理部の並び順を配置パターンとして算出する。配置パターン設定装置70は、n個の処理部ならば、上流側から下流側の並び順でn!(nの階乗)通りの配置パターンを算出することができる。この場合、搬送スケジュール生成装置20は、配置パターン設定装置70により設定された複数の配置パターンの各々について搬送スケジュールを生成する。
配置パターン設定装置70は、三以上の処理部に含まれる各処理部同士が隣接可能か否かの設定に基づいて、配置パターンを算出するようにしてもよい。これにより、作業者は、各処理槽の関係を予め設定しておくことで、実際の運用に沿った配置パターンで処理槽を配置することができる。
また、配置パターン設定装置70は、三以上の処理部の各々を用いて行われる処理に基づいて各処理部に対して行われた重み付けに基づいて、配置パターンを設定するようにしてもよい。具体的には、配置パターン設定装置70は、各処理便に含まれる処理工程の順序等の傾向に基づいて、より上流側(又は下流側)に存するほうが好ましい処理部がある場合に、係る処理部に配置に関する重み付けを行い、重み付けが反映された配置パターンを算出するようにしてもよい。
図23は、三以上の処理部の配置パターンを複数設定する場合における搬送スケジュールの最適解の算出に関する処理の流れの一例を示すフローチャートである。図23に示すフローチャートに関する処理は、例えば、演算部26がスケジュール作成プログラム53を実行処理することで行われる。算出部23は、三以上の処理部が取り得る配置パターンのうち一つの配置パターン(初期配置パターン)を設定する(ステップS121)。次に、算出部23は、初期配置パターンにおける最適解データを求めるための搬送スケジュールの生成処理を行う(ステップS122)。ステップS122の処理内容は、上記で図14等を参照して説明したステップS1〜ステップS8の処理及びこれらの各処理の具体的内容(図15〜図21及び後述する図24を含む)による処理内容である。
算出部23は、最新の最適解データを最適配置解データとする(ステップS123)。ステップS122実施直後のステップS123では、ステップS122にて生成された搬送スケジュールデータが最適配置解データとなる。
ステップS123の処理後、算出部23は、既に搬送スケジュールが生成された配置パターンとは異なる配置パターンを設定する。その後、算出部23は、設定された異なる配置パターンにおける最適解データを求めるための搬送スケジュールの生成処理を行う(ステップS124)。ステップS124の搬送スケジュールの生成処理の具体的内容は、ステップS122の搬送スケジュールの生成処理と同様である。
ステップS124の処理後、算出部23は、現在の最適配置解データによる処理の開始時刻から終了時刻までの時間と、ステップS124にて生成された最適解データによる処理の開始時刻から終了時刻までの時間とを比較し、最適配置解データよりも時間が短縮されたか否か判定する(ステップS125)。ここで、最適配置解データよりも時間が短縮されたと判定された場合(ステップS125;Yes)、ステップS123の処理に移行する。すなわち算出部23は、時間が短縮された配置パターンによる最適解データを最適配置解データとする。
ステップS125にて最適配置解データよりも時間が短縮されていないと判定された場合(ステップS125;No)、算出部23は、現在の最適配置解データを搬送スケジュールデータとして出力し(ステップS126)、搬送スケジュールの最適解の算出に関する処理を終了する。
ステップS121及びステップS123の処理において設定される配置パターンの各々は、例えば算出部23に参照される所定のデータ(配置パターンデータ)に予め設定されているが、これは配置パターンの準備の一例であってこれに限られるものでなく、適宜変更可能である。例えば、図23に示すフローチャートに従った処理中に算出部23が配置パターンの入力を求める画面を表示させ、入力の完了に応じて以降の処理を進めるようにしてもよい。
上記の実施例では、全ての処理便が同一の処理手順であるが、一例であってこれに限られるものでない。一連の処理の具体的内容を定める処理便は、三以上の処理部の一部又は全部を個別に定められた下限以上かつ上限以下である処理時間占有し、かつ、個別に定められた順序で各処理槽間を移動することを要求する全ての組み合わせを含みうる。また、二度以上同一の処理槽を占有する時間帯を含む処理便であってもよい。この場合、差がある事項に対応するデータ(例えば作業時間データ62、処理手順データ63等)において処理便別のデータを用意することで対応することができる。
上記の実施例では、所定時間間隔で各処理対象物の処理を開始することを前提として搬送スケジュールを生成しているが、一例であってこれに限られるものでなく、適宜変更可能である。例えば、最初の処理やその直後の処理に使用する処理槽が異なる複数の処理対象物の処理を相対的に短い時間間隔で実施し、最初の処理やその直後の処理に使用する処理槽が同一の複数の処理対象物の処理を(当該処理槽の占有時間に応じた)相対的に長い時間間隔で実施するようにしてもよい。これらの時間間隔の個別設定や相対関係は、処理槽の占有時間やクレーンによる搬送に費やされる時間等、各種の条件に応じて適宜設定することができる。
上記の実施例では、保持前動作と保持後動作に個別に開始イベント及び完了イベント並びに干渉範囲を設定しているが、搬送スケジュール生成装置20は、保持前動作と保持後動作を一つの動作として纏めて取り扱うようにしてもよい。この場合、干渉範囲設定部21は、一つのクレーンが処理対象物を保持していない場合、保持する対象の処理対象物を特定し、一つのクレーンの位置から特定した処理対象物の位置までの移動範囲及び、特定した処理対象物の位置から特定した処理対象物を移動させる処理部までの移動範囲を干渉範囲に設定する。
図24は、保持前動作と保持後動作を一つの動作として纏めて取り扱う場合における対象クレーンの干渉範囲に関する処理の流れの一例を示すフローチャートである。図24に示す処理は、対象クレーンの干渉範囲に関する処理(ステップS40)として実行される処理の一例である。図24に示すフローチャートに含まれる処理のうち、図18に示すフローチャートに含まれる処理と同様の処理については同じステップ番号を付して説明を省略する。ステップS74にて当該他の一つのクレーンが占有中であると判定された場合(ステップS74;Yes)、判定部22は、対象クレーンの現在の位置と搬送前の処理槽に対応するレール11上の位置との間に当該他の一つのクレーンが存するか否か判定する(ステップS111)。言い換えれば、判定部22は、対象クレーンから見て搬送前の処理槽側の干渉範囲内に当該他の一つのクレーンが存するか否か判定する。ステップS111にて当該他の一つのクレーンが存すると判定された場合(ステップS111;Yes)、ステップS73の処理に移行する。すなわち判定部22は、対象クレーンと他のクレーンとの干渉が発生すると判定し、クレーンの干渉範囲に関する処理を終了する。ステップS111にて対象クレーンの現在の位置と搬送前の処理槽に対応するレール11上の位置との間に当該他の一つのクレーンが存しないと判定された場合(ステップS111;No)、ステップS76の処理に移行する。
ステップS76にて干渉範囲内で当該他の一つのクレーンが移動を伴わない作業を行っていないと判定された場合(ステップS76;No)、判定部22は、当該他の一つのクレーンが対象クレーンによる処理対象物の搬送方向と同一の方向に移動して干渉範囲外に出るか否か判定する(ステップS112)。当該他の一つのクレーンの移動方向が対象クレーンによる処理対象物の搬送方向と異なる方向であると判定された場合や、当該他の一つのクレーンの移動先が干渉範囲内であると判定された場合(ステップS112;No)、ステップS73の処理に移行する。すなわち判定部22は、対象クレーンと他のクレーンとの干渉が発生すると判定し、クレーンの干渉範囲に関する処理を終了する。一方、ステップS112にて当該他の一つのクレーンが対象クレーンによる処理対象物の搬送方向と同一の方向に移動して干渉範囲外に出ると判定された場合(ステップS112;Yes)、判定部22は、対象クレーンと当該他の一つのクレーンとの関係に関して、干渉が発生しないと判定する。
いったん保持前動作と保持後動作を一つの動作として纏めて取り扱った後に保持後動作を独立させてもよい。具体的には、判定部22は、例えば上記の前倒しに関する判定において、あるクレーン搬送工程の保持後動作を取り消せば前倒しが可能な場合に、当該クレーン搬送工程の保持後動作のみを取り消すようにしてもよい。この場合、当該クレーン搬送工程の保持前動作は存続し、処理対象物を保持したクレーンが存することになる。このため、搬送スケジュール生成装置20は、このクレーンの保持後動作に対応する開始イベント及び完了イベントを個別に再設定する。すなわち、干渉範囲設定部21は、一つのクレーンが処理対象物を保持している場合、当該処理対象物の搬送に伴う一つのクレーンの移動範囲を干渉範囲に設定する。
上記の実施例では、全てのクレーン12A,12Bが同一の大きさ及び移動性能であるが、一例であってこれに限られるものでない。複数のクレーンの一部又は全部に関してクレーン同士の幅方向の大きさ、性能等に関する差があってもよい。この場合、差がある事項に対応するデータ(例えばクレーン配置データ64、移動時間データ65等)においてクレーン別のデータを用意することで対応することができる。また、クレーンによる搬送方向は上流から下流に限定されない。クレーンは、下流から上流への搬送も当然行うことができる。
レール11の敷設方向に沿う各処理槽2A〜2Gの幅は不均一であってもよい。処理槽2A〜2Gは、容器状であることに限定されない。処理槽2A〜2Gは、所望の処理を行うことができる領域(スペース)であればよい。例えば、処理槽2A〜2Gは、処理のための設備を備えた区画であってもよい。
上記の実施例では、搬送スケジュール生成装置20は、ソフトウェア・プログラムを利用したコンピューター処理により干渉範囲設定部21、判定部22及び算出部23の機能を実現しているが、これらの機能の一部又は全部を専用のハードウェアによって実現してもよい。