返回主站|会员中心|保存桌面

梅索尼兰Masoneilan阀门(中国)服务商    

梅索尼兰Masoneilan定位器、 减压阀 、调节阀 、过滤器、 转换器

联系方式
  • 联系人:姚经理
  • 电话:18520143666
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > 系统功能SFC、系统功能块SFB的详细说明!
新闻中心
系统功能SFC、系统功能块SFB的详细说明!
发布时间:2025-10-01        浏览次数:3        返回列表

在西门子 PLC(如 S7-300/400/1200/1500)的编程中,系统功能(SFC) 和系统功能块(SFB) 是集成在 CPU 操作系统中的预定义程序模块,用于实现 PLC 与外部设备的通讯、系统管理、数据处理等核心功能。二者均由西门子官方开发,可直接调用,无需用户编写底层代码,但适用场景和特性有所不同。

一、系统功能(SFC,System Function)

SFC 是无状态的系统函数,用于执行特定的系统操作(如数据传输、时钟控制、模块诊断等),调用时无需分配背景数据块,执行后不保留中间状态。

核心特性

  1. 无背景数据块:调用时只需传入输入参数,无需为其分配专门的背景数据块(与用户自定义功能 FC 类似)。

  2. 无状态性:每次调用的结果仅取决于当前输入参数,不依赖历史执行状态(执行后不保存数据)。

  3. 功能固定:由西门子预设,实现 PLC 系统级功能,用户无法修改其内部逻辑。

常用 SFC 及应用场景

SFC 编号(以 S7-300/400 为例)功能描述典型应用场景
SFC0 "SET_CLK"设置 PLC 实时时钟校准 CPU 内部时钟,同步系统时间
SFC1 "READ_CLK"读取 PLC 实时时钟记录事件时间(如报警发生时间)
SFC2 "TERM"终止用户程序执行紧急情况下停止程序运行
SFC3 "DPNRM_DG"读取 PROFIBUS-DP 从站诊断数据诊断 DP 从站故障(如模块离线、通讯错误)
SFC4 "TINT"启动定时中断触发周期性中断任务(如 10ms 执行一次)
SFC5 "GTINT"取消定时中断停止已启动的定时中断
SFC14 "DPRD_DAT"从 PROFIBUS-DP 从站读取数据读取远程 I/O 模块的输入数据
SFC15 "DPWR_DAT"向 PROFIBUS-DP 从站写入数据控制远程 I/O 模块的输出信号
SFC21 "FILL"填充数据(将指定值写入连续存储区)初始化数据块、清空数组
SFC46 "MOD_RST"复位模块错误状态清除模块故障标志,恢复正常运行

调用示例(S7-1200/1500 中调用 SFC1 "READ_CLK")

awl

// 读取PLC实时时钟,存储到DB1中的时间结构体
CALL "READ_CLK"
RET_VAL => #RetVal       // 返回值(0=成功,非0=错误)
CDT     => "DB1".CurrentTime  // 存储当前时间的结构体(年月日时分秒)

二、系统功能块(SFB,System Function Block)

SFB 是有状态的系统功能块,用于实现复杂且需要保存状态的系统功能(如通讯协议、运动控制、脉冲输出等),调用时必须分配背景数据块(Instance DB) 以保存运行状态和参数。

核心特性

  1. 需背景数据块:调用时必须为其分配专用的背景数据块(与用户自定义功能块 FB 类似),用于存储输入 / 输出参数、中间变量和状态信息。

  2. 有状态性:执行结果不仅取决于当前输入,还依赖背景数据块中保存的历史状态(如累计值、运行标志)。

  3. 功能复杂:通常用于实现时序性强、需持续跟踪状态的功能(如通讯协议解析、轴定位控制)。

常用 SFB 及应用场景

SFB 编号(以 S7-300/400 为例)功能描述典型应用场景
SFB3 "TP"脉冲定时器(输出脉冲宽度可控)控制设备单次运行时间(如阀门打开 5 秒后关闭)
SFB4 "TON"接通延时定时器延时启动设备(如系统上电后 10 秒启动电机)
SFB5 "TOF"断开延时定时器延时停止设备(如停机后风扇继续运行 30 秒)
SFB6 "RS"复位优先型触发器实现报警的置位与复位逻辑
SFB7 "SR"置位优先型触发器实现互锁控制(如电机正反转切换)
SFB12 "BSEND"块发送(通过 MPI/DP 发送数据块)主从 PLC 之间的数据通讯
SFB13 "BRECV"块接收(通过 MPI/DP 接收数据块)接收远程 PLC 发送的数据
SFB49 "CTRL_8"控制 8 路数字量输出(带诊断)集中控制多个电磁阀、指示灯
SFB102 "CAN_SEND"CAN 总线数据发送与支持 CANopen 的设备通讯(如变频器)
SFB103 "CAN_RECV"CAN 总线数据接收接收 CANopen 设备的反馈数据

调用示例(S7-1200/1500 中调用 SFB4 "TON")

  1. 分配背景数据块:如 "DB_TON"(自动生成,与 SFB4 关联)。

  2. 调用并设置参数:

awl

// 接通延时定时器:输入ON后,延时5秒输出ON
CALL "TON" , "DB_TON"
IN1     := "Start_Signal"  // 启动信号(ON时开始计时)
PT      := T#5S            // 延时时间5秒
Q       => "Delay_Output"  // 延时后输出(ON表示计时完成)
ET      => "Elapsed_Time"  // 已运行时间(当前计时值)

三、SFC 与 SFB 的核心区别

对比维度系统功能(SFC)系统功能块(SFB)
背景数据块不需要必须分配(存储状态和参数)
状态保存无状态(不保存中间结果)有状态(依赖背景数据块保存状态)
功能复杂度实现简单、单次性操作实现复杂、时序性或持续性操作
典型应用数据读写、时钟控制、诊断查询定时器、通讯协议、运动控制
调用方式直接调用,仅传入输入参数需关联背景数据块,参数存储在 DB 中

四、使用注意事项

  1. 版本兼容性:不同 PLC 型号(如 S7-300 与 S7-1200)的 SFC/SFB 编号和功能可能不同,需参考对应型号的系统手册(如《S7-1200 系统手册》)。

  2. 参数正确性:调用时需严格按手册要求设置参数(如数据类型、地址范围),错误参数可能导致功能异常(如 SFC14 读取 DP 数据时,地址超出范围会返回错误码)。

  3. 背景数据块管理:SFB 的背景数据块由系统自动生成,用户不可修改其结构,但可读写其中的参数(如修改 SFB4 的 PT 延时时间)。

  4. 错误处理:多数 SFC/SFB 会返回状态码(如 RET_VAL),需在程序中判断返回值,处理异常情况(如通讯失败时触发报警)。

总结

SFC 和 SFB 是西门子 PLC 系统提供的 “预制功能模块”,简化了复杂系统功能的实现:

  • SFC适用于无状态的单次操作(如读时钟、数据填充),无需背景数据块,调用简单。

  • SFB适用于有状态的持续操作(如定时器、通讯),需背景数据块保存状态,功能更复杂。

合理使用 SFC/SFB 可大幅减少用户编程工作量,提升程序的可靠性(官方预定义模块经过严格测试),是工业自动化编程的核心工具。

收缩
  • QQ咨询

  • 电话咨询

  • 18520143666
  • 添加微信客服