XScript 매뉴얼 · Chapter 22
title: "DEVICE — 디바이스(용기) 객체" chapter: 22
DEVICE — 디바이스(용기) 객체
DEVICE["컨테이너이름"] 또는 DEVICE["컨테이너이름", index] 로 접근합니다.
라인에 흐르는 용기(그릇·트레이·카세트·PCB 등) 의 상태·ID·정렬 결과를 들고
다니는 데이터 객체로, 스크립트가 자재 추적·주문 번호 관리에 사용합니다.
기본 예제
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 로 데이터를 함께 옮깁니다.
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.