AGV

説明

AGVに関連するデータおよびメソッドが利用可能になります。

プロパティ

accumAheadAGV 累積パス上にある次のAGVを取得します。
ampHours AGVのバッテリーに残っているアンペア時間を数値で取得します。
batteryLevel (残りアンペア時間)/(合計アンペア時間)の割合をパーセント単位で取得もしくは設定します。
currentCP このAGVの現在のコントロールポイントを取得もしくは設定します。
destination AGVの現在目的地を取得します。
destinationCP AGVの現在目的地のコントロールポイントを取得します。
finalDestinationCP AGVの最終目的地のコントロールポイントを取得します。
object このAGVでオブジェクトメソッドとプロパティが利用可能になります。
originCP AGVの元のコントロールポイントを取得します。
overflowCP AGVがトレーラーを押している場合、「オーバーフロー」するコントロールポイントを取得するか、そのようなコントロールポイントを設定します。
proximityState AGVの現在の近接状態を取得します。
recentCP 最後にagvのcurrentCPであったコントロールポイントを取得します。
speed AGVの現在の速度を取得します。
te このAGVでTaskExecuterメソッドとプロパティが利用可能になります。
trailers このAGVにアタッチされている一連のトレーラーで構成されているAGV.Trailerの配列です。

メソッド

attachTrailer 特定のオブジェクトをAGV上のトレーラーとしてアタッチします。
coupleTrain このAGVに対してトレーラーの輸送列をアタッチし、ネットワークジオメトリに基づいてギャップなどを自動計算します。
detachTrailer AGVから特定のトレーラーをデタッチします。
getTrailer ahead/behindパラメータに基づく特定のトレーラーを取得し、AGVドライバに対するランクを取得します。
redirect 指定されたモードに応じて、AGVを新しい目的地にリダイレクトします。
startRecharge AGVのバッテリーの充電を開始します。
uncoupleTrain このAGVからトレーラーの輸送列をデタッチし、独立したAGV輸送列を作成します。

コンストラクター

AGV 指定したTaskExecuterに基づいて、AGVオブジェクトを構築します。

詳細

削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.accumAheadAGV

readonly AGV accumAheadAGV

説明

累積パス上にある次のAGVを取得します。

現在のAGVより前にAGVがない場合や、パスタイプが累積でない場合、このプロパティはnull値を返します。
AGV agv2; 
if (agv1.accumAheadAGV) 
	agv2 = agv1.accumAheadAGV;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.ampHours

readonly double ampHours

説明

AGVのバッテリーに残っているアンペア時間を数値で取得します。

double ampHoursLeft = agv.ampHours;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.batteryLevel

double batteryLevel

説明

(残りアンペア時間)/(合計アンペア時間)の割合をパーセント単位で取得もしくは設定します。

double batteryLevel = agv.batterLevel;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.currentCP

Object currentCP

説明

このAGVの現在のコントロールポイントを取得もしくは設定します。

agvが現在コントロールポイント上に存在しない場合、nullとなります。

Object cp = agv.currentCP;
agv.currentCP = Model.find("MyCP");
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.destination

readonly Object destination

説明

AGVの現在目的地を取得します。

目的地がコントロールポイントに接続された固定リソースの場合、このプロパティはその固定リソースを返します。Object destination = agv.destination;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.destinationCP

readonly Object destinationCP

説明

AGVの現在目的地のコントロールポイントを取得します。

Object destinationCP = agv.destinationCP;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.finalDestinationCP

readonly Object finalDestinationCP

説明

AGVの最終目的地のコントロールポイントを取得します。

最終目的地のコントロールポイントは、REDIRECT_AS_FINALを使用してredirect()が呼び出された場合には変更される場合があります。Object finalDest = agv.finalDestinationCP;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.object

readonly Object object

説明

このAGVでオブジェクトメソッドとプロパティが利用可能になります。

Object object = agv.object;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.originCP

readonly Object originCP

説明

AGVの元のコントロールポイントを取得します。

Object originCP = agv.originCP;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.overflowCP

treenode overflowCP

説明

AGVがトレーラーを押している場合、「オーバーフロー」するコントロールポイントを取得するか、そのようなコントロールポイントを設定します。

一般的には、AGVがトレーラーを押している場合でのみ必要です。トレーラーを押している場合、これらのトレーラーはAGVの予定目的地を越えて押されることになります。そのため、overflowCPはAGVのトレーラーが「オーバーフロー」すべきAGVパスネットワーク上のポイントを定義します。

