FB块的应用解析

时间:2023-03-16作者:佚名

星爷的大话西游是一部大家耳熟能详的影片,不仅好看而且赋有很多哲理,让人看完受益匪浅。比如其中紫霞仙子的“我猜的中开头,却猜不中结尾”,就道出了世间之事,即使是神仙也未必能够都预料的道,所以对于我们这些活跃在热线的普通人要适应这种“新常态”以“平常心”待之。闲话少叙,下面说一个热线的故事吧。

热线上的客户编写了一个很简单的逻辑程序,程序包括两个块。OB1主循环程序和FB1功能块程序,FB1在OB1中调用。OB1中对RS_result(M100.2)进行置位操作,在FB1中通过操作OUT参数oRS_result来对RS_result(M100.2)进行复位操作。详细的程序如图1、图2所示。
FB块的应用解析
图1 OB1程序
FB块的应用解析
图2 FB1程序

通过上面程序,我们期望实际的运行结果是,如果Set_trig(M100.0)为true则对RS_result(M100.2)进行置位操作,如果Rset_tri(M100.1)为true则对RS_result(M100.2)进行复位操作。程序简单吧,结构也很清晰,清楚地我们一眼就能预知结果。

可结果真的是这样吗?实际测试后发现,当Set_trig(M100.0)为true时,RS_result(M100.2)的输出结果却不为1,即无法实现对RS_result(M100.2)的置位操作,如图3所示。
FB块的应用解析
图3

显然,这与我们实际想要实现的功能不符。根据逻辑分析来看,程序本身似乎没有问题,那么问题出在哪里呢?

让我们发动一下我们的小宇宙来分析一下吧,对于NETWORK1这个简单的不能再简单的语句而言,不可能有错啊,那问题是不是出在FB块的调用部分呢?我们来设想一下:当Set_trig(M100.0)为true时,程序会对RS_result(M100.2)进行了置位操作,但结果却是该变量被复位了。也就是说在执行FB1块时又将RS_result(M100.2)复位了,可是在FB1中的复位条件Rset_tri(M100.1)并不满足啊,为什么在执行FB1块后会将RS_result(M100.2)复位了呢?难道是plc有问题?非也非也这可是德国产品啊,质量没得说。哪问题出在哪呢?

要理解清楚这个问题,我们先要从FB功能块内部参数传递的机制说起。从很多场合我们都可以了解到:FB块区别于FC块主要在于每个FB块都需要一个指定的背景数据块,这个指定的背景数据块用来存放FB块的实际参数。其工作原理是,对于FB块定义的IN类型接口参数,在FB块被调用执行时,将实参传递给背景数据块中形参的对应地址,并用于FB内部的逻辑运算;对于FB块定义的OUT类型接口参数,在FB块被调用执行时将FB内部的逻辑运算结果给出到背景数据块中形参的对应地址,然后再将背景数据块中形参的对应地址的值传递给实参,得到实际的输出结果。

根据FB功能块接口参数传递的机制,我们可以看到在FB块执行过程中,输出Rset_tri(M100.1)的值取决于其对应的形参在背景数据块中的地址DB1.DBX2.0,如图4,而实际的DB1.DBX2.0在执行FB块时一直为false,所以每次执行完FB块后,DB1.DBX2.0将false赋值给Rset_tri(M100.1),所以只要调用了FB1,那么实际得到的Rset_tri(M100.1)的结果即为false,即我们上面实际测试时的结果。
FB块的应用解析
图4

我们可以验证这个结论,即通过修改DB1.DBX2.0的值,可以直接改变输出参数Rset_tri(M100.1)的结果,而不论OB1中是否对Rset_tri(M100.1)进行了置位操作,如图5所示。
FB块的应用解析
图5

既然我们已经分析出问题出现在FB块上,那么这个问题如何解决呢?

我们知道对于FB功能块,除了IN、OUT类型接口参数,还有一个IN_OUT类型接口参数。对于IN_OUT类型的接口参数,在调用执行时首先将实参读入,然后进行逻辑运算,最后再将逻辑运算的结果传递给实参进行输出。可见相对于OUT类型接口参数而言,IN_OUT类型接口参数是要先读入实际参数的值,这样就可以保持上面的逻辑运算结果不会因为FB块的调用执行而被修改。

