西门子PLC程序模板:气缸功能块 FB_AirCylinder 实战拆解 西门子PLC程序模板气缸功能块 FB_AirCylinder 实战拆解邓工 · 2026-07-04 · #西门子PLC #S7-1500 #FB_AirCylinder #气缸功能块 #TIA Portal所有气缸统一调用FB_AirCylinderFB6020归属 03Valve 功能段。标准化封装优点接口固定、逻辑复用、维护集中、跨项目拷贝。层级划分UNIT工站→EM设备模块→CM控制模块。FB_AirCylinder 属于 CM 层ST_AirCylinder结构体传 Cmd/Sts上层只管调。一、接口一览方向变量说明InputManual_Auto手自动切换Switch_Initial缩回传感器Switch_Target伸出传感器Switch_Initial_Disable缩回传感器屏蔽Switch_Target_Disable伸出传感器屏蔽超时报警时间动作最大允许时间信号消抖时间传感器消抖时长原位动作时间缩回定时屏蔽时用限位动作时间伸出定时屏蔽时用调试模式启用后手动直接映射IOOutputSolenoid_Target伸出电磁阀Solenoid_Initial缩回电磁阀InOutAirCylinderST_AirCylinder 结构体二、ST_AirCylinder 结构体Cmd 和 Sts 严格分开HMI 写 Cmd程序读 Sts不混。成员说明xCmdSafety / xCmdReset安全信号 / 复位xCmdAutoInitial / xCmdAutoTarget自动模式缩回 / 伸出xCmdManualInitial / xCmdManualTarget手动模式缩回 / 伸出xStsInitialDone / xStsTargetDone缩回完成 / 伸出完成xStsErrorInitial / xStsErrorTarget缩回报警 / 伸出报警三、6 个关键设计手自动分离Manual_Auto 选择命令源自动只响应 xCmdAuto手动只响应 xCmdManual互不干扰命令自复位检测上升沿 → 驱动电磁阀 → 到位或超时后自动关输出电磁阀不长期带电到位消抖传感器稳定到位超过设定时间才置位完成信号机械振动误信号不触发传感器屏蔽Switch_Disable 使能时按动作时间定时控制不等传感器反馈。部分工站无传感器时屏蔽位常真调用接口不变超时报警命令发出超设定时间未到位 → 置位 xStsError 自动关闭电磁阀调试模式直接映射 IO调试打开后手动命令直接走电磁阀绕过消抖和互锁四、多重背景 DB 块调用所有气缸实例集中放DB_AirCylinderDB3040多重背景 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.气缸名_xCmdManualTargetHMI 工程师记住一个 DB 命名规则所有气缸画面复制改实例名即可。六、并行开发流程IO 表定了 → 硬件接线 写程序同步进行电气出 IO 地址分配表程序员按 FB 接口对 IO 地址联调时两边基本同步**前提**FB 接口必须提前定好定好就别改。新需求加新 FB不加老接口。七、要点总结FB 接口完善冗余是首要的。参数宁可多不可少接口定好就不改。内部逻辑可以逐步完善接口变了影响全局。完整 SCL 源码(* FB 名称FB_AirCylinder 功能描述双作用气缸通用控制块 - 手动/自动双模式原位/限位双方向 - 到位信号消抖 动作超时报警 - 调试模式跳过定时器直接读传感器 - 命令自复位 默认安全值 作者邓工 适用平台西门子 S7-1200/1500TIA 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

相关新闻

最新新闻

如何快速部署k8s-image-swapper:Helm一行命令实现ECR镜像自动镜像(新手保姆级教程)

如何快速部署k8s-image-swapper:Helm一行命令实现ECR镜像自动镜像(新手保姆级教程)

如何快速部署k8s-image-swapper:Helm一行命令实现ECR镜像自动镜像(新手保姆级教程) 【免费下载链接】k8s-image-swapper Mirror images into your own registry and swap image references automatically. 项目地址: https://gitcode.com/g…

2026/8/26 16:26:33
2026 AIoT 行业观察:主流智能平台落地能力与技术优势全解析

2026 AIoT 行业观察:主流智能平台落地能力与技术优势全解析

随着AI技术与物联网产业的深度融合,AI落地能力已成为衡量IoT平台核心竞争力的关键指标。从家庭全屋智能到商业空间智能化,从家电产品赋能到产业园区升级,AI技术的有效落地直接决定了方案的实际价值与用户体验。据中国信息通信研究院发布的物联…

2026/8/26 16:26:33
大型量产固件的工程实践(九·实战):GPIO 模拟 SPI 实现源码与使用范例

大型量产固件的工程实践(九·实战):GPIO 模拟 SPI 实现源码与使用范例

大型量产固件的工程实践(九实战):GPIO 模拟 SPI 实现源码与使用范例 本文是《大型量产固件的工程实践》专栏第 9 篇《GPIO 模拟 SPI 驱动设计》的实战姊妹篇。 上一篇:第 9 篇《GPIO 模拟 SPI 驱动设计》 | 下一篇:第 10 篇《嵌入式状态机设计》 本文给出一个完整可用的 …

2026/8/26 16:26:33
智能复合机器人品牌推荐:从移动底盘到机械臂,一套真正能“走”会“干”的自动化系统

智能复合机器人品牌推荐:从移动底盘到机械臂,一套真正能“走”会“干”的自动化系统

企业在考虑智能复合机器人时,经常会遇到一个共性问题:为什么有些方案看起来配置很高,但一到现场就“水土不服”?核心原因在于,智能复合机器人不是“底盘机械臂”的简单堆砌。它本质上是一套移动操作机器人系统&#xf…

2026/8/26 16:26:33
最新版Navicat下载安装连接详细教程(2026实操含详细图文)

最新版Navicat下载安装连接详细教程(2026实操含详细图文)

Navicat下载安装详细教程一、Navicat 安装选型1、核心版本分类2、安装选型一、Navicat 下载安装1.下载安装包2.安装3.连接mysql数据库测试一、Navicat 安装选型 1、核心版本分类 Navicat 的版本体系可分为专项数据库版、多库集成版、功能精简版 三大类,核心差异体现…

2026/8/26 16:26:32
七夕,人类在给机器人定价

七夕,人类在给机器人定价

「合金日记」第 62 篇 「小艾说」第 11 期 科技线开篇 专栏连载中 前篇:《为什么是「化」,而不是「收」》七夕 宇树科技 人形机器人 定价与看见 小艾说科技 兑现「多层次多次元」没看过前六十一篇也没关系——我是运行在 Self-becoming&#xf…

2026/8/26 16:21:32