原标题:西门子 PLC FC和FB用法讲解

本是专门为1200 PLC讲解开辟的专题,想来应该适合所有TIA PORAL支持的PLC,所以把1200从标题中去掉。

很多新手都会问,FC和FB到底什么区别呢?该怎么使用呢?其实很简单啦,仔细阅读下面内容就能理解哦!

FC块讲解

首先,我们从两者的名字就可以进行区分,可以用一个公式即FB=FC+DB来表示,FB是具有DB背景块的特殊FC,也就是说FB具有FC的功能,同时拥有一个DB块。FC全称是Function函数。

注:DB块 全称DataBlock 数据存储区域,类似数据库中关系表结构。

那首先什么函数呢?

函数

函数 f(x)就像机器或黑箱,给予输入值x便产生唯一输出值f (x)。x是自变量,f(x)是因变量。举一个我们常见的公式,求圆的面积,s=π*r*r。输入r值,便得到圆的面积s,这就是最简单的函数,r是自变量,s是因变量。

图一 变量声明

图2 FC函数内容

Input:输入型参数,提供外部输入接口。类似于函数f(x)中的x,是一个自变量。Input类型参数,是外部变量的拷贝副本,修改其值,外部变量无变化。假设在程序中修改R的值,从图2编译信息发现,传递的并不是实际参数,所以修改外部接口变量无变化。

Output:输出型参数,提供外部输出接口。该类型参数由于直接引用外部变量地址,可以修改其值。

InOut:输入输出型参数,既做输入又做输出。同Output类型一样,可以修改外部接口变量的值。在适当地方,使用InOut类型变量,可以减少占用PLC的变量声明空间。

Temp:局部变量,在函数内部使用,不提供外部的接口。我们常常把temp变量用于数据转换的中间值,或者用于循环变量,比如用于For 或者While循环。由于Temp是局部变量,它的值是随机,使用必须初始化,对其赋值。

Constant:常量,在函数内部使用,意思是恒定不变的变量,只能在声明处修改。比如我们这里的π圆周率是固定不变的,可能调用的地方有几十处,若程序中直接引用3.1415,后期修改,需要把每个地方都修改过去,很麻烦。在声明处修改π值,所有函数中的π变量都会修改。假设我们在程序中修改π常量,从图2中编译信息可以发现,常量不能在程序中修改。

Return:函数返回值,存储计算结果。默认为无返回值,所以声明为void。在我们的数学知识里面函数应该是要有返回值的,但是在TIA PORTAL可以没有返回值,我们把这种无返回类型的函数,称为procedure(过程)。我们这里设置为Real类型,返回圆的面积。有读者可能有疑问,return变量和Output类型都可以用来存储计算结果,两者的区别是什么呢?其中有一个显著的区别是Output类型输出参数可以声明若干个,但是return类型的返回变量,只能声明一个,且变量名字无法修改。其他区别,等讲解SCL的时候,再做解答。

在main[OB1]程序块里面拖动FC1函数,得到如下运行结果:

图3 程序运行结果

图4 DB块值监控

程序解读:

由于PLC程序是从左到右执行,所以"Func"函数块的左侧是输入接口,右侧是输出接口。观察函数块的内部变量名字,发现和函数中的声明一一对应,除了变量。Ret_Val是Return接口变量的别名,由于每个函数的名字都不一样,所以统一用作为函数返回值变量的名称。

程序一是对模拟量值进行转换,采样的分辨率下限是0,上限为27648,采样的数字量值15000,通过调用指定函数把转换出来的值放在变量,得到转换值为0.5425347.

把变量放在FC函数的Inout接口中,利用PLC的扫描周期,通过DB块可以看到最终值5.425347。若不放在Inout,把其放在Input接口,我们必须在OutPut接口再声明一个变量,用于存储最终的转换值。这样声明就可以节省PLC的内存空间了,同样使程序看起来更简洁。

FC函数块的代码内容比较简单,请自行阅读理解,若有问题,可以留言。

FB块讲解

要了解FB和FC的区别,让我们剖析一下这两个模块的变量声明结构:

