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 时,等待至传感器检查完成。只要有一个未接通即返回 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() 置于中立后再调用反方向。