电工之家_电工基础知识学习网站
当前位置:电工之家 > plc > 西门子plc > 正文

西门子PLC编程中的FB、FC、DB、OB是什么

时间:2020-04-06 09:06 来源:电工之家

在西门子PLC编程语言中有FB、FC、DB、OB等语言,那么我们就来讲一讲西门子PLC编程中的FB、FC、DB、OB是什么?
1、什么是OB?
OB是组织块,是英文Organization block的缩写,组织块是CPU系统和用户程序之间的接口。OB组织块是PLC编程底层语言,有一点像电脑主板的BIOS一样,有一些OB组织块是PLC程序工作的必要先决条件,如OB1循环调用指令,如果程序不调用OB1,我们编写的程序只会扫描一次之后就会停止了,这将无法正常工作。所以我们在编写程序时,必须在OB1中调用或编写,或利用中断指令OB32。
在PLC中有很多不同作用的组织块,比如,可以循环调用的OB1;可以检测通讯是否正常的OB87; CPU硬件故障组织块OB84;CPU上电只执行一次的OB100等。
OB组织块就是像是一个单位,各个部门的一把手一样,在单位中各司其职,组织调度自己部门的人员来完成工作,它有着决定权和优先权。OB组织块也像一个调度,根据PLC运行的不同状况,输出不同的控制指令。
在西门子编程中,有很多功能的OB组织块,这里不一一列举,可以根据自己编程需要查询相关手册。
2、什么是FB?
FB是功能块,FB功能块就是把一些应用程序模块化了,就好像把编写好的程序封装在一个盒子里,我们想用的时候就拿过来用,不需要在编写相同控制功能的程序了,为我们编程提供了便利。FB功能块是由单独的背景数据块做支撑的,就好比把封装好程序的相同的盒子,它们拥有自己独立的房间,即使它们相貌是完全一样的,确可以根据房间的不同来区别它们,这就是在应用的时候互不干扰的原因。
在西门子编程中,功能块有两种,一种是系统定义好的功能块,一种是用户自定义功能块。
①、系统功能块
系统定义好的功能块,它是西门子工程师把一些常用的、不常用的程序编写封装好的,我们只管拿来用,不可以修改。如,SFB 0 递增计数器。
优点:是在编程时方便、省时。
缺点:是你得按它的规则来应用,必须熟悉功能块的应用。
②、用户功能块
用户自定义的功能块,是我们需要我们自己编写封装的,引脚的多少和功能都是需要自己定义的。
优点:可以根据自己的控制工艺需要来编写、定义引脚,方便灵活应用。
缺点:需要自己编程,工作量比较大。
3、什么是FC?
FC是功能,FC是没有自己独立的背景数据块,FC与FB的应用基本是致的,就好像FC没有自己独立的房间,大家都住在一个房间里,所以它们必须是不同的,不能长一样的相貌,以便于应用的时候区别对待,避免了混乱。
FC也是分为系统功能与用户自定义功能,它与FB应用方法基本相同,不同的是FB运行过程的数据,都可以在DB块中保存下来,只到下一次运算,被新的数据覆盖,而FC是不具备背景DB块保存数据。
4、什么是OB?
OB是数据块,它是用来存储设备、生产线中的变量数据的,数据块是用来实现各逻辑块之间的数据据交换、数据传递和共享数据。可以理解它是由一个个小格子的数据集散中心,DB数据块就是存储、转运数据。

