尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

西门子PLC程序模板:气缸功能块 FB_AirCylinder 实战拆解

西门子PLC程序模板:气缸功能块 FB_AirCylinder 实战拆解
📅 发布时间:2026/7/6 13:35:48

西门子PLC程序模板:气缸功能块 FB_AirCylinder 实战拆解

邓工 · 2026-07-04 · #西门子PLC #S7-1500 #FB_AirCylinder #气缸功能块 #TIA Portal

所有气缸统一调用FB_AirCylinder(FB6020,归属 03Valve 功能段)。标准化封装优点:接口固定、逻辑复用、维护集中、跨项目拷贝。

层级划分:UNIT(工站)→EM(设备模块)→CM(控制模块)。FB_AirCylinder 属于 CM 层,ST_AirCylinder结构体传 Cmd/Sts,上层只管调。


一、接口一览

方向变量说明
InputManual_Auto手自动切换
Switch_Initial缩回传感器
Switch_Target伸出传感器
Switch_Initial_Disable缩回传感器屏蔽
Switch_Target_Disable伸出传感器屏蔽
超时报警时间动作最大允许时间
信号消抖时间传感器消抖时长
原位动作时间缩回定时(屏蔽时用)
限位动作时间伸出定时(屏蔽时用)
调试模式启用后手动直接映射IO
OutputSolenoid_Target伸出电磁阀
Solenoid_Initial缩回电磁阀
InOutAirCylinderST_AirCylinder 结构体

二、ST_AirCylinder 结构体

Cmd 和 Sts 严格分开,HMI 写 Cmd,程序读 Sts,不混。

成员说明
xCmdSafety / xCmdReset安全信号 / 复位
xCmdAutoInitial / xCmdAutoTarget自动模式:缩回 / 伸出
xCmdManualInitial / xCmdManualTarget手动模式:缩回 / 伸出
xStsInitialDone / xStsTargetDone缩回完成 / 伸出完成
xStsErrorInitial / xStsErrorTarget缩回报警 / 伸出报警

三、6 个关键设计

  1. 手自动分离:Manual_Auto 选择命令源,自动只响应 xCmdAuto,手动只响应 xCmdManual,互不干扰
  2. 命令自复位:检测上升沿 → 驱动电磁阀 → 到位或超时后自动关输出,电磁阀不长期带电
  3. 到位消抖:传感器稳定到位超过设定时间才置位完成信号,机械振动误信号不触发
  4. 传感器屏蔽:Switch_Disable 使能时按动作时间定时控制,不等传感器反馈。部分工站无传感器时屏蔽位常真,调用接口不变
  5. 超时报警:命令发出超设定时间未到位 → 置位 xStsError + 自动关闭电磁阀
  6. 调试模式直接映射 IO:调试打开后手动命令直接走电磁阀,绕过消抖和互锁

四、多重背景 DB + 块调用

所有气缸实例集中放DB_AirCylinder(DB3040),多重背景 DB,按工艺命名:

D001_取托盘升降气缸 D001_取托盘横移气缸 D001_托盘进料阻挡气缸 D002_取料吸盘·旋转气缸 ...

IO 只出现在块调用,FB 内部不引用 IO 地址。IO 变化无需改 FB 源码,跨项目接口兼容直接复用。

块调用参数

FB: FB_AirCylinder Instance: 取托盘升降气缸-1 Manual_Auto := %I0.2 // 手自动切换 Switch_Initial := %I0.7 // 缩回传感器 Switch_Target := %I1.0 // 伸出传感器 Switch_Initial_Disable := FALSE // 缩回传感器屏蔽 Switch_Target_Disable := FALSE // 伸出传感器屏蔽 超时报警时间 := T#6000ms // 动作最大允许时间 信号消抖时间 := T#10ms // 传感器消抖时长 原位动作时间 := T#6000ms // 缩回定时(屏蔽时用) 限位动作时间 := T#6000ms // 伸出定时(屏蔽时用) 调试模式 := FALSE // 启用后手动直接映射IO Solenoid_Target := Q_升降气缸_伸出 // 伸出电磁阀 Solenoid_Initial := Q_升降气缸_缩回 // 缩回电磁阀 AirCylinder := DB_AirCylinder.取托盘升降气缸

五、HMI 映射

结构体统一,HMI 不需要为每个气缸单独建变量:

指示灯动画绑定:DB_AirCylinder.气缸名_xStsTargetDone 按钮按下事件: DB_AirCylinder.气缸名_xCmdManualTarget

HMI 工程师记住一个 DB 命名规则,所有气缸画面复制改实例名即可。


六、并行开发流程

IO 表定了 → 硬件接线 + 写程序同步进行:

  1. 电气出 IO 地址分配表
  2. 程序员按 FB 接口对 IO 地址
  3. 联调时两边基本同步

**前提:**FB 接口必须提前定好,定好就别改。新需求加新 FB,不加老接口。


七、要点总结

FB 接口完善冗余是首要的。参数宁可多不可少,接口定好就不改。内部逻辑可以逐步完善,接口变了影响全局。


完整 SCL 源码

