XScript マニュアル · Chapter 3
title: "制御フロー — if / for / while" chapter: 3 images:
- xscript-control-flow.png
制御フロー
XScript は if・for・while の 3 つの基本制御構文をサポートします。文法は C# と同じで、
装置制御ロジックはほぼこの 3 つでカバーできます。
if
if (IO[START] == ON) {
Log.Add("start pressed");
}
else if (IO[RESET] == ON) {
Log.Add("reset pressed");
}
else {
// 待機
}よくあるパターン
- センサチェック —
if (Cylinder[LOADER].ReadSensorA() == true) - エラーガード —
if (Motor[X].GetEndStatus() != 0) ShowError("E100"); - フラグ判定 —
if (initOk == false) return false;
for
繰り返し回数が既知のとき。
for (int i = 0; i < 10; i++) {
Motor[X].MoveAbs(i * 10.0, true);
Sleep(100);
}while
条件が満たされるまで繰り返します。装置の待機ループで頻出。
int timeout = 0;
while (IO[READY] == OFF) {
Sleep(50);
timeout += 50;
if (timeout > 5000) {
ShowError("E_TIMEOUT");
return false;
}
}注意:
while(true)で無限ループを作るとスレッドが返らず、システムが停止する場合があります。 タイムアウトや中断条件を必ず入れてください。単純待機はWait()API を優先。
ヒント
- 本体は必ず
{ }で囲む — 後から行を足しやすい ShowError()の直後はreturn false— 上位 Step がエラーを検知できるように- 長い条件は複数行に分けてコメントを添える