XScript マニュアル · Chapter 2

言語の基本

XScript のプログラムは 4 つの構成要素からなります。

要素説明
Variableグローバル/ローカル変数。装置状態・カウント・フラグなどを保持
Function再利用可能なロジック単位
Sequence状態遷移の単位。メインシーケンスから順次実行
StepSequence 内部の細分ステップ

サポート型

説明
int · long整数
double浮動小数
booltrue/false(または ON/OFF)
string文字列。補間 $"Hello {name}" をサポート
array動的配列

変数

グローバル変数は Variable エディタ、ローカル変数は関数内で宣言します。開きカッコは必ず次の行

xscript
int count = 0;
bool initOk = false;
double targetPos = 100.0;
string jobName = "default";
 
// モジュール変数アクセス
MachineLoaded = false;
SS.UnitCount = 10;        // セットアップパラメータ
SYS.DateString;           // システム値

定数

定数は DATA.Const または Constant Editor で宣言し、グローバルに読み取り専用で参照します。

xscript
// 例: MAX_NUM_UNIT, DEVICE_NAME, SUPPLY_STEP などが定数登録される
int n = MAX_NUM_UNIT;
string name = DEVICE_NAME;

関数

FUNCTION キーワードで宣言。開きカッコは次の行。

xscript
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)/*...*/ は可読性のためのラベルコメントで、名前でバインドされるわけではありません。

Sequence と Step

Sequence はメインループから繰り返し実行されるブロック、Step は内部状態です。 goto "STEP_名前" で次のステップへ遷移します。

SEQUENCE SeqSTEP_Idle待機 · データ更新STEP_WaitOrderセンサ ON 待ちSTEP_Get材料受け取りunitIndex > 0 のとき STEP_Get に直接ジャンプ各 STEP は独立した関数のように実行。return false で現在ループ終了、goto で次ステップへ。
xscript
////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";  // 2 つ目以降はそのまま受け取りへ
}
 
////STEP,STEP_WaitOrder
Sleep(200);
 
if (IO[cnvSensorName].CheckContiOn(2000) == false)   // 即時チェック:直近 2 秒間ずっと ON か(待機ではない)
{
    return false;
}
 
UnitData::UnitStatus[unitIndex] = "受注待ち";
 
if (ProcessOrder() == false)
{
    return false;
}
 
////STEP,STEP_Get
// ... 受け取り動作
  • 各ステップは独立した関数のように実行され、return false で現在のループを終了。
  • goto "STEP_名前" で次ステップへジャンプ。次のループでそのステップから開始。
  • モジュール変数(例: unitIndex)はステップ間で保持されます。

View モジュール構成

画面(View)モジュールは Design / Variable / Functions の 3 つで構成:

  • Design — XAML レイアウト
  • Variable — 画面バインディング用変数
  • FunctionsOnShow, OnHide, OnTimer, OnClickEvent などのイベントハンドラ
xscript
FUNCTION OnShow(string sender, int tag, array params)
{
    UpdateOrderDisplay();
    ViewSetup::UpdateUnitList();
}
 
FUNCTION OnTimer(string sender, int tag, array params)
{
    UpdateOrderDisplay();
    count++;
}