overflowCPの制御はユーザーによってのみ行われます。モデルがリセットされた場合のみ、自動でリセットされます。そのため、このプロパティを設定する場合、適用可能な動作を完了した後でこのプロパティを0にリセットする必要があります。適用可能な移動動作の後でリセットしなかった場合、異常なAGVパス移動動作が発生する恐れがあります。

agv.overflowCP = Model.find("ControlPoint5");
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.proximityState

readonly int proximityState

説明

AGVの現在の近接状態を取得します。

0は制約がないことを示します。1はAGVがその前方に別のAGVがあるため停止したことを示します。
if (agv.proximityState) {
// handle a stopped agv
...
}
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.recentCP

Object recentCP

説明

最後にagvのcurrentCPであったコントロールポイントを取得します。

このプロパティは、agvが最後のcurrentCPを超えて移動した(したがってcurrentCPがnull)状態でも、最後のコントロールポイントへのアクセスを可能にし続けたい場合に便利です。

Object cp = agv.recentCP;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.speed

readonly double speed

説明

AGVの現在の速度を取得します。

double agvSpeed = agv.speed;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.te

readonly TaskExecuter te

説明

このAGVでTaskExecuterメソッドとプロパティが利用可能になります。

TaskExecuter te = agv.te;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.trailers

readonly trailers

説明

このAGVにアタッチされている一連のトレーラーで構成されているAGV.Trailerの配列です。

トレーラーは前方から後方に向けて順序付けされています。言い換えると、最前列のトレーラーが

agv.trailers[1]
になり、最後列のトレーラーが
agv.trailers[agv.trailers.length]
.

削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.attachTrailer()

attachTrailer( treenode trailer , double gap , int behind , int detachRule )

パラメータ

trailer AGVにけん引されるオブジェクト
gap 次のトレーラーまたはAGVからのトレーラーの距離
behind トレーラーの位置を設定します。0または1に設定でき、0は前方、1は後方を示します。
detachRule AGVのデタッチモードを設定します。0または1に設定でき、0は手動、1は自動を示します。

説明

特定のオブジェクトをAGV上のトレーラーとしてアタッチします。

トレーラーを手動デタッチモードでアタッチする場合、トレーラーのデタッチにはdetachTrailer()を呼び出す必要があります。

agv.attachTrailer(trailerObj, 0.1, 1, 0);
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.coupleTrain()

coupleTrain( treenode trailer )

パラメータ

trailer AGVに結合されるオブジェクトです。トレーラー自体がAGVであるか、AGVのトレーラーである場合、AGV輸送列全体がアタッチされます。

説明

このAGVに対してトレーラーの輸送列をアタッチし、ネットワークジオメトリに基づいてギャップなどを自動計算します。

coupleTrain()は、次に示すの主な違いを除けばattachTrailer()と同様です。

  • attachTrailer()がAGVに単一のトレーラーをアタッチする一方で、coupleTrain()は他のAGV輸送列の一部であるトレーラーをすべてアタッチします(そのような輸送列があれば)。
  • attachTrailer()ではトレーラーを前方と後方のどちらにアタッチすべきかやギャップ距離などのパラメータを定義する必要がありますが、coupleTrain()では反対に、それらのパラメータをAGVパスネットワークのトレーラー/輸送列の位置に基づいて自動で決定します。

トレーラーをAGVの輸送列に結合する際には、2通りのシナリオが想定されます。各シナリオは、次のように輸送列の結合に関する異なるロジックに影響を与えます。

  1. トレーラーが独立オブジェクトである場合 - トレーラーが他のAGV輸送列と関連付けられていない場合、AGVは単純な空間近接性を分析することでトレーラーを結合すべき場所を判断します。トレーラーの位置を取得して、その位置がAGVの前方と後方のどちらかを判断します。その後、その判断に基づいて空間近接性を再分析することで、トレーラーとAGVに関連付けられた最前列/最後列トレーラー間のギャップを決定します。さらに、トレーラーと関連付けられたAGV輸送列がないため、そのトレーラーをAGVにのみ結合して、他のオブジェクトには結合しません。
  2. トレーラー自体が他のAGVであるか、他のAGVのトレーラーである場合 - トレーラーが他のAGVの一部である場合、AGVはAGVパスネットワーク上の他のAGVとの自身の相対的な位置を分析することで結合パラメータを判断します。各AGVの終端間でパスネットワーク距離分析を行い、導き出した輸送列の終端間の最短パスを通して輸送列を結合することで、前方/後方属性やギャップなどを判断します。このアルゴリズムでは、輸送列方向のスイッチを必要としない1つ以上のパスを通じて、AGV終端同士はお互いに到達可能であると想定されています。言い換えると、ネットワーク上における輸送列のお互いへの近接性は、たとえば実際の状況でどのように輸送列を結合することを望むかといったように、「近くて直感的」である必要があります。異常なパスジオメトリで結合することは特定できない動作を引き起こします。

