<はじめに>
実施の形態の説明に先立って、AGV(Automatic Guided Vehicle)を利用したジョブショップ生産システムについて説明する。
AGVは工場内で製品および部品を自動で搬送する車両であり、最近では、Slam(Simultaneous Localization and Mapping)といった自己位置推定と地図作成の技術によって、工場内の任意の位置に移動可能なAGV(搬送装置)が開発されている。
ジョブショップとは、製品または部品の投入機能、加工または組立といった作業、製品の払い出しといった、一定の機能を複数備えた、何らかの作業を独立して実施する製造装置である。AGVを利用したジョブショップ生産システムとは、ジョブショップ間の製品の運搬をAGVが行い、製品が複数のジョブショップを経由して完成される生産システムである。なお、製造装置とAGVを総称して「装置」と呼称する。同等の機能を有するジョブショップは複数あり、どのジョブショップで製品に対する作業を実施するかを選択する自由度がある。
ジョブショップ生産システムを効率的に運用するためには、AGVと製造装置の運転スケジュールが重要である。生産システムのスケジュール作成は、一般的に、製造装置の生産能力と、各運転指示における製造装置の作業時間と、AGVの移動時間などの運転能力情報に基づいて実施される。製造する製品の種類と数が含まれる注文データに対して、運転能力情報に基づいて、最適と考えられる運転スケジュールを作成する。
ここで、最適と判断する目的関数は、生産システム全体における生産時間が短いこと、各製造装置の稼働時間の合計が短いこと、仕掛品の仕掛中の時間が短いことなどが挙げられる。また、注文上に納期情報または優先度情報、またはその両方が含まれる場合には、納期を守る制約および優先度を守るといった制約が含まれることもある。
納期情報は、顧客への納期ではなく、工場内の生産完了時刻で表現されることもある。運転スケジュールを適切に設定することによって、装置の稼働率を高めて運転時間を短くすることができ、生産コストを下げることができる。
ジョブショップ生産システムにおける運転スケジュールの作成は、大規模な最適化問題となるため、製造装置の作業時間、AGVの移動時間等の運転能力情報は固定値として扱うことが主流である。そのため、運転スケジュールは製造装置とAGVが何時にどういった作業を実施するかで一意に記述できる。また、仕掛品の仕掛中時間が目的関数に含まれない場合には、運転指示の順番だけで記述することもできる。図1には運転スケジュールの一例を模式的に示している。
図1においては、製造装置1〜3における作業と、AGV1〜3における移動のスケジュールを示しており、例えば、AGV1が、移動1−1で運んだワーク(製品)に対して作業2−2を実施し、その後、AGV1が移動1−2で移動させる。また、AGV2が、移動2−1で運んだワークに対して、作業3−2を実施する。また、作業1−1の実施を完了したワークに対して、AGV3が移動3−2で移動させる。
このような運転スケジュールは、製造装置の作業時間と、AGVの移動時間等の運転能力情報に基づいて作成されているが、このような運転スケジュールでは、実際に生産システムを運用することはできない。それは、実際の製造装置の作業時間およびAGVの移動時間には運能力情報からの誤差が発生するからである。また、投入部品の誤差に起因する製造装置での作業ミス、AGVの移動における他車両等の回避および渋滞等といった、スケジュールを作成した時点では予測できない事象も発生する。これらの理由から、時間で指定された運転スケジュールを厳密に運用することはできない。そのため、時間で指定された運転スケジュールを、作業完了に基づいて運転指示を実行する等、作業の完了を条件にした運転計画に変換して運用する必要がある。
また、実際の運用に当たっては、局所的な最適化と大域的な最適化を組み合わせて運用することが望まれる。局所的な最適化の例として、AGVとジョブショップ間の移載作業、ジョブショップ内での部品の加工または組立作業の両方が実行可能な状況を想定する。
例えば、他の装置の運転効率を上げることを考えれば、ジョブショップ内での作業より、AGVとの移載作業を優先して実行した方が良い場合もある。具体的には、あるジョブショップにおいて、AGVの次の行先とは異なるジョブショップに渡す製品への作業を優先すると、AGVへの移載作業が完了せず、AGVの移動開始が保留され、結果としてAGVの次の行先であるジョブショップでの運転効率が低下する状況となる。このように、ジョブショップ内の今の状態という局所的な状況の情報だけでも簡単な最適化が実現可能である。このような、ジョブショップ内の情報またはジョブショップ内の今の状態などの、空間的または時間的に局所的な情報のみで行う最適化を局所的な最適化という。
局所的な最適化は、判断に必要な計算リソースが少なく、製造装置の制御装置で実現できるという利点がある。作業の優先度を予め設定しておき、運転開始条件が成立している作業の内、優先度の高い作業から実行する等の方法で実現されることが多い。
大域的な最適化は、工場全体または運転スケジュール全体、またはその両方に基づいて実施する最適化である。例えば、納期が近い製品の製造を優先するために、他製品の製造を保留して製造装置を空けて待つという方法が挙げられる。他には、製造装置の段取り替えが減るように、同じ作業が連続して実施可能なように運転スケジュールを組むという方法が挙げられる。
大域的な最適化は、最適化するための情報と判断基準が多岐に渡るため、スケジューラ等の専用の機能を有した、生産システムの運用とは別の機器で処理される場合が多く、その処理においては、時間で規定された運転スケジュールについて、従来から広く研究されているスケジューリング問題の解決策を適用することができる。
実際の運用においては運転スケジュールから作業の遅れが発生するため、大域的な最適化に影響しない範囲、例えば、開始時間が前後しても条件が揃えば作業を開始する、また、作業順序を問わない作業の完了を待たない等により、局所的な最適化を適用することが好適である。
以下に説明する本発明に係る実施の形態は、複数の製造装置と製造装置間の製品搬送を行う搬送装置で構成される生産システムにおいて、特に、製造する製品の種類が多く、製造装置は複数種類の製品への作業に対応可能で、かつ、冗長性も高い生産システムに関している。
ただし、製造装置は製品の全工程を実行するものではなく、例えば、部品加工、嵌め合い、カシメ、結線、検査等の工程に分かれて実行される。そのため、未完成の製品が搬送装置で複数の製造装置間を搬送されることで、製品が完成することになる。
このような生産システムでは、製品種別ごとの作業時間変動および製品種別変更に伴う段取り替え時間等があるため、各製品をどの製造装置で作業するかといった運転計画よって、生産システム全体の稼働率が大きく変わってくる。例えば、異なる作業を要する製品を1つの製造装置に混在させて作業させると、段取り替えが多くなり、稼働率は下がってしまう。また、稼働率以外にも、製品ごとに異なる納期が設定されている場合には、特定の製品向けに製造装置を確保して待機させる等して、全ての製品の納期が満たされるように運転計画を立案する必要もある。そのため、生産システム全体を俯瞰して、大域的な最適化を実施した運転計画を立案することが生産システムの稼働率を向上させるためには重要である。生産システム全体の最適な運転計画の立案には時間がかかり、計算リソースも必要となるため、非リアルタイム処理のシステムが適している。一方で各装置への作業指示の応答性は、生産システムの稼働率に影響するため、リアルタイム処理のシステムが適している。
<生産システムの概要>
図2は、本発明に係る運転管理装置を備えた生産システム100の構成を示す概要図であり、全ての実施の形態において共通である。
図2に示すように、生産システム100は、スケジューラ10、運転管理装置20、複数の製造装置31,32〜3nおよび搬送装置41、42〜4mを備えている。搬送装置41〜4mは、先に説明したAGVを含んでいる。
スケジューラ10は、生産システム100の外部から入力される設備情報D1および注文情報D2、運転管理装置20から出力される運転情報D3に基づいて、運転計画D10を出力する。
設備情報D1は、生産システム100内の製造装置と搬送装置の能力(実行可能な作業とその作業時間等)に関する情報を有している。以下では製造装置と搬送装置を総称して「装置」と呼称する。
注文情報D2は、製造する製品の種類と数、必要に応じてその納期に関する情報を有している。
運転情報D3は、生産システム100の運転中に、運転管理装置20からスケジューラ10に送信される生産システム100の現在の運転情報であるが、詳細は後述する。
スケジューラ10は、入力された情報に基づいて、適切な評価基準に従って、生産システム100内の各装置の作業情報を含む運転計画を立案して、運転管理装置20に適切な間隔で出力する。評価基準としては、注文された納期が遵守できているか、全体の製造時間が短いか、設備稼働率が高いかといった、一般的な生産システムの評価基準である。
運転計画D10は、生産システム100内の設備の作業情報を纏めたものである。作業情報には、装置の識別番号(装置ID)と、実行する作業内容および装置IDごとにユニークに設定された作業番号が含まれる。
運転計画D10は、生産システム100の能力と運転状態に合わせて適切な間隔で出力される。この間隔は、作業失敗または生産計画からの生産遅れ等に起因する、運転計画の再立案に必要な時間等によって決まる。例えば、作業失敗の情報を得てから再立案までにかかる時間より間隔を長くするように決定される。作業失敗などのトラブル発生時、または、製造装置に作業を実行させる必要がない場合を除き、運転計画には各装置の作業情報待ちが発生しないように、十分な量の作業情報を含めておくこと望ましい。
運転管理装置20は、入力された運転計画D10に基づいて、生産システムの運転状態を管理しながら、運転計画を実行するための運転指示D21、D22〜D2lを製造装置と搬送装置に送信する。運転計画には各装置に対する作業情報が複数含まれている場合があるが、運転指示は現在実行する作業だけを、各装置に1つだけ送信する。
各装置は運転指示D21、D22〜D2lで指定された作業が完了すると、運転管理装置20に完了情報を送り、次の作業情報の取得要求を送信する。
製造装置31,32〜3nが並列して作業を実行できる場合には、運転管理装置20は各製造装置に並列して運転指示を送信する。
運転計画D10には、生産システム100全体の運用を最適化するために、運転指示の送信を待たせるための情報も含まれる。例えば、搬送装置41〜4mが複数の製品を纏めて搬送できるようなシステムにおいては、搬送予定の製品への作業が全て完了して、全製品の搬送準備が整った後に搬送作業を開始する必要がある。このような、他作業の完了を待つといった、作業の実行開始を待機させるために、作業情報に含まれる条件を、以下ではガード条件と呼称する。また、待つべき作業が全て完了し、作業が実行可能になった状態を、以下ではガード条件が成立したと呼称する。
運転管理装置20は、作業失敗が発生していない状態では、生産システム100の運転状態および運転計画に含まれる作業情報と、その作業情報のガード条件に基づいて、ガード条件が成立した作業情報の運転指示を各装置に送信する。作業失敗が発生した場合の処置については後述する。また、運転管理装置20は、完了した作業情報と作業失敗等の運転計画の進捗状態といった、運転計画の立案に必要な運転情報D3をスケジューラ10に送信する。
ここで、大規模な生産システムが有する課題について説明する。多品種に対応可能で、運転計画の自由度も高い大規模な生産システムにおいては、運転計画を立案するスケジューラと各装置の運転管理を行う運転管理装置を非同期で運用する必要が出てくる。生産システムの稼働率を向上させるためには運転計画の最適化が重要であるが、自由度が高い大規模な生産システムでは、最適化に多くの計算リソースを要するため、時間を要する。一方で、運転管理装置は待機中の製造装置への運転指示をできるだけ早く送信することが望まれる。そのため、各装置の作業が完了した時に、オンデマンドで最適な運転計画を計算して運転指示を送信する方式は、稼働率の観点から非現実的である。
また、運転計画の立案では、作業時間のばらつきについては考慮しない等、モデルを単純化して最適化を行う。しかし、実際の生産システムの運用では作業時間のばらつきが発生するため、運転計画の想定とは作業進行が異なってくる。そのため、スケジューラが生産システムの運転状態を正確に予測して生産計画を立案することは困難となる。その結果、作業失敗が起きないことを前提に、最適化された運転計画をスケジューラが予め立案しておき、運転管理装置が簡単な判断で、オンデマンドに運転指示を送信する方式が現実的である。そのため、スケジューラは、一定期間以上の作業情報を詰め込んだ運転計画を運転管理装置に送信し、運転管理装置はその運転計画をキューイングしながら、オンデマンドで製造装置と搬送装置に運転指示を送信する構成となり、スケジューラと運転管理装置は非同期で運用されることになる。
スケジューラと運転管理装置が非同期で、運転管理装置が運転計画をキューイングしながら生産システムを運用する場合には、作業失敗に関連した実行できない作業情報を適切に処理することが課題となる。作業失敗に関連した作業情報が残り続けると、作業失敗とは関連しない他作業を実行することができず、稼働率が低下する。一方で、他製品に使用する計画の部品を使用して作業を再実行すると、部品が足りなくなる等して段取り替え作業が新たに発生し、運転計画の最適性が崩れる可能性がある。そのため、作業失敗時には、スケジューラによって作業失敗を考慮して再計画された運転計画に基づいて運転管理を行う必要がある。その結果、運転管理装置には、作業失敗に関連する作業情報の内、作業失敗に対応していない運転計画の作業情報は実行せず、作業失敗に対応した運転計画の作業情報だけを実行することが望まれる。以下に説明する実施の形態では、これらを実現するための生産システム100のバリエーションを説明するものである。
<実施の形態1>
<装置構成>
図3は、本発明に係る実施の形態1の運転管理装置20の構成を示す機能ブロック図である。
図3に示すように運転管理装置20は、運転計画受信部201、作業情報取得要求応答部202、作業完了情報受信部203および運転情報送信部204を機能部200として備え、データベース(DB)として、作業情報DB21、作業完了情報DB22および作業失敗情報DB23を備えている。なお、機能部200は、コンピュータを用いて構成することができ、コンピュータがプログラムを実行することで実現される。すなわち、機能部200は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)などのプロセッサにおいて、記憶装置に格納されるプログラムを実行することで各部の機能を実現することができる。
運転計画受信部201は、スケジューラ10(図2)から送信される運転計画等の情報を受信処理する機能を有している。作業情報取得要求応答部202は、製造装置と搬送装置からの作業情報取得要求に応答する機能を有している。作業完了情報受信部203は、製造装置と搬送装置からの作業完了情報を受信処理する機能を有している。運転情報送信部204は、スケジューラ10への運転情報を送信処理する機能を有している。
作業情報DBは、スケジューラ10から受信した運転計画に含まれる作業情報等を保存するデータベースである。作業完了情報DB22は、製造装置と搬送装置の完了した作業に関する情報を保存するデータベースである。作業失敗情報DB23は、製造装置と搬送装置の作業失敗に関する情報を保存するデータベースである。なお、各データベースはハードディスクなとの記憶装置で構成される。
<動作>
<作業失敗が発生しない状況での動作>
以下、各機能部の動作について説明する。まず、作業失敗が発生しない状況での各機能部の動作について説明する。
各機能部は、他の機能部または他の装置等の処理に伴うイベントに応じて処理を開始する。イベントとは、「処理が完了した」、「データベースが更新された」、「予め設定された待ち時間が更新された」といった動作を表し、システム管理の分野では一般的に良く知られた用語である。
図4は、運転計画受信部201での受信処理を説明するフローチャートである。運転計画受信部201は、スケジューラ10(図2)から送信される運転計画を受信すると、作業情報DB21(図3)と作業失敗情報DB23(図3)の更新処理を行う。
図4に示されるように運転計画受信部201での受信処理が開始されると、まず運転計画受信処理が実行される(ステップS1)。
運転計画受信処理は、スケジューラ10から送信された運転計画を受信する処理である。運転計画受信処理に続いて、作業失敗情報更新処理が実行される(ステップS2)。
作業失敗情報更新処理は、運転計画に含まれる、スケジューラ10からの作業失敗情報への対応に関する情報を処理するものであり、処理の詳細については後述する。なお、作業失敗が発生していない状況では、作業失敗情報更新処理は実行されない。
その後、作業情報保存処理が実行される(ステップS3)。作業情報保存処理は、受信した運転計画に含まれる作業情報を作業情報DB21に追加する。作業情報には、作業を行う装置ID、作業番号、作業対象の製品ID、ガード条件等が含まれる。
作業を行う装置IDは、その作業の運転を指示する装置を識別するためのIDである。作業番号は、各作業情報にユニークに付与された番号であり、少なくとも各装置内においては、作業番号の昇順で作業が実行される。作業番号は、生産システム全体でユニークな番号を割り振っても良いし、作業を実施する各装置内でユニークな番号を割り振っても良い。
ガード条件は、他の装置の作業完了を待ってから作業を実行するために利用する情報であり、完了を待つ対象の作業情報を特定可能な装置IDと作業番号等の情報が含まれている。
作業情報DB21は各装置の未完了の作業情報を管理しており、各装置の作業情報は作業番号順に保存される。
作業情報保存処理による作業情報の追加が完了すると、運転計画受信部201の一連の処理が完了する。
図5は、作業情報取得要求応答部202での応答処理を説明するフローチャートである。作業情報取得要求応答部201は、各装置からの作業情報取得要求に応じて、各装置が開始すべき作業情報を各装置に送信する。作業情報取得要求を送信した装置が直ちに開始すべき作業がない場合には、作業情報は送信しない。各装置は、作業指示がなく、作業を実行中ではない場合には運転管理装置20(図2)に作業情報取得要求を送信する。
図5に示されるように、作業情報取得要求応答部202は、作業情報取得要求の受信イベント等で応答処理を開始すると、まず、作業情報要求取得処理において、作業情報取得要求を送信した装置(要求装置)の装置IDを識別する(ステップS11)。
次に、作業情報取得処理において、装置IDが識別された要求装置の作業情報の中で、作業番号が最も小さい作業情報を作業情報DB21(図3)から取得する(ステップS12)。
次に、ステップS13において、要求装置の作業情報が作業情報DB21に保存されているか否かを判定し、1つも保存されていない場合(Noの場合)には、ステップS20の作業情報応答処理に移行する。一方、要求装置の作業情報が作業情報DB21に保存されている場合(Yesの場合)には、ステップS14のガード条件判定処理に移行する。このとき、作業情報DB21内の作業情報は、そのまま作業情報DB21に保存しておく。
ステップS14のガード条件判定処理では、作業情報取得処理(ステップS12)で取得した作業情報のガード条件を確認し、ガード条件が成立しているか否か判定する。ガード条件の確認の結果、ガード条件が設定されていない、またはガード条件で指定されている作業が既に完了済みの場合(Yesの場合)には、ガード条件が成立していると判定する(ステップS15)。一方、ガード条件で指定されている作業が未だ完了していない場合(Noの場合)には、ガード条件が未成立と判定して、ステップS20の作業情報応答処理に移行する。
ガード条件で指定されている作業が完了済みか否かは、作業完了情報DB22(図3)に保管されている各装置の作業完了最終番号と、作業情報取得処理で取得した作業情報の作業番号を比較することで判定する。ガード条件が成立した場合には、ステップS16の作業情報失敗情報収集処理に移行する。
作業失敗情報収集処理は、作業失敗情報DB23(図3)に作業失敗情報が含まれていない場合には何もせず、ステップS17の作業スキップ判定処理に移行する。
続く作業スキップ判定処理では、作業失敗情報収集処理で作業失敗情報を取得したか否かを確認し、作業失敗情報がない場合には実行判定を行い(ステップS18)、作業情報応答処理(ステップS20)に移行する。
作業スキップ判定処理で実行判定された場合には、作業情報応答処理では、ステップS12の作業情報取得処理で取得した作業情報を要求装置に送信して一連の処理を完了する。
また、作業情報取得処理(ステップS12)で作業情報を得られない場合、またはガード条件判定処理(ステップS14)でガード条件未成立となった場合には、作業情報応答処理(ステップS20)において作業情報なしとして要求装置に応答し、一連の処理を完了する。
図6は、作業完了情報受信部203での受信処理を説明するフローチャートである。作業完了情報受信部203は、各装置からの作業完了情報に応じて、作業情報DB21(図3)と作業完了情報DB22(図3)および作業失敗情報DB23(図4)を更新する。
各装置は作業を完了すると、作業完了報告を運転管理装置20に送信する。作業完了報告には、完了した作業を識別するための作業番号の情報と、完了状態を識別する情報等が含まれている。完了状態を識別する情報とは、正常完了か異常完了かを識別する以外に、異常完了の場合には、どういった異常かを識別する情報が含まれる。
図6に示されるように、作業完了情報受信部203は、作業完了情報の受信イベント等で処理を開始すると、まず、作業完了情報受信処理で作業完了情報を受信する処理が実行される(ステップS21)。そして、ステップS22において受信した作業完了情報が正常完了か異常完了かを判定し、正常完了の場合には、続いて、作業完了情報更新処理が実行される(ステップS23)。
作業完了情報更新処理は、作業完了情報DB22に保存されている作業を実行した装置の作業完了最終番号を、ステップS21で受信した作業完了情報の作業番号で更新する。その後、ステップS24の作業情報更新処理で作業情報DB21を更新する。
作業情報更新処理では、作業完了情報で指定された作業情報を作業情報DB21から削除し、作業完了情報受信部203の一連の処理が完了する。
これによって、作業情報取得要求応答部202の作業情報取得処理(S12)で取得した作業が、次の作業に移ることになる。一方、ステップS22で異常完了と判定される場合に実行される作業失敗情報追加機能については後述する。
図7は運転情報送信部204での送信処理を説明するフローチャートである。運転情報送信部204は、生産システム100(図2)の運転情報をスケジューラ10(図2)に送信する。
図7に示されるように、運転情報送信部204は、一定時間の経過か、作業完了情報DB22(図3)または作業失敗情報DB23(図3)の更新といったイベントで処理を開始し、作業完了情報収集処理が実行される(ステップS31)。作業完了情報収集処理は、スケジューラに送信する情報を作業完了情報DB22、作業失敗情報DB23、またはその両方から収集して運転情報として纏め、ステップS32の運転情報送信処理に移行する。収集する情報としては、各装置の作業完了最終番号と作業失敗情報等である。
運転情報送信処理では、作業完了情報収集処理で収集された運転情報をスケジューラ10(図2)に送信する。運転情報送信処理でスケジューラ10に運転情報を送信すると運転情報送信部204は一連の処理を完了する。
作業が正常に完了している場合においては、上記で説明した処理のように、運転管理装置20は、運転計画に基づいて各装置へ運転指示を送信すると共に、スケジューラ10に生産システム100で完了した作業を運転情報として送信する。
<作業失敗が発生した場合の動作>
次に、作業失敗が発生した場合の各機能部の動作について説明する。本実施の形態で説明する作業失敗は、製品起因の失敗を対象として説明する。製品起因の作業失敗は、部品の製造誤差等で発生する作業失敗であり、作業を失敗した製品およびその製品への作業指示を排除すれば生産を継続できる作業失敗であり、一般にチョコ停と呼ばれる失敗である。
製品起因の作業失敗が発生した場合には、該当製品への作業指示を一時的に排除し、自動的に生産を継続することが望まれる。生産システム全体では、製品起因の作業失敗は様々な場所で発生すると共に、同一の装置または、生産再開した製品に連続して発生することもあるので、作業指示の排除と再開には特別な工夫が必要となる。
まず、作業失敗が発生すると、失敗が発生した装置から異常完了の作業完了情報が運転管理装置20に送信される。そして、運転管理装置20の作業完了情報受信部203の作業完了情報受信処理(ステップS21)において異常完了を受信する。
その後、作業失敗情報追加処理(ステップS25)において、作業完了情報に基づいて、作業失敗情報DB23(図3)に作業失敗情報を更新するか追加する。作業失敗情報には、作業失敗情報ID、どの製品に対する作業失敗であるかを識別する作業失敗製品ID、生産システム100に含まれる装置IDごとの作業スキップ最終番号が含まれる。
作業失敗情報追加処理では、作業失敗情報IDは新規の番号を割り当て、作業失敗情報の作業失敗製品IDを作業完了情報に含まれる作業失敗した製品IDで設定し、作業スキップ最終番号は、作業スキップの判定を実施する最終の作業番号として規定され、例えば、NULL等の、作業情報の作業番号としては利用されない値で設定し、未指定とする。
そして、設定した作業失敗情報の作業失敗製品IDと同じ作業失敗製品IDを持つ作業失敗情報が、作業失敗情報DB23に保存されているかを確認する。保存されている場合には、保存されている同じ作業失敗製品IDを持つ作業失敗情報の、作業失敗情報IDと作業スキップ最終番号を新たに設定した値で更新する。保存されていない場合には、新たに設定した作業失敗情報を追加する。
上述した、作業失敗情報追加処理のフローを図8のフローチャートに示す。作業完了情報受信部203の作業完了情報受信処理において異常完了を受信した場合は作業失敗情報追加処理を開始し、まず、作業失敗情報IDに新規の番号を割り当てるなどして、作業失敗情報を新規に作成する(ステップS161)。
次に、新規作成した作業失敗情報の作業失敗製品IDと同じ作業失敗製品IDを持つ作業失敗情報が作業失敗情報DB23に保存されているかを確認する(ステップS162)。
作業失敗情報DB23に保存されている場合(Yesの場合)には、保存されている同じ作業失敗製品IDを持つ作業失敗情報の作業失敗情報IDと作業スキップ最終番号を更新し(ステップS163)、一連の処理を終了する。
一方、作業失敗情報DB23に保存されていない場合(Noの場合)には、作業失敗情報を新規に追加し(ステップS164)、一連の処理を終了する。
作業失敗情報を追加した後は、スケジューラ10から作業失敗に対応した運転計画が送信されるまでは、以下に説明する処理によって、全ての装置における、作業失敗製品IDへの作業をスキップする。
作業失敗情報DB23に作業失敗情報が保存されている状態で、作業情報取得要求応答部202の作業失敗情報収集処理(ステップS16)が実行されると、作業失敗情報収集処理は、まず、作業情報取得処理(ステップS12)により作業情報DB21から取得した作業情報(以下、該当作業情報と呼称)に、作業対象となる製品を指定する製品IDが含まれるかを判定する。
例えば、製品に対する作業であれば、該当作業情報には作業対象の製品IDの情報が含まれる。しかし、製品種別変更に伴う段取り替え作業等の、製品を対象としない作業であれば、作業対象の製品IDの情報は該当作業情報に含まれない。作業失敗情報収集処理は、該当作業情報に製品IDが含まれている場合には、該当作業情報の製品IDと作業失敗製品IDが一致する作業失敗情報を作業失敗情報DB23から収集する。
続いて、作業スキップ判定処理(ステップS17)において、作業失敗情報収集処理で収集した作業失敗情報の装置IDごとの作業スキップ最終番号に基づいて、該当作業情報をスキップするか否かを判定する。
判定にあたっては、まず、作業失敗情報に含まれる、該当作業情報に含まれる装置IDと一致する装置IDの作業スキップ最終番号を取得する。取得した作業スキップ最終番号が、例えばNULL等の、作業情報の作業番号としては利用されない値となって未指定である場合、または、該当作業情報の作業番号が作業スキップ最終番号以下の場合には、該当作業情報をスキップすると判定する。
逆に、該当作業情報の作業番号が作業スキップ最終番号より大きい場合には、該当作業情報を実行すると判定(実行判定)とする。
上述した、作業スキップ判定処理のフローを図9のフローチャートに示す。作業失敗情報収集処理(ステップS16)において、該当作業情報の製品IDと作業失敗製品IDが一致する作業失敗情報を作業失敗情報DB23から収集することで作業スキップ判定処理を開始すると、作業失敗情報に含まれる、該当作業情報に含まれる装置IDと一致する装置IDの作業スキップ最終番号を取得する(ステップS171)。
次に、該当作業情報の作業番号が、ステップS171で取得した作業スキップ最終番号より大きいか否かを判定する(ステップS172)。
そして、該当作業情報の作業番号が作業スキップ最終番号より大きい場合(Yesの場合)には、該当作業情報を実行判定する(ステップS173)。一方、該当作業情報の作業番号が作業スキップ最終番号以下の場合(Noの場合)には、該当作業情報をスキップすると判定する(ステップS174)。実行判定またはスキップ判定により、一連の処理を終了する。
作業スキップ判定処理においてスキップ判定をすると、作業スキップ処理(ステップS19)が実行される。作業スキップ処理は、作業情報DB21から該当作業情報を削除し、作業完了情報DB22における該当作業情報の装置IDの作業完了最終番号を、該当作業情報の作業番号で更新する。
上述した、作業スキップ処理のフローを図10のフローチャートに示す。作業スキップ判定処理においてスキップ判定がされることで作業スキップ処理を開始すると、作業情報DB21から該当作業情報を削除する(ステップS191)。
次に、作業完了情報DB22における該当作業情報の装置IDの作業完了最終番号を、該当作業情報の作業番号で更新し(ステップS192)、一連の処理を終了する。
その後、作業情報取得要求応答部201では、作業情報取得処理(ステップS12)に移行する。これら一連の処理により、作業失敗が発生した製品への作業は、作業情報の作業番号が作業スキップ最終番号より大きくなるまでスキップされる。また、スキップした作業番号で各装置の作業完了最終番号は更新される。
続いて、スケジューラ10から作業失敗に対応した運転計画D10が送信され、作業失敗が発生した製品への作業が再開されるまでの処理について説明する。
運転情報送信部204(図3)は、作業失敗情報DB23に含まれる、スケジューラ10に送信していない作業失敗情報IDの作業失敗情報を運転情報に含めてスケジューラ10に送信する。
スケジューラ10は、作業失敗情報を含んだ運転情報を受信すると、作業失敗に対応した運転計画を再立案する。このとき、各製品の作業順序が決まっている運用であれば、スケジューラ10は作業失敗情報から、既に送信した運転計画の中でどの作業がスキップされるかを判断できる。そのため、送信済みの運転計画D10に続く運転計画D10を立案することができる。スケジューラが作業失敗に対応した運転計画D10の再立案を完了すると、対応が完了した作業失敗情報IDの情報である対応済み作業失敗情報IDリストを運転計画に付与して運転管理装置20に送信する。運転管理装置20の運転計画受信部201(図3)は、作業失敗情報更新処理で対応済み作業失敗情報IDリストを処理する。
作業失敗情報更新処理は、対応済み作業失敗情報IDリストに含まれる作業失敗情報IDに対応する作業失敗情報に対し、各装置の作業スキップ最終番号を、現在の作業情報DB21に含まれる各装置の作業番号の最大値で更新する。その後、作業情報取得要求応答部202(図3)の作業スキップ判定処理により、作業情報の作業番号が作業スキップ最終番号より大きくなると、作業失敗情報IDへの各装置の作業スキップが完了し、製品への作業が再開されることになる。
ここで、作業スキップ判定処理は、全装置において作業情報の作業番号が作業スキップ最終番号より大きくなったかを判定し、大きい場合には、作業失敗情報DB23から該当する作業失敗情報を削除しても良い。
以上説明したように、本実施の形態1の運転管理装置20によれば、作業失敗情報に作業失敗製品IDと各装置の作業スキップ最終番号を備え、作業失敗に対応した運転計画が立案されると作業スキップ最終番号を更新し、作業失敗製品IDと作業対象の製品IDが一致する作業情報の内、更新された作業スキップ最終番号までの作業番号を持つ作業はスキップすると共に、作業スキップ最終番号より後の作業番号を持つ作業情報は運転指示を装置に送信することができる。これによって、運転計画を立案するスケジューラと運転計画に基づいて装置に運転指示を送信する運転管理装置20が、非同期な生産システムであっても、作業失敗が発生した際に、作業失敗に関連した作業をスキップして生産システムの稼働率を上げると共に、作業失敗に対応した運転計画にも連続して移行することができる効果を奏する。
本実施の形態では、AGVを利用したジョブショップ生産システムで説明を行ったが、搬送装置や装置の形態に関して、これに限定されるものではない。搬送装置としてコンベア等の他機械を利用しても良い。また、製造装置も複数の機能を備えるジョブショップではなく、単一機能だけを備える機械および、その他の形態の機械でも良い。
<実施の形態2>
運転計画に余剰部品の情報を含めておき、余剰部品がある場合には、部品起因の作業失敗が発生した場合に同じ運転指示を作業失敗が発生した装置に送信しても良い。
組立作業などで供給部品に起因する作業が失敗したとしても、余剰部品がある場合には、余剰部品を使用して運転計画を継続することができる。生産システム全体の運転計画の再立案には多大な計算リソースが必要であり、再立案の要求頻度が高いと、全ての要求に対応した運転計画の再立案が完了しない等の問題が生じる場合もある。そのため、余剰部品を使用して作業を再実行し、運転計画を継続できる可能性が高い場合には、運転管理装置は、運転計画の再立案は要求せずに、余剰部品の範囲内で、作業を再実行することが望ましい。本実施の形態2においては、このような運転管理が可能な運転管理装置について説明する。
<装置構成>
図11は、本発明に係る実施の形態2の運転管理装置20Aの構成を示す機能ブロック図である。
図11に示すように運転管理装置20Aは、運転計画受信部201、作業情報取得要求応答部202、作業完了情報受信部203Aおよび運転情報送信部204を機能部として備え、データベース(DB)として、作業情報DB21、作業完了情報DB22、作業失敗情報DB23および余剰品情報DB24を備えている。なお、図11においては、図3を用いて説明した運転管理装置20と同一の構成については同一の符号を付し、重複する説明は省略する。
図12は、作業完了情報受信部203Aでの受信処理を説明するフローチャートである。作業完了情報受信部203Aでの受信処理においては、作業失敗情報追加処理(ステップS25)に先立って、機能再実行判定処理(ステップS26)を行う。
スケジューラ10(図2)は、運転計画D10(図2)に作業で使用する部品の余剰品情報を含めて運転管理装置20Aに送信する。例えば、部品の段取り替え作業等の作業情報に、段取り替えで供給する部品の余剰品数の情報を付加して送信する。
運転管理装置20Aの運転計画受信部201における作業情報保存処理(図4)は、作業情報を作業情報DB21に保存する際に、作業情報に余剰品数の情報がある場合には、その情報を余剰品情報DB24に保存する。装置の作業で部品起因の作業失敗が発生すると、作業完了情報受信部203Aで異常完了の作業完了情報を受信し、再実行判定処理(ステップS26)が実行される。
再実行判定処理では、余剰品情報DB24に保存されている、異常完了した作業で使用した部品の余剰品数を確認する。そして、余剰品があると判定される場合には再実行と判定し(ステップS27)、余剰品情報DB24に保存されている余剰品の数を減らして、作業完了情報受信部203Aの処理を完了する。このとき、正常完了の場合と異なり、作業情報更新処理(ステップS24)による作業情報DB21に含まれる作業情報の削除は実行されない。そのため、作業情報取得要求応答部202(図11)は、作業失敗をした装置からの作業情報要求を取得すると、失敗した作業情報と同じ作業情報を応答することになる。
一方、再実行判定書処理が余剰品情報DB24を確認した際に、余剰品なしと判定された場合には異常完了と判定し(ステップS27)、実施の形態1と同様に作業失敗情報追加処理が実行され、同じ製品に対する作業のスキップとスケジューラへの運転計画の再立案が要求される。
余剰品の情報を部品に関連付けて余剰品情報DB24に保存する以外に、各作業情報に再実行可能回数を指定する方法もある。この場合、余剰品情報DB24は必要とせず、作業完了情報受信部203Aの再実行判定処理は、作業情報に含まれる再実行可能回数を参照し、再実行可能回数が、その作業を再実行した回数より大きい場合には再実行と判定することとなる。
以上説明したように、本実施の形態2の運転管理装置20Aによれば、装置の作業が異常完了した際に、再実行判定処理で再実行可能かを判定して、再実行可能な場合には同じ作業を実行させることで、スケジューラ10への運転計画の再立案の要求回数を抑えることができ、生産システム100の稼働率を上げる効果がある。
<実施の形態3>
装置起因の失敗が発生した際には、作業失敗した装置に搬送される製品への作業をスキップするようにしても良い。装置起因の作業失敗は、装置の故障等で発生する作業失敗であり、装置を再調整するまで生産を継続できない作業失敗である。装置起因の作業失敗が発生した場合には、作業失敗した装置(以下該当装置と呼称)への作業指示、および、該当装置での作業実施が運転計画に含まれる製品への作業を除いて生産を継続することが望まれる。装置起因の失敗の場合には、生産システム内で自動復旧はしないため、故障した装置の再起動については考慮しない。本実施の形態3においては、このような運転管理が可能な運転管理装置について説明する。
<装置構成>
図13は、本発明に係る実施の形態3の運転管理装置20Bの作業情報取得要求応答部202Bでの応答処理を説明するフローチャートである。なお、運転管理装置20Bの機能ブロック図は、図3を用いて説明した実施の形態1の運転管理装置20の機能ブロック図において、作業情報取得要求応答部202を作業情報取得要求応答部202Bに変更し、作業完了情報受信部203を作業完了情報受信部203Bに変更した構成を採り、図3を用いて説明した運転管理装置20と同一の構成については同一の符号を付し、重複する説明は省略する。
また、図13に示すフローチャートは、図5を用いて説明した実施の形態1の作業情報取得要求応答部202フローチャートにおいて、ガード判定処理(ステップS14)の前に、作業失敗装置搬送作業確認処理(ステップS131)が追加されている。
図14は、作業完了情報受信部203Bでの受信処理を説明するフローチャートである。図14に示すように、作業完了情報受信部203Bの作業完了情報受信処理(ステップS21)で受信した作業完了情報が、ステップS22で異常完了と判定された場合には、ステップS28に進んで、異常完了が製品起因であるか装置起因であるかの判定を行う。
そして、製品起因の異常完了である場合はステップS25に移行し、作業失敗情報追加処理が実行される。一方、装置起因の異常完了である場合はステップS29に移行し、装置起因作業失敗情報追加処理が実行される。
装置起因作業失敗情報追加処理は、装置起因の作業失敗情報を作業失敗情報DB23(図3)に更新か追加を実行する。装置起因の作業失敗情報には、作業失敗情報ID、どの装置での作業失敗であるかを識別する故障装置IDと、故障装置での作業に関連する故障装置作業予定製品IDが含まれる。装置起因作業失敗情報追加処理では、作業失敗情報IDには新規の番号を割り当て、故障装置IDは作業完了情報に含まれる作業失敗した装置IDに設定し、故障装置作業予定製品IDは空に設定する。そして、作業失敗情報DB23に設定した装置起因の作業失敗情報を追加する。
図13に示すように、作業情報取得要求応答部202Bにおける作業失敗装置搬送作業確認処理(ステップS131)は、まず、作業情報取得処理(ステップS12)で取得した作業情報(以下、該当作業情報と呼称)が、装置起因の作業失敗が発生した装置への搬送作業であるかを確認する。該当作業が装置起因の作業失敗が発生した装置(以下、該当装置と呼称)への搬送作業である場合には、該当装置のIDが設定された装置起因の作業失敗情報の故障装置作業予定製品IDに、該当作業の搬送作業で搬送される製品の製品IDを追加する。
次に、ステップS14のガード条件判定処理においてガード条件を収集し、ステップS15においてガード条件が成立していると判定された場合は、ステップS16の作業失敗情報収集処理に移行する。
作業失敗情報収集処理では、作業失敗情報DB23から製品起因の作業失敗情報に含まれる作業失敗製品IDに加えて、装置起因の作業失敗情報に含まれる故障装置作業予定製品IDも確認して、作業情報に含まれる製品IDと関連した作業失敗情報を収集する。
作業失敗情報収集処理が装置起因の作業失敗を収集した場合には、作業スキップ判定処理(ステップS17)は、作業情報をスキップ判定とする。
以上説明したように、本実施の形態3の運転管理装置20Bによれば、装置故障等の装置起因の作業失敗が発生した際に、作業失敗した装置を経由する製品への作業情報を削除することで、他製品の作業を妨げることがなくなり、生産システム100全体の稼働率を向上する効果がある。
<実施の形態4>
装置起因の作業失敗が発生した際には、作業失敗が発生した装置へ搬送する作業情報の搬送先を変更するようにしても良い。各装置が受入可能な搬送作業の上限が決まっている場合には、装置起因で作業失敗した装置への搬送作業が実行できず、他の装置で搬送装置が止まってしまう可能性がある。そのため、作業失敗が発生した装置への搬送作業の場合には、搬送先を搬送装置の待機場所等への移動に変更して実行する。
図15は、本発明に係る実施の形態4の運転管理装置20Cの作業情報取得要求応答部202Cでの応答処理を説明するフローチャートである。なお、運転管理装置20Cの機能ブロック図は、図3を用いて説明した実施の形態1の運転管理装置20の機能ブロック図において、作業情報取得要求応答部202を作業情報取得要求応答部202Cに変更した構成を採り、図3を用いて説明した運転管理装置20と同一の構成については同一の符号を付し、重複する説明は省略する。
また、図15に示すフローチャートは、図13を用いて説明した実施の形態3の作業情報取得要求応答部202Bのフローチャートにおいて、作業スキップ判定処理(ステップS17)の前に、搬送作業変更判定処理(ステップS161)が追加されている。
搬送作業変更判定処理は、作業情報取得処理(ステップS12)で取得した作業情報が搬送作業であり、その搬送先が装置起因の作業失敗情報での故障装置IDに登録されている場合には、作業情報の搬送先を変更する処理である。作業情報が変更される作業情報では、作業スキップ判定処理(ステップS17)では実行判定されステップS20に移行するので、作業情報取得要求応答部202Cは、作業情報応答処理(ステップS20)において搬送先が変更された作業命令を装置に送信する。
搬送先の変更は、例えば搬送装置の待機場所である。スケジューラ10(図2)は、運転管理装置20Cの運転情報送信部204から送信される作業失敗情報を含む運転情報から搬送装置の搬送先が変更されることは認識できるので、搬送装置の搬送先が変更された状態に基づいて運転計画を再立案する。
以上説明したように、本実施の形態4の運転管理装置20Cによれば、故障等で作業失敗した装置への搬送作業の搬送先を変更することで、該当装置への移動が計画されていた搬送装置が、他の装置で止まってしまうことを防ぎ、生産システム全体の稼働率を向上する効果がある。
<実施の形態5>
互いに独立した部品を組み付けるように、製品の作業順序に自由度があり、運転計画では作業順序を一意に決めていない場合には、運転管理装置20は製品起因の作業が失敗した時点の作業状態をスケジューラ10に送信しても良い。製品の作業順序を一意に決めていない場合、作業失敗情報だけでは、その製品の作業進捗状態をスケジューラ10は把握することができない。作業失敗情報をスケジューラ10が受信した時点で、その作業失敗に関連して、運転計画がどのように処理されるかをスケジューラ10が判断できるように、運転管理装置20が作業失敗を受信した時点での生産システム100全体での進捗状態もスケジューラ10に送信するようにしても良い。
図16は、本発明に係る実施の形態5の運転管理装置20Dの作業完了情報受信部203Cでの受信処理を説明するフローチャートである。作業完了情報受信部203Cでの受信処理においては、作業失敗情報追加処理(ステップS25)の後に、作業状態記録処理(ステップS30)を行う。
なお、運転管理装置20Dの機能ブロック図は、図3を用いて説明した実施の形態1の運転管理装置20の機能ブロック図において、作業完了情報受信部203を作業完了情報受信部203Cに変更した構成を採り、図3を用いて説明した運転管理装置20と同一の構成については同一の符号を付し、重複する説明は省略する。
作業状態記録処理は、作業状態記録処理を実行する時点で、運転管理装置20Dの運転情報送信部204が各装置に送信を完了している最後の作業情報に含まれる作業番号を取得する処理である。
そして、直前に作業失敗情報追加処理で作業失敗情報DB23に追加した作業失敗情報に、新たに取得した各装置の作業失敗情報を追加する。スケジューラ10は、運転管理装置20Dの運転情報送信部204(図3)から送信される、作業失敗情報を含む運転情報から既に送信済みの運転計画がどのように実行されるかを判断し、運転計画を再立案する。このとき、スケジューラ10は、装置に送信済みの作業情報は実行され、装置に未送信の作業情報で作業失敗に関連する作業はスキップされるものとして判断する。
以上説明したように、本実施の形態5の運転管理装置20Dによれば、作業失敗が発生した時点での各装置の作業情報が作業失敗情報としてスケジューラ10に送信される。そのため、製品の作業順序を一意に決めておらず、作業順序に自由度がある状態でも、既に送信済みの運転計画に対する生産システム100の処理内容をスケジューラ10が判断できる。これによって、作業失敗情報を受信した時点でスケジューラ10が運転計画を再立案できるため、生産システムの稼働率を上げる効果がある。
<謝辞>
本研究は、総合科学技術・イノベーション会議が主導する革新的研究開発推進プログラム(ImPACT)の一環として実施したものです。「This work was funded by ImPACT Program of Council for Science, Technology and Innovation (Cabinet Office, Government of Japan).」。
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。