0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文详解FC和FB的区别与用法

1bGT_GKYXT1508 2018-01-31 12:45 次阅读

很多新手都会问,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是因变量。

一文详解FC和FB的区别与用法

图一 变量声明

一文详解FC和FB的区别与用法

图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函数,得到如下运行结果:

一文详解FC和FB的区别与用法

图3 程序运行结果

图4 DB块值监控程序解读:由于PLC程序是从左到右执行,所以"Func"函数块的左侧是输入接口,右侧是输出接口。观察函数块的内部变量名字,发现和函数中的声明一一对应,除了变量。Ret_Val是Return接口变量的别名,由于每个函数的名字都不一样,所以统一用作为函数返回值变量的名称。程序一是对模拟量值进行转换,采样的分辨率下限是0,上限为27648,采样的数字量值15000,通过调用指定函数把转换出来的值放在变量<"Data".电压值>,得到转换值为0.5425347.把变量<"Data".电压值>放在FC函数的Inout接口中,利用PLC的扫描周期,通过DB块可以看到最终值5.425347。若不放在Inout,把其放在Input接口,我们必须在OutPut接口再声明一个变量,用于存储最终的转换值。这样声明就可以节省PLC的内存空间了,同样使程序看起来更简洁。FC函数块的代码内容比较简单,请自行阅读理解,若有问题,可以留言。

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

一文详解FC和FB的区别与用法

图5 FB块变量声明

一文详解FC和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可以很好的解决此问题,不明白的,可要仔细想想!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    4975

    文章

    12254

    浏览量

    454918
  • DB
    DB
    +关注

    关注

    0

    文章

    48

    浏览量

    22592
  • FC
    FC
    +关注

    关注

    1

    文章

    75

    浏览量

    41870

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

文章出处:【微信号:GKYXT1508,微信公众号:工控云学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    西门子PLC编程功能块FB和功能FC的不同之处是什么

    程序调用(也可以调用其他子程序)。他们的最大区别是,FB与DB配合使用,DB中保存着FB使用的数据,即使FB退出后也会直保留。
    发表于 12-02 14:15

    8xC51FA, 8xC51FB,8xC51FC应用技术资料

    The 8xC51FA, 8xC51FB, 8xC51FC may contain design defects or errors known as errata.
    发表于 06-24 09:03 16次下载

    西门子PLC编程中FBFC区别

    用西门子PLC编程时,可以用到功能块FB和功能FC(FBFC都是组织块)资料上说FBFC都可
    发表于 06-20 10:54 1.6w次阅读

    OrCAD中创建总线及用法详解

    OrCAD中创建总线及用法详解,如何创建总线,菜单place->bus或者右侧快捷按钮
    发表于 12-02 10:18 2.5w次阅读

    XMEGA PWM模块多通道的用法详解

    本文主要详解XMEGA PWM模块多通道的用法,具体的跟随小编来了解一下。
    的头像 发表于 06-18 14:09 4007次阅读
    XMEGA PWM模块多通道的<b class='flag-5'>用法</b><b class='flag-5'>详解</b>

    一文带你了解PLC中FBFC块的区别

    本文首先介绍了PLC的FBFC是什么意思及它们的优缺点,其次介绍了PLC中FBFC块的区别,最后用西门子举例说明了
    发表于 04-18 18:32 3.5w次阅读

    使用FB65但RFID与PC的连接DB用法区别

    同样是使用使用FB65但RFID与PC的连接DB用法有一定的区别: 首先说一下什么是FB65: 通过TCP和ISO on TCP使用 两个通信伙伴都调用
    的头像 发表于 12-03 16:28 3375次阅读

    PLC控制中FBFC块的不同之处

    学习plc时特别难理解FBFC区别用法。接下来,我们来谈谈它们的区别用法。 带背景数据块
    发表于 12-14 14:34 3382次阅读

    OB FC FB块如何使用

    在学习和使用博途软件时常常使用到OB FC FB块那么这样块如何使用,今天就给大家带来FC块的使用,本文章采用启保停程序设计。
    的头像 发表于 08-15 10:44 4873次阅读

    CMake用法详解

    CMake用法详解
    发表于 10-25 16:28 2次下载

    西门子PLC中FBFC区别、管脚定义、临时变量

    一、FBFC区别 1、FB功能块,带背景数据块 FC--功能,相当于函数; 2、FB
    的头像 发表于 11-16 16:11 5927次阅读

    详解西门子PLC中函数FCFB的应用与区别

    本质上,FBFC的实现目的是相同的,无论何种逻辑要求,FBFC均可实现,只是实现方式效率不同,这也和工程师个人编程习惯有关;
    的头像 发表于 11-25 15:55 2188次阅读

    西门子FBFC之间的主要区别

    本质上,FBFC的实现目的是相同的,无论何种逻辑要求,FBFC均可实现,只是实现方式效率不同,这也和工程师个人编程习惯有关。
    发表于 12-16 09:58 2784次阅读

    西门子FCFB究竟有啥区别

      一、FBFC区别    1、FB功能块,带背景数据块 FC——功能,相当于函数; 2、FB
    的头像 发表于 12-19 15:18 3227次阅读

    PLC编程中OB块、FC块、FB块、DB块的使用原则

    西门子新加块中包含组织块(OB)、函数块(FB)、函数(FC)、数据块(DB)
    发表于 05-24 15:01 9906次阅读
    PLC编程中OB块、<b class='flag-5'>FC</b>块、<b class='flag-5'>FB</b>块、DB块的使用原则