XScript マニュアル · Chapter 11

Cylinder — シリンダ制御オブジェクト

CYL["名前"] でアクセスする空圧/油圧シリンダ制御オブジェクトです。Cylinder Editor で Action A / Action B のソレノイド・センサを登録すると、スクリプトから意味的なメソッド (Up/DownForward/BackwardClamp/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 / ActionBA/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() で中立にしてから反対方向を呼び出します。