PLC的FC与FB模块程序的功能解析

前文讲了在西门子系列的PLC中四个程序模块的描述,从S7-1200PLC开始就有FC和FB程序块了,但在使用的时候,一些使用者还是不好理解,以至于不知道该如何选择。今天,我们就用大白话的方式给大家讲解FC与FB的功能。

1、FC与FB的作用

那么软件中的FC和FB功能与这个“餐馆”非常类似。我们把“输入数据”给到FC或者FC程序块,然后程序块将数据加工,得到了“输出数据”。这个过程我们把“输入数据”比作“食材”,把“代码”比作“厨师”,把“输出数据”比作“美味佳肴”。

2、FC与FB的区别

如果我们把FC和FB都比作餐馆的话,那它们的区别在哪里呢?根据下图,分别有“A餐馆”和“B餐馆”,A餐馆没有储藏室,所以A餐馆的厨师要把食材从储藏室拿出来进行加工,当加工完了,成为了“美味佳肴”之后,把这道“美味佳肴”放到“储藏室”去,然后当做菜量比较大,一旦多了起来,每次取食材,端菜放进储藏室要来回折返好多次,这就比较麻烦了。并且这个储藏室也是大家公用的,B餐馆也可以采用类似的方法进行菜品加工。储藏室就是“共享DB或者位存储器”。

B餐馆的话,有专门的储藏室,所以它就不需要折返去公用的储藏室去拿食材了。并且每新开一家B餐馆都自带储藏室,这样话就非常的方便了。B储藏室就类似于程序中的“背景DB”。

3、FC函数

FC是什么呢?函数 (FC) 是不含存储区的代码块。通过函数可在用户程序中传送参数。FB或FC在使用时,都可以使用带形式参数与不带形式参数的FB/FC,带参数的FB/FC可以实现重复调用。

带形式参数与不带形式参数的程序块有什么区别呢?我们还是以餐馆的形式举例。不带形式参数的FC:如图3所示,有两家“FC餐馆”,它们每天做的菜只能是固定的,不能根据不同的菜单而做菜。如果要做出不同的菜的话,只能再开一家餐馆,这种就是不带参数的FC程序。这种方式和我们在OB1主程序块中编程基本上一样(使用的都是全局变量),如图4所示。但是这种不带参数的FC编程的话,需要注意是一些状态数据的值,否则可能会造成数据错误。

比如程序,如图5,当“FC1风机控制”程序块中的“Q0.4”自锁了,然后断开“OB1块”中的“M0.0”,这个时候的Q0.4是不会为“0”的,它还保持为“1”的状态。这个就是相当于我们厨师做好了菜,然后把门关了,菜仍然是在那里。如果是先把“Q0.4”断开了,再把“M0.0”断开,这个时候的“Q0.4”就是为“0”了。

FC编程控制

OB1调用

既然我们说了不带参数的FC就是不能根据菜单来做菜就很不方便,所以就用带参数的FC来解决这个问题。带参数的FC如图6所示。其中第一个FC3程序中的“I0.0” “I0.1” “IQ0.0”和第二FC3程序“I0.2”“I0.3”“Q0.1”这些就是不同的菜单,根据不同的输入菜单就可以很方便的做好菜。

4、带参数的FC

要编写带参数的FC程序,需要先定义一些接口数据。其中接口类型主要分为5种,如图7所示。

接口名称读写访问描述
Input只读调用函数时,将用户程序数据传递到FC中,实参可以为常数
Output读写调用函数时,将FC执行结果传递到用户程序中,实参不能为常数
intOut读写接收数据后进行运算,然后将执行结果返回,实参不能为常数
Temp读写仅在FC调用时生效,用于存储临时中间结果的变量
Content只读声明常量符号名后,FC中可以使用符号名代替常量

①带参数的FC编程示例(起保停程序)如图8:

使用带参数FC编写星三角启动程序,如图9和图10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/446369.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python打印Linux系统中最常用的linux命令之示例

一、Linux中的~/.bash_history文件说明: 该文件保存了linux系统中运行过的命令的历史。使用该文件来获取命令的列表,并统计命令的执行次数。统计时,只统计命令的名称,以不同参数调用相同的命令也视为同一命令。 二、示例代码&am…

数据结构二叉树续

在前边我们讲完了二叉树的一些代码结构 现在呢我们需要进一步去细化 我们传参数组后,让数组里面的数据进行调整 如何调整成堆呢? 建堆 所以我们分装一个成堆的函数 还是先去断言 然后创建空间 这里我们需要用到一个memcpy函数 memcpy函数是用来…

RabbitMQ - 07 - 通过注解创建队列和交换机

之前消息模型的实现,都是通过rabbitMQ Management 控制台来手动创建 queue 和 exchange 的 在项目开发中有两种方式通过代码声明 创建 一种是通过 Bean 方式,这种代码量较大 稍繁琐 一种是通过注解的方式声明 先编写消费者代码 通过注解绑定了 消息队列,交换机,还有 routin…

预约自习室

