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。