XScript 매뉴얼 · Chapter 2
title: "언어 기본 — 변수 · 함수 · 시퀀스 · 스텝" chapter: 2 images:
- xscript-variable.png
- xscript-function.png
언어 기본
XScript 프로그램은 네 가지 구성 요소로 이루어집니다.
| 요소 | 설명 |
|---|---|
| Variable | 전역/지역 변수. 장비 상태·카운트·플래그 등을 저장 |
| Function | 재사용 가능한 로직 단위 |
| Sequence | 상태 전이 단위. 메인 시퀀스에서 순차 실행 |
| Step | Sequence 내부의 세부 단계 |
캡처 대기
public/manual/gui/xscript-variable.png지원 타입
| 타입 | 설명 |
|---|---|
int · uint | 정수 |
double | 부동소수 |
bool | true/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).
캡처 대기
public/manual/gui/xscript-function.png시퀀스와 스텝
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 — 화면 바인딩용 변수
- Functions —
OnShow,OnHide,OnTimer,OnClickEvent등 이벤트 핸들러
FUNCTION OnShow(string sender, int tag, array params)
{
UpdateOrderDisplay();
ViewSetup::UpdateUnitList();
}
FUNCTION OnTimer(string sender, int tag, array params)
{
UpdateOrderDisplay();
count++;
}