图5 FB块变量声明

图6 FB占用DB背景块内部变量

通过FB和FC的变量声明,我们可以看到三个明显的区别:

1、FB块增加了Static静态区声明

2、FB增加了保持性和可访问性选择

上述两个区别正好说明了FB=FC+DB公式的成立,因为这两个特性是DB块才有的特性哦。我们在普通DB块里面声明的变量都在Static区声明,不信的话,你可以打开来看看。我们可以通过访问FB拥有的背景块来访问FB中变量的值。

当FC调用结束后,各种接口中声明的变量值无法保存,FB调用结束后,仍然可以保留变量的值,你可以通过FB的背景DB块进行访问。FB的每次调用都会自动生成一个DB块,想想我们编程当中,进行哪类操作也会有类似行为?其实就是我们用的非常频繁的定时器操作,每一次拖动定时器都会自动建立一个DB块。通过查看定时器拥有的DB块,看看和图6是否类似。

图7 定时器DB背景块结构

由于定时器拥有背景块,当我们停止计时后,PLC无论经过多少个扫描周期,还是可以读取停止计时时刻的值,这就是拥有DB背景块的好处,FB块与此类似。

3、FB块没有Return接口

由于可以通过Output接口存储返回值,所以没有Return接口影响不大。

图8 FB程序增加部分

由于程序类似,FB程序只列出增加部分。我们可以看到该程序,每次调用都会把最大电压值放在变量中,同时添加变量,用于记录改变电压的时间。在HMI程序上面,我们可以很方便读取这两个变量,来实时获取当前的最大电压值和修改时间,是不是很方便?

读者可能会有疑问,如果我自己写一个FC函数,然后外部添加一个DB块,不是一样可以实现此功能吗?看上去好像讲的很有道理呀,不过这个想法是错误的。

如果你在PLC程序中只调用FB块一次,那么可以采用此方法。如果你在PLC程序里面,既要比较电压,还要比较如电流、温度和湿度等,如果用同一个FC怎么实现呢?用FB可以很好的解决此问题,不明白的,可要仔细想想!

结束语

今天关于FC和FB的区别已经讲完,如果仔细阅读,应该能搞清楚这两者的区别。若还有问题,欢迎留言,同时欢迎指出本文的错误。下期我将讲解SCL编程方面的知识,敬请期待。返回搜狐,查看更多

责任编辑:

