新闻资讯
你的位置:首页 > 新闻资讯

西门子PLC编程最容易踩的坑,一分钟区分FB块和FC块的区别

* 来源: * 作者: admin * 发表时间: 2025-05-13 10:53:49 * 浏览: 9

PLC 编程一定要学会FB 块和 FC 块的区别

一、概念

  1. FB 块

    • FB 块是从另一个 OB、FB 或 FC 代码块进行调用时执行的子例程。

    •  以 1200PLC 为例,可以使用 OB 块,FC 块和 FB 块代码块进行编程。

    • 调用 FB 块时会生成相匹配的后台背景数据块,在背景数据块中可以存储定义的接口参数及静态变量。

  2. FC 块

    • FC 是没有存储区的代码块,用于对一组输入值做特定的操作。

    •  使用FC执行标准操作和可重用操作(数学计算)或者执行过程功能(例如,使用位逻辑操作来执行独立控制)

    • 在程序中的不同位置多次调用,简化了重复任务的编程,适用于简单的逻辑判断程序。

二、特点

  1. FB 块

    • 1. 易于移植性,对于相同控制逻辑不同参数的被控对象,只要使用不同的背景DB,使用相同的FB块就可以方便.

    • 2. 多重背景,减少重复工作量,提高编程效率

    • 3. 多次调用时,参数修改方便

    • 4. 有独立的存储区

  2. FC块
    <span data-pm-slice="2 3 [" para",{"tagname":"section","attributes":{"id":"nice","data-tool":"markdown编辑器","data-website":"https:="" markdown.com.cn="" editor","style":"padding:="" 25px="" 30px;="" line-height:="" 1.6;="" word-spacing:="" 0px;="" word-break:="" break-word;="" overflow-wrap:="" text-align:="" justify;="" font-family:="" \"helvetica="" neue\",="" helvetica,="" \"hiragino="" sans="" gb\",="" \"microsoft="" yahei\",="" arial,="" sans-serif;="" margin-top:="" -10px;="" font-size:="" 15px;="" letter-spacing:="" 0.05em;="" color:="" rgb(89,="" 89,="" 89);","data-pm-slice":"0="" 0="" []"},"namespaceuri":"http:="" www.w3.org="" 1999="" xhtml"},"list",{"type":"ol","style":"margin-top:="" 8px;="" margin-bottom:="" padding-left:="" 25px;="" black;="" list-style-type:="" decimal;="" sans-serif;","class":"list-paddingleft-1"},"listitem",{"style":"font-family:="" sans-serif;"},"list",{"type":"ul","style":"margin-top:8px;="" margin-bottom:8px;="" padding-left:25px;="" color:black;="" list-style-type:disc;="" font-family:\"helvetica="" font-size:16px;","class":"list-paddingleft-1"},"listitem",{"style":"font-family:="" sans-serif;"}]"="" style="user-select: auto; margin: 0px; padding: 0px; font-family: "Noto Sans SC"; font-size: 15px; color: rgb(34, 34, 34); line-height: 2em; width: 800px; float: none; display: inline !important;">1.小巧灵活,对于不经常调用的程序更易理解
    2.不占用额外的存储资源

 

三、区别

  1. 存储区

    • FB 块:使用背景数据块作为存储区,可以保存状态信息或中间结果。

    • FC 块:没有独立的存储区,使用全局 DB 或 M 区,不保存状态信息,如果需要锁存数据,可以将输出值复制给全局变量,例如M和DB。

  2. 变量类型

    • FB 块:具有 STAT(静态)和 TEMP(临时)变量。

    • FC 块:不具有STAT变量,TEMP变量无法设置初始值。

  3. 传递参数方式

    • FB 块:通过背景 DB 传递参数。

    • FC 块:通过 L 堆栈区域传递参数。

因此 FC、FB 有不同的特性:

①FC 自身不能存储流程状态。

②FB 可以通过静态变量存储中间流程状态。 

③FB 可以多次调用其他的 FB 及其背景 DB,称为多重背景调用。

四、案例

如果想控制5台伺服电机,是选用 FB 块还是 FC 块?

如果需要控制5个伺服电机,通常推荐使用FB(功能块)

  • FB 块相当于高级语言,例如 C#的类

  • FB块使用背景数据块作为存储区,能够保存状态信息或中间结果。在控制伺服电机时,每个电机可能需要记录和跟踪诸如当前位置、速度、加速度、运行状态(如是否在运行、是否出现故障等)等多种参数。使用FB块,这些参数可以存储在对应的背景数据块中,方便在程序的不同调用之间保持数据的连续性和一致性。

  • 例如,当程序需要暂停并随后恢复伺服电机的运行,FB块可以通过其背景数据块中的状态信息,准确地恢复到之前的状态继续运行。

  • FC 块相当于一个函数,例如数值转换

 

  • FC 块编完之后嵌入到 FB 块中;也可以作为一个子程序的调用或对象的预处理或后期处理;使用 FB 块实例化的对象在 HMI 上都会有显示和控制的需求,例如每一路的 PID 控制,在 HMI 上都有相应的控制面板,通过这个控制面板,也可以修改 PID 的参数、修改设定值以及得到反馈值。