1 程序块的“四个家族”
TIA Portal中,用户程序由四种基本块构成,它们分工明确:
|
|
|
|
|
|---|---|---|---|
| OB |
|
|
|
| FC |
|
|
|
| FB |
|
|
|
| DB |
|
|
|
2 组织块(OB):程序的入口
OB1(主组织块) 是每个S7-1200/1500项目的灵魂。
它由操作系统在每个扫描周期自动调用一次。
若OB1不存在或为空,PLC不会执行任何用户程序。
除OB1外,S7-1200还支持多种事件驱动型OB:
循环中断OB(如OB30):固定时间间隔执行,用于PID调节、高速计数采样。
硬件中断OB(如OB40):输入信号上升/下降沿触发,响应时间微秒级。
错误OB(如OB80、OB82):当PLC检测到编程错误、模块故障时自动调用,可在此编写故障处理程序。
重要概念:高优先级OB可以中断低优先级OB。例如,循环中断OB30执行期间,若发生硬件中断,会暂停OB30先去执行OB40,执行完再返回OB30。
3 函数(FC):无记忆的逻辑盒
FC类似于高级语言中的函数。
它接收输入参数,执行逻辑,返回输出结果。
FC自身不保存数据,每次调用时,形参被赋值为实参的值,临时变量在调用结束后释放。
典型应用场景:
数学计算(如平均值、比例换算)
通用逻辑(如二进制转BCD码)
无状态的控制逻辑(如按钮去抖)
接口定义:FC的变量声明表中包含Input、Output、InOut、Temp、Return等区段。
Temp变量仅在此次调用中有效,初始值不确定,必须赋值后读取。
4 函数块(FB):有记忆的控制器
FB是西门子PLC编程的精髓。
它与FC的最大区别在于拥有静态存储区——每个FB必须搭配一个背景数据块(Instance DB),用于保存FB内部的静态变量(Static)。
静态变量在FB调用结束后保持值不变,下次调用时仍然存在。
典型应用场景:
电机的启停控制(需记忆当前状态)
阀门的位置控制(需记录开关次数)
PID控制器(需记忆积分项)
背景DB:每次调用FB时,系统为该调用分配独立的背景DB(也可手动指定)。
这意味着同一个FB可以被多个设备复用,互不干扰。
例如,FB1是“电机控制”,调用两次生成背景DB1(电机1)和DB2(电机2),数据完全隔离。
5 数据块(DB):变量容器
全局DB:所有程序块均可访问的数据区。
用于存储全局工艺参数、配方、计数器、报警信息。
全局DB不隶属于任何FB,用户可自由定义变量。
背景DB:自动生成,只被其对应的FB访问。
背景DB的结构由FB的静态变量决定,用户不可修改其数据结构,但可在线修改数值。
数组与结构体:TIA Portal支持在DB中定义复杂数据类型,如ARRAY[0..9] OF Int,STRUCT。
这些高级特性是构建现代大型程序的基石。

