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功能块的使用我们要特别注意参数传递的规则。这些规则很隐蔽,一般不易引起我们的重视,并且在出现问题时,如果不了解这些规则那就真的是猜的中开头,猜不中结尾,出错成为新常态了。

相关阅读

MOS管防电源反接电路图 MOS管防电源反接电路设计

今天一如既往的给大家分享干货,之前写了二极管防电源反接电路,今天分享MOS管防电源反接电路。 首先用PMOS管画了一个。 输入电源是5V,当5V正常接时,5V从U1的D极经过体二极管到达...
2023-09-06
MOS管防电源反接电路图 MOS管防电源反接电路设计

电气主接线接线方式之——一台半断路器接线(3/2接线)

一台半断路器接线是指一个回路由三台断路器供电的双重链接的多环形接线。一台半断路器又称3/2接线,每2条回路共用3个断路器,即每条回路一台半断路器,每串的中间一台断路器称...
2023-07-05
电气主接线接线方式之——一台半断路器接线(3/2接线)

三种​Buck变换器拓扑结构的演变

Buck变换器又称降压变换器、串联开关稳压电源、三端开关型降压稳压器。学过电子的应该都知道,如何从一个电压(高)得到自己想要的电压值(低),可能最简单的方式就是通过电阻分压...
2023-06-26
三种​Buck变换器拓扑结构的演变

还不了解片状多层陶瓷电容器的绝缘电阻值,请看这篇文章吧!

独石陶瓷电容器的绝缘电阻表示当在电容器端子之间施加直流电压 (无纹波) 时,在设定时间 (比如60秒) 之后施加电压和漏电流之间的比率。当一个电容器绝缘电阻的理论值无穷大时,因...
2023-03-31
还不了解片状多层陶瓷电容器的绝缘电阻值,请看这篇文章吧!

电工实操干货|步进电机与伺服电机,一文分清核心区别与选型

在工业设备维修、电气系统调试的一线工作中,步进电机和伺服电机是运动控制领域最常用的两种执行元件,看似都能实现精准的位移与转速控制,实则在原理、性能、适用场景上有着本质...
2026-04-25

热销商品

手术衣一次性防护服打农药防尘实验服参观服加厚透气无纺布隔离衣

手术衣一次性防护服,作为一种重要的医疗防护用品,广泛应用于医院、实验室等场所。它采用加厚透气无纺布制成,具有优良的防尘、防污、防病毒能力,能有效保护医护人员免...
14

欧普照明led灯泡e27/e14大小螺口超亮家用节能灯螺旋暖白光球泡

欧普照明LED灯泡,适用于E27和E14两种常见螺口,是您家用照明的理想选择。这款灯泡采用先进LED技术,亮度超群,瞬间点亮,无需等待,为您提供明亮舒适的光环境。同时,它节能环...
3.59

LED柜内照明灯 AC220V 4W 7W配电箱导轨式 LL10-W 高压柜内照明灯

LED柜内照明灯AC220V 4W/7W配电箱导轨式LL10-W是一款专为高压柜、配电箱等封闭电气设备设计的紧凑型照明产品。采用高效LED光源,功耗低(4W/7W可选),亮度高,寿命长,节能...
7

密封胶条包邮耐磨耐高温耐腐蚀圆柱棒丁晴/氟胶实心硅胶胶条红色

本品采用优质丁腈橡胶(NBR)或氟橡胶(FKM)及实心硅胶材质制成,呈红色圆柱棒状,具备卓越的耐磨、耐高温(-40℃至+200℃以上,氟胶可达250℃)、耐腐蚀性能,适用于酸、碱、油类等...
1

小木锤木锤子实木木榔头圆头木锤实木棰木头锤子木柄锤黄檀手工锤

小木锤采用优质黄檀木精心打造,通体实木结构,质地坚硬、纹理细腻,手感温润舒适。圆头设计兼顾敲击与整形功能,适用于木工、雕刻、家具组装及日常维修等场景。木柄经精...
3.4

网站栏目