XScript マニュアル · Chapter 11
Cylinder — シリンダ制御オブジェクト
CYL["名前"] でアクセスする空圧/油圧シリンダ制御オブジェクトです。Cylinder Editor で
Action A / Action B のソレノイド・センサを登録すると、スクリプトから意味的なメソッド
(Up/Down、Forward/Backward、Clamp/UnClamp …)で呼び出せます。
基本例
xscript
if (CYL["Cyl_InStopper"].Push(true) == false)
{
// ERROR — センサチェック失敗
}
else
{
// SUCCESS
}
if (CYL["Cyl_InStopper"].Pull(true) == false)
{
// ERROR
}実践例 — パネルクランプシーケンス
Gaon Stage.xms から抽出した実際のコード。Post Pin ダウン → パネルクランプ → Vac 吸着
→ Spindle Fix 解除の順序によるインターロック処理パターンです。
xscript
FUNCTION PanelClamp()
{
if (IO["I_PanelClampL"] && IO["I_PanelClampR"]
&& IO["I_PostPinDownF"] && IO["I_PostPinDownR"])
{
DeviceClampCompleteFlag = true;
return true;
}
if (CYL["Cyl_PostPin"].Down(true) == false)
{
CYL["Cyl_PostPin"].ShowCylinderError(ModuleName);
return false;
}
Sleep(100);
if (CYL["Cyl_PanelClamp"].Clamp(true) == false)
{
CYL["Cyl_SpindleFix"].ShowCylinderError(ModuleName);
return false;
}
Sleep(SS.ClampAfterDelay);
if (SS.UseStageVac)
{
if (CYL["Cyl_StageVac"].Suck(true) == false)
{
CYL["Cyl_StageVac"].Off();
CYL["Cyl_PanelClamp"].UnClamp(true);
ShowError(EB_Reset, 208, "");
return false;
}
}
// Fix シリンダ後進
if (CYL["Cyl_SpindleFix"].Backward(true) == false)
{
CYL["Cyl_SpindleFix"].ShowCylinderError(ModuleName);
return false;
}
DeviceClampCompleteFlag = true;
return true;
}アクションメソッド
すべてのアクションメソッドは共通規則に従います。
wait == trueのときセンサチェック完了まで待機。1 つでもオフであればfalseを返します。wait == falseのときソレノイドのみ出力して即座に返します。
Action A / Action B(意味のペア)
| A 動作 | B 動作 | 用途 |
|---|---|---|
Open(wait) | Close(wait) | 開閉 |
Up(wait) | Down(wait) | 上昇・下降 |
Left(wait) | Right(wait) | 左右 |
Forward(wait) | Backward(wait) | 前後進 |
Lock(wait) | Unlock(wait) | ロック |
Suck(wait) | Eject(wait) | 吸着・排出 |
Push(wait) | Pull(wait) | 押し・引き |
Clamp(wait) | UnClamp(wait) | クランプ |
Turn(wait) | Return(wait) | 回転・復帰 |
Pass(wait) | — | 通過(単一方向) |
Toggle(wait) | — | 現在状態を反転 |
その他
| シグネチャ | 説明 |
|---|---|
bool Stop(bool wait) | 中立停止 |
bool Off(void) | 出力 OFF(センサチェックなし) |
bool ReadSensorA(void) / bool ReadSensorB(void) | 現在のセンサ状態 |
プロパティ
| プロパティ | 説明 |
|---|---|
Name / Description / GroupName | メタ情報 |
TimeOutA / TimeOutB | センサチェックタイムアウト(ms) |
DelayA / DelayB | 動作後の遅延(ms) |
SubModel | シリンダサブモデル |
SolIndexA1..A4 / SolIndexB1..B4 | ソレノイドインデックス |
SensorIndexA1..A4 / SensorIndexB1..B4 | センサインデックス |
SolListA / SolListB / SensorListA / SensorListB | ソレノイド/センサ名前リスト |
Info | 現在状態の文字列(ログ用) |
ActionA / ActionB | A/B アクションラベル |
エラー表示
エラーダイアログは ShowCylinderError() ユーティリティを使用すると、シリンダ名・センサ状態・
タイムアウト値を自動構成して表示します。
xscript
if (CYL["Cyl_PanelClamp"].Clamp(true) == false)
{
CYL["Cyl_PanelClamp"].ShowCylinderError(ModuleName);
return false;
}ヒント
- 空圧系はセンサ位置の公差が大きいため、
TimeOutA/Bを余裕をもって(デフォルト 1500 ms+)設定します。 - 連続動作の間には
Sleep(100~200)で圧力安定化の余裕を持たせます。 - 同一シリンダに対して A/B を連続呼び出しする際、センサの重複状態が解けるまで待機が必要な場合は
Off()で中立にしてから反対方向を呼び出します。