返回主站|会员中心|保存桌面

尼得科(nidec)服务商    

尼得科变频器,电机

新闻分类
  • 暂无分类
站内搜索
 
友情链接
  • 暂无链接
首页 > 新闻中心 > 欧母龙PLC气缸顺序控制功能块!
新闻中心
欧母龙PLC气缸顺序控制功能块!
发布时间:2025-09-27        浏览次数:10        返回列表

在欧姆龙 PLC(如 NJ/NX 系列)中,可通过结构化文本(ST)或梯形图创建气缸顺序控制功能块(FB),实现气缸的顺序控制。以下是一个通用的气缸顺序控制功能块设计,支持单动 / 自动模式、手动干预、故障报警等功能:

气缸顺序控制功能块(FB)设计

功能块定义(输入 / 输出接口)

类型变量名数据类型说明
输入AutoModeBOOL自动模式(TRUE = 自动,FALSE = 手动)
输入StartBOOL启动信号(上升沿触发)
输入StopBOOL停止信号(TRUE = 紧急停止)
输入Cylinder1_SensorBOOL气缸 1 到位传感器(TRUE = 到位)
输入Cylinder2_SensorBOOL气缸 2 到位传感器(TRUE = 到位)
输入Cylinder3_SensorBOOL气缸 3 到位传感器(TRUE = 到位)
输出Cylinder1_OutBOOL气缸 1 伸出信号(TRUE = 伸出)
输出Cylinder1_RetractBOOL气缸 1 缩回信号(TRUE = 缩回)
输出Cylinder2_OutBOOL气缸 2 伸出信号(TRUE = 伸出)
输出Cylinder2_RetractBOOL气缸 2 缩回信号(TRUE = 缩回)
输出Cylinder3_OutBOOL气缸 3 伸出信号(TRUE = 伸出)
输出Cylinder3_RetractBOOL气缸 3 缩回信号(TRUE = 缩回)
输出RunningBOOL运行中标志
输出CompleteBOOL周期完成标志
输出AlarmBOOL报警标志(如超时未到位)
内部StepINT步骤计数器(0 = 初始,1~5 = 顺序步骤)
内部Timer1TON气缸 1 动作超时定时器
内部Timer2TON气缸 2 动作超时定时器
内部Timer3TON气缸 3 动作超时定时器

ST 语言实现代码(功能块逻辑)

欧姆龙PLC气缸顺序控制功能块

V1

创建时间:19:18

功能块关键逻辑说明

  1. 模式切换

    • 自动模式(AutoMode=TRUE):按预设步骤(气缸 1→气缸 2→气缸 3 伸出,延迟后依次缩回)自动运行,通过Start信号触发。

    • 手动模式(AutoMode=FALSE):可单独控制每个气缸的伸缩(示例中关联StartStop按钮,实际可扩展为独立按钮)。

  2. 安全机制

    • 超时检测:每个气缸动作设置超时定时器(默认 5 秒),未到位则触发Alarm报警并停止。

    • 紧急停止:Stop信号触发时,所有气缸立即缩回,步骤复位。

  3. 状态反馈

    • Running:指示自动运行中。

    • Complete:一个完整周期结束后置位。

    • Alarm:超时或故障时报警(可关联蜂鸣器或指示灯)。

使用方法与扩展

  1. 调用示例:在主程序中实例化功能块,关联实际 I/O 点:

  2. st

FUNCTION_BLOCK CylinderSequence

VAR_INPUT

    AutoMode: BOOL;             // 自动模式切换

    Start: BOOL;                // 启动信号

    Stop: BOOL;                 // 停止信号

    Cylinder1_Sensor: BOOL;     // 气缸1到位检测

    Cylinder2_Sensor: BOOL;     // 气缸2到位检测

    Cylinder3_Sensor: BOOL;     // 气缸3到位检测

END_VAR


VAR_OUTPUT

    Cylinder1_Out: BOOL;        // 气缸1伸出

    Cylinder1_Retract: BOOL;    // 气缸1缩回

    Cylinder2_Out: BOOL;        // 气缸2伸出

    Cylinder2_Retract: BOOL;    // 气缸2缩回

    Cylinder3_Out: BOOL;        // 气缸3伸出

    Cylinder3_Retract: BOOL;    // 气缸3缩回

    Running: BOOL;              // 运行中

    Complete: BOOL;             // 完成标志

    Alarm: BOOL;                // 报警标志

END_VAR


VAR

    Step: INT := 0;             // 步骤计数器

    StartEdge: BOOL;            // 启动上升沿检测

    StartPrev: BOOL;            // 启动信号前值

    Timer1: TON;                // 气缸1超时定时器

    Timer2: TON;                // 气缸2超时定时器

    Timer3: TON;                // 气缸3超时定时器

    Timeout: TIME := T#5S;      // 超时时间(可参数化)

