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