预约自习室 1、技术介绍 自习室预约系统的后端开发语言采用Node,后端开发框架采用Express,数据库采用的Node的最佳搭档MySQL。采用Vue作为前端开发框架,Element-UI作为开发的组件库,微信小程序。期间采用axios实现网页数据获取&a…

Linux 进程程序替换

💓博主CSDN主页:麻辣韭菜-CSDN博客💓   ⏩专栏分类:http://t.csdnimg.cn/G90eI⏪   🚚代码仓库:Linux: Linux日常代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝&#x1f5…

springboot257基于SpringBoot的中山社区医疗综合服务平台

中山社区医疗综合服务平台的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,居民信息因为其管理内容繁杂,管…

车载诊断协议DoIP系列 —— 传输层控制协议(TCP)用户数据报协议(UDP)

车载诊断协议DoIP系列 —— 传输层控制协议(TCP)&用户数据报协议(UDP) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎…

【notepad++工具使用之】批量加逗号

背景 在使用sql语句in关键字查询时,我们需要把数据用逗号进行隔开,在数据量非常少的时候(十几二十个这样),可以手动的去加逗号分隔符; 但是遇到1000个怎么弄呢? 强大的Notepad 批量处理数据时…

macOS14.4安装FFmpeg及编译FFmpeg源码

下载二进制及源码包 二进制 使用brew安装ffmpeg : brew install ffmpeg 成功更新到ffmpeg6.1 下载FFmpeg源码

CSS拖曳盒子案例

让我为大家带来一个小案例吧&#xff01; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>* {margin: 0;padding: 0;}.box1 {width: 100px;height: 100px;background-color: black;margin-bot…

【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型

【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型 Shepard模型(简称SP模型)就是一种直观的、可操作的相似预测法&#xff0c;常用于插值。相似预测法基本原理按照相似原因产生相似结果的原则&#xff0c;从历史样本中集中找出与现在的最相似的一…

Vue class和style绑定:动态美化你的组件

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

代码随想录训练营第40天 | LeetCode 343. 整数拆分

LeetCode 343. 整数拆分 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;动态规划&#xff0c;本题关键在于理解递推公式&#xff01;| LeetCode&#xff1a;343. 整数拆分_哔哩哔哩_bilibili 思路 代码如下&#xff1a; ​​​​​​LeetCode 96…

如何快速开发高性能步进电机控制驱动系统RS485 UART通讯Modebus协议防丢步节能静音驱动TMCM1290

TMCM-1290是一款4-36V供电的智能集成步进电机驱动器控制器模块&#xff0c;它融合了步进电机的运动控制和驱动功能&#xff0c;为现代工业应用提供了高效、可靠的解决方案。以下是关于TMCM-1290的详细介绍&#xff1a; 一、产品特点 集成度高&#xff1a;TMCM-1290将步进电机…

检测虚拟机环境的常见技术

下面列出检测 VMware 虚拟机的常见技术&#xff1a; #include <iostream> #include <windows.h> #include <sysinfoapi.h> #include <comdef.h> #include <Wbemidl.h> #include <ShlObj.h> #include <LM.h> #include <TlHelp32.…

DxO PureRAW:赋予RAW图像生命,打造非凡视觉体验 mac/win版

DxO PureRAW 是一款专为RAW图像处理而设计的软件&#xff0c;旨在帮助摄影师充分利用RAW格式的优势&#xff0c;实现更加纯净、细腻的图像效果。该软件凭借其强大的功能和易于使用的界面&#xff0c;成为了RAW图像处理领域的佼佼者。 DxO PureRAW 软件获取 首先&#xff0c;Dx…

Appcms存储型XSS漏洞复现

君衍. 一、环境介绍二、环境部署三、测试回显四、多次注入1、第一条评论2、第二条评论3、管理员登录查看 五、编写脚本获取cookie 一、环境介绍 这里需要注意&#xff0c;我没有找到原有的该环境源码包&#xff0c;因为这个是很久前的漏洞了&#xff0c;在XSS学习中可以查看下…

康奈尔开源近10万份审稿意见,未来论文发表或将由AI定夺

大语言模型&#xff08;LLMs&#xff09;的进步为自动化论文评审开辟了新途径&#xff0c;这些模型在学术反馈领域展现出巨大潜力。自动化评审的核心优势在于其能够精准指出论文草稿的不足之处&#xff0c;助力作者优化研究。尽管已有丰富的同行评审数据&#xff0c;但现有自动…

【Leetcode每日一题】 位运算 - 位1的个数(难度⭐)(32)

1. 题目解析 题目链接&#xff1a;191. 位1的个数 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 核心在于计算题目所给32位二进制数1的个数返回即可。 2.算法原理 位运算特性&#xff1a;通过位运算&#xff0c;特别是按位与(&…

Ollama--本地大语言模型LLM运行专家

文章目录 1、问题提出2、解决方案3、Ollama介绍3.1、Ollama的核心功能3.2、Ollama的独特之处 4、Ollama安装与使用4.1、Ollama的安装 5、使用Docker6、模型库和自定义模型7、应用场景展望8、结语 1、问题提出 使用chatgpt之类的闭源大语言模型时&#xff0c;我们与ai沟通的数据…