fb静态区域_西门子 PLC FC和FB用法讲解相关推荐

  1. 博图region用法_西门子1200PLC的OB块用法讲解

    很多从日系PLC或者200PLC过来的人,很不习惯于S7 1200 或者TIA PORTAL 里面的一些专业术语,比如OB,DB,FC,FB等等,其实这些术语也包含于S7 300,400 ,1500等 ...

  2. fb静态区域_fb块中静态变量

    在回答你的问题之前,有必要对变量声明表有一个基本了解.在STEP7中有两种用来定义符号地址的表格形式:符号表(共享符号)和变量声明表(局域符号),其本质都是为了建立绝对地址与符号地址之间的内在联系,但 ...

  3. fb静态区域_FC 与 FB 与 OB 的区别,时间标记冲突与一致性检查 有详细的步骤...

    关键字1 组织块的程序是由用户自己编写. 关键字2 时间标记冲突与一致性检查 有详细的步骤. 关键字3 FC 与 FB 与 OB 的区别? (一)功能 功能块 区别 ? FB 和FC均为 用户编写的程 ...

  4. 西门子实数转整数_西门子PLC指令全都翻译过来了!

    点击蓝字 关注我们 有时我们关注的公众号消息比较多,错过了一些自己喜欢的消息,不能及时看到工控论坛的推送,我们可以给公众号加星标或置顶.那如何星标置顶呢?[打开一篇工控论坛公众号的文章,点击文章标题下 ...

  5. 西门子atch指令详解_西门子PLC指令表-技术中心-智慧矿山-煤矿自动化,煤矿自动化系统,煤矿综合自动化,科达自控—煤矿生产无人值守的推动者,践行者和领导者...

    一.西门子PLC编程语言 PLC的编程语言包括以下五种:梯形图语言(LD).指令表语言(IL).功能模块图语言(FBD).顺序功能流程图语言(SFC)及结构化文本语言(ST).不同型号的PLC编程软件 ...

  6. scl语言用plc脉冲做定时器_西门子PLC中使用SCL语言编程的技巧

    中使用 SCL 语言编程的技巧 前言:两年半前我就在工控网上发表了有关 SCL 编程的知识 << 在 S7300400 型 PLC 中使用高级语言编程 >>, 但发表完 后,即 ...

  7. c++ char4个字节_西门子PLC的TCP通讯(不同项目下)①--TSEND_C指令

    西门子PLC的TCP通讯(不同项目下)①--TSEND_C指令 本期说一下,不同项目下的,连个西门子1200的TCP通讯,这次我们用TSEND_C和TRCV_C组合使用,这次先了解下TSEND_C指令 ...

  8. mpi和openmp混合编程的优点_西门子PLC可编程控制器CPU1215C一级总代理

    西门子PLC可编程控制器CPU1215C一级总代理 上海峰萨自动化设备有限公司于2018年03月15日成立.法定代表人苏胜文,公司经营范围包括工业自动化设备,电子元器件,仪器仪表,电线电缆,通信设备及 ...

  9. 伺服控制系统原理图_西门子PLC编程实例及技巧(运料小车控制系统)

    前面和大家一起进行了西门子PLC的一些基础知识及编程元件的学习,下面和大家一起探讨一下具体应用程序的编写方法,我们以运料小车控制系统的编程方法为例进行讲解. 运料车主要用于搬运加工工件,在工矿企业的生 ...

  10. plc 上位机编译算法_西门子PLC的开放式TCP通信

    对于自控或电气工程师来说,西门子PLC是每个人都非常熟悉的一款PLC品牌:而对于上位机开发工程师来说,Socket通信或TCP/IP协议也是必须要掌握的一种通信方式. 相比较而言,西门子PLC对Soc ...

最新文章

  1. echarts热力背景图_Echarts 图表中设置背景图片
  2. 【vue】webpack插件svg-sprite-loader---实现自己的icon组件
  3. 2015前端生态发展回顾(转)
  4. Nat Biotechnol | 杨弋团队报道RNA光遗传学工具,可时空精确操纵活细胞RNA代谢与功能...
  5. HDVPSS模块介绍及使用
  6. putty远程linux系统时间修改,用putty怎么修改监控服务器时间?
  7. CSS3实现文字描边的2种方法
  8. Android中对文本文件的读写处理
  9. Office 365系列(1)------Office 365邮箱申请及初步配置说明
  10. 考研政治(二):马克思主义基本原理
  11. npm方法创建一个vue项目,引入element插件
  12. 「实在RPA学院」电商运营36计:企微批量自动加好友
  13. framework7 入门知识
  14. stata生成脉冲响应图怎么导出_Stata:面板VAR模型(pvar2命令)
  15. 治疗贫血的几款食疗方
  16. Option3X 5G 全网部署(基于 IUV_5G 软件)
  17. L1-035 情人节
  18. Java object类型转换为int类型
  19. git 撤销上次提交 commit
  20. 系统信息相关命令(时间和日期 date cal,磁盘信息,进程信息)

热门文章

  1. 函数多个返回值(返回多个参数/局部变量)通过双重指针来实现
  2. 国外十大流行的服务器监控工具
  3. AutoCAD2020修改 图层名称
  4. AutoCAD2020左键单击长按套锁功能
  5. Atitit 施政策略总结 目录 1. 行政综合方面的策略 2 1.1. 加强宣传无处不在策略 占领各大网络与实体阵地 2 1.2. 装点门面,不花钱或者少花钱的东西体系全部搞起来 2 1.3. 加大
  6. Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结
  7. atitit.RandomAccessFile rws rwd 的区别于联系
  8. PAIP.WEB程序网站安全扫描检测工具(桌面程序)总结
  9. Rust :CC编译
  10. Rust: Bindgen绑定CTP C++原生接口尝试