一、PLC编程类别:
一、线性化编程(流程图形式)(简易单机设备)
优势:开发难度低,调试速度快
劣势:工作节拍慢,工作效率低
流水灯类型
二、功能化编程(数据块--工具)
优势:框架稳定;冗余效果好,产线效率特别好
劣势:开发难度大
二、块逻辑编程
一、FB封装的意义:
1. 多处地方需要重复使用
2. 便于观察
二、西门子 S7-1200 FB 变量类型对比
变量类型 | FB 外部访问 | FB 内部访问 | 变量特性 |
---|---|---|---|
<Input> | 可读可写 ✅(外部赋值) | 只读 ❌(内部不能修改) | 外部输入,FB 内部只能读取 |
<Output> | 只能读 ✅(外部读取) | 可读可写 ✅(内部可修改) | FB 内部计算后输出给外部 |
<InOut> | 可读可写 ✅(绑定关系) | 可读可写 ✅(内部可修改) | 外部变量绑定到 FB 内部,值会同步变化 |
<Static> | 可通过 FB 附带 DB 访问 ✅ | 可读可写 ✅ | 静态变量,值在 FB 内部存储,FB 外部可访问(通过 DB) |
三、西门子块类型对比
OB组织块;FB函数块;FC函数;DB数据块
FC做区域划分,FB做功能开发
一、技术层面的合理性分析
-
DB(数据块)->仓库
-
完全合理:数据块是PLC中唯一的数据存储载体,分为全局DB(共享仓库)和背景DB(专属仓库)。如配方数据存储在全局DB,而每个电机控制的运行参数存储在各自的背景DB。
-
FC(函数)->车间主任
-
部分合理:FC适合实现无状态操作(如标准化转换函数FC100:RealToInt),确实可用于模块化编程。但将其比作管理层需要注意:
优势:FC强制使用接口参数,适合创建标准工艺库(如报警处理FC)
局限:缺乏静态变量存储能力,不适合需要保持状态的功能(如设备控制)
-
FB(功能块)->具体技术员
-
高度契合:FB+背景DB的组合是面向对象编程的典型实现。例如包装机工位的FB10,每个实例(背景DB10、DB11...)独立维护自己的计数、状态等信息,完美匹配"技术员+专属工具箱"的比喻。
-
OB(组织块)->领导
-
条件合理:OB1主循环确实像CEO调度整个程序,但需要补充:
中断OB(如OB35循环中断)类似应急管理部门
错误处理OB(如OB80)相当于质量监督部门
启动OB(OB100)类似初始化流程的行政办公室
二、实际工程应用建议
-
架构设计规范:
-
采用FB封装设备控制(如FB_MotorControl)
-
使用FC实现工艺算法(如FC_PID_Control)
-
通过OB35实现精确周期控制(如1ms高速采集)
-
全局DB存储HMI交互数据,背景DB关联设备实例
-
性能优化案例:
-
某汽车焊接线使用FB+背景DB实现200个焊枪控制,内存占用减少40%
-
采用FC实现公共报警处理,代码复用率提升70%
-
扩展应用:
-
面向服务架构(SOA)中,FB可视为设备级微服务
-
通过FB的多背景实例实现柔性生产线的快速配置
三、常见误区警示
-
FC滥用陷阱:
-
某项目用FC实现电机控制,导致:
-
必须使用全局变量存储状态
-
出现多个电机状态互相覆盖
-
维护成本增加300%
-
-
DB管理误区:
-
背景DB未采用版本控制,导致:
-
设备参数在修改后异常
-
生产线停机2小时排查数据问题
-
总结:该比喻对初学者理解块类型有帮助,但实际开发应遵循:
-
FB为设备控制核心(占比60%-70%)
-
FC实现无状态服务(占比20%-30%)
-
OB构建执行框架(占比5%-10%)
-
DB严格按访问权限划分(背景DB禁止全局访问)
建议采用模块化设计规范:
-
设备层:FB+背景DB
-
工艺层:FC+全局DB
-
调度层:OB+时间中断
-
接口层:UDT(用户数据类型)保证数据一致性
这种架构可使代码复用率提升至85%以上,显著降低维护成本,特别适用于需要快速换型的智能制造场景。
四、架构解析
1. 设备层:FB+背景DB → 每个机器人都有自己的工具箱
-
FB就像工厂里的机器人(比如包装机器人、焊接机器人),每个机器人都有自己特别的本领。
-
背景DB是它们的专属工具箱。比如包装机器人用自己的工具箱装彩带和胶水,焊接机器人用另一个工具箱装焊枪和螺丝,不会拿错工具。
2. 工艺层:FC+全局DB → 全工厂都要遵守的规则
-
FC像是老师教大家的标准动作。比如所有机器人都要遵守"拿东西前先伸手"的动作(就像数学课学的1+1=2,谁算都一样)。
-
全局DB是工厂中央的大储物柜,所有机器人都能从这里拿公共材料,比如包装盒上的标签图案大家都用同一款。
3. 调度层:OB+时间中断 → 工厂的课程表
-
OB主程序就像校长制定的课程表:第一节数学课(让机器人算数),第二节手工课(让机器人包装礼物)。
-
时间中断像学校的上课铃,每到9点整,所有机器人都会停下手里的事,准时开始做广播体操(比如每隔1秒检查一次机器温度)。
4. 接口层:UDT → 全工厂统一的作业本格式
-
就像老师要求所有同学写作业时:
-
第一行写姓名(设备编号)
-
第二行写日期(运行时间)
-
第三行用蓝色笔写答案(温度数据)
-
-
这样所有机器人的"作业本"都长得一样,校长检查时一眼就能看懂每个机器人在做什么。
小总结:这个工厂就像我们班级一样,每个同学(FB)有自己的铅笔盒(背景DB),班长(FC)教大家统一解题方法,课程表(OB)告诉什么时候上什么课,所有作业本(UDT)都按相同格式写,整个班级就能整齐又有序地运行啦!