事例 製品

FACTOR/AIM 生産物流シミュレーター

FAQ

コンベア搬送

質問

下記のようなモデルのコンベアの合流点で、原因不明のデッドロックが発生して困っています。原因と対処方法を教えてください。

コンベア、資源の構成は図のようになっています。



製品はAとBの2種類で、それぞれ下記のプロセスプランを定義しています。

製品Aのプロセスプラン
js1 CCP1からCCP2までコンベアで搬送 (マテハン機器を解放しない = コンベアから降ろさない)
js2 パレットを1個取る(Allocate)
js3 CCP2からCCP3までコンベアで搬送後、パレットを開放

製品Bのプロセスプラン
js1 mach1を使用(Allocate)して作業
js2 パレットを1個取る(Allocate)
js3 CCP2からCCP3までコンベアで搬送。 コンベアに乗ったらmach1を解放。搬送後パレットを解放。

デッドロックの発生状況
パレットの数が多い場合は問題無く動くのですが、パレットが1枚のときにデッドロックが発生します。 最初のうちは上手く動いているのですが、途中で製品AがCCP2で止まり、製品Bはmach1上でブロックされて動かなくなってしまいます。
その時、パレットの残りは0となっています。



答え

デッドロックの原因は、パレットとコントロールポイントの取り合いによるものです。 製品AはCCP2の上にいてパレットを要求しています。 しかし利用可能なパレットはないので、その場でブロックしています。 一方製品Bはパレットを取れたので、コンベアに乗ろうとしてCCP2を要求していますが、 CCP2には製品Aがいるのでコンベアに乗れずにブロックしています。 この状態でデッドロックしてしまうのです。
なぜ、このようなことが起こってしまうのでしょう。 問題はロードがコントロールポイントを取るタイミングにあります。 ロードがコントロールポイントを取るのは、次の2つの場合があります。

場合1: 高等搬送ジョブステップの開始
場合2: コンベア搬送中にコントロールポイントへさしかかったとき。

場合1では高等搬送の開始時にコントロールポイントを取ります。 これは資源のAllocateと似ています。 製品BがCCP2を取ろうとしているのがこの場合です。
場合2では、ロードの最前部がコントロールポイントにさしかかった時にコントロールポイントを取ります。 製品AがCCP2を取るのがこの場合にあたります。 コンベア上ではロードの長さが定義されています。ですから、製品Aの最初のジョブステップ(js1 CCP1からCCP2までコンベアで搬送)が終了する(=ロードの中心が、CCP2へ到達する)よりも 少し早いタイミングでCCP2を取ることになります。
この時間差がデッドロックの原因です。 製品AがCCPを取ってから、ジョブステップが終了してパレットを要求するまでのわずかの間に、製品Bがパレットを取ってしまったのです。

対処方法は、CCP2の少し手前に新たなコントロールポイントを設置して、製品Aはそのコントロールポイントに到着したときに パレットをAllocateするようにモデルを修正すれば、デッドロックを解消することができます。
パレットのような資源を取る場合には、モデル作成者がジョブステップで明示的にAllocateします。 しかし、コンベアの終点でコントロールポイントを取る場合には明示的な記述はありません。 高等搬送の途中でAIMが自動的にコントロールポイントを取ったり離したりします。 この機能のおかげで、コントロールポイントの取り合いを細かく考えなくても簡単にモデルを構築することができます。 しかし、今回の場合はコントロールポイントを取るタイミングを意識しなかったためにデッドロックが発生するようなモデルになってしまったのです。



FAQ一覧

■よくある質問

購入前

  1. ライセンスはどのように管理されていますか?
  2. プログラミングのスキルは必要ですか?
  3. 講習会はありますか?
  4. 購入前に使ってみることはできますか?
  5. シミュレーション結果はどのような形式で見られますか?
  6. 保守対象を教えてください
  7. Microsoft Access形式とありますが、Accessは必要ですか?
  8. 関連する書籍は販売されていますか?
  9. どのような業界で適用事例がありますか?
  10. モデルはどのように作るのですか?
  11. アメリカで開発されたと紹介されていますが、 ソフトやマニュアルは英語なのでしょうか?

購入後

  1. 使い方などの問合せ窓口はありますか?
  2. 作成したモデルのバックアップはどのようにすればよいですか?
  3. モデルのバックアップをしておこおうと思うのですが、 ファイルサイズが数十MBと大きくて困っています。
  4. 報告会等のプレゼンテーションの時に アニメーションの動画だけを見せたいのですが、アニメーションの動画ファイルを作成する仕組みはありますか?
  5. 作ったモデル使ったシステムを、色々な部署で使わせたいと思っています。 ライセンスを追加しなければならないのでしょうか?
  6. 他社での活用事例を見てみたいのですが、紹介してもらえますか?
  7. センチネルキーを紛失してしまいました。再発行は可能でしょうか?
  8. 「」というメッセージが出て、AIMが起動しません

■専門的な質問

基本機能解説補足

  1. シーケンスルールと選択ルール
  2. デマンドオーダの納期設定
  3. ユーザ定義の離散、連続分布の定義
  4. 高等搬送JS
  5. コンベア搬送について
  6. 検査JS
  7. 統合/分割JS
  8. バッチ定義、バッチJS
  9. 仕掛りロード
  10. シフト残業設定
  11. 手持ちの図面を利用したアニメーション
  12. モデルデータの保存と読込み

こんなときどうする? -モデル化手法

  1. 資源グループメンバ選択ルール[インデックス]
  2. 資源グループメンバによる加工時間の違い
  3. プロセスプランの同期(1)
  4. プロセスプランの同期(2)
  5. プロセスプランの同期(3)
  6. プロセスプランの同期(4)
  7. 生成JSの利用例
  8. 選択JSの利用例
  9. 後段取りのモデル化方法
  10. 自動倉庫(ASRS)のモデル化方法 4例
  11. 冶具資源を用いたアニメーションテクニック
  12. 工場内の特定の中間倉庫の在庫量を知る方法
  13. 搬送車やAGVの積載時に複数の資源を解放する方法
  14. 空車両の制御
  15. コントロールポイントグループの利用例
  16. パーツ毎の完成数を表示する方法
  17. 一般プールの利用テクニック
  18. バッチJS利用例-高等搬送JS,一般プール
  19. パーツによる処理順の制御テクニック
  20. 納入、出荷スケジュールの利用例

ユーザコードを使用したモデル化

  1. ucrstra-資源ステータスの変化イベント
  2. リリース先ロードへの属性の引渡し方法
  3. 選択JS選択ルール
  4. 故障復旧にオペレータを使用する
  5. JSの続きエディタのジョブステップ選択ルール
  6. ユーザコードからダイアログを表示する方法
  7. AIM内エディタの「式」フィールドに任意の値を設定する方法
  8. Windowsの環境設定

モデル化の検証

  1. 残業を設定していないのに残業したという結果になる
  2. ガントチャートについて
  3. 期間実行、事象ビューア
  4. Visual Studioを利用したデバッグ