XScript マニュアル · Chapter 2
言語の基本
XScript のプログラムは 4 つの構成要素からなります。
| 要素 | 説明 |
|---|---|
| Variable | グローバル/ローカル変数。装置状態・カウント・フラグなどを保持 |
| Function | 再利用可能なロジック単位 |
| Sequence | 状態遷移の単位。メインシーケンスから順次実行 |
| Step | Sequence 内部の細分ステップ |
サポート型
| 型 | 説明 |
|---|---|
int · long | 整数 |
double | 浮動小数 |
bool | true/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_名前" で次のステップへ遷移します。
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 — 画面バインディング用変数
- Functions —
OnShow,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++;
}