(* ================================================================= FB 名称:FB_AirCylinder 功能描述:双作用气缸通用控制块 - 手动/自动双模式,原位/限位双方向 - 到位信号消抖 + 动作超时报警 - 调试模式跳过定时器,直接读传感器 - 命令自复位 + 默认安全值 作者:邓工 适用平台:西门子 S7-1200/1500(TIA Portal) ================================================================= *) //========================== 1. 手动模式 ========================== IF #AirCylinder.xCmdManualInitial AND NOT #AirCylinder.xCmdManualTarget AND #AirCylinder.xCmdSafety AND NOT #Manual_Auto THEN #Solenoid_Initial := TRUE; #Solenoid_Target := FALSE; END_IF; IF #AirCylinder.xCmdManualTarget AND NOT #AirCylinder.xCmdManualInitial AND #AirCylinder.xCmdSafety AND NOT #Manual_Auto THEN #Solenoid_Initial := FALSE; #Solenoid_Target := TRUE; END_IF; //========================== 2. 自动模式 ========================== IF #AirCylinder.xCmdAutoInitial AND NOT #AirCylinder.xCmdAutoTarget AND #AirCylinder.xCmdSafety AND #Manual_Auto THEN #Solenoid_Initial := TRUE; #Solenoid_Target := FALSE; #AirCylinder.xCmdAutoInitial := FALSE; END_IF; IF #AirCylinder.xCmdAutoTarget AND NOT #AirCylinder.xCmdAutoInitial AND #AirCylinder.xCmdSafety AND #Manual_Auto THEN #Solenoid_Initial := FALSE; #Solenoid_Target := TRUE; #AirCylinder.xCmdAutoTarget := FALSE; END_IF; //========================== 3. 到位检测 ========================== IF #调试模式 = FALSE THEN #Time[0](IN := #Solenoid_Initial AND ((#Switch_Target_Disable = FALSE AND NOT #Switch_Target) OR #Switch_Target_Disable = TRUE), PT := #原位动作时间); #Time[1](IN := (#Switch_Initial_Disable = FALSE AND #Switch_Initial) OR (#Switch_Initial_Disable = TRUE AND #Time[0].Q), PT := #信号消抖时间); #AirCylinder.xStsInitialDone := #Time[1].Q; #Time[2](IN := #Solenoid_Target AND ((#Switch_Initial_Disable = FALSE AND NOT #Switch_Initial) OR #Switch_Initial_Disable = TRUE), PT := #限位动作时间); #Time[3](IN := (#Switch_Target_Disable = FALSE AND #Switch_Target) OR (#Switch_Target_Disable = TRUE AND #Time[2].Q), PT := #信号消抖时间); #AirCylinder.xStsTargetDone := #Time[3].Q; END_IF; IF #调试模式 = TRUE THEN #AirCylinder.xStsInitialDone := #Switch_Initial; #AirCylinder.xStsTargetDone := #Switch_Target; END_IF; //========================== 4. 超时报警 ========================== IF #调试模式 = FALSE THEN #Time[4](IN := #Solenoid_Initial AND #AirCylinder.xStsInitialDone = FALSE, PT := #超时报警时间); #AirCylinder."xStsErrorInitial(缩回报警)" := #Time[4].Q; #Time[5](IN := #Solenoid_Target AND #AirCylinder.xStsTargetDone = FALSE, PT := #超时报警时间); #AirCylinder."xStsErrorTarget(伸出报警)" := #Time[5].Q; END_IF; //========================== 5. 命令自复位 ========================== #Time[10](IN := #AirCylinder.xCmdAutoInitial OR #AirCylinder.xCmdAutoTarget OR #AirCylinder.xCmdManualInitial OR #AirCylinder.xCmdManualTarget, PT := T#10ms); IF #Time[10].Q THEN #AirCylinder.xCmdAutoInitial := FALSE; #AirCylinder.xCmdAutoTarget := FALSE; #AirCylinder.xCmdManualInitial := FALSE; #AirCylinder.xCmdManualTarget := FALSE; END_IF; //========================== 6. 默认安全值 ========================== #AirCylinder.xCmdSafety := TRUE;

作者:邓工
项目:多工站自动装配线
控制平台:西门子 S7-1514SP-2 PN + TIA Portal

相关新闻

  • AI时代程序员必备技能:从“写代码”到“指挥AI”,让工具接管脏活累活
  • 为什么选择openEuler/ci-bot?5大核心优势助力开源项目高效协作
  • Agent 记忆长期化:从短期上下文到持久知识库的架构设计

最新新闻

  • Vision Transformer (ViT) 代码实现详解:从 Patch Embedding 到 MLP Head 的 5 个关键模块
  • 【关注可白嫖源码】--springboot小区物业管理系统[编号:project36977](案例分析)
  • 精确计时系统:CS2200-CP与PIC18F47Q10的硬件设计与软件优化
  • kail_dnn_adapter部署实战:在生产环境中集成鲲鹏AI算子库的最佳实践
  • Spring AI 2.0
  • ARM Cortex-M 体系结构深度解析——寄存器模型、处理器模式、AAPCS 与异常模型

日新闻

  • AI智能体安全防护框架AgentGuard:从原理到实战部署指南
  • KMX63与PIC18F26K40硬件组合及低功耗设计实践
  • 基于YOLO13改进的门体检测模型:C3k2模块与PoolingFormer技术解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号