所以我们可以将FB1作如下修改,如图6所示。
FB块的应用解析
图6 FB1
FB块的应用解析
图7 修改后在OB1中调用FB1

修改程序后进行测试,结果与预想的逻辑一致,即可以通过Set_trig(M100.0)、Rset_tri(M100.1)对RS_result(M100.2)进行置位、复位操作,如图8所示
FB块的应用解析
FB块的应用解析
图8

现在我们简单总结一下:FB功能块在调用时,外部实际参数通过输入、输出和输入/输出接口传递给其背景数据块对应的地址。在FB内部,程序直接操作背景数据块地址进行逻辑运算。对于FB功能块的使用我们要特别注意参数传递的规则。这些规则很隐蔽,一般不易引起我们的重视,并且在出现问题时,如果不了解这些规则那就真的是猜的中开头,猜不中结尾,出错成为新常态了。

相关阅读

电工求职避坑指南:揭秘各类电工岗位真相

在当今社会,就业市场竞争激烈,选择一份合适的职业至关重要。对于那些对电工领域感兴趣的人来说,面对众多的电工种类,常常感到迷茫。今天,我们就来深入剖析一下常见的电工岗位,帮助...
2026-05-26
电工求职避坑指南:揭秘各类电工岗位真相

移相整流变压器的作用说明

作为整流变压器的一种,移相整流变压器的作用有哪些,具体参考如下: 移相变压器是整流变压器的一种,在供电线路中采用移相变压器,其主要目的是增加整流器的脉数。三相整流称...
2023-06-26

两进两出解故障,记一次尴尬的私活维修!

作为一名电工,(píng)日的工作肯定是:机器设备出问题时忙得不可开交,闲的时候又必须呆在那兜兜转转,生怕被老板批评说没事干。 看着每月到账的工资,心里寻思着:趁着晚上或...
2023-06-27
两进两出解故障,记一次尴尬的私活维修!

关于电力变压器的运行维护,你可能并不清楚,有必要学习一下

关于电力变压器的运行维护,总结以下几个内容: 一、电力变压器的容量选择 二、变压器的维护 三、变压器的异常情况处理 四、变压器运行中常见故障分析 一、电力变压器的容量选...
2023-06-13
关于电力变压器的运行维护,你可能并不清楚,有必要学习一下

电工技术问答

学工控技术,拿10万年薪 马上注册,免费学习 超过100课时视频教程,免费下载海量学习资料 1 、对运行中的电容器应做哪些检查?对电容器室的温度和电容器外壳的温度是如何规定的?...
2023-06-27

热销商品

德国进口雅马哈风力灭火机大功率手提森林灭火器落叶工地吹雪机汽

德国进口雅马哈风力灭火机是一款高效、可靠的森林灭火和清理设备。它拥有大功率风机,能够迅速吹散落叶、杂草和积雪,有效清理工地和森林地面。这款灭火机采用先进技...
¥ 692.5

公牛开关插座面板全屋定制全屋配齐家装报价单官方正品付款链接Q9

公牛开关插座面板,为您的全屋定制家装提供一站式解决方案。我们提供全屋配齐的家装报价单,确保您的家装项目完美无缺。所有产品均为官方正品,品质保证,让您用得放心。...
¥ 1

3M自粘橡胶条高硬度耐压实心幕墙玻璃舞台搭建货架专用减震密封条

3M自粘橡胶条是一款专为高要求工业及建筑场景设计的高性能密封减震材料,采用高硬度实心橡胶材质,具备优异的耐压性、抗老化性和持久弹性。其独特的自粘背胶设计,安装...
¥ 1.6

公牛官方旗舰店开关插座空调16A插座五孔10A面板暗装多孔G12白灰

公牛官方旗舰店提供一系列高质量的开关插座和空调配件。这款16A插座五孔面板采用暗装设计,适用于多种安装环境,如墙面、天花板等。它具有10A的电流容量,可以满足家庭...
¥ 5.55

电位器旋钮电流调节螺帽直流逆变电焊机二保焊送丝机通用旋钮B102

电位器旋钮电流调节螺帽适用于直流逆变电焊机和二保焊送丝机,是一款通用的旋钮B102。该旋钮采用优质材料制造,具有耐磨损、耐高温、耐腐蚀等特点,能够长时间稳定运行...
¥ 0.7

网站栏目