XScript マニュアル · Chapter 22

DEVICE — デバイス(容器)オブジェクト

DEVICE["コンテナ名"] または DEVICE["コンテナ名", index] でアクセスします。 ラインを流れる 容器(器 · トレイ · カセット · PCB など) の状態 · ID · 整列結果を 持ち回るデータオブジェクトで、スクリプトが資材追跡 · 注文番号管理に使用します。

基本例

xscript
if (DEVICE["INCV"].HaveDevice == true)
{
    Log("ID = {0}, RANK = {1}", DEVICE["INCV"].Id, DEVICE["INCV"].Rank);
    Log("Result X={0}, Y={1}, TH={2}",
        DEVICE["INCV"].AlignResultX,
        DEVICE["INCV"].AlignResultY,
        DEVICE["INCV"].AlignResultTh);
}
else
{
    DEVICEMGR.AddDevice("INCV");
 
    DEVICE["INCV"].Id = "INCV_ID";
    DEVICE["INCV"].Rank = 1;
    DEVICE["INCV"].AlignResultX = rx;
    DEVICE["INCV"].AlignResultY = ry;
    DEVICE["INCV"].AlignResultTh = rth;
}

実践例 — 注文情報の保管

コンテナごとに注文番号 · レシピ · 測定値を保管し、ユニット間の移動時に DEVICEMGR.MoveDevice でデータを一緒に移します。

xscript
DEVICEMGR.AddDevice(DEVICE_NAME, 0);
 
DEVICE[DEVICE_NAME, unitIndex].OrderNumber = orderNumber;
DEVICE[DEVICE_NAME, unitIndex].OrderItemNumber = orderItemId;
DEVICE[DEVICE_NAME, unitIndex].Recipe = recipe;
DEVICE[DEVICE_NAME, unitIndex].Measure = "";
DEVICE[DEVICE_NAME, unitIndex].Bincode = reorderNo;
 
if (DEVICE[DEVICE_NAME, unitIndex].HaveDevice == false)
{
    return false;
}
 
// 次のユニットへ注文を移動
DEVICEMGR.MoveDevice(DEVICE_NAME, unitIndex - 1, DEVICE_NAME, unitIndex);

メソッド

シグネチャ説明
string ToString()デバイス情報文字列

主なプロパティ

プロパティ説明
HaveDeviceboolコンテナにデバイスがあるか
Id / PartIdstringデバイス ID · パート ID
Rankint等級(不良分類など)
OrderNumber / OrderItemNumberstring注文 · 注文アイテム番号
Recipestringレシピ文字列
Measurestring測定結果の累積
BincodeintBin/再注文番号
AlignResultX / AlignResultY / AlignResultThdouble整列結果
EjectModebool排出モード

ヒント

  • HaveDevice をチェック → 無ければ DEVICEMGR.AddDevice で追加してからフィールドを設定。
  • 注文状態(Measure、OrderNumber、Recipe)は デバイスオブジェクトに保存 してユニットを 伝って流れるよう設計すると、インターフェースがシンプルになります。
  • 排出時は EjectMode = ON でマーキングした後、最後のユニットで RemoveDevice