西门子PLC编程中的FB、FC、DB、OB是什么
OB数据块分为共享数据块(DB)和背景数据块(DI)。
共享数据块,用于存储PLC的全局数据,所有的FB、FC或OB都可以对通用数据块进行读写操作。
背景数据块( DI),用于传递功能块的参数,只能被指定的功能块FB访问,调用功能块FB时,必须同时指定用于该功能块的即时数据块DI,即时数据块内的数据可以自动生成,它们可以是FB变量声明表中的数据。
FB、FC、DB、OB是如何应用的?
1、FB的应用
FB功能块一般是应用在大型、复杂控制系统中,能够实现重复的相同控制或各独立编程系统间相互兼容。怎么理解这句话呢,就拿我矿的充填自动化控制系统举例吧,充填自动化控制中,使用了非常多的开关阀和调节阀,因控制工艺的不同,少则十几二十个,多则几十上百个,各个阀的控制都是相同的,就是开关控制和调节控制,编程时就可以建立一个FB功能块,每一个阀控制来调用它,因为调用FB时产生的数据,存入调用时生成的独立DB背景数据块中,而会不会产生互相干扰的问题。这样就避免每一个阀控制都要独立编辑自己的控制程序了。
下图中的FB2,就是应用在不同的控制中,大家注意看一下它的背景数据块是不相同的,一个是DB2,一个是DB3。
西门子PLC编程中的FB、FC、DB、OB是什么
而在复杂的控制系统中,程序是需要很多人来编写的,每个人编写的习惯不同,会有兼容问题,他们只要把自己编写的程序封装成FB块,留出I/O接口就行了,大家编写的程序就会相互兼容了。这就是FB的优势所在。
***FB的应用是为了使编程模块化,简化编程,便于各独立编程系统中的相互兼容。***
2、FC的应用
FC的应用就比FB要简化一些,我们可以把程序封闭成FC,可以灵活调用,它是不可以重复调用的。它的功能与FB有很多的相同之处。我们可以理解FC是一个子程序,我们想用的是时候就调用它,不用的时候就不调用它。
FC的应用是把控制程序分类化,还是拿我矿充填自动化控制系统来说,充填是需要造浆、压力水、下砂控制等,在编程时,可以把各系统控制程序,独立编写FC块内,这样的程序对检修、维护都是有帮助的。
3、DB的应用
PLC处理的数据是二进制的,也就是1和0,所谓的数据就是一长串的1和0的组合,数据块就是存储这些数字串的一个方式。PLC还有别的存储方式,比如M映像区。
DB块是保存过程数据用的,可读可写,背景数据块是与FB同时使用的,在你调用FB时,会自动按照FB形参的数据类型自动生成。全局数据块是用户自己定义和创建的,你可以把你的需要的过程数据写入,也可以读出来。如果你想把I0.0的状态传送到DB1,可以写作:
A I 0.0
= DB1.DBX0.1
这段程序就是把I0.0的状态写入到了DB1的第一位DBX0.1中。
*****DB数据块是具有断电保存功能的。就是我们把数据写入DB数据块之后,即使PLC掉电了,DB数据块中的数据是不会丢失的,直到数据被其它覆盖才会改变,我们可以利用这个特性,来保存一些计算的数据。*****
4、OB的应用
程序是需要循环扫描来完成工作的,所以在编写程序的第一步,就是要建立一个OB1组织块,所有的程序都是需要OB1来调度执行的。
其它的OB组织块就要看它的功能是什么了,在程序时调用了。比如,我们想编写一个在PLC通电后复位数据程序,那么我们只要调用OB100,在OB100中调用此复位程序,那么这段程序只在PLC通电瞬间做一次复位,之后就停止工作,不参与之后的程序控制了。而OB85、OB86、OB87是故障检测,我们可以根据控制工艺要求来调用它们完成控制。
PLC程序编写的注意事项
1、在修改程序时,不要贸然的删除它,把不需要的或有疑问的程序段先屏蔽,在确定不需要时在删除。
2、在调试、修改程序时,一定要做提前做好备份工作,可以在修改时出现错误恢复回去,这一点很重要,矿山电气小东曾经因没有备份而途添不少麻烦的。
3、自己编写的程序是需要实际应用来验证的,有的时候编写时是不会体现出BUG的,只有在实际应用中才能够体现出来,这个时间有时会很长才能体现出来,所以新编写的程序是要验证观察的,尤其是新学编程的人员。
4、给程序加一个密码有时候是必要的,它的作用是避免自己或别人误操作修改程序,也是保护自己的程序不被有目的的人所利用,也算是保护知识产权的一种手段吧。
上一篇:西门子plc热电偶的组态编程以及接线
下一篇:没有了
看过《西门子PLC编程中的FB、FC、DB、OB是什么》的人还看了以下文章
西门子plc热电偶的组态编程以及接线 西门子plc热电偶的组态编程以及接线
对于西门子 S7-200 Smart 的控制器,热电偶的组态,编程,以及接线都是很简单的。我们分以下几步来讲解。 1. 硬件接线 对于该系列可以选择热电偶模块,EM AT04,产品型号:288-3AT04-0AA0。它是一个4通道热电偶测温模块, 分辨率是:0.1C / 0.1F。 支持如下...
西门子PLC程序设计常用的结构 西门子PLC程序设计常用的结构
PLC程序设计,常用的结构有三种:线性化编程、模块化编程、结构化编程。下面我们就以西门子PLC为例,对这三种程序结构展开叙述。 线性化编程是将整个用户程序放在组织块OB1(主程序)中,在CPU循环扫描时执行OB1中的全部指令。其特点是结构简单,但效率低下...
笔记本跟西门子plc组态连接不上怎么解决 笔记本跟西门子plc组态连接不上怎么解决
不知道你是使用的哪款西门子PLC,是S7-200SMART还是1200/1500系列。一般通讯不上若是网口连接,检查IP地址是否有问题,PLC地址必须和电脑地址在同一网断内,且IP地址不能与其他IP地址冲突,再次检查网线、水晶头、网口有无问题,最后检查下载界面的网卡是否...
fbd编程常用功能块 fbd编程常用功能块
FBD是用功能块图去实现程序编制的一种编程语言,咬文嚼字的来说,它首先是功能块,然后是才是图,图表。意思就是说用很多的功能方块,组合起来,像一张图一样,这张图就实现了相关的程序功能! 这个FBD就是Function Block Diagram的缩写,这个翻译嘛,就看你...
西门子300编程中FB块用到C或者T之后多次调用会有地址重复吗 西门子300编程中FB块用到C或者T之后多次调
如果多次调用,C0会不会重复?或者说有没有像三菱INC一样的指令 C或者T,再或者M,这些重复调用有时也是可以的,你在试面的时候,看一下调用了的是否对程序有影响,如果没有,侧没有问题,程序一般如果有重复,是优先从自上而下,自左而右读取的。 其实你不...