END_VAR


// 上升沿检测(启动信号)

StartEdge := Start AND NOT StartPrev;

StartPrev := Start;


// 紧急停止处理

IF Stop THEN

    Step := 0;

    Running := FALSE;

    Complete := FALSE;

    Alarm := FALSE;

    // 所有气缸缩回

    Cylinder1_Out := FALSE;

    Cylinder1_Retract := TRUE;

    Cylinder2_Out := FALSE;

    Cylinder2_Retract := TRUE;

    Cylinder3_Out := FALSE;

    Cylinder3_Retract := TRUE;

    RETURN;

END_IF


// 自动模式逻辑

IF AutoMode THEN

    CASE Step OF

        0:  // 初始状态(所有气缸缩回)

            Cylinder1_Out := FALSE;

            Cylinder1_Retract := TRUE;

            Cylinder2_Out := FALSE;

            Cylinder2_Retract := TRUE;

            Cylinder3_Out := FALSE;

            Cylinder3_Retract := TRUE;

            Running := FALSE;

            Complete := FALSE;

            Alarm := FALSE;

            // 启动信号触发第一步

            IF StartEdge THEN

                Step := 1;

                Running := TRUE;

            END_IF;


        1:  // 气缸1伸出

            Cylinder1_Out := TRUE;

            Cylinder1_Retract := FALSE;

            Timer1(IN:=TRUE, PT:=Timeout);  // 启动超时计时

            // 到位或超时

            IF Cylinder1_Sensor THEN

                Timer1(IN:=FALSE);

                Step := 2;

            ELSIF Timer1.Q THEN  // 超时报警

                Alarm := TRUE;

                Step := 0;

            END_IF;

    Running := FALSE;

    Complete := FALSE;

    // 手动控制气缸1(点动示例)

    Cylinder1_Out := Start AND NOT Cylinder1_Sensor;  // 启动信号控制伸出

    Cylinder1_Retract := Stop AND Cylinder1_Sensor;   // 停止信号控制缩回

    // 手动控制气缸2(同理,可扩展)

    Cylinder2_Out := FALSE;  // 实际应用中可关联其他手动按钮

    Cylinder2_Retract := FALSE;

    Cylinder3_Out := FALSE;

    Cylinder3_Retract := FALSE;

END_IF;

END_FUNCTION_BLOCK

  1. PROGRAM Main
    VAR
        CylSeq: CylinderSequence;  // 实例化气缸控制功能块
        // 实际I/O映射(根据硬件配置修改)
        AutoMode_Switch: BOOL AT %IX0.0;  // 自动模式开关
        Start_Button: BOOL AT %IX0.1;     // 启动按钮
        Stop_Button: BOOL AT %IX0.2;      // 停止按钮
        Cyl1_Sensor: BOOL AT %IX1.0;      // 气缸1传感器
        Cyl2_Sensor: BOOL AT %IX1.1;      // 气缸2传感器
        Cyl3_Sensor: BOOL AT %IX1.2;      // 气缸3传感器
        Cyl1_Out: BOOL AT %QX0.0;         // 气缸1伸出输出
        Cyl1_Retract: BOOL AT %QX0.1;     // 气缸1缩回输出
        // ... 其他输出映射
    END_VAR
    
    // 功能块调用
    CylSeq(
        AutoMode := AutoMode_Switch,
        Start := Start_Button,
        Stop := Stop_Button,
        Cylinder1_Sensor := Cyl1_Sensor,
        Cylinder2_Sensor := Cyl2_Sensor,
        Cylinder3_Sensor := Cyl3_Sensor,
        Cylinder1_Out := Cyl1_Out,
        Cylinder1_Retract := Cyl1_Retract,
        // ... 其他输出赋值
    );
  2. 扩展建议

    • 增加步骤参数化:通过变量设置每个步骤的延迟时间、动作顺序,提高灵活性。

    • 多模式支持:添加单步模式(按一次Start执行一个步骤),方便调试。

    • 报警细化:区分气缸 1 超时、气缸 2 超时等具体故障,通过AlarmCode输出。

注意事项

  • 气缸传感器需正确接线(通常为接近开关,TRUE表示到位),并注意 NPN/PNP 类型匹配。

  • 输出信号需通过继电器或电磁阀驱动气缸,避免 PLC 直接带载。

  • 超时时间(Timeout)应根据实际气缸动作速度设置(一般为正常动作时间的 2~3 倍)。

该功能块可直接用于欧姆龙 NJ/NX 系列 PLC,通过结构化设计提高代码复用性和维护性,适合多气缸协同工作的自动化场景(如装配线、包装机)。

收缩
  • QQ咨询

  • 电话咨询

  • 18520143666
  • 添加微信客服