XScript 매뉴얼 · Chapter 2

title: "언어 기본 — 변수 · 함수 · 시퀀스 · 스텝" chapter: 2 images:

  • xscript-variable.png
  • xscript-function.png

언어 기본

XScript 프로그램은 네 가지 구성 요소로 이루어집니다.

요소설명
Variable전역/지역 변수. 장비 상태·카운트·플래그 등을 저장
Function재사용 가능한 로직 단위
Sequence상태 전이 단위. 메인 시퀀스에서 순차 실행
StepSequence 내부의 세부 단계
Variable 탭에서 변수 선언

지원 타입

타입설명
int · uint정수
double부동소수
booltrue/false (또는 ON/OFF)
string문자열. 보간 지원 $"Hello {name}"
array동적 배열

변수

전역 변수는 Variable 에디터, 지역 변수는 함수 안에서 선언합니다. 여는 중괄호는 반드시 다음 줄.

int count = 0;
bool initOk = false;
double targetPos = 100.0;
string jobName = "default";
 
// 모듈 변수 접근
MachineLoaded = false;
SS.UnitCount = 10;        // 셋업 파라미터
SYS.DateString;           // 시스템 값

상수

상수는 DATA.Const 또는 Constant Editor 에서 선언하고 전역에서 읽기 전용으로 참조합니다.

// 예: MAX_NUM_UNIT, DEVICE_NAME, SUPPLY_STEP 등이 상수로 등록됨
int n = MAX_NUM_UNIT;
string name = DEVICE_NAME;

함수

FUNCTION 키워드로 선언. 여는 중괄호는 다음 줄.

FUNCTION CheckLoad()
{
    if (IO["LOAD_SENSOR"] == ON)
    {
        return true;
    }
    return false;
}
 
FUNCTION MoveToPos(double pos, bool wait)
{
    MOTOR["M_X"].SetSpeed("RUN");
    if (MOTOR["M_X"].MoveAbs(pos, wait) == false)
    {
        return false;
    }
    return true;
}
  • 반환형은 선언하지 않아도 자동 추론됩니다 (일반적으로 bool 반환 관례).
  • 파라미터는 이름 기준 호출 가능: MoveToPos(/*pos*/100.0, /*wait*/true).
Function 탭

시퀀스와 스텝

Sequence 는 메인 루프에서 반복 실행되는 블록이고, Step 은 내부 상태입니다. goto "STEP_이름" 으로 다음 스텝으로 전이.

////SEQUENCE,Seq
 
////STEP,STEP_Idle
UpdateData();
Sleep(100);
 
UnitData::UnitStatus[unitIndex] = "--";
 
if (unitIndex >= SS.UnitCount)
{
    Sleep(2000);
    return false;
}
 
if (unitIndex > 0)
{
    goto "STEP_Get";  // 두번째 이상 유닛은 바로 자재 받기로
}
 
////STEP,STEP_WaitOrder
Sleep(200);
 
if (IO[cnvSensorName].CheckContiOn(2000) == false)
{
    return false;
}
 
UnitData::UnitStatus[unitIndex] = "주문대기";
 
if (ProcessOrder() == false)
{
    return false;
}
 
////STEP,STEP_Get
// ... 받기 동작
  • 각 스텝은 독립된 함수처럼 실행되며, return false 로 현재 루프 종료.
  • goto "STEP_이름" 으로 다음 스텝으로 점프. 다음 루프에서 해당 스텝부터 시작.
  • 모듈 변수(예: unitIndex) 는 스텝 간에 유지됩니다.

View Module 구성

화면(View) 모듈은 Design / Variable / Functions 세 부분으로 구성:

  • Design — XAML 레이아웃
  • Variable — 화면 바인딩용 변수
  • FunctionsOnShow, OnHide, OnTimer, OnClickEvent 등 이벤트 핸들러
FUNCTION OnShow(string sender, int tag, array params)
{
    UpdateOrderDisplay();
    ViewSetup::UpdateUnitList();
}
 
FUNCTION OnTimer(string sender, int tag, array params)
{
    UpdateOrderDisplay();
    count++;
}