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()디바이스 정보 문자열

주요 프로퍼티

프로퍼티타입설명
HaveDevicebool컨테이너에 디바이스가 있는지
Id / PartIdstring디바이스 ID · 파트 ID
Rankint등급 (불량 분류 등)
OrderNumber / OrderItemNumberstring주문·주문 아이템 번호
Recipestring레시피 문자열
Measurestring측정 결과 누적
BincodeintBin/재주문 번호
AlignResultX / AlignResultY / AlignResultThdouble정렬 결과
EjectModebool배출 모드

  • HaveDevice 체크 → 없으면 DEVICEMGR.AddDevice 로 추가 후 필드 설정.
  • 주문 상태(Measure, OrderNumber, Recipe)는 디바이스 객체에 저장 해 유닛을 타고 흘러가도록 설계하면 인터페이스가 단순.
  • 배출 시에는 EjectMode = ON 으로 마킹 후, 마지막 유닛에서 RemoveDevice.