更新时间:作者:小小条
此为笔记,记下搜索到的资料。
SFC和SFB使用于STEP 7 中,在博图中可以根据名称在指令中进行查找。
西门子官家地址:

https://cache.industry.siemens.com/dl/files/604/44240604/att_67026/v1/s7sfc__k.pdf
知乎地址:
https://zhuanlan.zhihu.com/p/639604144
系统功能(SFC)和系统功能块(SFB)是集成在西门子S7 CPU操作系统中的预定义程序模块,用户可在用户程序中直接调用它们来实现特定的系统级操作。
SFC(System Function,系统功能)
SFC属于操作系统的一部分,不作为用户程序的一部分下载到CPU。它们类似于函数(FC),没有自己的存储区(即无静态数据),但提供了对关键系统功能的访问能力。常见的SFC包括:
SFB(System Function Block,系统功能块) 与FB类似,SFB也是“具有内存”的块,并且必须为其创建实例数据块(Instance DB),该DB作为程序的一部分下载到CPU中。常见的SFB包括:
计数器类:如 SFB0 (CTU)、SFB1 (CTD)、SFB2 (CTUD),提供增计数、减计数及双向计数功能 [2]。定时器类:如 SFB3 (TP) 脉冲定时器、SFB4 (TON) 接通延时定时器、SFB5 (TOF) 断开延时定时器 [2]。通信类:SFB8/9 ("USEND"/"URCV") 和 SFB12/13 ("BSEND"/"BRCV") 支持异步数据传输;SFB14 ("GET") 和 SFB15 ("PUT") 实现远程CPU的数据读写;SBF20 ("STOP") 可将远程站点设置为STOP状态; 这些通信服务支持高达64 KB的数据传输,并可通过多种网络协议(如PROFINET、工业以太网等)进行组态连接 [3]。 此外,在顺序控制系统中,PCS7环境下的顺序控制图表可基于"SFC类型 AM"或"SFC计划 AM"等模板构建,并通过模式指示器显示自动(A)/手动(M)状态以及运行(RUN)、完成(COMPLETED)、错误(ERROR)等详细操作状态 [1][6]。 综上所述,两者均提供高效可靠的标准化接口以简化编程工作;区别在于是否需要关联实例DB——这是使用前需注意的关键点之一。具体罗列出来:
编号 | 名称缩写 | 功能 |
SFC0 | SET_CLK | 设系统时钟 |
SFC1 | READ_CLK | 读系统时钟 |
SFC2 | SET_RTM | 运行时间定时器设定 |
SFC3 | CTRL_RTM | 运行时间定时器启/停 |
SFC4 | READ_RTM | 运行时间定时器读取 |
SFC5 | GADR_LGC | 查询模板的逻辑起始地址 |
SFC6 | RD_SINFO | 读OB启动信息 |
SFC7 | DP_PRAL | 在DP主站上触发硬件中断 |
SFC9 | EN_MSG | 使能块相关、符号相关的和组状态的信息 |
SFC10 | DIS_MSG | 禁止块相关的、符号相关的和组状态信息 |
SFC11 | DPSYC_FR | 同步DP从站组 |
SFC12 | D_ACT_DP | 取消和激活DP从站 |
SFC13 | DPNRM_DG | 读DP从站的诊断数据(从站诊断) |
SFC14 | DPRD_DAT | 读标准DP从站的连续数据 |
SFC15 | DPWR_DAT | 写标准DP从站的连续数据 |
SFC17 | ALARM_SQ | 生成可确认的块相关信息 |
SFC18 | ALARM_S | 生成恒定可确认的块相关信息 |
SFC19 | ALARM_SC | 查询最后的LAARM_SQ到来的事件信息的应答状态 |
SFC20 | BLKMOV | 拷贝变量 |
SFC21 | FILL | 初始化存储区 |
SFC22 | CREAT_DB | 生成DB |
SFC23 | DEL_DB | 删除DB |
SFC24 | TEST_DB | 测试DB |
SFC25 | COMPRESS | 压缩用户内存 |
SFC26 | UPDAT_PI | 刷新过程映像输入表 |
SFC27 | UPDAT_PO | 刷新过程映像输出表 |
SFC28 | SET_TINT | 设置日时钟中断 |
SFC29 | CAN_TINT | 取消日时钟中断 |
SFC30 | ACT_TINT | 激活日时钟中断 |
SFC31 | QRY_TINT | 查询日时钟中断 |
SFC32 | SRT_DINT | 启动延时中断 |
SFC33 | CAN_DINT | 取消延时中断 |
SFC34 | QRY_DINT | 查询延时中断 |
SFC35 | MP_ALM | 触发多CPU中断 |
SFC36 | MSK_FLT | 屏蔽同步故障 |
SFC37 | DMSK_FLT | 解除同步故障屏蔽 |
SFC38 | READ_ERR | 读故障寄存器 |
SFC39 | DIS_IRT | 禁止新中断和非同步故障 |
SFC40 | EN_IRT | 使能新中断和非同步故障 |
SFC41 | DIS_AIRT | 延迟高优先级中断和非同步故障 |
SFC42 | EN_AIRT | 使能高优先级中断和非同步故障 |
SFC43 | RE_TRIGR | 再触发循环时间监控 |
SFC44 | REPL_VAL | 传送替代值到累加器1 |
SFC46 | STP | 使CPU进入停机状态 |
SFC47 | WAIT | 延迟用户程序的执行 |
SFC48 | SNC_RTCB | 同步子时钟 |
SFC49 | LGC_GADR | 查询一个逻辑地址的模块槽位的属性 |
SFC50 | RD_LGADR | 查询一个模块的全部逻辑地址 |
SFC51 | RDSYSST | 读系统状态表或部分表 |
SFC52 | WR_USMSG | 向诊断缓冲区写用户定义的诊断事件 |
SFC54 | RD_PARM | 读取定义参数 |
SFC55 | WR_PARM | 写动态参数 |
SFC56 | WR_DPARM | 写默认参数 |
SFC57 | PARM_MOD | 为模块指派参数 |
SFC58 | WR_REC | 写数据记录 |
SFC59 | RD_REC | 读数据记录 |
SFC60 | GD_SND | 全局数据包发送 |
SFC61 | GD_RCV | 全局数据包接收 |
SFC62 | CONTROL | 查询通讯的连接状态 |
SFC63 | AB_CALL | 汇编代码块 |
SFC64 | TIME_TCK | 读系统时间 |
SFC65 | X_SEND | 向本地S7站之外的通讯伙伴发送数据 |
SFC66 | X_RCV | 接收本地S7站之外的通讯伙伴发送的数据 |
SFC67 | X_GET | 读取本地S7站之外的通讯伙伴的数据 |
SFC68 | X_PUT | 写数据到本地S7站之外的通讯伙伴 |
SFC69 | X_ABORT | 中断与本地S7站之外的通讯伙伴已建立的连接 |
SFC72 | I_GET | 读取本地S7站内的通讯伙伴的数据 |
SFC73 | I_PUT | 写数据到本地S7站内的通讯伙伴 |
SFC74 | I_ABORT | 中断现与本地S7站内的通讯伙伴已建立的连接 |
SFC78 | OB_RT | 确定OB的程序运行时间 |
SFC79 | SET | 置位输出范围 |
SFC80 | RSET | 复位输出范围 |
SFC81 | UBLKMOV | 不间断拷贝变量 |
SFC82 | CREA_DBL | 在装载存储器中生成DB块 |
SFC83 | READ_DBL | 读装载存储器中的DB块 |
SFC84 | WRIT_DBL | 写装载存储器中的DB块 |
SFC87 | C_DIAG | 实际连接状态的诊断 |
SFC90 | H_CTRL | H系统中的控制操作 |
SFC100 | SET_CLKS | 设日期时间和日期时间状态 |
SFC101 | RTM | 运行时间记时器 |
SFC102 | RD_DPARA | 读取预定义参数(重新定义参数) |
SFC103 | DP_TOPOL | 识别DP主系统中总线的拓扑 |
SFC104 | CiR | 控制CiR |
SFC105 | READ_SI | 读取动态系统资源 |
SFC106 | DEL_SI | 删除动态系统资源 |
SFC107 | ALARM_DQ | 生成可确认的块相关信息 |
SFC108 | ALARM_D | 生成恒定可确认的块相关信息 |
SFC126 | SYNC_PI | 同步刷新过程映像区输入表 |
SFC127 | SYNC_PO | 同步刷新过程映像区输出表 |
编号 | 名称缩写 | 功能 |
SFB0 | CTU | 加大记数 |
SFB1 | CTD | 减记数 |
SFB2 | CTUD | 加/减记数 |
SFB3 | TP | 定时脉冲 |
SFB4 | TON | 延时接通 |
SFB5 | TOF | 延时断开 |
SFB8 | USEND | 非协调数据发送 |
SFB9 | URCV | 非协调数据接收 |
SFB12 | BSEND | 段数据发送 |
SFB13 | BRCV | 段数据接收 |
SFB14 | GET | 向远程CPU写数据 |
SFB15 | PUT | 从远程CPU读数据 |
SFB16 | 向打印机发送数据 | |
SFB19 | START | 在远程装置上实施暖启动或冷启动 |
SFB20 | STOP | 将远程装置变为停止状态 |
SFB21 | RESUME | 在远程装置上实施暖启动 |
SFB22 | STATUS | 查询远程装置的状态 |
SFB23 | USTATUS | 接收远程装置的状态 |
SFB29 | HS_COUNT | 计数器(高速计数器,集成功能) |
SFB30 | FREQ_MES | 频率计(频率计,集成功能) |
SFB31 | NOTIFY_8P | 生成不带确认显示的块相关信息 |
SFB32 | DRUM | 执行顺序器 |
SFB33 | ALARM | 生成带确认显示的块相关信息 |
SFB34 | ALARM_8 | 生成不带8个信号值的块相关信息 |
SFB35 | ALARM_8P | 生成带8个信号值的块相关信息 |
SFB36 | NOTIFY | 生成不带确认显示的块相关信息 |
SFB37 | AR_SEND | 发送归档数据 |
SFB38 | HSC_A_B | 计数器A/B转换 |
SFB39 | POS | 定位(集成功能) |
SFB41 | CONT_C | 连续调节器 |
SFB42 | CONT_S | 步进调节器 |
SFB43 | PULSEGEN | 脉冲发生器 |
SFB44 | ANALOG | 带模拟输出的定位 |
SFB46 | DIGITAL | 带数字输出的定位 |
SFB47 | COUNT | 计数器控制 |
SFB48 | FREQUENC | 频率计控制 |
SFB49 | PULSE | 脉冲宽度控制 |
SFB52 | RDREC | 读来自DP从站的数据记录 |
SFB53 | WRREC | 向DP从站写数据记录 |
SFB54 | RALRM | 接收来自DP从站的数据记录 |
SFB60 | SEND_PTP | 发送数据(ASCⅡ,3964(R)) |
SFB61 | RCV_PTP | 接收数据(ASCⅡ,3964(R)) |
SFB62 | RES_RECV | 清除接收缓冲区(ASCⅡ,3964(R)) |
SFB63 | SEND_RK | 发送数据(RK512) |
SFB64 | FETCH_RK | 获取数据(RK512) |
SFB65 | SERVE_RK | 接收和提供数据数据(RK512) |
SFB75 | SALRM | 向DP从站发送中断 |
一些系统功能和系统功能块只用于特殊CPU中。
版权声明:本文转载于今日头条,版权归作者所有,如果侵权,请联系本站编辑删除