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() | デバイス情報文字列 |
主なプロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
HaveDevice | bool | コンテナにデバイスがあるか |
Id / PartId | string | デバイス ID · パート ID |
Rank | int | 等級(不良分類など) |
OrderNumber / OrderItemNumber | string | 注文 · 注文アイテム番号 |
Recipe | string | レシピ文字列 |
Measure | string | 測定結果の累積 |
Bincode | int | Bin/再注文番号 |
AlignResultX / AlignResultY / AlignResultTh | double | 整列結果 |
EjectMode | bool | 排出モード |
ヒント
HaveDeviceをチェック → 無ければDEVICEMGR.AddDeviceで追加してからフィールドを設定。- 注文状態(Measure、OrderNumber、Recipe)は デバイスオブジェクトに保存 してユニットを 伝って流れるよう設計すると、インターフェースがシンプルになります。
- 排出時は
EjectMode = ONでマーキングした後、最後のユニットでRemoveDevice。