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