このメソッドをuncoupleTrain()と組み合わせて使用すると、操車場における車両の連結と非連結をシミュレートすることができます。

削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.detachTrailer()

detachTrailer( treenode trailer )

パラメータ

trailer AGVからデタッチするトレーラー

説明

AGVから特定のトレーラーをデタッチします。

agv.detachTrailer(trailerObj);
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.getTrailer()

AGV.Trailer getTrailer( int isBehind , int rankFromDriver )

パラメータ

isBehind AGVの後方にあるトレーラーにアクセスしたい場合は1を、AGVの前方にあるトレーラーにアクセスしたい場合は0を指定します。
rankFromDriver 1から始まる、AGVドライバからのトレーラーランクです。

説明

ahead/behindパラメータに基づく特定のトレーラーを取得し、AGVドライバに対するランクを取得します。

Object trailer = agv.getTrailer(1, 2).object;
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.redirect()

redirect( Object newDest , int mode )

パラメータ

newDest AGVが移動する新しい目的地
mode リダイレクト時に行うことを決定します。次の4つの値の1つを指定できます。

REDIRECT_AND_WAIT - 到着前にリダイレクトされていない場合、AGVはリダイレクトされるまで目的地で待機します。
REDIRECT_AS_FINAL - 目的地がAGVの新しい最終目的地になります。
REDIRECT_AND_CONTINUE_ON_ARRIVAL - AGVは中間目的地に到着した後で、最終目的地に移動を続けます。
REDIRECT_AND_CONTINUE_ON_PRE_ARRIVAL - AGVは中間目的地に事前に到着した後で、最終目的地に移動を続けます(減速して停止しません)。

説明

指定されたモードに応じて、AGVを新しい目的地にリダイレクトします。

agv.redirect(newDest, REDIRECT_AS_FINAL);
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.startRecharge()

double startRecharge( )

戻り値

double 充電の完了にかかる時間

説明

AGVのバッテリーの充電を開始します。

AGVタイプで定義されたレートでバッテリーを充電します。バッテリーの充電が完了すると、充電動作は停止します。
削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV.uncoupleTrain()

uncoupleTrain( treenode trailer , treenode newDriver = 0 )

パラメータ

trailer 輸送列から結合を解除されるトレーラーです。
newDriver 新しい「ドライバ」AGVになるオブジェクトです。このオブジェクトにAGVインスタンスがまだ関連付けられていない場合、AGVが作成されます。newDriverがパラメータとして渡されていないか、0である場合、最初のトレーラーパラメータが新しいドライバになります。

新しいドライバがTaskExecuterでない場合、そのドライバはパスネットワーク上のAGV輸送列の場所を保存するAGVデータだけを格納します。TaskExecuterとは異なり、オブジェクト移動タスクを付与することはできません。

説明

このAGVからトレーラーの輸送列をデタッチし、独立したAGV輸送列を作成します。

AGV(current).uncoupleTrain(AGV(current).trailers[1].object);

このメソッドをcoupleTrain()と組み合わせて使用すると、操車場における車両の連結と非連結をシミュレートすることができます。

削除を行わないでください。doc.flexsim.comのアンカーが修正されます。

AGV コンストラクター

AGV( treenode te )

パラメータ

te AGVネットワークにAGV移動者として接続されるTaskExecuterです。

戻り値

AGV AGVオブジェクト

説明

指定したTaskExecuterに基づいて、AGVオブジェクトを構築します。

AGVオブジェクトは、このメソッドの呼び出しでのみアクセスできます。ツリーノードからキャストするのは正しくありません。
AGV agv = AGV(te); // correct
AGV agv = te; // incorrect